<!-- 
RSS generated by JIRA (9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b) at Mon Feb 12 07:30:12 CET 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Magnolia - Issue tracker</title>
    <link>https://jira.magnolia-cms.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-uk</language>    <build-info>
        <version>9.4.2</version>
        <build-number>940002</build-number>
        <build-date>19-01-2023</build-date>
    </build-info>


<item>
            <title>[MGNLSTK-764] Contact Form doesn&apos;t work in Magnolia 4.4.2</title>
                <link>https://jira.magnolia-cms.com/browse/MGNLSTK-764</link>
                <project id="10287" key="MGNLSTK">Magnolia Standard Templating Kit (closed)</project>
                    <description>&lt;p&gt;Dear Sirs,&lt;/p&gt;

&lt;p&gt;The contact form of the public instance of Magnolia 4.4.2 doesn&apos;t work: it gives (randomly) a &quot;session expired&quot; error. This is critical for production because if the contact form doesn&apos;t work properly customers can&apos;t contact us.&lt;/p&gt;

&lt;p&gt;My observations:&lt;/p&gt;

&lt;p&gt;Connect to the public instance (not authoring) of online demo of magnolia-cms.com. Go to the contact form. Don&apos;t fill any field, it&apos;s not necessary. Just click the Submit button. The first times maybe you get the normal error messages about empty fields. Ok, this is fine. But try again from different windows, different sessions, different computers. Soon the contact form will be broken and you will start to get the &quot;session expired&quot; error. If you enter the fields (email, subject, etc) of the contact form the result is the same.&lt;/p&gt;

&lt;p&gt;I have tested a lot of things of the servers. Nothing fixed it.&lt;/p&gt;

&lt;p&gt;After several hours, I disabled caching system of public instance (just by putting enabled=false in /configuration/server/filters) and flushed the caches.... and wow, it worked again! but at the price of a very sloooowww website.&lt;/p&gt;

&lt;p&gt;I migrated to 4.4.2 from 4.3.6 only to get multilingual contact forms. And this migration broke the contact form in the mentioned way! It seems that 4.4.2 manages contact form in a different way. If cache is enabled, contact form stops working after several attempts from different windows/sessions/computers.&lt;/p&gt;

&lt;p&gt;So, now, I need first a workaround to disable cache only for the contact page. Maybe this way a get again a fast website and a contact form that works. Which is the way to achieve that? I have read the bypass configuration option, but don&apos;t have much documentation to know how to use it.&lt;/p&gt;

&lt;p&gt;Please confirm if this observations are right and provide a fast workaround to solve this.&lt;/p&gt;

&lt;p&gt;Thanks,&lt;/p&gt;

&lt;p&gt;David G.&lt;/p&gt;</description>
                <environment>Windows (XP), Linux (Debian 5)</environment>
        <key id="20152">MGNLSTK-764</key>
            <summary>Contact Form doesn&apos;t work in Magnolia 4.4.2</summary>
                <type id="1" iconUrl="https://jira.magnolia-cms.com/secure/viewavatar?size=xsmall&amp;avatarId=10883&amp;avatarType=issuetype">Bug</type>
                                            <priority id="2" iconUrl="https://jira.magnolia-cms.com/images/icons/priorities/critical.svg">Critical</priority>
                        <status id="6" iconUrl="https://jira.magnolia-cms.com/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are not closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="6">Workaround exists</resolution>
                                        <assignee username="pbaerfuss">Philipp B&#228;rfuss</assignee>
                                    <reporter username="dgarcia">Diana Garcia</reporter>
                        <labels>
                    </labels>
                <created>Wed, 2 Mar 2011 07:41:04 +0100</created>
                <updated>Mon, 19 Dec 2011 13:21:15 +0100</updated>
                            <resolved>Wed, 13 Apr 2011 21:39:05 +0200</resolved>
                                    <version>1.4.2</version>
                                                        <due></due>
                            <votes>0</votes>
                                    <watches>0</watches>
                                                                                                                <comments>
                            <comment id="33862" author="dgarcia" created="Wed, 2 Mar 2011 08:00:58 +0100"  >&lt;p&gt;Also noticed that after clicking in the submit button of the contact form in 4.3.6 the path didn&apos;t change but in 4.4.2 a ?&amp;lt;some_text&amp;gt; string is added at the end of the path (.../contact.html?&amp;lt;some_text&amp;gt;)&lt;/p&gt;

&lt;p&gt;some_text is like a strange ID (maybe a session ID?)&lt;/p&gt;

&lt;p&gt;Maybe this is related with the caches working (see first report). 4.3.6 works well but 4.4.2 doesn&apos;t work after several attempts. In my server, in your demo server, in local, whatever.&lt;/p&gt;</comment>
                            <comment id="33870" author="tmattsson" created="Wed, 2 Mar 2011 10:14:07 +0100"  >&lt;p&gt;Hi David,&lt;/p&gt;

&lt;p&gt;As of version 4.4 of Magnolia forms keep internal state on the server. It is kept in session keyed using a unique id for each user interaction. This is the id you see in the URI. It makes it possible to have simultaneous form interactions in one session. For instance in multiple tabs. The unique id is rendered within the page as a hidden input field and therefor the page needs to be excluded from caching. Otherwise different users will use the same id that was used when the page went into the cache.&lt;/p&gt;

&lt;p&gt;For excluding content from the cache please consult the documentation on the cache module.&lt;br/&gt;
&lt;a href=&quot;http://documentation.magnolia-cms.com/modules/cache.html#Excludingcontentfromcache&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://documentation.magnolia-cms.com/modules/cache.html#Excludingcontentfromcache&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;// Tobias&lt;/p&gt;</comment>
                            <comment id="33908" author="dgarcia" created="Wed, 2 Mar 2011 15:29:33 +0100"  >&lt;p&gt;Hello Tobias,&lt;/p&gt;

&lt;p&gt;Thanks for your quick response. It explains the issue I had with the contact form. However, the severity of the consequences on the contact form in 4.4 and above (the new technique breaks its working) should be very well documented in the Form documentation page (critical) and in the link you refer above (I think, at less from my experience, that this page is less frequently read than the previous one).&lt;/p&gt;

&lt;p&gt;That said, I think that also it&apos;s important to attach an example of how to disable caching on contact forms. I have read that executor/bypass is suitable for doing this, but I haven&apos;t found any example.&lt;/p&gt;

&lt;p&gt;PLEASE: show me an example of what nodes must I enter below the content node &quot;bypass&quot; to disable for example a page named /service/contact.&lt;/p&gt;

&lt;p&gt;Thanks for your help,&lt;/p&gt;

&lt;p&gt;David&lt;/p&gt;

&lt;p&gt;PS. I find Magnolia a great product! &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                            <comment id="33913" author="dgarcia" created="Wed, 2 Mar 2011 16:32:50 +0100"  >&lt;p&gt;Also I have found that the deny node of the cachePolicy would be an interesting place to disable cache on a page. Please could you confirm if this would be enough doint this for a contact form?&lt;/p&gt;

&lt;p&gt;In the affirmative case, also please attach an example (concrete content nodes and nodes) of how to disable for example a page named /service/contact by using the deny procedure.&lt;/p&gt;

&lt;p&gt;Thanks again.&lt;/p&gt;</comment>
                            <comment id="33917" author="dgarcia" created="Wed, 2 Mar 2011 17:26:56 +0100"  >&lt;p&gt;First results with deny procedure:&lt;/p&gt;

&lt;p&gt;I have added the following content node below the deny content node of the cachePolicy:&lt;/p&gt;

&lt;p&gt;contacForm&lt;br/&gt;
   class info.magnolia.voting.voters.URIStartsWithVoter (String)&lt;br/&gt;
   pattern /service/contact (String)&lt;br/&gt;
   enabled true (Boolean)&lt;br/&gt;
   level 2 (Long)&lt;/p&gt;

&lt;p&gt;I suspect that this is not enough because Mozilla seems to make some caching on the client side and eventually a session expired error is found again after several attemps of clicking the Submit button from different sessions!!!&lt;/p&gt;

&lt;p&gt;This leads to me to think that the best procedure to solve this issue is disabling completely the cache system for the contact form, supposely by including it in the bypass node.&lt;/p&gt;

&lt;p&gt;However, I didn&apos;t find any example of how to do this.&lt;/p&gt;

&lt;p&gt;PLEASE provide an example (content nodes and node) of how to disable the above contact page caching via the &quot;deny&quot; node.&lt;/p&gt;

&lt;p&gt;I hope this info helps.&lt;/p&gt;

&lt;p&gt;Thanks and regards,&lt;/p&gt;

&lt;p&gt;David Garcia&lt;/p&gt;</comment>
                            <comment id="33918" author="dgarcia" created="Wed, 2 Mar 2011 17:28:11 +0100"  >&lt;p&gt;Sorry in the last post I mean to &quot;provide an example for the BYPASS method&quot;, as deny seems not enough. Thanks.&lt;/p&gt;</comment>
                            <comment id="33928" author="dgarcia" created="Wed, 2 Mar 2011 20:06:15 +0100"  >&lt;p&gt;I have been playing with your own 4.4.2 online demo site. It should be noted that currently the contact form of your own demo site is failing due to the issue comented in this tickect.&lt;/p&gt;

&lt;p&gt;This is not acceptable because the contact form is a critical point for a website. If customers can&apos;t contact the owner of the site from the contact form then opportunities are lost and the website is almost completely useless. This is not for criticizing (on the contrary, Magnolia is a very nice work), just for highlighting the importance of this issue for a website.&lt;/p&gt;

&lt;p&gt;Well, as you say it&apos;s a matter of caching. As far as I know, this configuration FIXES the contact form in your website:&lt;/p&gt;

&lt;p&gt;In cachePolicy &amp;gt; voters &amp;gt; deny add the following content node and data nodes:&lt;/p&gt;

&lt;p&gt;+ contactForm&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;class info.magnolia.voting.voters.URIRegexVoter&lt;/li&gt;
	&lt;li&gt;enabled true&lt;/li&gt;
	&lt;li&gt;level 4&lt;/li&gt;
	&lt;li&gt;pattern .&lt;b&gt;/demo-project/service/contact.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;That&apos;s all. I have tested it and works. I have used the URIRegexVoter instead URIStartsWithVoter because the regex one also works for multilingual sites.&lt;/p&gt;

&lt;p&gt;Please confirm if this configuration is good practice for contact forms in Magnolia 4.4 and above. My knowledge of Magnolia is limited so it would be nice to know your master opinion.&lt;/p&gt;

&lt;p&gt;If that&apos;s true, I find that it&apos;s critical that you document very clearly this way of configuring contact forms in Magnolia 4.4 and above. It seems that the contact form needs this configuration to work so users need to know that.&lt;/p&gt;

&lt;p&gt;Thanks for your fantastic product, I look forward to hearing your comments about this issue.&lt;/p&gt;

&lt;p&gt;David Garcia&lt;/p&gt;</comment>
                            <comment id="34025" author="pbaerfuss" created="Tue, 8 Mar 2011 11:25:50 +0100"  >&lt;p&gt;That has to be fixed, at least by adding the necessary cache configuration in the demo project.&lt;/p&gt;

&lt;p&gt;We should allow templates to define them as not cacheable. The cache might exclude URL if it sees the Cache-Contro: no-cache header. So a template could influence the cache if needed.   &lt;/p&gt;</comment>
                            <comment id="34047" author="pbaerfuss" created="Wed, 9 Mar 2011 08:33:37 +0100"  >&lt;p&gt;You can exclude pages from caching as shown in the screenshot: &lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;a id=&quot;14390_thumb&quot; href=&quot;https://jira.magnolia-cms.com/secure/attachment/14390/14390_Screen+shot+2011-03-09+at+08.31.19.png&quot; title=&quot;Screen shot 2011-03-09 at 08.31.19.png&quot; file-preview-type=&quot;image&quot; file-preview-id=&quot;14390&quot; file-preview-title=&quot;Screen shot 2011-03-09 at 08.31.19.png&quot;&gt;&lt;img src=&quot;https://jira.magnolia-cms.com/secure/thumbnail/14390/_thumb_14390.png&quot; style=&quot;border: 0px solid black&quot; role=&quot;presentation&quot;/&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</comment>
                            <comment id="34048" author="pbaerfuss" created="Wed, 9 Mar 2011 08:35:34 +0100"  >&lt;p&gt;Idea: should we generate the id only after the first post? so that the first form is cacheable?&lt;/p&gt;</comment>
                            <comment id="34775" author="tmattsson" created="Wed, 13 Apr 2011 21:39:05 +0200"  >&lt;p&gt;This issue is solved by excluding the page from caching. In the upcoming 1.2.2 release of the form module it will no longer be an issue since &lt;a href=&quot;https://jira.magnolia-cms.com/browse/MGNLFORM-82&quot; title=&quot;Forms should be able to render the first step without server side state &quot; class=&quot;issue-link&quot; data-issue-key=&quot;MGNLFORM-82&quot;&gt;&lt;del&gt;MGNLFORM-82&lt;/del&gt;&lt;/a&gt; removes the need for server side state when the first form step is rendered.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10030">
                    <name>Cloners</name>
                                                                <inwardlinks description="is cloned by">
                                                        </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10040">
                    <name>causality</name>
                                                                <inwardlinks description="is causing">
                                                        </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10022">
                    <name>supersession</name>
                                                                <inwardlinks description="is superseded by">
                                        <issuelink>
            <issuekey id="20413">MGNLFORM-82</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="14390" name="Screen shot 2011-03-09 at 08.31.19.png" size="262130" author="pbaerfuss" created="Wed, 9 Mar 2011 08:33:37 +0100"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_14166" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Acceptance criteria</customfieldname>
                        <customfieldvalues>
                            
        <checklist>
        <![CDATA[
                            




                
                                    <div class="o-completion" style="display: flex; flex-shrink: 0;"><span  class="aui-lozenge aui-lozenge-complete" style="font-size: 12px; font-weight: normal; display: flex; flex-direction: row; align-items: center;" ><span style="padding-right: 4px; vertical-align: middle;"><svg width="15" height="15" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg" fill="white"><path clip-rule="evenodd" d="m10.41037,3.42544l-7.86501,0c-0.72395,0 -1.31084,0.58688 -1.31084,1.31084l0,7.86508c0,0.7239 0.58689,1.3108 1.31084,1.3108l7.86501,0c0.724,0 1.3109,-0.5869 1.3109,-1.3108l0,-7.86508c0,-0.72396 -0.5869,-1.31084 -1.3109,-1.31084zm-7.86501,-0.65542c-1.08593,0 -1.96626,0.88032 -1.96626,1.96626l0,7.86508c0,1.0859 0.88033,1.9662 1.96626,1.9662l7.86501,0c1.086,0 1.9663,-0.8803 1.9663,-1.9662l0,-7.86508c0,-1.08594 -0.8803,-1.96626 -1.9663,-1.96626l-7.86501,0z" fill-rule="evenodd"/><path d="m5.09049,10.18526l-1.82767,-1.82766l-0.78479,0.78479l2.61246,2.61246l5.38758,-5.38754l-0.78483,-0.78479l-4.60275,4.60274z"/></svg></span><span>Empty</span></span></div>
                        ]]>
    </checklist>


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10111" key="com.atlassian.jira.toolkit:reporterdomain">
                        <customfieldname>Company</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>magnolia-cms.com</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10031" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 2 Mar 2011 10:14:07 +0100</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_12730" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_14151" key="com.atlassian.jira.toolkit:message">
                        <customfieldname>Docu info</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10061" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comm is not jira-dev</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10071" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last participant</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>mmuehlebach</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_13136" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            12 years, 45 weeks, 4 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10020" key="com.atlassian.jira.toolkit:attachments">
                        <customfieldname>Number of attachments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10150" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname>Number of comments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>11.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>dgarcia</customfieldvalue>
            <customfieldvalue>pbaerfuss</customfieldvalue>
            <customfieldvalue>tmattsson</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10833" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i02gc7:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10244" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>14385</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_14145" key="com.intenso.jira.issue-templates:issue-templates-customfield">
                        <customfieldname>Template</customfieldname>
                        <customfieldvalues>
                            


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_15131" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Time in Discovery</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10032" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time in Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </customfields>
    </item>
</channel>
</rss>