[Merge] With trunk upto revision 567.
bzr revid: noz@tinyerp.com-20110704135058-qmzbrcwx8xsdl91c bzr revid: noz@tinyerp.com-20110705043811-bfgosk80vf03vz3v
This commit is contained in:
commit
271d873d8e
|
@ -1099,12 +1099,6 @@ background: linear-gradient(top, #ffffff 0%,#ebe9e9 100%); /* W3C */
|
|||
background: #828282;
|
||||
border-color: #828282;
|
||||
}
|
||||
.openerp .oe_necessary_team_song {
|
||||
display: none;
|
||||
}
|
||||
.openerp.kitten-mode-activated .oe_necessary_team_song {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.openerp .oe-m2o {
|
||||
padding-right: 16px;
|
||||
|
|
|
@ -357,8 +357,6 @@ openerp.base.Session = openerp.base.BasicController.extend( /** @lends openerp.b
|
|||
var self = this;
|
||||
// Construct a JSON-RPC2 request, method is currently unused
|
||||
params.session_id = this.session_id;
|
||||
// niv: wtf?
|
||||
//params.context = typeof(params.context) != "undefined" ? params.context : this.context;
|
||||
|
||||
// Call using the rpc_mode
|
||||
var deferred = $.Deferred();
|
||||
|
@ -408,7 +406,8 @@ openerp.base.Session = openerp.base.BasicController.extend( /** @lends openerp.b
|
|||
self.on_session_invalid(function() {
|
||||
self.rpc(url, payload.params,
|
||||
function() {deferred.resolve.apply(deferred, arguments);},
|
||||
function() {deferred.reject.apply(deferred, arguments);});
|
||||
function(error, event) {event.preventDefault();
|
||||
deferred.reject.apply(deferred, arguments);});
|
||||
});
|
||||
} else {
|
||||
deferred.reject(response.error);
|
||||
|
@ -1016,20 +1015,18 @@ openerp.base.Database = openerp.base.Controller.extend({
|
|||
}
|
||||
});
|
||||
|
||||
openerp.base.Login = openerp.base.Controller.extend({
|
||||
openerp.base.Login = openerp.base.Controller.extend({
|
||||
remember_creditentials: true,
|
||||
|
||||
init: function(session, element_id) {
|
||||
this._super(session, element_id);
|
||||
this.has_local_storage = typeof(localStorage) != 'undefined';
|
||||
this.selected_db = null;
|
||||
this.selected_login = null;
|
||||
this.selected_password = null;
|
||||
this.remember = false;
|
||||
|
||||
if (this.has_local_storage && localStorage.getItem('remember_creditentials') === 'true') {
|
||||
this.remember = true;
|
||||
|
||||
if (this.has_local_storage && this.remember_creditentials) {
|
||||
this.selected_db = localStorage.getItem('last_db_login_success');
|
||||
this.selected_login = localStorage.getItem('last_login_login_success');
|
||||
this.selected_password = localStorage.getItem('last_password_login_success');
|
||||
}
|
||||
},
|
||||
start: function() {
|
||||
|
@ -1069,22 +1066,17 @@ openerp.base.Login = openerp.base.Controller.extend({
|
|||
var db = $e.find("form [name=db]").val();
|
||||
var login = $e.find("form input[name=login]").val();
|
||||
var password = $e.find("form input[name=password]").val();
|
||||
var remember = $e.find("form input[name=remember]").attr('checked');
|
||||
//$e.hide();
|
||||
// Should hide then call callback
|
||||
this.session.session_login(db, login, password, function() {
|
||||
if(self.session.session_is_valid()) {
|
||||
if (self.has_local_storage) {
|
||||
if(remember) {
|
||||
localStorage.setItem('remember_creditentials', 'true');
|
||||
if(self.remember_creditentials) {
|
||||
localStorage.setItem('last_db_login_success', db);
|
||||
localStorage.setItem('last_login_login_success', login);
|
||||
localStorage.setItem('last_password_login_success', password);
|
||||
} else {
|
||||
localStorage.setItem('remember_creditentials', '');
|
||||
localStorage.setItem('last_db_login_success', '');
|
||||
localStorage.setItem('last_login_login_success', '');
|
||||
localStorage.setItem('last_password_login_success', '');
|
||||
}
|
||||
}
|
||||
self.on_login_valid();
|
||||
|
|
|
@ -483,7 +483,6 @@ openerp.base.BufferedDataSet = openerp.base.DataSetStatic.extend({
|
|||
var cached = {id:_.uniqueId(this.virtual_id_prefix), values: data};
|
||||
this.to_create.push(cached);
|
||||
this.cache.push(cached);
|
||||
this.on_change();
|
||||
var to_return = $.Deferred().then(callback);
|
||||
setTimeout(function() {to_return.resolve({result: cached.id});}, 0);
|
||||
return to_return.promise();
|
||||
|
|
|
@ -43,7 +43,7 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV
|
|||
if (this.embedded_view) {
|
||||
return $.Deferred().then(this.on_loaded).resolve({fields_view: this.embedded_view});
|
||||
} else {
|
||||
var context = new openerp.base.CompoundContext(this.dataset.context);
|
||||
var context = new openerp.base.CompoundContext(this.dataset.get_context());
|
||||
if (this.view_manager.action && this.view_manager.action.context) {
|
||||
context.add(this.view_manager.action.context);
|
||||
}
|
||||
|
@ -169,17 +169,22 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV
|
|||
console.log("Onchange triggered for field '%s' -> %s", widget.name, onchange);
|
||||
if (call) {
|
||||
var method = call[1], args = [];
|
||||
var context_index = null;
|
||||
var argument_replacement = {
|
||||
'False' : false,
|
||||
'True' : true,
|
||||
'None' : null,
|
||||
'context': widget.build_context ? widget.build_context() : {}
|
||||
'False' : function() {return false;},
|
||||
'True' : function() {return true;},
|
||||
'None' : function() {return null;},
|
||||
'context': function(i) {
|
||||
context_index = i;
|
||||
var ctx = widget.build_context ? widget.build_context() : {};
|
||||
return ctx;
|
||||
}
|
||||
}
|
||||
var parent_fields = null;
|
||||
_.each(call[2].split(','), function(a) {
|
||||
_.each(call[2].split(','), function(a, i) {
|
||||
var field = _.trim(a);
|
||||
if (field in argument_replacement) {
|
||||
args.push(argument_replacement[field]);
|
||||
args.push(argument_replacement[field](i));
|
||||
return;
|
||||
} else if (self.fields[field]) {
|
||||
var value = self.fields[field].get_on_change_value();
|
||||
|
@ -193,7 +198,7 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV
|
|||
}
|
||||
var p_val = parent_fields[_.trim(splitted[1])];
|
||||
if (p_val !== undefined) {
|
||||
args.push(value ? value : false);
|
||||
args.push(p_val == null ? false : p_val);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -208,7 +213,8 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV
|
|||
return this.rpc(ajax, {
|
||||
model: this.dataset.model,
|
||||
method: method,
|
||||
args: [(this.datarecord.id == null ? [] : [this.datarecord.id])].concat(args)
|
||||
args: [(this.datarecord.id == null ? [] : [this.datarecord.id])].concat(args),
|
||||
context_id: context_index === null ? null : context_index + 1
|
||||
}, function(response) {
|
||||
self.on_processed_onchange(response, processed);
|
||||
});
|
||||
|
@ -236,12 +242,12 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV
|
|||
}
|
||||
} else {
|
||||
// this is a common case, the normal behavior should be to ignore it
|
||||
this.log("on_processed_onchange can't find field " + f, result);
|
||||
console.debug("on_processed_onchange can't find field " + f, result);
|
||||
}
|
||||
}
|
||||
this.on_form_changed();
|
||||
}
|
||||
if (result.warning) {
|
||||
if (result.warning && !_.isEmpty(result.warning)) {
|
||||
$(QWeb.render("DialogWarning", result.warning)).dialog({
|
||||
modal: true,
|
||||
buttons: {
|
||||
|
@ -394,7 +400,7 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV
|
|||
model: 'ir.attachment',
|
||||
fields: ['name', 'url', 'type'],
|
||||
domain: [['res_model', '=', this.dataset.model], ['res_id', '=', this.datarecord.id], ['type', 'in', ['binary', 'url']]],
|
||||
context: this.dataset.context
|
||||
context: this.dataset.get_context()
|
||||
}, this.on_attachments_loaded);*/
|
||||
}
|
||||
},
|
||||
|
@ -437,7 +443,8 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV
|
|||
get_fields_values: function() {
|
||||
var values = {};
|
||||
_.each(this.fields, function(value, key) {
|
||||
values[key] = value.get_value();
|
||||
var val = value.get_value();
|
||||
values[key] = val;
|
||||
});
|
||||
return values;
|
||||
}
|
||||
|
@ -1298,7 +1305,7 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({
|
|||
// create...
|
||||
values.push({label: "<em> Create and Edit...</em>", action: function() {
|
||||
self._change_int_value(null);
|
||||
self._search_create_popup("form");
|
||||
self._search_create_popup("form", undefined, {"default_name": search_val});
|
||||
}});
|
||||
|
||||
response(values);
|
||||
|
@ -1437,6 +1444,7 @@ var commands = {
|
|||
}
|
||||
};
|
||||
openerp.base.form.FieldOne2Many = openerp.base.form.Field.extend({
|
||||
multi_selection: false,
|
||||
init: function(view, node) {
|
||||
this._super(view, node);
|
||||
this.template = "FieldOne2Many";
|
||||
|
@ -1464,6 +1472,7 @@ openerp.base.form.FieldOne2Many = openerp.base.form.Field.extend({
|
|||
}
|
||||
if(view.view_type === "list") {
|
||||
view.options = {
|
||||
'selectable': self.multi_selection
|
||||
};
|
||||
}
|
||||
views.push(view);
|
||||
|
@ -1585,26 +1594,31 @@ openerp.base.form.One2ManyDataSet = openerp.base.BufferedDataSet.extend({
|
|||
|
||||
openerp.base.form.One2ManyListView = openerp.base.ListView.extend({
|
||||
do_add_record: function () {
|
||||
var self = this;
|
||||
var pop = new openerp.base.form.SelectCreatePopup(null, self.o2m.view.session);
|
||||
pop.select_element(self.o2m.field.relation,{
|
||||
initial_view: "form",
|
||||
alternative_form_view: self.o2m.field.views ? self.o2m.field.views["form"] : undefined,
|
||||
auto_create: false,
|
||||
parent_view: self.o2m.view
|
||||
}, self.o2m.build_domain(), self.o2m.build_context());
|
||||
pop.on_create.add(function(data) {
|
||||
self.o2m.dataset.create(data, function(r) {
|
||||
self.o2m.dataset.set_ids(self.o2m.dataset.ids.concat([r.result]));
|
||||
self.o2m.dataset.on_change();
|
||||
pop.stop();
|
||||
self.o2m.reload_current_view();
|
||||
if (this.options.editable) {
|
||||
this._super.apply(this, arguments);
|
||||
} else {
|
||||
var self = this;
|
||||
var pop = new openerp.base.form.SelectCreatePopup(null, self.o2m.view.session);
|
||||
pop.select_element(self.o2m.field.relation,{
|
||||
initial_view: "form",
|
||||
alternative_form_view: self.o2m.field.views ? self.o2m.field.views["form"] : undefined,
|
||||
auto_create: false,
|
||||
parent_view: self.o2m.view
|
||||
}, self.o2m.build_domain(), self.o2m.build_context());
|
||||
pop.on_create.add(function(data) {
|
||||
self.o2m.dataset.create(data, function(r) {
|
||||
self.o2m.dataset.set_ids(self.o2m.dataset.ids.concat([r.result]));
|
||||
self.o2m.dataset.on_change();
|
||||
pop.stop();
|
||||
self.o2m.reload_current_view();
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
openerp.base.form.FieldMany2Many = openerp.base.form.Field.extend({
|
||||
multi_selection: false,
|
||||
init: function(view, node) {
|
||||
this._super(view, node);
|
||||
this.template = "FieldMany2Many";
|
||||
|
@ -1616,16 +1630,17 @@ openerp.base.form.FieldMany2Many = openerp.base.form.Field.extend({
|
|||
|
||||
var self = this;
|
||||
|
||||
this.dataset = new openerp.base.DataSetStatic(
|
||||
this.dataset = new openerp.base.form.Many2ManyDataSet(
|
||||
this.session, this.field.relation);
|
||||
this.dataset.m2m = this;
|
||||
this.dataset.on_unlink.add_last(function(ids) {
|
||||
//TODO niv: should check this for other cases
|
||||
self.on_ui_change();
|
||||
});
|
||||
|
||||
this.list_view = new openerp.base.form.Many2ManyListView(
|
||||
null, this.view.session, this.list_id, this.dataset, false, {
|
||||
'addable': 'Add'
|
||||
'addable': 'Add',
|
||||
'selectable': self.multi_selection
|
||||
});
|
||||
this.list_view.m2m_field = this;
|
||||
this.list_view.on_loaded.add_last(function() {
|
||||
|
@ -1647,6 +1662,18 @@ openerp.base.form.FieldMany2Many = openerp.base.form.Field.extend({
|
|||
},
|
||||
get_value: function() {
|
||||
return [commands.replace_with(this.dataset.ids)];
|
||||
},
|
||||
set_value_from_ui: function() {},
|
||||
validate: function() {
|
||||
this.invalid = false;
|
||||
// TODO niv
|
||||
}
|
||||
});
|
||||
|
||||
openerp.base.form.Many2ManyDataSet = openerp.base.DataSetStatic.extend({
|
||||
get_context: function() {
|
||||
this.context = this.m2m.build_context();
|
||||
return this.context;
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -1654,12 +1681,15 @@ openerp.base.form.Many2ManyListView = openerp.base.ListView.extend({
|
|||
do_add_record: function () {
|
||||
var pop = new openerp.base.form.SelectCreatePopup(
|
||||
null, this.m2m_field.view.session);
|
||||
pop.select_element(this.model);
|
||||
pop.select_element(this.model, {},
|
||||
new openerp.base.CompoundDomain(this.m2m_field.build_domain(), ["!", ["id", "in", this.m2m_field.dataset.ids]]),
|
||||
this.m2m_field.build_context());
|
||||
var self = this;
|
||||
pop.on_select_elements.add(function(element_ids) {
|
||||
_.each(element_ids, function(element_id) {
|
||||
if(! _.detect(self.dataset.ids, function(x) {return x == element_id;})) {
|
||||
self.dataset.set_ids([].concat(self.dataset.ids, [element_id]));
|
||||
self.m2m_field.on_ui_change();
|
||||
self.reload_content();
|
||||
}
|
||||
});
|
||||
|
@ -1669,12 +1699,13 @@ openerp.base.form.Many2ManyListView = openerp.base.ListView.extend({
|
|||
do_activate_record: function(index, id) {
|
||||
this.m2m_field.view.session.action_manager.do_action({
|
||||
"res_model": this.dataset.model,
|
||||
"views":[[false,"form"]],
|
||||
"views": [[false,"form"]],
|
||||
"res_id": id,
|
||||
"type":"ir.actions.act_window",
|
||||
"view_type":"form",
|
||||
"view_mode":"form",
|
||||
"target":"new"
|
||||
"type": "ir.actions.act_window",
|
||||
"view_type": "form",
|
||||
"view_mode": "form",
|
||||
"target": "new",
|
||||
"context": this.m2m_field.build_context()
|
||||
});
|
||||
}
|
||||
});
|
||||
|
@ -1705,7 +1736,7 @@ openerp.base.form.SelectCreatePopup = openerp.base.BaseWidget.extend({
|
|||
start: function() {
|
||||
this._super();
|
||||
this.dataset = new openerp.base.ReadOnlyDataSetSearch(this.session, this.model,
|
||||
this.context, this.domain);
|
||||
this.context);
|
||||
this.dataset.parent_view = this.options.parent_view;
|
||||
if (this.options.initial_view == "search") {
|
||||
this.setup_search_view();
|
||||
|
@ -1725,11 +1756,11 @@ openerp.base.form.SelectCreatePopup = openerp.base.BaseWidget.extend({
|
|||
});
|
||||
this.searchview.on_search.add(function(domains, contexts, groupbys) {
|
||||
if (self.initial_ids) {
|
||||
self.view_list.do_search.call(self, domains.concat([[["id", "in", self.initial_ids]]]),
|
||||
self.view_list.do_search.call(self, domains.concat([[["id", "in", self.initial_ids]], self.domain]),
|
||||
contexts, groupbys);
|
||||
self.initial_ids = undefined;
|
||||
} else {
|
||||
self.view_list.do_search.call(self, domains, contexts, groupbys);
|
||||
self.view_list.do_search.call(self, domains.concat([self.domain]), contexts, groupbys);
|
||||
}
|
||||
});
|
||||
this.searchview.on_loaded.add_last(function () {
|
||||
|
|
|
@ -275,7 +275,7 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
|
|||
return this.rpc('/base/listview/load', {
|
||||
model: this.model,
|
||||
view_id: this.view_id,
|
||||
context: this.dataset.context,
|
||||
context: this.dataset.get_context(),
|
||||
toolbar: !!this.flags.sidebar
|
||||
}, callback);
|
||||
}
|
||||
|
@ -388,7 +388,7 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
|
|||
var self = this;
|
||||
_.extend(this.dataset, {
|
||||
domain: dataset.domain,
|
||||
context: dataset.context
|
||||
context: dataset.get_context()
|
||||
}).read_slice([], 0, false, function () {
|
||||
self.select_record(index);
|
||||
});
|
||||
|
|
|
@ -467,7 +467,7 @@ openerp.base.View = openerp.base.Controller.extend({
|
|||
result : { type: 'ir.actions.act_window_close', special: action_data.special }
|
||||
});
|
||||
} else {
|
||||
var context = new openerp.base.CompoundContext(dataset.context, action_data.context || {});
|
||||
var context = new openerp.base.CompoundContext(dataset.get_context(), action_data.context || {});
|
||||
switch(action_data.type) {
|
||||
case 'object':
|
||||
return dataset.call_button(action_data.name, [[record_id], context], handler);
|
||||
|
|
|
@ -50,9 +50,6 @@
|
|||
<td colspan="2">
|
||||
<div id="oe_footer" class="oe_footer">
|
||||
<p class="oe_footer_powered">Powered by <a href="http://www.openerp.com">openerp.com</a>.</p>
|
||||
<iframe class="oe_necessary_team_song" style="height:1;" height="1"
|
||||
src="http://www.youtube.com/embed/QH2-TGUlwu4?autoplay=1"
|
||||
frameborder="0"></iframe>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -263,19 +260,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><label for="password">Password:</label></td>
|
||||
<td><input type="password" name="password"
|
||||
t-att-value="selected_password || ''"/></td>
|
||||
</tr>
|
||||
<tr t-if="has_local_storage">
|
||||
<td><label for="remember">Remember password:</label></td>
|
||||
<td class="oe_remember">
|
||||
<t t-if="remember">
|
||||
<input type="checkbox" name="remember" checked="yes"/>
|
||||
</t>
|
||||
<t t-if="!remember">
|
||||
<input type="checkbox" name="remember"/>
|
||||
</t>
|
||||
</td>
|
||||
<td><input type="password" name="password"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
|
@ -719,9 +704,9 @@
|
|||
<span class="oe-m2o-cm-button" t-att-id="widget.name + '_open'">
|
||||
<img src="/base/static/src/img/icons/gtk-index.png"/></span>
|
||||
<div t-att-id="widget.cm_id" class="contextMenu" style="display:none"><ul>
|
||||
<li t-att-id="widget.cm_id + '_search'">Search</li>
|
||||
<li t-att-id="widget.cm_id + '_create'">Create New</li>
|
||||
<li t-att-id="widget.cm_id + '_open'" style="color:grey">Open</li>
|
||||
<li t-att-id="widget.cm_id + '_search'">Search...</li>
|
||||
<li t-att-id="widget.cm_id + '_create'">Create New...</li>
|
||||
<li t-att-id="widget.cm_id + '_open'" style="color:grey">Open...</li>
|
||||
</ul></div>
|
||||
</div>
|
||||
</t>
|
||||
|
@ -981,8 +966,8 @@
|
|||
<t t-name="SearchView.extended_search.group">
|
||||
<div t-att-id="element_id" class="searchview_extended_group">
|
||||
<select class="searchview_extended_group_choice">
|
||||
<option value="all">All the following conditions must match</option>
|
||||
<option value="any">Any of the following conditions must match</option>
|
||||
<option value="all">All the following conditions must match</option>
|
||||
<option value="none">None of the following conditions must match</option>
|
||||
</select>
|
||||
<a class="searchview_extended_delete_group"
|
||||
|
@ -1064,7 +1049,9 @@
|
|||
<td>
|
||||
<p>
|
||||
<t t-js="d">
|
||||
d.html_error = context.engine.tools.html_escape(d.error.data.fault_code).replace(/\n/g, '<br/>');
|
||||
var message = d.message ? d.message : d.error.data.fault_code;
|
||||
d.html_error = context.engine.tools.html_escape(message)
|
||||
.replace(/\n/g, '<br/>');
|
||||
</t>
|
||||
<t t-raw="html_error"/>
|
||||
</p>
|
||||
|
|
|
@ -271,7 +271,7 @@ init: function(view_manager, session, element_id, dataset, view_id) {
|
|||
this.rpc(ajax, {
|
||||
model: this.dataset.model,
|
||||
domain: self.dataset.domain,
|
||||
context :self.dataset.context
|
||||
context :self.dataset.get_context()
|
||||
}, function(response) {
|
||||
ganttChartControl.clearAll();
|
||||
jQuery("#GanttDiv").children().remove();
|
||||
|
|
Loading…
Reference in New Issue