diff --git a/modules/widget/tpl/css/widget.css b/modules/widget/tpl/css/widget.css index b28774fb4..140e04882 100644 --- a/modules/widget/tpl/css/widget.css +++ b/modules/widget/tpl/css/widget.css @@ -56,7 +56,7 @@ div.editor { width:700px; } ul.midCommand { float:left; margin:0 0 0 10px;; padding:0; *zoom:1; } ul.midCommand li { display:block; margin-bottom:5px; list-style:none;} -a.widgetStyle { float:left; margin-right:10px; border:1px solid #CCC; overflow:hidden; *zoom:1; } +a.widgetStyle { float:left; margin:0 10px 10px 0; border:1px solid #CCC; overflow:hidden; *zoom:1; width:96px; height:96px;} a.widgetStyle:hover { border:1px solid #444; } a.widgetStyle.selected { border:1px solid #000; } a.widgetStyle img {width:96px; height:96px; margin:1px; } diff --git a/modules/widget/tpl/filter/style_generate_code_in_page.xml b/modules/widget/tpl/filter/style_generate_code_in_page.xml index bf81033a5..bbb543a24 100644 --- a/modules/widget/tpl/filter/style_generate_code_in_page.xml +++ b/modules/widget/tpl/filter/style_generate_code_in_page.xml @@ -6,4 +6,4 @@ - \ No newline at end of file + diff --git a/modules/widget/tpl/js/widget.js b/modules/widget/tpl/js/widget.js index 126d33f21..9f0d14e22 100644 --- a/modules/widget/tpl/js/widget.js +++ b/modules/widget/tpl/js/widget.js @@ -4,24 +4,6 @@ * @brief 위젯 관리용 자바스크립트 **/ -/* document.write(ln)의 경우 ajax로 처리시 가로채기 위한 함수 */ -document.write = document.writeln = function(str){ - if ( str.match(/^<\//) ) return; - if ( !window.opera ) str = str.replace(/&(?![#a-z0-9]+;)/g, "&"); - str = str.replace(/(<[a-z]+)/g, "$1 xmlns='http://www.w3.org/1999/xhtml'"); - var div = null; - if(document.createElementNS) div = document.createElementNS("http://www.w3.org/1999/xhtml","div"); - else div = xCreateElement('div'); - xInnerHtml(div, str); - var pos; - pos = document.getElementsByTagName("*"); - pos = pos[pos.length - 1]; - var nodes = div.childNodes; - while ( nodes.length ) { - pos.parentNode.appendChild( nodes[0] ); - } -}; - /* DOM 속성을 구하기 위한 몇가지 함수들.. */ // style의 값을 구하는게 IE랑 그외가 다름. function getStyle(obj) { @@ -267,12 +249,15 @@ function completeAddContent(ret_obj, response_tags, params, fo_obj) { attr = contentWidget.get(0).attributes; } + var editor_sequence = params['editor_sequence']; + var content = editorGetContent(editor_sequence); + var tpl = ''+ '
'+ '
'+ '
'+ '
'+ - '
'+ + '
'+content+'
'+ '
'+ ''+ '
'; @@ -340,34 +325,95 @@ function doFitBorderSize() { } var selectedWidget = null; +var writedText = null; +var checkDocumentWrite = false; + +// document.write(ln)의 경우 ajax로 처리시 가로채기 위한 함수 +// 아래 함수는 str 내용을 단지 전역 변수에 보관 후 doAddWidgetCode 에서 재사용하기 위해 사용됨. +window.document.write = window.document.writeln = function(str){ + if(checkDocumentWrite) { + writedText = str; + return; + } + if ( str.match(/^<\//) ) return; + if ( !window.opera ) str = str.replace(/&(?![#a-z0-9]+;)/g, "&"); + str = str.replace(/(<[a-z]+)/g, "$1 xmlns='http://www.w3.org/1999/xhtml'"); + + var div = xCreateElement("DIV"); + xInnerHtml(div, str); + + var pos; + pos = document.getElementsByTagName("*"); + pos = pos[pos.length - 1]; + var nodes = div.childNodes; + while ( nodes.length ) { + pos.parentNode.appendChild( nodes[0] ); + } +} // 위젯 추가 function doAddWidgetCode(widget_code) { + restoreWidgetButtons(); + + // css 추가 + var tmp = widget_code; + while(tmp.indexOf(""); + var cssfile = tmp.substr(9,eos-9); + if(!cssfile) break; + tmp = tmp.substr(eos); + + var cssfile = request_uri+'/'+cssfile; + var css =''; + var dummy = xCreateElement("DIV"); + xInnerHtml(dummy , css); + document.body.appendChild(dummy); + } + + // widget 코드에서 javascript 부분을 빼서 eval후 결과값을 대체함 + checkDocumentWrite = true; ///< document.write(ln)등의 함수값을 바로 사용하기 위한 check flag + + // widget_code의 javascript 부분 수정 + var tmp = widget_code.toLowerCase(); + while(tmp.indexOf("-1) { + + var pos = tmp.indexOf("")+9; + + var script = widget_code.substr(pos,length); + script = script.replace(/^]*)>/i,'').replace(/<\/script>$/i,''); + + writedText = null; + eval(script); + widget_code = widget_code.substr(0,pos)+writedText+widget_code.substr(pos+length); + tmp = widget_code.toLowerCase(); + } + + checkDocumentWrite = false; + + // html 추가 var dummy = xCreateElement('div'); xInnerHtml(dummy, widget_code); + var obj = dummy.childNodes[0]; - var nodes = dummy.childNodes; + if(selectedWidget && selectedWidget.getAttribute("widget")) { + selectedWidget.parentNode.insertBefore(obj, selectedWidget); + selectedWidget.parentNode.removeChild(selectedWidget); + } else { + xGetElementById('zonePageContent').appendChild(obj); + } - var zoneObj = xGetElementById('zonePageContent'); + selectedWidget = null; + /* //zoneObj.style.visibility = 'hidden'; zoneObj.style.opacity = 0.2; zoneObj.style.filter = "alpha(opacity=20)"; - - if(selectedWidget && selectedWidget.getAttribute("widget")) { - while ( nodes.length ) { - if(nodes[0].className == 'widgetClass') zoneObj.parentNode.insertBefore(nodes[0], zoneObj); - else selectedWidget.parentNode.insertBefore(nodes[0], selectedWidget); - } - selectedWidget.parentNode.removeChild(selectedWidget); - } else { - while ( nodes.length ) { - if(nodes[0].className == 'widgetClass') zoneObj.parentNode.insertBefore(nodes[0], zoneObj); - else zoneObj.appendChild(nodes[0]); - } - } - // 위젯 추가후 페이지 리로딩 var tpl = getWidgetContent(); @@ -375,6 +421,7 @@ function doAddWidgetCode(widget_code) { fo_obj.content.value = tpl; fo_obj.mid.value = current_mid; fo_obj.submit(); + */ } // 클릭 이벤트시 위젯의 수정/제거/이벤트 무효화 처리 diff --git a/modules/widget/tpl/js/widget_admin.js b/modules/widget/tpl/js/widget_admin.js index 2aeeca2ac..8501d1f9d 100644 --- a/modules/widget/tpl/js/widget_admin.js +++ b/modules/widget/tpl/js/widget_admin.js @@ -75,6 +75,15 @@ function getWidgetVars() { if(!opener || !opener.selectedWidget || !opener.selectedWidget.getAttribute("widget")) return; selected_node = opener.selectedWidget; + if(!xGetElementById('fo_widget').widgetstyle.value) { + xGetElementById('fo_widget').widgetstyle.value = selected_node.getAttribute('widgetstyle'); + } + + doFillWidgetVars(); + /* + if(!opener || !opener.selectedWidget || !opener.selectedWidget.getAttribute("widget")) return; + selected_node = opener.selectedWidget; + var fo_widget = jQuery('#fo_widget'); var attrs = selected_node.attributes; for (i=0; i< attrs.length ; i++){ @@ -87,13 +96,12 @@ function getWidgetVars() { } } } + */ } /* 페이지 모듈에서 내용의 위젯을 더블클릭하여 수정하려고 할 경우 */ function doFillWidgetVars() { - if(!opener || !opener.selectedWidget || !opener.selectedWidget.getAttribute("widget")) return; - selected_node = opener.selectedWidget; // 스킨과 컬러셋은 기본 @@ -125,6 +133,7 @@ function doFillWidgetVars() { for(var j=0;j
+ + + + + + + - - - - -
+ - +
diff --git a/modules/widget/widget.controller.php b/modules/widget/widget.controller.php index dc76b1514..bf87591dd 100644 --- a/modules/widget/widget.controller.php +++ b/modules/widget/widget.controller.php @@ -99,7 +99,7 @@ function procWidgetGenerateCodeInPage() { $widget = Context::get('selected_widget'); if(!$widget) return new Object(-1,'msg_invalid_request'); -// if(!Context::get('skin')) return new Object(-1,Context::getLang('msg_widget_skin_is_null')); + if(!Context::get('skin')) return new Object(-1,Context::getLang('msg_widget_skin_is_null')); $attribute = $this->arrangeWidgetVars($widget, Context::getRequestVars(), $vars); // 결과물을 구함 diff --git a/modules/wiki/skins/xe_wiki/comment.html b/modules/wiki/skins/xe_wiki/comment.html index b1063213e..66978ab90 100644 --- a/modules/wiki/skins/xe_wiki/comment.html +++ b/modules/wiki/skins/xe_wiki/comment.html @@ -2,7 +2,6 @@
{@ $_comment_list = $oDocument->getComments() } - {@ debugPrint($oDocument) }
diff --git a/modules/wiki/wiki.controller.php b/modules/wiki/wiki.controller.php index 2d9709c72..39889e196 100644 --- a/modules/wiki/wiki.controller.php +++ b/modules/wiki/wiki.controller.php @@ -138,7 +138,6 @@ function procWikiDeleteComment() { // check the comment's sequence number - debugPrint('here'); $comment_srl = Context::get('comment_srl'); if(!$comment_srl) return $this->doError('msg_invalid_request'); @@ -146,7 +145,6 @@ $oCommentController = &getController('comment'); $output = $oCommentController->deleteComment($comment_srl, $this->grant->manager); - debugPrint($output); if(!$output->toBool()) return $output; $this->add('mid', Context::get('mid'));