Changeset 10389


Ignore:
Timestamp:
04/15/11 17:40:23 (9 years ago)
Author:
patdenice
Message:

feature:2259
Add thumbnails regeneration in batch manager

Location:
trunk
Files:
8 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/admin/batch_manager_global.php

    r10380 r10389  
    3434 
    3535include_once(PHPWG_ROOT_PATH.'admin/include/functions.php'); 
     36include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php'); 
     37prepare_upload_configuration(); 
     38 
     39$upload_form_config = get_upload_form_config(); 
     40foreach ($upload_form_config as $param_shortname => $param) 
     41{ 
     42  $param_name = 'upload_form_'.$param_shortname; 
     43  $form_values[$param_shortname] = $conf[$param_name]; 
     44} 
    3645 
    3746// +-----------------------------------------------------------------------+ 
     
    395404  } 
    396405 
     406  if ('regenerateThumbnails' == $action) 
     407  { 
     408    if ($_POST['regenerateSuccess'] != '0') 
     409      array_push($page['infos'], sprintf(l10n('%s thumbnails have been regenerated'), $_POST['regenerateSuccess'])); 
     410 
     411    if ($_POST['regenerateError'] != '0') 
     412      array_push($page['warnings'], sprintf(l10n('%s thumbnails have been regenerated'), $_POST['regenerateError'])); 
     413 
     414    // Update configuration 
     415    $fields = array('thumb_maxwidth', 'thumb_maxheight', 'thumb_quality'); 
     416    $updates = array(); 
     417    foreach ($fields as $field) 
     418    { 
     419      $value = null; 
     420      if (!empty($_POST[$field])) 
     421      { 
     422        $value = $_POST[$field]; 
     423      } 
     424 
     425      if (preg_match($upload_form_config[$field]['pattern'], $value) 
     426        and $value >= $upload_form_config[$field]['min'] 
     427        and $value <= $upload_form_config[$field]['max']) 
     428      { 
     429        $conf['upload_form_'.$field] = $value; 
     430         $updates[] = array( 
     431          'param' => 'upload_form_'.$field, 
     432          'value' => $value 
     433          ); 
     434      } 
     435      else 
     436      { 
     437        $updates = null; 
     438        break; 
     439      } 
     440      $form_values[$field] = $value; 
     441    } 
     442    if (!empty($updates)) 
     443    { 
     444      mass_updates( 
     445        CONFIG_TABLE, 
     446        array( 
     447          'primary' => array('param'), 
     448          'update' => array('value') 
     449          ), 
     450        $updates 
     451        ); 
     452    } 
     453    function regenerateThumbnails_prefilter($content, $smarty) 
     454    { 
     455      return str_replace('{$thumbnail.TN_SRC}', '{$thumbnail.TN_SRC}?rand='.md5(uniqid(rand(), true)), $content); 
     456    } 
     457    $template->set_prefilter('batch_manager_global', 'regenerateThumbnails_prefilter'); 
     458    $template->delete_compiled_templates(); 
     459  } 
     460 
    397461  trigger_action('element_set_global_action', $action, $collection); 
    398462} 
     
    431495    'filter' => $_SESSION['bulk_manager_filter'], 
    432496    'selection' => $collection, 
     497    'all_elements' => $page['cat_elements_id'], 
     498    'upload_form_settings' => $form_values, 
    433499    'U_DISPLAY'=>$base_url.get_query_string_diff(array('display')), 
    434500    'F_ACTION'=>$base_url.get_query_string_diff(array('cat')), 
  • trunk/admin/themes/default/template/batch_manager_global.tpl

    r10380 r10389  
    77 
    88{combine_script id='jquery.fcbkcomplete' load='footer' require='jquery' path='themes/default/js/plugins/jquery.fcbkcomplete.js'} 
     9{combine_script id='jquery.progressBar' load='footer' path='plugins/regenerateThumbnails/js/jquery.progressbar.min.js'} 
     10{combine_script id='jquery.ajaxmanager' load='footer' path='themes/default/js/plugins/jquery.ajaxmanager.js'} 
    911 
    1012{footer_script require='jquery.fcbkcomplete'}{literal} 
     
    2729var nb_thumbs_set = {$nb_thumbs_set}; 
    2830var applyOnDetails_pattern = "{'on the %d selected photos'|@translate}"; 
     31var elements = new Array(); 
     32var all_elements = [{','|@implode:$all_elements}]; 
    2933 
    3034var selectedMessage_pattern = "{'%d of %d photos selected'|@translate}"; 
    3135var selectedMessage_none = "{'No photo selected, %d photos in current set'|@translate}"; 
    3236var selectedMessage_all = "{'All %d photos are selected'|@translate}"; 
     37var regenerateThumbnailsMessage = "{'Thumbnails generation in progress...'|@translate}"; 
    3338{literal} 
     39var queuedManagerThumbnails = $.manageAjax.create('queued', {  
     40        queue: true,   
     41        cacheResponse: false, 
     42        maxRequests: 3 
     43}); 
     44 
    3445function str_repeat(i, m) { 
    3546        for (var o = []; m > 0; o[--m] = i); 
     
    7990} 
    8091 
     92function progress(val, max, success) { 
     93  jQuery('#progressBar').progressBar(val, { 
     94    max: max, 
     95    textFormat: 'fraction', 
     96    boxImage: 'themes/default/images/progressbar.gif', 
     97    barImage: 'themes/default/images/progressbg_orange.gif' 
     98  }); 
     99  type = success ? 'regenerateSuccess': 'regenerateError' 
     100  s = jQuery('[name="'+type+'"]').val(); 
     101  jQuery('[name="'+type+'"]').val(++s); 
     102 
     103  if (val == max) 
     104    jQuery('#applyAction').click(); 
     105} 
     106 
    81107$(document).ready(function() { 
    82108  function checkPermitAction() { 
     
    299325    }); 
    300326    return false; 
     327  }); 
     328 
     329  jQuery('#applyAction').click(function() { 
     330    if (jQuery('[name="selectAction"]').val() == 'regenerateThumbnails') { 
     331      if (elements.length != 0) 
     332        return true; 
     333 
     334      if (jQuery('input[name="setSelected"]').attr('checked')) 
     335        elements = all_elements; 
     336      else 
     337        jQuery('input[name="selection[]"]').each(function() { 
     338          if (jQuery(this).attr('checked')) { 
     339            elements.push(jQuery(this).val()); 
     340          } 
     341        }); 
     342 
     343      maxwidth = jQuery('input[name="thumb_maxwidth"]').val(); 
     344      maxheight = jQuery('input[name="thumb_maxheight"]').val(); 
     345      progressBar_max = elements.length; 
     346      todo = 0; 
     347 
     348      jQuery('#thumb_config').hide(); 
     349      jQuery('#applyActionBlock').hide(); 
     350      jQuery('select[name="selectAction"]').hide(); 
     351      jQuery('#regenerationMsg').show(); 
     352      jQuery('#regenerationText').html(regenerateThumbnailsMessage); 
     353      jQuery('#progressBar').progressBar(0, { 
     354        max: progressBar_max, 
     355        textFormat: 'fraction', 
     356        boxImage: 'themes/default/images/progressbar.gif', 
     357        barImage: 'themes/default/images/progressbg_orange.gif' 
     358      }); 
     359 
     360      for (i=0;i<elements.length;i++) { 
     361        queuedManagerThumbnails.add({ 
     362          type: 'GET',  
     363          url: 'ws.php',  
     364          data: { 
     365            method: 'pwg.images.resize', 
     366            type: 'thumbnail', 
     367            maxwidth: maxwidth, 
     368            maxheight: maxheight, 
     369            image_id: elements[i], 
     370            format: 'json' 
     371          }, 
     372          dataType: 'json', 
     373          success: ( function(data) { progress(++todo, progressBar_max, data['result']) }), 
     374          error: ( function(data) { progress(++todo, progressBar_max, false) }) 
     375        }); 
     376      } 
     377      return false; 
     378    } 
    301379  }); 
    302380 
     
    474552      <option value="add_to_caddie">{'add to caddie'|@translate}</option> 
    475553  {/if} 
     554      <option value="regenerateThumbnails">{'Regenerate Thumbnails'|@translate}</option> 
    476555  {if !empty($element_set_global_plugins_actions)} 
    477556    {foreach from=$element_set_global_plugins_actions item=action} 
     
    560639    </div> 
    561640 
     641    <!-- regenerate thumbnails --> 
     642    <div id="action_regenerateThumbnails" class="bulkAction"> 
     643      <table style="margin-left:20px;" id="thumb_config"> 
     644        <tr> 
     645          <th>{'Maximum Width'|@translate}</th> 
     646          <td><input type="text" name="thumb_maxwidth" value="{$upload_form_settings.thumb_maxwidth}" size="4" maxlength="4"> {'pixels'|@translate}</td> 
     647        </tr> 
     648        <tr> 
     649          <th>{'Maximum Height'|@translate}</th> 
     650          <td><input type="text" name="thumb_maxheight" value="{$upload_form_settings.thumb_maxheight}" size="4" maxlength="4"> {'pixels'|@translate}</td> 
     651        </tr> 
     652        <tr> 
     653          <th>{'Image Quality'|@translate}</th> 
     654          <td><input type="text" name="thumb_quality" value="{$upload_form_settings.thumb_quality}" size="3" maxlength="3"> %</td> 
     655        </tr> 
     656      </table> 
     657    </div> 
     658 
     659    <!-- progress bar --> 
     660    <div id="regenerationMsg" style="display:none;"> 
     661      <p id="regenerationText" style="margin-bottom:10px;"></p> 
     662      <span class="progressBar" id="progressBar"></span> 
     663      <input type="hidden" name="regenerateSuccess" value="0"> 
     664      <input type="hidden" name="regenerateError" value="0"> 
     665    </div> 
     666 
    562667    <!-- plugins --> 
    563668{if !empty($element_set_global_plugins_actions)} 
Note: See TracChangeset for help on using the changeset viewer.