[Yanel-dev] Switching the layout/design of the from scratch realm

Michael Wechner michael.wechner at wyona.com
Fri Jun 5 11:13:05 CEST 2009


Prabodh Upreti schrieb:
> Hi Michael
>  
> I think I am close to getting this done.
>  
> I created a new resource to handle the session setting and also 
> changing the path based on the querystring.  For my first step I to 
> created this Resource similar to the file "NodeResource" to make sure 
> that it worked as I had expected.  It was working fine.
>

great :-)
>  
> I understand this does not handle passing the param to the xsl to 
> build the correct path.  I then started creating a Resource similar to 
> the BasicXMLResource so that I can set the parameter xslt-version for 
> the transformer.  I will then change the global.xsl to reflect the new 
> passed variable to it resolves to the correct path.
>

I don' t think you need to build this on the BasicXMLResource, but 
rather keep extending the NodeResource by overwriting the getNode() method.

Inside the getNode() method the method getResourceConfigProperty("src") 
is called which is getting the path from

src/realms/from-scratch-realm-template/res-configs/my-global.xsl.yanel-rc

 <yanel:property name="src" value="/app/xslt/global.xsl"/>


So I would suggest to introduce a new method called

getNode(String layoutVersion) which shall replace the getNode() method 
and also a new resource type property for this new resource, for example

<yanel:property name="default-layout-version" value="2"/>
<yanel:property name="src" value="/appTEMPLATE_VERSION/xslt/global.xsl"/>


and the template version can be retrieved from the query string inside 
the resource by

String layoutVersion = getRequest().getParameter("layout-version");
if (layoutVersion != null) {
     getRequest().getSession().setAttribute("layout-version", layoutVersion)
} else {
    if (getRequest().getSession().getAttribute("layout-version")) {
        layoutVersion =  
getRequest().getSession().getAttribute("layout-version");
    } else {
        layoutVersion = getResourceConfigProperty("default-layout-version")
    }
}


HTH

Michael


>  
> I just want to make sure I am on the right track.  Please let me know 
> if anything I am doing here is not correct.  Thank you in advance.
>  
> Regards
>  
> Prabodh
>  
>  
>  
>  
> --- On *Wed, 6/3/09, Michael Wechner /<michael.wechner at wyona.com>/* wrote:
>
>
>     From: Michael Wechner <michael.wechner at wyona.com>
>     Subject: Re: [Yanel-dev] Switching the layout/design of the from
>     scratch realm
>     To: yanel-development at wyona.com
>     Date: Wednesday, June 3, 2009, 3:09 AM
>
>     Hi Prabodh
>
>     Prabodh Upreti schrieb:
>     >
>     > 
>     > Hi Everyone
>     >
>     > 
>     > I was tracing through the code to understand how things were
>     working.  I see that YanelServlet is calling SourceResolver-à 
>     ResourceResolver--à  ResourceManager which in turn is loads
>     map.rc-map file.
>     >
>
>
>     each realm can have such a file, whereas it is optional, whereas a
>     warning is logged nevertheless if a realm does not have one
>
>     > 
>     > I understand that one based on map.rc-map setting all *.html
>     calls are being targeted to generic-xhtml-page_yanel-rc.xml setting.
>     >
>
>     this is what's happening in the "from scratch realm". The general
>     chain of responsibility is as follows:
>
>     URL: http://127.0.0.1:8080/yanel/REALM_ID/foo/bar.html
>
>     and then Yanel will first check if a 1-to-1 mapping exists
>
>     SRC: REALM_HOME_DIR/res-configs/foo/bar.html.yanel-rc
>
>     and if such a 1-to-1 does not exist, then it will check for
>     matching patterns within
>
>     SRC: REALM_HOME_DIR/res-confgis/map.rc-map
>
>     and if no pattern exists, then Yanel will use by default the
>     "file" (aka "node") resource type
>
>     > Based on the previous setting global.xsl was being called to
>     translate the template.
>     > 
>     > With the new changes Michael made I understand global.xsl needs
>     to be picked up from app or app2.  A variable needs to be set on
>     the Session based on the previous settings.
>     >
>     > 
>     > Listed below are my questions:
>     >
>     > 
>     >    1. I can create a resource to perform the above task. Does that
>     >       mean I can remove the rti “xml” currently set in
>     >       generic-xhtml-page_yanel-rc.xm and add my new resource?
>     >
>
>     no, you should replace the rti "file" within
>
>     src/realms/from-scratch-realm-template/res-configs/my-global.xsl.yanel-rc
>
>     by your own resource, because this is where the actual switch of
>     the XSLT is happening
>
>
>     >    1. This resource will check the yanelresource:/my-global.xsl 
>     find
>     >       my-global.xsl then the right template.  I understand most of
>     >       this logic is in YanelServlet at present.  Should I take that
>     >       code from there and add it to the new resource and everything
>     >       should work as usual?  Servlet will automatically pickup
>     the new
>     >       resource and let me perform the rest of the task.
>     >
>     > 2.  Why not pass a value via the querystring so that developer
>     do not need to go and modify my-global.xsl file to find the
>     template.  That way they could have 5-6 templates and they can
>     quickly test them without modifying the my-global.xsl file.
>     >
>
>     that's exactly what your resource should be doing. For example the
>     query string could be something like
>
>     /foo/bar.html?xslt-version=2
>
>     which your resource would read from the request (if set) and then
>     set it within the session, such that you don't always have to
>     attach it to all following URLs. And then your resource would for
>     example build the location dynamically
>
>     /app{$xslt-version}/xslt/globals.xsl
>
>     instead reading it statically from within
>
>     src/realms/from-scratch-realm-template/res-configs/my-global.xsl.yanel-rc
>
>     as the "file" resource type does. (or something similar along
>     these lines)
>     >
>     > It may not be as simple as I am thinking so pls free to point
>     out the flaw with this process
>     >
>     > 
>     > Could you please let me know if I am in the right track?
>     >
>
>     I think you are very much on the right track, except which
>     resource type to replace (as described above)
>
>     Hope my comments help, otherwise please ask again.
>
>     Cheers
>
>     Michael
>     >
>     >   Thank you in advance.
>     >
>     > 
>     > Regards
>     >
>     >  Prabodh
>     >
>     > --- On *Fri, 5/29/09, Michael Wechner
>     /<michael.wechner at wyona.com
>     <http://us.mc522.mail.yahoo.com/mc/compose?to=michael.wechner@wyona.com>>/*
>     wrote:
>     >
>     >
>     >     From: Michael Wechner <michael.wechner at wyona.com
>     <http://us.mc522.mail.yahoo.com/mc/compose?to=michael.wechner@wyona.com>>
>     >     Subject: [Yanel-dev] Switching the layout/design of the from
>     >     scratch realm
>     >     To: yanel-development at wyona.com
>     <http://us.mc522.mail.yahoo.com/mc/compose?to=yanel-development@wyona.com>
>     >     Date: Friday, May 29, 2009, 5:07 AM
>     >
>     >     Hi
>     >
>     >     We have made some progress re switching the layout/design of the
>     >     from scratch realm dynamically.
>     >
>     >     Please update your local SVN version and take a look at the
>     notes at
>     >
>     >     svn ci -m "note about switching the layout added" 
>        data-repo/data/de/index.html data-repo/data/en/index.html
>     >     Sende          data-repo/data/de/index.html
>     >     Sende          data-repo/data/en/index.html
>     >     Übertrage Daten ..
>     >     Revision 43093 übertragen.
>     >
>     >     or rather
>     >
>     >     http://127.0.0.1:8080/yanel/from-scratch-realm/en/index.html
>     >     http://127.0.0.1:8080/yanel/from-scratch-realm/de/index.html
>     >
>     >     The TODOs are actually create another layout within the
>     >     data-repo/data/app2 folder and create a resource
>     >     which is switching between the various folders app1 and app2 as
>     >     noted within
>     >
>     >     res-configs/my-global.xsl.yanel-rc
>     >
>     >     (instead of using the static file resource)
>     >
>     >     Cheers
>     >
>     >     Michael
>     >     -- Yanel-development mailing list
>     Yanel-development at wyona.com
>     <http://us.mc522.mail.yahoo.com/mc/compose?to=Yanel-development@wyona.com>
>     > 
>        <http://us.mc522.mail.yahoo.com/mc/compose?to=Yanel-development@wyona.com>
>     > 
>        http://lists.wyona.org/cgi-bin/mailman/listinfo/yanel-development
>     >
>     >
>
>     -- Yanel-development mailing list Yanel-development at wyona.com
>     <http://us.mc522.mail.yahoo.com/mc/compose?to=Yanel-development@wyona.com>
>     http://lists.wyona.org/cgi-bin/mailman/listinfo/yanel-development
>
>



More information about the Yanel-development mailing list