Skip to content

Instantly share code, notes, and snippets.

@blrun
Last active August 29, 2015 14:16
Show Gist options
  • Save blrun/09be936b8b9c9122ec73 to your computer and use it in GitHub Desktop.
Save blrun/09be936b8b9c9122ec73 to your computer and use it in GitHub Desktop.
제로보드4 f2plus_gallery_3_0 WYSIWYG 에디터 모드 전환 관련 수정 소스...
// 제로보드4 f2plus_gallery_3_0 WYSIWYG 에디터 모드 전환 관련 수정 소스...
var pattern = /(\[\w+\_code\:\d+\{[^}]*?\}\]|\[\/\w+\_code\])/gi;
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)([^>]*?)>/gi;
var ffPattern = /<br[^>]*?><(TBODY|TR|TD)([^>]*?)>/gi;
function htmlspecialchars_encode(str){
str = str.replace(/&amp;/gi,'&amp;amp;');
str = str.replace(/&#039;/gi,'&amp;#039;');
str = str.replace(/&quot;/gi,'&amp;quot;');
str = str.replace(/&nbsp;/gi,'&amp;nbsp;');
str = str.replace(/&lt;/g,'&amp;lt;').replace(/&gt;/g,'&amp;gt;');
str = str.replace(/</g,'&lt;').replace(/>/g,'&gt;');
str = str.replace(/\'/g,'&#039;');
str = str.replace(/\"/g,'&quot;');
return str;
}
function htmlspecialchars_decode(str){
str = str.replace(/&quot;/g,'\"');
str = str.replace(/&#039;/g,'\'');
str = str.replace(/&lt;/g,'<').replace(/&gt;/g,'>');
str = str.replace(/&amp;lt;/g,'&lt;').replace(/&amp;gt;/g,'&gt;');
str = str.replace(/&amp;nbsp;/gi,'&nbsp;');
str = str.replace(/&amp;quot;/gi,'&quot;');
str = str.replace(/&amp;#039;/gi,'&#039;');
str = str.replace(/&amp;/gi,'&');
return str;
}
function brAddFix(str,use_html) {
if(use_html < 2) {
if(typeof window.getSelection != "undefined") //FF
{
str = str.replace(/\n/gi,"<br />");
str = str.replace(ffPattern,"<$1$2>");
}
else if(typeof document.selection != "Control") //IE
{
str = str.replace(/\n/gi,"<br />");
str = str.replace(iePattern,"<$1$2>");
}
}
return str;
}
function brRemove(str,use_html) {
if(use_html < 2) {
str = str.replace(/<br \/>|<br>/gi,"\n");
}
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,'&nbsp;&nbsp;');
memo = memo.replace(/\t/g,'&nbsp;&nbsp;&nbsp;&nbsp;');
}
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 = "", temp, pt = 0;
if(e_use_html < 2) {
str = str.replace(/&nbsp;&nbsp;&nbsp;&nbsp;/gi,'\t');
str = str.replace(/&nbsp;&nbsp;/gi,' ');
}
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 = htmlspecialchars_decode(temp);
} else {
temp = brRemove(temp,e_use_html);
}
memo += temp + matchArray[0];
pt = matchArray.index + matchArray[0].length;
}
temp = str.substring(pt)
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