2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-14 09:35:29 +00:00

codemirror.js: fix textfield-long patch (Forum #33226)

git-svn-id: https://svn.fhem.de/fhem/trunk@7882 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2015-02-05 10:37:34 +00:00
parent 7e4c9a6123
commit 618e57e1dc
2 changed files with 32 additions and 15 deletions

View File

@ -1,4 +1,4 @@
var cm_loaded = 0, cm_editor;
var cm_loaded = 0;
$(document).ready(function(){
var els = document.getElementsByTagName("textarea");
@ -11,7 +11,7 @@ $(document).ready(function(){
if(oc) {
$(this).attr("onclick", oc+
's=document.getElementById("edit").getElementsByTagName("textarea");'+
'if(!s[0].editor) s[0].editor=AddCodeMirror(s[0]);');
'if(!s[0].editor) { s[0].editor=true; AddCodeMirror(s[0]);}');
}
});
} else {
@ -20,19 +20,23 @@ $(document).ready(function(){
});
function
AddCodeMirror(e)
AddCodeMirror(e, cb)
{
cm_editor = e;
if(cm_loaded == 4)
return cm_wait(e, cb);
loadLink("codemirror/codemirror.css");
loadLink("codemirror/show-hint.css");
loadScript("codemirror/codemirror.js", function(){cm_loaded++;} );
loadScript("codemirror/closebrackets.js",function(){cm_loaded++;} );
loadScript("codemirror/matchbrackets.js",function(){cm_loaded++;} );
loadScript("codemirror/show-hint.js", function(){cm_loaded++;cm_wait()});
loadScript("codemirror/codemirror.js", function(){ cm_loaded++;} );
loadScript("codemirror/closebrackets.js",function(){ cm_loaded++;} );
loadScript("codemirror/matchbrackets.js",function(){ cm_loaded++;} );
loadScript("codemirror/show-hint.js", function(){
cm_loaded++;
cm_wait(e, cb);
});
}
function
cm_wait()
cm_wait(cm_editor, callback)
{
if(cm_loaded != 4) {
setTimeout(cm_wait, 10);
@ -67,6 +71,8 @@ cm_wait()
loadScript("codemirror/"+type+".js", function(){
log("Calling CodeMirror");
CodeMirror.fromTextArea(cm_editor, attr);
var cm = CodeMirror.fromTextArea(cm_editor, attr);
if(callback)
callback(cm);
});
}

View File

@ -575,11 +575,15 @@ FW_createTextField(elName, devName, vArr, currVal, set, params, cmd)
$(inp).attr('name', elName);
if(currVal != undefined)
$(inp).val(currVal);
if(cmd)
$(inp).blur(function() { cmd($(inp).val()) });
function addBlur() { if(cmd) $(inp).blur(function() { cmd($(inp).val()) }); };
newEl.setValueFn = function(arg){ $(inp).val(arg) };
addBlur();
var myFunc = function(){
$(inp).unbind("blur");
$('body').append(
'<div id="editdlg" style="display:none">'+
'<textarea id="td_longText" rows="25" cols="60" style="width:99%"/>'+
@ -587,18 +591,25 @@ FW_createTextField(elName, devName, vArr, currVal, set, params, cmd)
$("#td_longText").val($(inp).val());
if( typeof AddCodeMirror == 'function' )
AddCodeMirror($("#td_longText").get(0));
var cm;
if( typeof AddCodeMirror == 'function' )
AddCodeMirror($("#td_longText").get(0), function(pcm) {cm = pcm;});
$('#editdlg').dialog(
{ modal:true, closeOnEscape:true, width:$(window).width()*3/4,
maxHeight:$(window).height()*3/4,
buttons:[
{ text:"Cancel", click:function(){ $('#editdlg').remove(); }},
{ text:"Cancel", click:function(){
$('#editdlg').remove();
addBlur();
}},
{ text:"OK", click:function(){
if(cm)
$("#td_longText").val(cm.getValue());
var res=$("#td_longText").val();
$('#editdlg').remove();
$(inp).val(res);
addBlur();
}}]});
};