<!-- 
RSS generated by JIRA (9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b) at Mon Feb 12 03:27:21 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>[MAGNOLIA-1482] Templates stored in repository</title>
                <link>https://jira.magnolia-cms.com/browse/MAGNOLIA-1482</link>
                <project id="10000" key="MAGNOLIA">Magnolia</project>
                    <description>&lt;p&gt;At the moment, templates (ie. paragraph or pages) are stored on the filesystem (jsp) or the classpath (freemarker)&lt;/p&gt;

&lt;p&gt;Having them on the repo (a specific workspace) would allow&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;activating them (no more manual files copying)&lt;/li&gt;
	&lt;li&gt;editing them within Magnolia&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This seems pretty easy to implement for freemarker templates (implement a new freemarker.cache.TemplateLoader), with one warning though: since freemarker caches the result of its template parsing, loading the templates should probably occur in an acl-unaware way, i.e we should not try to restrict who/what can render certain templates. (of course, it&apos;s a different story for editing them through the admin interface, where we definitely want to use ACLs to determine who can view the templates source and modify them)&lt;/p&gt;

&lt;p&gt;Doing the same thing for JSPs seems rather cumbersome (one could imagine writing the repo content to the filesystem on creation/activation of node), and I&apos;m not sure we should encourage this.&lt;/p&gt;</description>
                <environment></environment>
        <key id="12719">MAGNOLIA-1482</key>
            <summary>Templates stored in repository</summary>
                <type id="2" iconUrl="https://jira.magnolia-cms.com/secure/viewavatar?size=xsmall&amp;avatarId=10891&amp;avatarType=issuetype">New Feature</type>
                                            <priority id="3" iconUrl="https://jira.magnolia-cms.com/images/icons/priorities/major.svg">Major</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="1">Fixed</resolution>
                                        <assignee username="gjoseph">Magnolia International</assignee>
                                    <reporter username="gjoseph">Magnolia International</reporter>
                        <labels>
                    </labels>
                <created>Wed, 25 Apr 2007 14:26:33 +0200</created>
                <updated>Mon, 23 May 2016 10:33:09 +0200</updated>
                            <resolved>Mon, 26 Jan 2009 16:32:30 +0100</resolved>
                                                    <fixVersion>4.0</fixVersion>
                                    <component>templating</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>0</watches>
                                                                                                                <comments>
                            <comment id="17919" author="gjoseph" created="Fri, 12 Sep 2008 14:11:15 +0200"  >&lt;p&gt;one thing i&apos;d love to see here is an import function that lets one import a template from fs OR classpath into the repo, to apply customizations as needed.&lt;/p&gt;</comment>
                            <comment id="18385" author="gjoseph" created="Mon, 6 Oct 2008 17:59:18 +0200"  >&lt;p&gt;note for later: loaders like the WebappContextTemplateLoader could be wrapped in a &quot;LazyWebappContextTemplateLoader&quot; - so no need for checking the state of the template loaders for each call in FreemarkerHelper, and actual working observation/reloading/changing of the TLs&lt;/p&gt;</comment>
                            <comment id="18398" author="had" created="Mon, 6 Oct 2008 20:21:44 +0200"  >&lt;p&gt;How do you think it should work? There is no &lt;tt&gt;setServletContext()&lt;/tt&gt; method on &lt;tt&gt;WebappContextTemplateLoader&lt;/tt&gt; would it be safe to assume servlet context never changes and cache instance of the WCTL with the SC as it was when loaded first time? This might not work when server decides to temporarily increase number of instances of default servlet due to load and discard them later.&lt;/p&gt;</comment>
                            <comment id="18400" author="gjoseph" created="Mon, 6 Oct 2008 20:43:28 +0200"  >&lt;p&gt;&lt;blockquote&gt;&lt;p&gt;How do you think it should work? There is no setServletContext() method on WebappContextTemplateLoader&lt;/p&gt;&lt;/blockquote&gt; .. which is why you have a lazy wrapper, which will only instanciate the wrapped WebappContextTemplateLoader once a WebappCtx is available.&lt;/p&gt;

&lt;p&gt;SC never &quot;changes&quot;, afaik, you can keep that reference.&lt;/p&gt;

&lt;p&gt;I don&apos;t see the connection with an increase of the number of servlets made by the container behind the scenes.&lt;/p&gt;</comment>
                            <comment id="18422" author="had" created="Tue, 7 Oct 2008 15:20:56 +0200"  >&lt;p&gt;You are right of course ... dunno what I was thinking. &lt;br/&gt;
WebappTL is now loaded via c2b as well and TLs are configured at startup (and reloaded on change).&lt;/p&gt;</comment>
                            <comment id="18460" author="had" created="Wed, 8 Oct 2008 15:56:31 +0200"  >&lt;p&gt;To summarize the security related implementation details:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;security will be checked normally for editing the templates&lt;/li&gt;
	&lt;li&gt;to serve the templates (loader.findTemplate()) will use SystemContext to ensure user do not need to login to get output of rendered template. This does NOT expose the source of templates to end users!&lt;/li&gt;
	&lt;li&gt;we can&apos;t just assign read privileges to everybody for templates workspace by default, since due to caching of templates we can&apos;t guarantee changing permissions for given user will make template invisible to that user.&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="19825" author="gjoseph" created="Wed, 10 Dec 2008 16:21:46 +0100"  >&lt;p&gt;Also see &lt;a href=&quot;http://jira.magnolia-cms.com/browse/MGNLINTEMPL&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;MGNLINTEMPL&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="20579" author="gjoseph" created="Tue, 20 Jan 2009 18:38:23 +0100"  >&lt;p&gt;I might try to put in some improvements for 4.0, if not, I&apos;ll split another issue for 4.1&lt;/p&gt;</comment>
                            <comment id="20830" author="gjoseph" created="Mon, 26 Jan 2009 16:32:30 +0100"  >&lt;p&gt;This is &lt;a href=&quot;https://jira.magnolia-cms.com/browse/MGNLINTEMPL-1&quot; title=&quot;templates in separate workspace (freemarker)&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MGNLINTEMPL-1&quot;&gt;&lt;del&gt;MGNLINTEMPL-1&lt;/del&gt;&lt;/a&gt;.&lt;br/&gt;
Also see &lt;a href=&quot;https://jira.magnolia-cms.com/browse/MAGNOLIA-2583&quot; title=&quot;Provide a custom MultiTemplateLoader&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MAGNOLIA-2583&quot;&gt;&lt;del&gt;MAGNOLIA-2583&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10160">
                    <name>Relates</name>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="52377">MAGNOLIA-6677</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10010">
                    <name>relation</name>
                                            <outwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="14510">MAGNOLIA-2170</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="14597">MAGNOLIA-2186</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="16035">MAGNOLIA-2583</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="15307">MGNLINTEMPL-1</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10022">
                    <name>supersession</name>
                                                                <inwardlinks description="is superseded by">
                                        <issuelink>
            <issuekey id="15307">MGNLINTEMPL-1</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </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>Mon, 6 Oct 2008 20:21:44 +0200</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>czimmermann</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_13136" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            15 years, 4 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10020" key="com.atlassian.jira.toolkit:attachments">
                        <customfieldname>Number of attachments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10150" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname>Number of comments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>had</customfieldvalue>
            <customfieldvalue>gjoseph</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_10833" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i00eov:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10244" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2416</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>