odoo/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_readonly.js

100 lines
3.1 KiB
JavaScript
Raw Normal View History

scheduler.attachEvent("onTemplatesReady",function(){
scheduler.attachEvent("onBeforeLightbox",function(id){
if (this.config.readonly_form || this.getEvent(id).readonly)
this.config.readonly_active = true;
else {
this.config.readonly_active = false;
return true;
}
for (var i=0; i < this.config.lightbox.sections.length; i++) {
this.config.lightbox.sections[i].focus = false;
};
return true;
});
function txt_replace(tag,d,n,text){
var txts = d.getElementsByTagName(tag);
var txtt = n.getElementsByTagName(tag);
for (var i=txtt.length-1; i>=0; i--){
var n = txtt[i];
if (!text)
n.disabled = true;
else {
var t = document.createElement("SPAN");
t.className = "dhx_text_disabled";
t.innerHTML=text(txts[i]);
n.parentNode.insertBefore(t,n);
n.parentNode.removeChild(n);
}
}
}
var old = scheduler._fill_lightbox;
scheduler._fill_lightbox=function(){
var sns = this.config.lightbox.sections;
if (this.config.readonly_active){
for (var i=0; i < sns.length; i++) {
if (sns[i].type == 'recurring') {
var s = document.getElementById(sns[i].id);
s.style.display=s.nextSibling.style.display='none';
sns.splice(i,1);
i--;
}
};
}
var res = old.apply(this,arguments);
if (this.config.readonly_active){
var d = this._get_lightbox();
var n = this._lightbox_r = d.cloneNode(true);
txt_replace("textarea",d,n,function(a){ return a.value; });
txt_replace("input",d,n,false);
txt_replace("select",d,n,function(a){ return a.options[Math.max((a.selectedIndex||0),0)].text; });
n.removeChild(n.childNodes[2]);
n.removeChild(n.childNodes[3]);
d.parentNode.insertBefore(n,d);
olds.call(this,n);
this._lightbox = n;
this.setLightboxSize();
this._lightbox = null;
n.onclick=function(e){
var src=e?e.target:event.srcElement;
if (!src.className) src=src.previousSibling;
if (src && src.className)
switch(src.className){
case "dhx_cancel_btn":
scheduler.callEvent("onEventCancel",[scheduler._lightbox_id]);
scheduler._edit_stop_event(scheduler.getEvent(scheduler._lightbox_id),false);
scheduler.hide_lightbox();
break;
}
};
}
return res;
};
var olds = scheduler.showCover;
scheduler.showCover=function(){
if (!this.config.readonly_active)
olds.apply(this,arguments);
};
var hold = scheduler.hide_lightbox;
scheduler.hide_lightbox=function(){
if (this._lightbox_r){
this._lightbox_r.parentNode.removeChild(this._lightbox_r);
this._lightbox_r = null;
}
return hold.apply(this,arguments);
};
});