diff --git a/modules/editor/components/table_maker/icon.gif b/modules/editor/components/table_maker/icon.gif new file mode 100644 index 000000000..e4664db83 Binary files /dev/null and b/modules/editor/components/table_maker/icon.gif differ diff --git a/modules/editor/components/table_maker/lang/ko.lang.php b/modules/editor/components/table_maker/lang/ko.lang.php new file mode 100644 index 000000000..324ca3fd4 --- /dev/null +++ b/modules/editor/components/table_maker/lang/ko.lang.php @@ -0,0 +1,41 @@ + + * @brief 위지윅에디터(editor) 모듈 > 인용구 (quotation) 컴포넌트의 언어팩 + **/ + + $lang->quotation = "인용구 사용하기"; + $lang->quotation_use_folder = "접기 기능 사용"; + $lang->quotation_opener = "열기 버튼 이름"; + $lang->quotation_closer = "닫기 버튼 이름"; + $lang->quotation_padding = "내부 여백"; + $lang->quotation_margin = "외부 여백"; + $lang->quotation_border_color = "테두리 색"; + $lang->quotation_border_thickness = "테두리 굵기"; + + $lang->folder_text_bold = "글자 굵게"; + $lang->about_folder_text_bold = "선택하시면 링크의 글자가 굵게 표시됩니다"; + + $lang->folder_text_color = "링크 색상 "; + $lang->folder_text_color_blue = "파란색"; + $lang->folder_text_color_red = "붉은색"; + $lang->folder_text_color_yellow = "노란색"; + $lang->folder_text_color_green = "녹색"; + + $lang->quotation_border_style = "테두리 종류"; + $lang->quotation_border_style_list = array( + "없음", + "실선", + "점선", + "좌측 실선", + "우측 실선", + ); + + $lang->quotation_bg_color = "배경 색"; + + $lang->quotation_opener = "열기 링크 이름"; + $lang->quotation_opener = "닫기 링크 이름"; + $lang->quotation_cmd_opener = "더 보기..."; + $lang->quotation_cmd_closer = "닫기"; +?> diff --git a/modules/editor/components/table_maker/quotation.class.php b/modules/editor/components/table_maker/quotation.class.php new file mode 100644 index 000000000..b536153f9 --- /dev/null +++ b/modules/editor/components/table_maker/quotation.class.php @@ -0,0 +1,109 @@ +upload_target_srl = $upload_target_srl; + $this->component_path = $component_path; + } + + /** + * @brief popup window요청시 popup window에 출력할 내용을 추가하면 된다 + **/ + function getPopupContent() { + // 템플릿을 미리 컴파일해서 컴파일된 소스를 return + $tpl_path = $this->component_path.'tpl'; + $tpl_file = 'popup.html'; + + Context::set("tpl_path", $tpl_path); + + require_once("./classes/template/TemplateHandler.class.php"); + $oTemplate = new TemplateHandler(); + return $oTemplate->compile($tpl_path, $tpl_file); + } + + /** + * @brief 에디터 컴포넌트가 별도의 고유 코드를 이용한다면 그 코드를 html로 변경하여 주는 method + * + * 이미지나 멀티미디어, 설문등 고유 코드가 필요한 에디터 컴포넌트는 고유코드를 내용에 추가하고 나서 + * DocumentModule::transContent() 에서 해당 컴포넌트의 transHtml() method를 호출하여 고유코드를 html로 변경 + **/ + function transHTML($xml_obj) { + $use_folder = $xml_obj->attrs->use_folder; + $folder_opener = $xml_obj->attrs->folder_opener; + if(!$folder_opener) $folder_opener = "more..."; + $folder_closer = $xml_obj->attrs->folder_closer; + if(!$folder_closer) $folder_closer= "close..."; + $bold = $xml_obj->attrs->bold; + $color = $xml_obj->attrs->color; + $margin = $xml_obj->attrs->margin; + $padding = $xml_obj->attrs->padding; + $border_style = $xml_obj->attrs->border_style; + $border_thickness = $xml_obj->attrs->border_thickness; + $border_color = $xml_obj->attrs->border_color; + $bg_color = $xml_obj->attrs->bg_color; + + $output = ""; + $style = sprintf('margin:%spx;padding:%spx;background-color:#%s;', $margin, $padding, $bg_color); + switch($border_style) { + case "solid" : + $style .= "border:".$border_thickness."px solid #".$border_color.";"; + break; + case "dotted" : + $style .= "border:".$border_thickness."px dotted #".$border_color.";"; + break; + case "left_solid" : + $style .= "border-left:".$border_thickness."px solid #".$border_color.";"; + break; + case "left_dotted" : + $style .= "border-elft:".$border_thickness."px dotted #".$border_color.";"; + break; + } + + if($use_folder == "Y") { + $folder_id = rand(1000000,9999999); + + if($bold == "Y") $class = "bold"; + switch($color) { + case "red" : + $class .= " editor_red_text"; + break; + case "yellow" : + $class .= " editor_yellow_text"; + break; + case "green" : + $class .= " editor_green_text"; + break; + default : + $class .= " editor_blue_text"; + break; + } + + $style .= "display:none;"; + + $folder_margin = sprintf("%spx %spx %spx %spx", $margin, $margin, 10, $margin); + $output .= sprintf('
%s
', $folder_id, $folder_margin, $class, $folder_id, $folder_opener); + $output .= sprintf('', $folder_id, $folder_margin, $class, $folder_id, $folder_closer); + + $output .= sprintf('
', $style, $folder_id); + debugPrint($output); + } else { + $output .= sprintf('
', $style); + } + return $output; + } + + } +?> diff --git a/modules/editor/components/table_maker/tpl/images/blank.gif b/modules/editor/components/table_maker/tpl/images/blank.gif new file mode 100644 index 000000000..35d42e808 Binary files /dev/null and b/modules/editor/components/table_maker/tpl/images/blank.gif differ diff --git a/modules/editor/components/table_maker/tpl/images/border_dotted.gif b/modules/editor/components/table_maker/tpl/images/border_dotted.gif new file mode 100644 index 000000000..eaf1ae738 Binary files /dev/null and b/modules/editor/components/table_maker/tpl/images/border_dotted.gif differ diff --git a/modules/editor/components/table_maker/tpl/images/border_left_dotted.gif b/modules/editor/components/table_maker/tpl/images/border_left_dotted.gif new file mode 100644 index 000000000..101259cb7 Binary files /dev/null and b/modules/editor/components/table_maker/tpl/images/border_left_dotted.gif differ diff --git a/modules/editor/components/table_maker/tpl/images/border_left_solid.gif b/modules/editor/components/table_maker/tpl/images/border_left_solid.gif new file mode 100644 index 000000000..10b7e789f Binary files /dev/null and b/modules/editor/components/table_maker/tpl/images/border_left_solid.gif differ diff --git a/modules/editor/components/table_maker/tpl/images/border_solid.gif b/modules/editor/components/table_maker/tpl/images/border_solid.gif new file mode 100644 index 000000000..9fbf79f57 Binary files /dev/null and b/modules/editor/components/table_maker/tpl/images/border_solid.gif differ diff --git a/modules/editor/components/table_maker/tpl/popup.css b/modules/editor/components/table_maker/tpl/popup.css new file mode 100644 index 000000000..e4162b759 --- /dev/null +++ b/modules/editor/components/table_maker/tpl/popup.css @@ -0,0 +1,131 @@ +.editor_window { + width:555px; + text-align:center; +} + +.editor_title { + font-size:10pt; + font-weight:bold; + clear:both; + height:20px; + background-color:#555555; + color:#EFEFEF; + vertical-align:middle; + padding-top:5px; + border-bottom:1px solid #000000; + text-align:center; +} + +.header { + float:left; + width:100px; + clear:left; + text-align:left; + font-weight:bold; + margin:5px; + font-size:9pt; + font-size:9pt; +} + +.body { + float:left; + width:400px; + text-align:left; + margin:5px; + font-size:9pt; +} + +#folder_area { + clear:left; + height:115px; + border:1px dotted #DDDDDD; + margin:0px 10px 10px 10px; +} + +.body label { + cursor:pointer; + font-size:9pt; +} + +.editor_input { + width:50px; + height:13px; + font-size:9pt; + border:1px solid #AAAAAA; +} + +.editor_input_long { + width:380px; + height:13px; + font-size:9pt; + border:1px solid #AAAAAA; +} + +.editor_select { + width:80px; + height:14px; + font-size:9pt; +} + +.editor_button_area { + clear:both; + text-align:center; + height:25px; + padding-top:3px; + background-color:#EEEEEE; +} + +.editor_button { + margin-top:4px; + background-color:#FFFFFF; + border:1px solid #AAAAAA; + height:16px; + font-size:8pt; +} + +img.color_icon { + width:14px; + height:14px; + border:1px solid #FFFFFF; +} + +img.color_icon_over { + width:14px; + height:14px; + border:1px solid #000000; + cursor:pointer; +} + +img.border_preview_color { + width:30px; + height:16px; + border:1px solid #EEEEEE; + background-color:#88EE22; +} + +img.border_preview_none_color { + width:30px; + height:12px; + border:1px solid #EEEEEE; + background-color:#FFFFFF; +} + +img.bg_preview_color { + width:30px; + height:16px; + border:1px solid #000000; + background-color:#FFFFFF; +} + +.editor_color_box { + clear:both; + height:65px; + width:400px; + border:1px solid #DDDDDD; + padding:2px; + margin-bottom:3px; +} + +.editor_color_input { + clear:both; +} diff --git a/modules/editor/components/table_maker/tpl/popup.html b/modules/editor/components/table_maker/tpl/popup.html new file mode 100644 index 000000000..97feb4a64 --- /dev/null +++ b/modules/editor/components/table_maker/tpl/popup.html @@ -0,0 +1,132 @@ + + + + +
+
+
{$lang->quotation}
+ +
{$lang->quotation_use_folder}
+
+ + + +
{$lang->quotation_padding}
+
px
+ +
{$lang->quotation_margin}
+
px
+ +
{$lang->quotation_border_style}
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
{$lang->quotation_border_thickness}
+
px
+ +
{$lang->quotation_border_color}
+
+
+ +
+
+ + + + + + +
blank#
+
+
+ +
{$lang->quotation_bg_color}
+
+
+ +
+
+ + + + + + +
blank#
+
+
+ +
+ + +
+
+
diff --git a/modules/editor/components/table_maker/tpl/popup.js b/modules/editor/components/table_maker/tpl/popup.js new file mode 100644 index 000000000..74a77ac39 --- /dev/null +++ b/modules/editor/components/table_maker/tpl/popup.js @@ -0,0 +1,261 @@ +/** + * popup으로 열렸을 경우 부모창의 위지윅에디터에 select된 멀티미디어 컴포넌트 코드를 체크하여 + * 있으면 가져와서 원하는 곳에 삽입 + **/ +var selected_node = null; +function getQuotation() { + // 부모 위지윅 에디터에서 선택된 영역이 있는지 확인 + if(typeof(opener)=="undefined") return; + + var node = opener.editorPrevNode; + if(!node || node.nodeName != "DIV") return; + + selected_node = node; + + var use_folder = node.getAttribute("use_folder"); + var folder_opener = node.getAttribute("folder_opener"); + var folder_closer = node.getAttribute("folder_closer"); + var bold = node.getAttribute("bold"); + var color = node.getAttribute("color"); + var margin = node.getAttribute("margin"); + var padding = node.getAttribute("padding"); + var border_style = node.getAttribute("border_style"); + var border_thickness = node.getAttribute("border_thickness"); + var border_color = node.getAttribute("border_color"); + var bg_color = node.getAttribute("bg_color"); + + if(use_folder=="Y") xGetElementById("quotation_use").checked = true; + else xGetElementById("quotation_use").checked = false; + toggle_folder( xGetElementById("quotation_use") ); + + if(bold=="Y") xGetElementById("quotation_bold").checked = true; + switch(color) { + case "red" : + xGetElementById("quotation_color_red").checked = true; + break; + case "yellow" : + xGetElementById("quotation_color_yellow").checked = true; + break; + case "green" : + xGetElementById("quotation_color_green").checked = true; + break; + default : + xGetElementById("quotation_color_blue").checked = true; + break; + } + + xGetElementById("quotation_opener").value = folder_opener; + xGetElementById("quotation_closer").value = folder_closer; + xGetElementById("quotation_margin").value = margin; + xGetElementById("quotation_padding").value = padding; + + switch(border_style) { + case "solid" : + xGetElementById("border_style_solid").checked = true; + break; + case "dotted" : + xGetElementById("border_style_dotted").checked = true; + break; + case "left_solid" : + xGetElementById("border_style_left_solid").checked = true; + break; + case "left_dotted" : + xGetElementById("border_style_left_dotted").checked = true; + break; + default : + xGetElementById("border_style_none").checked = true; + break; + } + + xGetElementById("border_thickness").value = border_thickness; + + select_color('border', border_color); + select_color('bg', bg_color); +} + +/* 추가 버튼 클릭시 부모창의 위지윅 에디터에 인용구 추가 */ +function insertQuotation() { + if(typeof(opener)=="undefined") return; + + var use_folder = "N"; + if(xGetElementById("quotation_use").checked) use_folder = "Y"; + + var folder_opener = xGetElementById("quotation_opener").value; + var folder_closer = xGetElementById("quotation_closer").value; + if(!folder_opener||!folder_closer) use_folder = "N"; + + var bold = "N"; + if(xGetElementById("quotation_bold").checked) bold = "Y"; + var color = "blue"; + if(xGetElementById("quotation_color_red").checked) color = "red"; + if(xGetElementById("quotation_color_yellow").checked) color = "yellow"; + if(xGetElementById("quotation_color_green").checked) color = "green"; + + var margin = parseInt(xGetElementById("quotation_margin").value,10); + + var padding = parseInt(xGetElementById("quotation_padding").value,10); + + var border_style = "solid"; + if(xGetElementById("border_style_none").checked) border_style = "none"; + if(xGetElementById("border_style_solid").checked) border_style = "solid"; + if(xGetElementById("border_style_dotted").checked) border_style = "dotted"; + if(xGetElementById("border_style_left_solid").checked) border_style = "left_solid"; + if(xGetElementById("border_style_left_dotted").checked) border_style = "left_dotted"; + + var border_thickness = parseInt(xGetElementById("border_thickness").value,10); + + var border_color = xGetElementById("border_color_input").value; + + var bg_color = xGetElementById("bg_color_input").value; + + var content = ""; + if(selected_node) content = xInnerHtml(selected_node); + else content = opener.editorGetSelectedHtml(opener.editorPrevSrl); + + var style = "margin:"+margin+"px; padding:"+padding+"px; background-color:#"+bg_color+";"; + switch(border_style) { + case "solid" : + style += "border:"+border_thickness+"px solid #"+border_color+";"; + break; + case "dotted" : + style += "border:"+border_thickness+"px dotted #"+border_color+";"; + break; + case "left_solid" : + style += "border-left:"+border_thickness+"px solid #"+border_color+";"; + break; + case "left_dotted" : + style += "border-left:"+border_thickness+"px dotted #"+border_color+";"; + break; + } + + if(!content) content = " "; + + var text = "\n
"+content+"
\n
"; + + if(selected_node) { + selected_node.setAttribute("use_folder", use_folder); + selected_node.setAttribute("folder_opener", folder_opener); + selected_node.setAttribute("folder_closer", folder_closer); + selected_node.setAttribute("bold", bold); + selected_node.setAttribute("color", color); + selected_node.setAttribute("margin", margin); + selected_node.setAttribute("padding", padding); + selected_node.setAttribute("border_style", border_style); + selected_node.setAttribute("border_thickness", border_thickness); + selected_node.setAttribute("border_color", border_color); + selected_node.setAttribute("bg_color", bg_color); + selected_node.setAttribute("style", style); + + selected_node.style.margin = margin+"px"; + selected_node.style.padding = padding +"px"; + selected_node.style.backgroundColor = "#"+bg_color; + + selected_node.style.borderStyle = "none"; + selected_node.style.borderWidth = "0px"; + + switch(border_style) { + case "solid" : + selected_node.style.borderStyle = "solid"; + selected_node.style.borderWidth = border_thickness+"px"; + selected_node.style.borderColor = "#"+border_color; + break; + case "dotted" : + selected_node.style.borderStyle = "dotted"; + selected_node.style.borderWidth = border_thickness+"px"; + selected_node.style.borderColor = "#"+border_color; + break; + case "left_solid" : + selected_node.style.borderLeftStyle = "solid"; + selected_node.style.borderLeftWidth = border_thickness+"px"; + selected_node.style.borderLeftColor = "#"+border_color; + break; + case "left_dotted" : + selected_node.style.borderLeftStyle = "dotted"; + selected_node.style.borderLeftWidth = border_thickness+"px"; + selected_node.style.borderCLeftColor = "#"+border_color; + break; + default : + selected_node.style.borderStyle = "solid"; + selected_node.style.borderWidth = "0px"; + selected_node.style.borderColor = "#"+border_color; + break; + } + + opener.editorFocus(opener.editorPrevSrl); + + } else { + + opener.editorFocus(opener.editorPrevSrl); + var iframe_obj = opener.editorGetIFrame(opener.editorPrevSrl) + opener.editorReplaceHTML(iframe_obj, text); + opener.editorFocus(opener.editorPrevSrl); + } + + window.close(); +} + +/* 색상 클릭시 */ +function select_color(type, code) { + xGetElementById(type+"_preview_color").style.backgroundColor = "#"+code; + xGetElementById(type+"_color_input").value = code; + + if(type=="border") { + xGetElementById("border_style_solid_icon").style.backgroundColor = "#"+code; + xGetElementById("border_style_dotted_icon").style.backgroundColor = "#"+code; + xGetElementById("border_style_left_solid_icon").style.backgroundColor = "#"+code; + xGetElementById("border_style_left_dotted_icon").style.backgroundColor = "#"+code; + } +} + +/* 수동 색상 변경시 */ +function manual_select_color(type, obj) { + if(obj.value.length!=6) return; + code = obj.value; + xGetElementById(type+"_preview_color").style.backgroundColor = "#"+code; + + if(type=="border") { + xGetElementById("border_style_solid_icon").style.backgroundColor = "#"+code; + xGetElementById("border_style_dotted_icon").style.backgroundColor = "#"+code; + xGetElementById("border_style_left_solid_icon").style.backgroundColor = "#"+code; + xGetElementById("border_style_left_dotted_icon").style.backgroundColor = "#"+code; + } +} + +/* 색상표를 출력 */ +function printColor(type, blank_img_src) { + var colorTable = new Array('22','44','66','88','AA','CC','EE'); + var html = ""; + + for(var i=0;i<8;i+=1) html += printColorBlock(type, i.toString(16)+i.toString(16)+i.toString(16)+i.toString(16)+i.toString(16)+i.toString(16), blank_img_src); + + for(var i=0; i\"color\"<\/div>"; + } else { + return "
\"color\"<\/div>"; + } +} + +/* 폴더 여닫기 기능 toggle */ +function toggle_folder(obj) { + if(obj.checked) xGetElementById("folder_area").style.display = "block"; + else xGetElementById("folder_area").style.display = "none"; + setFixedPopupSize(); +} + +xAddEventListener(window, "load", getQuotation);