Changeset 5226


Ignore:
Timestamp:
03/21/10 19:20:07 (10 years ago)
Author:
grum
Message:

Fix some bug, enhance some functionnalities, and make plugin ready to be translated

Location:
extensions/AMetaData
Files:
4 added
7 edited

Legend:

Unmodified
Added
Removed
  • extensions/AMetaData/admin/amd_metadata_select.tpl

    r5088 r5226  
    156156    { 
    157157      $("#iHLTOrderTag").html("↑"); 
     158      $("#iHLTOrderLabel").html(""); 
    158159      $("#iHLTOrderNum").html(""); 
    159160    } 
     161    else if($("#iSelectOrderTagList").val()=="num") 
     162    { 
     163      $("#iHLTOrderTag").html(""); 
     164      $("#iHLTOrderLabel").html(""); 
     165      $("#iHLTOrderNum").html("↑"); 
     166    } 
    160167    else 
    161168    { 
     169      // by label 
    162170      $("#iHLTOrderTag").html(""); 
    163       $("#iHLTOrderNum").html("↑"); 
     171      $("#iHLTOrderLabel").html("↑"); 
     172      $("#iHLTOrderNum").html(""); 
    164173    } 
    165174  } 
     
    194203      <option value="magic" {if $datas.config_GetListTags_FilterType=="magic"}selected{/if}>{'g003_magic_filter'|@translate}</option> 
    195204      <option value="exif" {if $datas.config_GetListTags_FilterType=="exif"}selected{/if}>Exif</option> 
     205      <option value="exif.Canon" {if $datas.config_GetListTags_FilterType=="exif.Canon"}selected{/if}>Exif [Canon]</option> 
     206      <option value="exif.Nikon" {if $datas.config_GetListTags_FilterType=="exif.Nikon"}selected{/if}>Exif [Nikon]</option> 
     207      <option value="exif.Pentax" {if $datas.config_GetListTags_FilterType=="exif.Pentax"}selected{/if}>Exif [Pentax]</option> 
    196208      <option value="xmp" {if $datas.config_GetListTags_FilterType=="xmp"}selected{/if}>Xmp</option> 
    197209      <option value="iptc" {if $datas.config_GetListTags_FilterType=="iptc"}selected{/if}>Iptc</option> 
     
    212224  <tr> 
    213225    <th style="width:35%;min-width:340px;"><span id="iHLTOrderTag"></span><a onclick="sortTagList('tag');">{'g003_TagId'|@translate}</a></th> 
    214     <th>{'g003_TagLabel'|@translate}</th> 
     226    <th><span id="iHLTOrderLabel"></span><a onclick="sortTagList('label');">{'g003_TagLabel'|@translate}</a></th> 
    215227    <th width="80px"><span id="iHLTOrderNum"></span><a onclick="sortTagList('num');">{'g003_NumOfImage'|@translate}</a></th> 
    216228    <th width="40px">{'g003_Pct'|@translate}</th> 
  • extensions/AMetaData/amd_aip.class.inc.php

    r5191 r5226  
    307307      if($_REQUEST['ajaxfct']=="showStatsGetListTags" and 
    308308         !($_REQUEST['orderType']=="tag" or 
     309           $_REQUEST['orderType']=="label" or 
    309310           $_REQUEST['orderType']=="num")) 
    310311      { 
     
    321322           $_REQUEST['filterType']=="magic" or 
    322323           $_REQUEST['filterType']=="exif" or 
     324           $_REQUEST['filterType']=="exif.Canon" or 
     325           $_REQUEST['filterType']=="exif.Nikon" or 
     326           $_REQUEST['filterType']=="exif.Pentax" or 
    323327           $_REQUEST['filterType']=="xmp" or 
    324328           $_REQUEST['filterType']=="iptc")) 
     
    776780 
    777781 
     782 
     783 
    778784  /* 
    779785   * --------------------------------------------------------------------------- 
     
    989995 
    990996    $datas=array(); 
    991     $sql="SELECT ut.numId, ut.tagId, ut.translatable, ut.name, ut.numOfImg, if(st.tagId IS NULL, 'n', 'y') as checked 
     997    $sql="SELECT ut.numId, ut.tagId, ut.translatable, ut.name, ut.numOfImg, if(st.tagId IS NULL, 'n', 'y') as checked, ut.translatedName 
    992998            FROM ".$this->tables['used_tags']." ut 
    993999              LEFT JOIN ".$this->tables['selected_tags']." st 
     
    9971003    if($filterType!='') 
    9981004    { 
    999       $where.=" WHERE ut.tagId LIKE '".$filterType.".%' "; 
     1005      if($filterType=='exif') 
     1006      { 
     1007        $where.=" WHERE ut.tagId LIKE 'exif.tiff.%' 
     1008                    OR ut.tagId LIKE 'exif.exif.%' 
     1009                    OR ut.tagId LIKE 'exif.gps.%'  "; 
     1010      } 
     1011      else 
     1012      { 
     1013        $where.=" WHERE ut.tagId LIKE '".$filterType.".%' "; 
     1014      } 
    10001015    } 
    10011016 
     
    10211036      case 'num': 
    10221037        $sql.=" ORDER BY numOfImg DESC, tagId ASC"; 
     1038        break; 
     1039      case 'label': 
     1040        $sql.=" ORDER BY translatedName ASC, tagId ASC"; 
    10231041        break; 
    10241042    } 
     
    10861104      { 
    10871105        $datas[]=array( 
    1088           "value" => ($row['translatable']=='y')?L10n::get($row['value']):$row['value'], 
     1106          "value" => $this->prepareValueForDisplay($row['value'], ($row['translatable']=='y'), ", "), 
    10891107          "nb"    => $row['Nb'], 
    10901108          "pct"   => ($row['numOfImg']!=0)?sprintf("%.2f", 100*$row['Nb']/$row['numOfImg']):"-" 
  • extensions/AMetaData/amd_install.class.inc.php

    r5191 r5226  
    5454  `name` varchar(200) NOT NULL default '', 
    5555  `numOfImg` int(10) unsigned NOT NULL default '0', 
     56  `translatedName` varchar(200) NOT NULL default '', 
    5657  PRIMARY KEY  (`numId`), 
    5758  KEY `by_tag` (`tagId`) 
     
    6061  `imageId` mediumint(8) unsigned NOT NULL default '0', 
    6162  `numId` int(10) unsigned NOT NULL default '0', 
    62   `value` varchar(255) default NULL, 
     63  `value` text default NULL, 
    6364  PRIMARY KEY  USING BTREE (`imageId`,`numId`) 
    6465);", 
     
    127128    { 
    128129      global $template, $user; 
    129  
     130      L10n::setLanguage('en_UK'); 
    130131 
    131132      pwg_query("DELETE FROM ".$this->tables['used_tags']); 
     
    141142      foreach(JpegMetaData::getTagList(Array('filter' => JpegMetaData::TAGFILTER_IMPLEMENTED, 'xmp' => true, 'maker' => true, 'iptc' => true)) as $key => $val) 
    142143      { 
    143         $sql="INSERT INTO ".$this->tables['used_tags']." VALUES('', '".$key."', '".(($val['translatable'])?'y':'n')."', '".$val['name']."', 0);"; 
     144        $sql="INSERT INTO ".$this->tables['used_tags']." VALUES('', '".$key."', '".(($val['translatable'])?'y':'n')."', '".$val['name']."', 0, '".L10n::get($val['name'])."');"; 
    144145        pwg_query($sql); 
    145146      } 
  • extensions/AMetaData/amd_pip.class.inc.php

    r5183 r5226  
    125125        $value=$picturesTags[$key]->getLabel(); 
    126126 
    127         if($picturesTags[$key]->isTranslatable()) 
    128           $translatable="y"; 
    129         else 
    130           $translatable="n"; 
    131  
    132127        if($value instanceof DateTime) 
    133128        { 
     
    155150          ); 
    156151        } 
    157         $md['lines'][L10n::get($picturesTags[$key]->getName())]=$value; 
     152        $md['lines'][L10n::get($picturesTags[$key]->getName())]=$this->prepareValueForDisplay($value, $picturesTags[$key]->isTranslatable()); 
    158153      } 
    159154    } 
  • extensions/AMetaData/amd_root.class.inc.php

    r5183 r5226  
    2626include_once('JpegMetaData/JpegMetaData.class.php'); 
    2727include_once(JPEG_METADATA_DIR."Common/L10n.class.php"); 
     28include_once(JPEG_METADATA_DIR."TagDefinitions/XmpTags.class.php"); 
    2829 
    2930class AMD_root extends common_plugin 
     
    3435  public function __construct($prefixeTable, $filelocation) 
    3536  { 
     37    global $user; 
    3638    $this->plugin_name="AMetaData"; 
    3739    $this->plugin_name_files="amd"; 
     
    4345    $this->css = new css(dirname($this->filelocation).'/'.$this->plugin_name_files.".css"); 
    4446    $this->jpegMD=new JpegMetaData(); 
     47 
     48    if(isset($user['language'])) 
     49    { 
     50      L10n::setLanguage($user['language']); 
     51    } 
    4552  } 
    4653 
     
    271278 
    272279 
     280  /** 
     281   * This function : 
     282   *  - convert arrays (stored as a serialized string) into human readable string 
     283   *  - translate value in user language (if value is translatable) 
     284   * 
     285   * @param String $value         : value to prepare 
     286   * @param Boolean $translatable : set to tru if the value can be translated in 
     287   *                                the user language 
     288   * @param String $separator     : separator for arrays items 
     289   * @return String               : the value prepared 
     290   */ 
     291  protected function prepareValueForDisplay($value, $translatable=true, $separator=", ") 
     292  { 
     293    global $user; 
     294 
     295    if(preg_match('/^a:\d+:\{.*\}$/is', $value)) 
     296    { 
     297      // $value is a serialized array 
     298      $tmp=unserialize($value); 
     299 
     300      if(count($tmp)==0) 
     301      { 
     302        return(L10n::get("Unknown")); 
     303      } 
     304 
     305      if(array_key_exists("computed", $tmp) and array_key_exists("detail", $tmp)) 
     306      { 
     307        /* keys 'computed' and 'detail' are present 
     308         * 
     309         * assume this is the 'exif.exif.Flash' metadata and return the computed 
     310         * value only 
     311         */ 
     312        return(L10n::get($tmp['computed'])); 
     313      } 
     314      elseif(array_key_exists("type", $tmp) and array_key_exists("values", $tmp)) 
     315      { 
     316        /* keys 'computed' and 'detail' are present 
     317         * 
     318         * assume this is an Xmp 'ALT', 'BAG' or 'SEQ' metadata and return the 
     319         * values only 
     320         */ 
     321        if($tmp['type']=='alt') 
     322        { 
     323          /* 'ALT' structure 
     324           * 
     325           * ==> assuming the structure is used only for multi language values 
     326           * 
     327           * Array( 
     328           *    'type'   => 'ALT' 
     329           *    'values' => 
     330           *        Array( 
     331           *            Array( 
     332           *                'type'  => Array( 
     333           *                            'name'  =>'xml:lang', 
     334           *                            'value' => ''           // language code 
     335           *                           ) 
     336           *               'value' => ''         //value in the defined language 
     337           *            ), 
     338           * 
     339           *            Array( 
     340           *                // data2 
     341           *            ), 
     342           * 
     343           *        ) 
     344           * ) 
     345           */ 
     346          $tmp=XmpTags::getAltValue($tmp, $user['language']); 
     347          if(trim($tmp)=="") $tmp="(".L10n::get("not defined").")"; 
     348 
     349          return($tmp); 
     350        } 
     351        else 
     352        { 
     353          /* 'SEQ' or 'BAG' structure 
     354           * 
     355           *  Array( 
     356           *    'type'   => 'XXX', 
     357           *    'values' => Array(val1, val2, .., valN) 
     358           *  ) 
     359           */ 
     360          $tmp=$tmp['values']; 
     361 
     362          if(trim(implode("", $tmp))=="") 
     363          { 
     364            return("(".L10n::get("not defined").")"); 
     365          } 
     366        } 
     367      } 
     368 
     369 
     370      foreach($tmp as $key=>$val) 
     371      { 
     372        if(is_array($val)) 
     373        { 
     374          if($translatable) 
     375          { 
     376            foreach($val as $key2=>$val2) 
     377            { 
     378              $tmp[$key][$key2]=L10n::get($val2); 
     379            } 
     380            if(count($val)>0) 
     381            { 
     382              $tmp[$key]="[".implode($separator, $val)."]"; 
     383            } 
     384            else 
     385            { 
     386              unset($tmp[$key]); 
     387            } 
     388          } 
     389        } 
     390        else 
     391        { 
     392          if($translatable) 
     393          { 
     394            $tmp[$key]=L10n::get($val); 
     395          } 
     396        } 
     397      } 
     398      return(implode($separator, $tmp)); 
     399    } 
     400    else 
     401    { 
     402      if(trim($value)=="") 
     403      { 
     404        return("(".L10n::get("not defined").")"); 
     405      } 
     406 
     407      if(strpos($value, "|")>0) 
     408      { 
     409        $value=explode("|", $value); 
     410        if($translatable) 
     411        { 
     412          foreach($value as $key=>$val) 
     413          { 
     414            $value[$key]=L10n::get($val); 
     415          } 
     416        } 
     417        return(implode("", $value)); 
     418      } 
     419 
     420      if($translatable) 
     421      { 
     422        return(L10n::get($value)); 
     423      } 
     424      return($value); 
     425    } 
     426  } 
     427 
    273428} // amd_root  class 
    274429 
  • extensions/AMetaData/language/fr_FR/description.txt

    r4905 r5226  
    1 Advanced MetaData est un plugin permettant d'exploiter au maximum les métadonnées présentes dans les photos. 
     1Advanced MetaData est un plugin permettant d'exploiter au maximum les métadonnées (EXIF, IPTC et XMP) présentes dans les photos. 
  • extensions/AMetaData/language/fr_FR/plugin.lang.php

    r5191 r5226  
    88$lang['g003_error_invalid_ajax_call'] = "Appel de fonction invalide !"; 
    99 
    10 $lang['g003_stat'] = "Statistiques"; 
    1110$lang['g003_metadata'] = "Métadonnées"; 
    1211$lang['g003_database'] = "Référentiel"; 
    1312$lang['g003_status'] = "Status"; 
    1413$lang['g003_show'] = "Consulter"; 
    15  
    16 $lang['g003_performances'] = "Performances"; 
    17 $lang['g003_setting_nb_items_per_request'] = "Nombre d'images analysées par requêtes"; 
    18 $lang['g003_apply'] = "Appliquer"; 
    1914 
    2015$lang['g003_numberOfAnalyzedPictures'] = "%d images ont fait l'objet d'une analyse et représentent %d métadonnées"; 
Note: See TracChangeset for help on using the changeset viewer.