From 41c8a69ca2e6c754dc5e08c9362805a6b051bc82 Mon Sep 17 00:00:00 2001 From: mistic100 Date: Sat, 27 Oct 2012 10:59:31 +0000 Subject: feature:2718 Add batch manager filters for photo dimensions, redisgn git-svn-id: http://piwigo.org/svn/trunk@18758 68402e56-0260-453c-a942-63ccdbb3a9ee --- admin/batch_manager.php | 70 ++++++++++++---------- .../default/template/batch_manager_global.tpl | 42 +++++++------ language/en_UK/admin.lang.php | 4 +- 3 files changed, 65 insertions(+), 51 deletions(-) diff --git a/admin/batch_manager.php b/admin/batch_manager.php index e144731d8..8e7a48e0e 100644 --- a/admin/batch_manager.php +++ b/admin/batch_manager.php @@ -93,14 +93,23 @@ if (isset($_POST['submitFilter'])) if (isset($_POST['filter_dimension_use'])) { - if ( $_POST['filter_dimension'] != 'format' and !preg_match('#^[0-9]+$#', $_POST['filter_dimension_'. $_POST['filter_dimension'] ]) ) + foreach (array('min_width','max_width','min_height','max_height') as $type) { - array_push($page['errors'], l10n('Invalid dimension')); + if ( preg_match('#^[0-9]+$#', $_POST['filter_dimension_'. $type ]) ) + { + $_SESSION['bulk_manager_filter']['dimension'][$type] = $_POST['filter_dimension_'. $type ]; + } } - else + } + + if (isset($_POST['filter_ratio_use'])) + { + foreach (array('min','max') as $type) { - $_SESSION['bulk_manager_filter']['dimension'] = $_POST['filter_dimension']; - $_SESSION['bulk_manager_filter']['dimension_'. $_POST['filter_dimension'] ] = $_POST['filter_dimension_'. $_POST['filter_dimension'] ]; + if ( preg_match('#^[0-9\.,]+$#', $_POST['filter_ratio_'. $type ]) ) + { + $_SESSION['bulk_manager_filter']['ratio'][$type] = str_replace(',','.',$_POST['filter_ratio_'. $type ]); + } } } } @@ -340,39 +349,38 @@ if (!empty($_SESSION['bulk_manager_filter']['tags'])) ); } -if (isset($_SESSION['bulk_manager_filter']['dimension'])) +if (isset($_SESSION['bulk_manager_filter']['dimension']) or isset($_SESSION['bulk_manager_filter']['ratio'])) { - switch ($_SESSION['bulk_manager_filter']['dimension']) + $where_clauses = array(); + if (isset($_SESSION['bulk_manager_filter']['dimension']['min_width'])) { - case 'min_width': - $where_clause = 'width >= '.$_SESSION['bulk_manager_filter']['dimension_min_width']; break; - case 'max_width': - $where_clause = 'width <= '.$_SESSION['bulk_manager_filter']['dimension_max_width']; break; - case 'min_height': - $where_clause = 'height >= '.$_SESSION['bulk_manager_filter']['dimension_min_height']; break; - case 'max_height': - $where_clause = 'height <= '.$_SESSION['bulk_manager_filter']['dimension_max_height']; break; - case 'format': - { - switch ($_SESSION['bulk_manager_filter']['dimension_format']) - { - case 'portrait': - $where_clause = 'width/height < 0.95'; break; - case 'square': - $where_clause = 'width/height >= 0.95 AND width/height <= 1.05'; break; - case 'landscape': - $where_clause = 'width/height > 1.05 AND width/height < 2.5'; break; - case 'panorama': - $where_clause = 'width/height >= 2.5'; break; - } - break; - } + $where_clause[] = 'width >= '.$_SESSION['bulk_manager_filter']['dimension']['min_width']; + } + if (isset($_SESSION['bulk_manager_filter']['dimension']['max_width'])) + { + $where_clause[] = 'width <= '.$_SESSION['bulk_manager_filter']['dimension']['max_width']; + } + if (isset($_SESSION['bulk_manager_filter']['dimension']['min_height'])) + { + $where_clause[] = 'height >= '.$_SESSION['bulk_manager_filter']['dimension']['min_height']; + } + if (isset($_SESSION['bulk_manager_filter']['dimension']['max_height'])) + { + $where_clause[] = 'height <= '.$_SESSION['bulk_manager_filter']['dimension']['max_height']; + } + if (isset($_SESSION['bulk_manager_filter']['ratio']['min'])) + { + $where_clause[] = 'width/height >= '.$_SESSION['bulk_manager_filter']['ratio']['min']; + } + if (isset($_SESSION['bulk_manager_filter']['ratio']['max'])) + { + $where_clause[] = 'width/height <= '.$_SESSION['bulk_manager_filter']['ratio']['max']; } $query = ' SELECT id FROM '.IMAGES_TABLE.' - WHERE '.$where_clause.' + WHERE '.implode(' AND ',$where_clause).' '.$conf['order_by']; $filter_sets[] = array_from_query($query, 'id'); diff --git a/admin/themes/default/template/batch_manager_global.tpl b/admin/themes/default/template/batch_manager_global.tpl index 5b031fc6b..154a19f20 100644 --- a/admin/themes/default/template/batch_manager_global.tpl +++ b/admin/themes/default/template/batch_manager_global.tpl @@ -392,6 +392,11 @@ $(document).ready(function() { $("span[id^='filter_dimension_']").hide(); $("span#filter_dimension_"+ $(this).attr("value")).show(); }); + + $("a.ratio-choice").click(function() { + $("input[name='filter_ratio_min']").val($(this).data("min")); + $("input[name='filter_ratio_max']").val($(this).data("max")); + }); function filter_disable(filter) { /* hide the filter line */ @@ -552,25 +557,23 @@ $(document).ready(function() {
  • [x] - - px - px - px - px - - - + {'Dimensions'|@translate} : + — + — + — + +
  • + +
  • + [x] + + {'Ratio'|@translate} : + — + — + {'Portrait'|@translate} | + {'square'|@translate} | + {'Landscape'|@translate} | + {'Panorama'|@translate}
  • @@ -583,6 +586,7 @@ $(document).ready(function() { + {'Remove all filters'|@translate}

    diff --git a/language/en_UK/admin.lang.php b/language/en_UK/admin.lang.php index 7055d3e01..f75cd873a 100644 --- a/language/en_UK/admin.lang.php +++ b/language/en_UK/admin.lang.php @@ -429,7 +429,6 @@ $lang['Install'] = "Install"; $lang['Installed Languages'] = 'Installed Languages'; $lang['Installed Themes'] = "Installed Themes"; $lang['Instructions to use Piwigo'] = "Instructions to use Piwigo"; -$lang['Invalid dimension'] = 'Invalid dimension'; $lang['Invert'] = 'Invert'; $lang['IP'] = "IP"; $lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'; @@ -485,6 +484,7 @@ $lang['Manage this set of %d photos'] = 'Manage this set of %d photos'; $lang['Manage'] = "Manage"; $lang['manual order'] = 'manual order'; $lang['Manual order'] = 'Manual order'; +$lang['Maximum'] = 'Maximum'; $lang['Maximum file size: %sB.'] = 'Maximum file size: %sB.'; $lang['Maximum height'] = 'Maximum height'; $lang['Maximum width'] = 'Maximum width'; @@ -495,6 +495,7 @@ $lang['Merge tags'] = 'Merge tags'; $lang['Metadata synchronization results'] = "Metadata synchronization results"; $lang['Metadata synchronized from file'] = "Metadata synchronized from file"; $lang['middle'] = 'middle'; +$lang['Minimum'] = 'Minimum'; $lang['Minimum width'] = 'Minimum width'; $lang['Minimum height'] = 'Minimum height'; $lang['Minimum privacy level'] = "Minimum privacy level"; @@ -656,6 +657,7 @@ $lang['ranks'] = "ranks"; $lang['Rate date'] = "Rate date"; $lang['Rate'] = "Rate"; $lang['Rated %d times, score : %.2f'] = 'Rated %d times, score : %.2f'; +$lang['Ratio'] = "Ratio"; $lang['Rating by guests'] = "Rating by guests"; $lang['Rating'] = "Rating"; $lang['Read Piwigo Documentation'] = 'Read Piwigo Documentation'; -- cgit v1.2.3