source: trunk/skins/lemill/widget_slides.pt @ 1986

Revision 1986, 18.4 KB checked in by jukka, 12 years ago (diff)

Parsing works fine, except kupu's view of page is ugly.

Line 
1<html xmlns="http://www.w3.org/1999/xhtml"
2      xmlns:tal="http://xml.zope.org/namespaces/tal"
3      xmlns:metal="http://xml.zope.org/namespaces/metal"
4      xmlns:i18n="http://xml.zope.org/namespaces/i18n"
5      i18n:domain="lemill">
6
7  <head><title></title></head>
8
9  <body>
10
11    <!--  Copies much from widget_chapter, look there if variable names are confusing  -->
12
13    <metal:view_macro define-macro="view" tal:define="value accessor">
14        <tal:chapters repeat="chapter value">           
15            <tal:defs tal:define="UID python:field.isUid(chapter);
16                            ">
17            <div tal:condition="not:UID">
18            <tal:caption content="structure chapter" />
19            <div class="visualClear" style="height:30px">&nbsp;</div>
20            </div>
21            <div tal:condition="UID" class="presentation-edit-box">
22                <a href="" tal:condition="python:piece and not deleted" tal:define="piece python:field.getObjectByUID(context,UID);
23                                        pieceurl piece/image_large/absolute_url | nothing;
24                                        deleted python:context.portal_workflow.getInfoFor(piece,'review_state',None) == 'deleted' "
25                                      tal:attributes="href piece/getURL | piece/absolute_url">
26                <img src="" tal:attributes="src pieceurl" class="media_piece" alt="piece/title_or_id" />
27                </a>
28            <div class="visualClear" style="height:10px">&nbsp;</div>
29            </div>
30            </tal:defs>
31        </tal:chapters>
32    </metal:view_macro>
33
34    <metal:define define-macro="area_edit">
35      <tal:define
36          define="inputname fieldName;
37                  edit_chapter request/edit | python:0;
38                  edit_chapter python: int(edit_chapter);
39                  translation translation | python:0;
40                  chapter_count python:len(value);
41                  text_edit python:True;
42                  engineer python:request.get('engineer');
43                  ">
44        <input type="hidden" name="chapter_count" id="chapter_count" value="1" tal:attributes="value chapter_count; name python:'%s_count' % fieldName; id python:'%s_count' % fieldName"/>
45        <input type="hidden" name="chapter_edited" id="chapter_edited" value="0" tal:attributes="value edit_chapter; name python:'%s_edited' % fieldName ;id python:'%s_edited' % fieldName "/>
46        <input type="hidden" name="chapter_deleted" id="chapter_deleted" value="-1" tal:attributes="name python:'%s_deleted' % fieldName;id python:'%s_deleted' % fieldName"/>
47        <input type="hidden" name="chapter_uploaded" id="chapter_uploaded" value="-1" tal:attributes="name python:'%s_uploaded' % fieldName;id python:'%s_uploaded' % fieldName"/>
48        <input tal:condition="not:engineer" type="hidden" name="insert_point" id="insert_point" value="-1" />
49
50        <div class="visualClear" style="height:20px">&nbsp;</div>
51
52        <input class="context"
53            tabindex=""
54            type="submit"
55            name="form.button.mass_uploader"
56            value="   Upload many slides   " i18n:domain="lemill"
57            i18n:attributes="value label_upload_many_slides;"
58            tal:attributes="tabindex tabindex/next;"
59            />
60
61
62
63       <tal:chapters repeat="chapter value">
64          <tal:definitions define="index repeat/chapter/index;
65          caption repeat/chapter/odd;
66          slide repeat/chapter/even;
67          index python:int(index);
68          block python:'block';
69          UID python:field.isUid(chapter);
70          cleaned_chapter python:field.getChapter(context, index);
71           ">       
72
73
74            <a name="#" tal:attributes="name index"></a>
75
76           
77            <tal:slide condition="slide">
78             <span tal:replace="structure string:&lt;fieldset&gt;" />       
79
80             <legend>
81                 <span tal:omit-tag="" i18n:translate="">Slide</span> <span tal:replace="python:(index+2)/2" />
82                     <input class="context"
83                     style="display:inline"
84                         tabindex=""
85                         type="button"
86                         name="form.button.editSlide"
87                         value="Edit" i18n:domain="plone"
88                         i18n:attributes="value label_edit;"
89                         tal:attributes="tabindex tabindex/next;
90                         disabled python:test(isLocked, 'disabled', None);
91                         id python:'edit_button_'+str(index);
92                         onClick python:'''javascript:edit_slide('%s') ''' % (index)"
93                         />
94                     <input class="context"
95                         style="display:none"
96                         tabindex=""
97                         type="submit"
98                         name="form.button.Save"
99                         value="Save" i18n:domain="plone"
100                         i18n:attributes="value label_save;"
101                         tal:attributes="tabindex tabindex/next;
102                         id python:'save_button_'+str(index);
103                         disabled python:test(isLocked, 'disabled', None)"
104                         />
105                         
106                <input class="context"
107                    tabindex=""
108                    type="submit"
109                    name="form.button.moveChapterUp"
110                    value="Move up" i18n:domain="lemill"
111                    i18n:attributes="value label_move_up;"
112                    tal:attributes="tabindex tabindex/next;
113                    disabled python:test(isLocked or not index!=0, 'disabled', None);
114                    onClick python:'''javascript:document.getElementById('%s_deleted').value=%s''' % (fieldName, index)"
115                    />
116                <input class="context"
117                    tabindex=""
118                    type="submit"
119                    name="form.button.moveChapterDown"
120                    value="Move down" i18n:domain="lemill"
121                    i18n:attributes="value label_move_down;"
122                    tal:attributes="tabindex tabindex/next;
123                    disabled python:test(isLocked or not index!=len(value)-2, 'disabled', None);
124                    onClick python:'''javascript:document.getElementById('%s_deleted').value=%s''' % (fieldName, index)"
125                    />
126
127                <input class="context deleteButtonPosition"
128                    tabindex=""
129                    type="submit"
130                    name="form.button.delSlide"
131                    value="Delete" i18n:domain="plone"
132                    i18n:attributes="value"
133                    tal:attributes="tabindex tabindex/next;
134                    disabled python:test(isLocked, 'disabled', None);
135                    onClick python:'''javascript:document.getElementById('%s_deleted').value=%s''' % (fieldName, index)"
136                    />
137             </legend>
138
139             <input type="hidden" tal:attributes="id python:'%s_%s' % (fieldName,index);
140                                                   name python:'%s_%s' % (fieldName,index);
141                                                   value chapter" />
142                                                   
143             <metal:block metal:use-macro="here/widget_slides/macros/piece_edit" />
144             
145             </tal:slide>
146                 <tal:caption condition="caption">
147            <legend>Caption</legend>
148           
149            <div class="translatedTt"
150                  tal:condition="translation">
151                  <label i18n:translate="label_original_field">
152                  Original
153                         <span i18n:name="field" >:</span>
154                  </label>
155                  <div tal:define="transfield python:source.getField(fieldName);
156                      transchapter python:transfield.getChapter(context, index);"  class="text_to_translate">
157                          <span tal:replace="structure transchapter"/>           
158                  </div>
159              </div>
160              <div style="display:none" tal:attributes="id python:'edit_field_'+str(index)">
161            <textarea tal:attributes="name python:'%s_%s' % (fieldName, index); id python:'%s_%s' % (fieldName, index)"
162             tal:content="chapter" style="width:550px" rows="4">
163         </textarea>
164     </div>
165     <div tal:attributes="id python:'view_field_'+str(index)">
166         <span tal:replace="structure cleaned_chapter" />
167         </div>
168            <span tal:replace="structure string:&lt;/fieldset&gt;" />
169                </tal:caption>
170          </tal:definitions>
171       </tal:chapters>
172
173       <tal:buttons condition="not:translation">
174           <input class="context"
175               tabindex=""
176               type="submit"
177               name="form.button.add_slides"
178               value="Add slide"
179               i18n:attributes="value label_add_slide;"
180               tal:attributes="tabindex tabindex/next"
181               />
182        <tal:engineer condition="engineer">
183        Insertion point:
184           <input class="context"
185               type="text"
186               size="2"
187               name="insert_point"
188               value="-1"/>
189        </tal:engineer>
190       </tal:buttons>
191
192
193
194      </tal:define>
195    </metal:define>
196
197    <metal:define define-macro="area_format">
198      <tal:define
199          define="field_text_format string:${fieldName}_${index}_text_format;
200                  contentType python:request.get(field_text_format, here.getContentType(fieldName));
201                  allowable_ct python:getattr(field, 'allowable_content_types', ());
202                  mimetypes python:[t for t in allowable_ct if t.startswith('text/')];
203                  contenttype python:hasattr(field, 'getContentType') and field.getContentType(here) or ''">
204
205        <tal:condition condition="python:len(mimetypes) &gt; 1">
206        <div style="text-align: right; margin-right: 0.75em;">
207          <label i18n:domain="plone" i18n:translate="label_format">Format</label>
208          <select tal:attributes="id string:${fieldName}_text_format;
209                                  name string:${fieldName}_text_format;
210                                  tabindex tabindex/next">
211            <option selected="selected"
212                    value=""
213                    tal:attributes="value contentType"
214                    tal:condition="python:contenttype not in mimetypes">
215              (no change)
216            </option>
217            <option tal:repeat="item mimetypes"
218                    tal:content="python:here.lookupMime(item)"
219                    tal:attributes="value item;
220                                    selected python:test(here.checkSelected(item, contenttype, contenttypes=1), 'selected', None);"
221                    />
222          </select>
223        </div>
224        </tal:condition>
225      </tal:define>
226    </metal:define>
227
228    <metal:define define-macro="edit">
229       <metal:use use-macro="field_macro | here/field/macros/edit">
230        <metal:fill fill-slot="widget_body">
231          <metal:block use-macro="here/widget_slides/macros/area_edit" />
232        </metal:fill>
233      </metal:use>
234    </metal:define>
235
236    <metal:define define-macro="search">
237      <metal:use use-macro="here/widgets/field/macros/edit">
238        <metal:fill fill-slot="widget_body">
239
240          <metal:block use-macro="here/widget_slides/macros/area_edit" />
241
242        </metal:fill>
243      </metal:use>
244    </metal:define>
245
246
247    <metal:define define-macro="piece_edit">
248                <tal:if_collection
249                        condition="widget/collections_only"
250                        define="vocab python:field.Vocabulary(here);
251                                    vlen python:len(vocab);
252                                    format python:widget.format">
253
254                    <select tal:attributes="name fieldName;
255                                            id fieldName;
256                                            tabindex tabindex/next;">
257                        <option tal:repeat="item vocab"
258                                tal:attributes="value item;"
259                                                tal:content="python:context.getImageName(vocab.getValue(item))"
260                                />
261                            </select>
262
263                    <input type="submit" i18n:attributes="value label_add_image;" name="form.button.addImage" value="Add image" />
264
265
266                </tal:if_collection>
267                <tal:if_collection condition="not:widget/collections_only">
268                <table style="width:100%">
269                    <tr>
270                        <td style="width:550px">
271                <div class="one-piece"
272                    tal:define="piece python:field.getObjectByUID(context,UID);
273                                piece_id piece/getId | python:0;
274                                piece_uid piece/UID | python:0;
275                                piece_desc piece/getDescription | string:;
276                                deleted python:context.portal_workflow.getInfoFor(piece,'review_state',None) == 'deleted' ">
277                    <div class="piece-edit-box" id="piece-edit-box"
278                        tal:attributes="style python:test(piece_id!=0 and not deleted, 'background-image:url(\''+str(piece_id)+'/image_large\')', '');
279                        id python:'piece-edit-box-%s' % index; ">
280                        <div style="height:20px" class="visualClear">&nbsp;</div>
281   
282                        <div style="display:none" tal:attributes="id python:'edit_upload_'+str(index)">
283                            <div id="pres-text"><tal:trans i18n:translate="label_upload_image_file">Upload image file</tal:trans>...</div>
284                            <br />
285                            <input type="hidden"
286                                   value="0"
287                                   name="piece_uid"
288                                   id="piece_uid"
289                                   tal:attributes="value piece_uid | python:0;
290                                                   id string:piece_uid_${index};
291                                                   name string:piece_uid_${index}"
292
293                            />
294                            <input id="material-file"
295                                   type="file"
296                                   value=""
297                                   name="file_box"
298                                   tal:attributes="id string:${fieldName}_file_${index};
299                                                   name string:${fieldName}_file_${index}"
300                            />
301                            <input id="piece-uploadbutton"
302                                   type="submit"
303                                   name="form.button.uploadSlide"
304                                   value="Upload file"
305                                   tal:attributes="onClick python:'''javascript:document.getElementById('%s_uploaded').value=%s''' % (fieldName, index)"
306                                   i18n:attributes="value label_upload_file;"
307                            />
308                        </div>
309                        <div style="height:50px" class="visualClear">&nbsp;</div>
310                        <div style="display:none" tal:attributes="id python:'edit_search_'+str(index)">
311                            <div id="pres-text" i18n:translate="label_or_search_from_pieces">... or search from media pieces: </div>
312                            <div style="height:5px" class="visualClear">&nbsp;</div>
313                            <br />
314                            <input id="piece-search-0"
315                                   type="text"
316                                   value=""
317                                   name="search_box"
318                                   onkeypress="if(event.keyCode==13) { document.getElementById('piece-searchbutton').onclick(); return false; }"                                   
319                                   tal:attributes="id python:'piece-search-%s' % index"/>
320                            <input id="piece-searchbutton"
321                                   type="button"
322                                   value="Search"
323                                   name="searchButton"
324                                   i18n:attributes="value label_search;" i18n:domain="plone"
325                                   onclick="javascript:search_for_pieces()"
326                                   tal:attributes="onclick python:'''javascript:search_for_pieces_slides(event,%s,'audio=False')''' % index"
327                            />
328                        </div>
329                        </div>
330   
331                    </div>
332                <div id="insertHere"></div>
333            </td>
334            <td style="width:130px">
335                <div id="piece-search-results" class="piece-search-results" tal:attributes="id string:piece-search-results-$index">
336                    <b i18n:domain="plone" i18n:translate="heading_search_results">Search results</b>
337                    <div id="piece-search-results-body" tal:attributes="id string:piece-search-results-$index-body">
338                        search results here!
339                    </div>
340                </div>
341            </td>
342            </tr>
343                </table>
344            </tal:if_collection>
345    </metal:define>
346   
347    <metal:define define-macro="show_small_images">
348        <tal:def define="global le_sum_in_a_row python:0"></tal:def>
349        <input type="hidden" name="toBeRemoved" id="toBeRemoved" value="1" />
350        <tal:imgs repeat="ref context/getRefsToImages">
351       
352            <tal:cond condition="python:le_sum_in_a_row==6">
353                <tal:def define="global le_sum_in_a_row python:0"></tal:def>
354                <div style="clear:both"></div>
355            </tal:cond>
356
357            <div style="width:120px;height:140px;border:1px solid blue;float:left;margin:3px;overflow:hidden">
358                <img tal:attributes="src python:ref.absolute_url()+'/image_small'"/>
359                <div style="clear:both"></div>
360                <div style="width:120px;text-align:center">
361                    <input type="submit"
362                        value="Remove"
363                        onclick="" i18n:domain="plone"
364            i18n:attributes="value label_remove;"
365                        tal:attributes="onclick string:javascript:setValue('toBeRemoved', '${ref/UID}');"
366                        name="form.button.removeImage"
367                        style="width:118px;height:18px"
368                        />
369                </div>
370            </div>
371            <tal:plus tal:define="global le_sum_in_a_row python:le_sum_in_a_row+1"></tal:plus>
372        </tal:imgs>
373        <div style="clear:both"></div>
374    </metal:define>
375
376
377
378
379  </body>
380
381</html>
Note: See TracBrowser for help on using the repository browser.