{include file='include/tag_selection.inc.tpl'} {include file='include/datepicker.inc.tpl'} {include file='include/colorbox.inc.tpl'} {include file='include/add_album.inc.tpl'} {combine_script id='common' load='footer' path='admin/themes/default/js/common.js'} {combine_script id='jquery.ui.slider' require='jquery.ui' load='footer' path='themes/default/js/ui/minified/jquery.ui.slider.min.js'} {combine_css path="themes/default/js/ui/theme/jquery.ui.slider.css"} {combine_script id='LocalStorageCache' load='footer' path='admin/themes/default/js/LocalStorageCache.js'} {combine_script id='jquery.selectize' load='footer' path='themes/default/js/plugins/selectize.min.js'} {combine_css id='jquery.selectize' path="themes/default/js/plugins/selectize.default.css"} {combine_script id='jquery.progressBar' load='footer' path='themes/default/js/plugins/jquery.progressbar.min.js'} {combine_script id='jquery.ajaxmanager' load='footer' path='themes/default/js/plugins/jquery.ajaxmanager.js'} {footer_script}{literal} /* Shift-click: select all photos between the click and the shift+click */ jQuery(document).ready(function() { var last_clicked=0; var last_clickedstatus=true; jQuery.fn.enableShiftClick = function() { var inputs = []; var count=0; this.find('input[type=checkbox]').each(function() { var pos=count; inputs[count++]=this; $(this).bind("shclick", function (dummy,event) { if (event.shiftKey) { var first = last_clicked; var last = pos; if (first > last) { first=pos; last=last_clicked; } for (var i=first; i<=last;i++) { input = $(inputs[i]); $(input).prop('checked', last_clickedstatus); if (last_clickedstatus) { $(input).siblings("span.wrap2").addClass("thumbSelected"); } else { $(input).siblings("span.wrap2").removeClass("thumbSelected"); } } } else { last_clicked = pos; last_clickedstatus = this.checked; } return true; }); $(this).click(function(event) { $(this).triggerHandler("shclick",event)}); }); } $('ul.thumbnails').enableShiftClick(); }); {/literal} jQuery(document).ready(function() {ldelim} jQuery('[data-datepicker]').pwgDatepicker({ showTimepicker: true }); jQuery("a.preview-box").colorbox(); {* *} var tagsCache = new LocalStorageCache({ key: 'tagsAdminList', serverKey: '{$CACHE_KEYS.tags}', serverId: '{$CACHE_KEYS._hash}', loader: function(callback) { jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.tags.getAdminList', function(data) { var tags = data.result.tags; for (var i=0, l=tags.length; i if (jQuery.isEmptyObject(this.options)) { callback(tags); } }); if (jQuery(this).data('value')) { jQuery.each(jQuery(this).data('value'), jQuery.proxy(function(i, tag) { this.selectize.addItem(tag.id); }, this)); } }); }); {* *} var categoriesCache = new LocalStorageCache({ key: 'categoriesAdminList', serverKey: '{$CACHE_KEYS.categories}', serverId: '{$CACHE_KEYS._hash}', loader: function(callback) { jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.categories.getAdminList', function(data) { callback(data.result.categories); }); } }); jQuery('[data-selectize=categories]').selectize({ valueField: 'id', labelField: 'fullname', sortField: 'global_rank', searchField: ['fullname'], plugins: ['remove_button'] }); categoriesCache.get(function(categories) { jQuery('[data-selectize=categories]').each(function() { this.selectize.load(function(callback) { callback(categories); }); if (jQuery(this).data('value')) { this.selectize.setValue(jQuery(this).data('value')[0]); } // prevent empty value if (this.selectize.getValue() == '') { this.selectize.setValue(categories[0].id); } this.selectize.on('dropdown_close', function() { if (this.getValue() == '') { this.setValue(categories[0].id); } }); }); }); jQuery('[data-add-album]').pwgAddAlbum({ cache: categoriesCache }); }); var nb_thumbs_page = {$nb_thumbs_page}; var nb_thumbs_set = {$nb_thumbs_set}; var are_you_sure = "{'Are you sure?'|@translate|@escape:'javascript'}"; var applyOnDetails_pattern = "{'on the %d selected photos'|@translate}"; var all_elements = [{if !empty($all_elements)}{','|@implode:$all_elements}{/if}]; var derivatives = {ldelim} elements: null, done: 0, total: 0, finished: function() {ldelim} return derivatives.done == derivatives.total && derivatives.elements && derivatives.elements.length==0; } }; var selectedMessage_pattern = "{'%d of %d photos selected'|@translate}"; var selectedMessage_none = "{'No photo selected, %d photos in current set'|@translate}"; var selectedMessage_all = "{'All %d photos are selected'|@translate}"; var width_str = '{'Width'|@translate}'; var height_str = '{'Height'|@translate}'; var max_width_str = '{'Maximum width'|@translate}'; var max_height_str = '{'Maximum height'|@translate}'; {literal} function progress(success) { jQuery('#progressBar').progressBar(derivatives.done, { max: derivatives.total, textFormat: 'fraction', boxImage: 'themes/default/images/progressbar.gif', barImage: 'themes/default/images/progressbg_orange.gif' }); if (success !== undefined) { var type = success ? 'regenerateSuccess': 'regenerateError', s = jQuery('[name="'+type+'"]').val(); jQuery('[name="'+type+'"]').val(++s); } if (derivatives.finished()) { jQuery('#applyAction').click(); } } $(document).ready(function() { function checkPermitAction() { var nbSelected = 0; if ($("input[name=setSelected]").is(':checked')) { nbSelected = nb_thumbs_set; } else { nbSelected = $(".thumbnails input[type=checkbox]").filter(':checked').length; } if (nbSelected == 0) { $("#permitAction").hide(); $("#forbidAction").show(); } else { $("#permitAction").show(); $("#forbidAction").hide(); } $("#applyOnDetails").text( sprintf( applyOnDetails_pattern, nbSelected ) ); // display the number of currently selected photos in the "Selection" fieldset if (nbSelected == 0) { $("#selectedMessage").text( sprintf( selectedMessage_none, nb_thumbs_set ) ); } else if (nbSelected == nb_thumbs_set) { $("#selectedMessage").text( sprintf( selectedMessage_all, nb_thumbs_set ) ); } else { $("#selectedMessage").text( sprintf( selectedMessage_pattern, nbSelected, nb_thumbs_set ) ); } } $('.thumbnails img').tipTip({ 'delay' : 0, 'fadeIn' : 200, 'fadeOut' : 200 }); $("[id^=action_]").hide(); $("select[name=selectAction]").change(function () { $("[id^=action_]").hide(); $("#action_"+$(this).prop("value")).show(); if ($(this).val() != -1) { $("#applyActionBlock").show(); } else { $("#applyActionBlock").hide(); } }); $(".wrap1 label").click(function (event) { $("input[name=setSelected]").prop('checked', false); var wrap2 = $(this).children(".wrap2"); var checkbox = $(this).children("input[type=checkbox]"); checkbox.triggerHandler("shclick",event); if ($(checkbox).is(':checked')) { $(wrap2).addClass("thumbSelected"); } else { $(wrap2).removeClass('thumbSelected'); } checkPermitAction(); }); $("#selectAll").click(function () { $("input[name=setSelected]").prop('checked', false); selectPageThumbnails(); checkPermitAction(); return false; }); function selectPageThumbnails() { $(".thumbnails label").each(function() { var wrap2 = $(this).children(".wrap2"); var checkbox = $(this).children("input[type=checkbox]"); $(checkbox).prop('checked', true); $(wrap2).addClass("thumbSelected"); }); } $("#selectNone").click(function () { $("input[name=setSelected]").prop('checked', false); $(".thumbnails label").each(function() { var wrap2 = $(this).children(".wrap2"); var checkbox = $(this).children("input[type=checkbox]"); $(checkbox).prop('checked', false); $(wrap2).removeClass("thumbSelected"); }); checkPermitAction(); return false; }); $("#selectInvert").click(function () { $("input[name=setSelected]").prop('checked', false); $(".thumbnails label").each(function() { var wrap2 = $(this).children(".wrap2"); var checkbox = $(this).children("input[type=checkbox]"); $(checkbox).prop('checked', !$(checkbox).is(':checked')); if ($(checkbox).is(':checked')) { $(wrap2).addClass("thumbSelected"); } else { $(wrap2).removeClass('thumbSelected'); } }); checkPermitAction(); return false; }); $("#selectSet").click(function () { selectPageThumbnails(); $("input[name=setSelected]").prop('checked', true); checkPermitAction(); return false; }); $("input[name=remove_author]").click(function () { if ($(this).is(':checked')) { $("input[name=author]").hide(); } else { $("input[name=author]").show(); } }); $("input[name=remove_title]").click(function () { if ($(this).is(':checked')) { $("input[name=title]").hide(); } else { $("input[name=title]").show(); } }); $("input[name=remove_date_creation]").click(function () { if ($(this).is(':checked')) { $("#set_date_creation").hide(); } else { $("#set_date_creation").show(); } }); $(".removeFilter").click(function () { var filter = $(this).parent('li').attr("id"); filter_disable(filter); return false; }); function filter_enable(filter) { /* show the filter*/ $("#"+filter).show(); /* check the checkbox to declare we use this filter */ $("input[type=checkbox][name="+filter+"_use]").prop("checked", true); /* forbid to select this filter in the addFilter list */ $("#addFilter").children("option[value="+filter+"]").attr("disabled", "disabled"); } $("#addFilter").change(function () { var filter = $(this).prop("value"); filter_enable(filter); $(this).prop("value", -1); }); function filter_disable(filter) { /* hide the filter line */ $("#"+filter).hide(); /* uncheck the checkbox to declare we do not use this filter */ $("input[name="+filter+"_use]").prop("checked", false); /* give the possibility to show it again */ $("#addFilter").children("option[value="+filter+"]").removeAttr("disabled"); } $("#removeFilters").click(function() { $("#filterList li").each(function() { var filter = $(this).attr("id"); filter_disable(filter); }); return false; }); jQuery('#applyAction').click(function() { var action = jQuery('[name="selectAction"]').val(); if (action == 'delete_derivatives') { var d_count = $('#action_delete_derivatives input[type=checkbox]').filter(':checked').length , e_count = $('input[name="setSelected"]').is(':checked') ? nb_thumbs_set : $('.thumbnails input[type=checkbox]').filter(':checked').length; if (d_count*e_count > 500) return confirm(are_you_sure); } if (action != 'generate_derivatives' || derivatives.finished() ) { return true; } jQuery('.bulkAction').hide(); var queuedManager = jQuery.manageAjax.create('queued', { queue: true, cacheResponse: false, maxRequests: 1 }); derivatives.elements = []; if (jQuery('input[name="setSelected"]').is(':checked')) derivatives.elements = all_elements; else jQuery('.thumbnails input[type=checkbox]').each(function() { if (jQuery(this).is(':checked')) { derivatives.elements.push(jQuery(this).val()); } }); jQuery('#applyActionBlock').hide(); jQuery('select[name="selectAction"]').hide(); jQuery('#regenerationMsg').show(); progress(); getDerivativeUrls(); return false; }); function getDerivativeUrls() { var ids = derivatives.elements.splice(0, 500); var params = {max_urls: 100000, ids: ids, types: []}; jQuery("#action_generate_derivatives input").each( function(i, t) { if ($(t).is(":checked")) params.types.push( t.value ); } ); jQuery.ajax( { type: "POST", url: 'ws.php?format=json&method=pwg.getMissingDerivatives', data: params, dataType: "json", success: function(data) { if (!data.stat || data.stat != "ok") { return; } derivatives.total += data.result.urls.length; progress(); for (var i=0; i < data.result.urls.length; i++) { jQuery.manageAjax.add("queued", { type: 'GET', url: data.result.urls[i] + "&ajaxload=true", dataType: 'json', success: ( function(data) { derivatives.done++; progress(true) }), error: ( function(data) { derivatives.done++; progress(false) }) }); } if (derivatives.elements.length) setTimeout( getDerivativeUrls, 25 * (derivatives.total-derivatives.done)); } } ); } checkPermitAction(); /* dimensions sliders */ /** * find the key from a value in the startStopValues array */ function getSliderKeyFromValue(value, values) { for (var key in values) { if (values[key] == value) { return key; } } return 0; } {/literal} var dimension_values = {ldelim} 'width':[{$dimensions.widths}], 'height':[{$dimensions.heights}], 'ratio':[{$dimensions.ratios}] }; $("#filter_dimension_width_slider").slider({ldelim} range: true, min: 0, max: dimension_values['width'].length - 1, values: [ getSliderKeyFromValue({$dimensions.selected.min_width}, dimension_values['width']), getSliderKeyFromValue({$dimensions.selected.max_width}, dimension_values['width']) ], slide: function(event, ui) {ldelim} $("input[name='filter_dimension_min_width']").val(dimension_values['width'][ui.values[0]]); $("input[name='filter_dimension_max_width']").val(dimension_values['width'][ui.values[1]]); $("#filter_dimension_width_info").html(sprintf( "{'between %d and %d pixels'|@translate}", dimension_values['width'][ui.values[0]], dimension_values['width'][ui.values[1]] )); }, change: function(event, ui) {ldelim} $("input[name='filter_dimension_min_width']").val(dimension_values['width'][ui.values[0]]); $("input[name='filter_dimension_max_width']").val(dimension_values['width'][ui.values[1]]); $("#filter_dimension_width_info").html(sprintf( "{'between %d and %d pixels'|@translate}", dimension_values['width'][ui.values[0]], dimension_values['width'][ui.values[1]] )); } }); $("#filter_dimension_height_slider").slider({ldelim} range: true, min: 0, max: dimension_values['height'].length - 1, values: [ getSliderKeyFromValue({$dimensions.selected.min_height}, dimension_values['height']), getSliderKeyFromValue({$dimensions.selected.max_height}, dimension_values['height']) ], slide: function(event, ui) {ldelim} $("input[name='filter_dimension_min_height']").val(dimension_values['height'][ui.values[0]]); $("input[name='filter_dimension_max_height']").val(dimension_values['height'][ui.values[1]]); $("#filter_dimension_height_info").html(sprintf( "{'between %d and %d pixels'|@translate}", dimension_values['height'][ui.values[0]], dimension_values['height'][ui.values[1]] )); }, change: function(event, ui) {ldelim} $("input[name='filter_dimension_min_height']").val(dimension_values['height'][ui.values[0]]); $("input[name='filter_dimension_max_height']").val(dimension_values['height'][ui.values[1]]); $("#filter_dimension_height_info").html(sprintf( "{'between %d and %d pixels'|@translate}", dimension_values['height'][ui.values[0]], dimension_values['height'][ui.values[1]] )); } }); $("#filter_dimension_ratio_slider").slider({ldelim} range: true, min: 0, max: dimension_values['ratio'].length - 1, values: [ getSliderKeyFromValue({$dimensions.selected.min_ratio}, dimension_values['ratio']), getSliderKeyFromValue({$dimensions.selected.max_ratio}, dimension_values['ratio']) ], slide: function(event, ui) {ldelim} $("input[name='filter_dimension_min_ratio']").val(dimension_values['ratio'][ui.values[0]]); $("input[name='filter_dimension_max_ratio']").val(dimension_values['ratio'][ui.values[1]]); $("#filter_dimension_ratio_info").html(sprintf( "{'between %.2f and %.2f'|@translate}", dimension_values['ratio'][ui.values[0]], dimension_values['ratio'][ui.values[1]] )); }, change: function(event, ui) {ldelim} $("input[name='filter_dimension_min_ratio']").val(dimension_values['ratio'][ui.values[0]]); $("input[name='filter_dimension_max_ratio']").val(dimension_values['ratio'][ui.values[1]]); $("#filter_dimension_ratio_info").html(sprintf( "{'between %.2f and %.2f'|@translate}", dimension_values['ratio'][ui.values[0]], dimension_values['ratio'][ui.values[1]] )); } }); $("a.dimensions-choice").click(function() {ldelim} var type = jQuery(this).data("type"); var min = jQuery(this).data("min"); var max = jQuery(this).data("max"); $("#filter_dimension_"+ type +"_slider").slider("values", 0, getSliderKeyFromValue(min, dimension_values[type]) ); $("#filter_dimension_"+type+"_slider").slider("values", 1, getSliderKeyFromValue(max, dimension_values[type]) ); }); }); {/footer_script}

{'Batch Manager'|@translate}

{'Filter'|@translate}
  • [x] {'Predefined filter'|@translate}
  • [x] {'Album'|@translate}
  • [x] {'Tags'|@translate}
  • [x] {'Privacy level'|@translate}
  • [x] {'Dimensions'|@translate}
    {'Width'|@translate} {'between %d and %d pixels'|@translate:$dimensions.selected.min_width:$dimensions.selected.max_width} | {'Reset'|@translate}
    {'Height'|@translate} {'between %d and %d pixels'|@translate:$dimensions.selected.min_height:$dimensions.selected.max_height} | {'Reset'|@translate}
    {'Ratio'|@translate} ({'Width'|@translate}/{'Height'|@translate}) {'between %.2f and %.2f'|@translate:$dimensions.selected.min_ratio:$dimensions.selected.max_ratio} {if isset($dimensions.ratio_portrait)} | {'Portrait'|@translate} {/if} {if isset($dimensions.ratio_square)} | {'square'|@translate} {/if} {if isset($dimensions.ratio_landscape)} | {'Landscape'|@translate} {/if} {if isset($dimensions.ratio_panorama)} | {'Panorama'|@translate} {/if} | {'Reset'|@translate}

{'Remove all filters'|@translate}

{'Selection'|@translate} {if !empty($thumbnails)}

{'Select:'|@translate} {if $nb_thumbs_set > $nb_thumbs_page} {'The whole page'|@translate}, {'The whole set'|@translate}, {else} {'All'|@translate}, {/if} {'None'|@translate}, {'Invert'|@translate}

    {html_style} UL.thumbnails SPAN.wrap2{ldelim} width: {$thumb_params->max_width()+2}px; } UL.thumbnails SPAN.wrap2 {ldelim} height: {$thumb_params->max_height()+25}px; } {/html_style} {foreach from=$thumbnails item=thumbnail} {assign var='isSelected' value=$thumbnail.id|@in_array:$selection}
  • {/foreach}
{if !empty($navbar) }
{include file='navigation_bar.tpl'|@get_extent:'navbar'}
{'display'|@translate} 20 · 50 · 100 · {'all'|@translate} {'photos per page'|@translate}
{/if} {else}
{'No photo in the current set.'|@translate}
{/if}
{'Action'|@translate}