incubator-jspwiki-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Jaquith <andrew.r.jaqu...@gmail.com>
Subject Re: svn commit: r917390 - in /incubator/jspwiki/trunk: ./ src/java/org/apache/wiki/ src/java/org/apache/wiki/plugin/ src/java/org/apache/wiki/preferences/ src/java/org/apache/wiki/rpc/json/ src/java/org/apache/wiki/tags/ src/java/org/apache/wiki/ui/
Date Wed, 03 Mar 2010 14:57:13 GMT
That isn't a good example. The layout JSPs define a standard look, and  
standard resources, which can be overridden in the template JSPs when  
they need something special. Essentially, the template JSP uses the  
s:layout-render tag to instruct which layout to use, and one more  
s:layout-component tags to override the JS, CSS, page title, etc.

For example, the template JSP templates/default/Preferences.jsp  
overrides the JavaScript component so that jspwiki-prefs.js is  
included. The editors are handled the same way. We add jspwiki-edit.js  
in Edit.jsp, for example.

The plugin resources example is a valid example, though. I've got some  
ideas on how to do this safely but haven't had time to document them.  
(This is a very crazy week for me, professionally.)

Andrew


On Mar 3, 2010, at 0:14, Janne Jalkanen <janne.jalkanen@ecyrd.com>  
wrote:

>
> Yup, this is also good example.  I don't think having to edit layout  
> jsp's is a good admin experience when you're deploying a new  
> component.
>
> /Janne
>
> On 2 Mar 2010, at 23:38, Dirk Frederickx wrote:
>
>> Another example is the editor jsp, such as plain.jsp.  It uses
>> jspwiki-edit.js,  (which probably would better be named as plain.js )
>>
>> However, currenly, jspwiki-edit.js is injected in another jsp (a  
>> layout jsp)
>>
>>
>> When you would use the FCK editor, however, another javascript (and  
>> probably
>> also css) is needed.
>> However, the layout jsp is not aware of every editor to add-in the  
>> correct
>> resources.
>>
>>
>> dirk
>>
>> On Mon, Mar 1, 2010 at 7:46 PM, Janne Jalkanen <janne.jalkanen@ecyrd.com 
>> >wrote:
>>
>>>
>>> Hm?  If RequestResourceTag and IncludeResourcesTag are gone, then  
>>> how do
>>> plugins request resources, and how do individual templates then  
>>> fall back to
>>> resources they don't include?  I've got a bunch of code that  
>>> assumes that
>>> templates can fall back to resources (e.g. images) from default  
>>> template,
>>> and plugins which request CSS and other components.
>>>
>>> /Janne
>>>
>>> On 1 Mar 2010, at 07:23, ajaquith@apache.org wrote:
>>>
>>>> Author: ajaquith
>>>> Date: Mon Mar  1 05:23:10 2010
>>>> New Revision: 917390
>>>>
>>>> URL: http://svn.apache.org/viewvc?rev=917390&view=rev
>>>> Log:
>>>> Cleaned out all of the deadwood in TemplateManager. Deprecated
>>> IncludeResourcesTag and RequestResourceTag. Resources can (and  
>>> should) be
>>> included directly in template JSPs.
>>>>
>>>> Modified:
>>>>  incubator/jspwiki/trunk/ChangeLog
>>>>  incubator/jspwiki/trunk/src/java/org/apache/wiki/Release.java
>>>>  incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/Note.java
>>>>
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/preferences/ 
>>> Preferences.java
>>>>
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/rpc/json/ 
>>> JSONRPCManager.java
>>>>  incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>>> ContentTag.java
>>>>  incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>>> EditorTag.java
>>>>
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> IncludeResourcesTag.java
>>>>  incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>>> IncludeTag.java
>>>>
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> RequestResourceTag.java
>>>>  incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/ 
>>>> EditorManager.java
>>>>
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/ 
>>> TemplateManager.java
>>>>
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/stripes/ 
>>> TemplateResolution.java
>>>>
>>>> Modified: incubator/jspwiki/trunk/ChangeLog
>>>> URL:
>>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/ChangeLog?rev=917390&r1=917389&r2=917390&view=diff
>>>>
>>> === 
>>> === 
>>> === 
>>> === 
>>> ==================================================================
>>>> --- incubator/jspwiki/trunk/ChangeLog (original)
>>>> +++ incubator/jspwiki/trunk/ChangeLog Mon Mar  1 05:23:10 2010
>>>> @@ -1,3 +1,30 @@
>>>> +2010-02-28 Andrew Jaquith <ajaquith AT apache DOT org>
>>>> +
>>>> +        * 3.0.0-svn-212
>>>> +
>>>> +        * Exceptions caught by WikiTagBase (and subclass tags)  
>>>> are now
>>>> +        re-thrown so that they propagate upstream. Previously,  
>>>> doCatch()
>>>> +        was swallowing them, which made for "interesting" JSP  
>>>> debugging.
>>>> +
>>>> +        * Edit.jsp, Wiki.jsp, and PageInfo.jsp changed to put the
>>>> +        edit tab on the right. For editing, the live-preview  
>>>> feature was
>>>> +        moved to a new "Preview" tab, also on the right. The  
>>>> View tab
>>>> +        now simply displays the most recent save.
>>>> +
>>>> +        * The Error.jsp references were made consistent in all  
>>>> JSPs.
>>>> +        Rather than use JSTL syntax (which won't evaluate when  
>>>> used
>>>> +        with <% page errorPage %> tag), the references now all use
>>>> +        /Error.jsp, which itself jsp:includes the template JSP
>>>> +        Error.jsp using JSTL. This makes the error page  
>>>> customizable
>>>> +        per-template, but still very easy to use.
>>>> +
>>>> +        * Cleaned out all of the deadwood in TemplateManager.
>>>> +        Deprecated IncludeResourcesTag and RequestResourceTag.  
>>>> Resources
>>>> +        can (and should) be included directly in template JSPs.
>>>> +
>>>> +        * Small changes to Admin/AdministerProfiles action beans  
>>>> as part
>>>> +        of a gradual overhaul to the Admin JSPs, which are being
>>> Stripesed.
>>>> +
>>>> 2010-02-28 Dirk Frederickx <brushed@apache.org>
>>>>
>>>>       * v3.0.0-svn-211 : line up with latest template/stripes  
>>>> changes
>>>> @@ -35,7 +62,7 @@
>>>>       * fixed a couple of Plugin unit tests (support for wiki  
>>>> spaces is
>>>>         not yet there), only the ReferringPagesPlugin still fails.
>>>>
>>>> -2010-02-23 Andrew Jaquith <ajaquith AT apache DOT org>
>>>> +2010-02-27 Andrew Jaquith <ajaquith AT apache DOT org>
>>>>
>>>>       * 3.0.0-svn-209
>>>>
>>>>
>>>> Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/ 
>>>> Release.java
>>>> URL:
>>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/Release.java?rev=917390&r1=917389&r2=917390&view=diff
>>>>
>>> === 
>>> === 
>>> === 
>>> === 
>>> ==================================================================
>>>> --- incubator/jspwiki/trunk/src/java/org/apache/wiki/Release.java
>>> (original)
>>>> +++ incubator/jspwiki/trunk/src/java/org/apache/wiki/Release.java  
>>>> Mon Mar
>>> 1 05:23:10 2010
>>>> @@ -77,7 +77,7 @@
>>>>    *  <p>
>>>>    *  If the build identifier is empty, it is not added.
>>>>    */
>>>> -    public static final String     BUILD         = "211";
>>>> +    public static final String     BUILD         = "212";
>>>>
>>>>   /**
>>>>    *  This is the generic version string you should use
>>>>
>>>> Modified:
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/Note.java
>>>> URL:
>>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/Note.java?rev=917390&r1=917389&r2=917390&view=diff
>>>>
>>> === 
>>> === 
>>> === 
>>> === 
>>> ==================================================================
>>>> --- incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/ 
>>>> Note.java
>>> (original)
>>>> +++ incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/ 
>>>> Note.java Mon
>>> Mar  1 05:23:10 2010
>>>> @@ -27,6 +27,7 @@
>>>> import org.apache.wiki.WikiContext;
>>>> import org.apache.wiki.WikiEngine;
>>>> import org.apache.wiki.api.PluginException;
>>>> +import org.apache.wiki.ui.TemplateManager;
>>>> import org.apache.wiki.util.TextUtil;
>>>>
>>>>
>>>> @@ -86,9 +87,7 @@
>>>>
>>>>       commentImage = "images/"+commentImage;
>>>>
>>>> -        String resource = engine.getTemplateManager 
>>>> ().findResource( ctx,
>>>> -
>>> engine.getTemplateDir(),
>>>> -
>>> commentImage );
>>>> +        String resource = TemplateManager.getResourceResolver(
>>> engine.getServletContext() ).get( commentImage );
>>>>
>>>>       return ctx.getURL( WikiContext.NONE, resource );
>>>>   }
>>>>
>>>> Modified:
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/preferences/ 
>>> Preferences.java
>>>> URL:
>>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/preferences/Preferences.java?rev=917390&r1=917389&r2=917390&view=diff
>>>>
>>> === 
>>> === 
>>> === 
>>> === 
>>> ==================================================================
>>>> ---
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/preferences/ 
>>> Preferences.java
>>> (original)
>>>> +++
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/preferences/ 
>>> Preferences.java
>>> Mon Mar  1 05:23:10 2010
>>>> @@ -310,7 +310,7 @@
>>>>       }
>>>>       else if( "availableSkins".equals( key ) )
>>>>       {
>>>> -            return m_engine.getTemplateManager().listSkins(
>>> m_engine.getServletContext(), m_engine.getTemplateDir() );
>>>> +            return m_engine.getTemplateManager().listSkins();
>>>>       }
>>>>       else if( "availableTimeFormats".equals( key ) )
>>>>       {
>>>>
>>>> Modified:
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/rpc/json/ 
>>> JSONRPCManager.java
>>>> URL:
>>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/rpc/json/JSONRPCManager.java?rev=917390&r1=917389&r2=917390&view=diff
>>>>
>>> === 
>>> === 
>>> === 
>>> === 
>>> ==================================================================
>>>> ---
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/rpc/json/ 
>>> JSONRPCManager.java
>>> (original)
>>>> +++
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/rpc/json/ 
>>> JSONRPCManager.java
>>> Mon Mar  1 05:23:10 2010
>>>> @@ -38,7 +38,6 @@
>>>> import org.apache.wiki.log.LoggerFactory;
>>>> import org.apache.wiki.rpc.RPCCallable;
>>>> import org.apache.wiki.rpc.RPCManager;
>>>> -import org.apache.wiki.ui.TemplateManager;
>>>> import org.jabsorb.callback.InvocationCallback;
>>>> import org.jabsorb.JSONRPCBridge;
>>>>
>>>> @@ -149,15 +148,6 @@
>>>>    */
>>>>   public static void requestJSON( WikiContext context )
>>>>   {
>>>> -        TemplateManager.addResourceRequest(context,
>>>> -
>>> TemplateManager.RESOURCE_SCRIPT,
>>>> -
>>> context.getURL(WikiContext.NONE,"scripts/json-rpc/jsonrpc.js"));
>>>> -
>>>> -        String jsonurl = context.getURL( WikiContext.NONE, "JSON- 
>>>> RPC" );
>>>> -        TemplateManager.addResourceRequest(context,
>>>> -
>>> TemplateManager.RESOURCE_JSFUNCTION,
>>>> -                                           "jsonrpc = new
>>> JSONRpcClient(\""+jsonurl+"\");");
>>>> -
>>>>       getBridge(context).registerCallback(new WikiJSONAccessor(),
>>> HttpServletRequest.class);
>>>>   }
>>>>
>>>>
>>>> Modified:
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> ContentTag.java
>>>> URL:
>>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ContentTag.java?rev=917390&r1=917389&r2=917390&view=diff
>>>>
>>> === 
>>> === 
>>> === 
>>> === 
>>> ==================================================================
>>>> --- incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>>> ContentTag.java
>>> (original)
>>>> +++ incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>>> ContentTag.java
>>> Mon Mar  1 05:23:10 2010
>>>> @@ -28,6 +28,7 @@
>>>>
>>>> import org.apache.wiki.*;
>>>> import org.apache.wiki.providers.ProviderException;
>>>> +import org.apache.wiki.ui.TemplateManager;
>>>>
>>>>
>>>> /**
>>>> @@ -181,9 +182,7 @@
>>>>               contentTemplate = beanName + "Content.jsp";
>>>>           }
>>>>
>>>> -            String page =
>>> m_wikiContext.getEngine().getTemplateManager().findJSP( pageContext,
>>>> -
>>>        m_wikiContext.getTemplate(),
>>>> -
>>>        contentTemplate );
>>>> +            String page = TemplateManager.getResourceResolver(
>>> pageContext.getServletContext() ).get( contentTemplate );
>>>>           pageContext.include( page );
>>>>       }
>>>>       catch( ServletException e )
>>>>
>>>> Modified:
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/EditorTag.java
>>>> URL:
>>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/EditorTag.java?rev=917390&r1=917389&r2=917390&view=diff
>>>>
>>> === 
>>> === 
>>> === 
>>> === 
>>> ==================================================================
>>>> --- incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>>> EditorTag.java
>>> (original)
>>>> +++ incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>>> EditorTag.java
>>> Mon Mar  1 05:23:10 2010
>>>> @@ -27,6 +27,7 @@
>>>>
>>>> import org.apache.wiki.WikiEngine;
>>>> import org.apache.wiki.ui.EditorManager;
>>>> +import org.apache.wiki.ui.TemplateManager;
>>>>
>>>>
>>>> /**
>>>> @@ -58,10 +59,7 @@
>>>>
>>>>       try
>>>>       {
>>>> -            String page = engine.getTemplateManager().findJSP(
>>> pageContext,
>>>> -
>>> m_wikiContext.getTemplate(),
>>>> -
>>> editorPath );
>>>> -
>>>> +            String page = TemplateManager.getResourceResolver(
>>> pageContext.getServletContext() ).get( editorPath );
>>>>           if( page == null )
>>>>           {
>>>>               //FIXME: should be I18N ...
>>>>
>>>> Modified:
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> IncludeResourcesTag.java
>>>> URL:
>>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/IncludeResourcesTag.java?rev=917390&r1=917389&r2=917390&view=diff
>>>>
>>> === 
>>> === 
>>> === 
>>> === 
>>> ==================================================================
>>>> ---
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> IncludeResourcesTag.java
>>> (original)
>>>> +++
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> IncludeResourcesTag.java
>>> Mon Mar  1 05:23:10 2010
>>>> @@ -20,41 +20,34 @@
>>>> */
>>>> package org.apache.wiki.tags;
>>>>
>>>> -import org.apache.wiki.ui.TemplateManager;
>>>>
>>>> /**
>>>> - *  This tag is used to include any programmatic includes into the
>>>> - *  output stream.  Actually, what it does is that it simply  
>>>> emits a
>>>> - *  tiny marker into the stream, and then a ServletFilter will  
>>>> take
>>>> - *  care of the actual inclusion.
>>>> - *
>>>> -*  @deprecated use the Stripes <code>layout-component</code> tags
>>> instead
>>>> + *  <p>This tag is used to include any programmatic includes  
>>>> into the
>>>> + *  output stream. In JSPWiki 2.8 and earlier, this tag emitted a
>>>> + *  tiny marker into the stream which was replaced by  
>>>> ServletFilter.
>>>> + *  <em>This tag has been deprecated because it is unsafe.</em>  
>>>> The
>>>> + *  Stripes layout tags should be used instead. See the default
>>>> + *  template {@code layout/DefaultLayout.jsp} for instructions  
>>>> on how
>>>> + *  to include scripts and other resources in JSPs.</p>
>>>> + *  @deprecated use the Stripes <code>layout-component</code> tags
>>> instead
>>>> */
>>>> public class IncludeResourcesTag extends WikiTagBase
>>>> {
>>>>   private static final long serialVersionUID = 0L;
>>>>
>>>> -    private String m_type;
>>>> -
>>>>   public void initTag()
>>>>   {
>>>>       super.initTag();
>>>> -        m_type = null;
>>>>   }
>>>>
>>>>   public void setType( String type )
>>>>   {
>>>> -        m_type = type;
>>>>   }
>>>>
>>>>   public int doWikiStartTag() throws Exception
>>>>   {
>>>> -        //String marker =
>>> m_wikiContext.getEngine().getTemplateManager().getMarker 
>>> (m_wikiContext,
>>> m_type);
>>>> -        //String marker = TemplateManager.getMarker(pageContext,
>>> m_type);
>>>> -        String marker = TemplateManager.getMarker(m_wikiContext,
>>> m_type);
>>>> -
>>>> -        pageContext.getOut().println( marker );
>>>> -
>>>> +        pageContext.getOut().println( "<!-- Please use the Stripes
>>> layout tags instead " +
>>>> +                     "of IncludeResourcesTag. See
>>> layout/DefaultLayout.jsp for instructions. -->" );
>>>>       return SKIP_BODY;
>>>>   }
>>>>
>>>>
>>>> Modified:
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> IncludeTag.java
>>>> URL:
>>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/IncludeTag.java?rev=917390&r1=917389&r2=917390&view=diff
>>>>
>>> === 
>>> === 
>>> === 
>>> === 
>>> ==================================================================
>>>> --- incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>>> IncludeTag.java
>>> (original)
>>>> +++ incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>>> IncludeTag.java
>>> Mon Mar  1 05:23:10 2010
>>>> @@ -25,6 +25,7 @@
>>>> import javax.servlet.ServletException;
>>>>
>>>> import org.apache.wiki.providers.ProviderException;
>>>> +import org.apache.wiki.ui.TemplateManager;
>>>> import org.apache.wiki.util.TextUtil;
>>>>
>>>>
>>>> @@ -72,10 +73,7 @@
>>>>   {
>>>>       try
>>>>       {
>>>> -            String page =
>>> m_wikiContext.getEngine().getTemplateManager().findJSP( pageContext,
>>>> -
>>>        m_wikiContext.getTemplate(),
>>>> -
>>>        m_page );
>>>> -
>>>> +            String page = TemplateManager.getResourceResolver(
>>> pageContext.getServletContext() ).get( m_page );
>>>>           if( page == null )
>>>>           {
>>>>               pageContext.getOut().println("No template file called
>>> '"+TextUtil.replaceEntities(m_page)+"'");
>>>>
>>>> Modified:
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> RequestResourceTag.java
>>>> URL:
>>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/RequestResourceTag.java?rev=917390&r1=917389&r2=917390&view=diff
>>>>
>>> === 
>>> === 
>>> === 
>>> === 
>>> ==================================================================
>>>> ---
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> RequestResourceTag.java
>>> (original)
>>>> +++
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> RequestResourceTag.java
>>> Mon Mar  1 05:23:10 2010
>>>> @@ -20,21 +20,17 @@
>>>> */
>>>> package org.apache.wiki.tags;
>>>>
>>>> -import org.apache.wiki.ui.TemplateManager;
>>>> -
>>>> /**
>>>> - *  Provides easy access to TemplateManager.addResourceRequest 
>>>> ().  You
>>> may use
>>>> - *  any of the request types defined there.
>>>> - *
>>>> - *  @see TemplateManager
>>>> + *  <p>In JSPWiki 2.8, this tag provided a way to instruct  
>>>> JSPWiki to
>>> insert
>>>> + *  resource requests into JSPs. <em>This tag has been deprecated
>>> because it
>>>> + *  is unsafe.</em> The Stripes layout tags should be used  
>>>> instead. See
>>> the default
>>>> + *  template {@code layout/DefaultLayout.jsp} for instructions  
>>>> on how
>>>> + *  to include scripts and other resources in JSPs.</p>
>>>> *  @deprecated use the Stripes <code>layout-component</code> tags
>>> instead
>>>> */
>>>> public class RequestResourceTag extends WikiTagBase
>>>> {
>>>>   private static final long serialVersionUID = 0L;
>>>> -
>>>> -    private String m_type;
>>>> -    private String m_resource;
>>>>
>>>>   /**
>>>>    *  {@inheritDoc}
>>>> @@ -43,7 +39,6 @@
>>>>   public void initTag()
>>>>   {
>>>>       super.initTag();
>>>> -        m_type = m_resource = null;
>>>>   }
>>>>
>>>>   /**
>>>> @@ -52,57 +47,47 @@
>>>>   @Override
>>>>   public int doWikiStartTag() throws Exception
>>>>   {
>>>> -        if( m_type != null && m_resource != null )
>>>> -        {
>>>> -            TemplateManager.addResourceRequest( m_wikiContext,  
>>>> m_type,
>>> m_resource );
>>>> -        }
>>>> -
>>>>       return SKIP_BODY;
>>>>   }
>>>>
>>>>   /**
>>>> -     *  Returns the resource that is to be added.
>>>> +     *  Always returns the empty string.
>>>>    *
>>>>    *  @return The resource name.
>>>>    */
>>>>   public String getResource()
>>>>   {
>>>> -        return m_resource;
>>>> +        return "";
>>>>   }
>>>>
>>>>   /**
>>>> -     *  Sets the resource name to be added.
>>>> +     *  This method does nothing.
>>>>    *
>>>>    *  @param r Resource identifier.
>>>>    */
>>>>   public void setResource(String r)
>>>>   {
>>>> -        m_resource = r;
>>>> +        // No-op.
>>>>   }
>>>>
>>>>   /**
>>>> -     *  Get the resource type.
>>>> +     *  Always returns the empty string.
>>>>    *
>>>>    *  @return The type of the resource.
>>>>    */
>>>>   public String getType()
>>>>   {
>>>> -        return m_type;
>>>> +        return "";
>>>>   }
>>>>
>>>>   /**
>>>> -     *  Set the type of the resource to be included.  For example,
>>> "script".  Please
>>>> -     *  see the TemplateManager class for more information about  
>>>> the
>>> different kinds
>>>> -     *  of types you can use.
>>>> -     *
>>>> -     *  @see TemplateManager
>>>> +     *  This method does nothing.
>>>>    *
>>>>    *  @param type The type to be set.
>>>>    */
>>>>
>>>>   public void setType(String type)
>>>>   {
>>>> -        m_type = type;
>>>>   }
>>>>
>>>> }
>>>>
>>>> Modified:
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/ 
>>> EditorManager.java
>>>> URL:
>>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/EditorManager.java?rev=917390&r1=917389&r2=917390&view=diff
>>>>
>>> === 
>>> === 
>>> === 
>>> === 
>>> ==================================================================
>>>> ---
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/ 
>>> EditorManager.java
>>> (original)
>>>> +++
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/ 
>>> EditorManager.java Mon
>>> Mar  1 05:23:10 2010
>>>> @@ -73,9 +73,6 @@
>>>>   /** Known name for the plain wikimarkup editor. */
>>>>   public static final String       EDITOR_PLAIN    = "plain";
>>>>
>>>> -    /** Known name for the preview editor component. */
>>>> -    public static final String       EDITOR_PREVIEW  = "preview";
>>>> -
>>>>   /** Known attribute name for storing the user edited text  
>>>> inside a
>>> HTTP parameter. */
>>>>   public static final String       REQ_EDITEDTEXT  = "_editedtext";
>>>>
>>>> @@ -189,9 +186,6 @@
>>>>    */
>>>>   public String getEditorName( WikiContext context )
>>>>   {
>>>> -        if( context.getRequestContext().equals 
>>>> (WikiContext.PREVIEW) )
>>>> -            return EDITOR_PREVIEW;
>>>> -
>>>>       String editor = null;
>>>>
>>>>       // User has set an editor in preferences
>>>>
>>>> Modified:
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/ 
>>> TemplateManager.java
>>>> URL:
>>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/TemplateManager.java?rev=917390&r1=917389&r2=917390&view=diff
>>>>
>>> === 
>>> === 
>>> === 
>>> === 
>>> ==================================================================
>>>> ---
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/ 
>>> TemplateManager.java
>>> (original)
>>>> +++
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/ 
>>> TemplateManager.java Mon
>>> Mar  1 05:23:10 2010
>>>> @@ -20,8 +20,6 @@
>>>> */
>>>> package org.apache.wiki.ui;
>>>>
>>>> -import java.io.IOException;
>>>> -import java.io.InputStream;
>>>> import java.util.*;
>>>>
>>>> import javax.servlet.ServletContext;
>>>> @@ -46,7 +44,7 @@
>>>> */
>>>> public class TemplateManager extends ModuleManager
>>>> {
>>>> -    private static final String SKIN_DIRECTORY = "skins";
>>>> +    private static final String SKIN_DIR = "skins";
>>>>
>>>>   /**
>>>>    * Attribute name for the resource resolver map returned by
>>>> @@ -55,61 +53,14 @@
>>>>    */
>>>>   private static final String RESOURCE_RESOLVER =  
>>>> "resourceResolver";
>>>>
>>>> -    /**
>>>> -     * Requests a JavaScript function to be called during  
>>>> window.onload.
>>> Value
>>>> -     * is {@value}.
>>>> -     */
>>>> -    public static final String RESOURCE_JSFUNCTION = "jsfunction";
>>>> -
>>>> -    /**
>>>> -     * Requests a JavaScript associative array with all localized
>>> strings.
>>>> -     */
>>>> -    public static final String RESOURCE_JSLOCALIZEDSTRINGS =
>>> "jslocalizedstrings";
>>>> -
>>>> -    /**
>>>> -     * Requests a stylesheet to be inserted. Value is {@value}.
>>>> -     */
>>>> -    public static final String RESOURCE_STYLESHEET = "stylesheet";
>>>> -
>>>> -    /**
>>>> -     * Requests a script to be loaded. Value is {@value}.
>>>> -     */
>>>> -    public static final String RESOURCE_SCRIPT = "script";
>>>> -
>>>> -    /**
>>>> -     * Requests inlined CSS. Value is {@value}.
>>>> -     */
>>>> -    public static final String RESOURCE_INLINECSS = "inlinecss";
>>>> -
>>>>   /** The default directory for template resources. Value is  
>>>> {@value}.
>>> */
>>>> -    public static final String DIRECTORY = "templates";
>>>> +    public static final String TEMPLATE_DIR = "templates";
>>>>
>>>>   /** The name of the default template. Value is {@value}. */
>>>>   public static final String DEFAULT_TEMPLATE = "default";
>>>>
>>>> -    /** Name of the file that contains the properties. */
>>>> -    public static final String PROPERTYFILE =  
>>>> "template.properties";
>>>> -
>>>> -    /** I18N string to mark the default locale */
>>>> -    public static final String I18NDEFAULT_LOCALE =
>>> "prefs.user.language.default";
>>>> -
>>>> -    /**
>>>> -     * The name under which the resource includes map is stored  
>>>> in the
>>>> -     * WikiContext.
>>>> -     */
>>>> -    public static final String RESOURCE_INCLUDES =
>>> "jspwiki.resourceincludes";
>>>> -
>>>> -    // private Cache m_propertyCache;
>>>> -
>>>>   protected static final Logger log = LoggerFactory.getLogger(
>>> TemplateManager.class );
>>>>
>>>> -    /** Requests a HTTP header. Value is {@value}. */
>>>> -    public static final String RESOURCE_HTTPHEADER = "httpheader";
>>>> -
>>>> -    private WikiEngine m_engine;
>>>> -
>>>> -    private static final List<WikiModuleInfo> EMPTY_MODULE_LIST =
>>> Collections.emptyList();
>>>> -
>>>>   /**
>>>>    * <p>Resolves requests for resources relative to the
>>>>    * <code>templates/<var>template</var></code> path to the actual
>>> resources,
>>>> @@ -125,8 +76,8 @@
>>>>    * for certain keys to return <code>null</code>. The map itself  
>>>> is
>>>>    * immutable.
>>>>    * </p>
>>>> -     * <p>The resource resolver is guaranteed to initialize if the
>>> ServletContext
>>>> -     * is active, even if the WikiEngine cannot initialize for  
>>>> some
>>> reason.
>>>> +     * <p>The resource resolver is guaranteed to initialize,
>>>> +     * even if the WikiEngine cannot initialize for some reason.
>>>>    * If the WikiEngine does not initialize, the default template
>>>>    * {@link #DEFAULT_TEMPLATE} will be used for all resource
>>> requests.</p>
>>>>    * @param servletContext the servlet context
>>>> @@ -156,10 +107,10 @@
>>>>
>>>>           // Add all of the resources the template contains
>>>>           resolver = new HashMap<String,String>();
>>>> -            addResources( context, resolver, "/" + DIRECTORY +  
>>>> "/" +
>>> template + "/", null );
>>>> +            addResources( context, resolver, "/" + TEMPLATE_DIR  
>>>> + "/" +
>>> template + "/", null );
>>>>
>>>>           // Add resources the template does not contain, but  
>>>> default
>>> does
>>>> -            addResources( context, resolver, "/" + DIRECTORY +  
>>>> "/" +
>>> DEFAULT_TEMPLATE + "/", null );
>>>> +            addResources( context, resolver, "/" + TEMPLATE_DIR  
>>>> + "/" +
>>> DEFAULT_TEMPLATE + "/", null );
>>>>           resolver = Collections.unmodifiableMap( resolver );
>>>>           context.setAttribute( RESOURCE_RESOLVER, resolver );
>>>>       }
>>>> @@ -167,18 +118,49 @@
>>>>   }
>>>>
>>>>   /**
>>>> -     * Creates a new TemplateManager. There is typically one  
>>>> manager per
>>> engine.
>>>> -     *
>>>> -     * @param engine The owning engine.
>>>> -     * @param properties The property list used to initialize  
>>>> this.
>>>> +     * Adds all of the resources under a specified path prefix  
>>>> to the
>>>> +     * resource resolver map, with the "short name" of the path  
>>>> as the
>>>> +     * key, and the full path as the value. The short name is the
>>> portion
>>>> +     * of the path after the prefix. If a resource with that  
>>>> short name
>>>> +     * has already been added to the resource map, it will not  
>>>> be added
>>>> +     * again. Any resources ending in {@code /} (i.e., a  
>>>> directory path)
>>>> +     * will be processed recursively.
>>>> +     * @param context the servlet context
>>>> +     * @param resolver the resource resolver map
>>>> +     * @param prefix the path prefix that the search initiates  
>>>> from
>>>> +     * @param dir the directory to search relative to the path  
>>>> prefix.
>>> If not
>>>> +     * supplied, the path prefix directory itself will be searched
>>>>    */
>>>> -    public TemplateManager( WikiEngine engine, Properties  
>>>> properties )
>>>> +    @SuppressWarnings("unchecked")
>>>> +    private static void addResources( ServletContext context,
>>> Map<String,String> resolver, String prefix, String dir )
>>>>   {
>>>> -        super( engine );
>>>> -        m_engine = engine;
>>>> -        getResourceResolver( engine.getServletContext() );
>>>> -    }
>>>> +        String searchPath = dir == null ? prefix : prefix + dir;
>>>> +        Set<String> resources = context.getResourcePaths 
>>>> ( searchPath );
>>>> +        if ( resources != null )
>>>> +        {
>>>> +            for ( String resource : resources )
>>>> +            {
>>>> +                String shortName = resource.substring 
>>>> ( prefix.length()
>>> );
>>>> +
>>>> +                // Directory: process these entries too
>>>> +                if ( shortName.endsWith( "/" ) )
>>>> +                {
>>>> +                    addResources( context, resolver, prefix,  
>>>> shortName
>>> );
>>>> +                }
>>>>
>>>> +                // Regular resource: add it if we don't have it  
>>>> already
>>>> +                else
>>>> +                {
>>>> +                    boolean alreadyProcessed =  
>>>> resolver.containsKey(
>>> shortName );
>>>> +                    if ( !alreadyProcessed )
>>>> +                    {
>>>> +                        resolver.put( shortName, resource );
>>>> +                    }
>>>> +                }
>>>> +            }
>>>> +        }
>>>> +    }
>>>> +
>>>>   /**
>>>>    * Tries to locate a given resource from the template directory,
>>> relative to
>>>>    * the root of the JSPWiki webapp context (for example,  
>>>> relative to
>>>> @@ -188,63 +170,62 @@
>>>>    * default template path either, <code>null</code> is returned.
>>>>    *
>>>>    *
>>>> -     * @param sContext the servlet context
>>>> +     * @param servletContext the servlet context
>>>>    * @param path the path to the resource; for example,
>>>> -     * <code>/templates/custom/FindContent.jsp</code>
>>>> +     * {@code /templates/custom/FindContent.jsp} or {@code  
>>>> jspwiki.css}.
>>>> +     * If the path starts with a slash (/), the resource is  
>>>> looked up
>>>> +     * relative to the webapp root
>>>>    * @return The name of the resource which was found; for example,
>>>>    * <code>/templates/custom/FindContent.jsp</code> (if it exists  
>>>> in
>>> the
>>>>    * <code>custom</code> template directory), or
>>>>    * <code>/templates/default/FindContent.jsp</code> (if not)
>>>>    */
>>>> -    private static String findResource( ServletContext sContext,  
>>>> String
>>> path )
>>>> +    private static String findResource( ServletContext  
>>>> servletContext,
>>> String path )
>>>>   {
>>>> -        InputStream is = sContext.getResourceAsStream( path );
>>>> -
>>>> -        if( is == null )
>>>> +        if( path.charAt( 0 ) == '/' )
>>>>       {
>>>> -            String defaultPath = makeFullJSPName 
>>>> ( DEFAULT_TEMPLATE,
>>> removeTemplatePart( path ) );
>>>> -            is = sContext.getResourceAsStream( defaultPath );
>>>> -
>>>> -            if( is != null )
>>>> -                path = defaultPath;
>>>> -            else
>>>> -                path = null;
>>>> -        }
>>>> -
>>>> -        if( is != null )
>>>> -        {
>>>> -            try
>>>> -            {
>>>> -                is.close();
>>>> -            }
>>>> -            catch( IOException e )
>>>> -            {
>>>> -            }
>>>> +            // This is already a full path
>>>> +            return findResource( servletContext, path );
>>>>       }
>>>> -
>>>> -        return path;
>>>> +        return getResourceResolver( servletContext ).get( path );
>>>>   }
>>>>
>>>>   /**
>>>> -     * Attempts to find a resource from the given template, and  
>>>> if it's
>>> not
>>>> -     * found attempts to locate it from the default template.
>>>> -     *
>>>> -     * @param sContext
>>>> -     * @param template
>>>> -     * @param name
>>>> -     * @return
>>>> +     * Returns a property, as defined in the template. The  
>>>> evaluation is
>>> lazy,
>>>> +     * i.e. the properties are not loaded until the template is  
>>>> actually
>>> used
>>>> +     * for the first time.
>>>> +     */
>>>> +    /*
>>>> +     * public String getTemplateProperty( WikiContext context,  
>>>> String
>>> key ) {
>>>> +     * String template = context.getTemplate(); try { Properties  
>>>> props =
>>>> +     * (Properties)m_propertyCache.getFromCache( template, -1 );  
>>>> if(
>>> props ==
>>>> +     * null ) { try { props = getTemplateProperties( template );
>>>> +     * m_propertyCache.putInCache( template, props ); } catch(
>>> IOException e ) {
>>>> +     * log.warn("IO Exception while reading template  
>>>> properties",e);
>>> return
>>>> +     * null; } } return props.getProperty( key ); } catch(
>>> NeedsRefreshException
>>>> +     * ex ) { // FIXME return null; } }
>>>>    */
>>>> -    private static String findResource( ServletContext sContext,  
>>>> String
>>> template, String name )
>>>> +    /**
>>>> +     * Returns an absolute path to a given template.
>>>> +     */
>>>> +    private static final String getPath( String template )
>>>>   {
>>>> -        if( name.charAt( 0 ) == '/' )
>>>> -        {
>>>> -            // This is already a full path
>>>> -            return findResource( sContext, name );
>>>> -        }
>>>> +        return "/" + TEMPLATE_DIR + "/" + template + "/";
>>>> +    }
>>>>
>>>> -        String fullname = makeFullJSPName( template, name );
>>>> +    private WikiEngine m_engine;
>>>>
>>>> -        return findResource( sContext, fullname );
>>>> +    /**
>>>> +     * Creates a new TemplateManager. There is typically one  
>>>> manager per
>>> engine.
>>>> +     *
>>>> +     * @param engine The owning engine.
>>>> +     * @param properties The property list used to initialize  
>>>> this.
>>>> +     */
>>>> +    public TemplateManager( WikiEngine engine, Properties  
>>>> properties )
>>>> +    {
>>>> +        super( engine );
>>>> +        m_engine = engine;
>>>> +        getResourceResolver( engine.getServletContext() );
>>>>   }
>>>>
>>>>   /**
>>>> @@ -252,53 +233,17 @@
>>>>    * current context or by the absolute name.
>>>>    *
>>>>    * @param pageContext the JSP PageContext
>>>> -     * @param name The name of the JSP page to look for (e.g  
>>>> "Wiki.jsp")
>>>> +     * @param name The name of the JSP page to look for (e.g  
>>>> {@code
>>> Wiki.jsp})
>>>>    * @return The context path to the resource
>>>> +     * @deprecated use {@link #getResourceResolver 
>>>> (ServletContext)}
>>> instead
>>>>    */
>>>>   public String findJSP( PageContext pageContext, String name )
>>>>   {
>>>>       ServletContext sContext = pageContext.getServletContext();
>>>> -
>>>>       return findResource( sContext, name );
>>>>   }
>>>>
>>>>   /**
>>>> -     * Removes the template part of a name.
>>>> -     */
>>>> -    private static final String removeTemplatePart( String name )
>>>> -    {
>>>> -        int idx = 0;
>>>> -        if( name.startsWith( "/" ) )
>>>> -            idx = 1;
>>>> -
>>>> -        idx = name.indexOf( '/', idx );
>>>> -        if( idx != -1 )
>>>> -        {
>>>> -            idx = name.indexOf( '/', idx + 1 ); // Find second "/"
>>>> -
>>>> -            if( idx != -1 )
>>>> -            {
>>>> -                name = name.substring( idx + 1 );
>>>> -            }
>>>> -        }
>>>> -
>>>> -        log.info( "Final name = " + name );
>>>> -        return name;
>>>> -    }
>>>> -
>>>> -    /**
>>>> -     * Returns the full name (/templates/foo/bar) for name=bar,
>>> template=foo.
>>>> -     *
>>>> -     * @param template The name of the template.
>>>> -     * @param name The name of the resource.
>>>> -     * @return The full name for a template.
>>>> -     */
>>>> -    private static final String makeFullJSPName( String  
>>>> template, String
>>> name )
>>>> -    {
>>>> -        return "/" + DIRECTORY + "/" + template + "/" + name;
>>>> -    }
>>>> -
>>>> -    /**
>>>>    * Attempts to locate a resource under the given template. If  
>>>> that
>>> template
>>>>    * does not exist, or the page does not exist under that  
>>>> template,
>>> will
>>>>    * attempt to locate a similarly named file under the default
>>> template.
>>>> @@ -310,6 +255,7 @@
>>>>    * @param template From which template we should seek initially?
>>>>    * @param name Which resource are we looking for (e.g.
>>> "DefaultLayout.jsp")
>>>>    * @return path to the JSP page; null, if it was not found.
>>>> +     * @deprecated use {@link #getResourceResolver 
>>>> (ServletContext)}
>>> instead
>>>>    */
>>>>   public String findJSP( PageContext pageContext, String template,
>>> String name )
>>>>   {
>>>> @@ -319,8 +265,7 @@
>>>>                      + ((HttpServletRequest)
>>> pageContext.getRequest()).getRequestURI() + "'" );
>>>>           throw new InternalWikiException( "Illegal arguments to
>>> findJSP(); please check logs." );
>>>>       }
>>>> -
>>>> -        return findResource( pageContext.getServletContext(),  
>>>> template,
>>> name );
>>>> +        return findResource( pageContext.getServletContext(),  
>>>> name );
>>>>   }
>>>>
>>>>   /**
>>>> @@ -337,45 +282,23 @@
>>>>    * @param template the name of the template to use
>>>>    * @param name the name of the resource to fine
>>>>    * @return the path to the resource
>>>> +     * @deprecated use {@link #getResourceResolver 
>>>> (ServletContext)}
>>> instead
>>>>    */
>>>>   public String findResource( WikiContext ctx, String template,  
>>>> String
>>> name )
>>>>   {
>>>>       if( m_engine.getServletContext() != null )
>>>>       {
>>>> -            return findResource( m_engine.getServletContext(),  
>>>> template,
>>> name );
>>>> +            return findResource( m_engine.getServletContext(),  
>>>> name );
>>>>       }
>>>>
>>>>       return getPath( template ) + "/" + name;
>>>>   }
>>>>
>>>>   /**
>>>> -     * Returns a property, as defined in the template. The  
>>>> evaluation is
>>> lazy,
>>>> -     * i.e. the properties are not loaded until the template is  
>>>> actually
>>> used
>>>> -     * for the first time.
>>>> -     */
>>>> -    /*
>>>> -     * public String getTemplateProperty( WikiContext context,  
>>>> String
>>> key ) {
>>>> -     * String template = context.getTemplate(); try { Properties  
>>>> props =
>>>> -     * (Properties)m_propertyCache.getFromCache( template, -1 );  
>>>> if(
>>> props ==
>>>> -     * null ) { try { props = getTemplateProperties( template );
>>>> -     * m_propertyCache.putInCache( template, props ); } catch(
>>> IOException e ) {
>>>> -     * log.warn("IO Exception while reading template  
>>>> properties",e);
>>> return
>>>> -     * null; } } return props.getProperty( key ); } catch(
>>> NeedsRefreshException
>>>> -     * ex ) { // FIXME return null; } }
>>>> -     */
>>>> -    /**
>>>> -     * Returns an absolute path to a given template.
>>>> -     */
>>>> -    private static final String getPath( String template )
>>>> -    {
>>>> -        return "/" + DIRECTORY + "/" + template + "/";
>>>> -    }
>>>> -
>>>> -    /**
>>>> -     * Lists the skins available under this template. Returns an  
>>>> empty
>>> Set, if
>>>> -     * there are no extra skins available. Note that this method  
>>>> does
>>> not check
>>>> -     * whether there is anything actually in the directories, it  
>>>> just
>>> lists
>>>> -     * them. This may change in the future.
>>>> +     * Lists the skins available under the current template.
>>>> +     * Returns an empty Set, if there are no extra skins  
>>>> available.
>>>> +     * Note that this method does not check whether there is  
>>>> anything
>>>> +     * actually in the directories, it just lists them.
>>>>    *
>>>>    * @param servletContext the servlet context
>>>>    * @param template The template to search
>>>> @@ -383,14 +306,14 @@
>>>>    * @since 2.3.26
>>>>    */
>>>>   @SuppressWarnings( "unchecked" )
>>>> -    public Set<String> listSkins( ServletContext servletContext,  
>>>> String
>>> template )
>>>> +    public Set<String> listSkins()
>>>>   {
>>>> -        String place = makeFullJSPName( template,  
>>>> SKIN_DIRECTORY );
>>>> -        Set<String> skinSet = servletContext.getResourcePaths 
>>>> ( place );
>>>> +        String skinPath = TEMPLATE_DIR + "/" + SKIN_DIR;
>>>> +        Set<String> skinSet =
>>> m_engine.getServletContext().getResourcePaths( skinPath );
>>>>       TreeSet<String> resultSet = new TreeSet<String>();
>>>>
>>>>       if( log.isDebugEnabled() )
>>>> -            log.debug( "Listings skins from " + place );
>>>> +            log.debug( "Listings skins from " + skinPath );
>>>>
>>>>       if( skinSet != null )
>>>>       {
>>>> @@ -414,215 +337,7 @@
>>>>
>>>>       return resultSet;
>>>>   }
>>>> -
>>>> -    /**
>>>> -     * Always returns a valid property map.
>>>> -     */
>>>> -    /*
>>>> -     * private Properties getTemplateProperties( String  
>>>> templateName )
>>> throws
>>>> -     * IOException { Properties p = new Properties();  
>>>> ServletContext
>>> context =
>>>> -     * m_engine.getServletContext(); InputStream propertyStream =
>>>> -     * context.getResourceAsStream(getPath(templateName) 
>>>> +PROPERTYFILE);
>>> if(
>>>> -     * propertyStream != null ) { p.load( propertyStream );
>>>> -     * propertyStream.close(); } else { log.debug("Template
>>> '"+templateName+"'
>>>> -     * does not have a propertyfile '"+PROPERTYFILE+"'."); }  
>>>> return p; }
>>>> -     */
>>>> -    /**
>>>> -     * Returns the include resources marker for a given type.  
>>>> This is in
>>> a HTML
>>>> -     * or Javascript comment format.
>>>> -     *
>>>> -     * @param context the wiki context
>>>> -     * @param type the marker
>>>> -     * @return the generated marker comment
>>>> -     * @deprecated use the Stripes <code>layout-component</code>  
>>>> tags
>>> instead
>>>> -     */
>>>> -    public static String getMarker( WikiContext context, String  
>>>> type )
>>>> -    {
>>>> -        if( type.equals( RESOURCE_JSLOCALIZEDSTRINGS ) )
>>>> -        {
>>>> -            return getJSLocalizedStrings( context );
>>>> -        }
>>>> -        else if( type.equals( RESOURCE_JSFUNCTION ) )
>>>> -        {
>>>> -            return "/* INCLUDERESOURCES (" + type + ") */";
>>>> -        }
>>>> -        return "<!-- INCLUDERESOURCES (" + type + ") -->";
>>>> -    }
>>>> -
>>>> -    /**
>>>> -     * Extract all i18n strings in the javascript domain.  
>>>> (javascript.*)
>>> Returns
>>>> -     * a javascript snippet which defines the LoacalizedStings  
>>>> array.
>>>> -     *
>>>> -     * @param wiki context
>>>> -     * @return Javascript snippet which defines the  
>>>> LocaliedStrings
>>> array
>>>> -     * @since 2.5.108
>>>> -     * @deprecated use the Stripes <code>layout-component</code>  
>>>> tags
>>> instead
>>>> -     */
>>>> -    private static String getJSLocalizedStrings( WikiContext  
>>>> context )
>>>> -    {
>>>> -        StringBuilder sb = new StringBuilder();
>>>> -
>>>> -        sb.append( "var LocalizedStrings = {\n" );
>>>> -
>>>> -        ResourceBundle rb = context.getBundle 
>>>> ( "templates.default" );
>>>> -
>>>> -        boolean first = true;
>>>> -
>>>> -        for( Enumeration<String> en = rb.getKeys();
>>> en.hasMoreElements(); )
>>>> -        {
>>>> -            String key = en.nextElement();
>>>> -
>>>> -            if( key.startsWith( "javascript" ) )
>>>> -            {
>>>> -                if( first )
>>>> -                {
>>>> -                    first = false;
>>>> -                }
>>>> -                else
>>>> -                {
>>>> -                    sb.append( ",\n" );
>>>> -                }
>>>> -                sb.append( "\"" + key + "\":\"" + rb.getString 
>>>> ( key ) +
>>> "\"" );
>>>> -            }
>>>> -        }
>>>> -        sb.append( "\n};\n" );
>>>> -
>>>> -        return(sb.toString());
>>>> -    }
>>>> -
>>>> -    /**
>>>> -     * Adds a resource request to the current request context. The
>>> content will
>>>> -     * be added at the resource-type marker (see  
>>>> IncludeResourcesTag) in
>>>> -     * WikiJSPFilter.
>>>> -     * <p>
>>>> -     * The resources can be of different types. For  
>>>> RESOURCE_SCRIPT and
>>>> -     * RESOURCE_STYLESHEET this is an URI path to the resource  
>>>> (a script
>>> file or
>>>> -     * an external stylesheet) that needs to be included. For
>>> RESOURCE_INLINECSS
>>>> -     * the resource should be something that can be added between
>>>> -     * &lt;style>&lt;/style> in the header file  
>>>> (commonheader.jsp). For
>>>> -     * RESOURCE_JSFUNCTION it is the name of the Javascript  
>>>> function
>>> that should
>>>> -     * be run at page load.
>>>> -     * <p>
>>>> -     * The IncludeResourceTag inserts code in the template  
>>>> files, which
>>> is then
>>>> -     * filled by the WikiFilter after the request has been  
>>>> rendered but
>>> not yet
>>>> -     * sent to the recipient.
>>>> -     * <p>
>>>> -     * Note that ALL resource requests get rendered, so this  
>>>> method does
>>> not
>>>> -     * check if the request already exists in the resources.  
>>>> Therefore,
>>> if you
>>>> -     * have a plugin which makes a new resource request every  
>>>> time,
>>> you'll end
>>>> -     * up with multiple resource requests rendered. It's thus a  
>>>> good
>>> idea to
>>>> -     * make this request only once during the page life cycle.
>>>> -     *
>>>> -     * @param ctx The current wiki context
>>>> -     * @param type What kind of a request should be added?
>>>> -     * @param resource The resource to add.
>>>> -     * @deprecated use the Stripes <code>layout-component</code>  
>>>> tags
>>> instead
>>>> -     */
>>>> -    @SuppressWarnings( "unchecked" )
>>>> -    public static void addResourceRequest( WikiContext ctx,  
>>>> String type,
>>> String resource )
>>>> -    {
>>>> -        HashMap<String, Vector<String>> resourcemap =  
>>>> (HashMap<String,
>>> Vector<String>>) ctx.getVariable( RESOURCE_INCLUDES );
>>>> -
>>>> -        if( resourcemap == null )
>>>> -        {
>>>> -            resourcemap = new HashMap<String, Vector<String>>();
>>>> -        }
>>>> -
>>>> -        Vector<String> resources = resourcemap.get( type );
>>>> -
>>>> -        if( resources == null )
>>>> -        {
>>>> -            resources = new Vector<String>();
>>>> -        }
>>>> -
>>>> -        String resourceString = null;
>>>> -
>>>> -        if( type.equals( RESOURCE_SCRIPT ) )
>>>> -        {
>>>> -            resourceString = "<script type='text/javascript'  
>>>> src='" +
>>> resource + "'></script>";
>>>> -        }
>>>> -        else if( type.equals( RESOURCE_STYLESHEET ) )
>>>> -        {
>>>> -            resourceString = "<link rel='stylesheet' type='text/ 
>>>> css'
>>> href='" + resource + "' />";
>>>> -        }
>>>> -        else if( type.equals( RESOURCE_INLINECSS ) )
>>>> -        {
>>>> -            resourceString = "<style type='text/css'>\n" +  
>>>> resource +
>>> "\n</style>\n";
>>>> -        }
>>>> -        else if( type.equals( RESOURCE_JSFUNCTION ) )
>>>> -        {
>>>> -            resourceString = resource;
>>>> -        }
>>>> -        else if( type.equals( RESOURCE_HTTPHEADER ) )
>>>> -        {
>>>> -            resourceString = resource;
>>>> -        }
>>>> -
>>>> -        if( resourceString != null )
>>>> -        {
>>>> -            resources.add( resourceString );
>>>> -        }
>>>> -
>>>> -        log.debug( "Request to add a resource: " +  
>>>> resourceString );
>>>> -
>>>> -        resourcemap.put( type, resources );
>>>> -        ctx.setVariable( RESOURCE_INCLUDES, resourcemap );
>>>> -    }
>>>> -
>>>> -    /**
>>>> -     * Returns resource requests for a particular type. If there  
>>>> are no
>>>> -     * resources, returns an empty array.
>>>> -     *
>>>> -     * @param ctx WikiContext
>>>> -     * @param type The resource request type
>>>> -     * @return a String array for the resource requests
>>>> -     * @deprecated use the Stripes <code>layout-component</code>  
>>>> tags
>>> instead
>>>> -     */
>>>> -    @SuppressWarnings( "unchecked" )
>>>> -    public static String[] getResourceRequests( WikiContext ctx,  
>>>> String
>>> type )
>>>> -    {
>>>> -        HashMap<String, Vector<String>> hm = (HashMap<String,
>>> Vector<String>>) ctx.getVariable( RESOURCE_INCLUDES );
>>>> -
>>>> -        if( hm == null )
>>>> -            return new String[0];
>>>> -
>>>> -        Vector<String> resources = hm.get( type );
>>>> -
>>>> -        if( resources == null )
>>>> -            return new String[0];
>>>> -
>>>> -        String[] res = new String[resources.size()];
>>>> -
>>>> -        return resources.toArray( res );
>>>> -    }
>>>> -
>>>> -    /**
>>>> -     * Returns all those types that have been requested so far.
>>>> -     *
>>>> -     * @param ctx the wiki context
>>>> -     * @return the array of types requested
>>>> -     * @deprecated use the Stripes <code>layout-component</code>  
>>>> tags
>>> instead
>>>> -     */
>>>> -    @SuppressWarnings( "unchecked" )
>>>> -    public static String[] getResourceTypes( WikiContext ctx )
>>>> -    {
>>>> -        String[] res = new String[0];
>>>> -
>>>> -        if( ctx != null )
>>>> -        {
>>>> -            HashMap<String, String> hm = (HashMap<String, String>)
>>> ctx.getVariable( RESOURCE_INCLUDES );
>>>> -
>>>> -            if( hm != null )
>>>> -            {
>>>> -                Set<String> keys = hm.keySet();
>>>> -
>>>> -                res = keys.toArray( res );
>>>> -            }
>>>> -        }
>>>> -
>>>> -        return res;
>>>> -    }
>>>> -
>>>> +
>>>>   /**
>>>>    * Returns an empty collection, since at the moment the
>>> TemplateManager does
>>>>    * not manage any modules.
>>>> @@ -631,50 +346,6 @@
>>>>    */
>>>>   public Collection<WikiModuleInfo> modules()
>>>>   {
>>>> -        return EMPTY_MODULE_LIST;
>>>> -    }
>>>> -
>>>> -    /**
>>>> -     * Adds all of the resources under a specified path prefix  
>>>> to the
>>>> -     * resource resolver map, with the "short name" of the path  
>>>> as the
>>>> -     * key, and the full path as the value. The short name is the
>>> portion
>>>> -     * of the path after the prefix. If a resource with that  
>>>> short name
>>>> -     * has already been added to the resource map, it will not  
>>>> be added
>>>> -     * again. Any resources ending in {@code /} (i.e., a  
>>>> directory path)
>>>> -     * will be processed recursively.
>>>> -     * @param context the servlet context
>>>> -     * @param resolver the resource resolver map
>>>> -     * @param prefix the path prefix that the search initiates  
>>>> from
>>>> -     * @param dir the directory to search relative to the path  
>>>> prefix.
>>> If not
>>>> -     * supplied, the path prefix directory itself will be searched
>>>> -     */
>>>> -    @SuppressWarnings("unchecked")
>>>> -    private static void addResources( ServletContext context,
>>> Map<String,String> resolver, String prefix, String dir )
>>>> -    {
>>>> -        String searchPath = dir == null ? prefix : prefix + dir;
>>>> -        Set<String> resources = context.getResourcePaths 
>>>> ( searchPath );
>>>> -        if ( resources != null )
>>>> -        {
>>>> -            for ( String resource : resources )
>>>> -            {
>>>> -                String shortName = resource.substring 
>>>> ( prefix.length()
>>> );
>>>> -
>>>> -                // Directory: process these entries too
>>>> -                if ( shortName.endsWith( "/" ) )
>>>> -                {
>>>> -                    addResources( context, resolver, prefix,  
>>>> shortName
>>> );
>>>> -                }
>>>> -
>>>> -                // Regular resource: add it if we don't have it  
>>>> already
>>>> -                else
>>>> -                {
>>>> -                    boolean alreadyProcessed =  
>>>> resolver.containsKey(
>>> shortName );
>>>> -                    if ( !alreadyProcessed )
>>>> -                    {
>>>> -                        resolver.put( shortName, resource );
>>>> -                    }
>>>> -                }
>>>> -            }
>>>> -        }
>>>> +        return Collections.emptyList();
>>>>   }
>>>> }
>>>>
>>>> Modified:
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/stripes/ 
>>> TemplateResolution.java
>>>> URL:
>>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/stripes/TemplateResolution.java?rev=917390&r1=917389&r2=917390&view=diff
>>>>
>>> === 
>>> === 
>>> === 
>>> === 
>>> ==================================================================
>>>> ---
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/stripes/ 
>>> TemplateResolution.java
>>> (original)
>>>> +++
>>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/stripes/ 
>>> TemplateResolution.java
>>> Mon Mar  1 05:23:10 2010
>>>> @@ -22,6 +22,8 @@
>>>> {
>>>>   private static final Logger LOG = LoggerFactory.getLogger(
>>> TemplateResolution.class );
>>>>
>>>> +    private static final String DEFAULT_PATH_PREFIX = "/" +
>>> TemplateManager.TEMPLATE_DIR + "/" +  
>>> TemplateManager.DEFAULT_TEMPLATE + "/";
>>>> +
>>>>   /**
>>>>    * Constructs a new TemplateResolution
>>>>    *
>>>> @@ -41,7 +43,7 @@
>>>>       String path = TemplateManager.getResourceResolver 
>>>> ( servletContext
>>> ).get( getPath() );
>>>>       if( path == null )
>>>>       {
>>>> -            path = "/templates/" +  
>>>> TemplateManager.DEFAULT_TEMPLATE +
>>> "/" + getPath();
>>>> +            path = DEFAULT_PATH_PREFIX + getPath();
>>>>       }
>>>>       setPath( path );
>>>>
>>>>
>>>
>>>
>

Mime
View raw message