aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--include/category_cats.inc.php1
-rw-r--r--include/category_default.inc.php1
-rw-r--r--include/config_default.inc.php3
-rw-r--r--themes/default/icon/errors_small.pngbin0 -> 1270 bytes
-rw-r--r--themes/default/icon/img_small.pngbin0 -> 1164 bytes
-rw-r--r--themes/default/images/ajax_loader.gifbin0 -> 10819 bytes
-rw-r--r--themes/default/template/index.tpl3
-rw-r--r--themes/default/template/mainpage_categories.tpl45
-rw-r--r--themes/default/template/thumbnails.tpl42
-rw-r--r--themes/default/themeconf.inc.php1
10 files changed, 88 insertions, 8 deletions
diff --git a/include/category_cats.inc.php b/include/category_cats.inc.php
index cb25bc41e..6f93dea91 100644
--- a/include/category_cats.inc.php
+++ b/include/category_cats.inc.php
@@ -387,6 +387,7 @@ if (count($categories) > 0)
$derivative_params = trigger_event('get_index_album_derivative_params', ImageStdParams::get_by_type(IMG_THUMB) );
$tpl_thumbnails_var_selection = trigger_event('loc_end_index_category_thumbnails', $tpl_thumbnails_var_selection);
$template->assign( array(
+ 'maxRequests' =>$conf['maxRequests'],
'category_thumbnails' => $tpl_thumbnails_var_selection,
'derivative_params' => $derivative_params,
) );
diff --git a/include/category_default.inc.php b/include/category_default.inc.php
index b1d2106b8..cab756bbc 100644
--- a/include/category_default.inc.php
+++ b/include/category_default.inc.php
@@ -153,6 +153,7 @@ foreach ($pictures as $row)
$template->assign( array(
'derivative_params' => trigger_event('get_index_derivative_params', ImageStdParams::get_by_type( pwg_get_session_var('index_deriv', IMG_THUMB) ) ),
+ 'maxRequests' =>$conf['maxRequests'],
'SHOW_THUMBNAIL_CAPTION' =>$conf['show_thumbnail_caption'],
) );
$tpl_thumbnails_var = trigger_event('loc_end_index_thumbnails', $tpl_thumbnails_var, $pictures);
diff --git a/include/config_default.inc.php b/include/config_default.inc.php
index 661af80fe..1478b12a5 100644
--- a/include/config_default.inc.php
+++ b/include/config_default.inc.php
@@ -769,4 +769,7 @@ $conf['chmod_value']= substr_compare(PHP_SAPI, 'apa', 0, 3)==0 ? 0777 : 0755;
// 'small', 'medium' or 'large'
$conf['derivative_default_size'] = 'medium';
+
+//Maximum Ajax requests at once, for thumbnails on-the-fly generation
+$conf['maxRequests']=3;
?> \ No newline at end of file
diff --git a/themes/default/icon/errors_small.png b/themes/default/icon/errors_small.png
new file mode 100644
index 000000000..724cc659c
--- /dev/null
+++ b/themes/default/icon/errors_small.png
Binary files differ
diff --git a/themes/default/icon/img_small.png b/themes/default/icon/img_small.png
new file mode 100644
index 000000000..dbfcc9a00
--- /dev/null
+++ b/themes/default/icon/img_small.png
Binary files differ
diff --git a/themes/default/images/ajax_loader.gif b/themes/default/images/ajax_loader.gif
new file mode 100644
index 000000000..d84f65378
--- /dev/null
+++ b/themes/default/images/ajax_loader.gif
Binary files differ
diff --git a/themes/default/template/index.tpl b/themes/default/template/index.tpl
index aa92a215f..e6874567e 100644
--- a/themes/default/template/index.tpl
+++ b/themes/default/template/index.tpl
@@ -171,8 +171,9 @@ jQuery("#derivativeSwitchBox").on("mouseleave", function() {
{/if}
{if !empty($THUMBNAILS)}
+<div class="loader" style="display: none; position: fixed; right: 0;bottom: 0;"><img src="{$ROOT_URL}{$themeconf.img_dir}/ajax_loader.gif"></div>
<ul class="thumbnails" id="thumbnails">
-{$THUMBNAILS}
+ {$THUMBNAILS}
</ul>
{/if}
{if !empty($thumb_navbar)}
diff --git a/themes/default/template/mainpage_categories.tpl b/themes/default/template/mainpage_categories.tpl
index 81bb82d75..8657b921b 100644
--- a/themes/default/template/mainpage_categories.tpl
+++ b/themes/default/template/mainpage_categories.tpl
@@ -7,18 +7,55 @@
height: {$derivative_params->max_height()+5}px;
}
{/html_style}{/strip}
+<div class="loader" style="display: none; position: fixed; right: 0;bottom: 0;"><img src="{$ROOT_URL}{$themeconf.img_dir}/ajax_loader.gif"></div>
<ul class="thumbnailCategories">
{foreach from=$category_thumbnails item=cat name=cat_loop}
{assign var=derivative value=$pwg->derivative($derivative_params, $cat.representative.src_image)}
-{if !$derivative->is_cached()}
+{if !$derivative->is_cached() and !$js_loaded}
{combine_script id='jquery.ajaxmanager' path='themes/default/js/plugins/jquery.ajaxmanager.js' load='footer'}
-{combine_script id='thumbnails.loader' path='themes/default/js/thumbnails.loader.js' require='jquery.ajaxmanager' load='footer'}
+{*combine_script id='thumbnails.loader' path='themes/default/js/thumbnails.loader.js' require='jquery.ajaxmanager' load='footer'*}
+{footer_script}{literal}
+var thumbnails_queue = jQuery.manageAjax.create('queued', {
+ queue: true,
+ cacheResponse: false,
+ maxRequests: {/literal}{$maxRequests}{literal},
+ preventDoubleRequests: false
+});
+
+function add_thumbnail_to_queue(img, loop) {
+ thumbnails_queue.add({
+ type: 'GET',
+ url: img.data('src'),
+ data: { ajaxload: 'true' },
+ dataType: 'json',
+ beforeSend: function(){jQuery('.loader').show()},
+ success: function(result) {
+ img.attr('src', result.url);
+ jQuery('.loader').hide();
+ },
+ error: function() {
+ if (loop < 3)
+ add_thumbnail_to_queue(img, ++loop); // Retry 3 times
+ img.attr('src', {/literal}"{$ROOT_URL}{$themeconf.icon_dir}/errors_small.png"{literal});
+ jQuery('.loader').hide();
+ }
+ });
+}
+
+function pwg_ajax_thumbnails_loader() {
+ jQuery('img[data-src]').each(function() {
+ add_thumbnail_to_queue(jQuery(this), 0);
+ });
+}
+jQuery(document).ready(pwg_ajax_thumbnails_loader);
+{/literal}{/footer_script}
+{assign var=js_loaded value=true}
{/if}
- <li class="{if $smarty.foreach.cat_loop.index is odd}odd{else}even{/if}">
+ <li class="{if $smarty.foreach.cat_loop.index is odd}odd{else}even{/if}">
<div class="thumbnailCategory">
<div class="illustration">
<a href="{$cat.URL}">
- <img {if $derivative->is_cached()}src="{$derivative->get_url()}"{else}src="{$ROOT_URL}{$themeconf.img_dir}/ajax-loader-small.gif" data-src="{$derivative->get_url()}"{/if} alt="{$cat.TN_ALT}" title="{$cat.NAME|@replace:'"':' '|@strip_tags:false} - {'display this album'|@translate}">
+ <img {if $derivative->is_cached()}src="{$derivative->get_url()}"{else}src="{$ROOT_URL}{$themeconf.icon_dir}/img_small.png" data-src="{$derivative->get_url()}"{/if} alt="{$cat.TN_ALT}" title="{$cat.NAME|@replace:'"':' '|@strip_tags:false} - {'display this album'|@translate}">
</a>
</div>
<div class="description">
diff --git a/themes/default/template/thumbnails.tpl b/themes/default/template/thumbnails.tpl
index 9121aed60..efb9fba65 100644
--- a/themes/default/template/thumbnails.tpl
+++ b/themes/default/template/thumbnails.tpl
@@ -23,15 +23,51 @@
{/html_style}
{foreach from=$thumbnails item=thumbnail}
{assign var=derivative value=$pwg->derivative($derivative_params, $thumbnail.src_image)}
-{if !$derivative->is_cached()}
+{if !$derivative->is_cached() and !$js_loaded}
{combine_script id='jquery.ajaxmanager' path='themes/default/js/plugins/jquery.ajaxmanager.js' load='footer'}
-{combine_script id='thumbnails.loader' path='themes/default/js/thumbnails.loader.js' require='jquery.ajaxmanager' load='footer'}
+{*combine_script id='thumbnails.loader' path='themes/default/js/thumbnails.loader.js' require='jquery.ajaxmanager' load='footer'*}
+{footer_script}{literal}
+var thumbnails_queue = jQuery.manageAjax.create('queued', {
+ queue: true,
+ cacheResponse: false,
+ maxRequests: {/literal}{$maxRequests}{literal},
+ preventDoubleRequests: false
+});
+
+function add_thumbnail_to_queue(img, loop) {
+ thumbnails_queue.add({
+ type: 'GET',
+ url: img.data('src'),
+ data: { ajaxload: 'true' },
+ dataType: 'json',
+ beforeSend: function(){jQuery('.loader').show()},
+ success: function(result) {
+ img.attr('src', result.url);
+ jQuery('.loader').hide();
+ },
+ error: function() {
+ if (loop < 3)
+ add_thumbnail_to_queue(img, ++loop); // Retry 3 times
+ img.attr('src', {/literal}"{$ROOT_URL}{$themeconf.icon_dir}/errors_small.png"{literal});
+ jQuery('.loader').hide();
+ }
+ });
+}
+
+function pwg_ajax_thumbnails_loader() {
+ jQuery('img[data-src]').each(function() {
+ add_thumbnail_to_queue(jQuery(this), 0);
+ });
+}
+jQuery(document).ready(pwg_ajax_thumbnails_loader);
+{/literal}{/footer_script}
+{assign var=js_loaded value=true}
{/if}
<li>
<span class="wrap1">
<span class="wrap2">
<a href="{$thumbnail.URL}">
- <img class="thumbnail" {if $derivative->is_cached()}src="{$derivative->get_url()}"{else}src="{$ROOT_URL}{$themeconf.img_dir}/ajax-loader-small.gif" data-src="{$derivative->get_url()}"{/if} alt="{$thumbnail.TN_ALT}" title="{$thumbnail.TN_TITLE}">
+ <img class="thumbnail" {if $derivative->is_cached()}src="{$derivative->get_url()}"{else}src="{$ROOT_URL}{$themeconf.icon_dir}/img_small.png" data-src="{$derivative->get_url()}"{/if} alt="{$thumbnail.TN_ALT}" title="{$thumbnail.TN_TITLE}">
</a>
</span>
{if $SHOW_THUMBNAIL_CAPTION }
diff --git a/themes/default/themeconf.inc.php b/themes/default/themeconf.inc.php
index 3bd69eddd..7d759f14e 100644
--- a/themes/default/themeconf.inc.php
+++ b/themes/default/themeconf.inc.php
@@ -3,6 +3,7 @@ $themeconf = array(
'name' => 'default',
'icon_dir' => 'themes/default/icon',
'img_dir' => 'themes/default/images',
+ 'loading_img' => 'themes/default/images/359_s.png',
'mime_icon_dir' => 'themes/default/icon/mimetypes/',
'local_head' => 'local_head.tpl',
);