Commit 79960ff2 authored by Xiaowu Zhang's avatar Xiaowu Zhang Committed by Xiaowu Zhang

erp5_travel_expense: can select validated missions in expense record

erp5_travel_expense: avoid undefined value

erp5_travel_expense: link related to Travel Request instead of record

erp5_travel_expense: can use listbox to search related mission in expense record
parent 423198da
...@@ -80,7 +80,11 @@ ...@@ -80,7 +80,11 @@
i; i;
all_docs_result = result; all_docs_result = result;
for (i = 0, i_len = result.data.total_rows; i < i_len; i += 1) { for (i = 0, i_len = result.data.total_rows; i < i_len; i += 1) {
promise_list.push(gadget.getUrlFor({jio_key: result.data.rows[i].id, page: 'view'})); if (option_dict.came_from_jio_key) {
promise_list.push(gadget.getUrlFor({jio_key: option_dict.came_from_jio_key, page: 'view', came_from_jio_key: result.data.rows[i].id}));
} else {
promise_list.push(gadget.getUrlFor({jio_key: result.data.rows[i].id, page: 'view'}));
}
} }
return RSVP.all(promise_list); return RSVP.all(promise_list);
...@@ -146,7 +150,8 @@ ...@@ -146,7 +150,8 @@
return gadget.redirect({ return gadget.redirect({
jio_key: gadget.property_dict.option_dict.jio_key || '', jio_key: gadget.property_dict.option_dict.jio_key || '',
page: gadget.property_dict.option_dict.search_page || '', page: gadget.property_dict.option_dict.search_page || '',
search: evt.target[0].value search: evt.target[0].value,
came_from_jio_key: gadget.property_dict.option_dict.came_from_jio_key
}); });
} }
); );
......
...@@ -234,7 +234,7 @@ ...@@ -234,7 +234,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>948.5700.26625.14643</string> </value> <value> <string>956.14016.52782.35993</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -252,7 +252,7 @@ ...@@ -252,7 +252,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1451303858.2</float> <float>1482742612.5</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -15,6 +15,17 @@ ...@@ -15,6 +15,17 @@
<script src="alertify.js"></script> <script src="alertify.js"></script>
<script id="relation-listview-template" type="text/x-handlebars-template">
{{#if list.length}}
<li class="ui-autocomplete ui-li ui-li-divider ui-bar-inherit ui-first-child" role="heading">Select from the {{list.length}} Search Results</li>
{{#each list}}
<li class="ui-li ui-bar-inherit ui-li-static ui-body-inherit ui-icon-mail-forward ui-btn-icon-right" data-relative-url='{{id}}' >{{value}}</li>
{{/each}}
{{else}}
<li class="ui-autocomplete ui-li ui-li-divider ui-bar-inherit" role="heading">No result</li>
{{/if}}
<li class="ui-li-static ui-body-inherit ui-last-child ui-bar-inherit ui-icon-search ui-btn-icon-right" data-explore=true >Explore the Search Result List</li>
</script>
<script class="view-expense-record-template" type="text/x-handlebars-template"> <script class="view-expense-record-template" type="text/x-handlebars-template">
<form class="view-expense-record-form"> <form class="view-expense-record-form">
...@@ -83,6 +94,18 @@ ...@@ -83,6 +94,18 @@
<textarea name="comment">{{comment}}</textarea> <textarea name="comment">{{comment}}</textarea>
</div> </div>
<div class="ui-field-contain">
<label data-i18n="Related Mission">Related Mission</label>
<div class='ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset ui-input-has-clear ui-input-has-icon'>
<div>
<input class='relation_input' type='search' name='related_mission' autocomplete="off" data-enhanced="true" value="{{related_mission}}" >
<ul class="ui-listview ui-corner-all search_ul"></ul>
</div>
<a href='{{related_mission_url}}' class='{{related_mission_class}}'></a>
</div>
</div>
</div>
<div class="ui-field-contain"> <div class="ui-field-contain">
<label data-i18n="Sync Method">Sync Method</label> <label data-i18n="Sync Method">Sync Method</label>
<div> <div>
...@@ -146,11 +169,24 @@ ...@@ -146,11 +169,24 @@
<label data-i18n="Input Date">Input Date</label> <label data-i18n="Input Date">Input Date</label>
<input type="date" name="date" value="{{date}}" readonly class='ui-state-readonly'> <input type="date" name="date" value="{{date}}" readonly class='ui-state-readonly'>
</div> </div>
<div class="ui-field-contain">
<label data-i18n="Related Mission">Related Mission</label>
<div class='ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset ui-input-has-clear ui-input-has-icon'>
<div>
<input class='relation_input' type='search' name='related_mission' autocomplete="off" data-enhanced="true" value="{{related_mission}}" readonly class='ui-state-readonly' >
<ul class="ui-listview ui-corner-all search_ul"></ul>
</div>
<a href='{{related_mission_url}}' class='{{related_mission_class}}'></a>
</div>
</div>
</div>
<div class="ui-field-contain"> <div class="ui-field-contain">
<label data-i18n="Comment">Comment</label> <label data-i18n="Comment">Comment</label>
<textarea name="comment" readonly class='ui-state-readonly'>{{comment}}</textarea> <textarea name="comment" readonly class='ui-state-readonly'>{{comment}}</textarea>
</div> </div>
{{/if}} {{/if}}
......
...@@ -232,7 +232,7 @@ ...@@ -232,7 +232,7 @@
</item> </item>
<item> <item>
<key> <string>actor</string> </key> <key> <string>actor</string> </key>
<value> <string>supercedriclen</string> </value> <value> <string>zope</string> </value>
</item> </item>
<item> <item>
<key> <string>comment</string> </key> <key> <string>comment</string> </key>
...@@ -246,7 +246,7 @@ ...@@ -246,7 +246,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>955.53749.31461.40891</string> </value> <value> <string>956.9748.40508.8396</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -264,7 +264,7 @@ ...@@ -264,7 +264,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1481299470.34</float> <float>1482499947.59</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -7,8 +7,61 @@ ...@@ -7,8 +7,61 @@
source = gadget_klass.__template_element source = gadget_klass.__template_element
.querySelector(".view-expense-record-template") .querySelector(".view-expense-record-template")
.innerHTML, .innerHTML,
template = Handlebars.compile(source); template = Handlebars.compile(source),
relation_listview_source = gadget_klass.__template_element
.getElementById("relation-listview-template")
.innerHTML,
relation_listview_template = Handlebars.compile(relation_listview_source),
searching = "animation ui-btn ui-corner-all ui-btn-icon-notext" +
" ui-input-clear ui-icon-spinner ui-icon-spin",
searched = "animation ui-hidden-accessible",
jump_on = "animation ui-btn ui-corner-all ui-btn-icon-notext " +
"ui-icon-plane ui-shadow-inset ui-input-clear",
jump_off = jump_on + " ui-disabled",
jump_unknown = "animation ui-btn ui-corner-all ui-btn-icon-notext " +
"ui-icon-warning ui-shadow-inset ui-input-clear ui-disabled";
function getData(gadget) {
var form = gadget.props.element.querySelector('form');
return getSequentialID(gadget, 'EXP')
.push(function (source_reference) {
var i,
doc = {
parent_relative_url: "expense_record_module",
portal_type: "Expense Record Temp",
source_reference: source_reference,
visible_in_html5_app_flag: 1,
record_revision: (gadget.options.doc.record_revision || 1),
photo_data: gadget.options.doc.photo_data || "",
modification_date: new Date().toISOString()
};
for (i = 0; i < form.length; i += 1) {
// XXX Should check input type instead
if (form[i].name && form[i].type != "submit") {
if ((form[i].type == "radio" || form[i].type == "checkbox") && !form[i].checked){
continue;
}
if (form[i].name === "photo") {
continue;
}
doc[form[i].name] = form[i].value;
if (form[i].name === 'resource') {
doc.resource_title = form[i][form[i].selectedIndex].text;
}
}
}
if (doc.sync_flag === "1"){
doc.simulation_state = 'draft';
doc.portal_type = 'Expense Record'; // For to avoid sync
}
doc.related_mission_url = gadget.props.related_mission_url;
return doc;
});
}
function getWorkflowState(id, sync_flag) { function getWorkflowState(id, sync_flag) {
var sync_state; var sync_state;
if(id.indexOf("_module/") > 0){ if(id.indexOf("_module/") > 0){
...@@ -121,7 +174,7 @@ ...@@ -121,7 +174,7 @@
.declareAcquiredMethod('getSetting', 'getSetting') .declareAcquiredMethod('getSetting', 'getSetting')
.declareAcquiredMethod('setSetting', 'setSetting') .declareAcquiredMethod('setSetting', 'setSetting')
.declareAcquiredMethod("repair", "jio_repair") .declareAcquiredMethod("repair", "jio_repair")
.declareAcquiredMethod("getUrlFor", "getUrlFor")
.declareMethod('triggerSubmit', function () { .declareMethod('triggerSubmit', function () {
return this.props.element.querySelector('button').click(); return this.props.element.querySelector('button').click();
...@@ -132,11 +185,46 @@ ...@@ -132,11 +185,46 @@
sync_checked, sync_checked,
sync_state = getWorkflowState(options.jio_key, options.doc.sync_flag), sync_state = getWorkflowState(options.jio_key, options.doc.sync_flag),
geoLocation, geoLocation,
related_mission_class,
related_mission_url,
related_mission,
not_sync_checked; not_sync_checked;
gadget.options = options; gadget.options = options;
return new RSVP.Queue() return new RSVP.Queue()
.push (function () { .push(function () {
if(options.came_from_jio_key) {
gadget.props.related_mission_url = options.came_from_jio_key;
return gadget.get(options.came_from_jio_key)
.push(function (data) {
related_mission_class = jump_on;
related_mission = data.title;
options.doc.related_mission = related_mission;
options.doc.related_mission_url = gadget.props.related_mission_url;
//saved when return from listbox
return gadget.put(gadget.options.jio_key, options.doc);
})
.push(function () {
return gadget.getUrlFor({jio_key: options.came_from_jio_key, page: 'view'});
});
} else {
related_mission = options.doc.related_mission;
if (options.doc.related_mission_url) {
related_mission_class = jump_on;
gadget.props.related_mission_url = options.doc.related_mission_url;
return gadget.getUrlFor({jio_key: options.doc.related_mission_url, page: 'view'});
} else {
if (related_mission) {
related_mission_class = jump_unknown;
} else {
related_mission_class = jump_off;
}
return;
}
}
})
.push (function (url) {
related_mission_url = url;
if (sync_state === 'Synced') { if (sync_state === 'Synced') {
geoLocation= {coords: {latitude: options.doc.latitude, longitude: options.doc.longitude}}; geoLocation= {coords: {latitude: options.doc.latitude, longitude: options.doc.longitude}};
} else { } else {
...@@ -183,7 +271,10 @@ ...@@ -183,7 +271,10 @@
not_sync_checked: not_sync_checked, not_sync_checked: not_sync_checked,
select_options: select_options, select_options: select_options,
longitude: geoLocation.coords.longitude || "", longitude: geoLocation.coords.longitude || "",
latitude: geoLocation.coords.latitude || "" latitude: geoLocation.coords.latitude || "",
related_mission_url: related_mission_url || "",
related_mission_class: related_mission_class,
related_mission: related_mission
}; };
if (sync_state !== 'Synced') { if (sync_state !== 'Synced') {
ops.not_readonly = true; ops.not_readonly = true;
...@@ -310,38 +401,11 @@ ...@@ -310,38 +401,11 @@
form, form,
'submit', 'submit',
false, false,
function (submit_event) { function () {
return getSequentialID(gadget, 'EXP') return getData(gadget)
.push(function (source_reference) { .push(function (doc) {
var i, if (doc.sync_flag === '1') {
doc = {
parent_relative_url: "expense_record_module",
portal_type: "Expense Record Temp",
source_reference: source_reference,
visible_in_html5_app_flag: 1,
record_revision: (gadget.options.doc.record_revision || 1),
photo_data: gadget.options.doc.photo_data || "",
modification_date: new Date().toISOString()
};
for (i = 0; i < submit_event.target.length; i += 1) {
// XXX Should check input type instead
if (submit_event.target[i].name && submit_event.target[i].type != "submit") {
if ((submit_event.target[i].type == "radio" || submit_event.target[i].type == "checkbox") && !submit_event.target[i].checked){
continue
}
if (submit_event.target[i].name === "photo") {
continue
}
doc[submit_event.target[i].name] = submit_event.target[i].value;
if (submit_event.target[i].name === 'resource') {
doc.resource_title = submit_event.target[i][submit_event.target[i].selectedIndex].text;
}
}
}
if (doc.sync_flag === "1"){
sync = 1; sync = 1;
doc.simulation_state = 'draft';
doc.portal_type = 'Expense Record'; // For to avoid sync
} }
return gadget.put(gadget.options.jio_key, doc); return gadget.put(gadget.options.jio_key, doc);
}) })
...@@ -465,6 +529,102 @@ ...@@ -465,6 +529,102 @@
} }
); );
}); });
})
.declareService(function () {
var gadget = this,
my_value,
props = gadget.props,
input = gadget.props.element.querySelector('.relation_input'),
ul = gadget.props.element.querySelector(".search_ul"),
animation = gadget.props.element.querySelector('.animation');
function generateList(event) {
my_value = event.target.value;
ul.innerHTML = "";
gadget.props.related_mission_url = '';
if (my_value === "") {
animation.className = searched;
return;
}
animation.className = searching;
return new RSVP.Queue()
.push(function () {
return gadget.allDocs({
"query": 'portal_type: "Travel Request Record" AND state: "Accepted" AND title: %' + my_value + '%',
"limit": [0, 11],
"select_list": ['title']
});
})
.push(function (result) {
var list = [],
i,
html;
for (i = 0; i < result.data.rows.length; i += 1) {
list.push({
id: result.data.rows[i].id,
value: result.data.rows[i].value['title']
});
}
animation.className = searched;
html = relation_listview_template({
list: list,
value: my_value
});
$(ul).toggle();
ul.innerHTML = html;
$(ul).toggle();
});
}
function setSelectedElement(event) {
var element = event.target,
jump_url = element.getAttribute("data-relative-url");
ul.innerHTML = "";
if (jump_url) {
input.value = element.textContent;
return gadget.getUrlFor({jio_key: jump_url, page: 'view'})
.push(function (url) {
gadget.props.related_mission_url = jump_url;
animation.href = url;
animation.className = jump_on;
});
} else {
return getData(gadget)
.push(function (doc) {
doc.sync_flag = "0";
doc.portal_type = 'Expense Record Temp';
return gadget.put(gadget.options.jio_key, doc);
})
.push(function () {
return gadget.redirect({
page: 'travel_request_record_list',
came_from_jio_key: gadget.options.jio_key,
search: my_value
});
});
}
}
return RSVP.all([
loopEventListener(input, 'input', false, generateList),
loopEventListener(input, 'blur', false, function () {
return new RSVP.Queue()
.push(function () {
return RSVP.any([
RSVP.delay(200),
promiseEventListener(ul, "click", true)
]);
})
.push(function (event) {
if (event) {
return setSelectedElement(event);
}
if (ul.innerHTML) {
ul.innerHTML = "";
animation.className = jump_unknown;
}
});
})]
);
}); });
}(window, document, RSVP, rJS, Handlebars, loopEventListener, promiseEventListener, alertify)); }(window, document, RSVP, rJS, Handlebars, loopEventListener, promiseEventListener, alertify));
\ No newline at end of file
...@@ -228,7 +228,7 @@ ...@@ -228,7 +228,7 @@
</item> </item>
<item> <item>
<key> <string>actor</string> </key> <key> <string>actor</string> </key>
<value> <string>supercedriclen</string> </value> <value> <string>zope</string> </value>
</item> </item>
<item> <item>
<key> <string>comment</string> </key> <key> <string>comment</string> </key>
...@@ -242,7 +242,7 @@ ...@@ -242,7 +242,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>955.64184.36962.20923</string> </value> <value> <string>956.14178.1267.12151</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>1481819367.98</float> <float>1482759569.14</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -64,16 +64,25 @@ ...@@ -64,16 +64,25 @@
return gadget.getUrlFor({page: "add_travel_request_record"}); return gadget.getUrlFor({page: "add_travel_request_record"});
}) })
.push(function (url) { .push(function (url) {
return gadget.updateHeader({ var header = {
title: gadget.props.document_title_plural, title: gadget.props.document_title_plural
add_url: url };
}); if (!options.came_from_jio_key) {
header.add_url = url;
}
return gadget.updateHeader(header);
}) })
.push(function () { .push(function () {
return gadget.getDeclaredGadget("listbox"); return gadget.getDeclaredGadget("listbox");
}) })
.push(function (listbox) { .push(function (listbox) {
var query;
query = 'portal_type:("' + gadget.props.portal_type + '")';
if (options.came_from_jio_key) {
query += ' AND state: "Accepted"';
}
return listbox.render({ return listbox.render({
came_from_jio_key: options.came_from_jio_key,
search_page: 'travel_request_record_list', search_page: 'travel_request_record_list',
search: options.search, search: options.search,
column_list: [ column_list: [
...@@ -97,7 +106,7 @@ ...@@ -97,7 +106,7 @@
title: 'State' title: 'State'
}], }],
query: { query: {
query: 'portal_type:("' + gadget.props.portal_type + '")', query: query,
select_list: ['resource_title', 'title', 'destination_node_title', select_list: ['resource_title', 'title', 'destination_node_title',
'start_date', 'stop_date', 'state'], 'start_date', 'stop_date', 'state'],
sort_on: [["start_date", "descending"]] sort_on: [["start_date", "descending"]]
......
...@@ -256,7 +256,7 @@ ...@@ -256,7 +256,7 @@
</item> </item>
<item> <item>
<key> <string>actor</string> </key> <key> <string>actor</string> </key>
<value> <string>supercedriclen</string> </value> <value> <string>zope</string> </value>
</item> </item>
<item> <item>
<key> <string>comment</string> </key> <key> <string>comment</string> </key>
...@@ -270,7 +270,7 @@ ...@@ -270,7 +270,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>955.52778.21897.47291</string> </value> <value> <string>956.14048.56221.51336</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -288,7 +288,7 @@ ...@@ -288,7 +288,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1481299585.41</float> <float>1482743098.31</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -110,7 +110,8 @@ ...@@ -110,7 +110,8 @@
sub_options = { sub_options = {
doc: doc, doc: doc,
jio_key: args.jio_key, jio_key: args.jio_key,
search: args.search search: args.search,
came_from_jio_key: args.came_from_jio_key
}; };
if (base_portal_type.search(/_temp$/) >= 0) { if (base_portal_type.search(/_temp$/) >= 0) {
//Remove "_temp" //Remove "_temp"
......
...@@ -224,7 +224,7 @@ ...@@ -224,7 +224,7 @@
</item> </item>
<item> <item>
<key> <string>actor</string> </key> <key> <string>actor</string> </key>
<value> <string>supercedriclen</string> </value> <value> <string>zope</string> </value>
</item> </item>
<item> <item>
<key> <string>comment</string> </key> <key> <string>comment</string> </key>
...@@ -238,7 +238,7 @@ ...@@ -238,7 +238,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>955.64151.8170.5836</string> </value> <value> <string>956.7340.20565.20701</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -256,7 +256,7 @@ ...@@ -256,7 +256,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1481817362.42</float> <float>1482502019.34</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Standard Property" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>elementary_type/string</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>related_mission_property</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Standard Property</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Standard Property" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>elementary_type/string</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>related_mission_url_property</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Standard Property</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -21,7 +21,12 @@ record.setDestinationReference(ticket.getReference()) ...@@ -21,7 +21,12 @@ record.setDestinationReference(ticket.getReference())
record.setFollowUpValue(ticket) record.setFollowUpValue(ticket)
related_mission_url = record.getRelatedMissionUrl()
if related_mission_url:
travel_request = context.restrictedTraverse(related_mission_url)
source_project_url = travel_request.getFollowUp()
else:
source_project_url = ""
ticket.edit( ticket.edit(
title=record.getTitle(), title=record.getTitle(),
#resource=record.getSource(), #resource=record.getSource(),
...@@ -35,6 +40,7 @@ ticket.edit( ...@@ -35,6 +40,7 @@ ticket.edit(
description=record.getComment(), description=record.getComment(),
latitude=record.getLatitude(), latitude=record.getLatitude(),
longitude=record.getLongitude(), longitude=record.getLongitude(),
source_project=source_project_url
) )
photo_data = record.getPhotoData() photo_data = record.getPhotoData()
if photo_data: if photo_data:
......
...@@ -92,6 +92,8 @@ ...@@ -92,6 +92,8 @@
<string>your_simulation_state</string> <string>your_simulation_state</string>
<string>your_state</string> <string>your_state</string>
<string>my_title</string> <string>my_title</string>
<string>my_related_mission_url</string>
<string>my_related_mission</string>
</list> </list>
</value> </value>
</item> </item>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="StringField" module="Products.Formulator.StandardFields"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>my_related_mission</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
<item>
<key> <string>too_long</string> </key>
<value> <string>Too much input was given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>20</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string>text</string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Related Mission</string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="StringField" module="Products.Formulator.StandardFields"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>my_related_mission_url</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
<item>
<key> <string>too_long</string> </key>
<value> <string>Too much input was given.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>20</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>input_type</string> </key>
<value> <string>text</string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Related Mission Url</string> </value>
</item>
<item>
<key> <string>truncate</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -9,7 +9,10 @@ ...@@ -9,7 +9,10 @@
<item> <item>
<key> <string>delegated_list</string> </key> <key> <string>delegated_list</string> </key>
<value> <value>
<list/> <list>
<string>allow_creation</string>
<string>portal_type</string>
</list>
</value> </value>
</item> </item>
<item> <item>
...@@ -69,6 +72,10 @@ ...@@ -69,6 +72,10 @@
<key> <string>values</string> </key> <key> <string>values</string> </key>
<value> <value>
<dictionary> <dictionary>
<item>
<key> <string>allow_creation</string> </key>
<value> <int>0</int> </value>
</item>
<item> <item>
<key> <string>field_id</string> </key> <key> <string>field_id</string> </key>
<value> <string>my_source_project_title</string> </value> <value> <string>my_source_project_title</string> </value>
...@@ -77,6 +84,17 @@ ...@@ -77,6 +84,17 @@
<key> <string>form_id</string> </key> <key> <string>form_id</string> </key>
<value> <string>Base_viewCRMFieldLibrary</string> </value> <value> <string>Base_viewCRMFieldLibrary</string> </value>
</item> </item>
<item>
<key> <string>portal_type</string> </key>
<value>
<list>
<tuple>
<string>Travel Request</string>
<string>Travel Request</string>
</tuple>
</list>
</value>
</item>
<item> <item>
<key> <string>target</string> </key> <key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value> <value> <string>Click to edit the target</string> </value>
......
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