Changeset 18758


Ignore:
Timestamp:
Oct 27, 2012, 12:59:31 PM (11 years ago)
Author:
mistic100
Message:

feature:2718 Add batch manager filters for photo dimensions, redisgn

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/admin/batch_manager.php

    r18459 r18758  
    9494  if (isset($_POST['filter_dimension_use']))
    9595  {
    96     if ( $_POST['filter_dimension'] != 'format' and !preg_match('#^[0-9]+$#', $_POST['filter_dimension_'. $_POST['filter_dimension'] ]) )
    97     {
    98       array_push($page['errors'], l10n('Invalid dimension'));
    99     }
    100     else
    101     {
    102       $_SESSION['bulk_manager_filter']['dimension'] = $_POST['filter_dimension'];
    103       $_SESSION['bulk_manager_filter']['dimension_'. $_POST['filter_dimension'] ] = $_POST['filter_dimension_'. $_POST['filter_dimension'] ];
     96    foreach (array('min_width','max_width','min_height','max_height') as $type)
     97    {
     98      if ( preg_match('#^[0-9]+$#', $_POST['filter_dimension_'. $type ]) )
     99      {
     100        $_SESSION['bulk_manager_filter']['dimension'][$type] = $_POST['filter_dimension_'. $type ];
     101      }
     102    }
     103  }
     104 
     105  if (isset($_POST['filter_ratio_use']))
     106  {
     107    foreach (array('min','max') as $type)
     108    {
     109      if ( preg_match('#^[0-9\.,]+$#', $_POST['filter_ratio_'. $type ]) )
     110      {
     111        $_SESSION['bulk_manager_filter']['ratio'][$type] = str_replace(',','.',$_POST['filter_ratio_'. $type ]);
     112      }
    104113    }
    105114  }
     
    341350}
    342351
    343 if (isset($_SESSION['bulk_manager_filter']['dimension']))
    344 {
    345   switch ($_SESSION['bulk_manager_filter']['dimension'])
    346   {
    347     case 'min_width':
    348       $where_clause = 'width >= '.$_SESSION['bulk_manager_filter']['dimension_min_width']; break;
    349     case 'max_width':
    350       $where_clause = 'width <= '.$_SESSION['bulk_manager_filter']['dimension_max_width']; break;
    351     case 'min_height':
    352       $where_clause = 'height >= '.$_SESSION['bulk_manager_filter']['dimension_min_height']; break;
    353     case 'max_height':
    354       $where_clause = 'height <= '.$_SESSION['bulk_manager_filter']['dimension_max_height']; break;
    355     case 'format':
    356     {
    357       switch ($_SESSION['bulk_manager_filter']['dimension_format'])
    358       {
    359         case 'portrait':
    360           $where_clause = 'width/height < 0.95'; break;
    361         case 'square':
    362           $where_clause = 'width/height >= 0.95 AND width/height <= 1.05'; break;
    363         case 'landscape':
    364           $where_clause = 'width/height > 1.05 AND width/height < 2.5'; break;
    365         case 'panorama':
    366           $where_clause = 'width/height >= 2.5'; break;
    367       }
    368       break;
    369     }
     352if (isset($_SESSION['bulk_manager_filter']['dimension']) or isset($_SESSION['bulk_manager_filter']['ratio']))
     353{
     354  $where_clauses = array();
     355  if (isset($_SESSION['bulk_manager_filter']['dimension']['min_width']))
     356  {
     357    $where_clause[] = 'width >= '.$_SESSION['bulk_manager_filter']['dimension']['min_width'];
     358  }
     359  if (isset($_SESSION['bulk_manager_filter']['dimension']['max_width']))
     360  {
     361    $where_clause[] = 'width <= '.$_SESSION['bulk_manager_filter']['dimension']['max_width'];
     362  }
     363  if (isset($_SESSION['bulk_manager_filter']['dimension']['min_height']))
     364  {
     365    $where_clause[] = 'height >= '.$_SESSION['bulk_manager_filter']['dimension']['min_height'];
     366  }
     367  if (isset($_SESSION['bulk_manager_filter']['dimension']['max_height']))
     368  {
     369    $where_clause[] = 'height <= '.$_SESSION['bulk_manager_filter']['dimension']['max_height'];
     370  }
     371  if (isset($_SESSION['bulk_manager_filter']['ratio']['min']))
     372  {
     373    $where_clause[] = 'width/height >= '.$_SESSION['bulk_manager_filter']['ratio']['min'];
     374  }
     375  if (isset($_SESSION['bulk_manager_filter']['ratio']['max']))
     376  {
     377    $where_clause[] = 'width/height <= '.$_SESSION['bulk_manager_filter']['ratio']['max'];
    370378  }
    371379 
     
    373381SELECT id
    374382  FROM '.IMAGES_TABLE.'
    375   WHERE '.$where_clause.'
     383  WHERE '.implode(' AND ',$where_clause).'
    376384  '.$conf['order_by'];
    377385
  • trunk/admin/themes/default/template/batch_manager_global.tpl

    r18573 r18758  
    392392    $("span[id^='filter_dimension_']").hide();
    393393    $("span#filter_dimension_"+ $(this).attr("value")).show();
     394  });
     395 
     396  $("a.ratio-choice").click(function() {
     397    $("input[name='filter_ratio_min']").val($(this).data("min"));
     398    $("input[name='filter_ratio_max']").val($(this).data("max"));
    394399  });
    395400
     
    553558        <a href="#" class="removeFilter" title="remove this filter"><span>[x]</span></a>
    554559        <input type="checkbox" name="filter_dimension_use" class="useFilterCheckbox" {if isset($filter.dimension)}checked="checked"{/if}>
    555         <select name="filter_dimension">
    556           <option value="min_width" {if $filter.dimension=='min_width'}selected="selected"{/if}>{'Minimum width'|@translate}</option>
    557           <option value="max_width" {if $filter.dimension=='max_width'}selected="selected"{/if}>{'Maximum width'|@translate}</option>
    558           <option value="min_height" {if $filter.dimension=='min_height'}selected="selected"{/if}>{'Minimum height'|@translate}</option>
    559           <option value="max_height" {if $filter.dimension=='max_height'}selected="selected"{/if}>{'Maximum height'|@translate}</option>
    560           <option value="format" {if $filter.dimension=='format'}selected="selected"{/if}>{'Format'|@translate}</option>
    561         </select>
    562         <span id="filter_dimension_min_width" {if !isset($filter.dimension_min_width) and isset($filter.dimension)}style="display:none;"{/if}><input type="text" name="filter_dimension_min_width" value="{$filter.dimension_min_width}" size="4"> px</span>
    563         <span id="filter_dimension_max_width" {if !isset($filter.dimension_max_width)}style="display:none;"{/if}><input type="text" name="filter_dimension_max_width" value="{$filter.dimension_max_width}" size="4"> px</span>
    564         <span id="filter_dimension_min_height" {if !isset($filter.dimension_min_height)}style="display:none;"{/if}><input type="text" name="filter_dimension_min_height" value="{$filter.dimension_min_height}" size="4"> px</span>
    565         <span id="filter_dimension_max_height" {if !isset($filter.dimension_max_height)}style="display:none;"{/if}><input type="text" name="filter_dimension_max_height" value="{$filter.dimension_max_height}" size="4"> px</span>
    566         <span id="filter_dimension_format" {if !isset($filter.dimension_format)}style="display:none;"{/if}>
    567           <select name="filter_dimension_format">
    568             <option value="portrait" {if $filter.dimension_format=='portrait'}selected="selected"{/if}>{'Portrait'|@translate}</option>
    569             <option value="square" {if $filter.dimension_format=='square'}selected="selected"{/if}>{'square'|@translate}</option>
    570             <option value="landscape" {if $filter.dimension_format=='landscape'}selected="selected"{/if}>{'Landscape'|@translate}</option>
    571             <option value="panorama" {if $filter.dimension_format=='panorama'}selected="selected"{/if}>{'Panorama'|@translate}</option>
    572           </select>
    573         </span>
     560        {'Dimensions'|@translate} :
     561        <label>{'Minimum width'|@translate} <input type="text" name="filter_dimension_min_width" value="{$filter.dimension.min_width}" size="4"></label> —
     562        <label>{'Maximum width'|@translate} <input type="text" name="filter_dimension_max_width" value="{$filter.dimension.max_width}" size="4"></label> —
     563        <label>{'Minimum height'|@translate} <input type="text" name="filter_dimension_min_height" value="{$filter.dimension.min_height}" size="4"></label>     —
     564        <label>{'Maximum height'|@translate} <input type="text" name="filter_dimension_max_height" value="{$filter.dimension.max_height}" size="4"></label>
     565      </li>
     566     
     567      <li id="filter_ratio" {if !isset($filter.ratio)}style="display:none"{/if}>
     568        <a href="#" class="removeFilter" title="remove this filter"><span>[x]</span></a>
     569        <input type="checkbox" name="filter_ratio_use" class="useFilterCheckbox" {if isset($filter.ratio)}checked="checked"{/if}>
     570        {'Ratio'|@translate} :
     571        <label>{'Minimum'|@translate} <input type="text" name="filter_ratio_min" value="{$filter.ratio.min}" size="4"></label> —
     572        <label>{'Maximum'|@translate} <input type="text" name="filter_ratio_max" value="{$filter.ratio.max}" size="4"></label> —
     573        <a class="ratio-choice" data-min="" data-max="0.95">{'Portrait'|@translate}</a> |
     574        <a class="ratio-choice" data-min="0.95" data-max="1.05">{'square'|@translate}</a> |
     575        <a class="ratio-choice" data-min="1.05" data-max="2.5">{'Landscape'|@translate}</a> |
     576        <a class="ratio-choice" data-min="2.5" data-max="">{'Panorama'|@translate}</a>
    574577      </li>
    575578    </ul>
     
    584587        <option value="filter_level" {if isset($filter.level)}disabled="disabled"{/if}>{'Privacy level'|@translate}</option>
    585588        <option value="filter_dimension" {if isset($filter.dimension)}disabled="disabled"{/if}>{'Dimensions'|@translate}</option>
     589        <option value="filter_ratio" {if isset($filter.ratio)}disabled="disabled"{/if}>{'Ratio'|@translate}</option>
    586590      </select>
    587591      <a id="removeFilters" href="">{'Remove all filters'|@translate}</a>
  • trunk/language/en_UK/admin.lang.php

    r18165 r18758  
    430430$lang['Installed Themes'] = "Installed Themes";
    431431$lang['Instructions to use Piwigo'] = "Instructions to use Piwigo";
    432 $lang['Invalid dimension'] = 'Invalid dimension';
    433432$lang['Invert'] = 'Invert';
    434433$lang['IP'] = "IP";
     
    486485$lang['manual order'] = 'manual order';
    487486$lang['Manual order'] = 'Manual order';
     487$lang['Maximum'] = 'Maximum';
    488488$lang['Maximum file size: %sB.'] = 'Maximum file size: %sB.';
    489489$lang['Maximum height'] = 'Maximum height';
     
    496496$lang['Metadata synchronized from file'] = "Metadata synchronized from file";
    497497$lang['middle'] = 'middle';
     498$lang['Minimum'] = 'Minimum';
    498499$lang['Minimum width'] = 'Minimum width';
    499500$lang['Minimum height'] = 'Minimum height';
     
    657658$lang['Rate'] = "Rate";
    658659$lang['Rated %d times, score : %.2f'] = 'Rated %d times, score : %.2f';
     660$lang['Ratio'] = "Ratio";
    659661$lang['Rating by guests'] = "Rating by guests";
    660662$lang['Rating'] = "Rating";
Note: See TracChangeset for help on using the changeset viewer.