feature 2548 multisize

- comments thumbnails + no more hard coded thumbnail sizes in css 
- removed admin thumbnail page + language cleanup

git-svn-id: http://piwigo.org/svn/trunk@12930 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
rvelices
2012-01-20 05:36:58 +00:00
parent 99b58aef93
commit b7fff52095
44 changed files with 27 additions and 384 deletions
-7
View File
@@ -415,7 +415,6 @@ DELETE
$updates[$field] = $value;
}
save_upload_form_config($updates);
$template->delete_compiled_templates();
}
trigger_action('element_set_global_action', $action, $collection);
@@ -758,12 +757,6 @@ $template->assign(
)
);
function regenerateThumbnails_prefilter($content, $smarty)
{
return str_replace('{$thumbnail.TN_SRC}', '{$thumbnail.TN_SRC}?rand='.md5(uniqid(rand(), true)), $content);
}
$template->set_prefilter('batch_manager_global', 'regenerateThumbnails_prefilter');
trigger_action('loc_end_element_set_global');
//----------------------------------------------------------- sending html code
-1
View File
@@ -2015,7 +2015,6 @@ function get_active_menu($menu_page)
case 'stats':
case 'history':
case 'maintenance':
case 'thumbnail':
case 'comments':
case 'updates':
return 4;
-3
View File
@@ -70,9 +70,6 @@ jQuery(document).ready(function(){ldelim}
<li><a href="{$U_SITE_MANAGER}">{'Site manager'|@translate}</a></li>
{/if}
<li><a href="{$U_HISTORY_STAT}">{'History'|@translate}</a></li>
{if $ENABLE_SYNCHRONIZATION}
<li><a href="{$U_THUMBNAILS}">{'Thumbnails'|@translate}</a></li>
{/if}
<li><a href="{$U_MAINTENANCE}">{'Maintenance'|@translate}</a></li>
{if isset($U_PENDING_COMMENTS)}
<li><a href="{$U_PENDING_COMMENTS}">{'Pending Comments'|@translate}</a></li>
-162
View File
@@ -1,162 +0,0 @@
{combine_script id='jquery.ajaxmanager' load='footer' path='themes/default/js/plugins/jquery.ajaxmanager.js'}
{footer_script}
var width_str = '{'Width'|@translate}';
var height_str = '{'Height'|@translate}';
var max_width_str = '{'Maximum Width'|@translate}';
var max_height_str = '{'Maximum Height'|@translate}';
var remaining = '{'photos without thumbnail (jpeg and png only)'|@translate}';
var todo = {$TOTAL_NB_REMAINING};
var done = 0;
{literal}
var queuedManager = $.manageAjax.create('queued', {
queue: true,
cacheResponse: false,
maxRequests: 3,
complete: function() {
jQuery("#thumb_remaining").text(todo-(++done) + ' ' + remaining);
if (todo == done) {
jQuery('.waiting_bar, #thumb_remaining, .properties').hide();
}
}
});
function processThumbs(width,height,crop,follow_orientation) {
jQuery('tr.nothumb').each(function() {
var image_path = jQuery(this).find('td.filepath').text();
var td=this;
queuedManager.add({
type: 'GET',
url: 'ws.php',
data: {
method: 'pwg.images.resizeThumbnail',
image_path: image_path,
maxwidth: width,
maxheight: height,
crop: crop,
follow_orientation: follow_orientation,
format:'json'
},
dataType: 'json',
success: (function(row) { return function(data) {
if (data.stat =='ok') {
if (todo < 200)
jQuery(row).find('td.thumbpic').html('<img src="'+data.result.destination+'"/>');
jQuery(row).find('td.thumbdim').html(""+data.result.width+" x "+data.result.height);
jQuery(row).find('td.thumbgentime').html(""+data.result.time);
jQuery(row).find('td.thumbsize').html(""+data.result.size);
jQuery(row).removeClass("nothumb");
} else {
jQuery(row).find('td.thumbdim').html('#ERR#'+data.err+"# : "+data.message);
jQuery(row).removeClass("nothumb");
jQuery(row).addClass("error");
}
}
})(td)
});
});
}
function toggleCropFields() {
if (jQuery("#thumb_crop").is(':checked')) {
jQuery("label[for='thumb_maxwidth']").text(width_str);
jQuery("label[for='thumb_maxheight']").text(height_str);
jQuery("#thumb_follow_orientation_li").show();
}
else {
jQuery("label[for='thumb_maxwidth']").text(max_width_str);
jQuery("label[for='thumb_maxheight']").text(max_height_str);
jQuery("#thumb_follow_orientation_li").hide();
}
}
jQuery(document).ready(function(){
jQuery('input#proceed').click (function () {
var width = jQuery('input[name="thumb_maxwidth"]').val();
var height = jQuery('input[name="thumb_maxheight"]').val();
var crop = jQuery('#thumb_crop').is(':checked');
var follow_orientation = jQuery('#thumb_follow_orientation').is(':checked');
jQuery(".waiting_bar").toggle();
if (todo < 200)
jQuery('.thumbpic').show();
jQuery('.thumbgentime, .thumbsize, .thumbdim').show();
processThumbs(width,height,crop,follow_orientation);
});
toggleCropFields();
jQuery("#thumb_crop").click(function () {toggleCropFields()});
jQuery('.thumbpic, .thumbgentime, .thumbsize, .thumbdim').hide();
});
{/literal}{/footer_script}
<div class="titrePage">
<h2>{'Thumbnail creation'|@translate}</h2>
</div>
{if !empty($remainings) }
<form method="post" action="{$params.F_ACTION}" class="properties">
<fieldset>
<legend>{'Thumbnail creation'|@translate}</legend>
<ul>
<li>
<span class="property"><label for="thumb_crop">{'Crop'|@translate}</label></span>
<input type="checkbox" name="thumb_crop" id="thumb_crop" {$values.thumb_crop}>
</li>
<li id="thumb_follow_orientation_li">
<span class="property"><label for="thumb_follow_orientation">{'Follow Orientation'|@translate}</label></span>
<input type="checkbox" name="thumb_follow_orientation" id="thumb_follow_orientation" {$values.thumb_follow_orientation}>
</li>
<li>
<span class="property"><label for="thumb_maxwidth">{'Maximum Width'|@translate}</label></span>
<input type="text" name="thumb_maxwidth" id="thumb_maxwidth" value="{$values.thumb_maxwidth}" size="4" maxlength="4"> {'pixels'|@translate}
</li>
<li>
<span class="property"><label for="thumb_maxheight">{'Maximum Height'|@translate}</label></span>
<input type="text" name="thumb_maxheight" id="thumb_maxheight" value="{$values.thumb_maxheight}" size="4" maxlength="4"> {'pixels'|@translate}
</li>
<li>
<span class="property"><label for="thumb_quality">{'Image Quality'|@translate}</label></span>
<input type="text" name="thumb_quality" id="thumb_quality" value="{$values.thumb_quality}" size="3" maxlength="3"> %
</li>
</ul>
</fieldset>
<p class="waiting_bar"><input type="button" name="submit" id="proceed" value="{'Submit'|@translate}"></p>
<p class="waiting_bar" style="display:none;">{'Please wait...'|@translate}<br><img src="admin/themes/default/images/ajax-loader-bar.gif"></p>
</form>
<div class="admin"><span id="thumb_remaining">{$TOTAL_NB_REMAINING} {'photos without thumbnail (jpeg and png only)'|@translate}</span></div>
<table style="width:100%;">
<tr class="throw">
<th>&nbsp;</th>
<th style="width:60%;">{'Path'|@translate}</th>
<th>{'Filesize'|@translate}</th>
<th>{'Dimensions'|@translate}</th>
<th class="thumbpic">{'Thumbnail'|@translate}</th>
<th class="thumbgentime">{'generated in'|@translate}</th>
<th class="thumbsize">{'Filesize'|@translate}</th>
<th class="thumbdim">{'Dimensions'|@translate}</th>
</tr>
{foreach from=$remainings item=elt name=remain_loop}
<tr class="{if $smarty.foreach.remain_loop.index is odd}row1{else}row2{/if} nothumb item" id="th_{$smarty.foreach.remain_loop.iteration}">
<td>{$smarty.foreach.remain_loop.iteration}</td>
<td class="filepath">{$elt.PATH}</td>
<td>{$elt.FILESIZE_IMG}</td>
<td>{$elt.WIDTH_IMG} x {$elt.HEIGHT_IMG}</td>
<td class="thumbpic"><img src="admin/themes/default/images/ajax-loader.gif"></td>
<td class="thumbgentime">&nbsp;</td>
<td class="thumbsize">&nbsp;</td>
<td class="thumbdim">&nbsp;</td>
</tr>
{/foreach}
</table>
{else}
<p style="text-align:left;margin:20px;">
<b>{'No missing thumbnail'|@translate}</b><br><br>
{'If you want to regenerate thumbnails, please go to the <a href="%s">Batch Manager</a>.'|@translate|@sprintf:"admin.php?page=batch_manager"}
</p>
{/if}
-140
View File
@@ -1,140 +0,0 @@
<?php
// +-----------------------------------------------------------------------+
// | Piwigo - a PHP based photo gallery |
// +-----------------------------------------------------------------------+
// | Copyright(C) 2008-2012 Piwigo Team http://piwigo.org |
// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
// +-----------------------------------------------------------------------+
// | This program is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation |
// | |
// | This program is distributed in the hope that it will be useful, but |
// | WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
// | General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with this program; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
// | USA. |
// +-----------------------------------------------------------------------+
include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php');
check_status(ACCESS_ADMINISTRATOR);
// +-----------------------------------------------------------------------+
// | Load configuration |
// +-----------------------------------------------------------------------+
$upload_form_config = get_upload_form_config();
$form_values = array();
foreach ($upload_form_config as $param_shortname => $param)
{
$param_name = 'upload_form_'.$param_shortname;
$form_values[$param_shortname] = $conf[$param_name];
}
// +-----------------------------------------------------------------------+
// | search pictures without thumbnails |
// +-----------------------------------------------------------------------+
$wo_thumbnails = array();
// what is the directory to search in ?
$query = '
SELECT galleries_url FROM '.SITES_TABLE.'
WHERE galleries_url NOT LIKE \'http://%\'
;';
$result = pwg_query($query);
while ( $row=pwg_db_fetch_assoc($result) )
{
$basedir = preg_replace('#/*$#', '', $row['galleries_url']);
$fs = get_fs($basedir);
// because isset is one hundred time faster than in_array
$fs['thumbnails'] = array_flip($fs['thumbnails']);
foreach ($fs['elements'] as $path)
{
// only pictures need thumbnails
if (in_array(get_extension($path), $conf['picture_ext']))
{
$dirname = dirname($path);
$filename = basename($path);
// only files matching the authorized filename pattern can be considered
// as "without thumbnail"
if (!preg_match('/^[a-zA-Z0-9-_.]+$/', $filename))
{
continue;
}
// searching the element
$filename_wo_ext = get_filename_wo_extension($filename);
$tn_ext = '';
$base_test = $dirname.'/'.$conf['dir_thumbnail'].'/';
$base_test.= $conf['prefix_thumbnail'].$filename_wo_ext.'.';
foreach ($conf['picture_ext'] as $ext)
{
if (isset($fs['thumbnails'][$base_test.$ext]))
{
$tn_ext = $ext;
break;
}
}
if (empty($tn_ext))
{
array_push($wo_thumbnails, $path);
}
}
} // next element
} // next site id
// +-----------------------------------------------------------------------+
// | form & pictures without thumbnails display |
// +-----------------------------------------------------------------------+
$template->set_filenames( array('thumbnail'=>'thumbnail.tpl') );
if (count($wo_thumbnails) > 0)
{
foreach ($wo_thumbnails as $path)
{
list($width, $height) = getimagesize($path);
$size = floor(filesize($path) / 1024).' KB';
$template->append(
'remainings',
array(
'PATH'=>$path,
'FILESIZE_IMG'=>$size,
'WIDTH_IMG'=>$width,
'HEIGHT_IMG'=>$height,
)
);
}
}
foreach (array_keys($upload_form_config) as $field)
{
if (is_bool($upload_form_config[$field]['default']))
{
$form_values[$field] = $form_values[$field] ? 'checked="checked"' : '';
}
}
$template->assign(
array(
'F_ACTION' => get_root_url().'admin.php?page=thumbnail',
'values' => $form_values,
'TOTAL_NB_REMAINING' => count($wo_thumbnails),
'U_HELP' => get_root_url().'admin/popuphelp.php?page=thumbnail',
)
);
$template->assign_var_from_handle('ADMIN_CONTENT', 'thumbnail');
?>