source: extensions/Google2Piwigo/admin/template/import.list_photos.tpl @ 26198

Last change on this file since 26198 was 26198, checked in by mistic100, 10 years ago

update for Piwigo 2.6

File size: 11.3 KB
Line 
1{footer_script require='jquery.ajaxmanager,jquery.jgrowl'}
2(function($){
3  /* global vars */
4  var nb_thumbs_set = {$nb_thumbs_set};
5  var all_elements = [{if !empty($all_elements)}{','|@implode:$all_elements}{/if}];
6  var import_done = 0;
7  var import_selected = 0;
8  var queuedManager = $.manageAjax.create('queued', {ldelim}
9    queue: true, 
10    maxRequests: 1
11  });
12
13  /* Shift-click: select all photos between the click and the shift+click */
14  var last_clicked=0;
15  var last_clickedstatus=true;
16  $.fn.enableShiftClick = function() {
17    var inputs = [];
18    var count=0;
19    var This=$(this);
20    this.find('input[type=checkbox]').each(function() {
21      var pos=count;
22      inputs[count++]=this;
23      $(this).bind("shclick", function (dummy,event) {
24        if (event.shiftKey) {
25          var first = last_clicked;
26          var last = pos;
27          if (first > last) {
28            first=pos;
29            last=last_clicked;
30          }
31
32          for (var i=first; i<=last;i++) {
33            input = $(inputs[i]);
34            $(input).attr('checked', last_clickedstatus);
35            if (last_clickedstatus)
36            {
37              $(input).siblings("span.wrap2").addClass("thumbSelected");
38            }
39            else
40            {
41              $(input).siblings("span.wrap2").removeClass("thumbSelected");
42            }
43          }
44        }
45        else {
46          last_clicked = pos;
47          last_clickedstatus = this.checked;
48        }
49        return true;
50      });
51      $(this).click(function(event) { $(this).triggerHandler("shclick",event); });
52    });
53  };
54
55  /* update displaying */
56  function checkPermitAction() {
57    var nbSelected = 0;
58    if ($("input[name=setSelected]").is(':checked')) {
59      nbSelected = nb_thumbs_set;
60    }
61    else {
62      $(".thumbnails input[type=checkbox]").each(function() {
63        if ($(this).is(':checked')) nbSelected++;
64      });
65    }
66
67    if (nbSelected == 0) {
68      $("#beginImport").hide();
69    }
70    else {
71      $("#beginImport").show();
72    }
73
74    $("#applyOnDetails").text(
75      sprintf(
76        '{'on the %d selected photos'|translate|escape:javascript}',
77        nbSelected
78      )
79    );
80
81    // display the number of currently selected photos in the "Selection" fieldset
82    if (nbSelected == 0) {
83      $("#selectedMessage").text(
84        sprintf(
85          '{'No photo selected, %d photos in current set'|translate|escape:javascript}',
86          nb_thumbs_set
87        )
88      );
89    }
90    else if (nbSelected == nb_thumbs_set) {
91      $("#selectedMessage").text(
92        sprintf(
93          '{'All %d photos are selected'|translate|escape:javascript}',
94          nb_thumbs_set
95        )
96      );
97    }
98    else {
99      $("#selectedMessage").text(
100        sprintf(
101          '{'%d of %d photos selected'|translate|escape:javascript}',
102          nbSelected,
103          nb_thumbs_set
104        )
105      );
106    }
107  }
108
109  /* import queue */
110  function performImport(photo, album, fills, pwa_album) {
111    queuedManager.add({
112      type: 'GET',
113      dataType: 'json',
114      url: 'ws.php',
115      data: {
116        method: 'pwg.images.addPicasa',
117        id: photo,
118        category: album,
119        fills: fills,
120        pwa_album: pwa_album,
121        format: 'json'
122      },
123      success: function(data) {
124        if (data['stat'] == 'ok') {
125          $.jGrowl(data['result'], {
126            theme: 'success', life: 4000, sticky: false,
127            header: '{'Success'|translate}'
128          });
129          $("#photo-"+photo).fadeOut(function(){ $(this).remove(); });
130        }
131        else {
132          $.jGrowl(data['result'], {
133            theme: 'error', sticky: true,
134            header: '{'ERROR'|translate}'
135          });
136        }
137       
138        import_done++;
139        $("#progress").html(import_done +"/"+ import_selected);
140       
141        if (import_done == import_selected) {
142          $("#import_form").append('<input type="hidden" name="done" value="' + import_done + '">');
143          $("#import_form").submit();
144        }
145      },
146      error: function(data) {
147        $.jGrowl('{'an error happened'|translate|escape:javascript}', {
148          theme: 'error', sticky: true,
149          header: '{'ERROR'|translate}'
150        });
151      }
152    });
153  }
154
155
156  checkPermitAction();
157  $("a.preview-box").colorbox();
158  $('ul.thumbnails').enableShiftClick();
159
160  /* tiptip */
161  $('img.thumbnail').tipTip({
162    'delay' : 0,
163    'fadeIn' : 200,
164    'fadeOut' : 200
165  });
166
167  /* thumbnail click */
168  $(".wrap1 label").click(function (event) {
169    $("input[name=setSelected]").prop('checked', false);
170
171    var wrap2 = $(this).children(".wrap2");
172    var checkbox = $(this).children("input[type=checkbox]");
173
174    checkbox.triggerHandler("shclick",event);
175
176    if ($(checkbox).is(':checked')) {
177      $(wrap2).addClass("thumbSelected");
178    }
179    else {
180      $(wrap2).removeClass('thumbSelected');
181    }
182
183    checkPermitAction();
184  });
185
186  /* select all */
187  $("#selectAll").click(function () {
188    $("input[name=setSelected]").prop('checked', false);
189   
190    $(".thumbnails label").each(function() {
191      var wrap2 = $(this).children(".wrap2");
192      var checkbox = $(this).children("input[type=checkbox]");
193
194      $(checkbox).prop('checked', true);
195      $(wrap2).addClass("thumbSelected");
196    });
197   
198    checkPermitAction();
199    return false;
200  });
201
202  /* select none */
203  $("#selectNone").click(function () {
204    $("input[name=setSelected]").prop('checked', false);
205   
206    $(".thumbnails label").each(function() {
207      var wrap2 = $(this).children(".wrap2");
208      var checkbox = $(this).children("input[type=checkbox]");
209
210      $(checkbox).prop('checked', false);
211      $(wrap2).removeClass("thumbSelected");
212    });
213   
214    checkPermitAction();
215    return false;
216  });
217
218  /* select invert */
219  $("#selectInvert").click(function () {
220    $("input[name=setSelected]").prop('checked', false);
221   
222    $(".thumbnails label").each(function() {
223      var wrap2 = $(this).children(".wrap2");
224      var checkbox = $(this).children("input[type=checkbox]");
225
226      $(checkbox).prop('checked', !$(checkbox).is(':checked'));
227
228      if ($(checkbox).is(':checked')) {
229        $(wrap2).addClass("thumbSelected");
230      }
231      else {
232        $(wrap2).removeClass('thumbSelected');
233      }
234    });
235   
236    checkPermitAction();
237    return false;
238  });
239 
240  /* select set */
241  $("#selectSet").click(function () {
242    $("input[name=setSelected]").prop('checked', true);
243   
244    $(".thumbnails label").each(function() {
245      var wrap2 = $(this).children(".wrap2");
246      var checkbox = $(this).children("input[type=checkbox]");
247
248      $(checkbox).prop('checked', true);
249      $(wrap2).addClass("thumbSelected");
250    });
251   
252    checkPermitAction();
253    return false;
254  });
255 
256  /* begin import */
257  $('#beginImport').click(function() {
258    $("#loader_import").fadeIn();
259    var album = $("#albumSelect option:selected").val();
260    var pwa_album = "{$album}";
261   
262    var fills = '';
263    $("input[name^='fill_']:checked").each(function() {
264      fills+= $(this).attr("name") +',';
265    });
266   
267    if ($('input[name="setSelected"]').prop('checked')) {
268      import_selected = all_elements.length;
269      $("#progress").html("0/"+ import_selected);
270     
271      for (var i in all_elements) {
272        performImport(all_elements[i], album, fills, pwa_album);
273      }
274                }
275    else {
276      import_selected = $("input[name='selection[]']:checked").length;
277      $("#progress").html("0/"+ import_selected);
278     
279                        $("input[name='selection[]']:checked").each(function() {
280        performImport($(this).attr('value'), album, fills, pwa_album);
281      });
282    }
283   
284    return false;
285  });
286 
287  /* pagination loader */
288  $('#navigation a').click(function() {
289    $("#loader_display").fadeIn();
290  });
291}(jQuery));
292{/footer_script}
293
294
295<div id="batchManagerGlobal">
296<form action="{$F_ACTION}" method="post" id="import_form">
297
298  <fieldset>
299    <legend>{'Selection'|translate}</legend>
300
301  {if !empty($thumbnails)}
302    <p id="checkActions">
303      {'Select:'|translate}
304    {if $nb_thumbs_set > $nb_thumbs_page}
305      <a href="#" id="selectAll">{'The whole page'|translate}</a>,
306      <a href="#" id="selectSet">{'The whole set'|translate}</a>,
307    {else}
308      <a href="#" id="selectAll">{'All'|translate}</a>,
309    {/if}
310      <a href="#" id="selectNone">{'None'|translate}</a>,
311      <a href="#" id="selectInvert">{'Invert'|translate}</a>
312
313      <span id="selectedMessage"></span>
314      <input type="checkbox" name="setSelected" style="display:none">
315      <span id="loader_display" style="display:none;"><img src="admin/themes/default/images/ajax-loader.gif"> <i>{'Processing...'|translate}</i></span>
316    </p>
317
318    <ul class="thumbnails">
319      {foreach from=$thumbnails item=thumbnail}
320                        <li id="photo-{$thumbnail.id}">
321                                <span class="wrap1">
322                                        <label>
323                                                <span class="wrap2">
324                                                <div class="actions"><a href="{$thumbnail.src}" class="preview-box">{'Zoom'|translate}</a> &middot; <a href="{$thumbnail.url}" target="_blank" title="{'Open Google page in a new tab'|translate}">Picasa</a></div>
325                                                        <span>
326                                                                <img src="{$thumbnail.thumb}" alt="{$thumbnail.title}" title="{$thumbnail.title|@escape:'html'}" class="thumbnail">
327                                                        </span>
328                                                </span>
329                                                <input type="checkbox" name="selection[]" value="{$thumbnail.id}">
330                                        </label>
331                                </span>
332                        </li>
333      {/foreach}
334    </ul>
335   
336   
337    <div style="clear:both;" id="navigation">
338    {if !empty($navbar) }
339      <div style="float:left">
340      {include file='navigation_bar.tpl'|@get_extent:'navbar'}
341      </div>
342    {/if}
343   
344      <div style="float:right;margin-top:10px;">{'display'|translate}
345        <a href="{$U_DISPLAY}&amp;display=20">20</a>
346        &middot; <a href="{$U_DISPLAY}&amp;display=50">50</a>
347        &middot; <a href="{$U_DISPLAY}&amp;display=100">100</a>
348        &middot; <a href="{$U_DISPLAY}&amp;display=all">{'all'|translate}</a>
349        {'photos per page'|translate}
350      </div>
351    </div>
352
353  {else}
354    <div>{'No photo in the current set.'|translate}</div>
355  {/if}
356  </fieldset>
357 
358  <fieldset>
359    <legend>{'Import options'|translate}</legend>
360
361    <p>
362      <label for="albumSelect"><b>{'Album'|translate}:</b></label>
363      <select style="width:400px" name="associate" id="albumSelect" size="1">
364        {html_options options=$category_parent_options}
365      </select>
366      {'... or '|translate}<a href="#" class="addAlbumOpen" title="{'create a new album'|translate}">{'create a new album'|translate}</a>
367    </p>
368   
369    <p>
370      <b>{'Fill these fields from Google datas'|translate}:</b>
371      <label><input type="checkbox" name="fill_name" checked="checked"> {'Photo name'|translate}</label>
372      <label><input type="checkbox" name="fill_author" checked="checked"> {'Author'|translate}</label>
373      <label><input type="checkbox" name="fill_tags" checked="checked"> {'Tags'|translate}</label>
374      <label><input type="checkbox" name="fill_taken" checked="checked"> {'Creation date'|translate}</label>
375      <label><input type="checkbox" name="fill_description" checked="checked"> {'Description'|translate}</label>
376      <label><input type="checkbox" name="fill_geotag" checked="checked"> {'Geolocalization'|translate}</label>
377    </p>
378
379    <p>
380      <input type="hidden" name="album" value="{$album}">
381      <input type="submit" name="import_set" id="beginImport" value="{'Begin transfer'|translate}" style="display:none;">
382      <span id="loader_import" style="display:none;"><img src="admin/themes/default/images/ajax-loader.gif"> <i>{'Processing...'|translate}</i> <span id="progress"></span></span>
383    </p>
384  </fieldset>
385</form>
386</div>
Note: See TracBrowser for help on using the repository browser.