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 = ''+
'
';
@@ -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("")+9;
+
+ var script = widget_code.substr(pos,length);
+ script = script.replace(/^