<!-- 
RSS generated by JIRA (9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b) at Mon Feb 12 00:33:09 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>[MGNLCTS-92] Remove uses of the Content API</title>
                <link>https://jira.magnolia-cms.com/browse/MGNLCTS-92</link>
                <project id="10470" key="MGNLCTS">Content Translation Support</project>
                    <description>&lt;p&gt;This issue relates to the epic &quot;Remove Content API&quot;. See &lt;a href=&quot;https://wiki.magnolia-cms.com/pages/viewpage.action?pageId=136852051&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://wiki.magnolia-cms.com/pages/viewpage.action?pageId=136852051&lt;/a&gt; for further detail.&lt;/p&gt;

&lt;p&gt;During the various sprints this ticket was in, we figured the best approach to getting rid of the content API was to create a new translation module. We would take the change and cleanup the API and problematic code (a lot) along the way.&lt;/p&gt;

&lt;h2&gt;&lt;a name=&quot;Newartifacts&quot;&gt;&lt;/a&gt;New artifacts&lt;/h2&gt;

&lt;p&gt;The new modules are:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;tt&gt;info.magnolia.translation:magnolia-content-translation:2.2-SNAPSHOT&lt;/tt&gt; and&lt;/li&gt;
	&lt;li&gt;&lt;tt&gt;info.magnolia.translation:magnolia-content-translation-pages-integration-app:2.2-SNAPSHOT&lt;/tt&gt; split out integration into pages app &#8211; used to be in the module itself).&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The old artifact&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;tt&gt;info.magnolia:magnolia-module-content-translation-support:2.2-SNAPSHOT&lt;/tt&gt; is now being redirected to&lt;/li&gt;
	&lt;li&gt;&lt;tt&gt;info.magnolia.translation:magnolia-content-translation-support-compatibility:2.2-SNAPSHOT&lt;/tt&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;&lt;a name=&quot;Overviewofchanges&quot;&gt;&lt;/a&gt;Overview of changes&lt;/h2&gt;

&lt;h3&gt;&lt;a name=&quot;PropertiesToTranslateFinder%28%7B%7Binfo.magnolia.translation.finder%7D%7D%29&quot;&gt;&lt;/a&gt;PropertiesToTranslateFinder (&lt;tt&gt;info.magnolia.translation.finder&lt;/tt&gt;)&lt;/h3&gt;

&lt;p&gt;Same as before but the main difference is the underlying object. Previously called &lt;tt&gt;info.magnolia.module.contenttranslationsupport.export.NodeDataBundle&lt;/tt&gt; (and also bound to Content API) the new object is &lt;tt&gt;info.magnolia.translation.finder.PropertyToTranslate&lt;/tt&gt;. STK-related classes were not migrated.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;Export%28%7B%7Binfo.magnolia.translation.io.writer%7D%7D%29&quot;&gt;&lt;/a&gt;Export (&lt;tt&gt;info.magnolia.translation.io.writer&lt;/tt&gt;)&lt;/h3&gt;

&lt;p&gt;Previously one had to specify &lt;tt&gt;info.magnolia.module.contenttranslationsupport.export.AbstractTranslationBundleWriter&lt;/tt&gt; (s) in the CTS module config. This was highly problematic because this setup was mixing config (the actual exporter config) with logic (the writer instance).&lt;/p&gt;

&lt;p&gt;Now one specifies a &lt;tt&gt;info.magnolia.translation.TranslationExportOperationDefinition&lt;/tt&gt; allowing to set a propery called &lt;tt&gt;writerImplementationClass&lt;/tt&gt; which needs to be a subclass of &lt;tt&gt;info.magnolia.translation.io.writer.AbstractTranslationItemWriter&lt;/tt&gt;. Per executed export operation, a new instance of such a writer will be instantiated. Note that the previous &lt;tt&gt;info.magnolia.module.contenttranslationsupport.export.AbstractTranslationBundleWriter#init(java.io.OutputStream, java.util.Locale[], java.util.Locale)&lt;/tt&gt; methods were removed in favor of constructor parameters eleminating the need to call the init method before anything else.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;Import%28%7B%7Binfo.magnolia.translation.io.reader%7D%7D%29&quot;&gt;&lt;/a&gt;Import (&lt;tt&gt;info.magnolia.translation.io.reader&lt;/tt&gt;)&lt;/h3&gt;

&lt;p&gt;So above section about export. Similarly there is a new definition called &lt;tt&gt;info.magnolia.translation.TranslationImportOperationDefinition&lt;/tt&gt; that allows to specify an op incl. a &lt;tt&gt;readerImplementationClass&lt;/tt&gt; property. This class needs to extend &lt;tt&gt;info.magnolia.translation.io.reader.AbstractTranslationItemReader&lt;/tt&gt;. Same cleanup effort was done as with the writers.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;Export%2Fimportexecution%28%7B%7Binfo.magnolia.translation.io%7D%7D%29&quot;&gt;&lt;/a&gt;Export / import execution (&lt;tt&gt;info.magnolia.translation.io&lt;/tt&gt;)&lt;/h3&gt;

&lt;p&gt;The legacy module contained to separate beans for imports (&lt;tt&gt;info.magnolia.module.contenttranslationsupport.reimport.TranslationBundleUpdate&lt;/tt&gt;) and exports (&lt;tt&gt;info.magnolia.module.contenttranslationsupport.export.TranslationBundle&lt;/tt&gt;). One was produced to write to files, the other to read from files. There is now one single bean &lt;tt&gt;info.magnolia.translation.io.TranslationItem&lt;/tt&gt; (incl. a builder) for both scenarios.&lt;/p&gt;

&lt;p&gt;One indirection for the export via &lt;tt&gt;info.magnolia.module.contenttranslationsupport.export.TranslationBundleExporter&lt;/tt&gt; was completely removed and the &lt;tt&gt;info.magnolia.translation.io.ContentTransporter&lt;/tt&gt; was cleaned up. It now takes a &lt;tt&gt;TranslationExportOperationDefinition&lt;/tt&gt; for exporting data and a &lt;tt&gt;TranslationImportOperationDefinition&lt;/tt&gt; when importing data.&lt;/p&gt;

&lt;p&gt;Export still mainly happens in &lt;tt&gt;info.magnolia.translation.io.ExportVisitor&lt;/tt&gt; and the import in &lt;tt&gt;info.magnolia.translation.io.TranslationItemImporter&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;All code involved was clean up and logic was moved to where is was appropriate.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;Commands%7B%7Binfo.magnolia.translation.commands%7D%7D&quot;&gt;&lt;/a&gt;Commands &lt;tt&gt;info.magnolia.translation.commands&lt;/tt&gt;&lt;/h3&gt;

&lt;p&gt;All deprecated commands were removed and both &lt;tt&gt;info.magnolia.translation.commands.TranslationFileUploadCommand&lt;/tt&gt; and &lt;tt&gt;info.magnolia.translation.commands.TranslationFileDownloadCommand&lt;/tt&gt; now extend &lt;tt&gt;info.magnolia.commands.MgnlCommand&lt;/tt&gt;. Default configured commands come in catalog &lt;tt&gt;translation&lt;/tt&gt;.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;Actions%28%7B%7Binfo.magnolia.translation.ui.action%7D%7D%29&quot;&gt;&lt;/a&gt;Actions (&lt;tt&gt;info.magnolia.translation.ui.action&lt;/tt&gt;)&lt;/h3&gt;

&lt;p&gt;Previously, &lt;tt&gt;OpenCreateTranslationFileUploadDialogAction&lt;/tt&gt; was bound to store any uploaded file in the website repository. This was changed: the action now uploads any binary into the workspace of the underlying item. Additionally the action used allow multi-items even though it was not extending the appropriate super class (hint &lt;tt&gt;AbstractMultiItemAction&lt;/tt&gt;). This was cleaned up.&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;TranslationFileDownloadDialogAction&lt;/tt&gt; duplicated a ton of code from the &lt;tt&gt;AbstractCommandAction&lt;/tt&gt;. Now it properly inherits from this action and only &quot;overrides&quot; logic by utilizing either &lt;tt&gt;#onPreExecute()&lt;/tt&gt; or &lt;tt&gt;#onPostExecute()&lt;/tt&gt;. Same goes for &lt;tt&gt;TranslationFileUploadDialogAction&lt;/tt&gt;.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;Field%7B%7Binfo.magnolia.translation.ui.form.field.definition%7D%7D&quot;&gt;&lt;/a&gt;Field &lt;tt&gt;info.magnolia.translation.ui.form.field.definition&lt;/tt&gt;&lt;/h3&gt;

&lt;p&gt;&lt;tt&gt;TranslationFileFormatOptionGroupFieldDefinition&lt;/tt&gt; used to contain logic to read from the module config to show a list of available formats (next to a pretty broken definition itself). This was wrong. Now we use a custom factory (&lt;tt&gt;TranslationFileFormatOptionGroupFieldFactory&lt;/tt&gt;) that reads a simple config and produces the desired field. An updated fieldType definition was added.&lt;/p&gt;</description>
                <environment></environment>
        <key id="60349">MGNLCTS-92</key>
            <summary>Remove uses of the Content API</summary>
                <type id="3" iconUrl="https://jira.magnolia-cms.com/secure/viewavatar?size=xsmall&amp;avatarId=10898&amp;avatarType=issuetype">Task</type>
                                            <priority id="6" iconUrl="https://jira.magnolia-cms.com/images/icons/priorities/neutral.gif">Neutral</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="pmundt">Philip Mundt</assignee>
                                    <reporter username="mmuehlebach">Michael M&#252;hlebach</reporter>
                        <labels>
                            <label>tech-debt</label>
                    </labels>
                <created>Fri, 14 Jul 2017 09:27:20 +0200</created>
                <updated>Mon, 2 Oct 2017 13:54:55 +0200</updated>
                            <resolved>Thu, 28 Sep 2017 18:09:05 +0200</resolved>
                                    <version>2.1.8</version>
                                    <fixVersion>2.2</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                    <issuelinks>
                            <issuelinktype id="10010">
                    <name>relation</name>
                                                                <inwardlinks description="is related to">
                                                        </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_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_12130" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Documentation update required</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="13300"><![CDATA[Yes]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_10246" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>DEV-610</customfieldvalue>
                        </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>mmichel</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_13136" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            6 years, 31 weeks, 2 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>0.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>mmuehlebach</customfieldvalue>
            <customfieldvalue>pmundt</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_10833" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i075c3:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10244" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10220" key="com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes">
                        <customfieldname>Release notes required</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10490"><![CDATA[Yes]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10245" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="554">Basel 111</customfieldvalue>
    <customfieldvalue id="559">Basel 112</customfieldvalue>
    <customfieldvalue id="562">Basel 113</customfieldvalue>
    <customfieldvalue id="566">Basel 114</customfieldvalue>
    <customfieldvalue id="573">Basel 115</customfieldvalue>
    <customfieldvalue id="577">Basel 116</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10242" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>21.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_14167" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Task DoR</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_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>