[gen] Pod field: bugfix (send by email).

This commit is contained in:
Gaetan Delannay 2015-02-06 18:25:29 +01:00
parent 40e3612682
commit f38792a5b9
2 changed files with 25 additions and 25 deletions

View file

@ -61,17 +61,17 @@ class Pod(Field):
'"%s" (%s).' '"%s" (%s).'
FREEZE_FATAL_ERROR = 'Server error. Please contact the administrator.' FREEZE_FATAL_ERROR = 'Server error. Please contact the administrator.'
# Icon allowing to generate a given template in a given format. # Icon allowing to generate a given template in a given format
pxIcon = Px(''' pxIcon = Px('''
<img var="iconSuffix=frozen and 'Frozen' or ''; <img var="iconSuffix=frozen and 'Frozen' or ''"
gc=field.getChecked and q(field.getChecked) or 'null'"
src=":url(fmt + iconSuffix)" class="clickable" src=":url(fmt + iconSuffix)" class="clickable"
title=":field.getIconTitle(obj, fmt, frozen)" title=":field.getIconTitle(obj, fmt, frozen)"
onclick=":'generatePod(%s,%s,%s,%s,%s,null,%s)' % (q(uid), q(name), \ onclick=":'generatePod(%s,%s,%s,%s,%s,null,%s)' % (q(uid), q(name), \
q(info.template), q(fmt), q(ztool.getQueryInfo()), gc)"/>''') q(info.template), q(fmt), q(ztool.getQueryInfo()), gc)"/>''')
pxView = pxCell = Px(''' pxView = pxCell = Px('''
<x var="uid=obj.uid" <x var="uid=obj.uid;
gc=field.getChecked and q(field.getChecked) or 'null'"
for="info in field.getVisibleTemplates(obj)" for="info in field.getVisibleTemplates(obj)"
var2="mailings=field.getVisibleMailings(obj, info.template); var2="mailings=field.getVisibleMailings(obj, info.template);
lineBreak=((loop.info.nb + 1) % field.maxPerRow) == 0"> lineBreak=((loop.info.nb + 1) % field.maxPerRow) == 0">
@ -84,7 +84,7 @@ class Pod(Field):
<!-- A clickable icon if no freeze action is allowed and no mailing is <!-- A clickable icon if no freeze action is allowed and no mailing is
available for this format --> available for this format -->
<x if="not dropdownEnabled">:field.pxIcon</x> <x if="not dropdownEnabled">:field.pxIcon</x>
<!-- A clickable icon and a dropdown menu else. --> <!-- A clickable icon and a dropdown menu else -->
<span if="dropdownEnabled" class="dropdownMenu" <span if="dropdownEnabled" class="dropdownMenu"
var2="dropdownId='%s_%s' % (uid, \ var2="dropdownId='%s_%s' % (uid, \
field.getFreezeName(info.template, fmt, sep='_'))" field.getFreezeName(info.template, fmt, sep='_'))"
@ -125,9 +125,9 @@ class Pod(Field):
<tr for="mailing in mailings[fmt]" valign="top" <tr for="mailing in mailings[fmt]" valign="top"
var2="mailingName=field.getMailingName(obj, mailing)"> var2="mailingName=field.getMailingName(obj, mailing)">
<td colspan="2"> <td colspan="2">
<a var="js='generatePod(%s,%s,%s,%s,%s,null,null,%s)' % \ <a var="js='generatePod(%s,%s,%s,%s,%s,null,%s,%s)' % \
(q(uid), q(name), q(info.template), q(fmt), \ (q(uid), q(name), q(info.template), q(fmt), \
q(ztool.getQueryInfo()), q(mailing))" q(ztool.getQueryInfo()), gc, q(mailing))"
onclick=":'askConfirm(%s,%s)' % (q('script'), q(js, False))" onclick=":'askConfirm(%s,%s)' % (q('script'), q(js, False))"
title=":sendLabel"> title=":sendLabel">
<img src=":url('email')" align="left" style="margin-right: 2px"/> <img src=":url('email')" align="left" style="margin-right: 2px"/>

View file

@ -495,13 +495,13 @@ function toggleDropdown(dropdownId, forcedValue){
} }
} }
// Function that sets a value for showing/hiding sub-titles. // Function that sets a value for showing/hiding sub-titles
function setSubTitles(value, tag) { function setSubTitles(value, tag) {
createCookie('showSubTitles', value); createCookie('showSubTitles', value);
// Get the sub-titles // Get the sub-titles
var subTitles = getElementsHavingName(tag, 'subTitle'); var subTitles = getElementsHavingName(tag, 'subTitle');
if (subTitles.length == 0) return; if (subTitles.length == 0) return;
// Define the display style depending on p_tag. // Define the display style depending on p_tag
var displayStyle = 'inline'; var displayStyle = 'inline';
if (tag == 'tr') displayStyle = 'table-row'; if (tag == 'tr') displayStyle = 'table-row';
for (var i=0; i < subTitles.length; i++) { for (var i=0; i < subTitles.length; i++) {
@ -510,7 +510,7 @@ function setSubTitles(value, tag) {
} }
} }
// Function that toggles the value for showing/hiding sub-titles. // Function that toggles the value for showing/hiding sub-titles
function toggleSubTitles(tag) { function toggleSubTitles(tag) {
// Get the current value // Get the current value
var value = readCookie('showSubTitles'); var value = readCookie('showSubTitles');
@ -524,13 +524,13 @@ function toggleSubTitles(tag) {
// Functions used for master/slave relationships between widgets // Functions used for master/slave relationships between widgets
function getSlaveInfo(slave, infoType) { function getSlaveInfo(slave, infoType) {
// Returns the appropriate info about slavery, depending on p_infoType. // Returns the appropriate info about slavery, depending on p_infoType
var cssClasses = slave.className.split(' '); var cssClasses = slave.className.split(' ');
var masterInfo = null; var masterInfo = null;
// Find the CSS class containing master-related info. // Find the CSS class containing master-related info
for (var j=0; j < cssClasses.length; j++) { for (var j=0; j < cssClasses.length; j++) {
if (cssClasses[j].indexOf('slave*') == 0) { if (cssClasses[j].indexOf('slave*') == 0) {
// Extract, from this CSS class, master name or master values. // Extract, from this CSS class, master name or master values
masterInfo = cssClasses[j].split('*'); masterInfo = cssClasses[j].split('*');
if (infoType == 'masterName') return masterInfo[1]; if (infoType == 'masterName') return masterInfo[1];
else return masterInfo.slice(2); else return masterInfo.slice(2);
@ -539,7 +539,7 @@ function getSlaveInfo(slave, infoType) {
} }
function getMasterValues(master) { function getMasterValues(master) {
// Returns the list of values that p_master currently has. // Returns the list of values that p_master currently has
var res = null; var res = null;
if ((master.tagName == 'INPUT') && (master.type != 'checkbox')) { if ((master.tagName == 'INPUT') && (master.type != 'checkbox')) {
res = master.value; res = master.value;
@ -570,11 +570,11 @@ function getMasterValues(master) {
} }
function getSlaves(master) { function getSlaves(master) {
// Gets all the slaves of master. // Gets all the slaves of master
allSlaves = getElementsHavingName('table', 'slave'); allSlaves = getElementsHavingName('table', 'slave');
res = []; res = [];
masterName = master.attributes['name'].value; masterName = master.attributes['name'].value;
// Remove leading 'w_' if the master is in a search screen. // Remove leading 'w_' if the master is in a search screen
if (masterName.indexOf('w_') == 0) masterName = masterName.slice(2); if (masterName.indexOf('w_') == 0) masterName = masterName.slice(2);
if (master.type == 'checkbox') { if (master.type == 'checkbox') {
masterName = masterName.substr(0, masterName.length-8); masterName = masterName.substr(0, masterName.length-8);
@ -604,7 +604,7 @@ function updateSlaves(master, slave, objectUrl, layoutType, requestValues,
for (var i=0; i < slaves.length; i++) { for (var i=0; i < slaves.length; i++) {
slaveryValues = getSlaveInfo(slaves[i], 'masterValues'); slaveryValues = getSlaveInfo(slaves[i], 'masterValues');
if (slaveryValues[0] != '+') { if (slaveryValues[0] != '+') {
// Update slaves visibility depending on master values. // Update slaves visibility depending on master values
var showSlave = false; var showSlave = false;
for (var j=0; j < slaveryValues.length; j++) { for (var j=0; j < slaveryValues.length; j++) {
for (var k=0; k< masterValues.length; k++) { for (var k=0; k< masterValues.length; k++) {
@ -615,7 +615,7 @@ function updateSlaves(master, slave, objectUrl, layoutType, requestValues,
else slaves[i].style.display = 'none'; else slaves[i].style.display = 'none';
} }
else { else {
// Update slaves' values depending on master values. // Update slaves' values depending on master values
var slaveId = slaves[i].id; var slaveId = slaves[i].id;
var slaveName = slaveId.split('_')[1]; var slaveName = slaveId.split('_')[1];
var reqValue = null; var reqValue = null;
@ -703,7 +703,7 @@ function onLink(action, sourceUid, fieldName, targetUid) {
} }
function stringFromDictKeys(d){ function stringFromDictKeys(d){
// Gets a string containing comma-separated keys from dict p_d. // Gets a string containing comma-separated keys from dict p_d
var res = []; var res = [];
for (var key in d) res.push(key); for (var key in d) res.push(key);
return res.join(); return res.join();
@ -711,14 +711,14 @@ function stringFromDictKeys(d){
function onLinkMany(action, id) { function onLinkMany(action, id) {
var elems = _rsplit(id, '_', 3); var elems = _rsplit(id, '_', 3);
// Get the DOM node corresponding to the Ref field. // Get the DOM node corresponding to the Ref field
var node = document.getElementById(elems[0] + '_' + elems[1]); var node = document.getElementById(elems[0] + '_' + elems[1]);
// Get the uids of (un-)checked objects. // Get the uids of (un-)checked objects.
var statuses = node['_appy_' + elems[2] + '_cbs']; var statuses = node['_appy_' + elems[2] + '_cbs'];
var uids = stringFromDictKeys(statuses); var uids = stringFromDictKeys(statuses);
// Get the array semantics // Get the array semantics
var semantics = node['_appy_' + elems[2] + '_sem']; var semantics = node['_appy_' + elems[2] + '_sem'];
// Show an error message if no element is selected. // Show an error message if no element is selected
if ((semantics == 'checked') && (len(statuses) == 0)) { if ((semantics == 'checked') && (len(statuses) == 0)) {
openPopup('alertPopup', no_elem_selected); openPopup('alertPopup', no_elem_selected);
return; return;
@ -789,7 +789,7 @@ function toggleCookie(cookieId, display, defaultValue) {
createCookie(cookieId, newState); createCookie(cookieId, newState);
} }
// Function that allows to generate a document from a pod template. // Function that allows to generate a document from a pod template
function generatePod(uid, fieldName, template, podFormat, queryData, function generatePod(uid, fieldName, template, podFormat, queryData,
customParams, getChecked, mailing) { customParams, getChecked, mailing) {
var f = document.getElementById('podForm'); var f = document.getElementById('podForm');
@ -807,7 +807,7 @@ function generatePod(uid, fieldName, template, podFormat, queryData,
f.checkedUids.value = ''; f.checkedUids.value = '';
f.checkedSem.value = ''; f.checkedSem.value = '';
if (getChecked) { if (getChecked) {
// We must collect selected objects from a Ref field. // We must collect selected objects from a Ref field
var node = document.getElementById(uid + '_' + getChecked); var node = document.getElementById(uid + '_' + getChecked);
if (node && node.hasOwnProperty('_appy_objs_cbs')) { if (node && node.hasOwnProperty('_appy_objs_cbs')) {
f.checkedUids.value = stringFromDictKeys(node['_appy_objs_cbs']); f.checkedUids.value = stringFromDictKeys(node['_appy_objs_cbs']);
@ -817,7 +817,7 @@ function generatePod(uid, fieldName, template, podFormat, queryData,
f.submit(); f.submit();
} }
// Function that allows to (un-)freeze a document from a pod template. // Function that allows to (un-)freeze a document from a pod template
function freezePod(uid, fieldName, template, podFormat, action) { function freezePod(uid, fieldName, template, podFormat, action) {
var f = document.getElementById('podForm'); var f = document.getElementById('podForm');
f.objectUid.value = uid; f.objectUid.value = uid;
@ -828,7 +828,7 @@ function freezePod(uid, fieldName, template, podFormat, action) {
askConfirm('form', 'podForm', action_confirm); askConfirm('form', 'podForm', action_confirm);
} }
// Function that allows to upload a file for freezing it in a pod field. // Function that allows to upload a file for freezing it in a pod field
function uploadPod(uid, fieldName, template, podFormat) { function uploadPod(uid, fieldName, template, podFormat) {
var f = document.getElementById('uploadForm'); var f = document.getElementById('uploadForm');
f.objectUid.value = uid; f.objectUid.value = uid;