diff --git a/bt5/romain_dev/PathTemplateItem/web_page_module/romain_forum_html.html b/bt5/romain_dev/PathTemplateItem/web_page_module/romain_forum_html.html new file mode 100644 index 0000000000000000000000000000000000000000..e6054a824cbe2e1f800da1b76e41f888fc434ad7 --- /dev/null +++ b/bt5/romain_dev/PathTemplateItem/web_page_module/romain_forum_html.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html> + <!-- + data-i18n=Others + --> + <head> + <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> + <meta name="viewport" content="width=device-width" /> + <title>ERP5 PT Frontpage</title> + <link rel="http://www.renderjs.org/rel/interface" href="interface_page.html"> + + <!-- renderjs --> + <script src="rsvp.js" type="text/javascript"></script> + <script src="renderjs.js" type="text/javascript"></script> + <!--link rel="stylesheet" href="gadget_erp5_page_nx_project_quality.css"--> + + <!-- custom script --> + <script src="jiodev.js" type="text/javascript"></script> + <script src="gadget_global.js" type="text/javascript"></script> + <script src="domsugar.js" type="text/javascript"></script> + + <script src="gadget_erp5_page_nx_forum.js" type="text/javascript"></script> + + </head> + <body> + <ul> + </ul> + </body> +</html> \ No newline at end of file diff --git a/bt5/romain_dev/PathTemplateItem/web_page_module/romain_forum_html.xml b/bt5/romain_dev/PathTemplateItem/web_page_module/romain_forum_html.xml new file mode 100644 index 0000000000000000000000000000000000000000..5a2af66cbbeaeebcf66fb10038f30dc7efb9eb11 --- /dev/null +++ b/bt5/romain_dev/PathTemplateItem/web_page_module/romain_forum_html.xml @@ -0,0 +1,336 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Web Page" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Access_contents_information_Permission</string> </key> + <value> + <tuple> + <string>Anonymous</string> + <string>Assignee</string> + <string>Assignor</string> + <string>Associate</string> + <string>Auditor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Add_portal_content_Permission</string> </key> + <value> + <tuple> + <string>Assignee</string> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Change_local_roles_Permission</string> </key> + <value> + <tuple> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Modify_portal_content_Permission</string> </key> + <value> + <tuple> + <string>Assignee</string> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_View_Permission</string> </key> + <value> + <tuple> + <string>Anonymous</string> + <string>Assignee</string> + <string>Assignor</string> + <string>Associate</string> + <string>Auditor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>content_md5</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>text/html</string> </value> + </item> + <item> + <key> <string>default_reference</string> </key> + <value> <string>gadget_erp5_page_nx_forum.html</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>romain_forum_html</string> </value> + </item> + <item> + <key> <string>language</string> </key> + <value> <string>en</string> </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Web Page</string> </value> + </item> + <item> + <key> <string>short_title</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Forum Reader</string> </value> + </item> + <item> + <key> <string>version</string> </key> + <value> <string>001</string> </value> + </item> + <item> + <key> <string>workflow_history</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary> + <item> + <key> <string>document_publication_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + <item> + <key> <string>edit_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + <item> + <key> <string>processing_status_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> + </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_log</string> </key> + <value> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>publish_alive</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> + <global name="DateTime" module="DateTime.DateTime"/> + </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1609424889.61</float> + <string>UTC</string> + </tuple> + </state> + </object> + </value> + </item> + <item> + <key> <string>validation_state</string> </key> + <value> <string>published_alive</string> </value> + </item> + </dictionary> + </list> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_log</string> </key> + <value> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>edit</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>serial</string> </key> + <value> <string>989.1604.35674.62737</string> </value> + </item> + <item> + <key> <string>state</string> </key> + <value> <string>current</string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> + <global name="DateTime" module="DateTime.DateTime"/> + </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1609424915.53</float> + <string>UTC</string> + </tuple> + </state> + </object> + </value> + </item> + </dictionary> + </list> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="5" aka="AAAAAAAAAAU="> + <pickle> + <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_log</string> </key> + <value> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_processing_state</string> </key> + <value> <string>empty</string> </value> + </item> + <item> + <key> <string>serial</string> </key> + <value> <string>0.0.0.0</string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> + <global name="DateTime" module="DateTime.DateTime"/> + </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1609424496.86</float> + <string>UTC</string> + </tuple> + </state> + </object> + </value> + </item> + </dictionary> + </list> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/romain_dev/PathTemplateItem/web_page_module/romain_forum_js.js b/bt5/romain_dev/PathTemplateItem/web_page_module/romain_forum_js.js new file mode 100644 index 0000000000000000000000000000000000000000..f754a90f8085f47e933afbb7afda548b469047d9 --- /dev/null +++ b/bt5/romain_dev/PathTemplateItem/web_page_module/romain_forum_js.js @@ -0,0 +1,615 @@ +/*global window, rJS, RSVP, domsugar, SimpleQuery, ComplexQuery, Query, + console */ +/*jslint nomen: true, indent: 2, maxerr: 3, maxlen: 80, continue:true */ +(function (window, rJS, RSVP, domsugar, SimpleQuery, ComplexQuery, Query) { + "use strict"; + // XXX history_previous: prevent getting to erp5 ui by checking the + // historing or forcing the page value + // XXX create topic by followup (allDocs group by follow up) + + var DISPLAY_READER = 'display_reader', + MAIN_SCOPE = 'child_scope'; + + function loadChildGadget(gadget, gadget_url, must_declare, callback) { + var queue, + child_gadget; + if (must_declare) { + queue = gadget.declareGadget(gadget_url, {scope: MAIN_SCOPE}); + } else { + queue = gadget.getDeclaredGadget(MAIN_SCOPE); + } + return queue + .push(function (result) { + child_gadget = result; + if (callback) { + return callback(result); + } + }) + .push(function (result) { + if (must_declare) { + domsugar(gadget.element, [child_gadget.element]); + } + return result; + }); + } + + function renderDiscussionThreadList(gadget, must_declare) { + return loadChildGadget(gadget, "gadget_erp5_pt_form_view.html", + must_declare, + function (form_gadget) { + + var group_list = [], + field_dict = {}, + column_list = [ + ['title', 'Title'], + ['DiscussionThread_getDiscussionPostCount', 'Responses'], + ['modification_date', 'Modification Date'] + ]; + + field_dict.listbox = { + "column_list": column_list, + "show_anchor": 0, + "default_params": {}, + "editable": 1, + "editable_column_list": [], + "key": "field_listbox", + "lines": 15, + "list_method": "portal_catalog", + "query": "urn:jio:allDocs?query=" + Query.objectToSearchText( + new ComplexQuery({ + operator: "AND", + query_list: [ + new SimpleQuery({ + key: "portal_type", + operator: "=", + type: "simple", + value: "Discussion Thread" + }), + new SimpleQuery({ + key: "validation_state", + operator: "=", + type: "simple", + // XXX Check usual states + value: "shared" + }) + ], + type: "complex" + }) + ), + "portal_type": ["Discussion Thread"], + "search_column_list": [], + "sort_column_list": [], + "sort": [['modification_date', 'DESC']], + "title": "Discussion Threads", + "type": "ListBox" + }; + group_list.push([ + "bottom", + [["listbox"]] + ], [ + "hidden", ["listbox_modification_date"] + ]); + + return form_gadget.render({ + erp5_document: { + "_embedded": { + "_view": field_dict + }, + "_links": { + "type": { + // form_list display portal_type in header + name: "" + } + } + }, + form_definition: { + group_list: group_list + } + }); + }) + .push(function () { + return gadget.updateHeader({ + page_title: 'Forum', + page_icon: 'comment' + }); + }); + + } + + function renderDiscussionThread(gadget, must_declare, jio_key) { + return loadChildGadget(gadget, "gadget_erp5_pt_form_view.html", + must_declare, function (form_gadget) { + + var thread_info_dict; + return gadget.jio_allDocs({ + select_list: ['uid', 'title'], + query: Query.objectToSearchText( + new SimpleQuery({ + key: "relative_url", + operator: "=", + type: "simple", + value: jio_key + }) + ), + limit: [0, 1] + }) + .push(function (result_list) { + // XXX implement pseudo getResultValue + thread_info_dict = result_list.data.rows[0].value; + var group_list = [], + field_dict = {}, + column_list = [ + ['asStrippedHTML', 'Content'], + ['modification_date', 'Modification Date'] + ]; + + field_dict.listbox = { + "column_list": column_list, + "show_anchor": 0, + "default_params": {}, + "editable": 1, + "editable_column_list": [], + "key": "field_listbox", + "lines": 15, + "list_method": "portal_catalog", + "query": "urn:jio:allDocs?query=" + Query.objectToSearchText( + new ComplexQuery({ + operator: "AND", + query_list: [ + new SimpleQuery({ + key: "portal_type", + operator: "=", + type: "simple", + value: "Discussion Post" + }), + new SimpleQuery({ + key: "parent_uid", + operator: "=", + type: "simple", + // XXX Check usual states + value: thread_info_dict.uid + }) + ], + type: "complex" + }) + ), + "portal_type": ["Discussion Post"], + "search_column_list": [], + "sort_column_list": [], + "sort": [['modification_date', 'ASC']], + "title": "Discussion Posts", + "type": "ListBox" + }; + group_list.push([ + "bottom", + [["listbox"]] + ], [ + "hidden", ["listbox_modification_date"] + ]); + + return form_gadget.render({ + erp5_document: { + "_embedded": { + "_view": field_dict + }, + "_links": { + "type": { + // form_list display portal_type in header + name: "" + } + } + }, + form_definition: { + group_list: group_list + } + }); + }) + .push(function () { + return gadget.getUrlFor({command: 'history_previous'}); + }) + .push(function (url) { + return gadget.updateHeader({ + page_title: 'Thread: ' + thread_info_dict.title, + page_icon: 'comment', + front_url: url + }); + }); + }); + + } + + function renderDiscussionPost(gadget, must_declare, jio_key) { + return loadChildGadget(gadget, "gadget_erp5_pt_form_view.html", + must_declare, + function (form_gadget) { + + var thread_info_dict; + return gadget.jio_allDocs({ + select_list: ['asStrippedHTML', 'title'], + query: Query.objectToSearchText( + new SimpleQuery({ + key: "relative_url", + operator: "=", + type: "simple", + value: jio_key + }) + ), + limit: [0, 1] + }) + .push(function (result_list) { + // XXX implement pseudo getResultValue + thread_info_dict = result_list.data.rows[0].value; + var group_list = [], + field_dict = {}; + + field_dict.content = { + "editable": 0, + "key": "content", + "default": thread_info_dict.asStrippedHTML, + "type": "EditorField" + }; + group_list.push([ + "bottom", + [["content"]] + ]); + + return form_gadget.render({ + erp5_document: { + "_embedded": { + "_view": field_dict + }, + "_links": { + "type": { + // form_list display portal_type in header + name: "" + } + } + }, + form_definition: { + group_list: group_list + } + }); + }) + .push(function () { + return gadget.getUrlFor({command: 'history_previous'}); + }) + .push(function (url) { + return gadget.updateHeader({ + page_title: 'Post: ' + thread_info_dict.title, + page_icon: 'comment', + front_url: url + }); + }); + }); + + } + + function createMultipleSimpleOrQuery(key, value_list) { + var i, + query_list = []; + for (i = 0; i < value_list.length; i += 1) { + query_list.push(new SimpleQuery({ + key: key, + operator: "=", + type: "simple", + value: value_list[i] + })); + } + return new ComplexQuery({ + operator: "OR", + query_list: query_list, + type: "complex" + }); + } + + rJS(window) + ///////////////////////////////////////////////////////////////// + // Acquired methods + ///////////////////////////////////////////////////////////////// + .declareAcquiredMethod("updateHeader", "updateHeader") + .declareAcquiredMethod("translate", "translate") + .declareAcquiredMethod("getUrlForList", "getUrlForList") + .declareAcquiredMethod("getUrlFor", "getUrlFor") + .declareAcquiredMethod("jio_allDocs", "jio_allDocs") + .declareAcquiredMethod("jio_get", "jio_get") + + .declareMethod('triggerSubmit', function () { + return; + }) + + .declareMethod('render2', function renderHeader() { + var gadget = this; + return gadget.jio_allDocs({ + select_list: ['uid', 'follow_up_title', 'title', + 'modification_date', 'countFolder'], + sort_on: [['modification_date', 'DESC']], + query: Query.objectToSearchText( + new ComplexQuery({ + operator: "AND", + query_list: [ + new SimpleQuery({ + key: "portal_type", + operator: "=", + type: "simple", + value: "Discussion Thread" + }), + new SimpleQuery({ + key: "validation_state", + operator: "=", + type: "simple", + // XXX Check usual states + value: "shared" + }) + ], + type: "complex" + }) + ), + limit: 15 + }) + .push(function (result) { + var uid_list = []; + if (result.data.total_rows.length === 0) { + uid_list.push(-1); + } else { + uid_list = result.data.rows.map(function (x) { + return x.value.uid; + }); + } + // Search amount of documentation web pages related to those products + return gadget.jio_allDocs({ + select_list: ['parent_uid', 'count(*)'], + query: Query.objectToSearchText( + new ComplexQuery({ + operator: "AND", + query_list: [ + new SimpleQuery({ + key: "portal_type", + operator: "=", + type: "simple", + value: "Discussion Post" + }), + new ComplexQuery({ + operator: "OR", + type: "complex", + query_list: uid_list.map(function (parent_uid) { + return new SimpleQuery({ + key: "parent_uid", + operator: "=", + type: "simple", + value: parent_uid + }); + }) + }) + ], + type: "complex" + }) + ), + group_by: ['parent_uid'], + limit: 10000 + }) + .push(function () { + return result; + }); + + }) + .push(function (result) { + console.log(result); + var element_list = [], + i; + console.log(result); + for (i = 0; i < result.data.total_rows; i += 1) { + element_list.push( + domsugar('br'), + domsugar('div', [ + domsugar('p', {text: result.data.rows[i].value.title}), + domsugar('p', {text: result.data.rows[i].value.modification_date}), + domsugar('p', {text: result.data.rows[i].value.follow_up_title}), + domsugar('p', {text: result.data.rows[i].value.countFolder}), + ]) + ); + } + // XXX group by discussion post by parent_uid + console.log(element_list); + return domsugar(gadget.element, element_list); + }); + + var gadget = this, + product_uid_dict = {}, + meta_product_uid_list = [], + product_list = []; + // First, get the list of products + return searchAllProject(gadget, product_uid_dict, + meta_product_uid_list, product_list) + .push(function () { + return RSVP.hash({ + status_dom: buildSoftwareStatusDom(gadget, product_list, + product_uid_dict), + documentation_dom: buildDocumentationDom(gadget, + meta_product_uid_list) + }); + }) + .push(function (result_dict) { + + domsugar(gadget.element, [ + domsugar('img', {src: 'NXD-Official.Logo.svg?format=', + alt: 'Nexedi Logo'}), + domsugar('section', {class: 'ui-content-header-plain'}, [ + domsugar('h3', [ + domsugar('span', {class: 'ui-icon ui-icon-exchange', + text: ' '}), + 'Documentation' + ]) + ]), + result_dict.documentation_dom, + domsugar('section', {class: 'ui-content-header-plain'}, [ + domsugar('h3', [ + domsugar('span', {class: 'ui-icon ui-icon-exchange', + text: ' '}), + 'Software Status' + ]) + ]), + result_dict.status_dom + ]); + + return gadget.updateHeader({ + page_title: 'Nexedi Project Quality', + page_icon: 'puzzle-piece' + }); + }); + }) + + //////////////////////////////////////////////////////////////////// + // Go + //////////////////////////////////////////////////////////////////// + .allowPublicAcquisition('updateHeader', function () { + return; + }) + + .allowPublicAcquisition("jio_allDocs", function (param_list) { + // XXX Convert iso date to a DateTime field + // XXX Paginate message to last message on modification date column + var gadget = this, + options = param_list[0]; + return gadget.jio_allDocs(options) + .push(function (result) { + var i, date, len = result.data.total_rows; + for (i = 0; i < len; i += 1) { + if (result.data.rows[i].value.hasOwnProperty("modification_date")) { + date = new Date(result.data.rows[i].value.modification_date); + result.data.rows[i].value.modification_date = { + url_value: { + command: 'index', + options: { + jio_key: result.data.rows[i].id, + page: gadget.state.page + } + }, + field_gadget_param: { + allow_empty_time: 0, + ampm_time_style: 0, + css_class: "date_field", + date_only: false, + description: "The Date", + editable: 1, + hidden: 0, + hidden_day_is_last_day: 0, + "default": date.toUTCString(), + key: "modification_date", + required: 0, + timezone_style: 0, + title: "Modification Date", + type: "DateTimeField" + } + }; + } + if (result.data.rows[i].value.hasOwnProperty("asStrippedHTML")) { + result.data.rows[i].value.asStrippedHTML = { + url_value: { + command: 'index', + options: { + jio_key: result.data.rows[i].id, + page: gadget.state.page + } + }, + field_gadget_param: { + description: "Content", + editable: 0, + hidden: 0, + "default": result.data.rows[i].value.asStrippedHTML, + key: "asStrippedHTML", + required: 0, + title: "Content", + type: "EditorField" + } + }; + } + + } + return result; + }); + }) + + .setState({ + display_step: DISPLAY_READER + }) + .declareMethod('render', function (options) { + console.log(options); + return this.changeState({ + first_render: true, + page: options.page, + jio_key: options.jio_key, + options: options + /* + display_step: DISPLAY_TREE, + // Only build the bt5 during the first query + extract: 1, + diff_url: options.diff_url, + get_tree_url: options.get_tree_url, + remote_comment: options.remote_comment, + remote_url: options.remote_url, + key: options.key, + default_changelog: options.default_changelog, + default_push: options.default_push, + value: options.value || JSON.stringify({ + added: [], + modified: [], + removed: [], + changelog: '', + push: false + }), + editable: (options.editable === undefined) ? true : options.editable + */ + }); + }) + .onStateChange(function (modification_dict) { + console.log('changestate', modification_dict); + var gadget = this; + + // Always refresh the reader + if (gadget.state.display_step === DISPLAY_READER) { + if (gadget.state.jio_key === undefined) { + return renderDiscussionThreadList( + gadget, + modification_dict.hasOwnProperty('display_step') || modification_dict.first_render + ); + } + // XXX HACK + if ((gadget.state.jio_key.match(/\//g) || []).length === 1) { + return renderDiscussionThread( + gadget, + modification_dict.hasOwnProperty('display_step') || modification_dict.first_render, + gadget.state.jio_key + ); + } + return renderDiscussionPost( + gadget, + modification_dict.hasOwnProperty('display_step') || modification_dict.first_render, + gadget.state.jio_key + ); + } +/* + if (gadget.state.display_step === DISPLAY_TREE) { + console.log(modification_dict); + if (modification_dict.hasOwnProperty('display_step')) { + return renderTreeView(gadget, + modification_dict.hasOwnProperty('extract')); + } + if (modification_dict.hasOwnProperty('expand_tree')) { + return expandTreeView(gadget); + } + } + + if (modification_dict.display_step === DISPLAY_DIFF) { + return renderDiffView(gadget); + } + + if (modification_dict.display_step === DISPLAY_CHANGELOG) { + return renderChangelogView(gadget); + } +*/ + if (modification_dict.hasOwnProperty('display_step')) { + throw new Error('Unhandled display step: ' + gadget.state.display_step); + } + }); + +}(window, rJS, RSVP, domsugar, SimpleQuery, ComplexQuery, Query)); \ No newline at end of file diff --git a/bt5/romain_dev/PathTemplateItem/web_page_module/romain_forum_js.xml b/bt5/romain_dev/PathTemplateItem/web_page_module/romain_forum_js.xml new file mode 100644 index 0000000000000000000000000000000000000000..9b584bae01025e7622da8e7c32e21fa6b857b5d9 --- /dev/null +++ b/bt5/romain_dev/PathTemplateItem/web_page_module/romain_forum_js.xml @@ -0,0 +1,338 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Web Script" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Access_contents_information_Permission</string> </key> + <value> + <tuple> + <string>Anonymous</string> + <string>Assignee</string> + <string>Assignor</string> + <string>Associate</string> + <string>Auditor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Add_portal_content_Permission</string> </key> + <value> + <tuple> + <string>Assignee</string> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Change_local_roles_Permission</string> </key> + <value> + <tuple> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Modify_portal_content_Permission</string> </key> + <value> + <tuple> + <string>Assignee</string> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_View_Permission</string> </key> + <value> + <tuple> + <string>Anonymous</string> + <string>Assignee</string> + <string>Assignor</string> + <string>Associate</string> + <string>Auditor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>content_md5</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>default_reference</string> </key> + <value> <string>gadget_erp5_page_nx_forum.js</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>romain_forum_js</string> </value> + </item> + <item> + <key> <string>language</string> </key> + <value> <string>en</string> </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Web Script</string> </value> + </item> + <item> + <key> <string>short_title</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Forum Reader JS</string> </value> + </item> + <item> + <key> <string>version</string> </key> + <value> <string>001</string> </value> + </item> + <item> + <key> <string>workflow_history</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary> + <item> + <key> <string>document_publication_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + <item> + <key> <string>edit_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + <item> + <key> <string>processing_status_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> + </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_log</string> </key> + <value> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>publish_alive</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> + <global name="DateTime" module="DateTime.DateTime"/> + </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1609424819.36</float> + <string>UTC</string> + </tuple> + </state> + </object> + </value> + </item> + <item> + <key> <string>validation_state</string> </key> + <value> <string>published_alive</string> </value> + </item> + </dictionary> + </list> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_log</string> </key> + <value> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>edit</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>serial</string> </key> + <value> <string>989.8969.7970.21555</string> </value> + </item> + <item> + <key> <string>state</string> </key> + <value> <string>current</string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> + <global name="DateTime" module="DateTime.DateTime"/> + </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1609866799.64</float> + <string>UTC</string> + </tuple> + </state> + </object> + </value> + </item> + </dictionary> + </list> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="5" aka="AAAAAAAAAAU="> + <pickle> + <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_log</string> </key> + <value> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_processing_state</string> </key> + <value> <string>empty</string> </value> + </item> + <item> + <key> <string>serial</string> </key> + <value> <string>0.0.0.0</string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> + <global name="DateTime" module="DateTime.DateTime"/> + </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1609424753.54</float> + <string>UTC</string> + </tuple> + </state> + </object> + </value> + </item> + </dictionary> + </list> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/romain_dev/bt/template_keep_last_workflow_history_only_path_list b/bt5/romain_dev/bt/template_keep_last_workflow_history_only_path_list index d6215f74bdd1fb788ff479ac64f63390b3be4614..de2f74c6f97283bd44b45b3e7cc055eb9efdebae 100644 --- a/bt5/romain_dev/bt/template_keep_last_workflow_history_only_path_list +++ b/bt5/romain_dev/bt/template_keep_last_workflow_history_only_path_list @@ -1 +1,2 @@ -image_module/romain_wallpaper_* \ No newline at end of file +image_module/romain_wallpaper_* +web_page_module/romain_forum_* \ No newline at end of file diff --git a/bt5/romain_dev/bt/template_keep_workflow_path_list b/bt5/romain_dev/bt/template_keep_workflow_path_list index d6215f74bdd1fb788ff479ac64f63390b3be4614..de2f74c6f97283bd44b45b3e7cc055eb9efdebae 100644 --- a/bt5/romain_dev/bt/template_keep_workflow_path_list +++ b/bt5/romain_dev/bt/template_keep_workflow_path_list @@ -1 +1,2 @@ -image_module/romain_wallpaper_* \ No newline at end of file +image_module/romain_wallpaper_* +web_page_module/romain_forum_* \ No newline at end of file diff --git a/bt5/romain_dev/bt/template_path_list b/bt5/romain_dev/bt/template_path_list index a781074566792248c4d848b43a1c7d0e57e90f8d..3fe345f49a29d0c8288f705d02c3074e592292fb 100644 --- a/bt5/romain_dev/bt/template_path_list +++ b/bt5/romain_dev/bt/template_path_list @@ -1,2 +1,3 @@ image_module/romain_wallpaper_* -notebook_module/romain_notebook_* \ No newline at end of file +notebook_module/romain_notebook_* +web_page_module/romain_forum_* \ No newline at end of file