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. I have no idea why it
is not called as I have a /WEB-INF/sitemesh.xml file that only has:
<sitemesh>
<property name="decorators-file" value="/WEB-INF/decorators.xml" />
<excludes file="${decorators-file}" />
<page-parsers>
<parser content-type="text/html"
class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
<parser content-type="text/html;charset=ISO-8859-1"
class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
</page-parsers>
<decorator-mappers>
<!--<mapper
class="com.opensymphony.module.sitemesh.mapper.FrameSetDecoratorMapper">
</mapper>-->
<mapper
class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
<param name="config" value="${decorators-file}" />
</mapper>
</decorator-mappers>
</sitemesh>
so even if AdminCentral uses frames (which I have not seen in the
browser source except for a single iframe) then, as the
FrameSetDecoratorMapper is commented out, it would still be being decorated.
I am perplexed. I realise I have not sent you the files you mentioned in
your last email but that is because the problem seems, for some reason
to have changed and I did not want to confuse things too much. Let me
know if you think seeing any files is useful, I am happy to supply them.
Many thanks for your suggestions so far.
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]>
----------------------------------------------------------------