Changeset 6950


Ignore:
Timestamp:
Sep 16, 2010, 8:55:20 PM (10 years ago)
Author:
grum
Message:

Implement metadata keywords to piwigo tags convert functionnalies
Add some help text
bug:1858

Location:
extensions/AMetaData
Files:
2 added
16 edited

Legend:

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

    r6731 r6950  
    296296
    297297        {if $amdConfig.amd_DisplayWarningsMessageUpdate=='y'}
    298           <div style="padding-left: 60px;" class="warnings">
     298          <div class="warnings">
    299299            <p style="font-size: 120%;">{'g003_warning_on_analyze_0'|@translate}</p>
    300300            <p>{'g003_warning_on_analyze_1'|@translate}</p>
  • extensions/AMetaData/admin/amd_metadata_database_status.tpl

    r6731 r6950  
    22
    33{if $amdConfig.amd_DisplayWarningsMessageStatus=='y'}
    4 <div style="padding-left: 60px;" class="warnings">
     4<div class="warnings">
    55<p style="font-size: 120%;">{'g003_databaseInformation'|@translate}</p>
    66{$datas.warning1}
  • extensions/AMetaData/admin/amd_metadata_display.tpl

    r6919 r6950  
    351351<h2>{'g003_display_management'|@translate}</h2>
    352352
     353<div class='helps'>
     354  <p>{'g003_display_page_help'|@translate}</p>
     355</div>
     356
    353357<div class="addGroup">
    354358  <a onclick="editGroup('');">{'g003_add_a_group'|@translate}</a>
  • extensions/AMetaData/admin/amd_metadata_display_groupListTagOrder.tpl

    r5935 r6950  
    66      <td style="width:30%;">{$data.tagId}</td>
    77      <td>{$data.name}</td>
    8       <td style="width:35px;text-align:right;">{$data.nbItems}</td>
    9       <td style="width:50px;text-align:right;">{$data.pct}%</td>
    10       <td style="width:104px;"><span class="pctBar{$themeconf.name}" style="display:inline-block;width:{$data.pct}px;"></td>
     8      {if $data.pct!=''}
     9        <td style="width:35px;text-align:right;">{$data.nbItems}</td>
     10        <td style="width:50px;text-align:right;">{$data.pct}%</td>
     11        <td style="width:104px;"><span class="pctBar{$themeconf.name}" style="display:inline-block;width:{$data.pct}px;"></td>
     12      {/if}
    1113    </tr>
    1214  </table>
  • extensions/AMetaData/admin/amd_metadata_personnal.tpl

    r6891 r6950  
    604604<h2>{'g003_personnal_metadata'|@translate}</h2>
    605605
     606<div class='helps'>
     607  <p>{'g003_personnal_page_help'|@translate}</p>
     608</div>
     609
    606610<div class='addMetadata'>
    607611  <a onclick="udm.editMetadata('');">{'g003_add_a_new_md'|@translate}</a>
     
    612616    <th style="width:35%;min-width:340px;">{'g003_TagId'|@translate}</th>
    613617    <th>{'g003_TagLabel'|@translate}</th>
    614     <th style="width:15%;">{'g003_fill_database'|@translate}</th>
    615618    <th style="width:15%;">{'g003_num_of_rules'|@translate}</th>
    616619    <th width="40px">&nbsp;</th>
  • extensions/AMetaData/admin/amd_metadata_personnal_iListTags.tpl

    r6731 r6950  
    44    <td style="width:35%;min-width:340px;">{$data.tagId}</td>
    55    <td>{$data.label}</td>
    6     <th style="width:15%;">{$data.fillDatabase}</th>
    76    <th style="width:15%;">{$data.numOfRules}</th>
    87    <td width="40px">
  • extensions/AMetaData/admin/amd_metadata_search.tpl

    r6891 r6950  
    22<h2>{'g003_search'|@translate}</h2>
    33
     4<div class='helps'>
     5  <p>{'g003_search_page_help'|@translate}</p>
     6</div>
     7
    48{$amd_search_page}
  • extensions/AMetaData/admin/amd_metadata_select.tpl

    r6729 r6950  
    195195<h2>{'g003_select_metadata'|@translate}</h2>
    196196
     197<div class='helps'>
     198  <p>{'g003_select_page_help'|@translate}</p>
     199</div>
     200
    197201<form>
    198202  <input type="hidden" id="iSelectOrderTagList" value="{$datas.config_GetListTags_OrderType}"/>
  • extensions/AMetaData/amd.css

    r6891 r6950  
    105105}
    106106
    107 .warnings {
    108   -moz-border-radius:4px;
    109   -webkit-border-radius:4px;
    110   -khtml-border-radius:4px;
    111   border-radius:4px;
    112 }
    113 .warnings p {
    114   margin:0;
    115   padding:0 0 6px;
    116   text-align: justify;
    117 }
    118 .warnings ul {
    119   margin:-6px 0;
    120   padding:0 40px 6px;
    121 }
    122107table.mdInfo {
    123108  width:100%;
  • extensions/AMetaData/amd_aip.class.inc.php

    r6919 r6950  
    4949    $this->tabsheet = new tabsheet();
    5050
    51     if($this->config['amd_interfaceMode']=='basic')
     51    if($this->config['amd_InterfaceMode']=='basic')
    5252    {
    5353      $this->tabsheet->add('metadata',
     
    6969                            l10n('g003_search'),
    7070                            $this->getAdminLink().'&amp;fAMD_tabsheet=search');
     71      $this->tabsheet->add('tags',
     72                            l10n('g003_tags'),
     73                            $this->getAdminLink().'&amp;fAMD_tabsheet=tags');
    7174      $this->tabsheet->add('help',
    7275                            l10n('g003_help'),
     
    128131        $this->displaySearch($_REQUEST['fAMD_page']);
    129132        break;
     133      case 'tags':
     134        $this->displayTags();
     135        break;
    130136    }
    131137
     
    168174    if(!isset($_REQUEST['fAMD_tabsheet']))
    169175    {
    170       if($this->getNumOfPictures()==0 and $this->config['amd_interfaceMode']=='advanced')
     176      if($this->getNumOfPictures()==0 and $this->config['amd_InterfaceMode']=='advanced')
    171177      {
    172178        $_REQUEST['fAMD_tabsheet']="database";
     
    183189         $_REQUEST['fAMD_tabsheet']=="help" or
    184190         $_REQUEST['fAMD_tabsheet']=="database" or
    185          $_REQUEST['fAMD_tabsheet']=="search")
     191         $_REQUEST['fAMD_tabsheet']=="search" or
     192         $_REQUEST['fAMD_tabsheet']=="tags")
    186193         or
    187          $this->config['amd_interfaceMode']=='basic' and
     194         $this->config['amd_InterfaceMode']=='basic' and
    188195         (
    189196           $_REQUEST['fAMD_tabsheet']=="database" or
    190            $_REQUEST['fAMD_tabsheet']=="search"
     197           $_REQUEST['fAMD_tabsheet']=="search" or
     198           $_REQUEST['fAMD_tabsheet']=="tags"
    191199         )
    192200      )
     
    202210      if(!isset($_REQUEST['fAMD_page']))
    203211      {
    204         if($this->config['amd_interfaceMode']=='basic')
     212        if($this->config['amd_InterfaceMode']=='basic')
    205213        {
    206214          $_REQUEST['fAMD_page']="display";
     
    216224           $_REQUEST['fAMD_page']=="display")
    217225           or
    218            $this->config['amd_interfaceMode']=='basic' and
     226           $this->config['amd_InterfaceMode']=='basic' and
    219227           (
    220228             $_REQUEST['fAMD_page']=="select"
     
    222230        )
    223231      {
    224         if($this->config['amd_interfaceMode']=='basic')
     232        if($this->config['amd_InterfaceMode']=='basic')
    225233        {
    226234          $_REQUEST['fAMD_page']="display";
     
    268276    }
    269277
     278
    270279  } //init_request
    271280
     
    327336                          l10n('g003_personnal'),
    328337                          $this->getAdminLink().'&amp;fAMD_tabsheet=metadata&amp;fAMD_page=personnal');
    329     if($this->config['amd_interfaceMode']=='advanced')
     338    if($this->config['amd_InterfaceMode']=='advanced')
    330339    {
    331340      $statTabsheet->add('select',
     
    362371  protected function displayMetaDataPersonnal()
    363372  {
    364     global $template, $theme, $themes, $themeconf;
     373    global $template, $theme, $themes, $themeconf, $lang;
    365374
    366375    $template->set_filename('sheet_page',
     
    392401    }
    393402
     403    $lang['g003_personnal_page_help']=GPCCore::BBtoHTML($lang['g003_personnal_page_help']);
     404
    394405    $template->assign('datas', $datas);
    395406    return($template->parse('sheet_page', true));
     
    404415  protected function displayMetaDataSelect()
    405416  {
    406     global $template, $theme, $themes, $themeconf;
     417    global $template, $theme, $themes, $themeconf, $lang;
    407418
    408419    $template->set_filename('sheet_page',
     
    418429    );
    419430
     431    $lang['g003_select_page_help']=GPCCore::BBtoHTML($lang['g003_select_page_help']);
     432
    420433    $template->assign('datas', $datas);
    421434    return($template->parse('sheet_page', true));
     
    430443  protected function displayMetaDataDisplay()
    431444  {
    432     global $user, $template;
     445    global $user, $template, $lang;
    433446
    434447    //$local_tpl = new Template(AMD_PATH."admin/", "");
     
    490503    }
    491504
     505    $lang['g003_display_page_help']=GPCCore::BBtoHTML($lang['g003_display_page_help']);
    492506    $template->assign('datas', $datas);
    493507    return($template->parse('sheet_page', true));
     
    745759  }
    746760
     761
     762  /**
     763   * display and manage the tags page
     764   *
     765   */
     766  protected function displayTags()
     767  {
     768    global $template, $user, $lang;
     769    $template->set_filename('body_page', dirname(__FILE__).'/admin/amd_metadata_tags.tpl');
     770
     771    $datas=array(
     772      'urlRequest' => $this->getAdminLink('ajax')
     773    );
     774
     775    $lang['g003_tags_page_help']=GPCCore::BBtoHTML($lang['g003_tags_page_help']);
     776
     777    $template->assign('datas', $datas);
     778
     779    $template->assign_var_from_handle('AMD_BODY_PAGE', 'body_page');
     780  }
     781
     782
    747783} // AMD_AIP class
    748784
  • extensions/AMetaData/amd_aip_install.class.inc.php

    r6920 r6950  
    421421
    422422    $this->config['newInstall']='n';
    423     $this->config['amd_interfaceMode']=$interfaceMode;
     423    $this->config['amd_InterfaceMode']=$interfaceMode;
    424424    $this->saveConfig();
    425425
  • extensions/AMetaData/amd_ajax.php

    r6920 r6950  
    8484           $_REQUEST['ajaxfct']=='admin.userDefined.deleteTag' or
    8585           $_REQUEST['ajaxfct']=='admin.tag.getValues' or
     86           $_REQUEST['ajaxfct']=='admin.tags.getKeywords' or
     87           $_REQUEST['ajaxfct']=='admin.tags.convertKeywords' or
    8688
    8789           $_REQUEST['ajaxfct']=='public.makeStats.doPictureAnalyze')) $_REQUEST['ajaxfct']='';
     
    317319        }
    318320
     321        /*
     322         * check admin.tags.convertKeywords values
     323         */
     324        if($_REQUEST['ajaxfct']=="admin.tags.convertKeywords")
     325        {
     326          if(!isset($_REQUEST['keywords'])) $_REQUEST['keywords']=array();
     327          if(!is_array($_REQUEST['keywords'])) $_REQUEST['keywords']=array();
     328          if(count($_REQUEST['keywords'])==0) $_REQUEST['ajaxfct']='';
     329        }
     330
     331
    319332
    320333
     
    401414        case 'admin.tag.getValues':
    402415          $result=$this->ajax_amd_admin_tagGetValues($_REQUEST['id']);
     416          break;
     417        case 'admin.tags.getKeywords':
     418          $result=$this->ajax_amd_admin_tagsGetKeywords();
     419          break;
     420        case 'admin.tags.convertKeywords':
     421          $result=$this->ajax_amd_admin_tagsConvertKeywords($_REQUEST['keywords']);
    403422          break;
    404423
     
    942961              'name'  => L10n::get($row['name']),
    943962              'numId' => $row['numId'],
    944               'nbItems' => $row['numOfImg'],
    945               'pct'   => ($numOfPictures==0)?"0":sprintf("%.2f", 100*$row['numOfImg']/$numOfPictures)
     963              'nbItems' => ($this->config['amd_InterfaceMode']=='advanced')?$row['numOfImg']:'',
     964              'pct'   => ($this->config['amd_InterfaceMode']=='advanced')?(($numOfPictures==0)?"0":sprintf("%.2f", 100*$row['numOfImg']/$numOfPictures)):''
    946965            );
    947966          }
     
    13401359        $result=pwg_query($sql);
    13411360        */
     1361
     1362        if($this->config['amd_InterfaceMode']=='basic')
     1363        {
     1364          $sql="INSERT INTO ".$this->tables['selected_tags']." VALUES ('".$properties['tagId']."', 0, -1);";
     1365          pwg_query($sql);
     1366        }
    13421367      }
    13431368      else
     
    13711396      foreach($properties['rules'] as $rule)
    13721397      {
    1373         print_r($rule['value']);
     1398        //print_r($rule['value']);
    13741399        $inserts[]="('$id', '".$rule['defId']."', '".$rule['parentId']."', '".$rule['order']."', '".$rule['type']."', '".$rule['value']."', '".$rule['conditionType']."', '".$rule['conditionValue']."')";
    13751400      }
     
    13781403      $result=pwg_query($sql);
    13791404
    1380       $nbImg=$this->buildUserDefinedTags($id);
     1405      if($this->config['amd_InterfaceMode']=='advanced')
     1406      {
     1407        $nbImg=$this->buildUserDefinedTags($id);
     1408      }
     1409      else
     1410      {
     1411        $nbImg=0;
     1412      }
    13811413
    13821414      $this->makeStatsConsolidation();
     
    14631495
    14641496    /**
     1497     * return an html list of found keywords in the images_tags table
     1498     *
     1499     * @return String : html formatted list
     1500     */
     1501    private function ajax_amd_admin_tagsGetKeywords()
     1502    {
     1503      global $template;
     1504
     1505      $returned=array();
     1506      $keywordsList=array();
     1507      $sql="SELECT pait.value, pait.imageId, paut.numId
     1508            FROM (".$this->tables['images_tags']." pait
     1509              JOIN ".$this->tables['used_tags']." paut ON pait.numId = paut.numId)
     1510
     1511            WHERE (paut.tagId = 'xmp.dc:subject' OR
     1512                   paut.tagId = 'xmp.digiKam:tagsList' OR
     1513                   paut.tagId = 'iptc.Keywords');";
     1514      $result=pwg_query($sql);
     1515      if($result)
     1516      {
     1517        while($row=pwg_db_fetch_assoc($result))
     1518        {
     1519          if(preg_match('/^a:\d+:{/', $row['value']))
     1520          {
     1521            /*
     1522             *  if value is a serialized string, unserialize and process it
     1523             */
     1524            $tmp=unserialize($row['value']);
     1525            foreach($tmp['values'] as $val)
     1526            {
     1527              $keywordsList[]="('".mysql_escape_string($val)."', ".$row['imageId'].")";
     1528            }
     1529          }
     1530          else
     1531          {
     1532            $keywordsList[]="('".mysql_escape_string($row['value'])."', ".$row['imageId'].")";
     1533          }
     1534        }
     1535        $sql="CREATE TEMPORARY TABLE amd_temp_tags (
     1536                `value` CHAR(255) default '',
     1537                `imageId` mediumint(8) unsigned NOT NULL default '0',
     1538                PRIMARY KEY  USING BTREE (`value`,`imageId`)
     1539              ) CHARACTER SET utf8 COLLATE utf8_general_ci;";
     1540        if(pwg_query($sql))
     1541        {
     1542          $sql="INSERT IGNORE INTO amd_temp_tags
     1543            VALUES ".implode(',', $keywordsList);
     1544          if(pwg_query($sql))
     1545          {
     1546            $sql="SELECT att.value AS value,
     1547                    COUNT(DISTINCT att.imageId) AS nbPictures,
     1548                    IF(ptt.name IS NULL, 'n', 'y') AS tagExists,
     1549                    COUNT(DISTINCT pit.image_id) AS nbPicturesTagged
     1550                  FROM (amd_temp_tags att LEFT JOIN ".TAGS_TABLE."  ptt ON att.value = ptt.name)
     1551                    LEFT JOIN ".IMAGE_TAG_TABLE." pit ON pit.tag_id = ptt.id
     1552                  GROUP BY att.value
     1553                  HAVING nbPicturesTagged < nbPictures";
     1554            $result=pwg_query($sql);
     1555            if($result)
     1556            {
     1557              $i=0;
     1558              while($row=pwg_db_fetch_assoc($result))
     1559              {
     1560                $row['id']=$i;
     1561                $returned[]=$row;
     1562                $i++;
     1563              }
     1564            }
     1565          }
     1566        }
     1567      }
     1568
     1569      $template->set_filename('keywordsList',
     1570                    dirname($this->getFileLocation()).'/admin/amd_metadata_tags_iKeywordsList.tpl');
     1571
     1572      $template->assign('datas', $returned);
     1573      return($template->parse('keywordsList', true));
     1574    }
     1575
     1576
     1577    /**
     1578     * convert given keywords into tags, and associate them to pictures
     1579     *
     1580     * @param Array $keywords : an array of strings
     1581     * @return String : ok or ko
     1582     */
     1583    private function ajax_amd_admin_tagsConvertKeywords($keywords)
     1584    {
     1585      global $template;
     1586
     1587      $returned='ko';
     1588
     1589      /*
     1590       * 1/ build a temp table with all couple of keywords/imageId
     1591       */
     1592      $keywordsList=array();
     1593      $sql="SELECT pait.value, pait.imageId, paut.numId
     1594            FROM (".$this->tables['images_tags']." pait
     1595              JOIN ".$this->tables['used_tags']." paut ON pait.numId = paut.numId)
     1596
     1597            WHERE (paut.tagId = 'xmp.dc:subject' OR
     1598                   paut.tagId = 'xmp.digiKam:tagsList' OR
     1599                   paut.tagId = 'iptc.Keywords');";
     1600      $result=pwg_query($sql);
     1601      if($result)
     1602      {
     1603        while($row=pwg_db_fetch_assoc($result))
     1604        {
     1605          if(preg_match('/^a:\d+:{/', $row['value']))
     1606          {
     1607            /*
     1608             *  if value is a serialized string, unserialize and process it
     1609             */
     1610            $tmp=unserialize($row['value']);
     1611            foreach($tmp['values'] as $val)
     1612            {
     1613              $keywordsList[]="('".mysql_escape_string($val)."', ".$row['imageId'].")";
     1614            }
     1615          }
     1616          else
     1617          {
     1618            $keywordsList[]="('".mysql_escape_string($row['value'])."', ".$row['imageId'].")";
     1619          }
     1620        }
     1621        $sql="CREATE TEMPORARY TABLE amd_temp_tags (
     1622                `value` CHAR(255) default '',
     1623                `imageId` mediumint(8) unsigned NOT NULL default '0',
     1624                PRIMARY KEY  USING BTREE (`value`,`imageId`)
     1625              ) CHARACTER SET utf8 COLLATE utf8_general_ci;";
     1626        if(pwg_query($sql))
     1627        {
     1628          $sql="INSERT IGNORE INTO amd_temp_tags
     1629            VALUES ".implode(',', $keywordsList);
     1630          if(pwg_query($sql))
     1631          {
     1632            foreach($keywords as $key => $val)
     1633            {
     1634              $keywords[$key]="(att.value LIKE '".mysql_escape_string($val)."')";
     1635            }
     1636            /*
     1637             * 2/ join temp table with piwigo tags table, found the keywords
     1638             *    that don't have a corresponding keyword
     1639             */
     1640            $sql="SELECT DISTINCT att.value
     1641                  FROM amd_temp_tags att LEFT JOIN ".TAGS_TABLE." ptt ON att.value = ptt.name
     1642                  WHERE ptt.id IS NULL
     1643                    AND".implode(' OR ', $keywords);
     1644            $result=pwg_query($sql);
     1645            if($result)
     1646            {
     1647              $sql=array();
     1648              while($row=pwg_db_fetch_assoc($result))
     1649              {
     1650                $sql[]="('', '".mysql_escape_string($row['value'])."', '".mysql_escape_string(str2url($row['value']))."')";
     1651              }
     1652              if(count($sql)>0)
     1653              {
     1654                $sql="INSERT INTO ".TAGS_TABLE." VALUES ".implode(',', $sql);
     1655                pwg_query($sql);
     1656              }
     1657            }
     1658
     1659            /*
     1660             * 3/ join temp table with piwigo tags table, associate piwigo tagId
     1661             *    to the keywords (at this step, all keyword can be associated
     1662             *    with a piwigo tagId)
     1663             */
     1664            $sql="INSERT IGNORE INTO ".IMAGE_TAG_TABLE."
     1665                    SELECT DISTINCT att.imageId, ptt.id
     1666                    FROM amd_temp_tags att LEFT JOIN ".TAGS_TABLE." ptt ON att.value = ptt.name
     1667                    WHERE ".implode(' OR ', $keywords);
     1668            $result=pwg_query($sql);
     1669            $returned='ok';
     1670          }
     1671        }
     1672      }
     1673
     1674      return($returned);
     1675    }
     1676
     1677
     1678    /**
    14651679     * set value(s) for option(s)
    14661680     *
  • extensions/AMetaData/amd_root.class.inc.php

    r6920 r6950  
    284284          //if($sqlInsert!="") $sqlInsert.=", ";
    285285          //$sqlInsert.="($imageId, '$numId', '".addslashes($value)."')";
    286           $massInsert[]="('$imageId', '$numId', '".addslashes($value)."') ";
     286          $massInsert[]="('$imageId', '$numId', '".mysql_escape_string($value)."') ";
    287287        }
    288288      }
  • extensions/AMetaData/amd_version.inc.php

    r6722 r6950  
    1717  if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
    1818
    19   define('AMD_VERSION',  '0.5.0');
    20   define('AMD_VERSION2', '00.05.00');
     19  define('AMD_VERSION',  '0.5.1');
     20  define('AMD_VERSION2', '00.05.01');
    2121?>
  • extensions/AMetaData/language/fr_FR/plugin.lang.php

    r6919 r6950  
    286286
    287287
     288$lang['g003_tags']="Tags";
     289$lang['g003_number_of_keywords']="Nombre de mots-clefs :";
     290$lang['g003_keyword']="Mot-clef";
     291$lang['g003_tag_in_piwigo']="Présent dans Piwigo";
     292$lang['g003_num_of_pictures']="Nombre de photos";
     293$lang['g003_num_of_pictures_already_tagged']="Nombre de photos déjà taggées";
     294$lang['g003_convert_ok']="La conversion s'est correctement effectuée";
     295$lang['g003_convert_keywords_and_apply']="Convertir";
     296
     297
     298$lang['g003_tags_page_help']="Cette fonctionnalité effectue une extraction des mots-clefs présents dans les métadonnées de vos photos et vous permet de les convertir en [i]Tags[/i].
     299Les photos pour lesquelles les mots-clefs ont déjà été convertis et associés n'apparaissent pas : seuls les mots-clefs des photos pour lesquelles une conversion et une association sont possibles sont proposés.";
     300
     301$lang['g003_search_page_help']="Il est possible d'effectuer diverses recherches sur le contenu des métadonnées, des plus simples au plus complexes : ajoutez des critères, et combinez-les par glisser/déposer.";
     302
     303$lang['g003_personnal_page_help']="Il est possible de construire très facilement vos propres métadonnées à partir des métadonnées existantes.
     304[ul]
     305[li]Ajoutez une nouvelles métadonnée[/li]
     306[li]Renseignez ses propriétés[/li]
     307[li]Ajoutez des règles de gestion et combinez-les au besoin par glisser/déposer[/li]
     308[/ul]";
     309
     310$lang['g003_select_page_help']="Seules les métadonnées sélectionnées ici sont disponibles dans les autres interfaces de paramétrage : ceci permet de réduire la liste des métadonnées à celles qui vous semblent les plus pertinentes pour votre usage.
     311La sélection est prise en compte immédiatement (il n'est pas nécessaire de la valider).";
     312
     313
     314$lang['g003_display_page_help']="Les métadonnées affichées avec la photo peuvent être triées et regroupées.
     315Par défaut, seul le groupe [i]".$lang['g003_default_group_name']."[/i] est disponible, mais il est possible d'en créer autant que nécessaire ([i]IPTC[/i], [i]Géolocalisation[/i], ...).
     316[ul]
     317[li]Créez les groupes de métadonnées selon vos besoins[/li]
     318[li]Ajoutez-y les métadonnées à afficher[/li]
     319[li]Au sein d'un groupe, triez l'ordre d'affichage des métadonnées par glisser/déposer[/li]
     320[li]Triez l'ordre d'affichage des groupes par glisser/déposer[/li]
     321[/ul]
     322Sélections&tris sont pris en compte immédiatement (il n'est pas nécessaire de les valider).";
     323
     324
    288325/** ----------------------------------------------------------------------------
    289326 * removed keys from releases 0.5.0/0.5.1
  • extensions/AMetaData/main.inc.php

    r6919 r6950  
    22/*
    33Plugin Name: Advanced MetaData
    4 Version: 0.5.0
     4Version: 0.5.1
    55Description: An advanced metadata manager
    66Plugin URI: http://piwigo.org/ext/extension_view.php?eid=364
     
    2424| 0.0     | 2010/01/21 | * start coding
    2525|         |            |
     26|         |            |
    2627| 0.1b    | 2010/03/21 | * beta release
     28|         |            |
    2729|         |            |
    2830| 0.2b    | 2010/03/23 | * beta release
    2931|         |            |
     32|         |            |
    3033| 0.3b    | 2010/04/11 | * beta release
    3134|         |            |
     35|         |            |
    3236| 0.4.0   | 2010/04/24 | * release for Piwigo 2.1
     37|         |            |
    3338|         |            | * uses some GPC 3.1.0 functions
     39|         |            |
    3440|         |            | * optimize ajax request to fill the metadata database
     41|         |            |
    3542|         |            | * replace all the 'mysql_*' functions with 'pwg_db_*'
    3643|         |            |   functions
     44|         |            |
    3745|         |            | * update some html/css
    3846|         |            |
    39 | 0.5.0   | 2010/07/24 | * release 0.5.0 not published, features are reported in
    40 |         |            |   the release 0.5.1
     47|         |            |
     48| 0.5.0   | 2010/07/24 | * release 0.5.0 was not published, implemented features
     49|         |            |   are reported in the release 0.5.1
     50|         |            |
    4151|         |            |
    4252| 0.5.1   | 2010/09/12 | * update to the JpegMetadata class 1.0.1 to fix the
    4353|         |            |   mantis bugs&features 1686, 1718 and 1719
     54|         |            |
    4455|         |            | * mantis : bug 1686
    4556|         |            |   . Picture analysis finish with an Error 500 or with a
    4657|         |            |     problem of memory limit
     58|         |            |
    4759|         |            | * mantis : feature 1719
    4860|         |            |   . Coding a DateTime class
     61|         |            |
    4962|         |            | * mantis : feature 1718
    5063|         |            |   . Make test images lighter
     
    5265|         |            |     JpegMetadata class was to heavy ; the file size has
    5366|         |            |     been reduced from 9Mb to 230Kb
     67|         |            |
    5468|         |            | * mantis : feature 1688
    5569|         |            |   . Improve performance when the database is filled
    5670|         |            |     each time a page is displayed (now using an ajax
    5771|         |            |     call)
     72|         |            |
    5873|         |            | * mantis : feature 1692
    5974|         |            |   . Add possibility for user to build their own "magic"
    6075|         |            |     tags
     76|         |            |
    6177|         |            | * mantis : feature 1777
    6278|         |            |   . Weight of the metadata database can becomes very
    6379|         |            |     heavy
     80|         |            |
    6481|         |            | * mantis : feature 1691
    6582|         |            |   . Add possibility to search picture by metadata
    6683|         |            |     properties
     84|         |            |
     85|         |            | * mantis bug:1826
     86|         |            |   . digiKam XMP tags are not recognized
     87|         |            |
    6788|         |            | * mantis : feature 1846
    6889|         |            |   . Read the metadata in the HD picture
     90|         |            |
    6991|         |            | * mantis : feature 1857
    7092|         |            |   . Implement a basic and an advanced interface mode
     93|         |            |
     94|         |            | * mantis : feature 1858
     95|         |            |   . Ability to import tags from picture to piwigo tags
     96|         |            |
     97|         |            | * mantis bug:1859
     98|         |            |   . JpegMetadata class can't manage multiple IPTC keywords
     99|         |            |     keywords
     100|         |            |
     101|         |            | * mantis bug:1861
     102|         |            |   . Accentued chars from ISO-8859-1 charset are not
     103|         |            |     recognized
     104|         |            |
    71105|         |            | * ajax management entirely rewritted
     106|         |            |
    72107|         |            | * user interface reviewed
     108|         |            |
    73109|         |            | * add some triggers events when picture metadata are
    74110|         |            |   loaded in the picture.php page
    75111|         |            |   . amd_jpegMD_loaded
    76112|         |            |   . amd_jpegMD_userDefinedValues_built
     113|         |            |
     114|         |            | * mantis : feature 1858
     115|         |            |   . Ability to import tags from picture to piwigo tags
     116|         |            |
    77117|         |            |
    78118|         |            |
Note: See TracChangeset for help on using the changeset viewer.