Commit a913416b authored by Roque's avatar Roque

erp5_web_project_ui: get project home page by publication section preference

- script to retrieve project related pages
- use global preference to get publication section value
- test updated
parent 727dac9b
from Products.ZSQLCatalog.SQLCatalog import Query, ComplexQuery
kw.pop('relative_url', None)
kw.pop('follow_up_uid', None)
portal_catalog=context.getPortalObject().portal_catalog
follow_up_related_document_list = portal_catalog(
portal_type=portal_type,
follow_up_uid=context.getUid(), **kw)
kw['query'] = Query(relative_url='%s/%%' % context.getRelativeUrl().replace('_', r'\_'))
if follow_up_related_document_list:
kw['query'] = ComplexQuery(
kw['query'],
Query(uid=[x.getUid() for x in follow_up_related_document_list]),
logical_operator='or')
return [x.getRelativeUrl() for x in portal_catalog(portal_type=portal_type, limit=limit, **kw)]
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<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_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<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>_params</string> </key>
<value> <string>portal_type= (), limit=None, **kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Project_getRelatedDocumentList</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -253,7 +253,7 @@ ...@@ -253,7 +253,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>_text</string> </key> <key> <string>_text</string> </key>
<value> <string>python: {"project_title":here.getTitle(), "jio_key": here.getRelativeUrl(), "project_reference": here.getReference()}</string> </value> <value> <string>python: {"project_title":here.getTitle(), "jio_key": here.getRelativeUrl(), "home_page_preference": "project_home_page", "project_pages": [x.replace("web_page_module/", "") for x in here.Project_getRelatedDocumentList("Web Page")]}</string> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
......
...@@ -76,6 +76,7 @@ ...@@ -76,6 +76,7 @@
function createProjectQuery(project_jio_key, key_value_list) { function createProjectQuery(project_jio_key, key_value_list) {
var i, query_list = [], id_query_list = [], id_complex_query; var i, query_list = [], id_query_list = [], id_complex_query;
if (project_jio_key) { if (project_jio_key) {
//relation to project or child project lines
id_query_list.push(new SimpleQuery({ id_query_list.push(new SimpleQuery({
key: "source_project__relative_url", key: "source_project__relative_url",
operator: "", operator: "",
...@@ -110,61 +111,85 @@ ...@@ -110,61 +111,85 @@
})); }));
} }
function getWebPageInfo(gadget, project_reference) { function getWebPageInfo(gadget, home_page_preference, project_pages) {
var id, var id,
content, content,
edit_view, edit_view,
redirector_ulr, redirector_ulr,
i,
query, query,
query_list = [], query_list = [],
valid_state_list = ["shared_alive", "released_alive", "published_alive"]; id_query_list = [],
validation_state_query_list = [],
valid_state_list = ["shared_alive", "released_alive", "published_alive"],
web_page;
if (project_pages.length === 0) {
return {"id": id, "content": content, "edit_view": edit_view};
}
query_list.push(new SimpleQuery({ query_list.push(new SimpleQuery({
key: "portal_type", key: "portal_type",
operator: "=", operator: "=",
type: "simple", type: "simple",
value: "Web Page" value: "Web Page"
})); }));
for (i = 0; i < valid_state_list.length; i += 1) {
validation_state_query_list.push(new SimpleQuery({
key: "validation_state",
type: "simple",
operator: "=",
value: valid_state_list[i]
}));
}
query_list.push(new ComplexQuery({
operator: "OR",
query_list: validation_state_query_list,
type: "complex"
}));
for (i = 0; i < project_pages.length; i += 1) {
id_query_list.push(new SimpleQuery({
key: "id",
type: "simple",
operator: "=",
value: project_pages[i]
}));
}
query_list.push(new ComplexQuery({
operator: "OR",
query_list: id_query_list,
type: "complex"
}));
query_list.push(new SimpleQuery({ query_list.push(new SimpleQuery({
key: "reference", key: "publication_section__relative_url",
operator: "=", operator: "=",
type: "simple", type: "simple",
value: project_reference + '-Home.Page' value: "publication_section/" + home_page_preference
})); }));
query = new ComplexQuery({ query = Query.objectToSearchText(new ComplexQuery({
operator: "AND", operator: "AND",
query_list: query_list, query_list: query_list,
type: "complex" type: "complex"
}); }));
return gadget.getUrlFor({command: 'push_history', options: {page: "project_redirector"}}) return gadget.getUrlFor({command: 'push_history', options: {page: "project_redirector"}})
.push(function (url) { .push(function (url) {
redirector_ulr = url; redirector_ulr = url;
return gadget.jio_allDocs({ return gadget.jio_allDocs({
query: Query.objectToSearchText(query), query: query,
select_list: ['validation_state', 'text_content'] select_list: ['text_content']
}); });
}) })
.push(function (result_list) { .push(function (result_list) {
if (result_list.data.rows[0]) { if (result_list.data.rows[0]) {
var i, state, web_page; web_page = result_list.data.rows[0];
for (i = 0; i < result_list.data.rows.length; i = i + 1) { id = web_page.id;
state = result_list.data.rows[i].value.validation_state; content = parseHTMLLinks(web_page.value.text_content, redirector_ulr);
if (valid_state_list.includes(state)) { return gadget.jio_getAttachment(id, "links")
web_page = result_list.data.rows[i]; .push(function (web_page_document) {
break; edit_view = getActionListByName(
} ensureArray(web_page_document._links.view),
} "view_editor"
if (web_page) { );
id = web_page.id; return {"id": id, "content": content, "edit_view": edit_view};
content = parseHTMLLinks(web_page.value.text_content, redirector_ulr); });
return gadget.jio_getAttachment(id, "links")
.push(function (web_page_document) {
edit_view = getActionListByName(
ensureArray(web_page_document._links.view),
"view_editor"
);
return {"id": id, "content": content, "edit_view": edit_view};
});
}
} }
return {"id": id, "content": content, "edit_view": edit_view}; return {"id": id, "content": content, "edit_view": edit_view};
}); });
...@@ -196,7 +221,8 @@ ...@@ -196,7 +221,8 @@
var state_dict = { var state_dict = {
jio_key: options.jio_key || "", jio_key: options.jio_key || "",
project_title: options.project_title, project_title: options.project_title,
project_reference: options.project_reference home_page_preference: options.home_page_preference,
project_pages: options.project_pages
}; };
return this.changeState(state_dict); return this.changeState(state_dict);
}) })
...@@ -208,7 +234,7 @@ ...@@ -208,7 +234,7 @@
return new RSVP.Queue() return new RSVP.Queue()
.push(function () { .push(function () {
return RSVP.all([ return RSVP.all([
getWebPageInfo(gadget, modification_dict.project_reference), getWebPageInfo(gadget, modification_dict.home_page_preference, modification_dict.project_pages),
gadget.getDeclaredGadget("editor"), gadget.getDeclaredGadget("editor"),
gadget.getSetting("hateoas_url") gadget.getSetting("hateoas_url")
]); ]);
......
portal = context.getPortalObject() portal = context.getPortalObject()
project_reference = 'test-project'
module = portal.getDefaultModule('Project')
project = module.newContent(portal_type = 'Project',
reference = project_reference)
project.validate()
if home_page: if home_page:
module = portal.getDefaultModule('Web Page') module = portal.getDefaultModule('Web Page')
home_page = module.newContent(portal_type = 'Web Page', home_page = module.newContent(portal_type = 'Web Page',
reference = 'test-project-Home.Page') reference = project_reference + '-home.page',
publication_section = 'project_home_page',
follow_up = project.getRelativeUrl())
home_page.publishAlive() home_page.publishAlive()
module = portal.getDefaultModule('Project')
project = module.newContent(portal_type = 'Project',
reference = 'test-project')
project.validate()
print "Project Created" print "Project Created"
return printed return printed
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