Commit 1f0c33c1 authored by Boris Kocherov's avatar Boris Kocherov

erp5_officejs: schema_editor fix panel rendering, add developer mode checkbox

parent edc9ab42
...@@ -36,16 +36,15 @@ ...@@ -36,16 +36,15 @@
</form> </form>
<ul data-role="listview" class="ui-listview" data-enhanced="true"></ul> <ul data-role="listview" class="ui-listview" data-enhanced="true"></ul>
<div data-gadget-url="gadget_erp5_field_checkbox.html"
data-gadget-scope="editable_mode"
data-gadget-sandbox="public"></div>
<dl></dl> <dl></dl>
</div> </div>
</script> </script>
<script id="panel-template-body-list" type="text/x-handlebars-template"> <script id="panel-template-body-list" type="text/x-handlebars-template">
<li><a href="{{document_list_href}}" class="ui-btn ui-btn-icon-left ui-icon-search" data-i18n="Schemas" accesskey="s">Schemas</a></li> {{#each this}}<li><a href="{{href}}" class="ui-btn ui-btn-icon-left ui-icon-{{icon_class}}" {{#if accesskey}}accesskey="{{accesskey}}"{{/if}} data-i18n="{{title}}">{{title}}</a></li>{{/each}}
{{list}}
<li><a href="{{sync_href}}" class="ui-btn ui-btn-icon-left ui-icon-refresh" data-i18n="Synchronize">Synchronize</a></li>
<li><a href="{{storage_href}}" class="ui-btn ui-btn-icon-left ui-icon-dropbox" data-i18n="Storages">Storages</a></li>
<li><a href="{{multi_upload_href}}" class="ui-btn ui-btn-icon-left ui-icon-upload" data-i18n="Upload">Upload</a></li>
</script> </script>
<script id="panel-template-body-desktop" type="text/x-handlebars-template"> <script id="panel-template-body-desktop" type="text/x-handlebars-template">
......
...@@ -22,20 +22,6 @@ ...@@ -22,20 +22,6 @@
.getElementById("panel-template-body-desktop") .getElementById("panel-template-body-desktop")
.innerHTML); .innerHTML);
function createElement(type, props, innerText) {
var element = document.createElement(type),
key;
for (key in props) {
if (props.hasOwnProperty(key)) {
element.setAttribute(key, props[key]);
}
}
if (innerText) {
element.innerText = innerText;
}
return element;
}
gadget_klass gadget_klass
.setState({ .setState({
visible: false, visible: false,
...@@ -84,11 +70,31 @@ ...@@ -84,11 +70,31 @@
workflow_list = JSON.stringify(workflow_list); workflow_list = JSON.stringify(workflow_list);
view_list = JSON.stringify(view_list); view_list = JSON.stringify(view_list);
} }
return context.getUrlParameter('editable') return RSVP.Queue()
.push(function (editable) { .push(function () {
return RSVP.all([
context.jio_allDocs({
"query": 'portal_type:"JSON Schema"',
"limit": [0, 31],
"select_list": ["title", "reference"],
"sort_on": [["title", "descending"]]
})
.push(function (result) {
return JSON.stringify(result.data.rows);
})
.push(undefined, function () {
return "[]";
}),
context.getUrlParameter('editable')
]);
})
.push(function (ret) {
var schema_list = ret[0],
editable = ret[1];
return context.changeState({ return context.changeState({
workflow_list: workflow_list, workflow_list: workflow_list,
view_list: view_list, view_list: view_list,
schema_list: schema_list,
global: true, global: true,
editable: options.editable || editable || false editable: options.editable || editable || false
}); });
...@@ -136,78 +142,90 @@ ...@@ -136,78 +142,90 @@
focus: false focus: false
}); });
}) })
.push(function () {
return context.declareGadget('gadget_erp5_field_multicheckbox.html', {
scope: "editable_mode",
element: tmp_element.querySelector('[data-gadget-scope="editable_mode"]')
});
})
.push(function () { .push(function () {
context.element.querySelector("div").appendChild(tmp_element); context.element.querySelector("div").appendChild(tmp_element);
return context.listenResize(); return context.listenResize();
}); });
} }
if (modification_dict.hasOwnProperty("editable")) { if (modification_dict.hasOwnProperty("schema_list") ||
modification_dict.hasOwnProperty("editable")) {
queue queue
// Update the global links
.push(function () { .push(function () {
return context.jio_allDocs({ function gen_element(element, title, css, accesskey) {
"query": 'portal_type:"JSON Schema"', return context.getUrlFor(element)
"limit": [0, 31],
"select_list": ["title", "reference"],
"sort_on": [["title", "descending"]]
});
})
.push(function (result) {
return result.data.rows;
})
.push(undefined, function () {
return [];
})
.push(function (result) {
function gen_element(row, css) {
return context.getUrlFor({command: 'display', options: {
page: "ojs_schema_document_list",
portal_type: "JSON Document",
schema: row.id,
schema_title: row.value.title
}})
.push(function (url) { .push(function (url) {
var element = createElement("li"); return {
element.appendChild(createElement("a", { title: title,
href: url, href: url,
class: "ui-btn ui-btn-icon-left " + css icon_class: css,
}, row.value.title)); accesskey: accesskey
return element.outerHTML; };
}); });
} }
var i, var i,
tasks = [ row,
context.getUrlFor({command: 'display', options: {page: "ojs_schema_document_list"}}), tasks = [],
context.getUrlFor({command: 'display', options: {page: "ojs_configurator"}}), schema_list = JSON.parse(context.state.schema_list);
context.getUrlFor({command: 'display', options: {page: "ojs_sync", 'auto_repair': true}}), if (context.state.editable) {
context.getUrlFor({command: 'index', options: {page: "ojs_multi_upload"}}) tasks.push(gen_element({command: 'display', options: {page: "ojs_schema_document_list"}},
]; "Schemas", "search", "s"));
for (i = 0; i < result.length; i += 1) { }
tasks.push(gen_element(result[i], "ui-icon-search")); for (i = 0; i < schema_list.length; i += 1) {
row = schema_list[i];
tasks.push(gen_element({command: 'display', options: {
page: "ojs_schema_document_list",
portal_type: "JSON Document",
schema: row.id,
schema_title: row.value.title
}}, row.value.title, "search"));
}
tasks.push(gen_element({command: 'display', options: {page: "ojs_sync", 'auto_repair': true}},
"Synchronize", "refresh"));
tasks.push(gen_element({command: 'display', options: {page: "ojs_configurator"}},
"Storages", "dropbox"));
if (context.state.editable) {
tasks.push(gen_element({command: 'index', options: {page: "ojs_multi_upload"}},
"Upload", "upload"));
} }
return RSVP.all(tasks); return RSVP.all(tasks);
}) })
.push(function (result_list) { .push(function (result_list) {
var i,
html = "";
for (i = 4; i < result_list.length; i += 1 ) {
html += result_list[i];
}
return context.translateHtml( return context.translateHtml(
panel_template_body_list({ panel_template_body_list(result_list)
"document_list_href": result_list[0],
"list": new Handlebars.SafeString(html),
"storage_href": result_list[1],
"sync_href": result_list[2],
"multi_upload_href": result_list[3]
})
); );
}) })
.push(function (result) { .push(function (result) {
context.element.querySelector("ul").innerHTML = result; context.element.querySelector("ul").innerHTML = result;
// Update the checkbox field value
return RSVP.all([
context.getDeclaredGadget("editable_mode"),
context.translate("Developer Mode")
]);
})
.push(function (result_list) {
var value = [],
search_gadget = result_list[0],
title = result_list[1];
if (context.state.editable) {
value = ['editable'];
}
return search_gadget.render({field_json: {
editable: true,
name: 'editable',
key: 'editable',
hidden: false,
items: [[title, 'editable']],
default: value
}});
}); });
} }
...@@ -318,9 +336,9 @@ ...@@ -318,9 +336,9 @@
}) })
.allowPublicAcquisition('notifyChange', function (argument_list, scope) { .allowPublicAcquisition('notifyChange', function (argument_list, scope) {
if (scope === 'erp5_checkbox') { if (scope === 'editable_mode') {
var context = this; var context = this;
return context.getDeclaredGadget('erp5_checkbox') return context.getDeclaredGadget('editable_mode')
.push(function (gadget) { .push(function (gadget) {
return gadget.getContent(); return gadget.getContent();
}) })
...@@ -334,7 +352,7 @@ ...@@ -334,7 +352,7 @@
} }
// Typing a search query should not modify the header status // Typing a search query should not modify the header status
return; return;
}) }, {mutex: 'changestate'})
.allowPublicAcquisition('notifyValid', function () { .allowPublicAcquisition('notifyValid', function () {
// Typing a search query should not modify the header status // Typing a search query should not modify the header status
return; return;
......
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