[Fix]display in a form what are the keyboard shortcuts defined in screen when hold ALT key
bzr revid: vja@tinyerp.com-20121018122620-7angnmxvaig2l8ac
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
.openerp.openerp_webclient_container {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
@@ -473,6 +474,11 @@
|
||||
max-width: 180px;
|
||||
max-height: 180px;
|
||||
}
|
||||
.openerp .oe_view_manager_current .accessactive{
|
||||
text-decoration:underline;
|
||||
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
|
||||
font-weight:bold;
|
||||
}
|
||||
.openerp .oe_button.oe_link {
|
||||
border: none;
|
||||
padding: 0;
|
||||
@@ -2561,12 +2567,6 @@
|
||||
.openerp .oe_list.oe_list_editable td.oe_list_record_delete {
|
||||
position: absolute;
|
||||
}
|
||||
.openerp .oe_list.oe_list_editable.oe_editing .oe_edition .oe_list_field_cell:not(.oe_readonly) {
|
||||
color: transparent;
|
||||
}
|
||||
.openerp .oe_list.oe_list_editable.oe_editing .oe_edition .oe_list_field_cell:not(.oe_readonly) * {
|
||||
visibility: hidden;
|
||||
}
|
||||
.openerp .oe_list.oe_list_editable.oe_editing .oe_m2o_drop_down_button {
|
||||
top: 5px;
|
||||
}
|
||||
@@ -2585,10 +2585,10 @@
|
||||
}
|
||||
.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_float input, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_view_integer input {
|
||||
text-align: right;
|
||||
width: 100% !important;
|
||||
width: 100%;
|
||||
}
|
||||
.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_datetime > span, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_date > span {
|
||||
width: 100% !important;
|
||||
width: 100%;
|
||||
}
|
||||
.openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_datetime input.oe_datepicker_master, .openerp .oe_list.oe_list_editable.oe_editing .oe_form_field.oe_form_field_date input.oe_datepicker_master {
|
||||
width: 100% !important;
|
||||
@@ -2597,9 +2597,6 @@
|
||||
min-width: 0 !important;
|
||||
max-width: none !important;
|
||||
}
|
||||
.openerp .oe_list_group_name {
|
||||
white-space: nowrap;
|
||||
}
|
||||
.openerp .oe_form .oe_form_field_many2many > .oe_list .oe_list_pager_single_page {
|
||||
display: none;
|
||||
}
|
||||
@@ -2659,17 +2656,14 @@
|
||||
background: #eeeeee;
|
||||
vertical-align: top;
|
||||
}
|
||||
.openerp .oe_list_content > thead th {
|
||||
position: relative;
|
||||
}
|
||||
.openerp .oe_list_content td, .openerp .oe_list_content th {
|
||||
padding: 3px 6px;
|
||||
line-height: 18px;
|
||||
}
|
||||
.openerp .oe_list_content th.oe_sortable, .openerp .oe_list_content th.oe_sortable div {
|
||||
cursor: pointer;
|
||||
}
|
||||
.openerp .oe_list_content th.oe_sortable div {
|
||||
position: relative;
|
||||
}
|
||||
.openerp .oe_list_content th.oe_sortable div:after {
|
||||
.openerp .oe_list_content th:after {
|
||||
position: absolute;
|
||||
right: 6px;
|
||||
content: "";
|
||||
@@ -2679,12 +2673,12 @@
|
||||
border-color: black transparent;
|
||||
visibility: hidden;
|
||||
}
|
||||
.openerp .oe_list_content th.sortup div:after {
|
||||
.openerp .oe_list_content th.sortup:after {
|
||||
visibility: visible;
|
||||
filter: alpha(opacity=60);
|
||||
opacity: 0.6;
|
||||
}
|
||||
.openerp .oe_list_content th.sortdown div:after {
|
||||
.openerp .oe_list_content th.sortdown:after {
|
||||
border-bottom: none;
|
||||
border-left: 4px solid transparent;
|
||||
border-right: 4px solid transparent;
|
||||
|
||||
@@ -125,9 +125,9 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
|
||||
self.check_actual_mode();
|
||||
self.on("change:actual_mode", self, self.init_pager);
|
||||
self.init_pager();
|
||||
self.widgetAccesskey();
|
||||
});
|
||||
self.on("load_record", self, self.load_record);
|
||||
this.on('view_loaded', self, self.load_form);
|
||||
instance.web.bus.on('clear_uncommitted_changes', this, function(e) {
|
||||
if (!this.can_be_discarded()) {
|
||||
e.preventDefault();
|
||||
@@ -144,13 +144,13 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
|
||||
}
|
||||
this._super();
|
||||
},
|
||||
load_form: function(data) {
|
||||
on_loaded: function(data) {
|
||||
var self = this;
|
||||
if (!data) {
|
||||
throw new Error("No data provided.");
|
||||
}
|
||||
if (this.arch) {
|
||||
throw "Form view does not support multiple calls to load_form";
|
||||
throw "Form view does not support multiple calls to on_loaded";
|
||||
}
|
||||
this.fields_order = [];
|
||||
this.fields_view = data;
|
||||
@@ -214,9 +214,19 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
|
||||
e.stopPropagation();
|
||||
}
|
||||
});
|
||||
this.trigger('form_view_loaded', data);
|
||||
|
||||
return $.when();
|
||||
},
|
||||
widgetAccesskey:function(){
|
||||
$(document).keydown(function(e){
|
||||
if(e.keyCode === $.ui.keyCode.ALT) {
|
||||
$("[accesskey] span").addClass('accessactive');
|
||||
}
|
||||
e.stopPropagation();
|
||||
}).keyup(function(e){
|
||||
$("[accesskey] span").removeClass('accessactive');
|
||||
});
|
||||
},
|
||||
widgetFocused: function() {
|
||||
// Clear click flag if used to focus a widget
|
||||
this.__clicked_inside = false;
|
||||
@@ -2153,20 +2163,6 @@ instance.web.form.AbstractField = instance.web.form.FormWidget.extend(instance.w
|
||||
self.do_action(r);
|
||||
});
|
||||
},
|
||||
|
||||
set_dimensions: function (height, width) {
|
||||
// remove width css property
|
||||
this.$el.css('width', '');
|
||||
// extract style (without width)
|
||||
var old_style = this.$el.attr('style');
|
||||
// jQuery doesn't understand/use !important
|
||||
var style = 'width:' + width + 'px !important;';
|
||||
if (old_style) {
|
||||
style += old_style
|
||||
}
|
||||
this.$el.attr('style', style);
|
||||
this.$el.css('minHeight', height);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
@@ -2545,13 +2541,6 @@ instance.web.form.FieldText = instance.web.form.AbstractField.extend(instance.we
|
||||
focus: function($el) {
|
||||
this.$textarea.focus();
|
||||
},
|
||||
set_dimensions: function (height, width) {
|
||||
this._super();
|
||||
this.$textarea.css({
|
||||
width: width,
|
||||
minHeight: height
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
/**
|
||||
@@ -3172,9 +3161,7 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc
|
||||
return ! this.get("value");
|
||||
},
|
||||
focus: function () {
|
||||
if (!this.get('effective_readonly')) {
|
||||
this.$input.focus();
|
||||
}
|
||||
this.$input.focus();
|
||||
},
|
||||
_quick_create: function() {
|
||||
this.no_ed = true;
|
||||
@@ -3351,23 +3338,6 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({
|
||||
controller.on('edit:before', self, function (e) {
|
||||
e.cancel = true;
|
||||
});
|
||||
var has_handle = _(controller.columns).find(function (column) {
|
||||
if (!column instanceof instance.web.list.Handle) {
|
||||
return false;
|
||||
}
|
||||
column.modifiers.tree_invisible = true;
|
||||
column.invisible = '1';
|
||||
// remove from visibles
|
||||
controller.visible_columns.splice(
|
||||
controller.visible_columns.indexOf(column),
|
||||
1);
|
||||
return true;
|
||||
});
|
||||
if (has_handle) {
|
||||
// recompute aggregates
|
||||
controller.aggregate_columns =
|
||||
_(controller.visible_columns).invoke('to_aggregate');
|
||||
}
|
||||
}
|
||||
} else if (view_type === "form") {
|
||||
if (self.get("effective_readonly")) {
|
||||
@@ -3603,7 +3573,6 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({
|
||||
_template: 'One2Many.listview',
|
||||
init: function (parent, dataset, view_id, options) {
|
||||
this._super(parent, dataset, view_id, _.extend(options || {}, {
|
||||
GroupsType: instance.web.form.One2ManyGroups,
|
||||
ListType: instance.web.form.One2ManyList
|
||||
}));
|
||||
this.on('edit:before', this, this.proxy('_before_edit'));
|
||||
@@ -3784,13 +3753,6 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({
|
||||
});
|
||||
}
|
||||
});
|
||||
instance.web.form.One2ManyGroups = instance.web.ListView.Groups.extend({
|
||||
setup_resequence_rows: function () {
|
||||
if (!this.view.o2m.get('effective_readonly')) {
|
||||
this._super.apply(this, arguments);
|
||||
}
|
||||
}
|
||||
});
|
||||
instance.web.form.One2ManyList = instance.web.ListView.List.extend({
|
||||
pad_table_to: function (count) {
|
||||
if (!this.view.is_action_enabled('create')) {
|
||||
@@ -3851,7 +3813,7 @@ instance.web.form.One2ManyList = instance.web.ListView.List.extend({
|
||||
|
||||
instance.web.form.One2ManyFormView = instance.web.FormView.extend({
|
||||
form_template: 'One2Many.formview',
|
||||
load_form: function(data) {
|
||||
on_loaded: function(data) {
|
||||
this._super(data);
|
||||
var self = this;
|
||||
this.$buttons.find('button.oe_form_button_create').click(function() {
|
||||
@@ -4061,7 +4023,7 @@ instance.web.form.FieldMany2Many = instance.web.form.AbstractField.extend({
|
||||
}
|
||||
this.list_view.m2m_field = this;
|
||||
var loaded = $.Deferred();
|
||||
this.list_view.on("list_view_loaded", self, function() {
|
||||
this.list_view.on_loaded.add_last(function() {
|
||||
self.initial_is_loaded.resolve();
|
||||
loaded.resolve();
|
||||
});
|
||||
@@ -4106,17 +4068,13 @@ instance.web.form.Many2ManyListView = instance.web.ListView.extend(/** @lends in
|
||||
);
|
||||
var self = this;
|
||||
pop.on("elements_selected", self, function(element_ids) {
|
||||
var reload = false;
|
||||
_(element_ids).each(function (id) {
|
||||
if(! _.detect(self.dataset.ids, function(x) {return x == id;})) {
|
||||
self.dataset.set_ids(self.dataset.ids.concat([id]));
|
||||
_.each(element_ids, function(one_id) {
|
||||
if(! _.detect(self.dataset.ids, function(x) {return x == one_id;})) {
|
||||
self.dataset.set_ids([].concat(self.dataset.ids, [one_id]));
|
||||
self.m2m_field.dataset_changed();
|
||||
reload = true;
|
||||
self.reload_content();
|
||||
}
|
||||
});
|
||||
if (reload) {
|
||||
self.reload_content();
|
||||
}
|
||||
});
|
||||
},
|
||||
do_activate_record: function(index, id) {
|
||||
@@ -4185,7 +4143,7 @@ instance.web.form.FieldMany2ManyKanban = instance.web.form.AbstractField.extend(
|
||||
}
|
||||
this.kanban_view.m2m = this;
|
||||
var loaded = $.Deferred();
|
||||
this.kanban_view.on("kanban_view_loaded",self,function() {
|
||||
this.kanban_view.on_loaded.add_last(function() {
|
||||
self.initial_is_loaded.resolve();
|
||||
loaded.resolve();
|
||||
});
|
||||
@@ -4409,7 +4367,7 @@ instance.web.form.AbstractFormPopup = instance.web.Widget.extend({
|
||||
this.view_form.set_embedded_view(this.options.alternative_form_view);
|
||||
}
|
||||
this.view_form.appendTo(this.$el.find(".oe_popup_form"));
|
||||
this.view_form.on("form_view_loaded", self, function() {
|
||||
this.view_form.on_loaded.add_last(function() {
|
||||
var multi_select = self.row_id === null && ! self.options.disable_multiple_selection;
|
||||
self.$buttonpane.html(QWeb.render("AbstractFormPopup.buttons", {
|
||||
multi_select: multi_select,
|
||||
@@ -4520,7 +4478,7 @@ instance.web.form.SelectCreatePopup = instance.web.form.AbstractFormPopup.extend
|
||||
}
|
||||
this.searchview = new instance.web.SearchView(this,
|
||||
this.dataset, false, search_defaults);
|
||||
this.searchview.on('search_data', self, function(domains, contexts, groupbys) {
|
||||
this.searchview.on_search.add(function(domains, contexts, groupbys) {
|
||||
if (self.initial_ids) {
|
||||
self.do_search(domains.concat([[["id", "in", self.initial_ids]], self.domain]),
|
||||
contexts, groupbys);
|
||||
@@ -4529,7 +4487,7 @@ instance.web.form.SelectCreatePopup = instance.web.form.AbstractFormPopup.extend
|
||||
self.do_search(domains.concat([self.domain]), contexts.concat(self.context), groupbys);
|
||||
}
|
||||
});
|
||||
this.searchview.on("search_view_loaded", self, function() {
|
||||
this.searchview.on_loaded.add_last(function () {
|
||||
self.view_list = new instance.web.form.SelectCreateListView(self,
|
||||
self.dataset, false,
|
||||
_.extend({'deletable': false,
|
||||
@@ -4546,7 +4504,7 @@ instance.web.form.SelectCreatePopup = instance.web.form.AbstractFormPopup.extend
|
||||
}).pipe(function() {
|
||||
self.searchview.do_search();
|
||||
});
|
||||
self.view_list.on("list_view_loaded", self, function() {
|
||||
self.view_list.on_loaded.add_last(function() {
|
||||
self.$buttonpane.html(QWeb.render("SelectCreatePopup.search.buttons", {widget:self}));
|
||||
var $cbutton = self.$buttonpane.find(".oe_selectcreatepopup-search-close");
|
||||
$cbutton.click(function() {
|
||||
@@ -4559,7 +4517,7 @@ instance.web.form.SelectCreatePopup = instance.web.form.AbstractFormPopup.extend
|
||||
});
|
||||
});
|
||||
});
|
||||
this.searchview.appendTo($(".oe_popup_search", self.$el));
|
||||
this.searchview.appendTo($(".oe_popup_list", self.$el));
|
||||
},
|
||||
do_search: function(domains, contexts, groupbys) {
|
||||
var self = this;
|
||||
@@ -4695,19 +4653,14 @@ instance.web.form.FieldBinary = instance.web.form.AbstractField.extend(instance.
|
||||
var self = this;
|
||||
this._super(field_manager, node);
|
||||
this.binary_value = false;
|
||||
this.useFileAPI = !!window.FileReader;
|
||||
if (!this.useFileAPI) {
|
||||
this.fileupload_id = _.uniqueId('oe_fileupload');
|
||||
$(window).on(this.fileupload_id, function() {
|
||||
var args = [].slice.call(arguments).slice(1);
|
||||
self.on_file_uploaded.apply(self, args);
|
||||
});
|
||||
}
|
||||
this.fileupload_id = _.uniqueId('oe_fileupload');
|
||||
$(window).on(this.fileupload_id, function() {
|
||||
var args = [].slice.call(arguments).slice(1);
|
||||
self.on_file_uploaded.apply(self, args);
|
||||
});
|
||||
},
|
||||
stop: function() {
|
||||
if (!this.useFileAPI) {
|
||||
$(window).off(this.fileupload_id);
|
||||
}
|
||||
$(window).off(this.fileupload_id);
|
||||
this._super.apply(this, arguments);
|
||||
},
|
||||
initialize_content: function() {
|
||||
@@ -4725,22 +4678,13 @@ instance.web.form.FieldBinary = instance.web.form.AbstractField.extend(instance.
|
||||
return size.toFixed(2) + ' ' + units[i];
|
||||
},
|
||||
on_file_change: function(e) {
|
||||
var self = this;
|
||||
var file_node = e.target;
|
||||
if ((this.useFileAPI && file_node.files.length) || (!this.useFileAPI && $(file_node).val() !== '')) {
|
||||
if (this.useFileAPI) {
|
||||
var file = file_node.files[0];
|
||||
var filereader = new FileReader();
|
||||
filereader.readAsDataURL(file);
|
||||
filereader.onloadend = function(upload) {
|
||||
var data = upload.target.result;
|
||||
data = data.split(',')[1];
|
||||
self.on_file_uploaded(file.size, file.name, file.type, data);
|
||||
};
|
||||
} else {
|
||||
this.$el.find('form.oe_form_binary_form input[name=session_id]').val(this.session.session_id);
|
||||
this.$el.find('form.oe_form_binary_form').submit();
|
||||
}
|
||||
// TODO: on modern browsers, we could directly read the file locally on client ready to be used on image cropper
|
||||
// http://www.html5rocks.com/tutorials/file/dndfiles/
|
||||
// http://deepliquid.com/projects/Jcrop/demos.php?demo=handler
|
||||
|
||||
if ($(e.target).val() !== '') {
|
||||
this.$el.find('form.oe_form_binary_form input[name=session_id]').val(this.session.session_id);
|
||||
this.$el.find('form.oe_form_binary_form').submit();
|
||||
this.$el.find('.oe_form_binary_progress').show();
|
||||
this.$el.find('.oe_form_binary').hide();
|
||||
}
|
||||
|
||||
@@ -631,9 +631,9 @@
|
||||
</th>
|
||||
<t t-foreach="columns" t-as="column">
|
||||
<th t-if="!column.meta and column.invisible !== '1'" t-att-data-id="column.id"
|
||||
t-attf-class="oe_list_header_#{column.widget or column.type} #{((options.sortable and column.tag !== 'button') ? 'oe_sortable' : null)}"><div>
|
||||
t-attf-class="oe_list_header_#{column.widget or column.type} #{((options.sortable and column.tag !== 'button') ? 'oe_sortable' : null)}">
|
||||
<t t-if="column.tag !== 'button'"><t t-esc="column.string"/></t>
|
||||
</div></th>
|
||||
</th>
|
||||
</t>
|
||||
<th t-if="options.deletable" class="oe_list_record_delete" width="13px"/>
|
||||
</tr>
|
||||
@@ -730,15 +730,15 @@
|
||||
<span class="oe_form_buttons_view">
|
||||
<!-- required for the bounce effect on button -->
|
||||
<div t-if="widget.is_action_enabled('edit')" style="display: inline-block;">
|
||||
<button type="button" class="oe_button oe_form_button_edit" accesskey="E">Edit</button>
|
||||
<button type="button" class="oe_button oe_form_button_edit" accesskey="E"><span>E</span>dit</button>
|
||||
</div>
|
||||
<button t-if="widget.is_action_enabled('create')"
|
||||
type="button" class="oe_button oe_form_button_create" accesskey="C">Create</button>
|
||||
type="button" class="oe_button oe_form_button_create" accesskey="C"><span>C</span>reate</button>
|
||||
</span>
|
||||
<span class="oe_form_buttons_edit">
|
||||
<button type="button" class="oe_button oe_form_button_save oe_highlight" accesskey="S">Save</button>
|
||||
<button type="button" class="oe_button oe_form_button_save oe_highlight" accesskey="S"><span>S</span>ave</button>
|
||||
<span class="oe_fade">or</span>
|
||||
<a href="#" class="oe_bold oe_form_button_cancel" accesskey="D">Discard</a>
|
||||
<a href="#" class="oe_bold oe_form_button_cancel" accesskey="D"><span>D</span>iscard</a>
|
||||
</span>
|
||||
</t>
|
||||
</div>
|
||||
@@ -1297,8 +1297,7 @@
|
||||
|
||||
<div t-name="SearchView.InputView"
|
||||
class="oe_searchview_input"
|
||||
contenteditable="true"
|
||||
tabindex="0"/>
|
||||
contenteditable="true"/>
|
||||
<!-- tabindex: makes div focusable -->
|
||||
<div t-name="SearchView.FacetView"
|
||||
class="oe_tag oe_tag_dark oe_searchview_facet"
|
||||
|
||||
Reference in New Issue
Block a user