Very well spotted with regards to the cmsu:simpleNavigation especially
as I never mentioned that. You were correct and by removing the cmsu
tags then I can move the SiteMesh filter in front of the Magnolia filter.
I also worked out that because I had done a clean install, the gzip node
had come back. Dropping that with the SiteMesh filter running first
means that I can now get the decorator to run even if the adminCentral
is unusable as the javascript seems to fail to run.
One thing I am wondering about is the SiteMesh effect on the ajax calls.
I know that in one of the other apps that has an ajax captcha I needed
to add a blank decorator to the paths that the captcha uses. Without
that it would fail. I am unsure what the paths for the ajax calls in
magnolia are. If I knew them I could use a blank decorator for them and
then maybe the decorator would work with the javascript. I have tried
mapping the blank decorator to 'website', 'mgnlTreeControl' and
'.resources' but it didn't work.
As I now have the ability to decorate adminCentral (not working) I can
now compare the layout of the js files as you suggested. They appear to
be identical:
When Decorated:
---------------
The head contains:
/article-admin/.magnolia/pages/javascript.js
/article-admin/.magnolia/pages/messages.en.js
/article-admin/.resources/admin-js/dialogs/dialogs.js
/article-admin/.resources/calendar/skins/aqua/theme.css
/article-admin/.resources/calendar/calendar.js
/article-admin/.resources/calendar/lang/calendar-en.js
/article-admin/.resources/calendar/calendar-setup.js
The body contains:
1) A call to new MgnlTextField()
2) Calls to new mgnlTree(...)
When undecorated:
-----------------
The head contains:
/article-admin/.magnolia/pages/javascript.js
/article-admin/.magnolia/pages/messages.en.js
/article-admin/.resources/admin-js/dialogs/dialogs.js
/article-admin/.resources/calendar/skins/aqua/theme.css
/article-admin/.resources/calendar/calendar.js
/article-admin/.resources/calendar/lang/calendar-en.js
/article-admin/.resources/calendar/calendar-setup.js
The body contains:
1) A call to new MgnlTextField()
2) Calls to new mgnlTree(...)
Grégory Joseph wrote:
>
> Hi,
>
>
> On Jun 21, 2009, at 2:23 PM, Gavin Donald wrote:
>
>> My apologies for the second email but something has just occurred to me.
>> As, when the SM filter is after the Magnolia filter the content managed
>> pages get decorated correctly and it is only AdminCentral that does not
>> get decorated then does it make sense to say that the SM filter should
>> be left after the Magnolia filter? If that is the case then the question
>> is why AdminCentral does not get decorated. Unfortunately there are no
>> errors as SM does not even appear to get called.
>
> What surprises me in this scenario is that regular Magnolia pages would
> be decorated too.
>
> Re: your previous email:
> What the error message below says, and the stacktrace demonstrates, is
> that your decorator jsp file is trying to use Magnolia code, while the
> context is not set. This happens because the decoration happens outside
> the Magnolia filter chain.
> Remove the cmsu:simpleNavigation usage from your decorator, and this
> should work.
>
> If you need to use Magnolia content in your decorator itself, you
> probably have no other choice than to setup the SM filter inside the
> Magnolia filter chain (config:/server/filters); which will in turn mean
> you'll probably have to setup bypasses for your other applications in
> there too.
>
> Cheers,
>
> -g
>
> On Jun 21, 2009, at 2:07 PM, Gavin Donald wrote:
>
>>
>> Well, I am not sure what has changed but I now have a different problem.
>> The problem I am now seeing was intermittent before but is now continual
>> (I did a clean redeploy). The error (below) happens whenever the
>> SiteMesh filter is placed before the Magnolis filter. If the SiteMesh
>> filter is put after Magnolia filter then AdminCentral functions
>> perfectly but is undecorated. The error occurs in the method of
>> info.magnolia.context.MgnlContext.AggregationState() which is:
>>
>> public static AggregationState getAggregationState() {
>> final WebContext ctx = getWebContextOrNull();
>> if (ctx != null) {
>> return ctx.getAggregationState();
>> } else {
>> throw new IllegalStateException("Can only get the
>> aggregation state within a WebContext.");
>> }
>> }
>>
>> where ctx is null which is because ThreadLocal.get() is returning null
>> but to be honest I don't really understand what ThreadLocal.get()
>> actually does.
>>
>>
>> ----- START ERROR -----
>> 21-Jun-2009 12:48:32 org.apache.catalina.core.ApplicationDispatcher
>> invoke
>> SEVERE: Servlet.service() for servlet jsp threw exception
>> java.lang.IllegalStateException: Can only get the aggregation state
>> within a WebContext.
>> at
>> info.magnolia.context.MgnlContext.getAggregationState(MgnlContext.java:221)
>>
>> at
>> info.magnolia.cms.taglibs.Resource.getCurrentActivePage(Resource.java:89)
>> at
>> info.magnolia.cms.taglibs.util.SimpleNavigationTag.doEndTag(SimpleNavigationTag.java:350)
>>
>> at
>> org.apache.jsp.prosoc_002dview.decorator.decorator_002dprosoc_002dcms_002dpublic_jsp._jspx_meth_cmsu_005fsimpleNavigation_005f0(decorator_002dprosoc_002dcms_002dpublic_jsp.java:893)
>>
>> at
>> org.apache.jsp.prosoc_002dview.decorator.decorator_002dprosoc_002dcms_002dpublic_jsp._jspService(decorator_002dprosoc_002dcms_002dpublic_jsp.java:312)
>>
>> at
>> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>> at
>> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
>>
>> at
>> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
>> at
>> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>>
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>
>> at
>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
>>
>> at
>> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:535)
>>
>> at
>> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:472)
>>
>> at
>> com.opensymphony.module.sitemesh.filter.PageFilter.writeDecorator(PageFilter.java:173)
>>
>> at
>> com.opensymphony.module.sitemesh.filter.PageFilter.applyDecorator(PageFilter.java:158)
>>
>> at
>> com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:62)
>>
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>
>> at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>>
>> at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>>
>> at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>>
>> at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>
>> at
>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
>> at
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>
>> at
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>>
>> at
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
>>
>> at
>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>>
>> at
>> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>> at java.lang.Thread.run(Thread.java:619)
>> 21-Jun-2009 12:48:32 org.apache.catalina.core.StandardWrapperValve invoke
>> SEVERE: Servlet.service() for servlet default threw exception
>> java.lang.IllegalStateException: Can only get the aggregation state
>> within a WebContext.
>> at
>> info.magnolia.context.MgnlContext.getAggregationState(MgnlContext.java:221)
>>
>> at
>> info.magnolia.cms.taglibs.Resource.getCurrentActivePage(Resource.java:89)
>> at
>> info.magnolia.cms.taglibs.util.SimpleNavigationTag.doEndTag(SimpleNavigationTag.java:350)
>>
>> at
>> org.apache.jsp.prosoc_002dview.decorator.decorator_002dprosoc_002dcms_002dpublic_jsp._jspx_meth_cmsu_005fsimpleNavigation_005f0(decorator_002dprosoc_002dcms_002dpublic_jsp.java:893)
>>
>> at
>> org.apache.jsp.prosoc_002dview.decorator.decorator_002dprosoc_002dcms_002dpublic_jsp._jspService(decorator_002dprosoc_002dcms_002dpublic_jsp.java:312)
>>
>> at
>> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>> at
>> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
>>
>> at
>> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
>> at
>> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>>
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>
>> at
>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
>>
>> at
>> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:535)
>>
>> at
>> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:472)
>>
>> at
>> com.opensymphony.module.sitemesh.filter.PageFilter.writeDecorator(PageFilter.java:173)
>>
>> at
>> com.opensymphony.module.sitemesh.filter.PageFilter.applyDecorator(PageFilter.java:158)
>>
>> at
>> com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:62)
>>
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>
>> at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>>
>> at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>>
>> at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>>
>> at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>
>> at
>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
>> at
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>
>> at
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>>
>> at
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
>>
>> at
>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>>
>> at
>> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>> at java.lang.Thread.run(Thread.java:619)
>> ----- END ERROR -----
>>
>>
>>
>>
>>
>>
>>
>> Grégory Joseph wrote:
>>>
>>> Hi again,
>>>
>>> Haaa this is getting frustrating, because I've been willing to integrate
>>> Sitemesh and Magnolia ever since I started working with the latter (and
>>> had to abandon previous projects using the former)
>>>
>>> Hopefully helpful suggestions inline:
>>>
>>> On Jun 19, 2009, at 1:41 PM, Gavin Donald wrote:
>>>
>>>>
>>>> Thanks for the additional ideas. I have tried them as far as I could
>>>> and
>>>> could not get it to work.
>>>>
>>>> The use case is that the site has several web applications running
>>>> on it
>>>> (Apache Roller , MVNForum, Magnolia as well as a custom core that
>>>> provides site specific facilities). The public and admin sections of
>>>> each of those application is SiteMesh decorated and so it would keep
>>>> everything looking the same if the Magnolia AdminCentral was also
>>>> decorated. The decorators also contain the shared navigation sections
>>>> and so if a user enters AdminCentral they loose all the navigation
>>>> elements that let them easily move between the different applications.
>>>
>>> Makes a lot of sense.
>>>
>>>>
>>>> I added the following:
>>>>
>>>> Server/filters/bypasses
>>>> Content-node: sitemesh-decorator
>>>> data-node: class => info.magnploa.voting.voters.URIStartsWithVoter
>>>> data-node: pattern: => /prosoc-view/decorator
>>>
>>> Providing the typo was only in the email and not in your config, this
>>> looks correct.
>>>
>>>> I have looked at the source in the browser and then called each of the
>>>> JS files in turn. Non of them are decorated and all are present
>>>> including the:
>>>>
>>>> /.magnolia/pages/javascript.js
>>>>
>>>> I mention that file specifically because when SiteMesh is active and I
>>>> call /magnolia/trees/website.html I get an error in the JavaScript
>>>> console saying that 'MgnlTextField' could not be found. This JavaScript
>>>> call is called from near the bottom of website.html and the function is
>>>> defined in javascript.js.
>>>
>>> That could indicate what I was suspecting about Sitemesh rearranging the
>>> script tags in the <head> - see below.
>>>
>>>
>>>> I have added:
>>>>
>>>> <excludes>
>>>> <pattern>*.js</pattern>
>>>> </excludes>
>>>>
>>>> to the decorators.xml file.
>>>>
>>>> You mentioned:
>>>>
>>>> "Depending on your decorator/configuration, it might also be that
>>>> Sitemesh tries to reorganize the script tags, for instance. If I
>>>> remember correctly from when I used it before, it's sort of its
>>>> default
>>>> behaviour, because you'll usually want to insert stuff in the <head>
>>>> tags. Can you disable that? Or bypass it altogether for the whole
>>>> /.magnolia and /.resources, for instance ?"
>>>>
>>>> but I didn't really understand how to do that.
>>>
>>> Well - I don't really know either, been quite a while since I used
>>> Sitemesh.
>>> What I seem to remember is that you could feed it with a page that has,
>>> for instance, <script> and <style> tags lying around in the <body> tag,
>>> and Sitemesh would nicely rearrange them inside the <head> tag of the
>>> page.
>>> If that happens, there might be a few bits and pieces that don't work
>>> anymore (typically, inline javascript within the page that would expect
>>> to have some methods or object available - if the order of the scripts
>>> is modified, things might start to get hairy)
>>>
>>> Could you compare the results of an undecorated and decorated
>>> /.magnolia/trees/website.html with that in mind ?
>>>
>>>> When I put the SiteMesh filter before the magnolia filter I frequently
>>>> get:
>>>>
>>>> MgnlContext is not set for this thread
>>> <...>
>>> To understand what goes wrong there, we'd need a few more lines of the
>>> exception - could you attach a sample to your email, or paste it on
>>> nopaste.org ? If your Magnolia instance runs fine on its own (without
>>> SM), I can't really see why this would happen with SM --- at least not
>>> without more details or trying out myself ...
>>>
>>>> If you have any other ideas then I would be happy to try them but as I
>>>> am out of things to try then I will probably leave AdminCentral
>>>> undecorated for now. Thanks for your previous suggestions.
>>>
>>> Is there a chance we could see your decorator.jsp; maybe it'd remind me
>>> a few other things I forgot about SM...
>>>
>>> Cheers,
>>>
>>> -g
>>>
>>> Grégory Joseph wrote:
>>>>>
>>>>> Gavin,
>>>>>
>>>>> Something hit me: your decorator jsp itself might be going through the
>>>>> Magnolia filters (by default, it's mapped to / and with dispatchers on
>>>>> request, forward AND include) - maybe try adding a bypass for it in
>>>>> the
>>>>> global bypasses at /server/filters/bypasses ?
>>>>>
>>>>> -g
>>>>>
>>>>> On Jun 16, 2009, at 9:55 PM, Gavin Donald wrote:
>>>>>
>>>>>>
>>>>>> I had the SiteMesh filter after the Magnolia filter but if I move
>>>>>> it in
>>>>>> front I get some partial success. The decorator is applied but
>>>>>> there is
>>>>>> an error:
>>>>>>
>>>>>> java.lang.IllegalStateException: MgnlContext is not set for this
>>>>>> thread
>>>>>>
>>>>>> and the login screen loads with parts of the decorator applied but
>>>>>> most
>>>>>> of it is missing. If I then login I get the following shown in
>>>>>> Firefox:
>>>>>>
>>>>>> Content Encoding Error
>>>>>> The page you are trying to view cannot be shown because it uses an
>>>>>> invalid or unsupported form of compression.
>>>>>> The page you are trying to view cannot be shown because it uses an
>>>>>> invalid or unsupported form of compression.
>>>>>>
>>>>>> I have not been successful in turning off compression in Magnolia to
>>>>>> see
>>>>>> if that solves this second problem. I have tried to delete the gzip
>>>>>> nodes from:
>>>>>>
>>>>>> Config => server => filters => gzip
>>>>>>
>>>>>> Config => server => filters => gzip => bypasses => contentAllowed =>
>>>>>> allowed
>>>>>>
>>>>>> Config => modules => cache =>config => compression => voters
>>>>>> =>contentType => allowed
>>>>>>
>>>>>> But the content still came out with gzip compression. The server does
>>>>>> not have compression enabled so I have no idea where it comes from.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Grégory Joseph wrote:
>>>>>>>
>>>>>>> Is your sitemesh filter before or after Magnolia's? This might be
>>>>>>> due to
>>>>>>> how requests that end up in the admincentral servlets treat the
>>>>>>> filter
>>>>>>> chain - can you try to see if /.magnolia/trees/website.html gets
>>>>>>> decorated, for example ? Or a simpler page such as
>>>>>>> /.magnolia/pages/configuration.html ?
>>>>>>>
>>>>>>> The fact that the login form does not get decorated might be due to
>>>>>>> the
>>>>>>> fact that sitemesh treats pages differently depending on the http
>>>>>>> response code ? (i really don't know if it does, just wild guessing)
>>>>>>>
>>>>>>> -g
>>>>>>>
>>>>>>> On Jun 16, 2009, at 12:39 PM, Gavin Donald wrote:
>>>>>>>
>>>>>>>>
>>>>>>>> Thanks for taking the time to reply.
>>>>>>>>
>>>>>>>> I am trying to get AdminCentral decorated with SiteMesh. Currently
>>>>>>>> AdminCentral is not decorated at all. I took a look at the
>>>>>>>> source and
>>>>>>>> see that past the login screen a single iframe is used. However,
>>>>>>>> the
>>>>>>>> login screen does not seem to use frames and it still is not
>>>>>>>> decorated.
>>>>>>>> I added the following to my sitemesh.xml file:
>>>>>>>>
>>>>>>>> <mapper
>>>>>>>> class="com.opensymphony.module.sitemesh.mapper.FrameSetDecoratorMapper">
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> <param name="decorator" value="prosoc-cms-admin" />
>>>>>>>> </mapper>
>>>>>>>>
>>>>>>>> Where 'prosoc-cms-admin' is the name of the decorator in the
>>>>>>>> decorator.xml file. My web.xml uses:
>>>>>>>>
>>>>>>>> <filter>
>>>>>>>> <filter-name>sitemesh</filter-name>
>>>>>>>> <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> </filter>
>>>>>>>>
>>>>>>>> <filter-mapping>
>>>>>>>> <filter-name>sitemesh</filter-name>
>>>>>>>> <url-pattern>/*</url-pattern>
>>>>>>>> <dispatcher>REQUEST</dispatcher>
>>>>>>>> <dispatcher>FORWARD</dispatcher>
>>>>>>>> </filter-mapping>
>>>>>>>>
>>>>>>>> I am not sure why AdminCentral does not get decorated. Any
>>>>>>>> suggestions
>>>>>>>> are certainly welcome.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Grégory Joseph wrote:
>>>>>>>>>
>>>>>>>>> Hi Gavin,
>>>>>>>>>
>>>>>>>>> Any specifics on what the problem(s) is/are ? What are you
>>>>>>>>> trying to
>>>>>>>>> achieve specifically ? I suppose you've noticed the
>>>>>>>>> admincentral is
>>>>>>>>> built with frames.. and I seem to remember Sitemesh had
>>>>>>>>> frame-specific
>>>>>>>>> features/configuration, did you check that ?
>>>>>>>>>
>>>>>>>>> -g
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Jun 14, 2009, at 4:56 PM, Gavin Donald wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> I have added magnolia onto an existing web app so that it can
>>>>>>>>>> control a
>>>>>>>>>> part of the site. The site contains other applications as well
>>>>>>>>>> (blog,
>>>>>>>>>> forum etc) and so Sitemesh is used for decoration. I have added
>>>>>>>>>> SiteMesh
>>>>>>>>>> to the Magnolia instances and it works perfectly for the 'create'
>>>>>>>>>> pages
>>>>>>>>>> in AdminCentral and also for the public instance. I have not been
>>>>>>>>>> successful in getting SiteMesh to decorate the actual
>>>>>>>>>> AdminCentral
>>>>>>>>>> itself though (either public or author) and can't think of any
>>>>>>>>>> reason
>>>>>>>>>> why. The SiteMesh decorator is simply:
>>>>>>>>>>
>>>>>>>>>> <decorator name="prosoc-cms" page="decorator-prosoc-cms.jsp">
>>>>>>>>>> <pattern>/*</pattern>
>>>>>>>>>> </decorator>
>>>>>>>>>>
>>>>>>>>>> Does anyone have any suggestions or has can say they have
>>>>>>>>>> successfully
>>>>>>>>>> managed to decorate AdminCentral?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> ----------------------------------------------------------------
>>>>>>>>>> For list details see
>>>>>>>>>> http://www.magnolia-cms.com/home/community/mailing-lists.html
>>>>>>>>>> To unsubscribe, E-mail to:
>>>>>>>>>> <[email protected]>
>>>>>>>>>> ----------------------------------------------------------------
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ----------------------------------------------------------------
>>>>>>>>> For list details see
>>>>>>>>> http://www.magnolia-cms.com/home/community/mailing-lists.html
>>>>>>>>> To unsubscribe, E-mail to:
>>>>>>>>> <[email protected]>
>>>>>>>>> ----------------------------------------------------------------
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> ----------------------------------------------------------------
>>>>>>>> For list details see
>>>>>>>> http://www.magnolia-cms.com/home/community/mailing-lists.html
>>>>>>>> To unsubscribe, E-mail to: <[email protected]>
>>>>>>>> ----------------------------------------------------------------
>>>>>>>
>>>>>>>
>>>>>>> ----------------------------------------------------------------
>>>>>>> For list details see
>>>>>>> http://www.magnolia-cms.com/home/community/mailing-lists.html
>>>>>>> To unsubscribe, E-mail to: <[email protected]>
>>>>>>> ----------------------------------------------------------------
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> ----------------------------------------------------------------
>>>>>> For list details see
>>>>>> http://www.magnolia-cms.com/home/community/mailing-lists.html
>>>>>> To unsubscribe, E-mail to: <[email protected]>
>>>>>> ----------------------------------------------------------------
>>>>>
>>>>>
>>>>> ----------------------------------------------------------------
>>>>> For list details see
>>>>> http://www.magnolia-cms.com/home/community/mailing-lists.html
>>>>> To unsubscribe, E-mail to: <[email protected]>
>>>>> ----------------------------------------------------------------
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> ----------------------------------------------------------------
>>>> For list details see
>>>> http://www.magnolia-cms.com/home/community/mailing-lists.html
>>>> To unsubscribe, E-mail to: <[email protected]>
>>>> ----------------------------------------------------------------
>>>
>>>
>>> ----------------------------------------------------------------
>>> For list details see
>>> http://www.magnolia-cms.com/home/community/mailing-lists.html
>>> To unsubscribe, E-mail to: <[email protected]>
>>> ----------------------------------------------------------------
>>>
>>>
>>>
>>
>>
>>
>>
>> ----------------------------------------------------------------
>> For list details see
>> http://www.magnolia-cms.com/home/community/mailing-lists.html
>> To unsubscribe, E-mail to: <[email protected]>
>> ----------------------------------------------------------------
>
>
> ----------------------------------------------------------------
> For list details see
> http://www.magnolia-cms.com/home/community/mailing-lists.html
> To unsubscribe, E-mail to: <[email protected]>
> ----------------------------------------------------------------
>
>
>
----------------------------------------------------------------
For list details see
http://www.magnolia-cms.com/home/community/mailing-lists.html
To unsubscribe, E-mail to: <[email protected]>
----------------------------------------------------------------