Commit f07c8291 authored by Klaus Wölfel's avatar Klaus Wölfel

[erp5_officejs] port notebook to gadget_jsmd_eval and add pdf conversion

parent 2a93926f
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string> testOfficejsNotebookErp5Synchronization</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<html>
<head>
<title tal:content="template/title">The title</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test OfficeJS Notebook UI</td></tr>
</thead>
<tbody>
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />
<!-- Clean Up -->
<tr>
<td>open</td>
<td>${base_url}/web_site_module/officejs_notebook/</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="Storages"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n="Storages"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>link=Erp5</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Erp5</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>name=erp5_url</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=erp5_url</td>
<td>${base_url}/web_site_module/renderjs_runner/</td>
</tr>
<tr>
<td>click</td>
<td>name=submit</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>link=Add</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Add</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//button[@data-i18n='Save']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>id=title</td>
<td></td>
</tr>
<tr>
<td>store</td>
<td tal:content="python: 'test_text_%s' % DateTime().strftime('%Y%m%d%H%M%S')">Titre</td>
<td>title</td>
</tr>
<tr>
<td>store</td>
<td tal:content="python: 'Test Reference %s' % DateTime()">Reference</td>
<td>reference</td>
</tr>
<tr>
<td>store</td>
<td tal:content="python: 'Test Language %s' % DateTime()">Language</td>
<td>language</td>
</tr>
<tr>
<td>store</td>
<td tal:content="python: 'Test Version %s' % DateTime()">Version</td>
<td>version</td>
</tr>
<tr>
<td>store</td>
<td tal:content="python: 'Test Description %s' % DateTime()">Description</td>
<td>description</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@title='Title']</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@title='Title']</td>
<td>${title}</td>
</tr>
<tr>
<td>type</td>
<td>//input[@title='Reference']</td>
<td>${reference}</td>
</tr>
<tr>
<td>type</td>
<td>//input[@title='Version']</td>
<td>${version}</td>
</tr>
<tr>
<td>type</td>
<td>//input[@title='Language']</td>
<td>${language}</td>
</tr>
<tr>
<td>type</td>
<td>//textarea[@title='Description']</td>
<td>${description}</td>
</tr>
<tr>
<td>click</td>
<td>//button[@class="ui-icon-expand ui-btn-icon-notext"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//button[@data-i18n='Save']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope="notification"]//button[text()='Data Updated']</td>
<td></td>
</tr>
<tal:block metal:define-macro="synchronization_document">
<tr>
<td colspan="3"><b>Sync Document</b></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n="Synchronize"]</td>
<td></td>
</tr>
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//button[@data-i18n='Filter']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>link=${title}</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=${title}</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>identifier=title</td>
<td></td>
</tr>
<tr>
<td>verifyValue</td>
<td>title</td>
<td>${title}</td>
</tr>
<tr>
<td>verifyValue</td>
<td>reference</td>
<td>${reference}</td>
</tr>
<tr>
<td>verifyValue</td>
<td>version</td>
<td>${version}</td>
</tr>
<tr>
<td>verifyValue</td>
<td>language</td>
<td>${language}</td>
</tr>
<tr>
<td>verifyValue</td>
<td>description</td>
<td>${description}</td>
</tr>
</tbody>
</table>
</body>
</html>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testOfficejsNotebookExport</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<html>
<head>
<title tal:content="template/title">The title</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test OfficeJS Notebook UI</td></tr>
</thead>
<tbody>
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />
<!-- Clean Up -->
<tr>
<td>open</td>
<td>${base_url}/web_site_module/officejs_notebook/</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="Storages"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n="Storages"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>link=Erp5</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Erp5</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>name=erp5_url</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=erp5_url</td>
<td>${base_url}/web_site_module/renderjs_runner/</td>
</tr>
<tr>
<td>click</td>
<td>name=submit</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>link=Add</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Add</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//button[@data-i18n='Save']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>id=title</td>
<td></td>
</tr>
<tr>
<td>store</td>
<td tal:content="python: 'test_text_%s' % DateTime().strftime('%Y%m%d%H%M%S')">Titre</td>
<td>title</td>
</tr>
<tr>
<td>store</td>
<td tal:content="python: 'Test Reference %s' % DateTime()">Reference</td>
<td>reference</td>
</tr>
<tr>
<td>store</td>
<td tal:content="python: 'Test Language %s' % DateTime()">Language</td>
<td>language</td>
</tr>
<tr>
<td>store</td>
<td tal:content="python: 'Test Version %s' % DateTime()">Version</td>
<td>version</td>
</tr>
<tr>
<td>store</td>
<td tal:content="python: 'Test Description %s' % DateTime()">Description</td>
<td>description</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//span[@role="presentation"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@title='Title']</td>
<td>${title}</td>
</tr>
<tr>
<td>type</td>
<td>//input[@title='Reference']</td>
<td>${reference}</td>
</tr>
<tr>
<td>type</td>
<td>//input[@title='Version']</td>
<td>${version}</td>
</tr>
<tr>
<td>type</td>
<td>//input[@title='Language']</td>
<td>${language}</td>
</tr>
<tr>
<td>type</td>
<td>//textarea[@title='Description']</td>
<td>${description}</td>
</tr>
<tr>
<td>click</td>
<td>//button[@data-i18n='Save']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope="notification"]//button[text()='Data Updated']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n="Synchronize"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>link=${title}</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=${title}</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//button[@value='Execute']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//button[@value='Execute']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//iframe[@src="https://softinst116586.host.vifib.net/erp5/web_site_module/officejs_notebook/app/gadget_jsmd_viewer.html"]</td>
<td></td>
</tr>
<tr>
<td>setSpeed</td>
<td>2000</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n="Export"]</td>
<td></td>
</tr>
<tr>
<td>setSpeed</td>
<td>0</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//select[@id="format"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//select[@id="format"]</td>
<td>value=pdf</td>
</tr>
<tr>
<td>click</td>
<td>//input[@type="submit"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//select[@id="format"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//select[@id="format"]</td>
<td>value=html</td>
</tr>
<tr>
<td>click</td>
<td>//input[@type="submit"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//select[@id="format"]</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>//select[@id="format"]</td>
<td>value=txt</td>
</tr>
<tr>
<td>click</td>
<td>//input[@type="submit"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="Cancel"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n="Cancel"]</td>
<td></td>
</tr>
</tbody>
</table>
</body>
</html>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testOfficsjsNotebook</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<html>
<head>
<title tal:content="template/title">Test OfficeJS Notebook UI</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Test OfficeJS Notebook UI</td></tr>
</thead>
<tbody>
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />
<!-- Clean Up -->
<tr>
<td>open</td>
<td>${base_url}/web_site_module/officejs_notebook/</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n="Storages"]</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n="Storages"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>link=Local is Enough</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Local is Enough</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>link=Add</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=Add</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//button[@data-i18n="Save"]</td>
<td></td>
</tr>
<tr>
<td>store</td>
<td tal:content="python: 'test_text_%s' % DateTime().strftime('%Y%m%d%H%M%S')">Titre</td>
<td>title</td>
</tr>
<tr>
<td>store</td>
<td tal:content="python: 'Test Reference %s' % DateTime()">Reference</td>
<td>reference</td>
</tr>
<tr>
<td>store</td>
<td tal:content="python: 'Test Language %s' % DateTime()">Language</td>
<td>language</td>
</tr>
<tr>
<td>store</td>
<td tal:content="python: 'Test Version %s' % DateTime()">Version</td>
<td>version</td>
</tr>
<tr>
<td>store</td>
<td tal:content="python: 'Test Description %s' % DateTime()">Description</td>
<td>description</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@title='Title']</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//input[@title='Title']</td>
<td>${title}</td>
</tr>
<tr>
<td>type</td>
<td>//input[@title='Reference']</td>
<td>${reference}</td>
</tr>
<tr>
<td>type</td>
<td>//input[@title='Version']</td>
<td>${version}</td>
</tr>
<tr>
<td>type</td>
<td>//input[@title='Language']</td>
<td>${language}</td>
</tr>
<tr>
<td>type</td>
<td>//textarea[@title='Description']</td>
<td>${description}</td>
</tr>
<tr>
<td>click</td>
<td>//button[@data-i18n='Save']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope="notification"]//button[text()='Data Updated']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@accesskey="s"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@data-i18n='Upload']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n='Upload']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//input[@value='Upload']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//a[@data-i18n="Cancel"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//a[@accesskey="s"]</td>
<td></td>
</tr>
<tal:block metal:define-macro="open_document_with_title">
<tr>
<td colspan="3"><b>Open Document</b></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_pt_form_list.html')]//input[@name='search']</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_pt_form_list.html')]//input[@name='search']</td>
<td>${title}</td>
</tr>
<tr>
<td>click</td>
<td>//div[contains(@data-gadget-url, 'gadget_erp5_pt_form_list.html')]//div[@data-gadget-scope='erp5_searchfield']//button[contains(@class, 'search_button')]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>link=${title}</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>link=${title}</td>
<td></td>
</tr>
</tal:block>
<tr>
<td>waitForElementPresent</td>
<td>//textarea[@title='Description']</td>
<td></td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@title='Title']</td>
<td>${title}</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@title='Reference']</td>
<td>${reference}</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@title='Version']</td>
<td>${version}</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//input[@title='Language']</td>
<td>${language}</td>
</tr>
<tr>
<td>verifyValue</td>
<td>//textarea[@title='Description']</td>
<td>${description}</td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//button[@value='Edit']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//button[@value='Edit']</td>
<td></td>
</tr>
<tr>
<td>assertEditable</td>
<td>//input[@title='Title']</td>
<td></td>
</tr>
<tr>
<td>assertEditable</td>
<td>//input[@title='Reference']</td>
<td></td>
</tr>
<tr>
<td>assertEditable</td>
<td>//input[@title='Version']</td>
<td></td>
</tr>
<tr>
<td>assertEditable</td>
<td>//input[@title='Language']</td>
<td></td>
</tr>
<tr>
<td>assertEditable</td>
<td>//textarea[@title='Description']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope="editor"]//iframe</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//iframe[@src="https://softinst116586.host.vifib.net/erp5/web_site_module/officejs_notebook/app/codemirror.gadget.html"]</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//button[@value='Execute']</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//button[@value='Execute']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//pre[@id='description']</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//p[@id='title']</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//p[@id='reference']</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//p[@id='version']</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//p[@id='language']</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//pre[@id='description']</td>
<td></td>
</tr>
<tr>
<td>waitForElementPresent</td>
<td>//div[@data-gadget-scope="editor"]//iframe[@src="https://softinst116586.host.vifib.net/erp5/web_site_module/officejs_notebook/app/gadget_jsmd_viewer.html"]</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//iframe[@src="https://softinst116586.host.vifib.net/erp5/web_site_module/officejs_notebook/app/gadget_jsmd_viewer.html"]</td>
<td></td>
</tr>
</tbody>
</table>
</body>
</html>
\ No newline at end of file
...@@ -55,6 +55,7 @@ ...@@ -55,6 +55,7 @@
return gadget.changeState({ return gadget.changeState({
jio_key: options.jio_key, jio_key: options.jio_key,
editable: options.editable || false,
doc: result, doc: result,
child_gadget_url: child_gadget_url child_gadget_url: child_gadget_url
}); });
...@@ -68,7 +69,8 @@ ...@@ -68,7 +69,8 @@
.push(function (child_gadget) { .push(function (child_gadget) {
return child_gadget.render({ return child_gadget.render({
jio_key: gadget.state.jio_key, jio_key: gadget.state.jio_key,
doc: gadget.state.doc doc: gadget.state.doc,
editable: gadget.state.editable
}); });
}); });
} }
...@@ -83,7 +85,8 @@ ...@@ -83,7 +85,8 @@
.push(function (form_gadget) { .push(function (form_gadget) {
return form_gadget.render({ return form_gadget.render({
jio_key: gadget.state.jio_key, jio_key: gadget.state.jio_key,
doc: gadget.state.doc doc: gadget.state.doc,
editable: gadget.state.editable
}); });
}); });
}); });
......
...@@ -225,7 +225,7 @@ ...@@ -225,7 +225,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>967.6016.61211.59613</string> </value> <value> <string>977.36473.21326.52036</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -243,7 +243,7 @@ ...@@ -243,7 +243,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1524754712.51</float> <float>1567594502.29</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -14,12 +14,21 @@ ...@@ -14,12 +14,21 @@
<body> <body>
<form class="save_form ui-body-c" novalidate> <form class="save_form ui-body-c" novalidate>
<div data-gadget-url="gadget_button_editable.html"
data-gadget-scope="editable"
data-gadget-sandbox="public">
</div>
<button type="submit" class="ui-btn ui-btn-b ui-btn-inline <button type="submit" class="ui-btn ui-btn-b ui-btn-inline
ui-icon-edit ui-btn-icon-right ui-screen-hidden"></button> ui-icon-edit ui-btn-icon-right ui-screen-hidden"></button>
<div data-gadget-url="gadget_erp5_form.html" <div data-gadget-url="gadget_erp5_form.html"
data-gadget-scope="form_view" data-gadget-scope="form_view"
data-gadget-sandbox="public"> data-gadget-sandbox="public">
</div> </div>
<div data-gadget-url="gadget_ojs_cloudooo.html"
data-gadget-scope="ojs_cloudooo"
data-gadget-sandbox="public">
</div>
</form> </form>
</body> </body>
</html> </html>
...@@ -248,7 +248,7 @@ ...@@ -248,7 +248,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>969.37889.56311.25753</string> </value> <value> <string>977.61336.29720.45619</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -266,7 +266,7 @@ ...@@ -266,7 +266,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1534254952.0</float> <float>1567438245.24</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
/*global window, rJS, RSVP */ /*global window, rJS, RSVP */
/*jslint nomen: true, indent: 2, maxerr: 3 */ /*jslint nomen: true, indent: 2, maxerr: 3 */
(function (window, rJS, RSVP) { (function (window, document, rJS, RSVP, promiseEventListener, Blob, DOMParser) {
"use strict"; "use strict";
var ATT_NAME = "data";
function ExportContent(gadget) {
var html = (new DOMParser()).parseFromString('<html><head><head><body><p></p></body></html>', 'text/html').documentElement;
html.querySelector('p').innerHTML = gadget.state.doc.text_content;
if (!gadget.state.editable) {
html = document.querySelector('[data-gadget-scope="editor"]').firstChild.contentDocument.body.firstChild.contentDocument.firstChild;
}
html.firstChild.innerHTML = "";
return new RSVP.Queue()
.push(function () {
return gadget.jio_putAttachment(
gadget.state.jio_key,
"data",
new Blob([html.outerHTML], {type: 'text/html'})
)
.push(function () {
return gadget.jio_putAttachment(
gadget.state.jio_key,
"options",
JSON.stringify({
encoding: ["utf8", "string"],
page_size: ["A4", "string"],
zoom : [1, "double"],
dpi : ["300", "string"],
header_center : ["document Title", "string"]
})
);
});
})
.push(function () {
return gadget.getDeclaredGadget("ojs_cloudooo");
})
.push(function (cloudooo) {
return gadget.jio_getAttachment(gadget.state.jio_key, "options", {"format": "json"})
.push(function (options) {
return cloudooo.putAllCloudoooConvertionOperation({
format: "html",
jio_key: gadget.state.jio_key,
conversion_kw : options
});
});
});
}
rJS(window) rJS(window)
.allowPublicAcquisition('triggerEditable', function (options) {
var gadget = this;
return new RSVP.Queue()
.push(function () {
return gadget.getDeclaredGadget('form_view');
})
.push(function (form_gadget) {
return form_gadget.getContent();
})
.push(function (content) {
for (var key in gadget.state.doc) {
if (!(key in content)) {content[key] = gadget.state.doc[key]; }
}
return gadget.changeState({
doc: content,
editable: options[0].editable
});
});
})
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// Acquired methods // Acquired methods
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
.declareAcquiredMethod("updateHeader", "updateHeader") .declareAcquiredMethod("updateHeader", "updateHeader")
.declareAcquiredMethod("jio_putAttachment", "jio_putAttachment")
.declareAcquiredMethod("jio_getAttachment", "jio_getAttachment")
.declareAcquiredMethod("getUrlParameter", "getUrlParameter") .declareAcquiredMethod("getUrlParameter", "getUrlParameter")
.declareAcquiredMethod("getUrlFor", "getUrlFor") .declareAcquiredMethod("getUrlFor", "getUrlFor")
.declareAcquiredMethod("updateDocument", "updateDocument") .declareAcquiredMethod("updateDocument", "updateDocument")
...@@ -17,11 +87,30 @@ ...@@ -17,11 +87,30 @@
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// declared methods // declared methods
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
.declareService(function () {
var gadget = this,
props = gadget.__sub_gadget_dict.form_view,
div = props.element.querySelector("div");
return new RSVP.Queue()
.push(function () {
return promiseEventListener(div, "load", true);
})
.push(function (my_event) {
document.querySelector('[data-i18n="Export"]').addEventListener("click", function () { ExportContent(gadget); }, false);
});
})
.declareMethod("render", function (options) { .declareMethod("render", function (options) {
return this.changeState({
jio_key: options.jio_key, var gadget = this;
doc: options.doc return new RSVP.Queue()
.push(function () {
return gadget.changeState({
jio_key: options.jio_key,
doc: options.doc,
editable: options.editable
});
}); });
}) })
...@@ -59,7 +148,7 @@ ...@@ -59,7 +148,7 @@
"default": gadget.state.doc.title, "default": gadget.state.doc.title,
"css_class": "", "css_class": "",
"required": 1, "required": 1,
"editable": 1, "editable": gadget.state.editable,
"key": "title", "key": "title",
"hidden": 0, "hidden": 0,
"type": "StringField" "type": "StringField"
...@@ -70,7 +159,7 @@ ...@@ -70,7 +159,7 @@
"default": gadget.state.doc.reference, "default": gadget.state.doc.reference,
"css_class": "", "css_class": "",
"required": 0, "required": 0,
"editable": 1, "editable": gadget.state.editable,
"key": "reference", "key": "reference",
"hidden": 0, "hidden": 0,
"type": "StringField" "type": "StringField"
...@@ -81,7 +170,7 @@ ...@@ -81,7 +170,7 @@
"default": gadget.state.doc.version, "default": gadget.state.doc.version,
"css_class": "", "css_class": "",
"required": 0, "required": 0,
"editable": 1, "editable": gadget.state.editable,
"key": "version", "key": "version",
"hidden": 0, "hidden": 0,
"type": "StringField" "type": "StringField"
...@@ -92,7 +181,7 @@ ...@@ -92,7 +181,7 @@
"default": gadget.state.doc.language, "default": gadget.state.doc.language,
"css_class": "", "css_class": "",
"required": 0, "required": 0,
"editable": 1, "editable": gadget.state.editable,
"key": "language", "key": "language",
"hidden": 0, "hidden": 0,
"type": "StringField" "type": "StringField"
...@@ -103,7 +192,7 @@ ...@@ -103,7 +192,7 @@
"default": gadget.state.doc.description, "default": gadget.state.doc.description,
"css_class": "", "css_class": "",
"required": 0, "required": 0,
"editable": 1, "editable": gadget.state.editable,
"key": "description", "key": "description",
"hidden": 0, "hidden": 0,
"type": "TextAreaField" "type": "TextAreaField"
...@@ -112,13 +201,13 @@ ...@@ -112,13 +201,13 @@
"default": gadget.state.doc.text_content, "default": gadget.state.doc.text_content,
"css_class": "", "css_class": "",
"required": 0, "required": 0,
"editable": 1, "editable": gadget.state.editable,
"key": "text_content", "key": "text_content",
"hidden": 0, "hidden": 0,
"type": "GadgetField", "type": "GadgetField",
"url": "gadget_editor.html", "url": "gadget_editor.html",
"sandbox": "public", "sandbox": "public",
"renderjs_extra": '{"editor": "notebook_editor", "maximize": true}' "renderjs_extra": '{"editor": "jsmd_editor", "maximize": true}'
} }
}}, }},
"_links": { "_links": {
...@@ -163,8 +252,8 @@ ...@@ -163,8 +252,8 @@
selection_url: url_list[0], selection_url: url_list[0],
previous_url: url_list[1], previous_url: url_list[1],
next_url: url_list[2], next_url: url_list[2],
download_url: url_list[3] export_url: url_list[3]
}); });
}); });
}); });
}(window, rJS, RSVP)); }(window, document, rJS, RSVP, promiseEventListener, Blob, DOMParser));
...@@ -244,7 +244,7 @@ ...@@ -244,7 +244,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>970.42986.60138.7065</string> </value> <value> <string>978.12700.38234.29030</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -262,7 +262,7 @@ ...@@ -262,7 +262,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1538406432.04</float> <float>1567529245.53</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -122,42 +122,33 @@ nexedi_logo_officejs_iodide.svg\n ...@@ -122,42 +122,33 @@ nexedi_logo_officejs_iodide.svg\n
gadget_officejs_notebook_router.html\n gadget_officejs_notebook_router.html\n
gadget_officejs_jio_notebook_view.html\n gadget_officejs_jio_notebook_view.html\n
gadget_officejs_jio_notebook_view.js\n gadget_officejs_jio_notebook_view.js\n
gadget_officejs_jio_notebook.js\n
gadget_erp5_page_ojs_upload.js\n gadget_erp5_page_ojs_upload.js\n
gadget_erp5_page_ojs_upload.html\n gadget_erp5_page_ojs_upload.html\n
gadget_erp5_page_ojs_download.js\n gadget_erp5_page_ojs_download.js\n
gadget_erp5_page_ojs_download.html\n gadget_erp5_page_ojs_download.html\n
gadget_erp5_page_ojs_notebook_list.js\n gadget_erp5_page_ojs_notebook_list.js\n
gadget_erp5_page_ojs_notebook_list.html\n gadget_erp5_page_ojs_notebook_list.html\n
gadget_notebook.html\n gadget_jsmd_viewer.css\n
iodide_master.js\n gadget_jsmd_viewer.html\n
iodide_master.css\n gadget_jsmd_viewer.js\n
pyodide.js\n gadget_jsmd_eval.html\n
pyodide.asm.data.js\n gadget_jsmd_eval.js\n
pyodide.asm.js\n gadget_jsmd_eval.css\n
pyodide.asm.wasm\n
pyodide.asm.data\n
cycler.data\n cycler.data\n
cycler.js\n cycler.js\n
kiwisolver.data\n kiwisolver.data\n
kiwisolver.js\n kiwisolver.js\n
matplotlib.data\n
matplotlib.js\n matplotlib.js\n
numpy.data\n
numpy.js\n numpy.js\n
packages.json\n packages.json\n
pandas.data\n
pandas.js\n pandas.js\n
pyodide.asm.html\n pyodide.asm.html\n
pyodide.py\n
pyparsing.data\n pyparsing.data\n
pyparsing.js\n pyparsing.js\n
python-dateutil.data\n python-dateutil.data\n
python-dateutil.js\n python-dateutil.js\n
python.html\n
pytz.data\n pytz.data\n
pytz.js\n pytz.js\n
renderedhtml.css\n
xlrd.data\n xlrd.data\n
xlrd.js\n xlrd.js\n
\n \n
...@@ -189,8 +180,8 @@ gadget_translation.js\n ...@@ -189,8 +180,8 @@ gadget_translation.js\n
gadget_translation_data.js\n gadget_translation_data.js\n
gadget_erp5_editor_panel.html\n gadget_erp5_editor_panel.html\n
gadget_erp5_editor_panel.js\n gadget_erp5_editor_panel.js\n
gadget_erp5_ojs_panel.html\n gadget_erp5_ojs_panel_with_editable.html\n
gadget_erp5_ojs_panel.js\n gadget_erp5_ojs_panel_with_editable.js\n
gadget_erp5_header.html\n gadget_erp5_header.html\n
gadget_erp5_header.js\n gadget_erp5_header.js\n
gadget_ojs_jio.html\n gadget_ojs_jio.html\n
...@@ -408,7 +399,7 @@ NETWORK:\n ...@@ -408,7 +399,7 @@ NETWORK:\n
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>973.33482.4166.8669</string> </value> <value> <string>977.39242.39830.6656</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -426,7 +417,7 @@ NETWORK:\n ...@@ -426,7 +417,7 @@ NETWORK:\n
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1549888313.28</float> <float>1565188490.95</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -18,7 +18,10 @@ ...@@ -18,7 +18,10 @@
<script data-renderjs-configuration="document_title" type="text/x-renderjs-configuration">Notebook</script> <script data-renderjs-configuration="document_title" type="text/x-renderjs-configuration">Notebook</script>
<script data-renderjs-configuration="document_title_plural" type="text/x-renderjs-configuration">Notebooks</script> <script data-renderjs-configuration="document_title_plural" type="text/x-renderjs-configuration">Notebooks</script>
<script data-renderjs-configuration="parent_relative_url" type="text/x-renderjs-configuration">notebook_module</script> <script data-renderjs-configuration="parent_relative_url" type="text/x-renderjs-configuration">notebook_module</script>
<script data-renderjs-configuration="erp5_attachment_synchro" type="text/x-renderjs-configuration"></script> <script data-renderjs-configuration="erp5_attachment_synchro" type="text/x-renderjs-configuration">/{+id}/Base_downloadWithCors</script>
<script data-renderjs-configuration="content_type" type="text/x-renderjs-configuration">application/x-asc-notebook</script>
<script data-renderjs-configuration="file_extension" type="text/x-renderjs-configuration">html</script>
<script data-renderjs-configuration="conversion_dict" type="text/x-renderjs-configuration">{"html": ["pdf","txt"]}</script>
<script data-renderjs-configuration="upload_dict" type="text/x-renderjs-configuration">{"txt": "txt", "html": "html"}</script> <script data-renderjs-configuration="upload_dict" type="text/x-renderjs-configuration">{"txt": "txt", "html": "html"}</script>
<script data-renderjs-configuration="dropbox_app_key" type="text/x-renderjs-configuration">82g9eir551nhovs</script> <script data-renderjs-configuration="dropbox_app_key" type="text/x-renderjs-configuration">82g9eir551nhovs</script>
<div data-gadget-url="gadget_erp5_router.html" data-gadget-scope="erp5_router"></div> <div data-gadget-url="gadget_erp5_router.html" data-gadget-scope="erp5_router"></div>
......
...@@ -278,7 +278,7 @@ ...@@ -278,7 +278,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>970.52955.27100.34065</string> </value> <value> <string>978.12315.2410.9523</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -296,7 +296,7 @@ ...@@ -296,7 +296,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1539094329.81</float> <float>1567506038.67</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -117,7 +117,7 @@ ...@@ -117,7 +117,7 @@
]); ]);
}) })
.push(function (result) { .push(function (result) {
return jio_gadget.putAttachment(options.id, options.name, result[0]); return jio_gadget.putAttachment(options.id, options.name, result[0], options.conversion_kw);
}) })
.push(function () { .push(function () {
return jio_gadget.getAttachment(options.id, options.name); return jio_gadget.getAttachment(options.id, options.name);
......
...@@ -269,7 +269,7 @@ ...@@ -269,7 +269,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>969.46608.54855.3123</string> </value> <value> <string>977.28694.830.42120</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -287,7 +287,7 @@ ...@@ -287,7 +287,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1534778298.94</float> <float>1567086325.95</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -4,14 +4,34 @@ ...@@ -4,14 +4,34 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>Gadget OfficeJS Upload</title> <title>Gadget Erp5 Page Ojs Cloudooo Download</title>
<script src="rsvp.js"></script> <script src="rsvp.js"></script>
<script src="renderjs.js"></script> <script src="renderjs.js"></script>
<script src="gadget_erp5_page_ojs_download.js"></script> <script src="gadget_erp5_page_ojs_download.js"></script>
<script src="jspdf.js"></script>
</head> </head>
<body> <body>
<form class="save_form ui-body-c" novalidate>
<div data-gadget-url="gadget_jsmd_viewer.html"
data-gadget-scope="editor"
data-gadget-sandbox="public">
</div>
<button type="submit" class="ui-btn ui-btn-b ui-btn-inline
ui-icon-edit ui-btn-icon-right ui-screen-hidden"></button>
<div data-gadget-url="gadget_erp5_pt_form_dialog.html"
data-gadget-scope="form_view"
data-gadget-sandbox="public">
</div>
<div data-gadget-url="gadget_ojs_cloudooo.html"
data-gadget-scope="ojs_cloudooo"
data-gadget-sandbox="public">
</div>
</form>
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -242,7 +242,7 @@ ...@@ -242,7 +242,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>970.43008.48748.51541</string> </value> <value> <string>977.28694.830.42120</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -260,7 +260,7 @@ ...@@ -260,7 +260,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1538576879.18</float> <float>1567439047.79</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
/*global window, rJS, Blob */ /*global window, rJS, RSVP */
/*jslint nomen: true, indent: 2, maxerr: 3 */ /*jslint nomen: true, indent: 2, maxerr: 3 */
(function (window, rJS, Blob) { (function (window, jIO, rJS, RSVP, Blob, DOMParser) {
"use strict"; "use strict";
function downloadFromTextContent(gadget, text_content, title) { function downloadJsPdf(gadget, html) {
var doc = new jsPDF();
var specialElementHandlers = {};
doc.fromHTML(html.lastChild.innerHTML, 15, 15, {
'width': 170,
'elementHandlers': specialElementHandlers
});
doc.save('sample-content.pdf');
}
//////////////////////////////////////////////////////
function downloadTxt(gadget) {
var element = gadget.element,
a = window.document.createElement("a"),
url = window.URL.createObjectURL(new Blob([gadget.state.doc.text_content], {type: 'text/plain'})),
name_list = [gadget.state.doc.title, "txt"];
element.appendChild(a);
a.style = "display: none";
a.href = url;
a.download = name_list.join('.');
a.click();
element.removeChild(a);
window.URL.revokeObjectURL(url);
}
//////
function downloadFromBlob(gadget, blob, format) {
var element = gadget.element, var element = gadget.element,
a = window.document.createElement("a"), a = window.document.createElement("a"),
url = window.URL.createObjectURL(new Blob([text_content], {type: 'text/plain'})), url = window.URL.createObjectURL(blob),
name_list = [title, "txt"]; name_list = gadget.state.doc.filename.split('.');
name_list[name_list.length - 1] = format;
element.appendChild(a); element.appendChild(a);
a.style = "display: none"; a.style = "display: none";
a.href = url; a.href = url;
...@@ -17,32 +46,184 @@ ...@@ -17,32 +46,184 @@
window.URL.revokeObjectURL(url); window.URL.revokeObjectURL(url);
} }
function downloadFromFormat(gadget, format) {
return gadget.getDeclaredGadget('ojs_cloudooo')
.push(function (ojs_cloudooo) {
return ojs_cloudooo.getConvertedBlob({
jio_key: gadget.state.jio_key,
format: format,
redirect: jIO.util.stringify({
'command': 'display',
'options': {
'page': 'ojs_download',
'jio_key': gadget.state.jio_key,
'download_format': format
}
})
});
})
.push(function (result) {
return downloadFromBlob(gadget, result, format);
})
.push(function () {
return gadget.notifySubmitted();
}, function (error) {
if (error instanceof jIO.util.jIOError) {
return gadget.notifySubmitted({
message: "Conversion Failed",
status: "error"
});
}
throw error;
});
}
//////
function addFileName(gadget, format) {
return new RSVP.Queue()
.push(function () {
var doc = gadget.state.doc;
var name_list = [doc.title, "html"];
doc.filename = name_list.join('.');
return doc;
})
.push(function (doc) {
gadget.jio_put(gadget.state.jio_key, doc);
})
.push(function () {
downloadFromFormat(gadget, format);
});
}
rJS(window) rJS(window)
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// Acquired methods // Acquired methods
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
.declareAcquiredMethod("getUrlFor", "getUrlFor") .declareAcquiredMethod("getUrlFor", "getUrlFor")
.declareAcquiredMethod("jio_get", "jio_get") .declareAcquiredMethod("getSetting", "getSetting")
.declareAcquiredMethod("removeSetting", "removeSetting")
.declareAcquiredMethod("updateHeader", "updateHeader")
.declareAcquiredMethod("jio_put", "jio_put")
.declareAcquiredMethod("notifySubmitting", "notifySubmitting")
.declareAcquiredMethod("notifySubmitted", "notifySubmitted")
.declareAcquiredMethod("redirect", "redirect") .declareAcquiredMethod("redirect", "redirect")
.declareAcquiredMethod("jio_get", "jio_get")
.declareAcquiredMethod("jio_getAttachment", "jio_getAttachment")
.declareAcquiredMethod("jio_putAttachment", "jio_putAttachment")
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// declared methods // declared methods
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
.allowPublicAcquisition('submitContent', function () {
var gadget = this;
return gadget.notifySubmitting()
.push(function () {
return gadget.getDeclaredGadget('form_view');
})
.push(function (form_gadget) {
return form_gadget.getContent();
})
.push(function (result) {
if (result.format == "txt") { downloadTxt(gadget); }
else {
return new RSVP.Queue()
.push(function () {
addFileName(gadget, result.format);
});
}
});
})
.declareMethod("triggerSubmit", function () {
return this.element.querySelector('button[type="submit"]').click();
})
.declareMethod("render", function (options) { .declareMethod("render", function (options) {
var gadget = this; var gadget = this;
return gadget.jio_get(options.jio_key) return new RSVP.Queue()
.push(function (doc) { .push(function () {
return downloadFromTextContent(gadget, doc.text_content, doc.title); return RSVP.all([
gadget.jio_get(options.jio_key),
gadget.getSetting("file_extension", "")
]);
})
.push(function (result) {
return gadget.changeState({
jio_key: options.jio_key,
doc: result[0],
format: result[1],
download_format: options.download_format,
editable: options.editable
});
});
})
.onStateChange(function () {
var gadget = this, format_list;
return gadget.getSetting('conversion_dict', {})
.push(function (conversion_dict) {
format_list = window.JSON.parse(conversion_dict)[gadget.state.format];
format_list.push(gadget.state.format);
return gadget.getDeclaredGadget('form_view');
}) })
.push(function () { .push(function (form_gadget) {
return gadget.redirect({ return form_gadget.render({
'command': 'display', erp5_document: {
'options': { "_embedded": {"_view": {
'jio_key': options.jio_key "_actions": {"put": {}},
"form_id": {},
"dialog_id": {},
"my_format": {
"title": "Format Avaible",
"required": 1,
"editable": 1,
"key": "format",
"value": gadget.state.format,
"items": format_list,
"type": "ListField"
}
}},
"_links": {
"type": {
// form_list display portal_type in header
name: ""
}
}
},
form_definition: {
title: "Download",
group_list: [[
"center",
[["my_format"]]
]]
} }
}); });
})
.push(function () {
return RSVP.all([
gadget.getUrlFor({
command: 'display',
options: {'jio_key': gadget.state.jio_key}
}),
gadget.getUrlFor({command: 'selection_previous'}),
gadget.getUrlFor({command: 'selection_next'})
]);
})
.push(function (url_list) {
return gadget.updateHeader({
page_title: "Download",
selection_url: url_list[0],
previous_url: url_list[1],
next_url: url_list[2]
});
})
.push(function () {
if (gadget.state.download_format) {
return downloadFromFormat(gadget, gadget.state.download_format);
}
}); });
}); });
}(window, rJS, Blob)); }(window, jIO, rJS, RSVP, Blob, DOMParser));
\ No newline at end of file
...@@ -242,7 +242,7 @@ ...@@ -242,7 +242,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>970.45827.27759.62020</string> </value> <value> <string>978.12190.27831.30242</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -260,7 +260,7 @@ ...@@ -260,7 +260,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1539074452.96</float> <float>1567510101.11</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -100,6 +100,7 @@ ...@@ -100,6 +100,7 @@
from: options.format, from: options.format,
to: format_list[i], to: format_list[i],
id: options.jio_key, id: options.jio_key,
conversion_kw: options.conversion_kw ? options.conversion_kw : {},
name: options.format === result[1] ? ATT_NAME : options.format name: options.format === result[1] ? ATT_NAME : options.format
})); }));
} }
......
...@@ -269,7 +269,7 @@ ...@@ -269,7 +269,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>969.46486.51629.28689</string> </value> <value> <string>977.28694.830.42120</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -287,7 +287,7 @@ ...@@ -287,7 +287,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1534770737.04</float> <float>1567077855.95</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
erp5_web_renderjs_ui erp5_web_renderjs_ui
erp5_code_mirror erp5_code_mirror
erp5_multimedia erp5_multimedia
erp5_notebook
erp5_smart_assistant erp5_smart_assistant
\ No newline at end of file
...@@ -5,9 +5,7 @@ image_module/hr_logo_svg ...@@ -5,9 +5,7 @@ image_module/hr_logo_svg
image_module/officejs_audioplayer_* image_module/officejs_audioplayer_*
image_module/officejs_todomvc_* image_module/officejs_todomvc_*
image_module/wallsearch_icon_svg image_module/wallsearch_icon_svg
portal_types/Web Page Module/text_editor_view portal_tests/officejs_ui_notebook_zuite/**
portal_types/Web Page/text_editor_clone
portal_types/Web Page/text_editor_view
web_page_module/dhtmlx_gantt_* web_page_module/dhtmlx_gantt_*
web_page_module/fb_sdk_js web_page_module/fb_sdk_js
web_page_module/gadget_field_* web_page_module/gadget_field_*
......
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width" />
<title>ERP5 Button Editable</title>
<!-- renderjs -->
<script src="rsvp.js" type="text/javascript"></script>
<script src="renderjs.js" type="text/javascript"></script>
<!-- custom script -->
<script src="gadget_button_editable.js" type="text/javascript"></script>
</head>
<body>
<button type="button" class="ui-icon-check ui-btn-icon-notext" value="Execute" style="float: right; border: 1px solid #e7e7e7;border-radius: 5px; padding: 8px; width: 100px">Execute</button>
<button type="button" class="ui-icon-edit ui-btn-icon-notext" value="Edit" style="float: right; border: 1px solid #e7e7e7;border-radius: 5px; padding: 8px; width: 100px" >Edit</button>
</body>
</html>
/*global window, rJS */
/*jslint indent: 2, maxerr: 3 */
(function (window, rJS, RSVP) {
"use strict";
rJS(window)
.declareAcquiredMethod('triggerEditable', 'triggerEditable')
.onEvent('click', function (event) {
var identif = event.toElement.value;
if (identif === 'Edit') {
return this.triggerEditable({editable: true});
} else if (identif === 'Execute') {
return this.triggerEditable({editable: false});
}
});
}(window, rJS, RSVP));
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment