Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
feature:2273
Add crop functionality to webservice and batch manager.

git-svn-id: http://piwigo.org/svn/trunk@10553 68402e56-0260-453c-a942-63ccdbb3a9ee
  • Loading branch information
patdenice committed Apr 21, 2011
1 parent d1eb25d commit 17a04fc
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 20 deletions.
40 changes: 26 additions & 14 deletions admin/batch_manager_global.php
Expand Up @@ -417,7 +417,7 @@
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)
Expand All @@ -437,26 +437,38 @@
$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;
}
Expand Down
39 changes: 37 additions & 2 deletions admin/themes/default/template/batch_manager_global.tpl
Expand Up @@ -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);
Expand Down Expand Up @@ -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')
{
Expand All @@ -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;

Expand Down Expand Up @@ -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'
},
Expand All @@ -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()
});

Expand Down Expand Up @@ -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>
Expand Down
8 changes: 5 additions & 3 deletions include/ws_functions.inc.php
Expand Up @@ -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];
}

Expand Down Expand Up @@ -2710,7 +2710,9 @@ function ws_images_resize($params, &$service)
$params['maxwidth'],
$params['maxheight'],
$params['quality'],
true
true,
get_boolean($params['crop']),
get_boolean($params['follow_orientation'])
);
return true;
}
Expand Down
4 changes: 3 additions & 1 deletion ws.php
Expand Up @@ -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(
Expand Down

0 comments on commit 17a04fc

Please sign in to comment.