Changeset 10441


Ignore:
Timestamp:
04/17/11 11:17:41 (8 years ago)
Author:
patdenice
Message:

Compatible with piwigo 2.2

Location:
extensions/Ajax_Thumbnailer
Files:
2 added
1 deleted
2 edited
1 copied

Legend:

Unmodified
Added
Removed
  • extensions/Ajax_Thumbnailer

    • Property svn:ignore set to
      img
  • extensions/Ajax_Thumbnailer/ajaxThumbnailer.tpl

    r10438 r10441  
    1 <script type="text/javascript"> 
    2         var path="{$plugin.path}"; 
    3 </script> 
    4 <script type="text/javascript" src="{$plugin.path}/admin/js/jquery.ajaxmanager.js"></script> 
    5 <script type="text/javascript" src="{$plugin.path}/admin/js/thumbnailer.js"></script> 
     1{combine_script id='jquery.ajaxmanager' load='footer' path='themes/default/js/plugins/jquery.ajaxmanager.js'} 
     2 
     3{footer_script}{literal} 
     4var queuedManager = $.manageAjax.create('queued', {  
     5        queue: true,   
     6        cacheResponse: false, 
     7        maxRequests: 3 
     8});  
     9 
     10function processThumbs(width,height,gd_version) { 
     11  var square=$('input[name="square"]').attr('checked'); 
     12  var done=0; 
     13        $('tr.nothumb').each(function() { 
     14                var file=$(this).find('td.filepath').text(); 
     15                $(this).find('td.thumbpic').html('<img src="plugins/Ajax_Thumbnailer/ajax-loader.gif">'); 
     16                var td=this; 
     17                queuedManager.add({ 
     18                        type: 'GET',  
     19                        url: 'ws.php',  
     20                        data: {method: 'pwg.images.createThumbnail',picture:file,format:'json',width: width,height: height, gd_version: gd_version, square: square}, 
     21                        dataType: 'json', 
     22                        success: (function(row) { return function(data) { 
     23                                        if (data.stat =='ok') { 
     24                                                        $(row).find('td.thumbpic').html('<img src="'+data.result.tn_file+'"/>'); 
     25                                                        $(row).find('td.thumbdim').html(""+data.result.tn_width+"X"+data.result.tn_height); 
     26                                                        $(row).find('td.thumbgentime').html(""+data.result.tn_time); 
     27                                                        $(row).find('td.thumbsize').html(""+data.result.tn_size); 
     28                                                        $(row).removeClass("nothumb"); 
     29                                                } else { 
     30                                                        $(row).find('td.thumbpic').html('#ERR#'+data.err+"# : "+data.message); 
     31                                                        $(row).removeClass("nothumb"); 
     32                                                        $(row).addClass("error"); 
     33                                                } 
     34          if (done++ == 20) { 
     35              $('tr.item:not(.nothumb)').remove(); 
     36              done = 0; 
     37            } 
     38                                        };})(td) 
     39                        }); 
     40        }); 
     41} 
     42 
     43$(document).ready(function(){ 
     44  $('input#proceed').click (function () { 
     45    var width = $('#width')[0].value; 
     46    var height = $('#height')[0].value; 
     47    var gd_version=$("input[@name='gd']:checked").val(); 
     48    $("input:not(.nodisable)").attr("disabled",true); 
     49 
     50     
     51    processThumbs(width,height,gd_version); 
     52  }); 
     53 
     54  $('input#cancel').click (function () { 
     55    queuedManager.clear(); 
     56    queuedManager.abort(); 
     57    $("input:not(.nodisable)").attr("disabled",false); 
     58    $('tr.nothumb td.thumbpic').html("&nbsp;"); 
     59     
     60  }); 
     61 
     62  $('input#clear').click (function () { 
     63    $('tr.item:not(.nothumb)').remove(); 
     64  }); 
     65}); 
     66{/literal}{/footer_script} 
    667 
    768<div class="titrePage"> 
    8   <h2>{'title_thumbnails'|@translate}</h2> 
     69  <h2>{'Thumbnail creation'|@translate}</h2> 
    970</div> 
    10  
    1171 
    1272{if isset($params) } 
     
    1474 
    1575  <fieldset> 
    16     <legend>{'tn_params_title'|@translate}</legend> 
     76    <legend>{'Thumbnail creation'|@translate}</legend> 
    1777 
    1878    <ul> 
    1979      <li> 
    20         <span class="property">{'tn_params_GD'|@translate}</span> 
     80        <span class="property">{'GD version'|@translate}</span> 
    2181        <label> 
    2282          <input type="radio" name="gd" value="2" {if $params.GD_SELECTED==2}checked="checked"{/if}>2.x 
     
    51111{/if} {*isset params*} 
    52112 
    53 {if !empty($wo_thumbnails) } 
    54 <div class="admin">{$TOTAL_NB_REMAINING} {'tn_alone_title'|@translate}</div> 
     113{if !empty($remainings) } 
     114<div class="admin">{$TOTAL_NB_REMAINING} {'Number of thumbnails to create'|@translate}</div> 
    55115<table style="width:100%;"> 
    56116  <tr class="throw"> 
    57117    <td>&nbsp;</td> 
    58118    <td style="width:60%;">{'Path'|@translate}</td> 
    59     <td>{'filesize'|@translate}</td> 
     119    <td>{'Filesize'|@translate}</td> 
    60120    <td>{'Dimensions'|@translate}</td> 
    61     <td>{'thumbnail'|@translate}</td> 
    62     <td>{'tn_results_gen_time'|@translate}</td> 
    63     <td>{'filesize'|@translate}</td> 
     121    <td>{'Thumbnail'|@translate}</td> 
     122    <td>{'generated in'|@translate}</td> 
     123    <td>{'Filesize'|@translate}</td> 
    64124    <td>{'Dimensions'|@translate}</td> 
    65125  </tr> 
    66   {foreach from=$wo_thumbnails item=elt name=remain_loop} 
     126  {foreach from=$remainings item=elt name=remain_loop} 
    67127  <tr class="{if $smarty.foreach.remain_loop.index is odd}row1{else}row2{/if} nothumb item" id="th_{$smarty.foreach.remain_loop.iteration}"> 
    68128    <td>{$smarty.foreach.remain_loop.iteration}</td> 
     
    78138</table> 
    79139{else} 
    80 <div style="text-align:center;font-weight:bold;margin:10px;"> [ {'tn_no_missing'|@translate} ]</div> 
     140<div style="text-align:center;font-weight:bold;margin:10px;"> [ {'No missing thumbnail'|@translate} ]</div> 
    81141{/if} 
  • extensions/Ajax_Thumbnailer/main.inc.php

    r4549 r10441  
    99*/ 
    1010 
    11 ini_set('error_reporting', E_ALL); 
    12 ini_set('display_errors', true); 
    13  
    1411if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); 
    1512 
    16 class AjaxThumbnailer 
     13add_event_handler('ws_add_methods', 'add_thumbnail_create_method'); 
     14 
     15function add_thumbnail_create_method($arr) 
    1716{ 
    18         /* This function is almost the same as the ont in admin/thumbnail.php , tuned 
    19                 for web-service purposes */ 
    20         function RatioResizeImg($path, $newWidth, $newHeight, $tn_ext,$gd_version=2) { 
    21                 global $conf, $lang, $page; 
    22                  
    23                 $starttime = get_moment(); 
     17  include_once('ws_functions.inc.php'); 
     18} 
    2419 
    25                 if (!function_exists('gd_info')) 
    26                         return new PwgError(WS_ERR_INVALID_PARAM,  'no gd'); 
     20add_event_handler('loc_begin_admin', 'ajaxThumbnailer_admin_modify'); 
    2721 
    28                 if (!file_exists($path)) 
    29                         return new PwgError(WS_ERR_INVALID_PARAM,  'file not found'); 
     22function ajaxThumbnailer_admin_modify() 
     23{ 
     24  global $page, $template; 
    3025 
    31                 $filename = basename($path); 
    32                 $dirname = dirname($path); 
     26  if (isset($_GET['page']) and $_GET['page'] == 'thumbnail') 
     27  { 
     28    load_language('plugin.lang', dirname(__FILE__).'/'); 
     29    $template->set_extent(dirname(__FILE__).'/AjaxThumbnailer.tpl', 'thumbnail'); 
     30  } 
     31} 
    3332 
    34                 // extension of the picture filename 
    35                 $extension = get_extension($filename); 
    36  
    37                 if (in_array($extension, array('jpg', 'JPG', 'jpeg', 'JPEG'))) { 
    38                         $srcImage = @imagecreatefromjpeg($path); 
    39                 } 
    40                 elseif ($extension == 'png' or $extension == 'PNG') { 
    41                         $srcImage = @imagecreatefrompng($path); 
    42                 } else { 
    43                         unset($extension); 
    44                 } 
    45  
    46                 if ( isset( $srcImage ) ) { 
    47                         // width/height 
    48                         $srcWidth    = imagesx( $srcImage );  
    49                         $srcHeight   = imagesy( $srcImage );  
    50                         $ratioWidth  = $srcWidth/$newWidth; 
    51                         $ratioHeight = $srcHeight/$newHeight; 
    52  
    53                         // maximal size exceeded ? 
    54                         if ( ( $ratioWidth > 1 ) or ( $ratioHeight > 1 ) ) { 
    55                                 if ( $ratioWidth < $ratioHeight) {  
    56                                         $destWidth = $srcWidth/$ratioHeight; 
    57                                         $destHeight = $newHeight;  
    58                                 } else {  
    59                                         $destWidth = $newWidth;  
    60                                         $destHeight = $srcHeight/$ratioWidth; 
    61                                 } 
    62                         } else { 
    63                                 $destWidth = $srcWidth; 
    64                                 $destHeight = $srcHeight; 
    65                         } 
    66                         // according to the GD version installed on the server 
    67                         if ( $gd_version == 2 ) { 
    68                                 // GD 2.0 or more recent -> good results (but slower) 
    69                                 $destImage = imagecreatetruecolor( $destWidth, $destHeight);  
    70                                 imagecopyresampled( $destImage, $srcImage, 0, 0, 0, 0, 
    71                                         $destWidth,$destHeight,$srcWidth,$srcHeight ); 
    72                         } else { 
    73                                 // GD prior to version  2 -> pretty bad results :-/ (but fast) 
    74                                 $destImage = imagecreate( $destWidth, $destHeight); 
    75                                 imagecopyresized( $destImage, $srcImage, 0, 0, 0, 0, 
    76                                         $destWidth,$destHeight,$srcWidth,$srcHeight ); 
    77                         } 
    78  
    79                         if (($tndir = mkget_thumbnail_dir($dirname)) == false) { 
    80                                 return new PwgError(WS_ERR_INVALID_PARAM,  '['.$tndir.'] : '.l10n('no_write_access')); 
    81                         } 
    82  
    83                         $dest_file = $tndir.'/'.$conf['prefix_thumbnail']; 
    84                         $dest_file.= get_filename_wo_extension($filename); 
    85                         $dest_file.= '.'.$tn_ext; 
    86  
    87                         // creation and backup of final picture 
    88                         if (!is_writable($tndir)) 
    89                                 return new PwgError(WS_ERR_INVALID_PARAM,  '['.$tndir.'] : '.l10n('no_write_access')); 
    90                                  
    91                         imagejpeg($destImage, $dest_file, $conf['tn_compression_level']); 
    92                         // freeing memory ressources 
    93                         imagedestroy( $srcImage ); 
    94                         imagedestroy( $destImage ); 
    95  
    96                         list($tn_width, $tn_height) = getimagesize($dest_file); 
    97                         $tn_size = floor(filesize($dest_file) / 1024).' KB'; 
    98  
    99                         $endtime = get_moment(); 
    100                          
    101                         $info = array( 'path'      => $path, 
    102                         'tn_file'   => $dest_file, 
    103                         'tn_width'  => $tn_width, 
    104                         'tn_height' => $tn_height, 
    105                         'tn_size'   => $tn_size, 
    106                         'tn_time'       => number_format(($endtime - $starttime) * 1000, 2, '.', ' ').' ms'); 
    107                         return $info; 
    108                 } else { 
    109                         // error 
    110                         $err=l10n('tn_no_support'); 
    111                         if ( isset( $extension ) ) 
    112                                 $err .= l10n('tn_format').' '.$extension; 
    113                         else 
    114                                 $err .= l10n('tn_thisformat'); 
    115                         return new PwgError(WS_ERR_INVALID_PARAM, $err); 
    116                 } 
    117         } 
    118  
    119         function plugin_admin_menu($menu) { 
    120         array_push($menu, 
    121             array( 
    122                 'NAME' => 'Ajax Thumbnailer', 
    123                 'URL' => get_admin_plugin_menu_link(dirname(__FILE__).'/admin/thumbnailer_admin.php') 
    124             ) 
    125         ); 
    126         return $menu; 
    127     } 
    128  
    129         function ws_methods($arr) { 
    130                 $service = &$arr[0]; 
    131                 $service->addMethod('pwg.thumbnail.create', array($this,'create_thumb'), 
    132                   array( 
    133                         'picture'=>array(), 
    134                         'width'=>array('default'=>"128"), 
    135                         'height'=>array('default'=>"128"), 
    136                         'ext'=>array('default'=>"jpg") 
    137                   ), 
    138                   'Creates a thumbnail for a given image, 
    139                 <br><b>picture</b> is the name of the picture to create thumbnail from.' 
    140                 ); 
    141                  
    142         } 
    143          
    144         function create_thumb($params, $service) { 
    145                 $picture = $params['picture']; 
    146                 $width = (integer)$params['width']; 
    147                 $height = (integer)$params['height']; 
    148                 $gd_version = (integer)$params['gd_version'];            
    149                 $ext =$params['ext']; 
    150                 return $this->RatioResizeImg($picture,$width,$height,$ext,$gd_version); 
    151         } 
    152          
    153 } 
    154 $obj = new AjaxThumbnailer(); 
    155  
    156 add_event_handler('ws_add_methods', array(&$obj, 'ws_methods')); 
    157 add_event_handler('get_admin_plugin_menu_links', array(&$obj, 'plugin_admin_menu') ); 
    158 set_plugin_data($plugin['id'], $obj); 
     33//add_event_handler('get_admin_plugin_menu_links', 'ajaxThumbnailer_admin_menu'); 
    15934 
    16035?> 
Note: See TracChangeset for help on using the changeset viewer.