[MERGE] Merge with saas-3

bzr revid: jke@openerp.com-20140217170940-k9lb6zd31t475j93
This commit is contained in:
jke-openerp
2014-02-17 08:09:40 -09:00
9 changed files with 88 additions and 65 deletions
+5 -2
View File
@@ -1,2 +1,5 @@
sass:
sass -t expanded --compass --unix-newlines --watch base.sass:base.css&
all: *.css
%.css: %.sass
sass -t expanded --compass --unix-newlines $< $@
watch:
sass -t expanded --compass --unix-newlines --watch .:.
+15 -15
View File
@@ -78,6 +78,20 @@
.openerp td {
vertical-align: top;
}
.openerp .oe_title {
width: 50%;
float: left;
}
.openerp .oe_title:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.openerp .oe_form_group {
clear: both;
}
.openerp .zebra tbody tr:nth-child(odd) td {
background-color: #f0f0fa;
background-color: #efeff8;
@@ -1594,7 +1608,6 @@
border-radius: 0 3px 3px 0;
}
.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_category, .openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_value {
height: 18px;
padding: 0 4px;
}
.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_category {
@@ -3021,25 +3034,12 @@
font-size: 95%;
line-height: 1.2em;
}
.openerp .oe_debug_view_log label {
display: block;
width: 49%;
text-align: right;
float: left;
font-weight: bold;
color: #000099;
}
.openerp .oe_debug_view_log span {
display: block;
width: 49%;
float: right;
color: #333333;
}
.openerp .navbar {
min-height: 32px;
margin-bottom: 0px;
border: none;
z-index: 1;
position: static;
background-color: #414141;
background-color: #454343;
background-image: -webkit-gradient(linear, left top, left bottom, from(#646060), to(#262626));
+12 -13
View File
@@ -189,6 +189,17 @@ $sheet-padding: 16px
vertical-align: middle
td
vertical-align: top
.oe_title
width: 50%
float: left
.oe_title:after
content: "."
display: block
height: 0
clear: both
visibility: hidden
.oe_form_group
clear: both
.zebra tbody tr:nth-child(odd) td
background-color: #f0f0fa
@include vertical-gradient(#f0f0fa, #eeeef6)
@@ -1302,7 +1313,6 @@ $sheet-padding: 16px
background: $tag-bg-light
@include radius(0 3px 3px 0)
.oe_facet_category, .oe_facet_value
height: 18px
padding: 0 4px
.oe_facet_category
color: white
@@ -2419,18 +2429,6 @@ $sheet-padding: 16px
.oe_debug_view_log
font-size: 95%
line-height: 1.2em
.oe_debug_view_log label
display: block
width: 49%
text-align: right
float: left
font-weight: bold
color: #009
.oe_debug_view_log span
display: block
width: 49%
float: right
color: #333
// }}}
// Bootstrap HACKS {{{
.navbar
@@ -2438,6 +2436,7 @@ $sheet-padding: 16px
margin-bottom: 0px
border: none
z-index: 1
position: static
background-color: #414141
@include vertical-gradient(#646060, #262626)
.navbar-default
+2 -1
View File
@@ -872,7 +872,8 @@ instance.web.BufferedDataSet = instance.web.DataSetStatic.extend({
});
var return_records = function() {
var records = _.map(ids, function(id) {
return _.extend({}, _.detect(self.cache, function(c) {return c.id === id;}).values, {"id": id});
var c = _.find(self.cache, function(c) {return c.id === id;});
return _.isUndefined(c) ? c : _.extend({}, c.values, {"id": id});
});
if (self.debug_mode) {
if (_.include(records, undefined)) {
+1 -1
View File
@@ -414,7 +414,7 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
context: this.dataset.get_context(),
});
$.when(load_view).then(function (r) {
this.alive($.when(load_view)).then(function (r) {
return self.search_view_loaded(r);
}).fail(function () {
self.ready.reject.apply(null, arguments);
+1 -1
View File
@@ -5129,7 +5129,7 @@ instance.web.form.FieldReference = instance.web.form.AbstractField.extend(instan
.on('blurred', null, function () {self.trigger('blurred');});
this.m2o = new instance.web.form.FieldMany2One(fm, { attrs: {
name: 'm2o',
name: 'Referenced Document',
modifiers: JSON.stringify({readonly: this.get('effective_readonly')}),
}});
this.m2o.on("change:value", this, this.data_changed);
+6 -1
View File
@@ -815,6 +815,11 @@ instance.web.ViewManager = instance.web.Widget.extend({
contexts: [action_context].concat(contexts || []),
group_by_seq: groupbys || []
}).done(function (results) {
if (results.error) {
throw new Error(
_.str.sprintf(_t("Failed to evaluate search criterions")+": \n%s",
JSON.stringify(results.error)));
}
self.dataset._model = new instance.web.Model(
self.dataset.model, results.context, results.domain);
var groupby = results.group_by.length
@@ -1259,7 +1264,7 @@ instance.web.Sidebar = instance.web.Widget.extend({
this.dataset = dataset;
this.model_id = model_id;
if (args && args[0].error) {
this.do_warn( instance.web.qweb.render('message_error_uploading'), args[0].error);
this.do_warn(_t('Uploading Error'), args[0].error);
}
if (!model_id) {
this.on_attachments_loaded([]);
+26 -17
View File
@@ -536,23 +536,32 @@
</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>
<table class="table table-condensed table-striped">
<tr>
<th>ID:</th>
<td><t t-esc="perm.id"/></td>
</tr>
<tr>
<th>XML ID:</th>
<td><t t-esc="perm.xmlid or '/'"/></td>
</tr>
<tr>
<th>Creation User:</th>
<td><t t-esc="format(perm.create_uid, { 'type' : 'many2one' }, '/')"/></td>
</tr>
<tr>
<th>Creation Date:</th>
<td><t t-esc="format(perm.create_date, { 'type' : 'datetime' }, '/')"/></td>
</tr>
<tr>
<th>Latest Modification by:</th>
<td><t t-esc="format(perm.write_uid, { 'type' : 'many2one' }, '/')"/></td>
</tr>
<tr>
<th>Latest Modification Date:</th>
<td><t t-esc="format(perm.write_date, { 'type' : 'datetime' }, '/')"/></td>
</tr>
</table>
</div>
</t>
<t t-name="ViewPager">
@@ -15,7 +15,7 @@ instance.web.ViewManagerAction.include({
}
evt.currentTarget.selectedIndex = 0;
}else{
return this._super.apply(this,arguments);
return this._super.apply(this,arguments);
}
}
});
@@ -73,12 +73,10 @@ instance.web_view_editor.ViewEditor = instance.web.Widget.extend({
$.when(this.action_manager.do_action(action)).done(function() {
var viewmanager = self.action_manager.inner_widget;
var controller = viewmanager.views[viewmanager.active_view].controller;
controller.on('view_loaded', self, function(){
$(controller.groups).bind({
'selected': function(e, ids, records) {
$(controller.groups).bind({
'selected': function (e, ids, records, deselected) {
self.main_view_id = ids[0];
}
});
}
});
});
},
@@ -232,10 +230,11 @@ instance.web_view_editor.ViewEditor = instance.web.Widget.extend({
return main_object;
},
parse_xml: function(arch, view_id) {
//First element of att_list must be element tagname.
main_object = {
'level': 0,
'id': this.xml_element_id +=1,
'att_list': [],
'att_list': ["view"],
'name': _.str.sprintf("<view view_id = %s>", view_id),
'child_id': []
};
@@ -535,15 +534,22 @@ instance.web_view_editor.ViewEditor = instance.web.Widget.extend({
var field_dataset = new instance.web.DataSetSearch(this, this.model, null, null);
parent_tr = self.get_object_by_id(parseInt($(parent_tr).attr('id').replace(/[^0-9]+/g, '')), this.one_object['main_object'], [])[0].att_list[0];
_.each([tr, parent_tr],function(element) {
var value = _.has(_CHILDREN, element) ? element : _.str.include(html_tag, element)?"html_tag":false;
var value = _.has(_CHILDREN, element) ? element : _.str.include(html_tag, element)?"html_tag":false;
property_to_check.push(value);
});
field_dataset.call( 'fields_get', []).done(function(result) {
var fields = _.keys(result);
fields.push(" "),fields.sort();
self.on_add_node(property_to_check, fields);
self.on_add_node(property_to_check, fields, self.inject_position(parent_tr,tr));
});
},
inject_position : function(parent_tag,current_tag){
if(parent_tag == "view")
return ['Inside'];
if(current_tag == "field")
return ['After','Before'];
return ['After','Before','Inside'];
},
do_node_edit: function(side) {
var self = this;
var result = self.get_object_by_id(this.one_object.clicked_tr_id, this.one_object['main_object'], []);
@@ -637,12 +643,12 @@ instance.web_view_editor.ViewEditor = instance.web.Widget.extend({
var children = _.filter(xml_arch.childNodes[0].childNodes, function (child) {
return child.nodeType == 1;
});
arch.arch = _.detect(children, function(xml_child) {
var inherited_view = _.detect(children, function(xml_child) {
var temp_obj = self.create_View_Node(xml_child),
insert = _.intersection(_.flatten(temp_obj.att_list),_.uniq(check_list));
if (insert.length == _.uniq(check_list).length ) {return xml_child;}
});
xml_arch = QWeb.load_xml(arch.arch);
xml_arch = QWeb.load_xml(instance.web.xml_to_str(inherited_view));
}
return self.do_save_xml(xml_arch.documentElement, obj[0].child_id[0],obj[0].child_id, move_direct, update_values,arch);
},
@@ -941,11 +947,11 @@ instance.web_view_editor.ViewEditor = instance.web.Widget.extend({
});
return def.promise();
},
on_add_node: function(properties, fields){
on_add_node: function(properties, fields, position){
var self = this;
var render_list = [{'name': 'node_type','selection': _.keys(_CHILDREN).sort(), 'value': 'field', 'string': 'Node Type','type': 'selection'},
{'name': 'field_value','selection': fields, 'value': false, 'string': '','type': 'selection'},
{'name': 'position','selection': ['After','Before','Inside'], 'value': false, 'string': 'Position','type': 'selection'}];
{'name': 'position','selection': position, 'value': false, 'string': 'Position','type': 'selection'}];
this.add_widget = [];
this.add_node_dialog = new instance.web.Dialog(this,{
title: _t("Properties"),
@@ -1186,7 +1192,7 @@ var _CHILDREN = {
//e.g.:xyz 'td' : ['field']
};
// Generic html_tag list and can be added html tag in future. It's support above _CHILDREN dict's *html_tag* by default.
// For specific child node one has to define tag above and specify children tag in list. Like above xyz example.
// For specific child node one has to define tag above and specify children tag in list. Like above xyz example.
var html_tag = ['div','h1','h2','h3','h4','h5','h6','td','tr'];
var _ICONS = ['','STOCK_ABOUT', 'STOCK_ADD', 'STOCK_APPLY', 'STOCK_BOLD',