From 225b45f2b88d3193ec4012a589749c5814c42205 Mon Sep 17 00:00:00 2001
From: rvelices
Date: Sun, 8 Jan 2012 19:25:52 +0000
Subject: feature 2548 multisize - added a page to build missing derivatives -
browser driven, chained ws calls to retrieve urls, visual feedback of
progress through slideshow
git-svn-id: http://piwigo.org/svn/trunk@12865 68402e56-0260-453c-a942-63ccdbb3a9ee
---
admin/themes/default/template/derivatives.tpl | 1 +
.../themes/default/template/derivatives_build.tpl | 152 +++++++++++++++++++++
2 files changed, 153 insertions(+)
create mode 100644 admin/themes/default/template/derivatives_build.tpl
(limited to 'admin/themes/default/template')
diff --git a/admin/themes/default/template/derivatives.tpl b/admin/themes/default/template/derivatives.tpl
index 59f6344a7..dcf52a4ec 100644
--- a/admin/themes/default/template/derivatives.tpl
+++ b/admin/themes/default/template/derivatives.tpl
@@ -22,6 +22,7 @@
{/literal}{/html_head}
+Build missing derivatives
+
+
+
+
+{combine_script id='iloader' load='footer' path='themes/default/js/image.loader.js'}
+
+{footer_script require='jquery.effects.slide'}{literal}
+
+var loader = new ImageLoader( {onChanged: loaderChanged} )
+ , pending_next_page = null
+ , last_image_show_time = 0
+ , allDoneDfd, urlDfd;
+
+function start() {
+ allDoneDfd = jQuery.Deferred();
+ urlDfd = jQuery.Deferred();
+
+ allDoneDfd.always( function() {
+ jQuery("#startLink").attr('disabled', false).css("opacity", 1);
+ jQuery("#pauseLink,#stopLink").attr('disabled', true).css("opacity", 0.5);
+ } );
+
+ urlDfd.always( function() {
+ if (loader.remaining()==0)
+ allDoneDfd.resolve();
+ } );
+
+ jQuery("#startLink").attr('disabled', true).css("opacity", 0.5);
+ jQuery("#pauseLink,#stopLink").attr('disabled', false).css("opacity", 1);
+
+ loader.pause(false);
+ updateStats();
+ getUrls();
+}
+
+function pause() {
+ loader.pause( !loader.pause() );
+}
+
+function stop() {
+ loader.clear();
+ urlDfd.resolve();
+}
+
+function getUrls(page_token) {
+ data = {max_urls: 500, types: []};
+ jQuery.each(jQuery("#types").serializeArray(), function(i, t) {
+ data.types.push( t.value );
+ } );
+
+ if (page_token)
+ data['prev_page'] = page_token;
+ jQuery.post( '{/literal}{$ROOT_URL}{literal}ws.php?format=json&method=pwg.getMissingDerivatives',
+ data, wsData, "json").fail( wsError );
+}
+
+function wsData(data) {
+ if (!data.stat || data.stat != "ok") {
+ wsError();
+ return;
+ }
+ loader.add( data.result.urls );
+ if (data.result.next_page) {
+ if (loader.pause() || loader.remaining() > 100) {
+ pending_next_page = data.result.next_page;
+ }
+ else {
+ getUrls(data.result.next_page);
+ }
+ }
+}
+
+function wsError() {
+ urlDfd.reject();
+}
+
+function updateStats() {
+ jQuery("#loaded").text( loader.loaded );
+ jQuery("#errors").text( loader.errors );
+ jQuery("#remaining").text( loader.remaining() );
+}
+
+function loaderChanged(type, img) {
+ updateStats();
+ if (img) {
+ if (type==="load") {
+ var now = jQuery.now();
+ if (now - last_image_show_time > 3000) {
+ last_image_show_time = now;
+ var h=img.height, url=img.src;
+ jQuery("#feedbackWrap").hide("slide", {direction:'down'}, function() {
+ last_image_show_time = jQuery.now();
+ if (h > 300 )
+ jQuery("#feedbackImg").attr("height", 300);
+ else
+ jQuery("#feedbackImg").removeAttr("height");
+ jQuery("#feedbackImg").attr("src", url);
+ jQuery("#feedbackWrap").show("slide", {direction:'up'} );
+ } );
+ }
+ }
+ else {
+ jQuery("#errorList").prepend( ''+img.src+'' + "
");
+ }
+ }
+ if (pending_next_page && 100 > loader.remaining() ) {
+ getUrls(pending_next_page);
+ pending_next_page = null;
+ }
+ else if (loader.remaining() == 0 && (urlDfd.isResolved() || urlDfd.isRejected())) {
+ allDoneDfd.resolve();
+ }
+}
+{/literal}{/footer_script}
\ No newline at end of file
--
cgit v1.2.3