[MERGE] trunk
bzr revid: nicolas.vanhoren@openerp.com-20120406123856-vpw1mk9rq642ur6n bzr revid: al@openerp.com-20120406140537-z5em6fgqv8cnyj1t
This commit is contained in:
commit
eac3ebb87e
|
@ -875,13 +875,13 @@ class Menu(openerpweb.Controller):
|
|||
context = req.session.eval_context(req.context)
|
||||
Menus = req.session.model('ir.ui.menu')
|
||||
|
||||
menu_roots = Menus.read(self.do_get_user_roots(req), ['name', 'sequence', 'parent_id', 'action'], context)
|
||||
menu_roots = Menus.read(self.do_get_user_roots(req), ['name', 'sequence', 'parent_id', 'action', 'needaction_enabled', 'needaction_counter'], context)
|
||||
menu_root = {'id': False, 'name': 'root', 'parent_id': [-1, ''], 'children' : menu_roots}
|
||||
|
||||
# menus are loaded fully unlike a regular tree view, cause there are a
|
||||
# limited number of items (752 when all 6.1 addons are installed)
|
||||
menu_ids = Menus.search([], 0, False, False, context)
|
||||
menu_items = Menus.read(menu_ids, ['name', 'sequence', 'parent_id', 'action'], context)
|
||||
menu_items = Menus.read(menu_ids, ['name', 'sequence', 'parent_id', 'action', 'needaction_enabled', 'needaction_counter'], context)
|
||||
# adds roots at the end of the sequence, so that they will overwrite
|
||||
# equivalent menu items from full menu read when put into id:item
|
||||
# mapping, resulting in children being correctly set on the roots.
|
||||
|
|
|
@ -479,6 +479,19 @@
|
|||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
.openerp2 .oe_secondary_submenu .oe_menu_counter {
|
||||
float: right;
|
||||
background: #8a89ba;
|
||||
color: #eeeeee;
|
||||
font-size: 12px;
|
||||
border: 1px solid lightgray;
|
||||
padding: 0px 4px 0px 4px;
|
||||
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
|
||||
margin: 0px;
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.openerp2 .oe_secondary_submenu .oe_active {
|
||||
background: #8a89ba;
|
||||
border-top: 1px solid lightGray;
|
||||
|
@ -499,6 +512,10 @@
|
|||
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
.openerp2 .oe_secondary_submenu .oe_active .oe_menu_counter {
|
||||
background: #eeeeee;
|
||||
color: #8a89ba;
|
||||
}
|
||||
.openerp2 .oe_secondary_submenu .oe_menu_toggler:before {
|
||||
width: 0;
|
||||
height: 0;
|
||||
|
|
|
@ -401,6 +401,16 @@ $colour4: #8a89ba
|
|||
text-shadow: 0 1px 1px rgba(0,0,0,0.2)
|
||||
@include radius(4px)
|
||||
@include box-shadow(inset 0 1px 1px rgba(0, 0, 0, 0.2))
|
||||
.oe_menu_counter
|
||||
float: right
|
||||
background: #8a89ba
|
||||
color: #eee
|
||||
font-size: 12px
|
||||
border: 1px solid lightgray
|
||||
padding: 0px 4px 0px 4px
|
||||
text-shadow: 0 1px 1px rgba(0,0,0,0.2)
|
||||
margin: 0px
|
||||
@include radius(4px)
|
||||
.oe_active
|
||||
background: $colour4
|
||||
border-top: 1px solid lightGray
|
||||
|
@ -414,6 +424,9 @@ $colour4: #8a89ba
|
|||
color: $colour4
|
||||
text-shadow: 0 1px 1px white
|
||||
@include box-shadow(0 1px 1px rgba(0, 0, 0, 0.2))
|
||||
.oe_menu_counter
|
||||
background: #eee
|
||||
color: #8a89ba
|
||||
.oe_menu_toggler:before
|
||||
width: 0
|
||||
height: 0
|
||||
|
|
|
@ -1258,45 +1258,6 @@ label.error {
|
|||
text-decoration: underline;
|
||||
color: inherit;
|
||||
}
|
||||
.openerp .oe-view-manager-logs {
|
||||
clear: both;
|
||||
background: #fff;
|
||||
margin: 0.25em 0;
|
||||
font-size: 85%;
|
||||
color: #4C4C4C;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
.openerp .oe-view-manager-logs ul {
|
||||
margin: 0;
|
||||
padding: 0 10px;
|
||||
list-style: none;
|
||||
}
|
||||
.openerp .oe-view-manager-logs li:before {
|
||||
content: '\2192 ';
|
||||
}
|
||||
.openerp .oe-view-manager-logs a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
/* only display first three log items of a folded logs list */
|
||||
.openerp .oe-view-manager-logs.oe-folded li:nth-child(n+4) {
|
||||
display: none;
|
||||
}
|
||||
/* display link to more logs if there are more logs to view and the logview is
|
||||
currently folded */
|
||||
.openerp .oe-view-manager-logs a.oe-more-logs {
|
||||
display: none;
|
||||
}
|
||||
.openerp .oe-view-manager-logs.oe-folded.oe-has-more a.oe-more-logs {
|
||||
display: block;
|
||||
}
|
||||
.openerp .oe-view-manager-logs a.oe-remove-everything {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.openerp .view-manager-main-sidebar {
|
||||
width: 180px;
|
||||
|
|
|
@ -2502,6 +2502,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.AbstractField.extend({
|
|||
disable_utility_classes: true,
|
||||
init: function(view, node) {
|
||||
this._super(view, node);
|
||||
lazy_build_o2m_kanban_view();
|
||||
this.is_loaded = $.Deferred();
|
||||
this.initial_is_loaded = this.is_loaded;
|
||||
this.is_setted = $.Deferred();
|
||||
|
@ -2579,7 +2580,8 @@ openerp.web.form.FieldOne2Many = openerp.web.form.AbstractField.extend({
|
|||
this.viewmanager.registry = openerp.web.views.extend({
|
||||
list: 'openerp.web.form.One2ManyListView',
|
||||
form: 'openerp.web.form.One2ManyFormView',
|
||||
page: 'openerp.web.PageView'
|
||||
page: 'openerp.web.PageView',
|
||||
kanban: 'openerp.web.form.One2ManyKanbanView',
|
||||
});
|
||||
var once = $.Deferred().then(function() {
|
||||
self.init_form_last_update.resolve();
|
||||
|
@ -2588,8 +2590,8 @@ openerp.web.form.FieldOne2Many = openerp.web.form.AbstractField.extend({
|
|||
self.initial_is_loaded.resolve();
|
||||
});
|
||||
this.viewmanager.on_controller_inited.add_last(function(view_type, controller) {
|
||||
controller.o2m = self;
|
||||
if (view_type == "list") {
|
||||
controller.o2m = self;
|
||||
if (self.get("effective_readonly"))
|
||||
controller.set_editable(false);
|
||||
} else if (view_type == "form" || view_type == 'page') {
|
||||
|
@ -2636,7 +2638,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.AbstractField.extend({
|
|||
};
|
||||
self.form_last_update = self.form_last_update.pipe(act, act);
|
||||
return self.form_last_update;
|
||||
} else if (active_view === "graph") {
|
||||
} else if (view.do_search) {
|
||||
return view.do_search(self.build_domain(), self.dataset.get_context(), []);
|
||||
}
|
||||
}, undefined);
|
||||
|
@ -2862,6 +2864,35 @@ openerp.web.form.One2ManyFormView = openerp.web.FormView.extend({
|
|||
}
|
||||
});
|
||||
|
||||
var lazy_build_o2m_kanban_view = function() {
|
||||
if (! openerp.web_kanban || openerp.web.form.One2ManyKanbanView)
|
||||
return;
|
||||
openerp.web.form.One2ManyKanbanView = openerp.web_kanban.KanbanView.extend({
|
||||
open_record: function(id) {
|
||||
var self = this;
|
||||
var pop = new openerp.web.form.FormOpenPopup(self.o2m.view);
|
||||
pop.show_element(self.o2m.field.relation, id, self.o2m.build_context(), {
|
||||
title: _t("Open: ") + self.name,
|
||||
auto_write: false,
|
||||
alternative_form_view: self.o2m.field.views ? self.o2m.field.views["form"] : undefined,
|
||||
parent_view: self.o2m.view,
|
||||
child_name: self.o2m.name,
|
||||
read_function: function() {
|
||||
return self.o2m.dataset.read_ids.apply(self.o2m.dataset, arguments);
|
||||
},
|
||||
form_view_options: {'not_interactible_on_create':true},
|
||||
readonly: self.o2m.get("effective_readonly"),
|
||||
});
|
||||
pop.on_write.add(function(id, data) {
|
||||
self.o2m.dataset.write(id, data, {}, function(r) {
|
||||
self.o2m.reload_current_view();
|
||||
});
|
||||
});
|
||||
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* TODO niv: clean those deferred stuff, it could be better
|
||||
*/
|
||||
|
|
|
@ -548,17 +548,6 @@ session.web.ViewManagerAction = session.web.ViewManager.extend(/** @lends oepner
|
|||
}
|
||||
}
|
||||
|
||||
var $res_logs = this.$element.find('.oe-view-manager-logs:first');
|
||||
$res_logs.delegate('a.oe-more-logs', 'click', function () {
|
||||
$res_logs.removeClass('oe-folded');
|
||||
return false;
|
||||
}).delegate('a.oe-remove-everything', 'click', function () {
|
||||
$res_logs.removeClass('oe-has-more').find('ul').empty();
|
||||
$res_logs.css('display','none');
|
||||
return false;
|
||||
});
|
||||
$res_logs.css('display','none');
|
||||
|
||||
return manager_ready;
|
||||
},
|
||||
on_debug_changed: function (evt) {
|
||||
|
@ -662,8 +651,6 @@ session.web.ViewManagerAction = session.web.ViewManager.extend(/** @lends oepner
|
|||
return $.when(this._super(view_type, no_store)).then(function () {
|
||||
self.shortcut_check(self.views[view_type]);
|
||||
|
||||
self.$element.find('.oe-view-manager-logs:first').addClass('oe-folded').removeClass('oe-has-more').css('display','none').find('ul').empty();
|
||||
|
||||
var controller = self.views[self.active_view].controller,
|
||||
fvg = controller.fields_view,
|
||||
view_id = (fvg && fvg.view_id) || '--';
|
||||
|
@ -745,43 +732,6 @@ session.web.ViewManagerAction = session.web.ViewManager.extend(/** @lends oepner
|
|||
}
|
||||
});
|
||||
},
|
||||
/**
|
||||
* Intercept do_action resolution from children views
|
||||
*/
|
||||
on_action_executed: function () {
|
||||
return new session.web.DataSet(this, 'res.log')
|
||||
.call('get', [], this.do_display_log);
|
||||
},
|
||||
/**
|
||||
* @param {Array<Object>} log_records
|
||||
*/
|
||||
do_display_log: function (log_records) {
|
||||
var self = this;
|
||||
var cutoff = 3;
|
||||
var $logs = this.$element.find('.oe-view-manager-logs:first').addClass('oe-folded').css('display', 'block');
|
||||
var $logs_list = $logs.find('ul').empty();
|
||||
$logs.toggleClass('oe-has-more', log_records.length > cutoff);
|
||||
_(log_records.reverse()).each(function (record) {
|
||||
var context = {};
|
||||
if (record.context) {
|
||||
try { context = py.eval(record.context); }
|
||||
catch (e) { /* TODO: what do I do now? */ }
|
||||
}
|
||||
$(_.str.sprintf('<li><a href="#">%s</a></li>', record.name))
|
||||
.appendTo($logs_list)
|
||||
.delegate('a', 'click', function () {
|
||||
self.do_action({
|
||||
type: 'ir.actions.act_window',
|
||||
res_model: record.res_model,
|
||||
res_id: record.res_id,
|
||||
// TODO: need to have an evaluated context here somehow
|
||||
context: context,
|
||||
views: [[context.view_id || false, 'form']]
|
||||
});
|
||||
return false;
|
||||
});
|
||||
});
|
||||
},
|
||||
display_title: function () {
|
||||
return this.action.name;
|
||||
}
|
||||
|
@ -1093,10 +1043,10 @@ session.web.View = session.web.Widget.extend(/** @lends session.web.View# */{
|
|||
},
|
||||
load_view: function() {
|
||||
if (this.embedded_view) {
|
||||
var def = $.Deferred().pipe(this.on_loaded);
|
||||
var def = $.Deferred();
|
||||
var self = this;
|
||||
$.async_when().then(function() {def.resolve(self.embedded_view);});
|
||||
return def.promise();
|
||||
return def.pipe(this.on_loaded);
|
||||
} else {
|
||||
var context = new session.web.CompoundContext(this.dataset.get_context());
|
||||
if (! this.view_type)
|
||||
|
|
|
@ -373,6 +373,11 @@
|
|||
t-att-data-action-model="menu.action ? menu.action.split(',')[0] : ''"
|
||||
t-att-data-action-id="menu.action ? menu.action.split(',')[1] : ''">
|
||||
<t t-esc="menu.name"/>
|
||||
<t t-if="menu.needaction_enabled">
|
||||
<div class="oe_menu_counter">
|
||||
<t t-esc="menu.needaction_counter"/>
|
||||
</div>
|
||||
</t>
|
||||
</a>
|
||||
</t>
|
||||
|
||||
|
@ -457,13 +462,6 @@
|
|||
<t t-jquery="h2.oe_view_title" t-operation="after">
|
||||
<select t-if="self.session.debug" class="oe_debug_view"/>
|
||||
</t>
|
||||
<t t-jquery=".oe-view-manager-header" t-operation="after">
|
||||
<div class="oe-view-manager-logs oe-folded">
|
||||
<ul></ul>
|
||||
<a class="oe-more-logs" href="#">More…</a>
|
||||
<a class="oe-remove-everything ui-icon ui-icon-closethick"/>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
<t t-name="ViewManagerDebug">
|
||||
<option value="">Debug View#<t t-esc="view.fields_view.view_id"/></option>
|
||||
|
|
|
@ -250,7 +250,14 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({
|
|||
do_show: function() {
|
||||
this.do_push_state({});
|
||||
return this._super();
|
||||
}
|
||||
},
|
||||
open_record: function(id) {
|
||||
if (this.dataset.select_id(id)) {
|
||||
this.do_switch_view('form');
|
||||
} else {
|
||||
this.do_warn("Kanban: could not find id#" + id);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
openerp.web_kanban.KanbanGroup = openerp.web.OldWidget.extend({
|
||||
|
@ -473,11 +480,7 @@ openerp.web_kanban.KanbanRecord = openerp.web.OldWidget.extend({
|
|||
self.view.form_dialog.open();
|
||||
});
|
||||
} else {
|
||||
if (self.view.dataset.select_id(this.id)) {
|
||||
this.view.do_switch_view('form');
|
||||
} else {
|
||||
this.do_warn("Kanban: could not find id#" + id);
|
||||
}
|
||||
this.view.open_record(this.id);
|
||||
}
|
||||
},
|
||||
do_action_color: function($action) {
|
||||
|
|
Loading…
Reference in New Issue