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

Revision 1306, 19.0 KB checked in by pjotr, 13 years ago (diff)

Fixes #1112, all Delete buttons for all teh widgets behave like that now

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