- Timestamp:
- Dec 26, 2013, 12:07:19 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/Google2Piwigo/admin/template/import.list_photos.tpl
r25788 r26198 1 1 {footer_script require='jquery.ajaxmanager,jquery.jgrowl'} 2 /* global vars */ 3 var nb_thumbs_page = {$nb_thumbs_page}; 4 var nb_thumbs_set = {$nb_thumbs_set}; 5 var all_elements = [{if !empty($all_elements)}{','|@implode:$all_elements}{/if}]; 6 7 var errorHead = '{'ERROR'|@translate|@escape:'javascript'}'; 8 var errorMsg = '{'an error happened'|@translate|@escape:'javascript'}'; 9 var successHead = '{'Success'|@translate|@escape:'javascript'}'; 10 var selectedMessage_pattern = "{'%d of %d photos selected'|@translate}"; 11 var selectedMessage_none = "{'No photo selected, %d photos in current set'|@translate}"; 12 var selectedMessage_all = "{'All %d photos are selected'|@translate}"; 13 var applyOnDetails_pattern = "{'on the %d selected photos'|@translate}"; 14 15 var import_done = 0; 16 var import_selected = 0; 17 var queuedManager = jQuery.manageAjax.create('queued', {ldelim} 18 queue: true, 19 maxRequests: 1 20 }); 21 22 {literal} 23 /* Shift-click: select all photos between the click and the shift+click */ 24 jQuery(document).ready(function() { 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 */ 25 14 var last_clicked=0; 26 15 var last_clickedstatus=true; 27 jQuery.fn.enableShiftClick = function() {16 $.fn.enableShiftClick = function() { 28 17 var inputs = []; 29 18 var count=0; … … 60 49 return true; 61 50 }); 62 $(this).click(function(event) {$(this).triggerHandler("shclick",event)}); 63 }); 64 } 65 }); 66 67 /* sprintf */ 68 function str_repeat(i, m) { 69 for (var o = []; m > 0; o[--m] = i); 70 return o.join(''); 71 } 72 73 function sprintf() { 74 var i = 0, a, f = arguments[i++], o = [], m, p, c, x, s = ''; 75 while (f) { 76 if (m = /^[^\x25]+/.exec(f)) { 77 o.push(m[0]); 78 } 79 else if (m = /^\x25{2}/.exec(f)) { 80 o.push('%'); 81 } 82 else if (m = /^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(f)) { 83 if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) { 84 throw('Too few arguments.'); 85 } 86 if (/[^s]/.test(m[7]) && (typeof(a) != 'number')) { 87 throw('Expecting number but found ' + typeof(a)); 88 } 89 switch (m[7]) { 90 case 'b': a = a.toString(2); break; 91 case 'c': a = String.fromCharCode(a); break; 92 case 'd': a = parseInt(a); break; 93 case 'e': a = m[6] ? a.toExponential(m[6]) : a.toExponential(); break; 94 case 'f': a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a); break; 95 case 'o': a = a.toString(8); break; 96 case 's': a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a); break; 97 case 'u': a = Math.abs(a); break; 98 case 'x': a = a.toString(16); break; 99 case 'X': a = a.toString(16).toUpperCase(); break; 100 } 101 a = (/[def]/.test(m[7]) && m[2] && a >= 0 ? '+'+ a : a); 102 c = m[3] ? m[3] == '0' ? '0' : m[3].charAt(1) : ' '; 103 x = m[5] - String(a).length - s.length; 104 p = m[5] ? str_repeat(c, x) : ''; 105 o.push(s + (m[4] ? a + p : p + a)); 106 } 107 else { 108 throw('Huh ?!'); 109 } 110 f = f.substring(m[0].length); 111 } 112 return o.join(''); 113 } 114 115 /* update displaying */ 116 function checkPermitAction() { 117 var nbSelected = 0; 118 if ($("input[name=setSelected]").is(':checked')) { 119 nbSelected = nb_thumbs_set; 120 } else { 121 $(".thumbnails input[type=checkbox]").each(function() { 122 if ($(this).is(':checked')) nbSelected++; 123 }); 124 } 125 126 if (nbSelected == 0) { 127 $("#beginImport").hide(); 128 } else { 129 $("#beginImport").show(); 130 } 131 132 $("#applyOnDetails").text( 133 sprintf( 134 applyOnDetails_pattern, 135 nbSelected 136 ) 137 ); 138 139 // display the number of currently selected photos in the "Selection" fieldset 140 if (nbSelected == 0) { 141 $("#selectedMessage").text( 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( 142 75 sprintf( 143 selectedMessage_none,144 nb _thumbs_set76 '{'on the %d selected photos'|translate|escape:javascript}', 77 nbSelected 145 78 ) 146 79 ); 147 } else if (nbSelected == nb_thumbs_set) { 148 $("#selectedMessage").text( 149 sprintf( 150 selectedMessage_all, 151 nb_thumbs_set 152 ) 153 ); 154 } else { 155 $("#selectedMessage").text( 156 sprintf( 157 selectedMessage_pattern, 158 nbSelected, 159 nb_thumbs_set 160 ) 161 ); 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 } 162 107 } 163 } 164 165 /* import queue */ 166 function performImport(photo, album, fills, pwa_album) { 167 queuedManager.add({ 168 type: 'GET', 169 dataType: 'json', 170 url: 'ws.php', 171 data: { method: 'pwg.images.addPicasa', id: photo, category: album, fills: fills, pwa_album: pwa_album, format: 'json' }, 172 success: function(data) { 173 if (data['stat'] == 'ok') { 174 jQuery.jGrowl(data['result'], { theme: 'success', header: successHead, life: 4000, sticky: false }); 175 jQuery("#photo-"+photo).fadeOut(function(){ $(this).remove(); }); 176 } else { 177 jQuery.jGrowl(data['result'], { theme: 'error', header: errorHead, sticky: true }); 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 }); 178 151 } 179 180 import_done++; 181 $("#progress").html(import_done +"/"+ import_selected); 182 183 if (import_done == import_selected) { 184 $("#import_form").append('<input type="hidden" name="done" value="' + import_done + '">'); 185 $("#import_form").submit(); 186 } 187 }, 188 error: function(data) { 189 jQuery.jGrowl(errorMsg, { theme: 'error', header: errorHead, sticky: true }); 190 } 191 }); 192 } 193 194 195 $(document).ready(function() { 152 }); 153 } 154 155 196 156 checkPermitAction(); 197 157 $("a.preview-box").colorbox(); … … 207 167 /* thumbnail click */ 208 168 $(".wrap1 label").click(function (event) { 209 $("input[name=setSelected]"). attr('checked', false);169 $("input[name=setSelected]").prop('checked', false); 210 170 211 171 var wrap2 = $(this).children(".wrap2"); … … 226 186 /* select all */ 227 187 $("#selectAll").click(function () { 228 $("input[name=setSelected]"). attr('checked', false);188 $("input[name=setSelected]").prop('checked', false); 229 189 230 190 $(".thumbnails label").each(function() { … … 232 192 var checkbox = $(this).children("input[type=checkbox]"); 233 193 234 $(checkbox). attr('checked', true);194 $(checkbox).prop('checked', true); 235 195 $(wrap2).addClass("thumbSelected"); 236 196 }); … … 242 202 /* select none */ 243 203 $("#selectNone").click(function () { 244 $("input[name=setSelected]"). attr('checked', false);204 $("input[name=setSelected]").prop('checked', false); 245 205 246 206 $(".thumbnails label").each(function() { … … 248 208 var checkbox = $(this).children("input[type=checkbox]"); 249 209 250 $(checkbox). attr('checked', false);210 $(checkbox).prop('checked', false); 251 211 $(wrap2).removeClass("thumbSelected"); 252 212 }); … … 258 218 /* select invert */ 259 219 $("#selectInvert").click(function () { 260 $("input[name=setSelected]"). attr('checked', false);220 $("input[name=setSelected]").prop('checked', false); 261 221 262 222 $(".thumbnails label").each(function() { … … 264 224 var checkbox = $(this).children("input[type=checkbox]"); 265 225 266 $(checkbox). attr('checked', !$(checkbox).is(':checked'));226 $(checkbox).prop('checked', !$(checkbox).is(':checked')); 267 227 268 228 if ($(checkbox).is(':checked')) { 269 229 $(wrap2).addClass("thumbSelected"); 270 } else { 230 } 231 else { 271 232 $(wrap2).removeClass('thumbSelected'); 272 233 } … … 279 240 /* select set */ 280 241 $("#selectSet").click(function () { 281 $("input[name=setSelected]"). attr('checked', true);242 $("input[name=setSelected]").prop('checked', true); 282 243 283 244 $(".thumbnails label").each(function() { … … 285 246 var checkbox = $(this).children("input[type=checkbox]"); 286 247 287 $(checkbox). attr('checked', true);248 $(checkbox).prop('checked', true); 288 249 $(wrap2).addClass("thumbSelected"); 289 250 }); … … 294 255 295 256 /* begin import */ 296 jQuery('#beginImport').click(function() {257 $('#beginImport').click(function() { 297 258 $("#loader_import").fadeIn(); 298 259 var album = $("#albumSelect option:selected").val(); 299 var pwa_album = "{ /literal}{$album}{literal}";260 var pwa_album = "{$album}"; 300 261 301 262 var fills = ''; … … 304 265 }); 305 266 306 if ( jQuery('input[name="setSelected"]').attr('checked')) {267 if ($('input[name="setSelected"]').prop('checked')) { 307 268 import_selected = all_elements.length; 308 269 $("#progress").html("0/"+ import_selected); … … 311 272 performImport(all_elements[i], album, fills, pwa_album); 312 273 } 313 } else { 274 } 275 else { 314 276 import_selected = $("input[name='selection[]']:checked").length; 315 277 $("#progress").html("0/"+ import_selected); 316 278 317 jQuery("input[name='selection[]']:checked").each(function() {318 performImport( jQuery(this).attr('value'), album, fills, pwa_album);279 $("input[name='selection[]']:checked").each(function() { 280 performImport($(this).attr('value'), album, fills, pwa_album); 319 281 }); 320 282 } … … 324 286 325 287 /* pagination loader */ 326 jQuery('#navigation a').click(function() {288 $('#navigation a').click(function() { 327 289 $("#loader_display").fadeIn(); 328 290 }); 329 }); 330 {/literal} 291 }(jQuery)); 331 292 {/footer_script} 293 332 294 333 295 <div id="batchManagerGlobal"> … … 335 297 336 298 <fieldset> 337 <legend>{'Selection'| @translate}</legend>299 <legend>{'Selection'|translate}</legend> 338 300 339 301 {if !empty($thumbnails)} 340 302 <p id="checkActions"> 341 {'Select:'| @translate}303 {'Select:'|translate} 342 304 {if $nb_thumbs_set > $nb_thumbs_page} 343 <a href="#" id="selectAll">{'The whole page'| @translate}</a>,344 <a href="#" id="selectSet">{'The whole set'| @translate}</a>,305 <a href="#" id="selectAll">{'The whole page'|translate}</a>, 306 <a href="#" id="selectSet">{'The whole set'|translate}</a>, 345 307 {else} 346 <a href="#" id="selectAll">{'All'| @translate}</a>,308 <a href="#" id="selectAll">{'All'|translate}</a>, 347 309 {/if} 348 <a href="#" id="selectNone">{'None'| @translate}</a>,349 <a href="#" id="selectInvert">{'Invert'| @translate}</a>310 <a href="#" id="selectNone">{'None'|translate}</a>, 311 <a href="#" id="selectInvert">{'Invert'|translate}</a> 350 312 351 313 <span id="selectedMessage"></span> 352 314 <input type="checkbox" name="setSelected" style="display:none"> 353 <span id="loader_display" style="display:none;"><img src="admin/themes/default/images/ajax-loader.gif"> <i>{'Processing...'| @translate}</i></span>315 <span id="loader_display" style="display:none;"><img src="admin/themes/default/images/ajax-loader.gif"> <i>{'Processing...'|translate}</i></span> 354 316 </p> 355 317 … … 360 322 <label> 361 323 <span class="wrap2"> 362 <div class="actions"><a href="{$thumbnail.src}" class="preview-box">{'Zoom'| @translate}</a> · <a href="{$thumbnail.url}" target="_blank" title="{'Open Google page in a new tab'|@translate}">Picasa</a></div>324 <div class="actions"><a href="{$thumbnail.src}" class="preview-box">{'Zoom'|translate}</a> · <a href="{$thumbnail.url}" target="_blank" title="{'Open Google page in a new tab'|translate}">Picasa</a></div> 363 325 <span> 364 326 <img src="{$thumbnail.thumb}" alt="{$thumbnail.title}" title="{$thumbnail.title|@escape:'html'}" class="thumbnail"> … … 380 342 {/if} 381 343 382 <div style="float:right;margin-top:10px;">{'display'| @translate}344 <div style="float:right;margin-top:10px;">{'display'|translate} 383 345 <a href="{$U_DISPLAY}&display=20">20</a> 384 346 · <a href="{$U_DISPLAY}&display=50">50</a> 385 347 · <a href="{$U_DISPLAY}&display=100">100</a> 386 · <a href="{$U_DISPLAY}&display=all">{'all'| @translate}</a>387 {'photos per page'| @translate}348 · <a href="{$U_DISPLAY}&display=all">{'all'|translate}</a> 349 {'photos per page'|translate} 388 350 </div> 389 351 </div> 390 352 391 353 {else} 392 <div>{'No photo in the current set.'| @translate}</div>354 <div>{'No photo in the current set.'|translate}</div> 393 355 {/if} 394 356 </fieldset> 395 357 396 358 <fieldset> 397 <legend>{'Import options'| @translate}</legend>359 <legend>{'Import options'|translate}</legend> 398 360 399 361 <p> 400 <label for="albumSelect"><b>{'Album'| @translate}:</b></label>362 <label for="albumSelect"><b>{'Album'|translate}:</b></label> 401 363 <select style="width:400px" name="associate" id="albumSelect" size="1"> 402 364 {html_options options=$category_parent_options} 403 365 </select> 404 {'... or '| @translate}<a href="#" class="addAlbumOpen" title="{'create a new album'|@translate}">{'create a new album'|@translate}</a>366 {'... or '|translate}<a href="#" class="addAlbumOpen" title="{'create a new album'|translate}">{'create a new album'|translate}</a> 405 367 </p> 406 368 407 369 <p> 408 <b>{'Fill these fields from Google datas'| @translate}:</b>409 <label><input type="checkbox" name="fill_name" checked="checked"> {'Photo name'| @translate}</label>410 <label><input type="checkbox" name="fill_author" checked="checked"> {'Author'| @translate}</label>411 <label><input type="checkbox" name="fill_tags" checked="checked"> {'Tags'| @translate}</label>412 <label><input type="checkbox" name="fill_taken" checked="checked"> {'Creation date'| @translate}</label>413 <label><input type="checkbox" name="fill_description" checked="checked"> {'Description'| @translate}</label>414 {if $GMAPS_LOADED}<label><input type="checkbox" name="fill_geotag" checked="checked"> {'Geolocalization'|@translate}</label>{/if}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> 415 377 </p> 416 378 417 379 <p> 418 380 <input type="hidden" name="album" value="{$album}"> 419 <input type="submit" name="import_set" id="beginImport" value="{'Begin transfer'| @translate}" style="display:none;">420 <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>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> 421 383 </p> 422 384 </fieldset>
Note: See TracChangeset
for help on using the changeset viewer.