Youpi : conservation de l'état de l'arborescence, même dans le cas du repliement.
[MosaicDocument.git] / default_blocks / getDefaultBlockMetaFtis.py
1 ##parameters=
2 View = 'View'
3 ModifyPortalContent = 'Modify portal content'
4
5
6 # Mosaic Document regular fti
7 mosaicDocument_fti = {'id' : 'Mosaic Document',
8 'title' : 'Mosaic Document',
9 'content_icon' : 'mosaic_icon.png',
10 'product' : 'MosaicDocument',
11 'factory' : 'addMosaicDocument',
12 'meta_type' : 'Mosaic Document',
13 'immediate_view' : 'metadata_edit_form',
14 'allow_discussion' : 1,
15 'filter_content_types' : 0,
16 'actions' : (
17 {'id': 'view',
18 'title': 'View',
19 'action': 'mosaicdocument_view',
20 'visible' : 1,
21 'permissions': (View,)},
22
23 {'id': 'edit',
24 'title': 'Edit',
25 'action': 'mosaicdocument_edit_form',
26 'visible' : 1,
27 'permissions': (ModifyPortalContent,)},
28
29 {'id': 'metadata',
30 'title': 'Metadata',
31 'action': 'metadata_edit_form',
32 'visible': 1,
33 'permissions': ()},),
34 }
35
36 # fixed fti part for basic blocks definitions
37 fixedFtiPart = {'product' : 'MosaicDocument',
38 'factory' : 'addMosaicBlock',
39 'immediate_view' : 'view',
40 'filter_content_types' : 1,
41 }
42
43 defaultActions = ({'id' : 'view',
44 'title' : 'view',
45 'action' : 'view',
46 'permissions' : (View,),
47 'category' : 'object',
48 },)
49
50 # basic blocks definitions
51 metaFtis = (
52 {'id': 'Image Block',
53 'title': 'Image block',
54 'icon': 'mosaic_tool/image_block_icon.gif',
55 'meta_type': 'Image Block',
56 'filter_content_types': 1,
57 'allowed_content_types': (),
58 'template' : 'mosaic_tool/block_image_template',
59 'notify_wf' : 0,
60 'slots' : (
61 {'id': 'image',
62 'type': 'Image Slot',
63 'args':
64 {'thumb_width' : {'type' : 'int', 'value' : 440},
65 'thumb_height' : {'type' : 'int', 'value' : 440},
66 'blankThumbnail' : {'type' : 'string', 'value' : 'mosaic_tool/no_image.jpg'},
67 }
68 },
69 ),
70 'rules' : (),
71 'actions' : defaultActions,
72 },
73
74 {'id': 'Two Images Block',
75 'title': 'Two images block',
76 'icon': 'mosaic_tool/image_block_icon.gif',
77 'meta_type': 'Two Images Block',
78 'filter_content_types': 1,
79 'allowed_content_types': (),
80 'template' : 'mosaic_tool/block_two_images_template',
81 'notify_wf' : 0,
82 'slots' : (
83 {'id': 'image',
84 'type': 'Image Slot',
85 'args':
86 {'thumb_width' : {'type' : 'int', 'value' : 440},
87 'thumb_height' : {'type' : 'int', 'value' : 440},
88 'blankThumbnail' : {'type' : 'string', 'value' : 'mosaic_tool/no_image.jpg'},
89 }
90 },
91 {'id': 'image2',
92 'type': 'Image Slot',
93 'args':
94 {'thumb_width' : {'type' : 'int', 'value' : 440},
95 'thumb_height' : {'type' : 'int', 'value' : 440},
96 'blankThumbnail' : {'type' : 'string', 'value' : 'mosaic_tool/no_image.jpg'},
97 }
98 }
99 ),
100 'rules' : (),
101 'actions' : defaultActions,
102 },
103
104 {'id': 'Text Block',
105 'title': 'Text block',
106 'icon': 'mosaic_tool/image_block_icon.gif',
107 'meta_type': 'Text Block',
108 'filter_content_types': 1,
109 'allowed_content_types': (),
110 'template' : 'mosaic_tool/block_text_template',
111 'notify_wf' : 0,
112 'slots' : (
113 {'id' : 'text',
114 'type' : 'Text Slot',
115 'args' :
116 {'text' : {'type' : 'text', 'value' : ''},
117 'text_format' : {'type' : 'string', 'value' : 'structured-text'},
118 'cols' : {'type' : 'int', 'value' : 68},
119 'rows' : {'type' : 'int', 'value' : 20},
120 }
121 },
122 ),
123 'rules' : (),
124 'actions' : defaultActions,
125 },
126
127 {'id': 'File Block',
128 'title': 'File Block',
129 'icon': 'mosaic_tool/image_block_icon.gif',
130 'meta_type': 'File Block',
131 'filter_content_types': 1,
132 'allowed_content_types': (),
133 'template' : 'mosaic_tool/block_file_template',
134 'notify_wf' : 0,
135 'slots' : (
136 {'id': 'file',
137 'type': 'File Slot',
138 'args': {},
139 },
140 ),
141 'rules' : (),
142 'actions' : defaultActions,
143 },
144
145 {'id': 'Spacer Block',
146 'title': 'Spacer block',
147 'icon': 'mosaic_tool/image_block_icon.gif',
148 'meta_type': 'Spacer Block',
149 'filter_content_types': 1,
150 'allowed_content_types': (),
151 'template' : 'mosaic_tool/block_spacer_template',
152 'notify_wf' : 0,
153 'slots' : (
154 {'id': 'space',
155 'type': 'Spacer Slot',
156 'args': {'nbOfSpaces' : {'type' : 'int', 'value' : 3},},
157 },
158 ),
159 'rules' : (),
160 'actions' : defaultActions,
161 },
162
163 {'id': 'Section Block',
164 'title': 'Section block',
165 'icon': 'mosaic_tool/image_block_icon.gif',
166 'meta_type': 'Section Block',
167 'filter_content_types': 1,
168 'allowed_content_types': (),
169 'template' : 'mosaic_tool/block_section_template',
170 'notify_wf' : 0,
171 'slots' : (
172 {'id': 'section',
173 'type': 'String Slot',
174 'args':
175 {'text' : {'type' : 'string', 'value' : ''},
176 'size' : {'type' : 'int', 'value' : 60},
177 'choices' : {'type' : 'lines', 'value' : []},
178 'castOperator' : {'type' : 'string', 'value' : 'string'},
179 },
180 },
181 ),
182 'rules' : (),
183 'actions' : defaultActions,
184 },
185
186
187 {'id': 'Container Block',
188 'title': 'Container block',
189 'icon': 'mosaic_tool/image_block_icon.gif',
190 'meta_type': 'Container Block',
191 'filter_content_types': 1,
192 'allowed_content_types': (),
193 'actions' : defaultActions,
194 },
195
196 ## Boxes blocks
197 {'id': 'Tree Box Block',
198 'title': 'Tree Box Block',
199 'icon': 'mosaic_tool/tree_block_icon.gif',
200 'meta_type': 'Tree Box Block',
201 'filter_content_types': 1,
202 'allowed_content_types': (),
203 'template' : 'mosaic_tool/tree_block_template',
204 'notify_wf' : 0,
205 'slots' : (
206 {'id': 'rootObject',
207 'type': 'String Slot',
208 'args':
209 {'text' : {'type' : 'expr', 'value' : 'portal'},
210 'size' : {'type' : 'int', 'value' : 45},
211 'castOperator' : {'type' : 'string', 'value' : 'expr'},
212 },
213 },
214 {'id': 'filteredMetaTypes',
215 'type': 'List Slot',
216 'args':
217 {'text' : {'type' : 'lines', 'value' : 'Plinn Folder'},
218 'cols' : {'type' : 'int', 'value' : 15},
219 'rows' : {'type' : 'int', 'value' : 5},
220 'castOperator' : {'type' : 'string', 'value' : 'lines'},
221 },
222 },
223 ),
224 'rules' : (),
225 'actions' : defaultActions,
226 },
227
228 {'id': 'Action Box Block',
229 'title': 'Action Box Block',
230 'icon': 'mosaic_tool/action_block_icon.gif',
231 'meta_type': 'Action Box Block',
232 'filter_content_types': 1,
233 'allowed_content_types': (),
234 'template' : 'mosaic_tool/action_block_template',
235 'notify_wf' : 0,
236 'slots' : (
237 {'id': 'boxTitle',
238 'type': 'String Slot',
239 'args':
240 {'text' : {'type' : 'string', 'value' : ''},
241 'size' : {'type' : 'int', 'value' : 45},
242 'castOperator' : {'type' : 'string', 'value' : 'string'},
243 },
244 },
245 {'id': 'categories',
246 'type': 'String Slot',
247 'args':
248 {'text' : {'type' : 'tokens', 'value' : 'global'},
249 'size' : {'type' : 'int', 'value' : 45},
250 'castOperator' : {'type' : 'string', 'value' : 'tokens'},
251 },
252 },
253 ),
254 'rules' : (),
255 'actions' : defaultActions,
256 },
257
258 )
259
260 metaFtisDic = {}
261 for mfti in metaFtis :
262 tempDic = mfti.copy()
263 mfti.update(fixedFtiPart)
264 metaFtisDic[tempDic['id']] = mfti
265
266 # adding Mosaic Document block definition
267 metaFtisDic[mosaicDocument_fti['id']] = mosaicDocument_fti
268
269 def completeMetaFti(dummyFti,
270 metaFtis,
271 slots = (),
272 template = '',
273 notify_wf = 0) :
274 allRules = ()
275 for mfti in metaFtis :
276 rulesDic = {'blockType' : mfti['id'],
277 'maxNbInstance' : 0,
278 'allowMove' : 1,
279 'mode' : 'wd',
280 },
281 allRules += rulesDic
282
283 ftiExtension = {'rules' : allRules,
284 'slots' : (),
285 'template' : template,
286 'notify_wf' : 1,
287 }
288 ftiExtension.update(dummyFti)
289 return ftiExtension
290
291 # complete meta fti for Mosaic Document block definition
292 metaFtisDic[mosaicDocument_fti['id']] = completeMetaFti(metaFtisDic[mosaicDocument_fti['id']],
293 metaFtis,
294 notify_wf = 1)
295
296 # Idem for Container Block definition
297 metaFtisDic['Container Block'] = completeMetaFti(metaFtisDic['Container Block'],
298 metaFtis,
299 template = 'mosaic_tool/block_container_template')
300
301 return metaFtisDic