Created
February 27, 2016 21:36
-
-
Save blrun/77b31dd612817065032a to your computer and use it in GitHub Desktop.
제로보드4 WYSIWYG 에디터 모드 전환 관련 수정 자바스크립트 소스...
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var pattern = /(\[\w+\_code\:\d+\{[^}]*?\}\]|\[\/\w+\_code\])/gi; | |
var pattern2 = /\[\/\w+\_code\]/gi; | |
var matchArray, e_use_html; | |
var iePattern = /<br[^>]*?><(P|DIV|\/PRE|HR|LI|OL|O:P|UL|TABLE|TBODY|TR|TD|TH|CENTER|H1|H2|H3|H4|FORM|SCRIPT|\/SCRIPT)([^>]*?)>/gi; | |
var iePattern2 = /<(HR|SCRIPT|\/SCRIPT)([^>]*?)>\s*?<br[^>]*?>/gi; | |
var iePattern3 = / (?:\r\n|\r|\n)/g; | |
var ffPattern = /<br[^>]*?><(TBODY|TR|TD)([^>]*?)>/gi; | |
function htmlspecialchars_encode(str){ | |
str = str.replace(/&/g,'&amp;'); | |
str = str.replace(/'/g,'&#039;'); | |
str = str.replace(/"/g,'&quot;'); | |
str = str.replace(/ /g,'&nbsp;'); | |
str = str.replace(/</g,'&lt;').replace(/>/g,'&gt;'); | |
str = str.replace(/</g,'<').replace(/>/g,'>'); | |
str = str.replace(/\'/g,'''); | |
str = str.replace(/\"/g,'"'); | |
return str; | |
} | |
function htmlspecialchars_decode(str){ | |
str = str.replace(/"/g,'\"'); | |
str = str.replace(/'/g,'\''); | |
str = str.replace(/</g,'<').replace(/>/g,'>'); | |
str = str.replace(/&lt;/g,'<').replace(/&gt;/g,'>'); | |
str = str.replace(/&nbsp;/g,' '); | |
str = str.replace(/&quot;/g,'"'); | |
str = str.replace(/&#039;/g,'''); | |
str = str.replace(/&/g,'&'); | |
return str; | |
} | |
function brAddFix(str,use_html) { | |
if(use_html < 2) { | |
if(typeof window.getSelection != "undefined") //FF | |
{ | |
str = str.replace(/\n/g,"<br />"); | |
str = str.replace(ffPattern,"<$1$2>"); | |
} | |
else if(typeof document.selection != "Control") //IE | |
{ | |
str = str.replace(/\n/g,"<br />"); | |
str = str.replace(iePattern,"<$1$2>"); | |
str = str.replace(iePattern2,"<$1$2>"); | |
str = str.replace(iePattern3,""); | |
} | |
} | |
return str; | |
} | |
function brRemove(str,use_html) { | |
if(use_html < 2) { | |
str = str.replace(/<br \/>|<br>/gi,"\n"); | |
str = str.replace(iePattern3,"\n"); | |
} | |
return str; | |
} | |
function pRemove(str,use_html) { | |
if(use_html < 2) { | |
if(re2.exec(uAgent) != null) { //IE8 | |
str = str.replace(/<\/p>|<\/div>/gi,""); | |
str = str.replace(/<p>\n|<div>\n/gi,"\n"); | |
str = str.replace(/<p>|<div>/gi,""); | |
} else { //Chrome & Opera | |
str = str.replace(/<p>\n<\/p>|<div>\n<\/div>/gi,"\n"); | |
str = str.replace(/\n<\/p>|\n<\/div>/gi,"\n"); | |
str = str.replace(/<\/p>|<\/div>/gi,"\n"); | |
str = str.replace(/\n<p>|\n<div>/gi,"\n"); | |
str = str.replace(/<p>|<div>/gi,"\n"); | |
str = str.replace(/<span[^>]*?>|<\/span>/gi,""); | |
} | |
str = str.replace(/ /g," "); | |
} | |
return str; | |
} | |
function eRemove(temp,str,use_html) { | |
// Chrome & Opera 에서 끝 </div> 태그 제거하는 루틴 | |
var len1, len2; | |
if(use_html < 2 && re2.exec(uAgent) == null) { | |
if(temp.match(/<div[^>]*?>/gi) == null) | |
len1 = 0; | |
else | |
len1 = temp.match(/<div[^>]*?>/gi).length; | |
if(temp.match(/<\/div>/gi) == null) | |
len2 = 0; | |
else | |
len2 = temp.match(/<\/div>/gi).length; | |
while(len1 < len2) { | |
str = str.replace(/<\/div>$/gi,""); | |
if(temp.match(/<div[^>]*?>/gi) == null) | |
len1 = 0; | |
else | |
len1 = temp.match(/<div[^>]*?>/gi).length; | |
if(temp.match(/<\/div>/gi) == null) | |
len2 = 0; | |
else | |
len2 = temp.match(/<\/div>/gi).length; | |
} | |
} | |
return str; | |
} | |
function memo2memoi(str){ | |
if(sw_edit_use == "write") | |
e_use_html = parseInt(document.getElementById("use_html").value); | |
else | |
e_use_html = parseInt(document.getElementById("use_html2").value); | |
var memo = "", temp, pt = 0; | |
if(str.match(pattern) == null) { | |
memo = brAddFix(str,e_use_html); | |
} else { | |
while((matchArray = pattern.exec(str)) != null){ | |
temp = str.substring(pt,matchArray.index); | |
if(pattern2.test(matchArray[0]) == true) { | |
temp = htmlspecialchars_encode(temp); | |
temp = brAddFix(temp,e_use_html); | |
} else { | |
temp = brAddFix(temp,e_use_html); | |
} | |
memo += temp + matchArray[0]; | |
pt = matchArray.index + matchArray[0].length; | |
} | |
temp = str.substring(pt) | |
memo += brAddFix(temp,e_use_html); | |
} | |
if(e_use_html < 2) { | |
memo = memo.replace(/ /g,' '); | |
memo = memo.replace(/\t/g,' '); | |
} | |
return memo; | |
} | |
function memoi2memo(str){ | |
if(sw_edit_use == "write") | |
e_use_html = parseInt(document.getElementById("use_html").value); | |
else | |
e_use_html = parseInt(document.getElementById("use_html2").value); | |
var memo = "", memo2 = "", temp, pt = 0; | |
if(e_use_html < 2) { | |
str = str.replace(/ /g,'\t'); | |
str = str.replace(/ /g,' '); | |
} | |
if(str.match(pattern) == null) { | |
memo = brRemove(str,e_use_html); | |
} else { | |
while((matchArray = pattern.exec(str)) != null){ | |
temp = str.substring(pt,matchArray.index); | |
if(pattern2.test(matchArray[0]) == true) { | |
temp = brRemove(temp,e_use_html); | |
temp = pRemove(temp,e_use_html); | |
temp = htmlspecialchars_decode(temp); | |
} else { | |
temp = brRemove(temp,e_use_html); | |
memo2 += temp; | |
} | |
memo += temp + matchArray[0]; | |
pt = matchArray.index + matchArray[0].length; | |
} | |
temp = str.substring(pt); | |
memo2 += temp; | |
temp = eRemove(memo2,temp,e_use_html); | |
memo += brRemove(temp,e_use_html); | |
} | |
return memo; | |
} | |
function ChangeEditMode(mode) | |
{ | |
if(mode == "html") | |
{ | |
edit_tag_yn = "Y"; | |
var doc = memoiW.document.open("text/html", "replace"); | |
doc.write(default_source + memo2memoi(memoE.value)); | |
doc.close(); | |
memoiE.style.display = "block"; | |
memoE.style.display = "none"; | |
selectionObj.m_selection = null; | |
memoiW.focus(); | |
} | |
else | |
{ | |
edit_tag_yn = "N"; | |
memoE.value = memoi2memo(memoiW.document.body.innerHTML); | |
memoiE.style.display = "none"; | |
memoE.style.display = "block"; | |
memoE.focus(); | |
} | |
if(edit_yn == "Y") | |
{ | |
btnStyc(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment