Changeset 6950 for extensions
- Timestamp:
- Sep 16, 2010, 8:55:20 PM (14 years ago)
- Location:
- extensions/AMetaData
- Files:
-
- 2 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/AMetaData/admin/amd_metadata_database_database.tpl
r6731 r6950 296 296 297 297 {if $amdConfig.amd_DisplayWarningsMessageUpdate=='y'} 298 <div style="padding-left: 60px;"class="warnings">298 <div class="warnings"> 299 299 <p style="font-size: 120%;">{'g003_warning_on_analyze_0'|@translate}</p> 300 300 <p>{'g003_warning_on_analyze_1'|@translate}</p> -
extensions/AMetaData/admin/amd_metadata_database_status.tpl
r6731 r6950 2 2 3 3 {if $amdConfig.amd_DisplayWarningsMessageStatus=='y'} 4 <div style="padding-left: 60px;"class="warnings">4 <div class="warnings"> 5 5 <p style="font-size: 120%;">{'g003_databaseInformation'|@translate}</p> 6 6 {$datas.warning1} -
extensions/AMetaData/admin/amd_metadata_display.tpl
r6919 r6950 351 351 <h2>{'g003_display_management'|@translate}</h2> 352 352 353 <div class='helps'> 354 <p>{'g003_display_page_help'|@translate}</p> 355 </div> 356 353 357 <div class="addGroup"> 354 358 <a onclick="editGroup('');">{'g003_add_a_group'|@translate}</a> -
extensions/AMetaData/admin/amd_metadata_display_groupListTagOrder.tpl
r5935 r6950 6 6 <td style="width:30%;">{$data.tagId}</td> 7 7 <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} 11 13 </tr> 12 14 </table> -
extensions/AMetaData/admin/amd_metadata_personnal.tpl
r6891 r6950 604 604 <h2>{'g003_personnal_metadata'|@translate}</h2> 605 605 606 <div class='helps'> 607 <p>{'g003_personnal_page_help'|@translate}</p> 608 </div> 609 606 610 <div class='addMetadata'> 607 611 <a onclick="udm.editMetadata('');">{'g003_add_a_new_md'|@translate}</a> … … 612 616 <th style="width:35%;min-width:340px;">{'g003_TagId'|@translate}</th> 613 617 <th>{'g003_TagLabel'|@translate}</th> 614 <th style="width:15%;">{'g003_fill_database'|@translate}</th>615 618 <th style="width:15%;">{'g003_num_of_rules'|@translate}</th> 616 619 <th width="40px"> </th> -
extensions/AMetaData/admin/amd_metadata_personnal_iListTags.tpl
r6731 r6950 4 4 <td style="width:35%;min-width:340px;">{$data.tagId}</td> 5 5 <td>{$data.label}</td> 6 <th style="width:15%;">{$data.fillDatabase}</th>7 6 <th style="width:15%;">{$data.numOfRules}</th> 8 7 <td width="40px"> -
extensions/AMetaData/admin/amd_metadata_search.tpl
r6891 r6950 2 2 <h2>{'g003_search'|@translate}</h2> 3 3 4 <div class='helps'> 5 <p>{'g003_search_page_help'|@translate}</p> 6 </div> 7 4 8 {$amd_search_page} -
extensions/AMetaData/admin/amd_metadata_select.tpl
r6729 r6950 195 195 <h2>{'g003_select_metadata'|@translate}</h2> 196 196 197 <div class='helps'> 198 <p>{'g003_select_page_help'|@translate}</p> 199 </div> 200 197 201 <form> 198 202 <input type="hidden" id="iSelectOrderTagList" value="{$datas.config_GetListTags_OrderType}"/> -
extensions/AMetaData/amd.css
r6891 r6950 105 105 } 106 106 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 }122 107 table.mdInfo { 123 108 width:100%; -
extensions/AMetaData/amd_aip.class.inc.php
r6919 r6950 49 49 $this->tabsheet = new tabsheet(); 50 50 51 if($this->config['amd_ interfaceMode']=='basic')51 if($this->config['amd_InterfaceMode']=='basic') 52 52 { 53 53 $this->tabsheet->add('metadata', … … 69 69 l10n('g003_search'), 70 70 $this->getAdminLink().'&fAMD_tabsheet=search'); 71 $this->tabsheet->add('tags', 72 l10n('g003_tags'), 73 $this->getAdminLink().'&fAMD_tabsheet=tags'); 71 74 $this->tabsheet->add('help', 72 75 l10n('g003_help'), … … 128 131 $this->displaySearch($_REQUEST['fAMD_page']); 129 132 break; 133 case 'tags': 134 $this->displayTags(); 135 break; 130 136 } 131 137 … … 168 174 if(!isset($_REQUEST['fAMD_tabsheet'])) 169 175 { 170 if($this->getNumOfPictures()==0 and $this->config['amd_ interfaceMode']=='advanced')176 if($this->getNumOfPictures()==0 and $this->config['amd_InterfaceMode']=='advanced') 171 177 { 172 178 $_REQUEST['fAMD_tabsheet']="database"; … … 183 189 $_REQUEST['fAMD_tabsheet']=="help" or 184 190 $_REQUEST['fAMD_tabsheet']=="database" or 185 $_REQUEST['fAMD_tabsheet']=="search") 191 $_REQUEST['fAMD_tabsheet']=="search" or 192 $_REQUEST['fAMD_tabsheet']=="tags") 186 193 or 187 $this->config['amd_ interfaceMode']=='basic' and194 $this->config['amd_InterfaceMode']=='basic' and 188 195 ( 189 196 $_REQUEST['fAMD_tabsheet']=="database" or 190 $_REQUEST['fAMD_tabsheet']=="search" 197 $_REQUEST['fAMD_tabsheet']=="search" or 198 $_REQUEST['fAMD_tabsheet']=="tags" 191 199 ) 192 200 ) … … 202 210 if(!isset($_REQUEST['fAMD_page'])) 203 211 { 204 if($this->config['amd_ interfaceMode']=='basic')212 if($this->config['amd_InterfaceMode']=='basic') 205 213 { 206 214 $_REQUEST['fAMD_page']="display"; … … 216 224 $_REQUEST['fAMD_page']=="display") 217 225 or 218 $this->config['amd_ interfaceMode']=='basic' and226 $this->config['amd_InterfaceMode']=='basic' and 219 227 ( 220 228 $_REQUEST['fAMD_page']=="select" … … 222 230 ) 223 231 { 224 if($this->config['amd_ interfaceMode']=='basic')232 if($this->config['amd_InterfaceMode']=='basic') 225 233 { 226 234 $_REQUEST['fAMD_page']="display"; … … 268 276 } 269 277 278 270 279 } //init_request 271 280 … … 327 336 l10n('g003_personnal'), 328 337 $this->getAdminLink().'&fAMD_tabsheet=metadata&fAMD_page=personnal'); 329 if($this->config['amd_ interfaceMode']=='advanced')338 if($this->config['amd_InterfaceMode']=='advanced') 330 339 { 331 340 $statTabsheet->add('select', … … 362 371 protected function displayMetaDataPersonnal() 363 372 { 364 global $template, $theme, $themes, $themeconf ;373 global $template, $theme, $themes, $themeconf, $lang; 365 374 366 375 $template->set_filename('sheet_page', … … 392 401 } 393 402 403 $lang['g003_personnal_page_help']=GPCCore::BBtoHTML($lang['g003_personnal_page_help']); 404 394 405 $template->assign('datas', $datas); 395 406 return($template->parse('sheet_page', true)); … … 404 415 protected function displayMetaDataSelect() 405 416 { 406 global $template, $theme, $themes, $themeconf ;417 global $template, $theme, $themes, $themeconf, $lang; 407 418 408 419 $template->set_filename('sheet_page', … … 418 429 ); 419 430 431 $lang['g003_select_page_help']=GPCCore::BBtoHTML($lang['g003_select_page_help']); 432 420 433 $template->assign('datas', $datas); 421 434 return($template->parse('sheet_page', true)); … … 430 443 protected function displayMetaDataDisplay() 431 444 { 432 global $user, $template ;445 global $user, $template, $lang; 433 446 434 447 //$local_tpl = new Template(AMD_PATH."admin/", ""); … … 490 503 } 491 504 505 $lang['g003_display_page_help']=GPCCore::BBtoHTML($lang['g003_display_page_help']); 492 506 $template->assign('datas', $datas); 493 507 return($template->parse('sheet_page', true)); … … 745 759 } 746 760 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 747 783 } // AMD_AIP class 748 784 -
extensions/AMetaData/amd_aip_install.class.inc.php
r6920 r6950 421 421 422 422 $this->config['newInstall']='n'; 423 $this->config['amd_ interfaceMode']=$interfaceMode;423 $this->config['amd_InterfaceMode']=$interfaceMode; 424 424 $this->saveConfig(); 425 425 -
extensions/AMetaData/amd_ajax.php
r6920 r6950 84 84 $_REQUEST['ajaxfct']=='admin.userDefined.deleteTag' or 85 85 $_REQUEST['ajaxfct']=='admin.tag.getValues' or 86 $_REQUEST['ajaxfct']=='admin.tags.getKeywords' or 87 $_REQUEST['ajaxfct']=='admin.tags.convertKeywords' or 86 88 87 89 $_REQUEST['ajaxfct']=='public.makeStats.doPictureAnalyze')) $_REQUEST['ajaxfct']=''; … … 317 319 } 318 320 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 319 332 320 333 … … 401 414 case 'admin.tag.getValues': 402 415 $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']); 403 422 break; 404 423 … … 942 961 'name' => L10n::get($row['name']), 943 962 '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)):'' 946 965 ); 947 966 } … … 1340 1359 $result=pwg_query($sql); 1341 1360 */ 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 } 1342 1367 } 1343 1368 else … … 1371 1396 foreach($properties['rules'] as $rule) 1372 1397 { 1373 print_r($rule['value']);1398 //print_r($rule['value']); 1374 1399 $inserts[]="('$id', '".$rule['defId']."', '".$rule['parentId']."', '".$rule['order']."', '".$rule['type']."', '".$rule['value']."', '".$rule['conditionType']."', '".$rule['conditionValue']."')"; 1375 1400 } … … 1378 1403 $result=pwg_query($sql); 1379 1404 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 } 1381 1413 1382 1414 $this->makeStatsConsolidation(); … … 1463 1495 1464 1496 /** 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 /** 1465 1679 * set value(s) for option(s) 1466 1680 * -
extensions/AMetaData/amd_root.class.inc.php
r6920 r6950 284 284 //if($sqlInsert!="") $sqlInsert.=", "; 285 285 //$sqlInsert.="($imageId, '$numId', '".addslashes($value)."')"; 286 $massInsert[]="('$imageId', '$numId', '". addslashes($value)."') ";286 $massInsert[]="('$imageId', '$numId', '".mysql_escape_string($value)."') "; 287 287 } 288 288 } -
extensions/AMetaData/amd_version.inc.php
r6722 r6950 17 17 if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); 18 18 19 define('AMD_VERSION', '0.5. 0');20 define('AMD_VERSION2', '00.05.0 0');19 define('AMD_VERSION', '0.5.1'); 20 define('AMD_VERSION2', '00.05.01'); 21 21 ?> -
extensions/AMetaData/language/fr_FR/plugin.lang.php
r6919 r6950 286 286 287 287 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]. 299 Les 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. 311 La 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. 315 Par 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] 322 Sélections&tris sont pris en compte immédiatement (il n'est pas nécessaire de les valider)."; 323 324 288 325 /** ---------------------------------------------------------------------------- 289 326 * removed keys from releases 0.5.0/0.5.1 -
extensions/AMetaData/main.inc.php
r6919 r6950 2 2 /* 3 3 Plugin Name: Advanced MetaData 4 Version: 0.5. 04 Version: 0.5.1 5 5 Description: An advanced metadata manager 6 6 Plugin URI: http://piwigo.org/ext/extension_view.php?eid=364 … … 24 24 | 0.0 | 2010/01/21 | * start coding 25 25 | | | 26 | | | 26 27 | 0.1b | 2010/03/21 | * beta release 28 | | | 27 29 | | | 28 30 | 0.2b | 2010/03/23 | * beta release 29 31 | | | 32 | | | 30 33 | 0.3b | 2010/04/11 | * beta release 31 34 | | | 35 | | | 32 36 | 0.4.0 | 2010/04/24 | * release for Piwigo 2.1 37 | | | 33 38 | | | * uses some GPC 3.1.0 functions 39 | | | 34 40 | | | * optimize ajax request to fill the metadata database 41 | | | 35 42 | | | * replace all the 'mysql_*' functions with 'pwg_db_*' 36 43 | | | functions 44 | | | 37 45 | | | * update some html/css 38 46 | | | 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 | | | 41 51 | | | 42 52 | 0.5.1 | 2010/09/12 | * update to the JpegMetadata class 1.0.1 to fix the 43 53 | | | mantis bugs&features 1686, 1718 and 1719 54 | | | 44 55 | | | * mantis : bug 1686 45 56 | | | . Picture analysis finish with an Error 500 or with a 46 57 | | | problem of memory limit 58 | | | 47 59 | | | * mantis : feature 1719 48 60 | | | . Coding a DateTime class 61 | | | 49 62 | | | * mantis : feature 1718 50 63 | | | . Make test images lighter … … 52 65 | | | JpegMetadata class was to heavy ; the file size has 53 66 | | | been reduced from 9Mb to 230Kb 67 | | | 54 68 | | | * mantis : feature 1688 55 69 | | | . Improve performance when the database is filled 56 70 | | | each time a page is displayed (now using an ajax 57 71 | | | call) 72 | | | 58 73 | | | * mantis : feature 1692 59 74 | | | . Add possibility for user to build their own "magic" 60 75 | | | tags 76 | | | 61 77 | | | * mantis : feature 1777 62 78 | | | . Weight of the metadata database can becomes very 63 79 | | | heavy 80 | | | 64 81 | | | * mantis : feature 1691 65 82 | | | . Add possibility to search picture by metadata 66 83 | | | properties 84 | | | 85 | | | * mantis bug:1826 86 | | | . digiKam XMP tags are not recognized 87 | | | 67 88 | | | * mantis : feature 1846 68 89 | | | . Read the metadata in the HD picture 90 | | | 69 91 | | | * mantis : feature 1857 70 92 | | | . 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 | | | 71 105 | | | * ajax management entirely rewritted 106 | | | 72 107 | | | * user interface reviewed 108 | | | 73 109 | | | * add some triggers events when picture metadata are 74 110 | | | loaded in the picture.php page 75 111 | | | . amd_jpegMD_loaded 76 112 | | | . amd_jpegMD_userDefinedValues_built 113 | | | 114 | | | * mantis : feature 1858 115 | | | . Ability to import tags from picture to piwigo tags 116 | | | 77 117 | | | 78 118 | | |
Note: See TracChangeset
for help on using the changeset viewer.