Merge lp:~openerp-dev/openobject-client-web/save-prompt-action into lp:openobject-client-web/trunk

Proposed by Vaibhav Darji
Status: Merged
Approved by: Xavier (Open ERP)
Approved revision: 3518
Merged at revision: 3533
Proposed branch: lp:~openerp-dev/openobject-client-web/save-prompt-action
Merge into: lp:openobject-client-web/trunk
Diff against target: 248 lines (+66/-44)
6 files modified
addons/openerp/controllers/templates/form.mako (+1/-1)
addons/openerp/static/javascript/form.js (+50/-34)
addons/openerp/static/javascript/openerp/openerp.base.js (+4/-0)
addons/openerp/widgets/form/templates/one2many.mako (+2/-2)
addons/openerp/widgets/templates/pager.mako (+7/-5)
addons/openerp/widgets/templates/sidebar.mako (+2/-2)
To merge this branch: bzr merge lp:~openerp-dev/openobject-client-web/save-prompt-action
Reviewer Review Type Date Requested Status
Xavier (Open ERP) (community) Approve
Review via email: mp+38309@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Xavier (Open ERP) (xmo-deactivatedaccount) wrote :

Bug: open any list view in Firefox or Webkit browser (e.g. Sales > Leads), change pagination (click on the `[1 - x of y]` and select a value), error appears.

Doesn't appear on trunk.

review: Needs Fixing
Revision history for this message
Xavier (Open ERP) (xmo-deactivatedaccount) wrote :

Also, if you fix things remember to add a comment here after pushing, Launchpad does *not* send notifications for new commits, so if you don't say anything reviewers can't know there is an update to the branch being proposed for merge.

3518. By Vaibhav Darji

[FIX] Fixed pager_action params.

Revision history for this message
Vaibhav Darji (vaibhav-openerp) wrote :

changed the function defination.

Revision history for this message
Xavier (Open ERP) (xmo-deactivatedaccount) wrote :

Found no bug after quick testing, looks good to me, do merge it.

review: Approve
Revision history for this message
Vaibhav Darji (vaibhav-openerp) wrote :

Thanks.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'addons/openerp/controllers/templates/form.mako'
2--- addons/openerp/controllers/templates/form.mako 2010-10-12 13:56:00 +0000
3+++ addons/openerp/controllers/templates/form.mako 2010-10-13 10:13:40 +0000
4@@ -48,7 +48,7 @@
5 %>
6 <li class="${kind}" title="${desc}">
7 % if kind in form.screen.view_mode:
8- <a href="#" onclick="switchView('${kind}'); return false;"
9+ <a href="#" onclick="validate_action('${kind}',switchView); return false;"
10 class="${cls}">${kind}</a>
11 % else:
12 <a href="#" class="inactive">${kind}</a>
13
14=== modified file 'addons/openerp/static/javascript/form.js'
15--- addons/openerp/static/javascript/form.js 2010-10-13 07:15:26 +0000
16+++ addons/openerp/static/javascript/form.js 2010-10-13 10:13:40 +0000
17@@ -125,8 +125,10 @@
18 openobject.dom.get('_terp_id').value = ids[0];
19 }
20 }
21- var get_action = validate_action('switch', args);
22- submit_form(get_action);
23+ submit_form(get_form_action('switch', {
24+ '_terp_source': src,
25+ '_terp_source_view_type': view_type
26+ }));
27 }
28
29 function switch_O2M(view_type, src){
30@@ -250,14 +252,6 @@
31 jQuery.fancybox(error, {scrolling: 'no'});
32 }
33
34-function o2m_pager_action(action, src){
35- var source = src ? (typeof(src) == "string" ? src : src.name) : null;
36- var args = {
37- _terp_source: source
38- }
39- var get_action = validate_action(action, args)
40- submit_form(get_action);
41-}
42
43 function submit_form(action, src, target){
44
45@@ -302,9 +296,11 @@
46 $form.submit();
47 }
48
49-function pager_action(action, src){
50- var get_action = validate_action(action ? action : 'find', {})
51- return src ? new ListView(src).go(action) : submit_form(get_action);
52+function pager_action(src){
53+ var $src = jQuery(src);
54+ var action = $src.attr('action');
55+ var relation = $src.attr('relation');
56+ return relation ? new ListView(relation).go(action) : submit_form(action ? action : 'find');
57 }
58
59 function buttonClicked(name, btype, model, id, sure, target, context){
60@@ -927,9 +923,17 @@
61 window.open(openobject.http.getURL(act, params));
62 }
63
64-function do_action(action_id, field, relation, src, data, context_menu){
65-
66+function do_action(src){
67+ var $src = jQuery(src);
68+ var action_id = $src.attr('action_id');
69+ var field = '_terp_id';
70+
71+ var relation = $src.attr('relation');
72+ var data = $src.attr('data');
73 var params = {};
74+
75+ var domain = $src.attr('domain');
76+ var context = $src.attr('context');
77
78 if (openobject.dom.get('_terp_list')) {
79 var list = new ListView('_terp_list');
80@@ -942,13 +946,11 @@
81 params['_terp_selection'] = '[' + ids.join(',') + ']';
82 }
83
84- var id = openobject.dom.get(field).value;
85- var domain = getNodeAttribute(src, 'domain');
86- var context = getNodeAttribute(src, 'context');
87- var context_menu = context_menu ? true: null;
88+ var id = jQuery('#'+field).val();
89+ var source = jQuery('#'+field).attr('id');
90
91 var req = eval_domain_context_request({
92- 'source': openobject.dom.get(field).id,
93+ 'source': source,
94 'active_id': id,
95 'active_ids': params['_terp_selection'],
96 'domain': domain,
97@@ -964,8 +966,7 @@
98 '_terp_context': obj.context,
99 '_terp_id': id,
100 '_terp_model': relation,
101- 'datas': data,
102- 'context_menu': context_menu
103+ 'datas': data
104 });
105
106 window.open(openobject.http.getURL(act, params));
107@@ -1228,21 +1229,36 @@
108 }
109
110
111-var is_form_changed = false;
112 function validateForm(){
113- is_form_changed = false;
114 jQuery('#view_form table tr td:first').find('input:not([type=hidden]), select').change(function(){
115- is_form_changed = true;
116+ jQuery('#view_form').data('is_form_changed', true);
117 });
118 }
119
120-function validate_action(action, args){
121- var args = args;
122-
123- if (is_form_changed) {
124- if (confirm('The record has been modified \n Do you want to save it ?')) {
125- args['_terp_save_current_id'] = 1;
126+function validate_action() {
127+ var $form = jQuery('#view_form');
128+ var is_form_changed = $form.data('is_form_changed');
129+ if ((is_form_changed && confirm('The record has been modified \n Do you want to save it ?'))) {
130+ if (!validate_required($form.get(0))) {
131+ return false;
132 }
133- }
134- return get_form_action(action, args)
135-}
136+
137+ $form.ajaxSubmit({
138+ error: function(xhr, status, error){
139+ return displayErrorOverlay(xhr);
140+ },
141+ async: false,
142+ success: function(data, status, xhr){
143+ if (arguments.length) {
144+ $form.find('#_terp_id').val(jQuery(xhr.responseText).find('#_terp_id').val());
145+ }
146+ $form.data('is_form_changed', null);
147+ }
148+ });
149+ }
150+ if (arguments.length) {
151+ var params = arguments[0];
152+ var action = arguments[1];
153+ return action(params);
154+ }
155+}
156\ No newline at end of file
157
158=== modified file 'addons/openerp/static/javascript/openerp/openerp.base.js'
159--- addons/openerp/static/javascript/openerp/openerp.base.js 2010-10-13 09:08:49 +0000
160+++ addons/openerp/static/javascript/openerp/openerp.base.js 2010-10-13 10:13:40 +0000
161@@ -104,6 +104,10 @@
162 var waitBox;
163 var $app = jQuery('#appContent');
164 if ($app.length) {
165+ jQuery('body').delegate('a[href]:not([target="_blank"]):not([href^="#"]):not([href^="javascript"]):not([rel=external])', 'click', function(){
166+ validate_action();
167+ });
168+
169 waitBox = new openerp.ui.WaitBox();
170 // open un-targeted links in #appContent via xhr. Links with @target are considered
171 // external links. Ignore hash-links.
172
173=== modified file 'addons/openerp/widgets/form/templates/one2many.mako'
174--- addons/openerp/widgets/form/templates/one2many.mako 2010-09-27 06:34:49 +0000
175+++ addons/openerp/widgets/form/templates/one2many.mako 2010-10-13 10:13:40 +0000
176@@ -25,9 +25,9 @@
177 <td width="65%" style="text-align: left" align="left">
178 <div class="pager">
179 <p id="_${name}_link_span" class="paging">
180- <a class="prev nav" title="${_('Previous record...')}" href="javascript: void(0)" onclick="o2m_pager_action('previous', '${name}'); return false;"></a>
181+ <a class="prev nav" title="${_('Previous record...')}" href="javascript: void(0)" onclick="submit_form('previous', '${name}');"></a>
182 ${pager_info}
183- <a class="next nav" title="${_('Next record...')}" href="javascript: void(0)" onclick="o2m_pager_action('next', '${name}'); return false;"></a>
184+ <a class="next nav" title="${_('Next record...')}" href="javascript: void(0)" onclick="submit_form('next', '${name}');"></a>
185 </p>
186 </div>
187 </td>
188
189=== modified file 'addons/openerp/widgets/templates/pager.mako'
190--- addons/openerp/widgets/templates/pager.mako 2010-07-23 06:15:03 +0000
191+++ addons/openerp/widgets/templates/pager.mako 2010-10-13 10:13:40 +0000
192@@ -4,12 +4,12 @@
193 <div class="pager">
194 <p id="_${name+str(pager_id)}_link_span" class="paging">
195 % if prev:
196- <a href="#first" onclick="pager_action('first', '${name}'); return false;">
197+ <a href="#first" action="first" relation="${name}" onclick="validate_action(this, pager_action); return false;">
198 % endif
199 <span class="first nav">${_("<< First")}</span>
200 % if prev:
201 </a>
202- <a href="#previous" onclick="pager_action('previous', '${name}'); return false;">
203+ <a href="#previous" action="previous" relation="${name}" onclick="validate_action(this, pager_action); return false;">
204 % endif
205 <span class="prev nav">${_("< Previous")}</span>
206 % if prev:
207@@ -17,12 +17,12 @@
208 % endif
209 <span onclick="jQuery('[id=_${name+str(pager_id)}_link_span]').hide(); jQuery('[id=_${name+str(pager_id)}_limit_span]').show();">${page_info}</span>
210 % if next:
211- <a href="#next" onclick="pager_action('next', '${name}'); return false;">
212+ <a href="#next" action="next" relation="${name}" onclick="validate_action(this, pager_action); return false;">
213 % endif
214 <span class="next nav">${_("Next >")}</span>
215 % if next:
216 </a>
217- <a href="#last" onclick="pager_action('last', '${name}'); return false;">
218+ <a href="#last" action="last" relation="${name}" onclick="validate_action(this, pager_action); return false;">
219 % endif
220 <span class="last nav">${_("Last >>")}</span>
221 % if next:
222@@ -34,9 +34,11 @@
223 <label for="_${name+str(pager_id)}_limit"
224 onclick="jQuery('[id=_${name+str(pager_id)}_limit_span]').hide(); jQuery('[id=_${name+str(pager_id)}_link_span]').show();">${_("Change Limit:")}</label>&nbsp;
225 <select id='_${name+str(pager_id)}_limit'
226+ action="filter"
227+ relation="${name}"
228 onchange="jQuery('[id=${name_base}_terp_limit]').val(jQuery(this).val());
229 jQuery('[id=${name_base}_terp_offset]').val(0);
230- pager_action('filter', '${name}')" style="min-width: 25px;">
231+ pager_action(this)" style="min-width: 25px;">
232 <option value=""></option>
233 % for k in pager_options:
234 <option value="${k}" ${py.selector(limit=='${k]}')}>${k}</option>
235
236=== modified file 'addons/openerp/widgets/templates/sidebar.mako'
237--- addons/openerp/widgets/templates/sidebar.mako 2010-10-05 13:19:16 +0000
238+++ addons/openerp/widgets/templates/sidebar.mako 2010-10-13 10:13:40 +0000
239@@ -1,7 +1,7 @@
240 <%def name="sidebox_action_item(item, model, submenu)">
241 % if submenu != 1:
242- <li data="${item}" onclick="do_action(${item['id']}, '_terp_id', '${model}', this, getNodeAttribute(this, 'data'));">
243- <a href="javascript: void(0)" onclick="return false">${item['name']}</a>
244+ <li data="${item}" action_id="${item['id']}" relation="${model}" onclick="validate_action(this, do_action)">
245+ <a href="javascript: void(0)" onclick="return false">${item['name']}</a>
246 </li>
247 % else:
248 <li data="${item}">