| | @@ -77,11 +77,11 @@ |
| 77 | 77 | /* |
| 78 | 78 | ** A small search form which forwards to ?like=SEARCH_STRING |
| 79 | 79 | */ |
| 80 | 80 | static void tagview_page_search_miniform(void){ |
| 81 | 81 | char const * like = P("like"); |
| 82 | | - @ <div style='font-size:smaller'> |
| 82 | + @ <div class='miniform'> |
| 83 | 83 | @ <form action='tagview' method='post'> |
| 84 | 84 | @ Search for tags: |
| 85 | 85 | @ <input type='text' name='like' value='%h((like?like:""))' size='10'/> |
| 86 | 86 | @ <input type='submit'/> |
| 87 | 87 | @ <input type='hidden' name='raw' value='y'/> |
| | @@ -124,17 +124,19 @@ |
| 124 | 124 | char *zSql; |
| 125 | 125 | @ <h2>Tag '%s(tagname)':</h2> |
| 126 | 126 | zSql = mprintf( |
| 127 | 127 | "SELECT DISTINCT" |
| 128 | 128 | " linktagid(t.tagid) AS 'Tag ID'," |
| 129 | + " linktagname(t.tagname) AS 'Name'," |
| 129 | 130 | " DATETIME(tx.mtime) AS 'Timestamp'," |
| 130 | 131 | " linkuuid(b.uuid) AS 'Version'" |
| 131 | 132 | " FROM tag t, tagxref tx, blob b " |
| 132 | | - " WHERE t.tagname='%q' AND t.tagid=tx.tagid AND tx.rid=b.rid " |
| 133 | + " WHERE ( t.tagname='%q' OR t.tagname='sym-%q') " |
| 134 | + " AND t.tagid=tx.tagid AND tx.rid=b.rid " |
| 133 | 135 | TAGVIEW_DEFAULT_FILTER |
| 134 | 136 | " ORDER BY tx.mtime DESC", |
| 135 | | - tagname); |
| 137 | + tagname,tagname); |
| 136 | 138 | db_generic_query_view(zSql, 1); |
| 137 | 139 | free(zSql); |
| 138 | 140 | } |
| 139 | 141 | |
| 140 | 142 | /* |
| | @@ -145,11 +147,11 @@ |
| 145 | 147 | login_check_credentials(); |
| 146 | 148 | /* if( !g.okRdWiki ){ */ |
| 147 | 149 | if( !g.okAdmin ){ |
| 148 | 150 | login_needed(); |
| 149 | 151 | } |
| 150 | | - style_header("Tags"); |
| 152 | + style_header("Raw Tags"); |
| 151 | 153 | login_anonymous_available(); |
| 152 | 154 | tagview_page_search_miniform(); |
| 153 | 155 | @ <hr/> |
| 154 | 156 | if( 0 != (check = P("tagid")) ){ |
| 155 | 157 | tagview_page_tag_by_id( atoi(check) ); |
| | @@ -187,10 +189,11 @@ |
| 187 | 189 | /* |
| 188 | 190 | ** WEBPAGE: /tagview |
| 189 | 191 | */ |
| 190 | 192 | void tagview_page(void){ |
| 191 | 193 | char const *zName = 0; |
| 194 | + char const *zTitle = 0; |
| 192 | 195 | int nTag = 0; |
| 193 | 196 | login_check_credentials(); |
| 194 | 197 | if( !g.okRead ){ |
| 195 | 198 | login_needed(); |
| 196 | 199 | } |
| | @@ -199,11 +202,15 @@ |
| 199 | 202 | return; |
| 200 | 203 | } |
| 201 | 204 | login_anonymous_available(); |
| 202 | 205 | if( 0 != (zName = P("name")) ){ |
| 203 | 206 | Blob uuid; |
| 204 | | - style_header("Tagged Artifacts"); |
| 207 | + if( g.okAdmin ){ |
| 208 | + style_submenu_element("RawTags", "Internal Ticket View", |
| 209 | + "%s/tagview?name=%s&raw=y", g.zTop, zName); |
| 210 | + } |
| 211 | + zTitle = "Tagged Artifacts"; |
| 205 | 212 | @ <h2>%s(zName):</h2> |
| 206 | 213 | if( sym_tag_to_uuid(zName, &uuid) > 0){ |
| 207 | 214 | tagview_print_timeline(zName, "sym-"); |
| 208 | 215 | }else if( tag_to_uuid(zName, &uuid, "") > 0){ |
| 209 | 216 | tagview_print_timeline(zName, ""); |
| | @@ -212,11 +219,15 @@ |
| 212 | 219 | } |
| 213 | 220 | }else{ |
| 214 | 221 | Stmt q; |
| 215 | 222 | const char *prefix = "sym-"; |
| 216 | 223 | int preflen = strlen(prefix); |
| 217 | | - style_header("Tags"); |
| 224 | + if( g.okAdmin ){ |
| 225 | + style_submenu_element("RawTags", "Internal Ticket View", |
| 226 | + "%s/tagview?raw=y", g.zTop); |
| 227 | + } |
| 228 | + zTitle = "Tags"; |
| 218 | 229 | db_prepare(&q, |
| 219 | 230 | "SELECT tagname" |
| 220 | 231 | " FROM tag" |
| 221 | 232 | " WHERE EXISTS(SELECT 1 FROM tagxref" |
| 222 | 233 | " WHERE tagid=tag.tagid" |
| | @@ -255,10 +266,11 @@ |
| 255 | 266 | if( nTag == 0) { |
| 256 | 267 | @ There are no relevant tags. |
| 257 | 268 | } |
| 258 | 269 | db_finalize(&q); |
| 259 | 270 | } |
| 271 | + style_header(zTitle); |
| 260 | 272 | /* |
| 261 | 273 | * Put in dummy functions since www_print_timeline has generated calls to |
| 262 | 274 | * them. Some browsers don't seem to care, but better to be safe. |
| 263 | 275 | * Actually, it would be nice to use the functions on this page, but at |
| 264 | 276 | * the moment it looks to be too difficult. |
| | @@ -267,7 +279,8 @@ |
| 267 | 279 | @ function xin(id){ |
| 268 | 280 | @ } |
| 269 | 281 | @ function xout(id){ |
| 270 | 282 | @ } |
| 271 | 283 | @ </script> |
| 284 | + |
| 272 | 285 | style_footer(); |
| 273 | 286 | } |
| 274 | 287 | |