var textboxOption = function( data, padding, bgcolor, border ){
return {
data: data,
style: {
padding:padding, backgroundColor:bgcolor, border:border
}
};
};
Trex.__CONFIG_COMMON = {
thumbs: {
options:[
{color:"#FF0000"}, {color:"#FF5E00"}, {color:"#FFBB00"}, {color:"#FFE400"}, {color:"#ABF200"}, {color:"#1FDA11"}, {color:"#00D8FF"}, {color:"#0055FF"}, {color:"#0900FF"}, {color:"#6600FF"}, {color:"#FF00DD"}, {color:"#FF007F"}, {color:"#000000"}, {color:"#FFFFFF"},
{color:"#FFD8D8"}, {color:"#FAE0D4"}, {color:"#FAECC5"}, {color:"#FAF4C0"}, {color:"#E4F7BA"}, {color:"#CEFBC9"}, {color:"#D4F4FA"}, {color:"#D9E5FF"}, {color:"#DAD9FF"}, {color:"#E8D9FF"}, {color:"#FFD9FA"}, {color:"#FFD9EC"}, {color:"#F6F6F6"}, {color:"#EAEAEA"},
{color:"#FFA7A7"}, {color:"#FFC19E"}, {color:"#FFE08C"}, {color:"#FAED7D"}, {color:"#CEF279"}, {color:"#B7F0B1"}, {color:"#B2EBF4"}, {color:"#B2CCFF"}, {color:"#B5B2FF"}, {color:"#D1B2FF"}, {color:"#FFB2F5"}, {color:"#FFB2D9"}, {color:"#D5D5D5"}, {color:"#BDBDBD"},
{color:"#F15F5F"}, {color:"#F29661"}, {color:"#F2CB61"}, {color:"#E5D85C"}, {color:"#BCE55C"}, {color:"#86E57F"}, {color:"#5CD1E5"}, {color:"#6699FF"}, {color:"#6B66FF"}, {color:"#A366FF"}, {color:"#F261DF"}, {color:"#F261AA"}, {color:"#A6A6A6"}, {color:"#8C8C8C"},
{color:"#CC3D3D"}, {color:"#CC723D"}, {color:"#CCA63D"}, {color:"#C4B73B"}, {color:"#9FC93C"}, {color:"#47C83E"}, {color:"#3DB7CC"}, {color:"#4174D9"}, {color:"#4641D9"}, {color:"#7E41D9"}, {color:"#D941C5"}, {color:"#D9418D"}, {color:"#747474"}, {color:"#5D5D5D"},
{color:"#980000"}, {color:"#993800"}, {color:"#997000"}, {color:"#998A00"}, {color:"#6B9900"}, {color:"#2F9D27"}, {color:"#008299"}, {color:"#003399"}, {color:"#050099"}, {color:"#3D0099"}, {color:"#990085"}, {color:"#99004C"}, {color:"#4C4C4C"}, {color:"#353535"},
{color:"#670000"}, {color:"#662500"}, {color:"#664B00"}, {color:"#665C00"}, {color:"#476600"}, {color:"#22741C"}, {color:"#005766"}, {color:"#002266"}, {color:"#030066"}, {color:"#290066"}, {color:"#660058"}, {color:"#660033"}, {color:"#212121"}, {color:"#000000"}
],
transparent: {
color: "transparent",
border: "#999999",
image: "#iconpath/ic_transparent4.gif?v=2",
thumb: "#iconpath/txt_transparent.gif?v=2",
thumbImage:"#iconpath/color_transparent_prev.gif?v=2"
}
},
textbox: {
options: [
textboxOption('txc-textbox1', '10px', '#ffffff', '1px solid #f7f7f7'),
textboxOption('txc-textbox2', '10px', '#eeeeee', '1px solid #eeeeee'),
textboxOption('txc-textbox3', '10px', '#fefeb8', '1px solid #fefeb8'),
textboxOption('txc-textbox4', '10px', '#fedec7', '1px solid #fedec7'),
textboxOption('txc-textbox5', '10px', '#e7fdb5', '1px solid #e7fdb5'),
textboxOption('txc-textbox6', '10px', '#dbe8fb', '1px solid #dbe8fb'),
textboxOption('txc-textbox7', '10px', '#ffffff', '1px dashed #cbcbcb'),
textboxOption('txc-textbox8', '10px', '#eeeeee', '1px dashed #c1c1c1'),
textboxOption('txc-textbox9', '10px', '#fefeb8', '1px dashed #f3c534'),
textboxOption('txc-textbox10', '10px', '#fedec7', '1px dashed #fe8943'),
textboxOption('txc-textbox11', '10px', '#e7fdb5', '1px dashed #9fd331'),
textboxOption('txc-textbox12', '10px', '#dbe8fb', '1px dashed #79a5e4'),
textboxOption('txc-textbox13', '10px', '#ffffff', '1px solid #cbcbcb'),
textboxOption('txc-textbox14', '10px', '#eeeeee', '1px solid #c1c1c1'),
textboxOption('txc-textbox15', '10px', '#fefeb8', '1px solid #f3c534'),
textboxOption('txc-textbox16', '10px', '#fedec7', '1px solid #fe8943'),
textboxOption('txc-textbox17', '10px', '#e7fdb5', '1px solid #9fd331'),
textboxOption('txc-textbox18', '10px', '#dbe8fb', '1px solid #79a5e4'),
textboxOption('txc-textbox19', '10px', '#ffffff', '3px double #cbcbcb'),
textboxOption('txc-textbox20', '10px', '#eeeeee', '3px double #c1c1c1'),
textboxOption('txc-textbox21', '10px', '#fefeb8', '3px double #f3c534'),
textboxOption('txc-textbox22', '10px', '#fedec7', '3px double #fe8943'),
textboxOption('txc-textbox23', '10px', '#e7fdb5', '3px double #9fd331'),
textboxOption('txc-textbox24', '10px', '#dbe8fb', '3px double #79a5e4')
]
}
};
/**
* 에디터 전반적인 설정을 관리하는 클래스로 각 함수를 static 하게 접근할 수 있다.
*
* @class
*/
var TrexConfig = function() {
//preset < daumx < project < page
var __IS_SETUP = _FALSE;
var __POST_PROCESSOR = [];
var __TREX_PARAM = {};
var __TREX_CONFIGURE = {
cdnHost: "//s1.daumcdn.net/editor",
cmnHost: "http://editor.daum.net",
wrapper: "tx_trex_container",
form: 'tx_editor_form',
txIconPath: "images/icon/editor/",
txDecoPath: "images/deco/contents/",
params: [],
events: {
preventUnload: _TRUE,
useHotKey: _TRUE
},
save: { },
adaptor: { },
toolbar: { },
sidebar: {
attachbox: { },
embeder: { },
attacher: { },
searcher: { }
},
plugin: { }
};
var _createAnchors = function() {
return {
"Tool": __TREX_CONFIGURE.toolbar,
"Sidebar": __TREX_CONFIGURE.sidebar,
"Plugin": __TREX_CONFIGURE.plugin,
"Adaptor": __TREX_CONFIGURE.adaptor,
"Save": __TREX_CONFIGURE.save,
"Attacher": __TREX_CONFIGURE.sidebar.attacher,
"Embeder": __TREX_CONFIGURE.sidebar.embeder,
"Searcher": __TREX_CONFIGURE.sidebar.searcher
};
};
var _addParameter = function(tname, pname) {
if (__IS_SETUP) {
throw new Error("configure is already setup (addParameter)")
}
__TREX_PARAM[tname] = pname;
};
var _trexConfig = /** @lends TrexConfig */{
/**
* url을 에디터 설정값과 주어진 파라미터 값으로 변환하여 넘겨준다.
* @function
* @param {String} url - url
* @param {Object} params - 키,값 쌍으로 이루어진 데이터
* @returns {String} 변환된 url
* @example
* TrexConfig.getUrl("#host#path/pages/trex/image.html?username=#username", {
* 'username': 'daumeditor'
* });
*/
getUrl: function(url, params) {
if(typeof url !== 'string') { return url; };
var loader = _WIN['EditorJSLoader'] || opener && opener['EditorJSLoader'] || (PopupUtil && PopupUtil.getOpener()['EditorJSLoader']);
url = url.replace(/#host#path\/pages\//g, loader.getPageBasePath());
url = url.replace(/#host/g, __TREX_CONFIGURE["txHost"]);
url = url.replace(/#path\/?/g, __TREX_CONFIGURE["txPath"]);
url = url.replace(/#cdnhost/g, __TREX_CONFIGURE["cdnHost"]);
url = url.replace(/#cmnhost/g, __TREX_CONFIGURE["cmnHost"]);
for(var _name in __TREX_PARAM) {
url = url.replace(new RegExp("#".concat(_name), "g"), __TREX_CONFIGURE[__TREX_PARAM[_name]]);
}
if(params) {
for(var name in params) {
url = url.replace(new RegExp("#".concat(name), "g"), params[name]);
}
}
return url;
},
/**
* 팝업창을 띄울때 옵션을 문자열로 만들어 넘겨준다.
* @function
* @param {Object} features - 키,값 쌍으로 이루어진 데이터
* @returns {String} 옵션 문자열
* @example
* TrexConfig.getPopFeatures({ left:250, top:65, width:797, height:644 });
*/
getPopFeatures: function(features) {
if(features == _NULL) return _NULL;
if(typeof(features) === "string") { //redefine
return features;
}
var popFeatures = [];
["toolbar", "location", "directories", "menubar"].each(function(name) {
popFeatures.push(name + "=" + (features[name] || "no"));
});
["scrollbars", "resizable"].each(function(name) {
popFeatures.push(name + "=" + (features[name] || "yes"));
});
["width", "height"].each(function(name) {
popFeatures.push(name + "=" + (features[name] || "500"));
});
["left", "top"].each(function(name) {
popFeatures.push(name + "=" + (features[name] || "100"));
});
return popFeatures.join(",");
},
/**
* 컨텐츠 삽입용 이미지의 상위 url을 넘겨준다.
* txDecoPath 값이 셋팅된 경우는 해당 url을 넘겨준다.
* @function
* @param {String} url - url
* @param {String} subpath - 하위 디렉터리 (optional)
* @returns {String} 변환된 컨텐츠 삽입용 이미지url
*/
getDecoPath: function(url) {
return url.replace(/#decopath\/?/, this.getUrl(__TREX_CONFIGURE["txDecoPath"]));
},
/**
* 에디터에서 사용되는 이미지의 상위 url을 넘겨준다.
* txIconPath 값이 셋팅된 경우는 해당 url을 넘겨준다.
* @function
* @param {String} url - url
* @param {String} subpath - 하위 디렉터리 (optional)
* @returns {String} 에디터에서 사용되는 이미지url
*/
getIconPath: function(url) {
return url.replace(/#iconpath\/?/, this.getUrl(__TREX_CONFIGURE["txIconPath"]));
},
/**
* 에디터 로딩이 완료되면 설정값을 셋업시키는 함수로
* postprocessing로 등록된 함수들을 실행하며
* 이후에는 설정값을 추가할 수 없다.
* @private
* @function
* @param {Object} config - new Editor() 할 때 입력한 설정값
* @returns {Object} 셋업된 설정값
*/
setup: function(config) {
$tx.deepcopy(__TREX_CONFIGURE, config);
__TREX_CONFIGURE.params.each(function(name) {
_addParameter(name, name);
});
__POST_PROCESSOR.each(function(fn) {
fn(__TREX_CONFIGURE);
});
__IS_SETUP = _TRUE;
this.setupVersion();
return __TREX_CONFIGURE;
},
setupVersion: function() {
// 다른 곳에서 txVersion 을 사용할 수도 있기에 호환을 위해 txVersion 추가
__TREX_CONFIGURE.txVersion = Editor.version;
},
/**
* 파라미터를 추가한다.
* 파라미터란 getUrl 할 때 기본으로 변환할 키,값들을 정의해놓은 데이터
* @function
* @param {String} tname - url에 포함될 id
* @param {String} pname - 설정값에 존재하는 id
* @example
* TrexConfig.addParameter('host', 'txHost');
*/
addParameter: function(tname, pname) {
_addParameter(tname, pname);
},
/**
* 주어진 설정값을 deep copy로 복사한다.
* @function
* @param {Object} config - 주어진 설정값
*/
clone: function(config) {
return $tx.deepcopy({}, config);
},
/**
* 주어진 설정값에 새로운 설정값들을 deep copy로 복사한다.
* @function
* @param {Object} config - 첫번째 인자는 주어진 설정값, 그 이후는 새로운 설정값들
* @example
* TrexConfig.merge(config, { 'id': 'tx_happy' }, { 'options': [1,2,3] });
*/
merge: function() {
var _config = {};
$A(arguments).each(function(source) {
$tx.deepcopy(_config, source);
});
return _config;
}
};
/**
* 주어진 설정값을 root 설정값에 추가한다.
* @name add
* @memberOf TrexConfig
* @function
* @param {Object} config - 주어진 설정값
* @param {Function} postprocessing - 에디터가 로딩된 후 처리할 함수 (optional)
*/
_trexConfig["add"] = function(config, postprocessing) {
if (__IS_SETUP) {
throw new Error("configure is already setup (mergeConfig)")
}
$tx.deepcopy(__TREX_CONFIGURE, config);
if(postprocessing) {
__POST_PROCESSOR.push(postprocessing);
}
};
/**
* 주어진 키로 설정값을 리턴한다.
* @name get
* @memberOf TrexConfig
* @function
* @param {String} key - 주어진 키
*/
_trexConfig["get"] = function(key) {
return __TREX_CONFIGURE[key];
};
/**
* 주어진 키로 주어진 설정값을 root/toolbar 아래에 추가한다.
* @name addTool
* @memberOf TrexConfig
* @function
* @param {String} key - 주어진 키값
* @param {Object} config - 주어진 설정값
* @param {Function} postprocessing - 에디터가 로딩된 후 처리할 함수 (optional)
*/
/**
* 주어진 키로 주어진 설정값을 root/sidebar 아래에 추가한다.
* @name addSidebar
* @memberOf TrexConfig
* @function
* @param {String} key - 주어진 키값
* @param {Object} config - 주어진 설정값
* @param {Function} postprocessing - 에디터가 로딩된 후 처리할 함수 (optional)
*/
/**
* 주어진 키로 주어진 설정값을 root/plugin 아래에 추가한다.
* @name addPlugin
* @memberOf TrexConfig
* @function
* @param {String} key - 주어진 키값
* @param {Object} config - 주어진 설정값
* @param {Function} postprocessing - 에디터가 로딩된 후 처리할 함수 (optional)
*/
/**
* 주어진 키로 주어진 설정값을 root/adaptor 아래에 추가한다.
* @name addAdaptor
* @memberOf TrexConfig
* @function
* @param {String} key - 주어진 키값
* @param {Object} config - 주어진 설정값
* @param {Function} postprocessing - 에디터가 로딩된 후 처리할 함수 (optional)
*/
/**
* 주어진 키로 주어진 설정값을 root/save 아래에 추가한다.
* @name addSave
* @memberOf TrexConfig
* @function
* @param {String} key - 주어진 키값
* @param {Object} config - 주어진 설정값
* @param {Function} postprocessing - 에디터가 로딩된 후 처리할 함수 (optional)
*/
/**
* 주어진 키로 주어진 설정값을 root/sidebar/attacher 아래에 추가한다.
* @name addAttacher
* @memberOf TrexConfig
* @function
* @param {String} key - 주어진 키값
* @param {Object} config - 주어진 설정값
* @param {Function} postprocessing - 에디터가 로딩된 후 처리할 함수 (optional)
*/
/**
* 주어진 키로 주어진 설정값을 root/sidebar/embeder 아래에 추가한다.
* @name addEmbeder
* @memberOf TrexConfig
* @function
* @param {String} key - 주어진 키값
* @param {Object} config - 주어진 설정값
* @param {Function} postprocessing - 에디터가 로딩된 후 처리할 함수 (optional)
*/
/**
* 주어진 키로 주어진 설정값을 root/sidebar/searcher 아래에 추가한다.
* @name addSearcher
* @memberOf TrexConfig
* @function
* @param {String} key - 주어진 키값
* @param {Object} config - 주어진 설정값
* @param {Function} postprocessing - 에디터가 로딩된 후 처리할 함수 (optional)
*/
var _addConfig = function(key, config, postprocessing) {
if (__IS_SETUP) {
throw new Error("configure is already setup (mergeConfig)")
}
this[key] = this[key] || {};
$tx.deepcopy(this[key], config);
if(postprocessing) {
__POST_PROCESSOR.push(postprocessing);
}
};
/**
* 주어진 키로 root/toolbar[key]의 설정값을 리턴한다.
* @name getTool
* @memberOf TrexConfig
* @function
* @param {String,Object} key - 주어진 키
*/
/**
* 주어진 키로 root/sidebar[key]의 설정값을 리턴한다.
* @name getSidebar
* @memberOf TrexConfig
* @function
* @param {String,Object} key - 주어진 키
*/
/**
* 주어진 키로 root/adaptor[key]의 설정값을 리턴한다.
* @name getAdaptor
* @memberOf TrexConfig
* @function
* @param {String,Object} key - 주어진 키
*/
/**
* 주어진 키로 root/save[key]의 설정값을 리턴한다.
* @name getSave
* @memberOf TrexConfig
* @function
* @param {String,Object} key - 주어진 키
*/
/**
* 주어진 키로 root/sidebar/attacher[key]의 설정값을 리턴한다.
* @name getAttacher
* @memberOf TrexConfig
* @function
* @param {String,Object} key - 주어진 키
*/
/**
* 주어진 키로 root/sidebar/embeder[key]의 설정값을 리턴한다.
* @name getEmbeder
* @memberOf TrexConfig
* @function
* @param {String,Object} key - 주어진 키
*/
/**
* 주어진 키로 root/sidebar/searcher[key]의 설정값을 리턴한다.
* @name getSearcher
* @memberOf TrexConfig
* @function
* @param {String,Object} key - 주어진 키
*/
var _getConfig = function(key) {
return this[key];
};
var _anchors = _createAnchors();
for(var _name in _anchors) {
_trexConfig["add" + _name] = _addConfig.bind(_anchors[_name]);
_trexConfig["get" + _name] = _getConfig.bind(_anchors[_name]);
}
return _trexConfig;
}();
_WIN.TrexConfig = TrexConfig;