I'd use Spring c code:

<c:choose>
<c:when test="${requestScope['service'] == 
'https://servicename.domain.edu/abcd.jsp'}">
[put whatever you want to display here for that specific service]
</c:when>

[repeat "when" clause for other service]

<c:otherwise>
</c:otherwise>
</c:choose>


Hth,
Tobias

----- Original Message -----
From: "Aaron Chantrill" <[email protected]>
To: [email protected]
Sent: Tuesday, April 10, 2012 5:24:09 PM
Subject: Re: [cas-user] Themes in CAS

Looks like I misunderstood what themes are doing in CAS. As I understand 
it now, the "/WEB-INF/view/jsp/default" directory has nothing to do with 
the "default" theme. When you create a new theme, all you have to do is 
create a new <theme_name>.properties file inside the /WEB-INF/classes 
directory. Then you put name/value pairs in there like "foo=bar". Then 
you modify the template at /WEB-INF/view/jsp/mobile/ui/casLoginView.jsp 
(for example) and put <spring:theme code="foo"/> in, and this will be 
replaced with the word "bar" in the HTML output (you must also create a 
"default.properties" file at the same time also with a "foo" defined in 
it, or you get an error when someone tries to request a page with the 
default theme).

Now, I have two very different styles of web pages depending on the 
usage, but most of the changes are separated out into a header file and 
a footer file that are currently included via a jsp:directive.include 
statement. So if I could do something like <jsp:directive.include 
file=<spring:theme code="template_top" /> /> I would be back in 
business, but it does not look like you can embed the theme 
substitutions in other jsp directives. It also does not look like I can 
embed the jsp directive in the .properties files.

I could embed the entire text of the header and footer into the 
.properties files, but that's going to be a long and messy bunch of 
html, css and javascript.

Does anyone know of a way to do an if/then statement around the value of 
a <spring:theme> variable? The differences between the themed pages I 
would like to deploy are a lot more complicated than changing a single 
CSS include.

Thanks,
Aaron

On 04/10/2012 03:51 PM, Aaron Chantrill wrote:
> I'm using CAS 3.3.1 and trying to use two different themes depending 
> on which website is being passed in as "service". If the user is 
> coming from our test server, the pages should be rendered using the 
> "default" theme, but if they come from our "m" server, they should get 
> a sign-in page that is optimized for viewing on a smartphone.
>
> So far, I have
>
>     copied the WEB-INF/view/jsp/default directory to 
> WEB-INF/view/jsp/mobile.
>
>     made some changes to the 
> WEB-INF/view/jsp/mobile/ui/casLoginView.jsp so I can tell which theme 
> I am using.
>
>     copied the WEB-INF/classes/default_views.properties file to 
> WEB-INF/classes/mobile.properties and 
> WEB-INF/classes/mobile_views.properties (the instructions at 
> https://wiki.jasig.org/display/CASUM/Theme+Control say to "Add another 
> set of theme properties file, which must be placed to the root of 
> /WEB-INF/classes folder, name it as theme_name.properties" but there 
> was no "default.properties" file in that location, only a 
> "default_views.properties" file, so I created both.
>
>     changed the links in these two files to point to the "mobile" 
> directory instead of the "default" directory.
>
>     updated cas-servlet.xml file to add "servicesManager-ref"
> <bean id="themeResolver" 
> class="org.jasig.cas.services.web.ServiceThemeResolver"
>         p:defaultThemeName="${cas.themeResolver.defaultThemeName}"
>         p:servicesManager-ref="servicesManager"
>         p:argumentExtractors-ref="argumentExtractors" />
>
>     changed the theme for my "m" server to "mobile" in 
> deployerConfigContext.xml:
> <bean id="serviceRegistryDao" 
> class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl">
> <property name="registeredServices">
> <list>
> <bean class="org.jasig.cas.services.RegisteredServiceImpl">
> <property name="id" value="0" />
> <property name="name" value="m.wvsom.edu" />
> <property name="description" value="Allows access via m.wvsom.edu and 
> uses a non-standard mobile-friendly theme" />
> <property name="serviceId" value="http://m.wvsom.edu/**"; />
> <property name="evaluationOrder" value="10000001" />
> <property name="theme" value="mobile" />
> <property name="allowedAttributes">
> <list>
> <value>UDC_IDENTIFIER</value>
> </list>
> </property>
> </bean>
>
> <bean class="org.jasig.cas.services.RegisteredServiceImpl">
> <property name="id" value="1" />
> <property name="name" value="WVSOM test" />
> <property name="description" value="Allows WVSOM Test Server" />
> <property name="serviceId" value="http://test.wvsom.edu/**"; />
> <property name="evaluationOrder" value="10000002" />
> <property name="allowedAttributes">
> <list>
> <value>UDC_IDENTIFIER</value>
> </list>
> </property>
> </bean>
> Restarted Tomcat, and the default theme continues to come up.
>
> If I edit WEB-INF/cas.properties and change
> cas.themeResolver.defaultThemeName=default
> cas.viewResolver.basename=default_views
>
> to
> cas.themeResolver.defaultThemeName=mobile
> cas.viewResolver.basename=mobile_views
>
> then the new mobile theme comes up for everything.
>
> So it seems like the theme is working, but it's either not reading the 
> theme information from the serviceRegistry, or not getting the 
> basename from it. Something's not linking up. I also have all the logs 
> set to DEBUG and the only time the word "mobile" appears in the logs 
> is when I set mobile to be the default theme and it rendered 
> correctly. So it does not seem like CAS is even aware that I am trying 
> to get it to display an alternate theme.
>
> Any help greatly appreciated,
>
> Aaron
>
>


-- 
You are currently subscribed to [email protected] as: 
[email protected]
To unsubscribe, change settings or access archives, see 
http://www.ja-sig.org/wiki/display/JSG/cas-user

-- 
You are currently subscribed to [email protected] as: 
[email protected]
To unsubscribe, change settings or access archives, see 
http://www.ja-sig.org/wiki/display/JSG/cas-user

Reply via email to