<!-- 
RSS generated by JIRA (9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b) at Mon Feb 12 03:20:25 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-761] Modules</title>
                <link>https://jira.magnolia-cms.com/browse/MAGNOLIA-761</link>
                <project id="10000" key="MAGNOLIA">Magnolia</project>
                    <description>&lt;p&gt;We have done the major step for modularizing magnolia. I would like go a step further before we release 3.0.&lt;/p&gt;

&lt;p&gt;Goal&lt;/p&gt;
&lt;hr /&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;tie everything together (one jar per module)&lt;/li&gt;
	&lt;li&gt;slim webapp (only stuff which an enduser concerns about: templates, css)&lt;/li&gt;
	&lt;li&gt;easier development process&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Changes&lt;br/&gt;
-------&lt;br/&gt;
A) Additional Bootstrap&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;A module has a bootstrap dir in the resources (during installation the content get&apos;s imported)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;B) Templates , .. per module&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Each module configuration has a dialog, paragraph, templates config (instead of registering them in the templating module)&lt;/li&gt;
	&lt;li&gt;The current templating module is renamed to samples&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;C) remove admindocroot and admintemplates&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;only the template and paragraph jsps and resources are extracted from the jar and written to the filesystem&lt;/li&gt;
	&lt;li&gt;the resources used in the admin interface are served by the resource servlet&lt;/li&gt;
	&lt;li&gt;NO jsps for the admin-interface (see below)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;D) New module definition no longer in the manifest file&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;the definition is in an xml file META-INF/magnolia/xxx.xml&lt;br/&gt;
--&amp;gt; during development one has not always a proper jar (with manifest)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;E) subdir per module&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;docroot/module&lt;/li&gt;
	&lt;li&gt;templates/module&lt;/li&gt;
	&lt;li&gt;if a new version is installed the dirs get rewritten completely&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;NO JSP in the admin interfaces&lt;br/&gt;
______________________________&lt;br/&gt;
In future we will use JSF and FreeMarker. As a mid-step I would like to change the dialogpages (not the dialogs). We call them newly pages. The default page uses a template named like the classname. With this we can avoid the jsps in admintemplates. The module register it&apos;s pages (like we do currently for trees, ...) and a main servlet processes this pages.&lt;/p&gt;</description>
                <environment></environment>
        <key id="11403">MAGNOLIA-761</key>
            <summary>Modules</summary>
                <type id="5" iconUrl="https://jira.magnolia-cms.com/secure/viewavatar?size=xsmall&amp;avatarId=10896&amp;avatarType=issuetype">Sub-task</type>
                            <parent id="11190">MAGNOLIA-587</parent>
                                    <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="3">Duplicate</resolution>
                                        <assignee username="pbaerfuss">Philipp B&#228;rfuss</assignee>
                                    <reporter username="pbaerfuss">Philipp B&#228;rfuss</reporter>
                        <labels>
                    </labels>
                <created>Fri, 3 Mar 2006 09:54:56 +0100</created>
                <updated>Tue, 17 Mar 2009 19:49:03 +0100</updated>
                            <resolved>Wed, 15 Mar 2006 08:39:43 +0100</resolved>
                                                    <fixVersion>3.0 Beta 1</fixVersion>
                                    <component>admininterface</component>
                    <component>core</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>0</watches>
                                                                                                                <comments>
                            <comment id="11746" author="fgiust" created="Fri, 3 Mar 2006 11:26:35 +0100"  >&lt;p&gt;some actions takes on C) remove admindocroot and admintemplates:&lt;br/&gt;
the new servlet that reads files directly from the classpath is ready: any file that is in a directory called &quot;mgnl-resources&quot; can be directly accessed using the path &quot;.resources/&quot; (for example &quot;mgnl-resources/editor/sample.txt&quot; can be accessed using &lt;a href=&quot;http://server/context/.resources/editor/sample.txt&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://server/context/.resources/editor/sample.txt&lt;/a&gt;&quot;).&lt;br/&gt;
Some of the admininterface files have been moved and the fckeditor resources are now in its own jar. Will go on moving all the other non-jsp files.&lt;/p&gt;</comment>
                            <comment id="11747" author="pbracher" created="Fri, 3 Mar 2006 11:43:51 +0100"  >&lt;p&gt;F) Restart after installation&lt;br/&gt;
The admin central shows a &apos;restart the system&apos; message if a new module was installed&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;may be new servlets added&lt;/li&gt;
	&lt;li&gt;a new repository registerd in repositories.xml&lt;/li&gt;
	&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="11769" author="pbracher" created="Mon, 13 Mar 2006 09:24:53 +0100"  >&lt;p&gt;I have changed the following (not yet checked in):&lt;/p&gt;

&lt;p&gt;Better initialization process:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;ModuleRegistration&lt;/li&gt;
	&lt;li&gt;ModuleLoader&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Module definition:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;a module has a xml descriptor (definition, dipendencies, servlets, repositories, ...)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Default module:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;can have and loads: dialogs, paragraphs, templates, trees, controls&lt;br/&gt;
--&amp;gt; the content of one module (for example the samples module) is tied together now&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Observation:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;the managers inherit ObservedManager which handles the observation centralized (no&lt;br/&gt;
registration of listeners everywhere)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Configurable:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;ParagraphManager&lt;/li&gt;
	&lt;li&gt;TemplateManager&lt;/li&gt;
	&lt;li&gt;DialogManager&lt;/li&gt;
	&lt;li&gt;ControlsManager&lt;br/&gt;
...&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Resources:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;removed the admindocroot&lt;/li&gt;
	&lt;li&gt;some util methods to handle resources (in jars and classes dir)&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="11770" author="pbracher" created="Mon, 13 Mar 2006 09:26:07 +0100"  >&lt;p&gt;and not to forget: killed a lot of static methods &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/wink.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="11771" author="kraft" created="Mon, 13 Mar 2006 15:09:21 +0100"  >&lt;p&gt;Did anybody ever think of uninstalling modules again?&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;if the installation itself breaks, we want to make sure that we leave no crap in the repositories etc (transactional installation?)&lt;/li&gt;
	&lt;li&gt;if we decide to remove a module, how can we also remove the entries made to repositories? Do we want to?&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I think it would be nice to have something like a module section in adminCentral that shows installed modules and allows us to uninstall or install a module at runtime. How much overlap&#252; is there with Ralfs new deployment mechanism?&lt;/p&gt;</comment>
                            <comment id="11772" author="ralf" created="Mon, 13 Mar 2006 16:58:40 +0100"  >&lt;p&gt;Yes there is an overlap, but I would like to have both.&lt;/p&gt;

&lt;p&gt;We can combine them and use packaging to install a module.&lt;br/&gt;
Just define packages holding the necessary files and repository entries.  The module jar&lt;br/&gt;
would then only contain class files and typical java resouces.&lt;br/&gt;
It should even be possible to undeploy a module using packaging with proper package definition.&lt;/p&gt;

&lt;p&gt;Deployment:&lt;br/&gt;
1. Install Module package&lt;br/&gt;
2. Restart Magnolia&lt;br/&gt;
3. Install repository package if you want to deploy entries to a new repository&lt;/p&gt;

&lt;p&gt;It would be nice if we could omit the restart&lt;img class=&quot;emoticon&quot; src=&quot;https://jira.magnolia-cms.com/images/icons/emoticons/wink.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="11773" author="pbracher" created="Mon, 13 Mar 2006 18:37:43 +0100"  >&lt;p&gt;I think it will take time to consolidate both. Therfore I propose to use the system as it is (with my changes and your packaging module) for the next relase.&lt;/p&gt;

&lt;p&gt;Modules: for magnolia / modules developers&lt;/p&gt;

&lt;p&gt;Packages: for templaters, system administrators, ...&lt;/p&gt;

&lt;p&gt;I think both can provit from each other if we handle it clever enough. &lt;/p&gt;

&lt;p&gt;the module mechanism brings:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;lifecycle&lt;/li&gt;
	&lt;li&gt;content is tied together&lt;/li&gt;
	&lt;li&gt;descriptor&lt;/li&gt;
	&lt;li&gt;servlet registration&lt;/li&gt;
	&lt;li&gt;repository registration&lt;/li&gt;
	&lt;li&gt;for developing core components&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The packaging brings:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;interface for creation &amp;amp; administration of packages&lt;/li&gt;
	&lt;li&gt;versions&lt;/li&gt;
	&lt;li&gt;deploy /undeploy&lt;/li&gt;
	&lt;li&gt;no restart&lt;/li&gt;
	&lt;li&gt;for developing projects&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Perhaps we should meet (virtual or real) after the next release to consolidate this&lt;/p&gt;</comment>
                            <comment id="11775" author="pbracher" created="Wed, 15 Mar 2006 08:28:01 +0100"  >&lt;p&gt;I commited the main code:&lt;/p&gt;

&lt;p&gt;Lifecycle:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;ModuleRegistration (checks dependencies)&lt;/li&gt;
	&lt;li&gt;ModuleLoader (initialization order follows dependencies)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Module Descriptor (betwixt used to read the modules xml descriptor):&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;ModuleDefinition&lt;/li&gt;
	&lt;li&gt;ServletDefinition&lt;/li&gt;
	&lt;li&gt;RepositoryDefinition&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;ObservedManager (reloading after a registered node changed)&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;ObservedManager&lt;/li&gt;
	&lt;li&gt;ParagraphManager&lt;/li&gt;
	&lt;li&gt;TemplateManager&lt;/li&gt;
	&lt;li&gt;DialogHandlerManager&lt;/li&gt;
	&lt;li&gt;ControlsManager&lt;/li&gt;
	&lt;li&gt;TreeHandlerManager&lt;/li&gt;
	&lt;li&gt;PageHandlerManager&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Default Modoule Implementation: AbstractModule&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;bootsraps the fiels config.modules.name.* in the resource folder mgnl-bootsrap (additional files can be defined in the descriptor)&lt;/li&gt;
	&lt;li&gt;copy files to the filesysten from mgnl-content/templates/module and docroot/module (additional files can be defined in the descriptor)&lt;/li&gt;
	&lt;li&gt;registers servlets defined in the descriptor&lt;/li&gt;
	&lt;li&gt;registers repositories&lt;/li&gt;
	&lt;li&gt;set restartNeeded flag if a servlet or repository was registered&lt;/li&gt;
	&lt;li&gt;during the initialization all dialogs, paragraphs, templates, controls, trees and pages are registered by there manager&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I will add subtasks to define the open points.&lt;/p&gt;</comment>
                            <comment id="11777" author="pbracher" created="Wed, 15 Mar 2006 08:39:43 +0100"  >&lt;p&gt;Is now &lt;a href=&quot;https://jira.magnolia-cms.com/browse/MAGNOLIA-768&quot; title=&quot;New Modules Mechanism&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MAGNOLIA-768&quot;&gt;&lt;del&gt;MAGNOLIA-768&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10010">
                    <name>relation</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="11415">MAGNOLIA-768</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10111" key="com.atlassian.jira.toolkit:reporterdomain">
                        <customfieldname>Company</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>woowai.com</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10031" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Fri, 3 Mar 2006 11:26:35 +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>ajones</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_13136" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            17 years, 50 weeks, 4 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>kraft</customfieldvalue>
            <customfieldvalue>fgiust</customfieldvalue>
            <customfieldvalue>pbaerfuss</customfieldvalue>
            <customfieldvalue>pbracher</customfieldvalue>
            <customfieldvalue>ralf</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10833" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i04obz:</customfieldvalue>

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