[merge]
bzr revid: nicolas.vanhoren@openerp.com-20120125131453-sblhwsshiahe4qsw
This commit is contained in:
commit
921543ab32
|
@ -83,7 +83,7 @@ body { padding: 0; margin: 0; }
|
|||
border-bottom-left-radius: 8px;
|
||||
}
|
||||
.openerp .oe_notification {
|
||||
z-index: 1001;
|
||||
z-index: 1050;
|
||||
display: none;
|
||||
}
|
||||
.openerp .oe_notification * {
|
||||
|
@ -2286,6 +2286,24 @@ ul.oe-arrow-list li.oe-arrow-list-selected .oe-arrow-list-after {
|
|||
color: black;
|
||||
}
|
||||
|
||||
/* Debug stuff */
|
||||
.openerp .oe_debug_view_log {
|
||||
font-size: 95%;
|
||||
}
|
||||
.openerp .oe_debug_view_log label {
|
||||
display: block;
|
||||
width: 49%;
|
||||
text-align: right;
|
||||
float: left;
|
||||
font-weight: bold;
|
||||
color: #009;
|
||||
}
|
||||
.openerp .oe_debug_view_log span {
|
||||
display: block;
|
||||
width: 49%;
|
||||
float: right;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
/* Internet Explorer Fix */
|
||||
a img {
|
||||
|
|
|
@ -17,7 +17,7 @@ openerp.web.Notification = openerp.web.OldWidget.extend(/** @lends openerp.web.
|
|||
this._super.apply(this, arguments);
|
||||
this.$element.notify({
|
||||
speed: 500,
|
||||
expires: 1500
|
||||
expires: 2500
|
||||
});
|
||||
},
|
||||
notify: function(title, text) {
|
||||
|
|
|
@ -443,7 +443,9 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
|
|||
};
|
||||
var deferred = $.Deferred();
|
||||
this.on_rpc_request();
|
||||
this.rpc_function(url, payload).then(
|
||||
var aborter = params.aborter;
|
||||
delete params.aborter;
|
||||
var request = this.rpc_function(url, payload).then(
|
||||
function (response, textStatus, jqXHR) {
|
||||
self.on_rpc_response();
|
||||
if (!response.error) {
|
||||
|
@ -469,6 +471,16 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
|
|||
};
|
||||
deferred.reject(error, $.Event());
|
||||
});
|
||||
if (aborter) {
|
||||
aborter.abort_last = function () {
|
||||
if (!(request.isResolved() || request.isRejected())) {
|
||||
deferred.fail(function (error, event) {
|
||||
event.preventDefault();
|
||||
});
|
||||
request.abort();
|
||||
}
|
||||
};
|
||||
}
|
||||
// Allow deferred user to disable on_rpc_error in fail
|
||||
deferred.fail(function() {
|
||||
deferred.fail(function(error, event) {
|
||||
|
@ -952,6 +964,8 @@ openerp.web.Widget = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.W
|
|||
init: function(parent) {
|
||||
this._super();
|
||||
this.session = openerp.connection;
|
||||
|
||||
this.$element = $(document.createElement(this.tag_name));
|
||||
|
||||
this.widget_parent = parent;
|
||||
this.widget_children = [];
|
||||
|
@ -1113,14 +1127,17 @@ openerp.web.Widget = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.W
|
|||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @deprecated use :class:`openerp.web.Widget`
|
||||
*/
|
||||
openerp.web.OldWidget = openerp.web.Widget.extend({
|
||||
init: function(parent, /** @deprecated */ element_id) {
|
||||
init: function(parent, element_id) {
|
||||
this._super(parent);
|
||||
this.element_id = element_id;
|
||||
this.element_id = this.element_id || _.uniqueId('widget-');
|
||||
var tmp = document.getElementById(this.element_id);
|
||||
this.$element = tmp ? $(tmp) : $(document.createElement(this.tag_name));
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
openerp.web.TranslationDataBase = openerp.web.Class.extend(/** @lends openerp.web.TranslationDataBase# */{
|
||||
|
@ -1206,7 +1223,7 @@ openerp.web.qweb.default_dict = {
|
|||
'_' : _,
|
||||
'_t' : openerp.web._t
|
||||
};
|
||||
openerp.web.qweb.format_text_node = function(s) {
|
||||
openerp.web.qweb.format_text_node = function (s) {
|
||||
// Note that 'this' is the Qweb Node of the text
|
||||
var translation = this.node.parentNode.attributes['t-translation'];
|
||||
if (translation && translation.value === 'off') {
|
||||
|
@ -1218,13 +1235,13 @@ openerp.web.qweb.format_text_node = function(s) {
|
|||
}
|
||||
var tr = openerp.web._t(ts);
|
||||
return tr === ts ? s : tr;
|
||||
}
|
||||
};
|
||||
|
||||
/** Jquery extentions */
|
||||
$.Mutex = (function() {
|
||||
function Mutex() {
|
||||
this.def = $.Deferred().resolve();
|
||||
};
|
||||
}
|
||||
Mutex.prototype.exec = function(action) {
|
||||
var current = this.def;
|
||||
var next = this.def = $.Deferred();
|
||||
|
|
|
@ -430,7 +430,9 @@ openerp.web.DataSet = openerp.web.OldWidget.extend( /** @lends openerp.web.Data
|
|||
method: method,
|
||||
domain_id: domain_index == undefined ? null : domain_index,
|
||||
context_id: context_index == undefined ? null : context_index,
|
||||
args: args || []
|
||||
args: args || [],
|
||||
// FIXME: API which does not suck for aborting requests in-flight
|
||||
aborter: this
|
||||
}, callback, error_callback);
|
||||
},
|
||||
/**
|
||||
|
|
|
@ -989,12 +989,17 @@ openerp.web.search.ManyToOneField = openerp.web.search.CharField.extend({
|
|||
var self = this;
|
||||
this.$element.autocomplete({
|
||||
source: function (req, resp) {
|
||||
if (self.abort_last) {
|
||||
self.abort_last();
|
||||
delete self.abort_last;
|
||||
}
|
||||
self.dataset.name_search(
|
||||
req.term, self.attrs.domain, 'ilike', 8, function (data) {
|
||||
resp(_.map(data, function (result) {
|
||||
return {id: result[0], label: result[1]}
|
||||
}));
|
||||
});
|
||||
self.abort_last = self.dataset.abort_last;
|
||||
},
|
||||
select: function (event, ui) {
|
||||
self.id = ui.item.id;
|
||||
|
|
|
@ -4,8 +4,8 @@ var QWeb = openerp.web.qweb;
|
|||
openerp.web.ViewEditor = openerp.web.OldWidget.extend({
|
||||
init: function(parent, element_id, dataset, view, options) {
|
||||
this._super(parent);
|
||||
this.element_id = element_id
|
||||
this.parent = parent
|
||||
this.element_id = element_id;
|
||||
this.parent = parent;
|
||||
this.dataset = new openerp.web.DataSetSearch(this, 'ir.ui.view', null, null),
|
||||
this.model = dataset.model;
|
||||
this.xml_element_id = 0;
|
||||
|
@ -107,7 +107,7 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
|
|||
type_widget.dirty = true;
|
||||
}
|
||||
type_widget.start();
|
||||
type_widget.set_value(value)
|
||||
type_widget.set_value(value);
|
||||
self.create_view_widget.push(type_widget);
|
||||
});
|
||||
},
|
||||
|
@ -177,7 +177,7 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
|
|||
'att_list': [],
|
||||
'name': this.add_node_name(node),
|
||||
'child_id': []
|
||||
}
|
||||
};
|
||||
ViewNode.att_list.push(node.tagName.toLowerCase());
|
||||
_.each(node.attributes, function(att) {
|
||||
ViewNode.att_list.push([att.nodeName, att.nodeValue]);
|
||||
|
@ -576,7 +576,7 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
|
|||
var check = _.detect(one_object , function(obj) {
|
||||
return id == obj.id;
|
||||
});
|
||||
if (check) {result.push(check);};
|
||||
if (check) {result.push(check);}
|
||||
_.each(one_object, function(obj) {
|
||||
self.get_object_by_id(id,obj.child_id, result);
|
||||
});
|
||||
|
@ -817,7 +817,7 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
|
|||
values.push('');
|
||||
values.sort();
|
||||
_PROPERTIES_ATTRIBUTES['widget']['selection'] = values;
|
||||
var widgets = _.filter(_PROPERTIES_ATTRIBUTES, function(property){ return _.include(properties, property.name)})
|
||||
var widgets = _.filter(_PROPERTIES_ATTRIBUTES, function (property) { return _.include(properties, property.name)});
|
||||
_.each(widgets, function(widget) {
|
||||
var type_widget = new (self.property.get_any([widget.type])) (self.edit_node_dialog, widget);
|
||||
var value = _.detect(arch_val[0]['att_list'],function(res) {
|
||||
|
@ -842,24 +842,23 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
|
|||
var group_ids = [], group_names = {}, groups = [];
|
||||
var res_groups = new openerp.web.DataSetSearch(this,'res.groups', null, null),
|
||||
model_data = new openerp.web.DataSetSearch(self,'ir.model.data', null, null);
|
||||
res_groups
|
||||
.read_slice([], {})
|
||||
.done(function(res_grp) {
|
||||
_.each(res_grp,function(res){
|
||||
res_groups.read_slice([], {}).done(function (res_grp) {
|
||||
_.each(res_grp, function (res) {
|
||||
var key = res.id;
|
||||
group_names[key]=res.name;
|
||||
group_names[key] = res.name;
|
||||
group_ids.push(res.id);
|
||||
});
|
||||
model_data
|
||||
.read_slice([],{domain:[['res_id', 'in', group_ids],['model','=','res.groups']]})
|
||||
.done(function(model_grp) {
|
||||
_.each(model_grp, function(res_group) {
|
||||
groups.push([res_group.module + "." + res_group.name,group_names[res_group.res_id]]);
|
||||
model_data.read_slice([], {domain: [
|
||||
['res_id', 'in', group_ids],
|
||||
['model', '=', 'res.groups']
|
||||
]}).done(function (model_grp) {
|
||||
_.each(model_grp, function (res_group) {
|
||||
groups.push([res_group.module + "." + res_group.name, group_names[res_group.res_id]]);
|
||||
});
|
||||
self.groups = groups;
|
||||
def.resolve();
|
||||
});
|
||||
})
|
||||
});
|
||||
return def.promise();
|
||||
},
|
||||
on_add_node: function(properties, fields){
|
||||
|
@ -922,7 +921,7 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
|
|||
render_new_field :function(id){
|
||||
var self = this;
|
||||
var action = {
|
||||
context: {'default_model_id': id, 'manual':true},
|
||||
context: {'default_model_id': id, 'manual': true},
|
||||
res_model: "ir.model.fields",
|
||||
views: [[false, 'form']],
|
||||
type: 'ir.actions.act_window',
|
||||
|
@ -930,7 +929,7 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
|
|||
flags: {
|
||||
action_buttons: true
|
||||
}
|
||||
}
|
||||
};
|
||||
var action_manager = new openerp.web.ActionManager(self);
|
||||
$.when(action_manager.do_action(action)).then(function() {
|
||||
var controller = action_manager.dialog_viewmanager.views['form'].controller;
|
||||
|
|
|
@ -125,7 +125,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
|||
if (state.id && this.datarecord.id != state.id) {
|
||||
var idx = this.dataset.get_id_index(state.id);
|
||||
if (idx === null) {
|
||||
this.dataset.ids.push(state.id)
|
||||
this.dataset.ids.push(state.id);
|
||||
this.dataset.index = this.dataset.ids.length - 1;
|
||||
}
|
||||
this.do_show();
|
||||
|
@ -233,7 +233,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
|||
do_update_pager: function(hide_index) {
|
||||
var $pager = this.$form_header.find('div.oe_form_pager');
|
||||
var index = hide_index ? '-' : this.dataset.index + 1;
|
||||
$pager.find('button').prop('disabled', this.dataset.ids.length < 2)
|
||||
$pager.find('button').prop('disabled', this.dataset.ids.length < 2);
|
||||
$pager.find('span.oe_pager_index').html(index);
|
||||
$pager.find('span.oe_pager_count').html(this.dataset.ids.length);
|
||||
},
|
||||
|
@ -1873,6 +1873,10 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({
|
|||
var search_val = request.term;
|
||||
var self = this;
|
||||
|
||||
if (this.abort_last) {
|
||||
this.abort_last();
|
||||
delete this.abort_last;
|
||||
}
|
||||
var dataset = new openerp.web.DataSetStatic(this, this.field.relation, self.build_context());
|
||||
|
||||
dataset.name_search(search_val, self.build_domain(), 'ilike',
|
||||
|
@ -1912,13 +1916,14 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({
|
|||
|
||||
response(values);
|
||||
});
|
||||
this.abort_last = dataset.abort_last;
|
||||
},
|
||||
_quick_create: function(name) {
|
||||
var self = this;
|
||||
var slow_create = function() {
|
||||
var slow_create = function () {
|
||||
self._change_int_value(null);
|
||||
self._search_create_popup("form", undefined, {"default_name": name});
|
||||
}
|
||||
};
|
||||
if (self.get_definition_options().quick_create === undefined || self.get_definition_options().quick_create) {
|
||||
var dataset = new openerp.web.DataSetStatic(this, this.field.relation, self.build_context());
|
||||
dataset.name_create(name, function(data) {
|
||||
|
@ -2931,6 +2936,7 @@ openerp.web.form.FieldReference = openerp.web.form.Field.extend({
|
|||
name: 'm2o',
|
||||
widget: 'many2one'
|
||||
}});
|
||||
this.m2o.on_ui_change.add_last(this.on_ui_change);
|
||||
},
|
||||
on_nop: function() {
|
||||
},
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
/*---------------------------------------------------------
|
||||
* OpenERP web library
|
||||
*---------------------------------------------------------*/
|
||||
|
||||
openerp.web.view_help = function(openerp) {
|
||||
|
||||
openerp.web.ProcessView = openerp.web.OldWidget.extend({
|
||||
});
|
||||
|
||||
openerp.web.HelpView = openerp.web.OldWidget.extend({
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:
|
|
@ -557,6 +557,20 @@ session.web.ViewManagerAction = session.web.ViewManager.extend(/** @lends oepner
|
|||
var dialog = new session.web.Dialog(this, { title: _t("Fields View Get"), width: '95%' }).open();
|
||||
$('<pre>').text(session.web.json_node_to_xml(current_view.fields_view.arch, true)).appendTo(dialog.$element);
|
||||
break;
|
||||
case 'perm_read':
|
||||
var ids = current_view.get_selected_ids();
|
||||
if (ids.length === 1) {
|
||||
this.dataset.call('perm_read', [ids]).then(function(result) {
|
||||
var dialog = new session.web.Dialog(this, {
|
||||
title: _.str.sprintf(_t("View Log (%s)"), self.dataset.model),
|
||||
width: 400
|
||||
}, QWeb.render('ViewManagerDebugViewLog', {
|
||||
perm : result[0],
|
||||
format : session.web.format_value
|
||||
})).open();
|
||||
});
|
||||
}
|
||||
break;
|
||||
case 'fields':
|
||||
this.dataset.call_and_eval(
|
||||
'fields_get', [false, {}], null, 1).then(function (fields) {
|
||||
|
@ -1040,7 +1054,7 @@ session.web.TranslateDialog = session.web.Dialog.extend({
|
|||
}
|
||||
});
|
||||
|
||||
session.web.View = session.web.OldWidget.extend(/** @lends session.web.View# */{
|
||||
session.web.View = session.web.Widget.extend(/** @lends session.web.View# */{
|
||||
template: "EmptyComponent",
|
||||
// name displayed in view switchers
|
||||
display_name: '',
|
||||
|
|
|
@ -471,17 +471,39 @@
|
|||
</t>
|
||||
<t t-name="ViewManagerDebug">
|
||||
<option value="">Debug View#<t t-esc="view.fields_view.view_id"/></option>
|
||||
<option value="fvg">Fields View Get</option>
|
||||
<option t-if="_.indexOf(['form', 'page'], view_manager.active_view) gt -1" value="perm_read" data-views="form,page">View Log (perm_read)</option>
|
||||
<option value="fields">View Fields</option>
|
||||
<option value="fvg">Fields View Get</option>
|
||||
<t t-if="view_manager.session.uid === 1">
|
||||
<option value="manage_views">Manage Views</option>
|
||||
<option value="edit" data-model="ir.ui.view" t-att-data-id="view.fields_view.view_id">Edit <t t-esc="_.str.capitalize(view.fields_view.type)"/>View</option>
|
||||
<option t-if="view_manager.searchview" value="edit" data-model="ir.ui.view" t-att-data-id="view_manager.searchview.view_id">Edit SearchView</option>
|
||||
<option t-if="view_manager.action" value="edit" t-att-data-model="view_manager.action.type" t-att-data-id="view_manager.action.id">Edit Action</option>
|
||||
<option value="customize_object">Customize Object</option>
|
||||
<option value="edit_workflow">Edit Workflow</option>
|
||||
<option value="customize_object">Customize Object</option>
|
||||
</t>
|
||||
</t>
|
||||
<t t-name="ViewManagerDebugViewLog">
|
||||
<div class="oe_debug_view_log">
|
||||
<label>ID:</label>
|
||||
<span><t t-esc="perm.id"/></span>
|
||||
|
||||
<label>XML ID:</label>
|
||||
<span><t t-esc="perm.xmlid"/></span>
|
||||
|
||||
<label>Creation User:</label>
|
||||
<span><t t-esc="format(perm.create_uid, { 'type' : 'many2one' }, '/')"/></span>
|
||||
|
||||
<label>Creation Date:</label>
|
||||
<span><t t-esc="format(perm.create_date, { 'type' : 'datetime' }, '/')"/></span>
|
||||
|
||||
<label>Latest Modification by:</label>
|
||||
<span><t t-esc="format(perm.write_uid, { 'type' : 'many2one' }, '/')"/></span>
|
||||
|
||||
<label>Latest Modification Date:</label>
|
||||
<span><t t-esc="format(perm.write_date, { 'type' : 'datetime' }, '/')"/></span>
|
||||
</div>
|
||||
</t>
|
||||
<t t-extend="ViewManager" t-name="One2Many.viewmanager">
|
||||
<t t-jquery="span.oe_view_title_text" t-operation="replace"/>
|
||||
|
||||
|
|
|
@ -381,7 +381,7 @@ openerp.web_calendar.CalendarView = openerp.web.View.extend({
|
|||
this.do_ranged_search();
|
||||
},
|
||||
do_ranged_search: function() {
|
||||
var self = this
|
||||
var self = this;
|
||||
scheduler.clearAll();
|
||||
$.when(this.has_been_loaded, this.ready).then(function() {
|
||||
self.dataset.read_slice(_.keys(self.fields), {
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
text-indent: 10px;
|
||||
vertical-align: center;
|
||||
vertical-align: middle;
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
background: white url("/web/static/src/img/box-a-header-a.gif") 0% 0% repeat-x;
|
||||
}
|
||||
|
@ -90,6 +90,11 @@
|
|||
padding:0 3px;
|
||||
}
|
||||
|
||||
.openerp .oe-dashboard .oe-listview th.oe-sortable .ui-icon {
|
||||
height: 100%;
|
||||
margin-top: -9px;
|
||||
}
|
||||
|
||||
/* Layouts */
|
||||
.openerp .oe-dashboard-layout_1 .oe-dashboard-column.index_0 {
|
||||
width: 100%;
|
||||
|
|
|
@ -190,9 +190,9 @@ openerp.web.form.DashBoard = openerp.web.form.Widget.extend({
|
|||
this.action_managers.push(am);
|
||||
am.appendTo($action);
|
||||
am.do_action(action);
|
||||
am.do_action = function(action) {
|
||||
am.do_action = function (action) {
|
||||
self.do_action(action);
|
||||
}
|
||||
};
|
||||
if (action_attrs.creatable && action_attrs.creatable !== 'false') {
|
||||
var action_id = parseInt(action_attrs.creatable, 10);
|
||||
$action.parent().find('button.oe_dashboard_button_create').click(function() {
|
||||
|
|
|
@ -78,7 +78,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({
|
|||
node.tag = qweb_prefix;
|
||||
node.attrs[qweb_prefix + '-esc'] = 'record.' + node.attrs['name'] + '.value';
|
||||
this.extract_aggregates(node);
|
||||
break
|
||||
break;
|
||||
case 'button':
|
||||
case 'a':
|
||||
var type = node.attrs.type || '';
|
||||
|
@ -395,7 +395,7 @@ openerp.web_kanban.KanbanRecord = openerp.web.OldWidget.extend({
|
|||
this.qweb_context = {
|
||||
record: this.record,
|
||||
widget: this
|
||||
}
|
||||
};
|
||||
for (var p in this) {
|
||||
if (_.str.startsWith(p, 'kanban_')) {
|
||||
this.qweb_context[p] = _.bind(this[p], this);
|
||||
|
@ -444,7 +444,7 @@ openerp.web_kanban.KanbanRecord = openerp.web.OldWidget.extend({
|
|||
var self = this;
|
||||
if (confirm(_t("Are you sure you want to delete this record ?"))) {
|
||||
return $.when(this.view.dataset.unlink([this.id])).then(function() {
|
||||
self.group.remove_record(self.id)
|
||||
self.group.remove_record(self.id);
|
||||
self.stop();
|
||||
});
|
||||
}
|
||||
|
|
|
@ -153,7 +153,7 @@ openerp.web_mobile.Shortcuts = openerp.web.OldWidget.extend({
|
|||
start: function() {
|
||||
var self = this;
|
||||
this.rpc('/web/session/sc_list',{} ,function(res){
|
||||
self.$element.html(self.render({'sc' : res}))
|
||||
self.$element.html(self.render({'sc': res}));
|
||||
self.$element.find("[data-role=header]").find('h1').html('Favourite');
|
||||
self.$element.find("[data-role=header]").find('#home').click(function(){
|
||||
$.mobile.changePage("#oe_menu", "slide", false, true);
|
||||
|
|
|
@ -169,7 +169,7 @@ openerp.web_process = function (openerp) {
|
|||
// Node text
|
||||
process_node_text = r.text(n.node.x, n.node.y, (n.node.name))
|
||||
.attr({"fill": "#fff", "font-weight": "bold", "cursor": "pointer"});
|
||||
process_node_text.translate((process_node.getBBox().width/ 2) + 5, 10)
|
||||
process_node_text.translate((process_node.getBBox().width / 2) + 5, 10);
|
||||
if(n.node.subflow) {
|
||||
process_node_text.click(function() {
|
||||
self.process_id = n.node.subflow[0];
|
||||
|
|
Loading…
Reference in New Issue