feature:2273
Add crop functionality to webservice and batch manager. git-svn-id: http://piwigo.org/svn/trunk@10553 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
parent
d1eb25df09
commit
17a04fcd39
4 changed files with 71 additions and 20 deletions
|
@ -417,7 +417,7 @@ SELECT id, path
|
|||
if ($_POST['regenerateError'] != '0')
|
||||
array_push($page['warnings'], sprintf(l10n('%s thumbnails can not be regenerated'), $_POST['regenerateError']));
|
||||
|
||||
$update_fields = array('thumb_maxwidth', 'thumb_maxheight', 'thumb_quality');
|
||||
$update_fields = array('thumb_maxwidth', 'thumb_maxheight', 'thumb_quality', 'thumb_crop', 'thumb_follow_orientation');
|
||||
}
|
||||
|
||||
if ('regenerateWebsize' == $action)
|
||||
|
@ -437,26 +437,38 @@ SELECT id, path
|
|||
$updates = array();
|
||||
foreach ($update_fields as $field)
|
||||
{
|
||||
$value = null;
|
||||
if (!empty($_POST[$field]))
|
||||
if (is_bool($upload_form_config[$field]['default']))
|
||||
{
|
||||
$value = $_POST[$field];
|
||||
}
|
||||
$value = isset($_POST[$field]);
|
||||
|
||||
if (preg_match($upload_form_config[$field]['pattern'], $value)
|
||||
and $value >= $upload_form_config[$field]['min']
|
||||
and $value <= $upload_form_config[$field]['max'])
|
||||
{
|
||||
$conf['upload_form_'.$field] = $value;
|
||||
$updates[] = array(
|
||||
$updates[] = array(
|
||||
'param' => 'upload_form_'.$field,
|
||||
'value' => $value
|
||||
'value' => boolean_to_string($value)
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$updates = null;
|
||||
break;
|
||||
$value = null;
|
||||
if (!empty($_POST[$field]))
|
||||
{
|
||||
$value = $_POST[$field];
|
||||
}
|
||||
|
||||
if (preg_match($upload_form_config[$field]['pattern'], $value)
|
||||
and $value >= $upload_form_config[$field]['min']
|
||||
and $value <= $upload_form_config[$field]['max'])
|
||||
{
|
||||
$conf['upload_form_'.$field] = $value;
|
||||
$updates[] = array(
|
||||
'param' => 'upload_form_'.$field,
|
||||
'value' => $value
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$updates = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$form_values[$field] = $value;
|
||||
}
|
||||
|
|
|
@ -36,6 +36,11 @@ var selectedMessage_none = "{'No photo selected, %d photos in current set'|@tran
|
|||
var selectedMessage_all = "{'All %d photos are selected'|@translate}";
|
||||
var regenerateThumbnailsMessage = "{'Thumbnails generation in progress...'|@translate}";
|
||||
var regenerateWebsizeMessage = "{'Photos generation in progress...'|@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);
|
||||
|
@ -333,6 +338,8 @@ $(document).ready(function() {
|
|||
maxwidth = jQuery('input[name="thumb_maxwidth"]').val();
|
||||
maxheight = jQuery('input[name="thumb_maxheight"]').val();
|
||||
regenerationText = regenerateThumbnailsMessage;
|
||||
crop = jQuery('input[name="thumb_crop"]').is(':checked');
|
||||
follow_orientation = jQuery('input[name="thumb_follow_orientation"]').is(':checked');
|
||||
}
|
||||
else if(jQuery('[name="selectAction"]').val() == 'regenerateWebsize')
|
||||
{
|
||||
|
@ -341,6 +348,8 @@ $(document).ready(function() {
|
|||
maxwidth = jQuery('input[name="websize_maxwidth"]').val();
|
||||
maxheight = jQuery('input[name="websize_maxheight"]').val();
|
||||
regenerationText = regenerateWebsizeMessage;
|
||||
crop = false;
|
||||
follow_orientation = false;
|
||||
}
|
||||
else return true;
|
||||
|
||||
|
@ -385,6 +394,8 @@ $(document).ready(function() {
|
|||
type: type,
|
||||
maxwidth: maxwidth,
|
||||
maxheight: maxheight,
|
||||
crop: crop,
|
||||
follow_orientation: follow_orientation,
|
||||
image_id: elements[i],
|
||||
format: 'json'
|
||||
},
|
||||
|
@ -396,6 +407,22 @@ $(document).ready(function() {
|
|||
return false;
|
||||
});
|
||||
|
||||
function toggleCropFields(prefix) {
|
||||
if (jQuery("#"+prefix+"_crop").is(':checked')) {
|
||||
jQuery("#"+prefix+"_width_th").text(width_str);
|
||||
jQuery("#"+prefix+"_height_th").text(height_str);
|
||||
jQuery("#"+prefix+"_follow_orientation_tr").show();
|
||||
}
|
||||
else {
|
||||
jQuery("#"+prefix+"_width_th").text(max_width_str);
|
||||
jQuery("#"+prefix+"_height_th").text(max_height_str);
|
||||
jQuery("#"+prefix+"_follow_orientation_tr").hide();
|
||||
}
|
||||
}
|
||||
|
||||
toggleCropFields("thumb");
|
||||
jQuery("#thumb_crop").click(function () {toggleCropFields("thumb")});
|
||||
|
||||
checkPermitAction()
|
||||
});
|
||||
|
||||
|
@ -661,11 +688,19 @@ jQuery(window).load(function() {
|
|||
<div id="action_regenerateThumbnails" class="bulkAction">
|
||||
<table style="margin-left:20px;">
|
||||
<tr>
|
||||
<th>{'Maximum Width'|@translate}</th>
|
||||
<th><label for="thumb_crop">{'Crop'|@translate}</label></th>
|
||||
<td><input type="checkbox" name="thumb_crop" id="thumb_crop" {if $upload_form_settings.thumb_crop}checked="checked"{/if}></td>
|
||||
</tr>
|
||||
<tr id="thumb_follow_orientation_tr">
|
||||
<th><label for="thumb_follow_orientation">{'Follow Orientation'|@translate}</label></th>
|
||||
<td><input type="checkbox" name="thumb_follow_orientation" id="thumb_follow_orientation" {if $upload_form_settings.thumb_follow_orientation}checked="checked"{/if}></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th id="thumb_width_th">{'Maximum Width'|@translate}</th>
|
||||
<td><input type="text" name="thumb_maxwidth" value="{$upload_form_settings.thumb_maxwidth}" size="4" maxlength="4"> {'pixels'|@translate}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{'Maximum Height'|@translate}</th>
|
||||
<th id="thumb_height_th">{'Maximum Height'|@translate}</th>
|
||||
<td><input type="text" name="thumb_maxheight" value="{$upload_form_settings.thumb_maxheight}" size="4" maxlength="4"> {'pixels'|@translate}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -2673,11 +2673,11 @@ function ws_images_resize($params, &$service)
|
|||
return new PwgError(403, 'Unknown type (only "thumbnail" or "websize" are accepted');
|
||||
}
|
||||
|
||||
$resize_params = array('maxwidth', 'maxheight', 'quality');
|
||||
$resize_params = array('maxwidth', 'maxheight', 'quality', 'crop', 'follow_orientation');
|
||||
$type = $params['type'] == 'thumbnail' ? 'thumb' : 'websize';
|
||||
foreach ($resize_params as $param)
|
||||
{
|
||||
if (empty($params[$param]))
|
||||
if (empty($params[$param]) and isset($conf['upload_form_'.$type.'_'.$param]))
|
||||
$params[$param] = $conf['upload_form_'.$type.'_'.$param];
|
||||
}
|
||||
|
||||
|
@ -2710,7 +2710,9 @@ WHERE id = '.(int)$params['image_id'].'
|
|||
$params['maxwidth'],
|
||||
$params['maxheight'],
|
||||
$params['quality'],
|
||||
true
|
||||
true,
|
||||
get_boolean($params['crop']),
|
||||
get_boolean($params['follow_orientation'])
|
||||
);
|
||||
return true;
|
||||
}
|
||||
|
|
4
ws.php
4
ws.php
|
@ -412,11 +412,13 @@ function ws_addDefaultMethods( $arr )
|
|||
'type' => array('default' => 'thumbnail'),
|
||||
'maxwidth' => array('default' => null),
|
||||
'maxheight' => array('default' => null),
|
||||
'crop' => array('default' => null),
|
||||
'follow_orientation' => array('default' => null),
|
||||
'quality' => array('default' => null),
|
||||
),
|
||||
'Regenerate thumbnails or websize photo with given arguments.
|
||||
<br>Argument "type" can be "thumbnail" or "websize". Default is "thumbnail".
|
||||
<br>If maxwidth, maxheight or quality are missing, default parameters of upload will be used.'
|
||||
<br>If maxwidth, maxheight, crop, follow_orientation or quality are missing, default parameters of upload will be used.'
|
||||
);
|
||||
|
||||
$service->addMethod(
|
||||
|
|
Loading…
Reference in a new issue