coar        99/01/04 06:35:56

  Modified:    .        STATUS
               htdocs/manual/mod mod_autoindex.html
               src      CHANGES
               src/modules/standard mod_autoindex.c
  Log:
        Allow fancyindexed directories to be presorted in some other way
        than by name.
  
  PR:           1699
  Submitted by: Ken Coar
  Reviewed by:  Martin Kraemer
  
  Revision  Changes    Path
  1.587     +1 -7      apache-1.3/STATUS
  
  Index: STATUS
  ===================================================================
  RCS file: /home/cvs/apache-1.3/STATUS,v
  retrieving revision 1.586
  retrieving revision 1.587
  diff -u -r1.586 -r1.587
  --- STATUS    1999/01/03 13:46:16     1.586
  +++ STATUS    1999/01/04 14:35:52     1.587
  @@ -1,5 +1,5 @@
     1.3 STATUS:
  -  Last modified at [$Date: 1999/01/03 13:46:16 $]
  +  Last modified at [$Date: 1999/01/04 14:35:52 $]
   
   Release:
   
  @@ -93,12 +93,6 @@
            vhost-xxx.html document out of it. -- rse
   
   Available Patches:
  -
  -    * Ken's default sort order for autoindexed listings
  -      First pass for concept; maybe directive should be renamed or
  -      syntax changed?
  -     Message-ID: <[EMAIL PROTECTED]>
  -     Status: Ken +1 (concept), Martin +1 (concept)
   
       * Lars' 'binbuild' patch
           Message-ID: <[EMAIL PROTECTED]>
  
  
  
  1.30      +61 -0     apache-1.3/htdocs/manual/mod/mod_autoindex.html
  
  Index: mod_autoindex.html
  ===================================================================
  RCS file: /home/cvs/apache-1.3/htdocs/manual/mod/mod_autoindex.html,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- mod_autoindex.html        1998/10/22 17:43:20     1.29
  +++ mod_autoindex.html        1999/01/04 14:35:53     1.30
  @@ -74,6 +74,7 @@
   <LI><A HREF="#headername">HeaderName</A>
   <LI><A HREF="#indexignore">IndexIgnore</A>
   <LI><A HREF="#indexoptions">IndexOptions</A>
  +<LI><A HREF="#indexorderdefault">IndexOrderDefault</A>
   <LI><A HREF="#readmename">ReadmeName</A>
   </MENU>
   <HR>
  @@ -668,6 +669,66 @@
   </P>
   </DD>
   </DL>
  +
  +<HR>
  +
  +<H2><A NAME="indexorderdefault">IndexOrderDefault</A></H2>
  +<!--%plaintext &lt;?INDEX {\tt IndexOrderDefault} directive&gt; -->
  +<A
  + HREF="directive-dict.html#Syntax"
  + REL="Help"
  +><STRONG>Syntax:</STRONG></A> IndexOrderDefault
  +    <EM>Ascending|Descending</EM> <EM>Name|Date|Size|Description</EM>
  +<BR>
  +<A
  + HREF="directive-dict.html#Context"
  + REL="Help"
  +><STRONG>Context:</STRONG></A> server config, virtual host, directory,
  +    .htaccess
  +<BR>
  +<A
  + HREF="directive-dict.html#Override"
  + REL="Help"
  +><STRONG>Override:</STRONG></A> Indexes
  +<BR>
  +<A
  + HREF="directive-dict.html#Status"
  + REL="Help"
  +><STRONG>Status:</STRONG></A> Base
  +<BR>
  +<A
  + HREF="directive-dict.html#Module"
  + REL="Help"
  +><STRONG>Module:</STRONG></A> mod_autoindex
  +<BR>
  +<A
  + HREF="directive-dict.html#Compatibility"
  + REL="Help"
  +><STRONG>Compatibility:</STRONG></A> IndexOrderDefault is only available in
  +Apache 1.3.4 and later.
  +
  +<P>
  +The <SAMP>IndexOrderDefault</SAMP> directive is used in combination with
  +the <A HREF="#indexoptions:fancyindexing"><SAMP>FancyIndexing</SAMP></A>
  +index option.  By default, fancyindexed directory listings are displayed in 
ascending order by filename; the <SAMP>IndexOrderDefault</SAMP> allows
  +you to change this initial display order.
  +</P>
  +<P>
  +<SAMP>IndexOrderDefault</SAMP> takes two arguments.  The first must be either
  +<SAMP>Ascending</SAMP> or <SAMP>Descending</SAMP>, indicating the direction
  +of the sort.  The second argument must be one of the keywords
  +<SAMP>Name</SAMP>, <SAMP>Date</SAMP>, <SAMP>Size</SAMP>, or
  +<SAMP>Description</SAMP>, and identifies the primary key.  The secondary
  +key is <EM>always</EM> the ascending filename.
  +</P>
  +<P>
  +You can force a directory listing to only be displayed in a particular
  +order by combining this directive with the
  +<A HREF="#indexoptions:suppresscolumnsorting"
  +><SAMP>SuppressColumnSorting</SAMP></A> index option; this will prevent
  +the client from requesting the directory listing in a different order.
  +</P>
  +
   <HR>
   
   <H2><A NAME="readmename">ReadmeName</A></H2>
  
  
  
  1.1200    +5 -1      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1199
  retrieving revision 1.1200
  diff -u -r1.1199 -r1.1200
  --- CHANGES   1999/01/03 16:45:23     1.1199
  +++ CHANGES   1999/01/04 14:35:54     1.1200
  @@ -1,5 +1,8 @@
   Changes with Apache 1.3.4
   
  +  *) Added IndexOrderDefault directive to supply a default sort order
  +     for FancyIndexed directory listings.  [Ken Coar] PR#1699
  +
     *) Change the ap_assert macro to a variant that works on all platforms.
        [Richard Prinz <[EMAIL PROTECTED]>] PR#2575
   
  @@ -19,7 +22,8 @@
    
     *) Make top-level Makefile aware of a parallel build procedures (make -j) 
by
        making sure the src/support/ tools are _forced_ to be build last (they
  -     depend on other libraries). [Markus Theissinger <[EMAIL PROTECTED]>]
  +     depend on other libraries).
  +     [Markus Theissinger <[EMAIL PROTECTED]>]
   
     *) Fix installation procedure: Now that os-inline.c is actually used (a
        recently fixed bug prevented this) we need to also install os-include.c
  
  
  
  1.100     +54 -2     apache-1.3/src/modules/standard/mod_autoindex.c
  
  Index: mod_autoindex.c
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/modules/standard/mod_autoindex.c,v
  retrieving revision 1.99
  retrieving revision 1.100
  diff -u -r1.99 -r1.100
  --- mod_autoindex.c   1999/01/01 19:05:07     1.99
  +++ mod_autoindex.c   1999/01/04 14:35:55     1.100
  @@ -141,6 +141,7 @@
       int name_adjust;
       int icon_width;
       int icon_height;
  +    char *default_order;
   
       array_header *icon_list, *alt_list, *desc_list, *ign_list;
       array_header *hdr_list, *rdme_list;
  @@ -442,6 +443,48 @@
       return NULL;
   }
   
  +static const char *set_default_order(cmd_parms *cmd, void *m, char 
*direction,
  +                                  char *key)
  +{
  +    char temp[4];
  +    autoindex_config_rec *d_cfg = (autoindex_config_rec *) m;
  +
  +    ap_cpystrn(temp, "k=d", sizeof(temp));
  +    if (!strcasecmp(direction, "Ascending")) {
  +     temp[2] = D_ASCENDING;
  +    }
  +    else if (!strcasecmp(direction, "Descending")) {
  +     temp[2] = D_DESCENDING;
  +    }
  +    else {
  +     return "First keyword must be 'Ascending' or 'Descending'";
  +    }
  +
  +    if (!strcasecmp(key, "Name")) {
  +     temp[0] = K_NAME;
  +    }
  +    else if (!strcasecmp(key, "Date")) {
  +     temp[0] = K_LAST_MOD;
  +    }
  +    else if (!strcasecmp(key, "Size")) {
  +     temp[0] = K_SIZE;
  +    }
  +    else if (!strcasecmp(key, "Description")) {
  +     temp[0] = K_DESC;
  +    }
  +    else {
  +     return "Second keyword must be 'Name', 'Date', 'Size', or "
  +         "'Description'";
  +    }
  +
  +    if (d_cfg->default_order == NULL) {
  +     d_cfg->default_order = ap_palloc(cmd->pool, 4);
  +     d_cfg->default_order[3] = '\0';
  +    }
  +    ap_cpystrn(d_cfg->default_order, temp, sizeof(temp));
  +    return NULL;
  +}
  +
   #define DIR_CMD_PERMS OR_INDEXES
   
   static const command_rec autoindex_cmds[] =
  @@ -460,6 +503,8 @@
        "alternate descriptive text followed by one or more content encodings"},
       {"IndexOptions", add_opts, NULL, DIR_CMD_PERMS, RAW_ARGS,
        "one or more index options"},
  +    {"IndexOrderDefault", set_default_order, NULL, DIR_CMD_PERMS, TAKE2,
  +     "{Ascending,Descending} {Name,Size,Description,Date}"},
       {"IndexIgnore", add_ignore, NULL, DIR_CMD_PERMS, ITERATE,
        "one or more file extensions"},
       {"AddDescription", add_desc, BY_PATH, DIR_CMD_PERMS, ITERATE2,
  @@ -492,6 +537,7 @@
       new->opts = 0;
       new->incremented_opts = 0;
       new->decremented_opts = 0;
  +    new->default_order = NULL;
   
       return (void *) new;
   }
  @@ -570,6 +616,8 @@
        new->name_adjust = add->name_adjust;
       }
   
  +    new->default_order = (add->default_order != NULL)
  +     ? add->default_order : base->default_order;
       return new;
   }
   
  @@ -1326,9 +1374,13 @@
        qstring = r->args;
   
        /*
  -      * If no QUERY_STRING was specified, we use the default: ascending
  -      * by name.
  +      * If no QUERY_STRING was specified, we use the default specified
  +      * by the IndexOrderDefault directive (if there is one); otherwise,
  +      * we fall back to ascending by name.
         */
  +     if ((qstring == NULL) || (*qstring == '\0')) {
  +         qstring = autoindex_conf->default_order;
  +     }
        if ((qstring == NULL) || (*qstring == '\0')) {
            keyid = K_NAME;
            direction = D_ASCENDING;
  
  
  

Reply via email to