From e6eb3494d772a659d21effe46eca7cdefb222434 Mon Sep 17 00:00:00 2001 From: Thomas Mortagne <thomas.mortagne@gmail.com> Date: Thu, 6 Oct 2016 16:49:52 +0200 Subject: [PATCH] XWIKI-13781: Filter application keep automatically reloading the log even when the job is finished --- .../Filter/ApplicationsPanelEntry.xml | 17 +- .../Filter/FilterStreamDescriptorForm.xml | 6 +- .../main/resources/Filter/FilterStreamJob.xml | 155 +++--------------- .../resources/Filter/FilterStreamJobJSON.xml | 70 ++++++++ .../src/main/resources/Filter/WebHome.xml | 103 ++++++------ 5 files changed, 165 insertions(+), 186 deletions(-) create mode 100644 xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamJobJSON.xml diff --git a/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/ApplicationsPanelEntry.xml b/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/ApplicationsPanelEntry.xml index 9e4535a11d7..adc898e091c 100644 --- a/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/ApplicationsPanelEntry.xml +++ b/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/ApplicationsPanelEntry.xml @@ -20,7 +20,7 @@ * 02110-1301 USA, or see the FSF site: http://www.fsf.org. --> -<xwikidoc version="1.1"> +<xwikidoc version="1.2" reference="Filter.ApplicationsPanelEntry" locale=""> <web>Filter</web> <name>ApplicationsPanelEntry</name> <language/> @@ -30,18 +30,15 @@ <creationDate>1384439645000</creationDate> <parent>WebHome</parent> <author>xwiki:XWiki.Admin</author> - <customClass/> <contentAuthor>xwiki:XWiki.Admin</contentAuthor> - <date>1384439741000</date> - <contentUpdateDate>1384439693000</contentUpdateDate> + <date>1475757366000</date> + <contentUpdateDate>1475757366000</contentUpdateDate> <version>1.1</version> <title/> - <defaultTemplate/> - <validationScript/> <comment/> <minorEdit>false</minorEdit> <syntaxId>xwiki/2.1</syntaxId> - <hidden/> + <hidden>false</hidden> <content/> <object> <name>Filter.ApplicationsPanelEntry</name> @@ -90,7 +87,9 @@ <nameField/> <validationScript/> <content> + <contenttype/> <disabled>0</disabled> + <editor>Text</editor> <name>content</name> <number>3</number> <prettyName>Extension Content</prettyName> @@ -118,7 +117,9 @@ <classType>com.xpn.xwiki.objects.classes.StringClass</classType> </name> <parameters> + <contenttype>PureText</contenttype> <disabled>0</disabled> + <editor>PureText</editor> <name>parameters</name> <number>4</number> <prettyName>Extension Parameters</prettyName> @@ -137,7 +138,7 @@ <prettyName>Extension Scope</prettyName> <relationalStorage>0</relationalStorage> <separator> </separator> - <separators> ,|</separators> + <separators>|, </separators> <size>1</size> <unmodifiable>0</unmodifiable> <values>wiki=Current Wiki|user=Current User|global=Global</values> diff --git a/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamDescriptorForm.xml b/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamDescriptorForm.xml index 91940e4e72b..abd56398352 100644 --- a/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamDescriptorForm.xml +++ b/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamDescriptorForm.xml @@ -20,7 +20,7 @@ * 02110-1301 USA, or see the FSF site: http://www.fsf.org. --> -<xwikidoc version="1.1"> +<xwikidoc version="1.2" reference="Filter.FilterStreamDescriptorForm" locale=""> <web>Filter</web> <name>FilterStreamDescriptorForm</name> <language/> @@ -31,8 +31,8 @@ <parent>WebHome</parent> <author>xwiki:XWiki.Admin</author> <contentAuthor>xwiki:XWiki.Admin</contentAuthor> - <date>1396260007000</date> - <contentUpdateDate>1396260007000</contentUpdateDate> + <date>1475757366000</date> + <contentUpdateDate>1475757366000</contentUpdateDate> <version>1.1</version> <title/> <comment/> diff --git a/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamJob.xml b/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamJob.xml index a7bc79eed67..11ca779baa2 100644 --- a/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamJob.xml +++ b/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamJob.xml @@ -20,7 +20,7 @@ * 02110-1301 USA, or see the FSF site: http://www.fsf.org. --> -<xwikidoc version="1.1"> +<xwikidoc version="1.2" reference="Filter.FilterStreamJob" locale=""> <web>Filter</web> <name>FilterStreamJob</name> <language/> @@ -30,150 +30,49 @@ <creationDate>1383901486000</creationDate> <parent>WebHome</parent> <author>xwiki:XWiki.Admin</author> - <customClass/> <contentAuthor>xwiki:XWiki.Admin</contentAuthor> - <date>1384437477000</date> - <contentUpdateDate>1384436951000</contentUpdateDate> + <date>1475764483000</date> + <contentUpdateDate>1475764483000</contentUpdateDate> <version>1.1</version> <title/> - <defaultTemplate/> - <validationScript/> <comment/> <minorEdit>false</minorEdit> <syntaxId>xwiki/2.1</syntaxId> <hidden>true</hidden> - <content>{{velocity}} -#if ($xcontext.action == 'view') - ## Include - #set ($discard = $xwiki.jsx.use('Filter.FilterStreamJob')) - (%id="filter_job_status"%)((())) -#end -{{/velocity}} + <content>{{template name="job_macros.vm"/}} -{{velocity wiki="false"}} -#if ($xcontext.action == 'get') - ## Ajax +{{velocity output="false"}} +#set ($discard = $xwiki.jsfx.use('uicomponents/job/job.js', true)) +{{/velocity}} +{{velocity}} +{{html}} <div id="filter_job_status"> #set($job = $services.filter.currentJob) #if ($job) - ## NOTE: We don't use #template because it currently registers the Velocity macros in a different namespace which makes - ## them unavailable in the current wiki page or the current template. We also tried #parse but it "randomly" fails to - ## register the Velocity macros from the parsed template. The only solution we found is to use #evaluate with #include - ## but unfortunately this doesn't allow the template to be overridden from the skin. - #evaluate("#include('extension.vm')") - - <div class="extension-body"> - Progress - <div> + #set ($jobStatusURL = $xwiki.getURL('FilterStreamJobJSON', 'get', $escapetool.url({ + 'outputSyntax': 'plain' + }))) + <div class="xcontent job-status" data-url="$jobStatusURL"> #set($jobStatus = $job.status) - #if ($jobStatus.state.name() == 'RUNNING') + #set($finished = $jobStatus.state.name() == 'FINISHED') + #if (!$finished) #displayJobProgressBar($jobStatus) + #else + #if ($jobStatus.log.getLogs('ERROR').isEmpty()) + <div class="box successmessage"> + Done. + </div> + #else + <div class="box errormessage"> + Error has been found during the conversion ! + </div> + #end #end - #printStatusLog($jobStatus) - </div> + #displayJobStatusLog($jobStatus true) </div> #end </div> -#end +{{/html}} {{/velocity}}</content> - <object> - <name>Filter.FilterStreamJob</name> - <number>0</number> - <className>XWiki.JavaScriptExtension</className> - <guid>0133c9ad-7236-47a8-8a98-d2db76645ac5</guid> - <class> - <name>XWiki.JavaScriptExtension</name> - <customClass/> - <customMapping/> - <defaultViewSheet/> - <defaultEditSheet/> - <defaultWeb/> - <nameField/> - <validationScript/> - <cache> - <cache>0</cache> - <disabled>0</disabled> - <displayType>select</displayType> - <multiSelect>0</multiSelect> - <name>cache</name> - <number>5</number> - <prettyName>Caching policy</prettyName> - <relationalStorage>0</relationalStorage> - <separator> </separator> - <separators> ,|</separators> - <size>1</size> - <unmodifiable>0</unmodifiable> - <values>long|short|default|forbid</values> - <classType>com.xpn.xwiki.objects.classes.StaticListClass</classType> - </cache> - <code> - <disabled>0</disabled> - <name>code</name> - <number>2</number> - <prettyName>Code</prettyName> - <rows>20</rows> - <size>50</size> - <unmodifiable>0</unmodifiable> - <classType>com.xpn.xwiki.objects.classes.TextAreaClass</classType> - </code> - <name> - <disabled>0</disabled> - <name>name</name> - <number>1</number> - <prettyName>Name</prettyName> - <size>30</size> - <unmodifiable>0</unmodifiable> - <classType>com.xpn.xwiki.objects.classes.StringClass</classType> - </name> - <parse> - <disabled>0</disabled> - <displayFormType>select</displayFormType> - <displayType>yesno</displayType> - <name>parse</name> - <number>4</number> - <prettyName>Parse content</prettyName> - <unmodifiable>0</unmodifiable> - <classType>com.xpn.xwiki.objects.classes.BooleanClass</classType> - </parse> - <use> - <cache>0</cache> - <disabled>0</disabled> - <displayType>select</displayType> - <multiSelect>0</multiSelect> - <name>use</name> - <number>3</number> - <prettyName>Use this extension</prettyName> - <relationalStorage>0</relationalStorage> - <separator> </separator> - <separators> ,|</separators> - <size>1</size> - <unmodifiable>0</unmodifiable> - <values>currentPage=Always on this page|onDemand=On demand|always=Always on this wiki</values> - <classType>com.xpn.xwiki.objects.classes.StaticListClass</classType> - </use> - </class> - <property> - <cache>long</cache> - </property> - <property> - <code>new Ajax.PeriodicalUpdater('filter_job_status', '${xwiki.getURL('FilterStreamJob', 'get')}', { - parameters: - { - type: this.value, - outputSyntax: 'plain', - input: 'true' - } - });</code> - </property> - <property> - <name/> - </property> - <property> - <parse>1</parse> - </property> - <property> - <use>onDemand</use> - </property> - </object> </xwikidoc> diff --git a/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamJobJSON.xml b/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamJobJSON.xml new file mode 100644 index 00000000000..298fe9d333e --- /dev/null +++ b/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/FilterStreamJobJSON.xml @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + * See the NOTICE file distributed with this work for additional + * information regarding copyright ownership. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. +--> + +<xwikidoc version="1.2" reference="Filter.FilterStreamJobJSON" locale=""> + <web>Filter</web> + <name>FilterStreamJobJSON</name> + <language/> + <defaultLanguage/> + <translation>0</translation> + <creator>xwiki:XWiki.Admin</creator> + <creationDate>1475763477000</creationDate> + <author>xwiki:XWiki.Admin</author> + <contentAuthor>xwiki:XWiki.Admin</contentAuthor> + <date>1475764281000</date> + <contentUpdateDate>1475764281000</contentUpdateDate> + <version>1.1</version> + <title/> + <comment/> + <minorEdit>false</minorEdit> + <syntaxId>xwiki/2.1</syntaxId> + <hidden>false</hidden> + <content>{{template name="job_macros.vm"/}} + +{{velocity output="false"}} +#macro(filterStreamJobMessage $jobStatus) + #set($finished = $jobStatus.state.name() == 'FINISHED') + #if ($finished) + #if ($jobStatus.log.getLogs('ERROR').isEmpty()) + <div class="box successmessage"> + Done toto. + </div> + #else + <div class="box errormessage"> + Error has been found during the conversion toto ! + </div> + #end + #end +#end +{{/velocity}} + +{{velocity wiki="false"}} +#if ($xcontext.action == 'get') + #set($job = $services.filter.currentJob) + #getJobStatusJSON($job.status $json) + #set($jobStatus = $job.status) + #set ($json.message = "#filterStreamJobMessage($jobStatus)") + $response.setContentType('application/json') + $jsontool.serialize($json) +#end +{{/velocity}}</content> +</xwikidoc> diff --git a/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/WebHome.xml b/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/WebHome.xml index f7d5a8618e8..482abc100da 100644 --- a/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/WebHome.xml +++ b/xwiki-platform-core/xwiki-platform-filter/xwiki-platform-filter-ui/src/main/resources/Filter/WebHome.xml @@ -20,7 +20,7 @@ * 02110-1301 USA, or see the FSF site: http://www.fsf.org. --> -<xwikidoc version="1.1"> +<xwikidoc version="1.2" reference="Filter.WebHome" locale=""> <web>Filter</web> <name>WebHome</name> <language/> @@ -31,8 +31,8 @@ <parent>Main.WebHome</parent> <author>xwiki:XWiki.Admin</author> <contentAuthor>xwiki:XWiki.Admin</contentAuthor> - <date>1417442821000</date> - <contentUpdateDate>1417442821000</contentUpdateDate> + <date>1475761760000</date> + <contentUpdateDate>1475761760000</contentUpdateDate> <version>1.1</version> <title>Filter streams</title> <comment/> @@ -41,13 +41,6 @@ <hidden>true</hidden> <content>{{warning}}Filter module is still young and experimental and while exporting should be safe enough, importing can be more risky for the current instance.{{/warning}} -{{template name="extension.vm" output="false"/}} - -{{velocity output="false"}} -#set ($discard = $xwiki.ssfx.use('uicomponents/extension/extension.css', true)) -#set ($discard = $xwiki.jsfx.use('uicomponents/extension/extension.js', true)) -{{/velocity}} - {{include reference="FilterStreamDescriptorForm"/}} {{velocity output="true"}} @@ -99,7 +92,9 @@ #set($job = $services.filter.startConvert($input, $inputProperties, $output, $outputProperties)) #end #if ($job) - {{success}}Conversion started.{{/success}} + #if (!$sourceStandardInput) + {{success}}Conversion started.{{/success}} + #end #else #set ($lastError = $services.filter.lastError) #if ($lastError) @@ -118,49 +113,61 @@ #end {{/velocity}} +== Current conversion + {{include reference="FilterStreamJob"/}} +== Configuration == + {{velocity}} {{html}} <form class="xform" method="post"> <div id="filter_form"> - <dl> - <dt><label for="filter_input_select">Input type</label></dt> - <dd> - <select name="input" id="filter_input_type"> - #foreach($type in $services.filter.availableInputStreams) - <option value="$escapetool.xml($type.serialize())"#if($type.serialize() == $input)selected="selected"#end>$services.filter.getInputFilterStreamDescriptor($type).name ($type)</option> - #if (!$input) - #set($input = $type.serialize()) + <fieldset> + <legend>Input</legend> + <dl> + <dt><label for="filter_input_select">Input type</label></dt> + <dd> + <select name="input" id="filter_input_type"> + #foreach($type in $services.filter.availableInputStreams) + <option value="$escapetool.xml($type.serialize())"#if($type.serialize() == $input)selected="selected"#end>$services.filter.getInputFilterStreamDescriptor($type).name ($type)</option> + #if (!$input) + #set($input = $type.serialize()) + #end #end - #end - </select> - </dd> - #if ($input) - <dt><label>Input configuration</label></dt> - <dd> - #filterDescriptorForm($services.filter.getInputFilterStreamDescriptor($input), 'filter_input_properties') - </dd> - #end + </select> + </dd> + #if ($input) + <dt><label>Input configuration</label></dt> + <dd> + #filterDescriptorForm($services.filter.getInputFilterStreamDescriptor($input), 'filter_input_properties') + </dd> + #end + </dl> + </fieldset> - <dt><label for="filter_output_select">Output type</label></dt> - <dd> - <select name="output" id="filter_output_type"> - #foreach($type in $services.filter.availableOutputStreams) - <option value="$escapetool.xml($type.serialize())"#if($type.serialize() == $output)selected="selected"#end>$services.filter.getOutputFilterStreamDescriptor($type).name ($type)</option> - #if (!$output) - #set($output = $type.serialize()) + <fieldset> + <legend>Output</legend> + <dl> + <dt><label for="filter_output_select">Output type</label></dt> + <dd> + <select name="output" id="filter_output_type"> + #foreach($type in $services.filter.availableOutputStreams) + <option value="$escapetool.xml($type.serialize())"#if($type.serialize() == $output)selected="selected"#end>$services.filter.getOutputFilterStreamDescriptor($type).name ($type)</option> + #if (!$output) + #set($output = $type.serialize()) + #end #end - #end - </select> - </dd> - #if ($output) - <dt><label>Output configuration</label></dt> - <dd> - #filterDescriptorForm($services.filter.getOutputFilterStreamDescriptor($output), 'filter_output_properties') - </dd> - #end - </dl> + </select> + </dd> + #if ($output) + <dt><label>Output configuration</label></dt> + <dd> + #filterDescriptorForm($services.filter.getOutputFilterStreamDescriptor($output), 'filter_output_properties') + </dd> + #end + </dl> + </fieldset> <p> <input class="button" type="submit" name="convert" value="Convert"/> @@ -193,14 +200,16 @@ <prettyName>Caching policy</prettyName> <relationalStorage>0</relationalStorage> <separator> </separator> - <separators> ,|</separators> + <separators>|, </separators> <size>1</size> <unmodifiable>0</unmodifiable> <values>long|short|default|forbid</values> <classType>com.xpn.xwiki.objects.classes.StaticListClass</classType> </cache> <code> + <contenttype>PureText</contenttype> <disabled>0</disabled> + <editor>PureText</editor> <name>code</name> <number>2</number> <prettyName>Code</prettyName> @@ -238,7 +247,7 @@ <prettyName>Use this extension</prettyName> <relationalStorage>0</relationalStorage> <separator> </separator> - <separators> ,|</separators> + <separators>|, </separators> <size>1</size> <unmodifiable>0</unmodifiable> <values>currentPage|onDemand|always</values> -- GitLab