Changeset 10987 for extensions/typetags
- Timestamp:
- May 22, 2011, 12:52:49 PM (13 years ago)
- Location:
- extensions/typetags
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/typetags/admin.php
r9863 r10987 6 6 function get_color_text($color) 7 7 { 8 9 10 11 12 13 14 15 16 17 18 19 20 21 8 if (strlen($color) == 7) 9 { 10 $rgb[] = hexdec(substr($color, 1, 2))/255; 11 $rgb[] = hexdec(substr($color, 3, 2))/255; 12 $rgb[] = hexdec(substr($color, 5, 2))/255; 13 } 14 else if (strlen($color) == 4) 15 { 16 $rgb[] = hexdec(substr($color, 1, 1))/15; 17 $rgb[] = hexdec(substr($color, 2, 1))/15; 18 $rgb[] = hexdec(substr($color, 3, 1))/15; 19 } 20 $l = (min($rgb) + max($rgb)) / 2; 21 return $l > 0.45 ? '#000' : '#fff'; 22 22 } 23 23 … … 28 28 if (isset($_POST['edittypetag']) and (empty($_POST['typetag_name']) or empty($_POST['typetag_color']))) 29 29 { 30 31 32 33 34 35 30 $edited_typetag = array( 31 'id' => $_POST['edited_typetag'], 32 'name' => $_POST['typetag_name'], 33 'color' => $_POST['typetag_color'], 34 ); 35 $page['errors'][] = l10n('typetag_error'); 36 36 } 37 37 else if (isset($_POST['edittypetag'])) 38 38 { 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 39 $typetag = mysql_escape_string($_POST['edited_typetag']); 40 $typetag_name = mysql_escape_string($_POST['typetag_name']); 41 $typetag_color = mysql_escape_string($_POST['typetag_color']); 42 43 $all_typetags = pwg_query(" 44 SELECT 45 id, 46 name, 47 color 48 FROM `". typetags_TABLE ."`; 49 "); 50 51 while ($row = mysql_fetch_array($all_typetags)) 52 { 53 $existing_names[] = $row['name']; 54 if ($typetag == $row['id']) 55 { 56 $current_name = $row['name']; 57 $current_color = $row['color']; 58 } 59 } 60 61 // we must not rename typetag with an already existing name 62 if ($typetag_name != $current_name AND in_array($typetag_name, $existing_names)) 63 { 64 $edited_typetag = array( 65 'id' => $typetag, 66 'name' => $typetag_name, 67 'color' => $typetag_color, 68 ); 69 70 $page['errors'][] = l10n('typetag_already_exists'); 71 } 72 else 73 { 74 pwg_query(" 75 UPDATE `". typetags_TABLE ."` SET 76 `name` = '". $typetag_name ."', 77 `color` = '". $typetag_color ."' 78 WHERE `id` = ". $typetag ."; 79 "); 80 81 $page['infos'][] = l10n('typetag_saved'); 82 } 83 83 } 84 84 … … 89 89 if (isset($_GET['deletetypetag'])) 90 90 { 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 91 $query = " 92 SELECT name 93 FROM `". typetags_TABLE ."` 94 WHERE id = ". $_GET['deletetypetag'] ."; 95 "; 96 $typetag_name = array_from_query($query, 'name'); 97 98 if (count($typetag_name) != 0) 99 { 100 pwg_query(" 101 UPDATE `". TAGS_TABLE ."` 102 SET id_typetags = NULL 103 WHERE id_typetags = ". $_GET['deletetypetag'] ."; 104 "); 105 106 pwg_query(" 107 DELETE FROM `". typetags_TABLE ."` 108 WHERE id = ". $_GET['deletetypetag'] ."; 109 "); 110 111 $page['infos'][] = l10n('typetag_suppr').' : '.$typetag_name[0]; 112 } 113 else 114 { 115 $page['errors'][] = l10n('typetag_unknown').' : '.$_GET['deletetypetag']; 116 } 117 117 } 118 118 … … 123 123 if (isset($_POST['addtypetag']) and (empty($_POST['typetag_name']) or empty($_POST['typetag_color']))) 124 124 { 125 126 127 128 129 130 125 $template->assign('typetag', array( 126 'NAME' => isset($_POST['typetag_name']) ? $_POST['typetag_name'] : '', 127 'COLOR' => isset($_POST['typetag_color']) ? $_POST['typetag_color'] : '', 128 )); 129 130 $page['errors'][] = l10n('typetag_error'); 131 131 } 132 132 else if (isset($_POST['addtypetag'])) 133 133 { 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 134 $typetag_name = $_POST['typetag_name']; 135 $typetag_color = $_POST['typetag_color']; 136 137 // does the tag already exists? 138 $query = " 139 SELECT id 140 FROM `". typetags_TABLE ."` 141 WHERE name = '". $typetag_name ."'; 142 "; 143 $existing_tags = array_from_query($query, 'id'); 144 145 if (count($existing_tags) == 0) 146 { 147 pwg_query(" 148 INSERT INTO `". typetags_TABLE ."`( 149 `name`, 150 `color` 151 ) 152 VALUES( 153 '". $typetag_name ."', 154 '". $typetag_color ."' 155 ); 156 "); 157 158 $page['infos'][] = l10n('typetag_saved'); 159 } 160 else 161 { 162 $template->assign('typetag', array( 163 'NAME' => $typetag_name, 164 'COLOR' => $typetag_color, 165 )); 166 167 $page['errors'][] = l10n('typetag_already_exists'); 168 } 169 169 } 170 170 … … 175 175 if (isset($_POST['delete_all_assoc'])) 176 176 { 177 178 177 pwg_query("UPDATE `". TAGS_TABLE ."` SET id_typetags = NULL;"); 178 $page['infos'][] = l10n('All associations have been removed'); 179 179 180 180 } 181 181 else if (isset($_POST['associations'])) 182 182 { 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 183 // beautify the parameters array 184 $string = preg_replace('#[;]$#', '', $_POST['associations']); 185 $associations = array(); 186 $a = explode(';', $string); 187 188 foreach ($a as $s) 189 { 190 $v = explode(':', $s); 191 $associations[ltrim($v[0],'t-')] = ltrim($v[1],'tt-'); 192 } 193 194 // save associations 195 foreach ($associations AS $tag => $typetag) 196 { 197 pwg_query(" 198 UPDATE `". TAGS_TABLE ."` 199 SET id_typetags = ". $typetag ." 200 WHERE id = ". $tag ."; 201 "); 202 } 203 204 $page['infos'][] = l10n('typetags_associated'); 205 205 } 206 206 … … 214 214 // Récupère tous les tags 215 215 $all_tags = pwg_query(" 216 217 218 219 220 221 222 223 224 216 SELECT 217 t.id as tagid, 218 t.name as tagname, 219 tt.id as typetagid, 220 tt.name as typetagname 221 FROM `". TAGS_TABLE ."` as t 222 LEFT JOIN `". typetags_TABLE ."` as tt 223 ON t.id_typetags = tt.id 224 ORDER BY t.name ASC; 225 225 "); 226 226 227 227 while ($row = pwg_db_fetch_assoc($all_tags)) { 228 229 228 if ($row['typetagname'] == null) $row['typetagid'] = 'NULL'; 229 $template->append('typetags_association', $row); 230 230 } 231 231 … … 235 235 while ($row = mysql_fetch_assoc($all_typetags)) 236 236 { 237 238 239 240 241 237 $row['color_text'] = get_color_text($row['color']); 238 $row['u_edit'] = typetags_ADMIN . '&edittypetag=' . $row['id']; 239 $row['u_delete'] = typetags_ADMIN . '&deletetypetag=' . $row['id']; 240 241 $template->append('typetags_selection', $row); 242 242 } 243 243 244 244 // formualire d'édition 245 245 if (isset($_GET['edittypetag'])) { 246 246 $edited_typetag['id'] = $_GET['edittypetag']; 247 247 } 248 248 249 249 if (isset($edited_typetag['id'])) 250 250 { 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 251 $template->assign('edited_typetag', $edited_typetag['id']); 252 253 $tag = pwg_query(" 254 SELECT 255 id, 256 name, 257 color 258 FROM `". typetags_TABLE ."` 259 WHERE id = ".$edited_typetag['id']."; 260 "); 261 $row = pwg_db_fetch_assoc($tag); 262 263 $template->assign('typetag', array( 264 'ID' => $row['id'], 265 'OLD_NAME' => $row['name'], 266 'OLD_COLOR' => $row['color'], 267 'COLOR_TEXT' => get_color_text($row['color']), 268 'NAME' => isset($edited_typetag['name']) ? $edited_typetag['name'] : $row['name'], 269 'COLOR'=> isset($edited_typetag['color']) ? $edited_typetag['color'] : $row['color'], 270 )); 271 271 } 272 272 -
extensions/typetags/admin/typetags_admin.tpl
r9970 r10987 7 7 {footer_script} 8 8 {literal} 9 10 11 9 $(document).ready(function(){ 10 // colorpicker 11 $('#colorpicker').farbtastic('#hexval'); 12 12 13 14 15 16 17 18 19 20 21 22 23 24 13 // déplace chaque élément dans la bonne case 14 jQuery('ul#tt-NULL li').each(function() { 15 var $target = jQuery('ul#' + jQuery(this).attr('title')); 16 jQuery(this).appendTo($target).css('float', 'left'); 17 }); 18 19 // initialise les déplacement 20 jQuery("li").draggable({ 21 revert: "invalid", 22 helper: "clone", 23 cursor: "move" 24 }); 25 25 26 27 28 29 30 31 32 33 34 35 }); 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 26 // initialise le dépôt 27 jQuery('.tt-container').droppable({ 28 accept: "li", 29 hoverClass: "active", 30 drop: function(event, ui) { 31 var $gallery = this; 32 ui.draggable.fadeOut(function() { 33 jQuery(this).appendTo($gallery).fadeIn(); 34 equilibrate(); // on rééquilibre les colonnes à chaque déplacement 35 }); 36 } 37 }); 38 39 // équilibrage des colonnes 40 equilibrate(); 41 }); 42 43 function equilibrate() { 44 jQuery("#associations").each(function(){ 45 var h=0; 46 jQuery("> ul", this).css('height', 'auto') 47 .each(function(){ h=Math.max(h,jQuery(this).height()); }) 48 .css({'height': h+'px'}); 49 }); 50 } 51 52 // génération des couples tag:typetag avant de valider le formulaire 53 function save_datas(form) { 54 var out = ''; 55 56 jQuery(".tt-container").each(function(){ 57 var section = jQuery(this).attr('id'); 58 jQuery("> li", this).each(function(){ 59 out += jQuery(this).attr('id') + ':' + section + ';'; 60 }); 61 }); 62 63 jQuery('#assoc-input').val(out); 64 submit(form); 65 } 66 66 {/literal} 67 67 {/footer_script} 68 68 69 69 <div class="titrePage"> 70 70 <h2>TypeT@gs</h2> 71 71 </div> 72 72 73 73 <form action="{$typetags_ADMIN}" method="post" name="form"> 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 74 <fieldset> 75 {if isset($edited_typetag)} 76 <legend>{'Edit typetag'|@translate}</legend> 77 <input type="hidden" name="edited_typetag" value="{$edited_typetag}" /> 78 <div class="edit-container"> 79 <div id="colorpicker" style="float:right;"></div> 80 <p><b>{'Edited TypeTag'|@translate} : <input type="text" readonly="readonly" size="18" style="background-color:{$typetag.OLD_COLOR};color:{$typetag.COLOR_TEXT};" value="{$typetag.OLD_NAME}"></b></p> 81 <p> </p> 82 <p>{'New name'|@translate} : <input type="text" size="18" name="typetag_name" value="{$typetag.NAME}"/></p> 83 <p>{'New color'|@translate} : <input type="text" id="hexval" name="typetag_color" size="7" maxlength="7" value="{$typetag.COLOR}"/></p> 84 <p> </p> 85 <p> 86 <input class="submit" type="submit" name="edittypetag" value="{'Modify'|@translate}"/> 87 <input class="submit" type="submit" name="cancel" value="{'Reset'|@translate}"/> 88 </p> 89 </div> 90 {else} 91 <legend>{'Create a Typetag'|@translate}</legend> 92 <div class="edit-container"> 93 <div id="colorpicker" style="float:right;"></div> 94 <p> </p> 95 <p>{'New TypeTag'|@translate} : <input type="text" size="18" name="typetag_name" value="{if isset($typetag.NAME)}{$typetag.NAME}{/if}"/></p> 96 <p>{'Color TypeTag'|@translate} : <input type="text" id="hexval" name="typetag_color" size="7" maxlength="7" value="{if isset($typetag.COLOR)}{$typetag.COLOR}{else}#444444{/if}"/></p> 97 <p> </p> 98 <p> 99 <input class="submit" type="submit" name="addtypetag" value="{'Create a Typetag'|@translate}"/> 100 </p> 101 </div> 102 {/if} 103 </fieldset> 104 104 </form> 105 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 106 {if !empty($typetags_selection)} 107 <fieldset> 108 <legend>{'TypeTag selection'|@translate}</legend> 109 <ul class="tagSelection"> 110 {foreach from=$typetags_selection item=typetag} 111 <li> 112 <input type="text" readonly="readonly" style="background-color:{$typetag.color};color:{$typetag.color_text};margin:5px 0;" value="{$typetag.name}"> 113 <a href="{$typetag.u_edit}" title="{'edit'|@translate}"><img src="{$themeconf.icon_dir}/edit.png" class="button" alt="{'edit'|@translate}"/></a> 114 <a href="{$typetag.u_delete}" title="{'delete'|@translate}" onclick="return confirm('{'Are you sure?'|@translate}');"><img src="{$themeconf.admin_icon_dir}/plug_delete.png" class="button" alt="{'delete'|@translate}"/></a> 115 </li> 116 {/foreach} 117 </ul> 118 </fieldset> 119 {/if} 120 120 121 121 <form action="{$typetags_ADMIN}" method="post" name="form" onsubmit="save_datas(this);"> 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 122 {if !empty($typetags_association) and !empty($typetags_selection)} 123 <fieldset> 124 <legend>{'TypeTag association'|@translate}</legend> 125 126 <ul id="tt-NULL" class="tt-container NULL"> 127 <h5>Non associés</h5> 128 {foreach from=$typetags_association item=tag} 129 <li id="t-{$tag.tagid}" title="tt-{$tag.typetagid}"> 130 {$tag.tagname} 131 </li> 132 {/foreach} 133 </ul> 134 135 <div id="associations"> 136 {foreach from=$typetags_selection item=typetag} 137 <ul id="tt-{$typetag.id}" class="tt-container" style="box-shadow:inset 0 0 5px {$typetag.color};"> 138 <h5 style="background-color:{$typetag.color};color:{$typetag.color_text};">{$typetag.name}</h5> 139 </ul> 140 {/foreach} 141 </div> 142 143 <p style="clear:both;"> 144 <input type="hidden" name="associations" id="assoc-input"/> 145 <input class="submit" type="submit" name="associate" value="{'Validate'|@translate}"/> 146 <input class="submit" type="submit" name="delete_all_assoc" value="{'Delete all associations'|@translate}" onclick="return confirm('{'Are you sure?'|@translate}');"/> 147 </p> 148 </fieldset> 149 {/if} 150 150 </form> -
extensions/typetags/admin/typetags_style.css
r9970 r10987 1 1 .edit-container { 2 3 2 width: 500px; 3 margin: auto; 4 4 } 5 5 6 6 ul.tagSelection li { 7 7 width:170px !important; 8 8 } 9 9 .tagSelection input { 10 10 width:120px; 11 11 } 12 12 13 13 .tt-container { 14 15 16 17 18 19 20 21 22 14 float:left; 15 width:150px; 16 min-height:50px; 17 height:auto; 18 margin:5px !important; 19 padding:0 5px 5px 5px; 20 list-style:none; 21 background-color:#888; 22 border-radius:5px; 23 23 } 24 24 .tt-container li { 25 26 27 28 29 30 31 32 25 display:inline; 26 float:none; 27 padding:2px 8px; 28 margin:5px; 29 background-color:#ddd; 30 box-shadow:1px 1px 0px #fff; 31 border-radius:5px; 32 cursor:move; 33 33 } 34 34 .tt-container li:hover { 35 36 35 background-color:#c2f5c2; 36 opacity:0.8; 37 37 } 38 38 .tt-container h5 { 39 40 41 42 43 44 45 39 margin:0 -5px; 40 border-radius:5px 5px 0 0; 41 padding:2px 0; 42 text-align:center; 43 font-size:12px; 44 letter-spacing:0.5em; 45 font-weight:normal; 46 46 } 47 47 .active { 48 48 background-color:#7cba0f; 49 49 } 50 50 51 51 .tt-container.NULL { 52 53 54 52 width:98%; 53 box-shadow:inset 0 0 5px #bbb; 54 padding-bottom:10px; 55 55 } 56 56 .tt-container.NULL h5 { 57 58 57 background-color:#bbb; 58 font-weight:bold; 59 59 } -
extensions/typetags/language/it_IT/plugin.lang.php
r10286 r10987 3 3 /* section */ 4 4 $lang['Create a Typetag'] = 'Creare un TypeTag'; 5 $lang['Edit typetag'] = 'Modificare i lTypeTag';6 $lang['TypeTag selection'] = 'Modificare - Cancellare dei TypeTags';7 $lang['TypeTag association'] = 'Associare - Dissociare dei TypeTags';5 $lang['Edit typetag'] = 'Modificare i TypeTag'; 6 $lang['TypeTag selection'] = 'Modificare - Cancellare i TypeTags'; 7 $lang['TypeTag association'] = 'Associare - Dissociare i TypeTags'; 8 8 9 9 /* fields */ … … 16 16 /* buttons */ 17 17 $lang['Modify'] = 'Modificare'; 18 $lang['Delete all associations'] = ' Cancellare tutte le associazzioni';18 $lang['Delete all associations'] = 'Delete all associations'; 19 19 20 20 /* messages */ … … 22 22 $lang['typetag_saved'] = 'TypeTag registrato'; 23 23 $lang['typetag_suppr'] = 'TypeTag cancellato'; 24 $lang['typetag_unknown'] = ' TypeTag sconoscuto';24 $lang['typetag_unknown'] = 'Unknown TypeTag'; 25 25 $lang['typetag_error'] = 'Dovete inserire tutti campi (nome e colore)'; 26 $lang['All associations have been removed'] = ' Tutte le associazioni sono state cancellate';26 $lang['All associations have been removed'] = 'All associations have been removed'; 27 27 $lang['typetags_associated'] = 'TypeTag associato'; 28 28 -
extensions/typetags/main.inc.php
r9970 r10987 2 2 /* 3 3 Plugin Name: TypeT@gs 4 Version: 2.2.a4 Version: auto 5 5 Description: Allow to manage color of tags, as you want... 6 6 Plugin URI: http://piwigo.org/ext/extension_view.php?eid=166 -
extensions/typetags/maintain.inc.php
r9863 r10987 4 4 function plugin_install() 5 5 { 6 6 global $prefixeTable; 7 7 8 9 10 11 12 13 8 $query = 'SHOW FULL COLUMNS FROM ' . TAGS_TABLE . ';'; 9 $result = array_from_query($query, 'Field'); 10 if (!in_array('id_typetags', $result)) 11 { 12 pwg_query('ALTER TABLE '.TAGS_TABLE.' ADD COLUMN `id_typetags` SMALLINT(5)'); 13 } 14 14 15 16 17 18 19 20 21 22 23 24 15 $result = pwg_query('SHOW TABLES LIKE "' . $prefixeTable .'typetags"'); 16 if (!mysql_fetch_row($result)) 17 { 18 $q = 'CREATE TABLE '. $prefixeTable .'typetags( 19 id smallint(5) unsigned NOT NULL auto_increment, 20 name VARCHAR(255) NOT NULL, 21 color VARCHAR(255) NOT NULL, 22 PRIMARY KEY (id));'; 23 pwg_query($q); 24 } 25 25 } 26 26 27 27 function plugin_uninstall() 28 28 { 29 29 global $prefixeTable; 30 30 31 32 31 $q = ' ALTER TABLE '.TAGS_TABLE.' DROP COLUMN `id_typetags`'; 32 pwg_query( $q ); 33 33 34 35 34 $q = ' DROP TABLE '. $prefixeTable .'typetags;'; 35 pwg_query($q); 36 36 } 37 37
Note: See TracChangeset
for help on using the changeset viewer.