콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
2 답글
19049 화면

I creating web keyboard shortcut module, for ex. In my form i having a print button, In this button is calling a particular report, now I need to call ctrl +U to call that function. here function is calling well but ids getting none only. how to get a ids value, If I give in Print click means ids has some value.  Here is my code.

$.ctrl('H', function() {

var self = this;

return new instance.web.Model('sample.table').call('read', [[self.id], new instance.web.CompoundContext()])

.then(function(){

var self = this;

return new instance.web.Model('sample.table').call('print_quotation',[[self.ids]])

});

});

// window.print();

}

아바타
취소
베스트 답변

Here is how I suggest you to solve the problem. The idea is attach the shortcut to the button to be able to execute the button click when the shortcut combination is pressed. Using the following code in a js file loaded in a module(as example for @srihar there is a module definition of the js file for module sample_report, you could use the bold marked text in your own module if you like)


openerp.sample_report = function(instance, local) {
var _t = instance.web._t,
_lt = instance.web._lt;
var QWeb = instance.web.qweb;

var ctrl_count = 0;
$.ctrl_bind = function(key, namespace, callback, args) {
var ev = 'keydown.'+namespace;
$(document).on(ev, function(e) {
if(!args) args=[]; // IE barks when args is null
console.log(e.keyCode)
if((e.keyCode == key.charCodeAt(0) || e.keyCode == key) && e.ctrlKey) {
callback.apply(this, args);
return false;
}
});
};

$.ctrl_unbind = function(name) {
var ev = 'keydown.'+name;
$(document).off(ev);
};

instance.web.form.WidgetButton.include({
start: function() {
var self = this;
this._super.apply(this, arguments);
var context = this.build_context().eval();
if(context.shortcut != undefined){
ctrl_count++;
this.ctrl_count = ctrl_count;
$.ctrl_bind(context.shortcut, this.ctrl_count, function() {
alert(1);//for test
self.on_click();//could be used execute_action() too
});
}
},
destroy: function() {
$.ctrl_unbind(this.ctrl_count);
this._super.apply(this, arguments);
},
});
}

To be able to use that extension you need to define your button with a context that contains a shortcut key, for example for clic the following button using the shortcut "ctrl + i" you need to define:

<button name="print_quotation" string="Print" type="object" context="{'shortcut': 'I'}"/>

Note that the value of the key shortcut in the context need to be uppercased

아바타
취소
베스트 답변

pass context values from view button:
<button name="request_stock" context="{'partial':False}" type="object" string="Create Picking and PO"/>

receive in python:
def request_stock(self):
​context = self._context.copy() or {}
​partial = context.get("partial", False)

아바타
취소
관련 게시물 답글 화면 활동
0
3월 25
1264
0
1월 25
3310
1
8월 23
14623
change password 해결 완료
1
8월 23
13260
1
7월 23
10283