bye bye page view

bzr revid: al@openerp.com-20120409205334-tbgk3fz7q7q60o3t
This commit is contained in:
Antony Lesuisse 2012-04-09 22:53:34 +02:00
parent db8a61ba9b
commit 77ec66a20e
5 changed files with 76 additions and 86 deletions

View File

@ -802,9 +802,6 @@ def fix_view_modes(action):
new view mode ``list`` which is the result of the ``tree`` view_mode
in conjunction with the ``form`` view_type.
This method also adds a ``page`` view mode in case there is a ``form`` in
the input action.
TODO: this should go into the doc, some kind of "peculiarities" section
:param dict action: an action descriptor
@ -818,8 +815,6 @@ def fix_view_modes(action):
if mode == 'form':
id_form = id
break
if id_form is not None:
action['views'].insert(index + 1, (id_form, 'page'))
if action.pop('view_type', 'form') != 'form':
return action

View File

@ -80,6 +80,10 @@ openerp.web.FormView = openerp.web.View.extend({
this.$buttons.html(QWeb.render("FormView.buttons", {'widget':self}));
this.$buttons.on('click','.oe_form_buttons button.oe_form_button_save',this.on_button_save);
this.$buttons.on('click','.oe_form_buttons button.oe_form_button_cancel',this.on_button_cancel);
this.$buttons.on('click','.oe_form_buttons button.oe_form_button_edit',this.on_button_edit);
this.$buttons.on('click','.oe_form_buttons button.oe_form_button_create',this.on_button_create);
this.$buttons.on('click','.oe_form_buttons button.oe_form_button_duplicate',this.on_button_duplicate);
this.$buttons.on('click','.oe_form_buttons button.oe_form_button_delete',this.on_button_delete);
this.$pager.html(QWeb.render("FormView.pager", {'widget':self}));
this.$pager.on('click','.oe_form_pager button[data-pager-action]',function(event) {
@ -145,15 +149,15 @@ openerp.web.FormView = openerp.web.View.extend({
});
},
do_hide: function () {
//if (this.sidebar) {
// this.sidebar.$element.hide();
//}
//if (this.$buttons) {
// this.$buttons.find('.oe_form_buttons').hide();
//}
//if (this.$pager) {
// this.$pager.find('.oe_form_pager').hide();
//}
if (this.sidebar) {
this.sidebar.$element.hide();
}
if (this.$buttons) {
this.$buttons.find('.oe_form_buttons').hide();
}
if (this.$pager) {
this.$pager.find('.oe_form_pager').hide();
}
this._super();
},
on_record_loaded: function(record) {
@ -427,6 +431,9 @@ openerp.web.FormView = openerp.web.View.extend({
return $.Deferred().reject();
}
},
do_switch_mode: function(mode) {
console.log("switch to",mode)
},
on_button_save: function() {
var self = this;
return this.do_save().then(function(result) {
@ -457,6 +464,44 @@ openerp.web.FormView = openerp.web.View.extend({
});
return def.promise();
},
on_button_edit: function() {
return this.do_switch_mode(1);
},
on_button_create: function() {
this.dataset.index = null;
return this.do_switch_mode(1);
},
on_button_duplicate: function() {
var self = this;
var def = $.Deferred();
$.when(this.has_been_loaded).then(function() {
self.dataset.call('copy', [self.datarecord.id, {}, self.dataset.context]).then(function(new_id) {
return self.on_created({ result : new_id });
}).then(function() {
return self.do_switch_mode(1);
}).then(function() {
def.resolve();
});
});
return def.promise();
},
on_button_delete: function() {
var self = this;
var def = $.Deferred();
$.when(this.has_been_loaded).then(function() {
if (self.datarecord.id && confirm(_t("Do you really want to delete this record?"))) {
self.dataset.unlink([self.datarecord.id]).then(function() {
self.on_pager_action('next');
def.resolve();
});
} else {
$.async_when().then(function () {
def.reject();
})
}
});
return def.promise();
},
can_be_discarded: function() {
return !this.$element.is('.oe_form_dirty') || confirm(_t("Warning, the record has been modified, your changes will be discarded."));
},
@ -578,6 +623,10 @@ openerp.web.FormView = openerp.web.View.extend({
reload: function() {
var self = this;
return this.reload_mutex.exec(function() {
//if (this.dataset.index == null) {
// this.do_prev_view();
// return $.Deferred().reject().promise();
//}
if (self.dataset.index == null || self.dataset.index < 0) {
return $.when(self.on_button_new());
} else {

View File

@ -409,7 +409,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
* @param {String} [view="page"] the view type to switch to
*/
select_record:function (index, view) {
view = view || index == null ? 'form' : 'page';
view = view || index == null ? 'form' : 'form';
this.dataset.index = index;
_.delay(_.bind(function () {
this.do_switch_view(view);
@ -420,11 +420,24 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
if (this.sidebar) {
this.sidebar.$element.show();
}
if (this.$buttons) {
this.$buttons.find('.oe_list_buttons').show();
}
if (this.$pager) {
this.$pager.find('.oe_list_pager').show();
}
},
do_hide: function () {
this._super();
if (this.sidebar) {
this.sidebar.$element.hide();
}
if (this.$buttons) {
this.$buttons.find('.oe_list_buttons').hide();
}
if (this.$pager) {
this.$pager.find('.oe_list_pager').hide();
}
this._super();
},
/**
* Reloads the list view based on the current settings (dataset & al)

View File

@ -2,71 +2,4 @@ openerp.web.page = function (openerp) {
var _t = openerp.web._t,
_lt = openerp.web._lt;
openerp.web.views.add('page', 'openerp.web.PageView');
openerp.web.PageView = openerp.web.FormView.extend({
template: "PageView",
display_name: _lt('Page'),
init: function() {
this._super.apply(this, arguments);
this.rendering_engine = new openerp.web.FormRenderingEngineReadonly(this);
},
reload: function () {
if (this.dataset.index == null) {
this.do_prev_view();
return $.Deferred().reject().promise();
}
return this._super();
},
on_loaded: function(data) {
this._super(data);
this.$buttons.find('button.oe_form_button_edit').click(this.on_button_edit);
this.$buttons.find('button.oe_form_button_create').click(this.on_button_create);
this.$buttons.find('button.oe_form_button_duplicate').click(this.on_button_duplicate);
this.$buttons.find('button.oe_form_button_delete').click(this.on_button_delete);
},
on_button_edit: function() {
return this.do_switch_view('form');
},
on_button_create: function() {
this.dataset.index = null;
return this.do_switch_view('form');
},
on_button_duplicate: function() {
var self = this;
var def = $.Deferred();
$.when(this.has_been_loaded).then(function() {
self.dataset.call('copy', [self.datarecord.id, {}, self.dataset.context]).then(function(new_id) {
return self.on_created({ result : new_id });
}).then(function() {
return self.do_switch_view('form');
}).then(function() {
def.resolve();
});
});
return def.promise();
},
on_button_delete: function() {
var self = this;
var def = $.Deferred();
$.when(this.has_been_loaded).then(function() {
if (self.datarecord.id && confirm(_t("Do you really want to delete this record?"))) {
self.dataset.unlink([self.datarecord.id]).then(function() {
self.on_pager_action('next');
def.resolve();
});
} else {
$.async_when().then(function () {
def.reject();
})
}
});
return def.promise();
}
});
openerp.web.FormRenderingEngineReadonly = openerp.web.FormRenderingEngine.extend({
alter_field: function(field) {
field.set({"force_readonly": true});
},
});
};

View File

@ -63,7 +63,7 @@ session.web.ActionManager = session.web.Widget.extend({
res_model: state.model,
res_id: state.id,
type: 'ir.actions.act_window',
views: [[false, 'page'], [false, 'form']]
views: [[false, 'form']]
};
action_loaded = this.do_action(action);
} else if (state.sa) {
@ -356,10 +356,10 @@ session.web.ViewManager = session.web.OldWidget.extend({
if (options.created && current_view === 'form' && previous_view === 'list') {
// APR special case: "If creation mode from list (and only from a list),
// after saving, go to page view (don't come back in list)"
return this.on_mode_switch('page');
return this.on_mode_switch('form');
} else if (options.created && !previous_view && this.action && this.action.flags.default_view === 'form') {
// APR special case: "If creation from dashboard, we have no previous view
return this.on_mode_switch('page');
return this.on_mode_switch('form');
}
return this.on_mode_switch(previous_view, true);
},