[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:
Vishmita
2012-10-18 17:56:20 +05:30
parent 11a583c9b1
commit 419f31928c
3 changed files with 61 additions and 124 deletions
+14 -20
View File
@@ -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;
+40 -96
View File
@@ -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();
}
+7 -8
View File
@@ -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"