Check-in [b81e93f576]
Not logged in
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
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/>