All Downloads are FREE. Search and download functionalities are using the official Maven repository.

sunlabs.brazil.template.UrlNavBarTemplate Maven / Gradle / Ivy

The newest version!
/*
 * UrlNavBarTemplate.java
 *
 * Brazil project web application toolkit,
 * export version: 2.3 
 * Copyright (c) 2000-2002 Sun Microsystems, Inc.
 *
 * Sun Public License Notice
 *
 * The contents of this file are subject to the Sun Public License Version 
 * 1.0 (the "License"). You may not use this file except in compliance with 
 * the License. A copy of the License is included as the file "license.terms",
 * and also available at http://www.sun.com/
 * 
 * The Original Code is from:
 *    Brazil project web application toolkit release 2.3.
 * The Initial Developer of the Original Code is: suhler.
 * Portions created by suhler are Copyright (C) Sun Microsystems, Inc.
 * All Rights Reserved.
 * 
 * Contributor(s): suhler.
 *
 * Version:  2.1
 * Created by suhler on 00/05/22
 * Last modified by suhler on 02/10/01 16:36:39
 *
 * Version Histories:
 *
 * 2.1 02/10/01-16:36:39 (suhler)
 *   version change
 *
 * 1.8 02/07/24-10:46:46 (suhler)
 *   doc updates
 *
 * 1.7 02/05/01-11:27:34 (suhler)
 *   fix sccs version info
 *
 * 1.6 00/12/11-13:30:40 (suhler)
 *   add class=props for automatic property extraction
 *
 * 1.5 00/10/09-10:53:13 (suhler)
 *   added IncludeDir flag to include nav bar entries even if the url ends with /
 *
 * 1.4 00/07/07-15:32:43 (suhler)
 *   do processing in "init" instead of "done" (duh!), add prepend
 *   option to modify properties
 *
 * 1.3 00/05/31-13:50:38 (suhler)
 *   name change
 *
 * 1.2 00/05/24-11:27:01 (suhler)
 *   redo properties extraction
 *
 * 1.2 00/05/22-14:44:27 (Codemgr)
 *   SunPro Code Manager data about conflicts, renames, etc...
 *   Name history : 1 0 handlers/templates/UrlNavBarTemplate.java
 *
 * 1.1 00/05/22-14:44:26 (suhler)
 *   date and time created 00/05/22 14:44:26 by suhler
 *
 */

package sunlabs.brazil.template;

import java.util.StringTokenizer;
import sunlabs.brazil.server.Server;

/**
 * Template class for dynamically generating a navigation bar
 * by looking at portions of the url.
 * Given url:
 *  /main/next/last/foo.html
 * generate the request properties for the directories:
 *   main, next,  and last.
 * The properties will be:
 * 
 * NAV.main=/main/
 * NAV.next=/main/next/ ....
 * NAV.=main/next/....
 * 
* These properties may be incorporated into web pages using the * BSLTemplate's <foreach> tag, using a delimeter of "/" to * iterate over the listings. *

* The follow request properties are consulted: *

*
prepend
Use as a prefix on the property name, instead * of "NAV.". *
includeDir
Normally, if the URL refers to the directory ( * e.g. it ends with a /), no nav bar entry is generated. * If this property is set, the entry is generated. *
* * @author Stephen Uhler * @version @(#)UrlNavBarTemplate.java 2.1 */ public class UrlNavBarTemplate extends Template { StringBuffer navbar; // the extracted NavBar StringBuffer url; // the url to date /** * Compute a set of properties based on the URL */ public boolean init(RewriteContext hr) { url = new StringBuffer("/"); String prepend = hr.request.props.getProperty(hr.prefix + "prepend", "NAV."); String includeDir = (hr.request.props.getProperty(hr.prefix + "includeDir") == null) ? "" : "x"; StringTokenizer st = new StringTokenizer(hr.request.url + includeDir, "/"); int count = 0; String path = null; while (st.hasMoreTokens()) { String dir = st.nextToken(); if (!st.hasMoreTokens()) { break; } url.append(dir + "/"); if (url.equals(hr.request.url)) { break; } count++; path = url.toString(); hr.request.props.put(prepend + dir, path); } if (count > 0) { hr.request.props.put(prepend, path.substring(1,path.length()-1)); } hr.request.log(Server.LOG_DIAGNOSTIC,hr.prefix, "Computing nav-bar entries: " + count); return true; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy