[IMP] opportunity CSS

bzr revid: fp@tinyerp.com-20120601153211-ctugrclqh2z26qck
This commit is contained in:
Fabien Pinckaers 2012-06-01 17:32:11 +02:00
commit 75f18a1402
5 changed files with 321 additions and 281 deletions

View File

@ -1,4 +1,4 @@
@charset "UTF-8";
@charset "utf-8";
@font-face {
font-family: "mnmliconsRegular";
src: url("/web/static/src/font/mnmliconsv21-webfont.eot") format("eot");
@ -34,7 +34,7 @@
background: white;
/* http://www.quirksmode.org/dom/inputfile.html
* http://stackoverflow.com/questions/2855589/replace-input-type-file-by-an-image
*/
*/ */
}
.openerp a {
text-decoration: none;
@ -1554,7 +1554,8 @@
.openerp .oe_form_button_save_dirty:hover {
background: #ed6f6a;
}
.openerp .oe_form_topbar {
.openerp header {
position: relative;
border-bottom: 1px solid #cacaca;
background-color: #fcfcfc;
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede));
@ -1566,7 +1567,7 @@
padding: 0 8px;
line-height: 30px;
}
.openerp .oe_form_topbar button {
.openerp header button {
font-size: 12px;
height: 24px !important;
line-height: 24px;
@ -1574,11 +1575,11 @@
padding: 0 10px;
margin: 3px 4px 3px 0;
}
.openerp .oe_form_topbar button span.i {
.openerp header button span.i {
line-height: 20px;
height: 24px;
}
.openerp .oe_form_topbar ul {
.openerp header ul {
height: 30px;
padding: 0;
margin: 0;
@ -1586,7 +1587,7 @@
border-left: 1px solid #cacaca;
border-right: 1px solid #cacaca;
}
.openerp .oe_form_topbar ul li {
.openerp header ul li {
padding: 0;
margin: 0;
float: left;
@ -1595,35 +1596,40 @@
height: 30px;
padding: 0 12px;
}
.openerp .oe_form_topbar ul li:first-child {
.openerp header ul li:first-child {
border-left: 1px solid #cacaca;
}
.openerp .oe_form_topbar ul li a {
.openerp header ul li a {
color: #4c4c4c;
}
.openerp .oe_form_topbar ul li a:hover {
.openerp header ul li a:hover {
color: black;
}
.openerp .oe_form_topbar .oe_form_steps img {
.openerp header .oe_form_steps {
display: inline-block;
position: absolute;
right: 0;
}
.openerp header .oe_form_steps img {
margin: 0 8px;
vertical-align: top;
}
.openerp .oe_form_topbar .oe_form_steps li {
.openerp header .oe_form_steps li {
border-right: none;
padding: 0;
}
.openerp .oe_form_topbar .oe_form_steps li:first-child {
.openerp header .oe_form_steps li:first-child {
margin-left: 12px;
border-left: none;
}
.openerp .oe_form_topbar .oe_form_steps li:last-child {
.openerp header .oe_form_steps li:last-child {
margin-right: 12px;
}
.openerp .oe_form_topbar .oe_form_steps_active {
.openerp header .oe_form_steps_active {
font-weight: bold;
color: #b33630;
}
.openerp .oe_form_topbar.oe_form_topbar_hifirst button:first-child, .openerp button.oe_form_button_hi {
.openerp header.oe_form_topbar_hifirst button:first-child, .openerp button.oe_form_button_hi {
color: white;
background: #dc5f59;
background: -moz-linear-gradient(#dc5f59, #b33630);
@ -1633,7 +1639,7 @@
-webkit-box-shadow: none;
-box-shadow: none;
}
.openerp .oe_form_topbar.oe_form_topbar_hifirst button:first-child:hover, .openerp button.oe_form_button_hi:hover {
.openerp header.oe_form_topbar_hifirst button:first-child:hover, .openerp button.oe_form_button_hi:hover {
background: #df6b66;
background: -moz-linear-gradient(#df6b66, #bf3a33);
background: -webkit-gradient(linear, left top, left bottom, from(#df6b66), to(#bf3a33));
@ -1647,7 +1653,7 @@
padding: 8px 0;
border-bottom: 1px solid #dddddd;
}
.openerp .oe_application .oe_form_sheet_width, .openerp .oe_application .oe_form_bottom {
.openerp .oe_application .oe_form_sheet_width, .openerp .oe_application footer {
min-width: 650px;
max-width: 980px;
margin: 0 auto;
@ -1661,6 +1667,19 @@
-webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
}
.openerp .oe_form_editable .oe_form_editable_hidden {
display: none;
}
.openerp .oe_form_readonly .oe_form_readonly_hidden {
display: none;
}
.openerp .oe_form .oe_form_field_text,
.openerp .oe_form .oe_form_field_char {
width: 100%;
}
.openerp .oe_form .oe_form_inline {
width: auto;
}
.openerp .oe_form .oe_form_group_cell {
line-height: 18px;
padding: 2px;
@ -1676,12 +1695,21 @@
.openerp .oe_form .oe_form_group_cell > .oe_form_field_url input,
.openerp .oe_form .oe_form_group_cell > .oe_form_field_float input,
.openerp .oe_form .oe_form_group_cell > .oe_form_field_selection select,
.openerp .oe_form .oe_form_group_cell > div > .oe_datepicker_root,
.openerp .oe_form .oe_form_group_cell > div > .oe_datepicker_root > input.oe_datepicker_master {
.openerp .oe_form .oe_form_group_cell > .oe_form_field_progressbar,
.openerp .oe_form .oe_form_group_cell > span > .oe_datepicker_root,
.openerp .oe_form .oe_form_group_cell > span > .oe_datepicker_root > input.oe_datepicker_master {
width: 100%;
}
.openerp .oe_form .oe_form_group_cell.oe_form_group_nested {
padding: 0;
.openerp .oe_form h1, .openerp .oe_form h2, .openerp .oe_form h3, .openerp .oe_form h4, .openerp .oe_form h5, .openerp .oe_form h6 {
margin: 0 0 4px 0;
width: 55%;
}
.openerp .oe_form h1 input, .openerp .oe_form h2 input, .openerp .oe_form h3 input, .openerp .oe_form h4 input, .openerp .oe_form h5 input, .openerp .oe_form h6 input {
height: inherit !important;
font-size: inherit;
}
.openerp .oe_form h1 input {
width: 100%;
}
.openerp .oe_form .oe_form_label_help[for], .openerp .oe_form .oe_form_label[for] {
font-weight: bold;
@ -1698,6 +1726,7 @@
}
.openerp .oe_form textarea {
resize: vertical;
width: 100%;
}
.openerp .oe_form input[type="text"],
.openerp .oe_form input[type="password"],
@ -1768,8 +1797,11 @@
.openerp .oe_form .oe_form_field_boolean {
padding-top: 4px;
}
.openerp .oe_form .oe_form_field_date input {
width: 7em;
}
.openerp .oe_form .oe_form_field_datetime input {
min-width: 11em;
width: 11em;
}
.openerp .oe_form .oe_form_field_many2manytags .text-wrap {
width: 100% !important;
@ -1808,17 +1840,6 @@
background-color: #ff6666 !important;
border: 1px solid #dd0000 !important;
}
.openerp .oe_form .oe_button.oe_field_button {
display: block;
-webkit-border-top-left-radius: 0px;
-webkit-border-bottom-left-radius: 0px;
-moz-border-radius-topleft: 0px;
-moz-border-radius-bottomleft: 0px;
border-top-left-radius: 0px;
border-bottom-left-radius: 0px;
margin-right: -1px;
height: 22px;
}
.openerp .oe_form .oe_input_icon {
cursor: pointer;
margin: 3px 0 0 -21px;
@ -1835,6 +1856,38 @@
.openerp .oe_form .oe_form_group_cell .oe_kanban_view {
position: static;
}
.openerp .oe_form .oe_form_field_with_button {
display: inline-block;
}
.openerp .oe_form .oe_form_field_with_button > .oe_button {
float: right;
-webkit-border-top-left-radius: 0px;
-webkit-border-bottom-left-radius: 0px;
-moz-border-radius-topleft: 0px;
-moz-border-radius-bottomleft: 0px;
border-top-left-radius: 0px;
border-bottom-left-radius: 0px;
margin-right: -1px;
height: 22px;
}
.openerp .oe_form .oe_form_field_with_button > div {
position: relative;
overflow: hidden;
}
.openerp .oe_form .oe_form_field_with_button > div > input {
line-height: 23px;
margin-right: 0;
}
.openerp .oe_form .oe_form_button_box {
width: 200px;
text-align: center;
}
.openerp .oe_form .oe_form_group {
margin: 5px 0px 5px 0px;
}
.openerp .oe_form .oe_form_group_cell .oe_kanban_view {
position: static;
}
.openerp .oe_form .oe_form_button.oe_button {
height: 22px;
color: #4c4c4c;
@ -1856,6 +1909,7 @@
.openerp .oe_form .oe-binary-file-set {
overflow: hidden;
position: relative;
display: inline-block;
width: 45px;
height: 30px;
}
@ -1872,6 +1926,9 @@
margin: 0;
padding: 0;
}
.openerp .oe_form .oe_binary_image {
display: inline-block;
}
.openerp .oe_horizontal_border {
border-bottom: 1px solid black;
}
@ -1944,6 +2001,10 @@
.openerp .ui-tabs-hide {
display: none;
}
.openerp .oe_form .oe_form_field_progressbar {
display: inline-block;
min-width: 70px;
}
.openerp .oe_form .oe_form_field_progressbar.ui-progressbar {
height: 22px;
font-size: 10px;
@ -1984,22 +2045,14 @@
.openerp .oe-select-create-popup-view-form > .oe_formview > .oe_form_pager {
display: none;
}
.openerp .oe_form .oe_form_title, .openerp .oe_form .oe_form_title input {
font-size: 20px;
font-weight: bold;
height: 30px;
}
.openerp .oe_form .oe_form_group_odd_border > tbody > tr.oe_form_group_row > td.oe_form_group_cell:nth-child(odd),
.openerp .oe_form .oe_form_group_label_border > tbody > tr.oe_form_group_row > td.oe_form_group_cell_label {
.openerp .oe_form td.oe_form_group_cell_label {
border-right: 1px solid #dddddd;
}
.openerp .oe_form .oe_form_group_odd_border > tbody > tr.oe_form_group_row > td.oe_form_group_cell:nth-child(odd) label,
.openerp .oe_form .oe_form_group_label_border > tbody > tr.oe_form_group_row > td.oe_form_group_cell_label label {
.openerp .oe_form td.oe_form_group_cell_label label {
display: block;
min-width: 120px;
}
.openerp .oe_form .oe_form_group_odd_border > tbody > tr.oe_form_group_row > td.oe_form_group_cell,
.openerp .oe_form .oe_form_group_label_border > tbody > tr.oe_form_group_row > td.oe_form_group_cell {
.openerp .oe_form td.oe_form_group_cell_label + .oe_form_group_cell {
padding-left: 8px;
}
.openerp .oe_form .oe_form_subtotal_footer {
@ -2090,7 +2143,7 @@
.openerp .oe-listview-content > tbody > tr > td.oe_list_checkbox:first-child:after, .openerp .oe-listview-content > tbody > tr th.oe_list_checkbox:first-child:after {
border-width: 0;
}
.openerp .oe-listview-content > tbody > tr > td.oe-number {
.openerp .oe-listview-content > tbody > tr > td.oe_number {
text-align: right !important;
}
.openerp .oe-listview-content > tbody > tr:nth-child(odd) {

View File

@ -1231,7 +1231,8 @@ $colour4: #8a89ba
background: #ED6F6A
// }}}
// FormView.customdivs {{{
.oe_form_topbar
header
position: relative
border-bottom: 1px solid #cacaca
@include vertical-gradient(#fcfcfc, #dedede)
padding: 0 8px
@ -1268,10 +1269,13 @@ $colour4: #8a89ba
&:hover
color: black
.oe_form_steps
img
display: inline-block
position: absolute
right: 0
img
margin: 0 8px
vertical-align: top
li
li
border-right: none
padding: 0
&:first-child
@ -1282,7 +1286,7 @@ $colour4: #8a89ba
.oe_form_steps_active
font-weight: bold
color: #b33630
.oe_form_topbar.oe_form_topbar_hifirst button:first-child, button.oe_form_button_hi
header.oe_form_topbar_hifirst button:first-child, button.oe_form_button_hi
color: white
background: #DC5F59
background: -moz-linear-gradient(#DC5F59, #B33630)
@ -1291,7 +1295,7 @@ $colour4: #8a89ba
-moz-box-shadow: none
-webkit-box-shadow: none
-box-shadow: none
.oe_form_topbar.oe_form_topbar_hifirst button:first-child:hover, button.oe_form_button_hi:hover
header.oe_form_topbar_hifirst button:first-child:hover, button.oe_form_button_hi:hover
background: #DF6B66
background: -moz-linear-gradient( #DF6B66, #BF3A33)
background: -webkit-gradient(linear, left top, left bottom, from( #DF6B66), to( #BF3A33))
@ -1304,7 +1308,7 @@ $colour4: #8a89ba
background: url(/web/static/src/img/form_sheetbg.png)
padding: 8px 0
border-bottom: 1px solid #ddd
.oe_form_sheet_width, .oe_form_bottom
.oe_form_sheet_width, footer
min-width: 650px
max-width: 980px
margin: 0 auto
@ -1316,7 +1320,15 @@ $colour4: #8a89ba
@include box-shadow(0 0 10px rgba(0,0,0,0.3))
// }}}
// FormView.layout {{{
.oe_form_editable .oe_form_editable_hidden
display: none
.oe_form_readonly .oe_form_readonly_hidden
display: none
.oe_form
.oe_form_field_text
width: 100%
.oe_form_inline
width: auto
.oe_form_group_cell
line-height: 18px
padding: 2px
@ -1331,11 +1343,19 @@ $colour4: #8a89ba
.oe_form_group_cell > .oe_form_field_url input,
.oe_form_group_cell > .oe_form_field_float input,
.oe_form_group_cell > .oe_form_field_selection select,
.oe_form_group_cell > div > .oe_datepicker_root,
.oe_form_group_cell > div > .oe_datepicker_root > input.oe_datepicker_master
.oe_form_group_cell > .oe_form_field_progressbar,
.oe_form_group_cell > span > .oe_datepicker_root,
.oe_form_group_cell > span > .oe_datepicker_root > input.oe_datepicker_master
width: 100%
.oe_form_group_cell.oe_form_group_nested
padding: 0
h1, h2, h3, h4, h5, h6
margin: 0 0 4px 0
width: 55%
input
height: inherit !important
font-size: inherit
h1 input
width: 100%
// }}}
// FormView.label {{{
.oe_form
@ -1355,6 +1375,7 @@ $colour4: #8a89ba
.oe_form
textarea
resize: vertical
width: 100%
input[type="text"],
input[type="password"],
input[type="file"],
@ -1412,8 +1433,10 @@ $colour4: #8a89ba
white-space: nowrap
.oe_form_field_boolean
padding-top: 4px
.oe_form_field_date input
width: 7em
.oe_form_field_datetime input
min-width: 11em
width: 11em
.oe_form_field_many2manytags
.text-wrap
width: 100% !important
@ -1446,16 +1469,6 @@ $colour4: #8a89ba
input, select, textarea
background-color: #F66 !important
border: 1px solid #D00 !important
.oe_button.oe_field_button
display: block
-webkit-border-top-left-radius: 0px
-webkit-border-bottom-left-radius: 0px
-moz-border-radius-topleft: 0px
-moz-border-radius-bottomleft: 0px
border-top-left-radius: 0px
border-bottom-left-radius: 0px
margin-right: -1px
height: 22px
.oe_input_icon
cursor: pointer
margin: 3px 0 0 -21px
@ -1470,6 +1483,35 @@ $colour4: #8a89ba
.oe_form_group_cell .oe_kanban_view
// Hack due to absolute positioning of kanban view messing with o2m
position: static
.oe_form_field_with_button
display: inline-block
> .oe_button
float: right
-webkit-border-top-left-radius: 0px
-webkit-border-bottom-left-radius: 0px
-moz-border-radius-topleft: 0px
-moz-border-radius-bottomleft: 0px
border-top-left-radius: 0px
border-bottom-left-radius: 0px
margin-right: -1px
height: 22px
> div
position: relative
overflow: hidden
> input
line-height: 23px
margin-right: 0
.oe_form_button_box
width: 200px
text-align: center
.oe_form_group
margin: 5px 0px 5px 0px
.oe_form_group_cell .oe_kanban_view
// Hack due to absolute positioning of kanban view messing with o2m
position: static
// }}}
// FormView.buttons {{{
.oe_form
@ -1496,6 +1538,7 @@ $colour4: #8a89ba
.oe-binary-file-set
overflow: hidden
position: relative
display: inline-block
width: 45px
height: 30px
input.oe-binary-file
@ -1511,6 +1554,8 @@ $colour4: #8a89ba
-ms-filter: "alpha(opacity=0)"
margin: 0
padding: 0
.oe_binary_image
display: inline-block
// }}}
// FormView.separator {{{
.oe_horizontal_border
@ -1573,6 +1618,9 @@ $colour4: #8a89ba
// }}}
// FormView.progressbar {{{
.oe_form
.oe_form_field_progressbar
display: inline-block
min-width: 70px
.oe_form_field_progressbar.ui-progressbar
height: 22px
font-size: 10px
@ -1615,18 +1663,12 @@ $colour4: #8a89ba
// }}}
// FormView.classes for openerp views {{{
.oe_form
.oe_form_title, .oe_form_title input
font-size: 20px
font-weight: bold
height: 30px
.oe_form_group_odd_border > tbody > tr.oe_form_group_row > td.oe_form_group_cell:nth-child(odd),
.oe_form_group_label_border > tbody > tr.oe_form_group_row > td.oe_form_group_cell_label
td.oe_form_group_cell_label
border-right: 1px solid #ddd
label
display: block
min-width: 120px
.oe_form_group_odd_border > tbody > tr.oe_form_group_row > td.oe_form_group_cell,
.oe_form_group_label_border > tbody > tr.oe_form_group_row > td.oe_form_group_cell
td.oe_form_group_cell_label + .oe_form_group_cell
padding-left: 8px
.oe_form_subtotal_footer
float: right
@ -1702,7 +1744,7 @@ $colour4: #8a89ba
width: 17px
&:after
border-width: 0
> td.oe-number
> td.oe_number
text-align: right !important
> tr:nth-child(odd)
background-color: #f0f0fa

View File

@ -521,6 +521,7 @@ instance.web.FormView = instance.web.View.extend(_.extend({}, instance.web.form.
switch_mode: function() {
var self = this;
if(this.get("mode") == "view") {
self.$element.removeClass('oe_form_editable').addClass('oe_form_readonly');
self.$buttons.find('.oe_form_buttons_edit').hide();
self.$buttons.find('.oe_form_buttons_view').show();
self.$sidebar.show();
@ -528,6 +529,7 @@ instance.web.FormView = instance.web.View.extend(_.extend({}, instance.web.form.
field.set({"force_readonly": true});
});
} else {
self.$element.removeClass('oe_form_readonly').addClass('oe_form_editable');
self.$buttons.find('.oe_form_buttons_edit').show();
self.$buttons.find('.oe_form_buttons_view').hide();
self.$sidebar.hide();
@ -919,9 +921,6 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt
// but one day, we will have to get rid of xml2json
var xml = instance.web.json_node_to_xml(this.fvg.arch);
this.$form = $('<div class="oe_form">' + xml + '</div>');
if (this.fvg.arch.attrs && this.fvg.arch.attrs['layout'] !== 'manual') {
this.$form.attr('layout', 'auto');
}
this.fields_to_init = [];
this.tags_to_init = [];
@ -953,16 +952,13 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt
var obj = self.tags_registry.get_object(tag_name);
var w = new (obj)(self.view, instance.web.xml_to_json($elem[0]));
w.replace($elem);
})
});
// TODO: return a deferred
},
render_element: function(template, layout/* dictionaries */) {
var dicts = [].slice.call(arguments).slice(2);
dicts.unshift({ 'layout' : layout });
render_element: function(template /* dictionaries */) {
var dicts = [].slice.call(arguments).slice(1);
var dict = _.extend.apply(_, dicts);
dict['classnames'] = dict['class'] || ''; // class is a reserved word and might caused problem to Safari when used from QWeb
var alt_template = template + '.' + layout;
template = QWeb.has_template(alt_template) ? alt_template : template;
return $(QWeb.render(template, dict));
},
alter_field: function(field) {
@ -977,10 +973,8 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt
}
this.$target.toggleClass('oe_layout_debugging');
},
process: function($tag, layout) {
process: function($tag) {
var self = this;
layout = $tag.attr('layout') || layout || 'auto';
$tag.removeAttr('layout');
var tagname = $tag[0].nodeName.toLowerCase();
if (this.tags_registry.contains(tagname)) {
this.tags_to_init.push($tag);
@ -990,39 +984,42 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt
if (fn) {
var args = [].slice.call(arguments);
args[0] = $tag;
args[1] = layout;
return fn.apply(self, args);
} else {
// generic tag handling, just process children
$tag.children().each(function() {
self.process($(this), layout);
self.process($(this));
});
self.handle_common_properties($tag, $tag);
$tag.removeAttr("modifiers");
return $tag;
}
},
process_sheet: function($sheet, layout) {
var $new_sheet = this.render_element('FormRenderingSheet', layout, $sheet.getAttributes());
process_sheet: function($sheet) {
var $new_sheet = this.render_element('FormRenderingSheet', $sheet.getAttributes());
this.handle_common_properties($new_sheet, $sheet);
var $dst = (layout === 'auto') ? $new_sheet.find('group:first') : $new_sheet.find('.oe_form_sheet');
$sheet.children().appendTo($dst);
var $dst = $new_sheet.find('.oe_form_sheet');
$sheet.contents().appendTo($dst);
$sheet.before($new_sheet).remove();
this.process($new_sheet, layout);
this.process($new_sheet);
},
process_form: function($form, layout) {
var $new_form = this.render_element('FormRenderingForm', layout, $form.getAttributes());
process_form: function($form) {
var $new_form = this.render_element('FormRenderingForm', $form.getAttributes());
this.handle_common_properties($new_form, $form);
var $dst = (layout === 'auto') ? $new_form.find('group:first') : $new_form;
$form.children().appendTo($dst);
$form.contents().appendTo($new_form);
if ($form[0] === this.$form[0]) {
// If root element, replace it
this.$form = $new_form;
} else {
$form.before($new_form).remove();
}
this.process($new_form, layout);
this.process($new_form);
},
/*
* Used by direct <field> children of a <group> tag only
* This method will add the implicit <label...> for every field
* in the <group>
*/
preprocess_field: function($field) {
var self = this;
var name = $field.attr('name'),
@ -1055,31 +1052,34 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt
}
return $label;
},
process_field: function($field, layout) {
var $label = this.preprocess_field($field);
if ($label)
this.process($label, layout);
process_field: function($field) {
if ($field.parent().is('group')) {
// No implicit labels for normal fields, only for <group> direct children
var $label = this.preprocess_field($field);
if ($label) {
this.process($label);
}
}
this.fields_to_init.push($field);
return $field;
},
process_group: function($group, layout) {
process_group: function($group) {
var self = this;
if ($group.parent().is('.oe_form_group_cell')) {
$group.parent().addClass('oe_form_group_nested');
}
$group.children('field').each(function() {
self.preprocess_field($(this));
});
var $new_group = this.render_element('FormRenderingGroup', layout, $group.getAttributes()),
$table;
if ($new_group.is('table')) {
var $new_group = this.render_element('FormRenderingGroup', $group.getAttributes());
var $table;
if ($new_group.first().is('table.oe_form_group')) {
$table = $new_group;
} else if ($new_group.filter('table.oe_form_group').length) {
$table = $new_group.filter('table.oe_form_group').first();
} else {
$table = $new_group.find('table:first');
$table = $new_group.find('table.oe_form_group').first();
}
$table.addClass('oe_form_group');
var $tr, $td,
cols = parseInt($group.attr('col') || 4, 10),
cols = parseInt($group.attr('col') || 2, 10),
row_cols = cols;
var children = [];
@ -1089,6 +1089,8 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt
var tagName = $child[0].tagName.toLowerCase();
var $td = $('<td/>').addClass('oe_form_group_cell').attr('colspan', colspan);
var newline = tagName === 'newline';
// Note FME: those classes are used in layout debug mode
if ($tr && row_cols > 0 && (newline || row_cols < colspan)) {
$tr.addClass('oe_form_group_row_incomplete');
if (newline) {
@ -1118,7 +1120,6 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt
}
$group.before($new_group).remove();
// Now compute width of cells
$table.find('> tbody > tr').each(function() {
var to_compute = [],
row_cols = cols,
@ -1176,7 +1177,7 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt
this.handle_common_properties($new_group, $group);
return $new_group;
},
process_notebook: function($notebook, layout) {
process_notebook: function($notebook) {
var self = this;
var pages = [];
$notebook.find('> page').each(function() {
@ -1184,14 +1185,13 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt
var page_attrs = $page.getAttributes();
page_attrs.id = _.uniqueId('notebook_page_');
pages.push(page_attrs);
var $new_page = self.render_element('FormRenderingNotebookPage', layout, page_attrs);
var $dst = (layout === 'auto') ? $new_page.find('group:first') : $new_page;
$page.children().appendTo($dst);
var $new_page = self.render_element('FormRenderingNotebookPage', page_attrs);
$page.contents().appendTo($new_page);
$page.before($new_page).remove();
self.handle_common_properties($new_page, $page);
});
var $new_notebook = this.render_element('FormRenderingNotebook', layout, { pages : pages });
$notebook.children().appendTo($new_notebook);
var $new_notebook = this.render_element('FormRenderingNotebook', { pages : pages });
$notebook.contents().appendTo($new_notebook);
$notebook.before($new_notebook).remove();
$new_notebook.children().each(function() {
self.process($(this));
@ -1200,13 +1200,13 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt
this.handle_common_properties($new_notebook, $notebook);
return $new_notebook;
},
process_separator: function($separator, layout) {
var $new_separator = this.render_element('FormRenderingSeparator', layout, $separator.getAttributes());
process_separator: function($separator) {
var $new_separator = this.render_element('FormRenderingSeparator', $separator.getAttributes());
$separator.before($new_separator).remove();
this.handle_common_properties($new_separator, $separator);
return $new_separator;
},
process_label: function($label, layout) {
process_label: function($label) {
var name = $label.attr("for"),
field_orm = this.fvg.fields[name];
var dict = {
@ -1223,7 +1223,7 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt
align = 'center';
}
dict.align = align;
var $new_label = this.render_element('FormRenderingLabel', layout, dict);
var $new_label = this.render_element('FormRenderingLabel', dict);
$label.before($new_label).remove();
this.handle_common_properties($new_label, $label);
if (name) {
@ -2036,11 +2036,12 @@ instance.web.DateTimeWidget = instance.web.OldWidget.extend({
instance.web.DateWidget = instance.web.DateTimeWidget.extend({
jqueryui_object: 'datepicker',
template: "web.datepicker",
type_of_date: "date"
});
instance.web.form.FieldDatetime = instance.web.form.AbstractField.extend(_.extend({}, instance.web.form.ReinitializeFieldMixin, {
template: "EmptyComponent",
tagName: "span",
build_widget: function() {
return new instance.web.DateTimeWidget(this);
},
@ -4088,7 +4089,7 @@ instance.web.form.FieldBinaryImage = instance.web.form.FieldBinary.extend({
});
instance.web.form.FieldStatus = instance.web.form.AbstractField.extend({
template: "EmptyComponent",
tagName: "span",
start: function() {
this._super();
this.selected_value = null;

View File

@ -1338,7 +1338,7 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we
} else if (column.id in group.aggregates) {
var r = {};
r[column.id] = {value: group.aggregates[column.id]};
$('<td class="oe-number">')
$('<td class="oe_number">')
.html(instance.web.format_cell(
r, column, {process_modifiers: false}))
.appendTo($row);

View File

@ -591,7 +591,7 @@
t-if="!field.attrs.modifiers.tree_invisible"
t-att-data-id="record.id"
t-att-style="color_for(record) + style "
t-attf-class="#{class} #{rank} #{(fields[field.attrs.name].type === 'float') or (fields[field.attrs.name].type === 'integer') ? 'oe-number' : ''}">
t-attf-class="#{class} #{rank} #{(fields[field.attrs.name].type === 'float') or (fields[field.attrs.name].type === 'integer') ? 'oe_number' : ''}">
<span t-if="!field.attrs.modifiers.invisible" >
<t t-esc="render(record[field.attrs.name], fields[field.attrs.name])" />
@ -634,7 +634,7 @@
<tfoot>
<tr>
<td t-if="options.selectable"/>
<td t-foreach="aggregate_columns" t-as="column" class="oe-list-footer oe-number"
<td t-foreach="aggregate_columns" t-as="column" class="oe-list-footer oe_number"
t-att-data-field="column.id" t-att-title="column.label">
</td>
<td t-if="options.deletable"/>
@ -679,7 +679,7 @@
<t t-foreach="columns" t-as="column">
<t t-set="align" t-value="column.type === 'integer' or column.type == 'float'"/>
<td t-if="!column.meta and column.invisible !== '1'" t-att-title="column.help"
t-att-class="'oe-field-cell' + (align ? ' oe-number' : '')
t-att-class="'oe-field-cell' + (align ? ' oe_number' : '')
+ (column.tag === 'button' ? ' oe-button' : '')"
t-att-data-field="column.id">
<t t-raw="render_cell(record, column)"/>
@ -773,31 +773,19 @@
</table>
</form>
<t t-name="FormRenderingForm.manual">
<div class="oe_form_manual_layout"/>
</t>
<t t-name="FormRenderingForm">
<div t-attf-class="#{classnames}">
</div>
</t>
<t t-name="FormRenderingSheet">
<div class="oe_form_sheetbg">
<div t-attf-class="oe_form_sheet oe_form_sheet_width #{classnames}">
<group t-if="layout === 'auto'" col="4"/>
</div>
</div>
</t>
<t t-name="FormRenderingSheet" t-extend="FormRenderingForm">
</t>
<t t-name="FormRenderingGroup">
<t t-set="table">
<table border="0" cellpadding="0" cellspacing="0" width="100%" t-att-class="classnames"/>
</t>
<t t-if="string">
<fieldset class="oe_group_box">
<legend><t t-esc="string"/></legend>
<t t-raw="table"/>
</fieldset>
</t>
<t t-if="!string">
<t t-raw="table"/>
</t>
<t t-if="string" t-call="FormRenderingSeparator"/>
<table border="0" cellpadding="0" cellspacing="0" width="100%" t-attf-class="oe_form_group #{classnames}"/>
</t>
<t t-name="FormRenderingNotebook">
<div>
@ -812,7 +800,6 @@
</t>
<t t-name="FormRenderingNotebookPage">
<div t-attf-class="oe_form_notebook_page #{classnames}" t-att-id="id">
<group t-if="layout === 'auto'" col="4"/>
</div>
</t>
<t t-name="FormRenderingSeparator">
@ -895,71 +882,44 @@
</ul>
</t>
<t t-name="FieldChar">
<t t-if="!widget.get('effective_readonly')">
<div class="oe_form_field_char">
<span class="oe_form_field_char">
<t t-if="!widget.get('effective_readonly')">
<input t-att-type="widget.password ? 'password' : 'text'"
t-att-id="widget.id_for_label"
t-att-tabindex="widget.node.attrs.tabindex"
t-att-autofocus="widget.node.attrs.autofocus"
t-attf-class="field_char #{widget.is_field_number ? 'oe-number' : ''}"
class="field_char"
t-att-placeholder="widget.node.attrs.placeholder"
/><img class="oe_field_translate oe_input_icon" t-if="widget.field.translate" t-att-src='_s + "/web/static/src/img/icons/terp-translate.png"' width="16" height="16" border="0"/>
</div>
</t>
<t t-if="widget.get('effective_readonly')">
<span t-attf-class="oe_form_field_char #{widget.is_field_number ? 'oe-number' : ''}"/>
</t>
</t>
</span>
</t>
<t t-name="FieldEmail">
<t t-if="!widget.get('effective_readonly')">
<table class="oe_form_field_email" cellpadding="0" cellspacing="0" border="0">
<tr>
<td>
<span class="oe_form_field_email oe_form_field_with_button">
<a t-if="widget.get('effective_readonly')" href="#" class="oe_form_uri"/>
<t t-if="!widget.get('effective_readonly')">
<button class="oe_button" tabindex="-1" type="button" title="Send an e-mail with your default e-mail client">
<img t-att-src='_s + "/web/static/src/img/icons/terp-mail-message-new.png"'/>
</button>
<div>
<input type="text"
t-att-id="widget.id_for_label"
t-att-tabindex="widget.node.attrs.tabindex"
t-att-autofocus="widget.node.attrs.autofocus"
t-att-placeholder="widget.node.attrs.placeholder"
/>
</td>
<td width="16">
<button class="oe_button oe_field_button" tabindex="-1" type="button" title="Send an e-mail with your default e-mail client">
<img t-att-src='_s + "/web/static/src/img/icons/terp-mail-message-new.png"'/>
</button>
</td>
</tr>
</table>
</t>
<t t-if="widget.get('effective_readonly')">
<span>
<a href="#" class="oe_form_uri"/>
</span>
</t>
</div>
</t>
</span>
</t>
<t t-name="FieldUrl">
<t t-if="!widget.get('effective_readonly')">
<table class="oe_form_field_url" cellpadding="0" cellspacing="0" border="0">
<tr>
<td>
<input type="text"
t-att-id="widget.id_for_label"
t-att-tabindex="widget.node.attrs.tabindex"
t-att-autofocus="widget.node.attrs.autofocus"
t-att-placeholder="widget.node.attrs.placeholder"
/>
</td>
<td width="16">
<button class="oe_button oe_field_button" tabindex="-1" type="button" title="Open this resource">
<img t-att-src='_s + "/web/static/src/img/icons/gtk-ok.png"'/>
</button>
</td>
</tr>
</table>
<t t-name="FieldUrl" t-extend="FieldEmail">
<t t-jquery="span:first">
this.removeClass('oe_form_field_email').addClass('oe_form_field_url');
</t>
<t t-if="widget.get('effective_readonly')">
<span>
<a href="#" class="oe_form_uri"/>
</span>
<t t-jquery="button.oe_button" t-operation="replace">
<button class="oe_button" tabindex="-1" type="button" title="Open this resource">
<img t-att-src='_s + "/web/static/src/img/icons/gtk-ok.png"'/>
</button>
</t>
</t>
<t t-name="FieldText">
@ -975,9 +935,9 @@
t-att-src='_s + "/web/static/src/img/icons/terp-translate.png"' width="16" height="16" border="0"/>
</div>
</t>
<t t-name="web.datetimepicker">
<t t-name="web.datepicker">
<t t-set="placeholder" t-value="widget.getParent().node and widget.getParent().node.attrs.placeholder"/>
<div class="oe_datepicker_root oe_form_field_datetime">
<span class="oe_datepicker_root oe_form_field_date">
<input type="text" class="oe_datepicker_container" disabled="disabled" style="display: none;"/>
<input type="text"
t-att-name="widget.name"
@ -985,31 +945,41 @@
t-attf-class="oe_datepicker_master field_#{widget.type_of_date} oe_form_field_#{widget.type_of_date}"
/><img class="oe_input_icon oe_datepicker_trigger" t-att-src='_s + "/web/static/src/img/ui/field_calendar.png"'
title="Select date" width="16" height="16" border="0"/>
</div>
</span>
</t>
<t t-name="web.datetimepicker">
<t t-set="placeholder" t-value="widget.getParent().node and widget.getParent().node.attrs.placeholder"/>
<span class="oe_datepicker_root oe_form_field_datetime">
<input type="text" class="oe_datepicker_container" disabled="disabled" style="display: none;"/>
<input type="text"
t-att-name="widget.name"
t-att-placeholder="placeholder"
t-attf-class="oe_datepicker_master field_#{widget.type_of_date} oe_form_field_#{widget.type_of_date}"
/><img class="oe_input_icon oe_datepicker_trigger" t-att-src='_s + "/web/static/src/img/ui/field_calendar.png"'
title="Select date" width="16" height="16" border="0"/>
</span>
</t>
<t t-name="FieldSelection">
<t t-if="!widget.get('effective_readonly')">
<div class="oe_form_field_selection">
<select
t-att-name="widget.name"
t-att-tabindex="widget.node.attrs.tabindex"
t-att-autofocus="widget.node.attrs.autofocus"
t-att-id="widget.id_for_label">
<t t-foreach="widget.values" t-as="option">
<option><t t-esc="option[1]"/></option>
</t>
</select>
</div>
</t>
<t t-if="widget.get('effective_readonly')">
<span class="field_selection"/>
</t>
<span class="oe_form_field_selection">
<select t-if="!widget.get('effective_readonly')"
t-att-name="widget.name"
t-att-tabindex="widget.node.attrs.tabindex"
t-att-autofocus="widget.node.attrs.autofocus"
t-att-id="widget.id_for_label">
<t t-foreach="widget.values" t-as="option">
<option><t t-esc="option[1]"/></option>
</t>
</select>
</span>
</t>
<t t-name="FieldMany2One">
<t t-if="!widget.get('effective_readonly')">
<table class="oe_form_field_many2one" cellpadding="0" cellspacing="0" border="0">
<tr>
<td valign="top">
<span class="oe_form_field_many2one oe_form_field_with_button">
<a t-if="widget.get('effective_readonly')" href="#" class="oe_form_uri"/>
<t t-if="!widget.get('effective_readonly')">
<button class="oe_button oe-m2o-cm-button" title="Open Resource">
<img t-att-src='_s + "/web/static/src/img/icons/terp-folder-yellow.png"'/>
</button>
<div>
<input type="text"
t-att-id="widget.id_for_label"
t-att-tabindex="widget.node.attrs.tabindex"
@ -1017,21 +987,11 @@
t-att-placeholder="widget.node.attrs.placeholder"
/>
<span class="oe-m2o-drop-down-button">
<img t-att-src='_s + "/web/static/src/img/down-arrow.png"' /></span>
</td>
<td width="16">
<button class="oe_button oe_field_button oe-m2o-cm-button" title="Open Resource">
<img t-att-src='_s + "/web/static/src/img/icons/terp-folder-yellow.png"'/>
</button>
</td>
</tr>
</table>
</t>
<t t-if="widget.get('effective_readonly')">
<span>
<a href="#" class="oe_form_uri"/>
</span>
</t>
<img t-att-src='_s + "/web/static/src/img/down-arrow.png"'/>
</span>
</div>
</t>
</span>
</t>
<t t-name="FieldMany2ManyTags">
<div class="oe_form_field_many2manytags">
@ -1070,9 +1030,9 @@
</span>
</t>
<t t-name="FieldProgressBar">
<div class="oe_form_field_progressbar" t-opentag="true">
<span class="oe_form_field_progressbar" t-opentag="true">
<span></span>
</div>
</span>
</t>
<t t-name="FieldStatus.content">
<ul class="oe_form_steps">
@ -1086,49 +1046,33 @@
</ul>
</t>
<t t-name="FieldBinaryImage">
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td class="oe_form_field-binary-image-placeholder" align="center">
</td>
</tr>
<tr>
<td align="center" valign="bottom" height="25">
<div class="oe-binary">
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td>
<div class="oe-binary-file-set">
<form class="oe-binary-form" t-att-target="widget.iframe"
method="post" enctype="multipart/form-data" action="/web/binary/upload">
<input type="hidden" name="session_id" value=""/>
<input type="hidden" name="callback" t-att-value="widget.iframe"/>
<button class="oe_button" type="button" title="Set Image">
<img t-att-src='_s + "/web/static/src/img/icons/STOCK_DIRECTORY.png"'/>
</button>
<input type="file" class="oe-binary-file" name="ufile"
t-att-tabindex="widget.node.attrs.tabindex"
t-att-autofocus="widget.node.attrs.autofocus"
/>
</form>
</div>
</td>
<td>
<button class="oe_button oe-binary-file-clear" type="button" title="Clear">
<img t-att-src='_s + "/web/static/src/img/icons/STOCK_MISSING_IMAGE.png"'/>
</button>
</td>
</tr>
</table>
<span class="oe_binary_image">
<div class="oe_form_field-binary-image-placeholder"></div>
<div class="oe-binary">
<div class="oe-binary-file-set">
<form class="oe-binary-form" t-att-target="widget.iframe"
method="post" enctype="multipart/form-data" action="/web/binary/upload">
<input type="hidden" name="session_id" value=""/>
<input type="hidden" name="callback" t-att-value="widget.iframe"/>
<button class="oe_button" type="button" title="Set Image">
<img t-att-src='_s + "/web/static/src/img/icons/STOCK_DIRECTORY.png"'/>
</button>
<input type="file" class="oe-binary-file" name="ufile"
t-att-tabindex="widget.node.attrs.tabindex"
t-att-autofocus="widget.node.attrs.autofocus"
/>
</form>
</div>
<div class="oe-binary-progress" style="display: none">
<img t-att-src='_s + "/web/static/src/img/throbber.gif"' width="16" height="16"/>
<b>Uploading ...</b>
</div>
<iframe t-att-id="widget.iframe" t-att-name="widget.iframe" style="display: none"/>
</td>
</tr>
</table>
<button class="oe_button oe-binary-file-clear" type="button" title="Clear">
<img t-att-src='_s + "/web/static/src/img/icons/STOCK_MISSING_IMAGE.png"'/>
</button>
</div>
<div class="oe-binary-progress" style="display: none">
<img t-att-src='_s + "/web/static/src/img/throbber.gif"' width="16" height="16"/>
<b>Uploading ...</b>
</div>
<iframe t-att-id="widget.iframe" t-att-name="widget.iframe" style="display: none"/>
</span>
</t>
<t t-name="FieldBinaryImage-img">
<img t-att-src='url' class="oe-binary-image field_image"