Changeset 5191
- Timestamp:
- Mar 19, 2010, 6:00:29 PM (14 years ago)
- Location:
- extensions/AMetaData
- Files:
-
- 1 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/AMetaData/admin/amd_metadata_database.tpl
r5183 r5191 26 26 { 27 27 formatNbItemPerRequest({/literal}{$datas.NumberOfItemsPerRequest}{literal}); 28 $("#iamd_nb_item_per_request_slider").slider(28 /*$("#iamd_nb_item_per_request_slider").slider( 29 29 { 30 30 min:5, … … 34 34 slide: function(event, ui) { formatNbItemPerRequest(ui.value); } 35 35 } 36 ); 36 );*/ 37 37 getStatus(); 38 38 } … … 220 220 <div id="dialog"></div> 221 221 222 222 223 <div id="ianalyzestatus"> 223 224 <ul> … … 228 229 </div> 229 230 231 <div class="nfo"> 232 <ul> 233 <li>{'g003_warning_on_analyze_4a'|@translate}</li> 234 <li>{'g003_warning_on_analyze_4b'|@translate}</li> 235 </ul> 236 </div> 237 238 230 239 <div id='ianalyzearea'> 231 240 <fieldset> 232 241 <legend>{'g003_update_metadata'|@translate}</legend> 233 242 <form class="formtable"> 243 <div class="nfo"> 244 <p>{'g003_warning_on_analyze_3'|@translate}</p> 245 <ul> 246 <li>{'g003_warning_on_analyze_3a'|@translate}</li> 247 <li>{'g003_warning_on_analyze_3b'|@translate}</li> 248 </ul> 249 250 <p>{'g003_warning_on_analyze_5'|@translate}</p> 251 </div> 252 253 <label> 254 <input type="radio" value="caddieAdd" name="fAMD_analyze_action" id="ianalyze_action2" checked> 255 {'g003_analyze_caddie_add_pictures'|@translate} 256 </label><br> 257 258 <label> 259 <input type="radio" value="caddieReplace" name="fAMD_analyze_action" id="ianalyze_action3"> 260 {'g003_analyze_caddie_replace_pictures'|@translate} 261 </label><br> 262 263 264 <label> 265 <input type="radio" value="notAnalayzed" name="fAMD_analyze_action" id="ianalyze_action0"> 266 {'g003_analyze_not_analyzed_pictures'|@translate} 267 </label><br> 268 269 <label> 270 <input type="radio" value="all" name="fAMD_analyze_action" id="ianalyze_action1"> 271 {'g003_analyze_all_pictures'|@translate} 272 </label><br> 273 234 274 <div class="warning"> 235 275 <p style="font-weight:bold; font-size:+2;">{'g003_warning_on_analyze_0'|@translate}</p> 236 276 <p>{'g003_warning_on_analyze_1'|@translate}</p> 237 277 <p style="font-weight:bold;">{'g003_warning_on_analyze_2'|@translate}</p> 238 <p>{'g003_warning_on_analyze_3'|@translate}</p>239 278 </div> 240 279 241 <label>242 <input type="radio" value="caddieAdd" name="fAMD_analyze_action" id="ianalyze_action2" checked> 243 {'g003_analyze_caddie_add_pictures'|@translate}244 </label><br>245 246 <label>247 <input type="radio" value="caddieReplace" name="fAMD_analyze_action" id="ianalyze_action3"> 248 {'g003_analyze_caddie_replace_pictures'|@translate}249 </label><br>250 251 252 <label>253 <input type="radio" value="notAnalayzed" name="fAMD_analyze_action" id="ianalyze_action0"> 254 {'g003_analyze_not_analyzed_pictures'|@translate}255 </label><br>256 257 <label>258 <input type="radio" value="all" name="fAMD_analyze_action" id="ianalyze_action1"> 259 {'g003_analyze_all_pictures'|@translate}260 </label><br>261 280 262 281 <br> 282 <input type="hidden" id="iamd_NumberOfItemsPerRequest" value="{$datas.NumberOfItemsPerRequest}"> 283 <!-- 263 284 {'g003_setting_nb_items_per_request'|@translate} 264 <input type="hidden" id="iamd_NumberOfItemsPerRequest" value="{$datas.NumberOfItemsPerRequest}">265 285 <div id="iamd_nb_item_per_request_slider"></div> 266 286 <div id="iamd_nb_item_per_request_display"></div> 267 287 <br><br> 288 --> 268 289 269 290 <input type="button" value="{'g003_analyze'|@translate}" onclick="doAnalyze();"> -
extensions/AMetaData/amd.css
r5088 r5191 1 1 2 .formtable, .formtable P { text-align:left; display:block; } 3 .formtable tr { vertical-align:top; } 4 .littlefont { font-size:90%; } 5 .littlefont td { padding:1px; } 6 table.littlefont th { padding:3px; text-align:left;} 7 table.littlefont td { padding:1px 3px; } 8 #iprogressbar_contener { border:1px solid #606060; margin:0px; padding:0px; display:block; height:20px; } 9 #iprogressbar_bg { background:#606060; display:block; z-index:100; position:relative; height:20px; } 10 #iprogressbar_fg { color:#FF3363; width:100%; text-align:center; display: block; z-index:200; position:relative; top:-18px; } 11 #iHeaderListTags { width:100%; border:1px solid; border-collapse: collapse; margin-top:3px; } 12 #iListTags { width:100%; border:1px solid; height:280px; border-top:0px; overflow:auto;} 13 #iListImages { width:100%; border-bottom:1px solid; overflow:auto;} 14 #iListTagsNb, #iListImagesNb { width:99%; text-align:right; margin-bottom:8px; padding:2px; font-size:80%; } 15 #iListTags table, #iListImages table, table.listTags { width:100%; text-align:left; border-collapse: collapse; } 16 #iListTags table tr:hover { cursor:pointer; background:#303030; } 17 #iListImages table tr:hover, table.listTags tr:hover { background:#303030; cursor:default; } 18 #iHeaderListImages { width:100%; border-bottom:1px solid; } 19 .warning { color:#dd0000; border:1px solid #dd0000; margin-bottom:8px; margin-top:8px; padding:8px; } 20 .warning p { margin-top:0.5em; margin-bottom:0em; } 21 .warning ul { margin-top:0em; margin-bottom:0.5em; } 22 .pctBar { height:6px; background:#FF7700; } 23 li.groupItems { border:1px solid #666666; margin-bottom:5px; padding:0 5px; width:90%; cursor:move; padding:4px; } 24 div.addGroup { padding-left:40px; text-align:left; } 25 #iGroups { list-style: none; } 26 .ui-dialog { background: #222222; border:2px solid #FF3363; } 27 .ui-dialog-buttonpane { padding:4px; } 28 .ui-dialog-buttonpane button { margin-right:8px; } 29 .ui-dialog-titlebar { background:#111111; font-weight:bold; } 30 .ui-dialog-title-dialog { text-align: left; } 31 .ui-dialog-titlebar-close { float: right; } 32 .ui-dialog-content { overflow:auto; } 33 .ui-dialog-container { } 34 .ui-dialog-titlebar-close { display:none; } 35 .tagListOrder { list-style: none; padding:0px; margin-right:8px; margin-left:35px; } 36 .tagListOrder li { border:none; background:#333333; padding:1px; margin-bottom:2px; width:100%; } 37 .groupTags { padding-top:8px; } 38 .editGroupListButton { margin-left:8px; position:absolute; z-index:1000; } 39 table.tagListOrderItem { width:100%; border-collapse:collapse; } 40 .dialogForm { text-align:left; margin:8px; } 41 #ianalyzestatus { background: #333333; margin:8px; padding:8px; } 42 #ianalyzestatus ul { margin:0px; padding:0 0 0 20px; } 43 #iamd_nb_item_per_request_display { display:inline-block; width:70px; } 44 #iamd_nb_item_per_request_slider { display:inline-block; width:350px; } 45 #iDialogProgress { margin:16px 8px 8px; } 46 2 .formtable, .formtable P { text-align:left; display:block; } 3 .formtable tr { vertical-align:top; } 4 .littlefont { font-size:90%; } 5 .littlefont td { padding:1px; } 6 table.littlefont th { padding:3px; text-align:left;} 7 table.littlefont td { padding:1px 3px; } 8 #iprogressbar_contener { border:1px solid #606060; margin:0px; padding:0px; display:block; height:20px; } 9 #iprogressbar_bg { background:#606060; display:block; z-index:100; position:relative; height:20px; } 10 #iprogressbar_fg { color:#FF3363; width:100%; text-align:center; display: block; z-index:200; position:relative; top:-18px; } 11 #iHeaderListTags { width:100%; border:1px solid; border-collapse: collapse; margin-top:3px; } 12 #iListTags { width:100%; border:1px solid; height:280px; border-top:0px; overflow:auto;} 13 #iListImages { width:100%; border-bottom:1px solid; overflow:auto;} 14 #iListTagsNb, #iListImagesNb { width:99%; text-align:right; margin-bottom:8px; padding:2px; font-size:80%; } 15 #iListTags table, #iListImages table, table.listTags { width:100%; text-align:left; border-collapse: collapse; } 16 #iListTags table tr:hover { cursor:pointer; background:#303030; } 17 #iListImages table tr:hover, table.listTags tr:hover { background:#303030; cursor:default; } 18 #iHeaderListImages { width:100%; border-bottom:1px solid; } 19 .nfo ul { margin-top:0em; margin-bottom:1em; } 20 .warning { color:#ffffff; background:#dd0000; margin-bottom:8px; margin-top:8px; padding:8px; } 21 .warning p, .nfo p { margin-top:0.5em; margin-bottom:0em; } 22 .warning ul { margin-top:0em; margin-bottom:0.5em; } 23 .pctBar { height:6px; background:#FF7700; } 24 li.groupItems { border:1px solid #666666; margin-bottom:5px; padding:0 5px; width:90%; cursor:move; padding:4px; } 25 div.addGroup { padding-left:40px; text-align:left; } 26 #iGroups { list-style: none; } 27 .ui-dialog { background: #222222; border:2px solid #FF3363; } 28 .ui-dialog-buttonpane { padding:4px; } 29 .ui-dialog-buttonpane button { margin-right:8px; } 30 .ui-dialog-titlebar { background:#111111; font-weight:bold; } 31 .ui-dialog-title-dialog { text-align: left; } 32 .ui-dialog-titlebar-close { float: right; } 33 .ui-dialog-content { overflow:auto; } 34 .ui-dialog-container { } 35 .ui-dialog-titlebar-close { display:none; } 36 .tagListOrder { list-style: none; padding:0px; margin-right:8px; margin-left:35px; } 37 .tagListOrder li { border:none; background:#333333; padding:1px; margin-bottom:2px; width:100%; } 38 .groupTags { padding-top:8px; } 39 .editGroupListButton { margin-left:8px; position:absolute; z-index:1000; } 40 table.tagListOrderItem { width:100%; border-collapse:collapse; } 41 .dialogForm { text-align:left; margin:8px; } 42 #ianalyzestatus { background: #333333; margin:8px; padding:8px; } 43 #ianalyzestatus ul { margin:0px; padding:0 0 0 20px; } 44 #iamd_nb_item_per_request_display { display:inline-block; width:70px; } 45 #iamd_nb_item_per_request_slider { display:inline-block; width:350px; } 46 #iDialogProgress { margin:16px 8px 8px; } 47 #helpBody { text-align: left; padding-top:30px; } 48 #helpBody ul { padding:0px; margin:0px; } 49 #helpBody li { margin-left:30px; } 50 -
extensions/AMetaData/amd_aip.class.inc.php
r5183 r5191 99 99 if($_REQUEST['fAMD_tabsheet']=='help') 100 100 { 101 //$this->displayHelp();101 $this->displayHelp($_REQUEST['fAMD_page']); 102 102 } 103 103 elseif($_REQUEST['fAMD_tabsheet']=='metadata') … … 238 238 } 239 239 240 241 if($_REQUEST['fAMD_tabsheet']=="help" and !isset($_REQUEST['fAMD_page'])) 242 { 243 $_REQUEST['fAMD_page']="exif"; 244 } 245 246 if($_REQUEST['fAMD_tabsheet']=="help" and 247 !($_REQUEST['fAMD_page']=="exif" or 248 $_REQUEST['fAMD_page']=="iptc" or 249 $_REQUEST['fAMD_page']=="xmp" or 250 $_REQUEST['fAMD_page']=="magic")) 251 { 252 $_REQUEST['fAMD_page']="exif"; 253 } 254 255 240 256 /* 241 257 * check ajax … … 479 495 /** 480 496 * display and manage the metadata page 481 * the page have t wotabsheet :497 * the page have three tabsheet : 482 498 * - select tag management, to manage tags to be selected on the galerie 483 499 * - display tag management, to choose how the tags are displayed 500 * - manage database 484 501 * 485 502 * @param String $tab : the selected tab on the stat page … … 515 532 else 516 533 { 517 $template->assign('sheetContent', $this->display Database());534 $template->assign('sheetContent', $this->displayMetaDataDatabase()); 518 535 } 519 536 … … 632 649 * @return String : the content of the page 633 650 */ 634 private function display Database()651 private function displayMetaDataDatabase() 635 652 { 636 653 global $template, $page; … … 679 696 680 697 698 699 /** 700 * display and manage the help page 701 * 702 * @param String $tab : the selected tab on the help page 703 */ 704 protected function displayHelp($tab) 705 { 706 global $template, $user, $lang; 707 $template->set_filename('body_page', dirname(__FILE__).'/admin/amd_help.tpl'); 708 709 $statTabsheet = new tabsheet('statTabsheet', $this->tabsheet->get_titlename()); 710 $statTabsheet->select($tab); 711 $statTabsheet->add('exif', 712 l10n('g003_help_tab_exif'), 713 $this->page_link.'&fAMD_tabsheet=help&fAMD_page=exif'); 714 $statTabsheet->add('iptc', 715 l10n('g003_help_tab_iptc'), 716 $this->page_link.'&fAMD_tabsheet=help&fAMD_page=iptc'); 717 $statTabsheet->add('xmp', 718 l10n('g003_help_tab_xmp'), 719 $this->page_link.'&fAMD_tabsheet=help&fAMD_page=xmp'); 720 $statTabsheet->add('magic', 721 l10n('g003_help_tab_magic'), 722 $this->page_link.'&fAMD_tabsheet=help&fAMD_page=magic'); 723 $statTabsheet->assign(); 724 725 $data=Array( 726 'sheetContent' => $this->BBtoHTML($lang['g003_help_'.$tab]), 727 'title' => l10n('g003_help_tab_'.$tab), 728 ); 729 730 $template->assign('data', $data); 731 732 $template->assign_var_from_handle('AMD_BODY_PAGE', 'body_page'); 733 } 734 735 736 737 /** 738 * convert (light) BB tag to HTML tag 739 * 740 * all BB codes are not recognized, only : 741 * - [ul] [/ul] 742 * - [li] [/li] 743 * - [b] [/b] 744 * - [i] [/i] 745 * - [url] [/url] 746 * - carriage return is replaced by a <br> 747 * 748 * @param String $text : text to convert 749 * @return String : BB to HTML text 750 */ 751 protected function BBtoHTML($text) 752 { 753 $patterns = Array( 754 '/\[li\](.*?)\[\/li\]\n*/im', 755 '/\[b\](.*?)\[\/b\]/ism', 756 '/\[i\](.*?)\[\/i\]/ism', 757 '/\[url\]([\w]+?:\/\/[^ \"\n\r\t<]*?)\[\/url\]/ism', 758 '/\[url=([\w]+?:\/\/[^ \"\n\r\t<]*?)\](.*?)\[\/url\]/ism', 759 '/\n{0,1}\[ul\]\n{0,1}/im', 760 '/\n{0,1}\[\/ul\]\n{0,1}/im', 761 '/\n/im', 762 ); 763 $replacements = Array( 764 '<li>\1</li>', 765 '<b>\1</b>', 766 '<i>\1</i>', 767 '<a href="\1">\1</a>', 768 '<a href="\1">\2</a>', 769 '<ul>', 770 '</ul>', 771 '<br>', 772 ); 773 774 return(preg_replace($patterns, $replacements, $text)); 775 } 681 776 682 777 -
extensions/AMetaData/amd_install.class.inc.php
r5183 r5191 126 126 public function activate() 127 127 { 128 global $template ;128 global $template, $user; 129 129 130 130 … … 152 152 FROM ".CADDIE_TABLE." tc 153 153 LEFT JOIN ".IMAGES_TABLE." ti ON ti.id = tc.element_id 154 WHERE tc.user_id = ".$user['id']." 154 155 ORDER BY RAND() LIMIT 25;"; 155 156 $result=pwg_query($sql); -
extensions/AMetaData/language/fr_FR/plugin.lang.php
r5183 r5191 79 79 $lang['g003_no_tag_can_be_selected'] = "Aucune métadonnée n'est disponible"; 80 80 81 82 $lang['g003_warning_on_analyze_3'] = "Le référentiel s'alimente peu à peu chaque fois qu'une page de la galerie est visitée. La durée nécessaire pour l'alimentation complète du référentiel dépends donc :"; 83 $lang['g003_warning_on_analyze_3a'] = "du nombre de photos dans la gallerie"; 84 $lang['g003_warning_on_analyze_3b'] = "du nombre de pages visualisées quotidiennement"; 85 $lang['g003_warning_on_analyze_4a'] = "le référentiel n'est exploité qu'à des fins statistiques et facilite le choix des métadonnées sélectionnées pour affichage"; 86 $lang['g003_warning_on_analyze_4b'] = "une image non prise prise en compte pour l'alimentation du référentiel disposera quand même des métadonnées sur la galerie"; 87 $lang['g003_warning_on_analyze_5'] = "Afin de disposer rapidement d'un référentiel complet, il est possible de procéder à une analyse plus directe de la galerie :"; 81 88 $lang['g003_warning_on_analyze_0'] = "Attention !"; 82 $lang['g003_warning_on_analyze_1'] = "L'alimentation du référentiel est un processus quipeut s'avérer être long (jusqu'à plusieurs minutes de traitement) et gourmand en ressources sur le serveur en fonction du nombre de photos sélectionnées pour l'analyse.";89 $lang['g003_warning_on_analyze_1'] = "L'alimentation du référentiel via le processus d'analyse directe peut s'avérer être long (jusqu'à plusieurs minutes de traitement) et gourmand en ressources sur le serveur en fonction du nombre de photos sélectionnées pour l'analyse."; 83 90 $lang['g003_warning_on_analyze_2'] = "Certains hébergeurs peuvent sanctionner ce type d'usage."; 84 $lang['g003_warning_on_analyze_3'] = "Il est fortement recommandé de remplir le panier avec une cinquantaine de photos représentatives de la galerie pour procéder au traitement."; 91 92 85 93 86 94 $lang['g003_metadata_detail'] = "Domaine de valeurs pour la métadonnée"; 87 95 88 96 $lang['g003_help'] = "Aide sur les métadonnées"; 97 $lang['g003_help_tab_exif'] = "Exif"; 98 $lang['g003_help_tab_iptc'] = "IPTC"; 99 $lang['g003_help_tab_xmp'] = "XMP"; 100 $lang['g003_help_tab_magic'] = "Magic"; 101 $lang['g003_help_exif'] = "Les métadonnées EXIF sont des informations qui sont stockées dans l'image, par l'appareil photo, au moment de la prise de vue. 102 103 Les informations que l'on y trouve sont essentiellement techniques : 104 [ul] 105 [li]matériel utilisé (modèle de l'appareil, constructeur)[/li] 106 [li]les conditions de prises de vue (ouverture, temps d'exposition, focale)[/li] 107 [li]le moment de la prise de vue (date, heure)[/li] 108 [li]le lieu géographique (données GPS)[/li] 109 [li]des informations sur le format de la photo (dimensions, résolution, compression)[/li] 110 [/ul] 111 112 L'alimentation des métadonnées EXIF est normalisée ([url]http://www.exif.org/Exif2-2.PDF[/url]), néanmoins : 113 [ul] 114 [li]cette norme mise en place par le [url=http://www.jeita.or.jp]JEITA[/url] (Japan Electronics and Information Technology Industries Association) n'évolue plus depuis 2002[/li] 115 [li]chaque métadonnée définie dans la norme est facultative : tous les appareils ne renseignent donc pas toutes les métadonnées[/li] 116 [li]il existe une métadonnée [i]MakerNote[/i] qui est un champ libre exploité par les fabriquants et dans laquelle sont stockées des informations non présentes dans les spécifications (par exemple, les références de l'objectif) ; ces informations sont propres à chaque fabricant, voir propre à chaque appareil. Le plugin sait interpréter une partie de ces informations pour les appareils [b]Pentax[/b], [b]Canon[/b] et [b]Nikon[/b].[/li] 117 [/ul]"; 118 119 $lang['g003_help_iptc'] = "Les métadonnées IPTC sont des informations qui sont stockées dans l'image, par le photographe, via un logiciel approprié. 120 121 La nature des informations que l'on y trouve est essentiellement orientée vers le monde professionnel : 122 [ul] 123 [li]les références du photographe (nom, contact)[/li] 124 [li]les informations relatives au Copyright[/li] 125 [li]la description de la photo (titre, description, commentaires, mot-clefs)[/li] 126 [li]des informations diverses relatives au monde professionnel[/li] 127 [/ul] 128 129 L'alimentation des métadonnées IPTC est normalisée ([url]http://www.iptc.org[/url]). 130 Cette norme a été mise en place par un consortium réunissant les principales agences de presses du monde, L[i]'International Press Telecommunications Council[/i] (abrégé en IPTC)."; 131 $lang['g003_help_xmp'] = "Les métadonnées XMP sont essentiellement des métadonnées EXIF et IPTC qui sont stockées dans l'image au format XML. 132 133 L'avantage des métadonnées XMP, c'est l'apport d'une certaine souplesse : 134 [ul] 135 [li]les informations peuvent y être stockées en plusieurs langues[/li] 136 [li]l'emploi du jeu de caractères Unicode permet (principalement) d'utiliser des caractères non latin[/li] 137 [li]le format XML facilite l'interprétation et l'échange d'information[/li] 138 [/ul] 139 140 L'alimentation des métadonnées XMP est normalisée ([url]http://www.metadataworkinggroup.org/specs[/url]). 141 La norme conseille d'exploiter de préférence les métadonnées EXIF et IPTC si celles-ci sont présentes. 142 143 La conversion des métadonnées EXIF & IPTC en métadonnées XMP s'effectue généralement au moyen de logiciels de retouche photographique. 144 145 Le modèle XMP étant plus pauvre que le modèle EXIF, les conséquences de cette conversion se traduisent par une perte d'informations au niveau de la photo. Généralement les informations perdues ne sont pas d'une grande importance pour la plupart des utilisateurs, néanmoins la norme préconise que les logiciels qui enregistrent les métadonnées XMP conservent les métadonnées d'origine : ce n'est malheureusement pas toujours le cas. 146 "; 147 $lang['g003_help_magic'] = "Une même information peut être stockée sous plusieurs formats au sein d'une photo : 148 [ul] 149 [li]elle peut être présente dans tous les formats[/li] 150 [li]elle peut être présente dans un format mais pas dans un autre[/li] 151 [/ul] 152 153 Par exemple, l'ouverture du diaphragme peut être présente dans 4 métadonnées différentes : 154 [ul] 155 [li][b]exif.exif.FNumber[/b][/li] 156 [li][b]exif.exif.ApertureValue[/b][/li] 157 [li][b]xmp.exif:ApertureValue[/b][/li] 158 [li][b]xmp.exif:FNumber[/b][/li] 159 [/ul] 160 161 Afin de faciliter la restitution des informations pouvant être éparpillées, le plugin propose un petit panel des métadonnées les plus usitées et se charge d'en analyser la présence dans les photos, et de restituer l'information la plus pertinente. 162 Ce sont les métadonnées nommées [b]Magic[/b]. 163 164 Ainsi, la métadonnée [b]magic.ShotInfo.Aperture[/b] restitue : 165 [ul] 166 [li]la valeur de la métadonnée [b]exif.exif.FNumber[/b] si celle-ci est présente dans la photo, sinon[/li] 167 [li]la valeur de la métadonnée [b]xmp.exif:FNumber[/b] si celle-ci est présente dans la photo, sinon[/li] 168 [li]la valeur de la métadonnée [b]exif.exif.ApertureValue[/b] si celle-ci est présente dans la photo, sinon[/li] 169 [li]la valeur de la métadonnée [b]xmp.exif:ApertureValue[/b] si celle-ci est présente dans la photo[/li] 170 [/ul]"; 89 171 90 172 ?>
Note: See TracChangeset
for help on using the changeset viewer.