source: trunk/skins/lemill/widget_chapter.pt @ 1346

Revision 1346, 19.6 KB checked in by jukka, 13 years ago (diff)

Fixed #1138, worked #1137. Spent 1h. Works fine with multimedia pages, save button not implemented for presentations and pilots yet.

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