{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='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"} {footer_script}{literal} pwg_initialization_datepicker("#date_creation_day", "#date_creation_month", "#date_creation_year", "#date_creation_linked_date", "#date_creation_action_set"); {/literal}{/footer_script} {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) {console.log(event.shiftKey);$(this).triggerHandler("shclick",event)}); }); } $('ul.thumbnails').enableShiftClick(); }); {/literal}{/footer_script} {combine_script id='jquery.tokeninput' load='footer' require='jquery' path='themes/default/js/plugins/jquery.tokeninput.js'} {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 require='jquery.tokeninput'} jQuery(document).ready(function() {ldelim} jQuery("a.preview-box").colorbox(); var tag_src = [{foreach from=$tags item=tag name=tags}{ldelim}name:"{$tag.name|@escape:'javascript'}",id:"{$tag.id}"{rdelim}{if !$smarty.foreach.tags.last},{/if}{/foreach}]; jQuery("#tags").tokenInput( tag_src, {ldelim} hintText: '{'Type in a search term'|@translate}', noResultsText: '{'No results'|@translate}', searchingText: '{'Searching...'|@translate}', newText: ' ({'new'|@translate})', animateDropdown: false, preventDuplicates: true, allowCreation: true } ); jQuery("#tagsFilter").tokenInput( tag_src, {ldelim} hintText: '{'Type in a search term'|@translate}', noResultsText: '{'No results'|@translate}', searchingText: '{'Searching...'|@translate}', animateDropdown: false, preventDuplicates: true, allowCreation: false } ); }); {/footer_script} {footer_script} 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 str_repeat(i, m) { for (var o = []; m > 0; o[--m] = i); return o.join(''); } function sprintf() { var i = 0, a, f = arguments[i++], o = [], m, p, c, x, s = ''; while (f) { if (m = /^[^\x25]+/.exec(f)) { o.push(m[0]); } else if (m = /^\x25{2}/.exec(f)) { o.push('%'); } else if (m = /^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(f)) { if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) { throw('Too few arguments.'); } if (/[^s]/.test(m[7]) && (typeof(a) != 'number')) { throw('Expecting number but found ' + typeof(a)); } switch (m[7]) { case 'b': a = a.toString(2); break; case 'c': a = String.fromCharCode(a); break; case 'd': a = parseInt(a); break; case 'e': a = m[6] ? a.toExponential(m[6]) : a.toExponential(); break; case 'f': a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a); break; case 'o': a = a.toString(8); break; case 's': a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a); break; case 'u': a = Math.abs(a); break; case 'x': a = a.toString(16); break; case 'X': a = a.toString(16).toUpperCase(); break; } a = (/[def]/.test(m[7]) && m[2] && a >= 0 ? '+'+ a : a); c = m[3] ? m[3] == '0' ? '0' : m[3].charAt(1) : ' '; x = m[5] - String(a).length - s.length; p = m[5] ? str_repeat(c, x) : ''; o.push(s + (m[4] ? a + p : p + a)); } else { throw('Huh ?!'); } f = f.substring(m[0].length); } return o.join(''); } 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(); /* make sure the #albumSelect is on the right select box so that the */ /* "add new album" popup fills the right select box */ if ("associate" == $(this).prop("value") || "move" == $(this).prop("value")) { jQuery("#albumSelect").removeAttr("id"); jQuery("#action_"+$(this).prop("value")+" select").attr("id", "albumSelect"); } 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}