Overview
SHA1 Hash: | b81e93f576cbddf770771c6835864bfc3e6061c9 |
---|---|
Date: | 2008-02-03 17:22:58 |
User: | stephan |
Comment: | Corrected incorrect access rights check (did require Setup rights). Documentation corrections/additions. A few style conformance formatting changes. |
Timelines: | ancestors | descendants | both | trunk |
Other Links: | files | ZIP archive | manifest |
Tags And Properties
- branch=trunk inherited from [a28c83647d]
- sym-trunk inherited from [a28c83647d]
Changes
[hide diffs]Modified src/tagview.c from [cee508f4de] to [83c508c8f6].
@@ -28,21 +28,19 @@ #include <assert.h> #include "config.h" #include "tagview.h" /** -tagview_strxform_f is a typedef for funcs with -the following policy: - -The accept a string which they then transform into -some other form. They return a transformed copy, -which the caller is responsible for freeing. - -The intention of this is to provide a way for -a generic query routine to format specific column -data (e.g. transform an object ID into a link to -that object). +tagview_strxform_f is a typedef for funcs with the following policy: + +They accept a const string which they then transform into some other +form. They return a transformed copy, which the caller is responsible +for freeing. + +The intention of this is to provide a way for a generic query routine +to format specific column data (e.g. transform an object ID into a +link to that object). */ typedef char * (*tagview_strxform_f)( char const * ); #if 0 /** A no-op transformer which can be used as a placeholder. */ @@ -57,30 +55,30 @@ #endif /** Returns a hyperlink to uuid. */ static char * tagview_xf_link_to_uuid( char const * uuid ) { - const int offset = 10; - char shortname[offset+1]; - shortname[offset] = '\0'; - memcpy( shortname, uuid, offset ); - return mprintf( "<tt><a href='%s/vinfo/%s'><strong>%s</strong>%s</a></tt>", - g.zBaseURL, uuid, shortname, uuid+offset ); + const int offset = 10; + char shortname[offset+1]; + shortname[offset] = '\0'; + memcpy( shortname, uuid, offset ); + return mprintf( "<tt><a href='%s/vinfo/%s'><strong>%s</strong>%s</a></tt>", + g.zBaseURL, uuid, shortname, uuid+offset ); } /** Returns a hyperlink to the given tag. */ static char * tagview_xf_link_to_tagid( char const * tagid ) { return mprintf( "<a href='%s/tagview?tagid=%s'>%s</a>", - g.zBaseURL, tagid, tagid ); + g.zBaseURL, tagid, tagid ); } /** Returns a hyperlink to the named tag. */ static char * tagview_xf_link_to_tagname( char const * tagid ) { return mprintf( "<a href='%s/tagview/%s'>%s</a>", - g.zBaseURL, tagid, tagid ); + g.zBaseURL, tagid, tagid ); } /** @@ -90,21 +88,21 @@ * results. * * The sql parameter should be a single, complete SQL statement. * * The coln parameter is optional (it may be 0). If it is 0 then the -* column names using in the output will be taken directly from the +* column names used in the output will be taken directly from the * SQL. If it is not null then it must have as many entries as the SQL * result has columns. Each entry is a column name for the SQL result * column of the same index. Any given entry may be 0, in which case * the column name from the SQL is used. * * The xform argument is an array of transformation functions (type * tagview_strxform_f). The array, or any single entry, may be 0, but * if the array is non-0 then it must have at least as many entries as * colnames does. Each index corresponds directly to an entry in -* colnames and the SQL results. Any given entry may be 0 If it has +* colnames and the SQL results. Any given entry may be 0. If it has * fewer, undefined behaviour results. If a column has an entry in * xform, then the xform function will be called to transform the * column data before rendering it. This function takes care of freeing * the strings created by the xform functions. * @@ -154,11 +152,10 @@ @ <td>%s(db_column_name(&st,i))</td> } } @ </tr> - while( SQLITE_ROW == db_step(&st) ){ @ <tr> for( i = 0; i < colc; ++i ) { char * xf = 0; char const * xcf = 0; @@ -189,17 +186,18 @@ @ <h2>Tags matching [%s(likeclause)]:</h2> } else { limitstr = mprintf( "LIMIT %d", limit ); - @ <h2>%d(limit) most recent tags:</h2> + @ <h2>%d(limit) most recent non-wiki tags:</h2> } char * sql = mprintf( "SELECT t.tagid, t.tagname, DATETIME(tx.mtime), b.uuid " "FROM tag t, tagxref tx, blob b " "WHERE (t.tagid=tx.tagid) and (tx.srcid=b.rid) " "AND (tx.tagtype != 0) %s " + "AND t.tagname NOT GLOB 'wiki-*' " "ORDER BY tx.mtime DESC %s", likeclause ? likeclause : " ", limitstr ? limitstr : " " ); /* " AND t.tagname NOT GLOB 'wiki-*'" // Do we want this?? */ @@ -229,11 +227,13 @@ @ <input type='submit'/> @ </form> @ </div> } - +/** + tagview_page_default() renders the default page for tagview_page(). +*/ static void tagview_page_default(void){ tagview_page_list_tags( 0 ); } /** @@ -244,20 +244,21 @@ @ <h2>Tag #%d(tagid):</h2> char * sql = mprintf( "SELECT DISTINCT (t.tagname), DATETIME(tx.mtime), b.uuid " "FROM tag t, tagxref tx, blob b " "WHERE (t.tagid=%d) AND (t.tagid=tx.tagid) AND (tx.srcid=b.rid) " + "AND t.tagname NOT GLOB 'wiki-*' " "ORDER BY tx.mtime DESC", tagid); char const * const colnames[] = { "Tag Name", "Timestamp", "Version" - }; + }; tagview_strxform_f xf[] = { tagview_xf_link_to_tagname, 0, tagview_xf_link_to_uuid - }; + }; tagview_run_query( sql, colnames, xf ); free(sql); } /** @@ -268,10 +269,11 @@ @ <h2>Tag '%s(tagname)':</h2> char * sql = mprintf( "SELECT DISTINCT t.tagid, DATETIME(tx.mtime), b.uuid " "FROM tag t, tagxref tx, blob b " "WHERE (t.tagname='%q') AND (t.tagid=tx.tagid) AND (tx.srcid=b.rid) " + "AND t.tagname NOT GLOB 'wiki-*' " "ORDER BY tx.mtime DESC", tagname); char const * const colnames[] = { "Tag ID", "Timestamp", "Version" }; @@ -289,11 +291,11 @@ ** WEBPAGE: /tagview */ void tagview_page(void){ login_check_credentials(); - if( !g.okSetup ){ + if( !g.okRdWiki ){ login_needed(); } style_header("Tags"); tagview_page_search_miniform(); @ <hr/>