openerp-dev-web team mailing list archive
-
openerp-dev-web team
-
Mailing list archive
-
Message #00161
[Merge] lp:~openerp-dev/openobject-client-web/save-prompt-action into lp:openobject-client-web
vda(Open ERP) has proposed merging lp:~openerp-dev/openobject-client-web/save-prompt-action into lp:openobject-client-web.
Requested reviews:
OpenERP SA's Web Client R&D (openerp-dev-web)
--
https://code.launchpad.net/~openerp-dev/openobject-client-web/save-prompt-action/+merge/38309
Your team OpenERP SA's Web Client R&D is requested to review the proposed merge of lp:~openerp-dev/openobject-client-web/save-prompt-action into lp:openobject-client-web.
=== modified file 'addons/openerp/controllers/templates/form.mako'
--- addons/openerp/controllers/templates/form.mako 2010-10-12 13:56:00 +0000
+++ addons/openerp/controllers/templates/form.mako 2010-10-13 09:56:46 +0000
@@ -48,7 +48,7 @@
%>
<li class="${kind}" title="${desc}">
% if kind in form.screen.view_mode:
- <a href="#" onclick="switchView('${kind}'); return false;"
+ <a href="#" onclick="validate_action('${kind}',switchView); return false;"
class="${cls}">${kind}</a>
% else:
<a href="#" class="inactive">${kind}</a>
=== modified file 'addons/openerp/static/javascript/form.js'
--- addons/openerp/static/javascript/form.js 2010-10-13 07:15:26 +0000
+++ addons/openerp/static/javascript/form.js 2010-10-13 09:56:46 +0000
@@ -125,8 +125,10 @@
openobject.dom.get('_terp_id').value = ids[0];
}
}
- var get_action = validate_action('switch', args);
- submit_form(get_action);
+ submit_form(get_form_action('switch', {
+ '_terp_source': src,
+ '_terp_source_view_type': view_type
+ }));
}
function switch_O2M(view_type, src){
@@ -250,14 +252,6 @@
jQuery.fancybox(error, {scrolling: 'no'});
}
-function o2m_pager_action(action, src){
- var source = src ? (typeof(src) == "string" ? src : src.name) : null;
- var args = {
- _terp_source: source
- }
- var get_action = validate_action(action, args)
- submit_form(get_action);
-}
function submit_form(action, src, target){
@@ -302,9 +296,11 @@
$form.submit();
}
-function pager_action(action, src){
- var get_action = validate_action(action ? action : 'find', {})
- return src ? new ListView(src).go(action) : submit_form(get_action);
+function pager_action(src){
+ var $src = jQuery(src);
+ var action = $src.attr('action');
+ var relation = $src.attr('relation');
+ return relation ? new ListView(relation).go(action) : submit_form(action ? action : 'find');
}
function buttonClicked(name, btype, model, id, sure, target, context){
@@ -927,9 +923,17 @@
window.open(openobject.http.getURL(act, params));
}
-function do_action(action_id, field, relation, src, data, context_menu){
-
+function do_action(src){
+ var $src = jQuery(src);
+ var action_id = $src.attr('action_id');
+ var field = '_terp_id';
+
+ var relation = $src.attr('relation');
+ var data = $src.attr('data');
var params = {};
+
+ var domain = $src.attr('domain');
+ var context = $src.attr('context');
if (openobject.dom.get('_terp_list')) {
var list = new ListView('_terp_list');
@@ -942,13 +946,11 @@
params['_terp_selection'] = '[' + ids.join(',') + ']';
}
- var id = openobject.dom.get(field).value;
- var domain = getNodeAttribute(src, 'domain');
- var context = getNodeAttribute(src, 'context');
- var context_menu = context_menu ? true: null;
+ var id = jQuery('#'+field).val();
+ var source = jQuery('#'+field).attr('id');
var req = eval_domain_context_request({
- 'source': openobject.dom.get(field).id,
+ 'source': source,
'active_id': id,
'active_ids': params['_terp_selection'],
'domain': domain,
@@ -964,8 +966,7 @@
'_terp_context': obj.context,
'_terp_id': id,
'_terp_model': relation,
- 'datas': data,
- 'context_menu': context_menu
+ 'datas': data
});
window.open(openobject.http.getURL(act, params));
@@ -1228,21 +1229,36 @@
}
-var is_form_changed = false;
function validateForm(){
- is_form_changed = false;
jQuery('#view_form table tr td:first').find('input:not([type=hidden]), select').change(function(){
- is_form_changed = true;
+ jQuery('#view_form').data('is_form_changed', true);
});
}
-function validate_action(action, args){
- var args = args;
-
- if (is_form_changed) {
- if (confirm('The record has been modified \n Do you want to save it ?')) {
- args['_terp_save_current_id'] = 1;
+function validate_action() {
+ var $form = jQuery('#view_form');
+ var is_form_changed = $form.data('is_form_changed');
+ if ((is_form_changed && confirm('The record has been modified \n Do you want to save it ?'))) {
+ if (!validate_required($form.get(0))) {
+ return false;
}
- }
- return get_form_action(action, args)
-}
+
+ $form.ajaxSubmit({
+ error: function(xhr, status, error){
+ return displayErrorOverlay(xhr);
+ },
+ async: false,
+ success: function(data, status, xhr){
+ if (arguments.length) {
+ $form.find('#_terp_id').val(jQuery(xhr.responseText).find('#_terp_id').val());
+ }
+ $form.data('is_form_changed', null);
+ }
+ });
+ }
+ if (arguments.length) {
+ var params = arguments[0];
+ var action = arguments[1];
+ return action(params);
+ }
+}
\ No newline at end of file
=== modified file 'addons/openerp/static/javascript/openerp/openerp.base.js'
--- addons/openerp/static/javascript/openerp/openerp.base.js 2010-10-13 09:08:49 +0000
+++ addons/openerp/static/javascript/openerp/openerp.base.js 2010-10-13 09:56:46 +0000
@@ -104,6 +104,10 @@
var waitBox;
var $app = jQuery('#appContent');
if ($app.length) {
+ jQuery('body').delegate('a[href]:not([target="_blank"]):not([href^="#"]):not([href^="javascript"]):not([rel=external])', 'click', function(){
+ validate_action();
+ });
+
waitBox = new openerp.ui.WaitBox();
// open un-targeted links in #appContent via xhr. Links with @target are considered
// external links. Ignore hash-links.
=== modified file 'addons/openerp/widgets/form/templates/one2many.mako'
--- addons/openerp/widgets/form/templates/one2many.mako 2010-09-27 06:34:49 +0000
+++ addons/openerp/widgets/form/templates/one2many.mako 2010-10-13 09:56:46 +0000
@@ -25,9 +25,9 @@
<td width="65%" style="text-align: left" align="left">
<div class="pager">
<p id="_${name}_link_span" class="paging">
- <a class="prev nav" title="${_('Previous record...')}" href="javascript: void(0)" onclick="o2m_pager_action('previous', '${name}'); return false;"></a>
+ <a class="prev nav" title="${_('Previous record...')}" href="javascript: void(0)" onclick="submit_form('previous', '${name}');"></a>
${pager_info}
- <a class="next nav" title="${_('Next record...')}" href="javascript: void(0)" onclick="o2m_pager_action('next', '${name}'); return false;"></a>
+ <a class="next nav" title="${_('Next record...')}" href="javascript: void(0)" onclick="submit_form('next', '${name}');"></a>
</p>
</div>
</td>
=== modified file 'addons/openerp/widgets/templates/pager.mako'
--- addons/openerp/widgets/templates/pager.mako 2010-07-23 06:15:03 +0000
+++ addons/openerp/widgets/templates/pager.mako 2010-10-13 09:56:46 +0000
@@ -4,12 +4,12 @@
<div class="pager">
<p id="_${name+str(pager_id)}_link_span" class="paging">
% if prev:
- <a href="#first" onclick="pager_action('first', '${name}'); return false;">
+ <a href="#first" action="first" relation="${name}" onclick="validate_action(this, pager_action); return false;">
% endif
<span class="first nav">${_("<< First")}</span>
% if prev:
</a>
- <a href="#previous" onclick="pager_action('previous', '${name}'); return false;">
+ <a href="#previous" action="previous" relation="${name}" onclick="validate_action(this, pager_action); return false;">
% endif
<span class="prev nav">${_("< Previous")}</span>
% if prev:
@@ -17,12 +17,12 @@
% endif
<span onclick="jQuery('[id=_${name+str(pager_id)}_link_span]').hide(); jQuery('[id=_${name+str(pager_id)}_limit_span]').show();">${page_info}</span>
% if next:
- <a href="#next" onclick="pager_action('next', '${name}'); return false;">
+ <a href="#next" action="next" relation="${name}" onclick="validate_action(this, pager_action); return false;">
% endif
<span class="next nav">${_("Next >")}</span>
% if next:
</a>
- <a href="#last" onclick="pager_action('last', '${name}'); return false;">
+ <a href="#last" action="last" relation="${name}" onclick="validate_action(this, pager_action); return false;">
% endif
<span class="last nav">${_("Last >>")}</span>
% if next:
=== modified file 'addons/openerp/widgets/templates/sidebar.mako'
--- addons/openerp/widgets/templates/sidebar.mako 2010-10-05 13:19:16 +0000
+++ addons/openerp/widgets/templates/sidebar.mako 2010-10-13 09:56:46 +0000
@@ -1,7 +1,7 @@
<%def name="sidebox_action_item(item, model, submenu)">
% if submenu != 1:
- <li data="${item}" onclick="do_action(${item['id']}, '_terp_id', '${model}', this, getNodeAttribute(this, 'data'));">
- <a href="javascript: void(0)" onclick="return false">${item['name']}</a>
+ <li data="${item}" action_id="${item['id']}" relation="${model}" onclick="validate_action(this, do_action)">
+ <a href="javascript: void(0)" onclick="return false">${item['name']}</a>
</li>
% else:
<li data="${item}">
Follow ups