(function() {
TrexConfig.addTool(
"background",
{
wysiwygonly: _TRUE,
sync: _FALSE,
status: _TRUE,
needRevert: true,
thumbs: Trex.__CONFIG_COMMON.thumbs
}
);
var articleBackgroundColor;
Trex.Tool.Background = Trex.Class.create({
$const: {
__Identity: 'background'
},
$extend: Trex.Tool,
oninitialized: function() {
/* button & menu weave */
this.weave(
new Trex.Button(this.buttonCfg),
new Trex.Menu.ColorPallete(this.menuCfg),
this.handler
);
},
handler: function(color) {
var self = this;
var canvas = self.canvas;
canvas.fireJobs("canvas.apply.backgroundcolor", color);
canvas.history.saveHistory(
{
backgroundColor: articleBackgroundColor,
backgroundImage: canvas.getStyle('backgroundImage')
},
{
backgroundColor: color,
backgroundImage: canvas.getStyle('backgroundImage')
},
function(data){
self._restoreColor(data);
}
);
if (color === null) {
canvas.addStyle({
backgroundColor: canvas.getConfig().styles ? canvas.getConfig().styles.backgroundColor || "" : "",
backgroundImage: canvas.getConfig().styles ? canvas.getConfig().styles.backgroundImage || "" : ""
});
articleBackgroundColor = "";
canvas.getConfig().hasUserBgcolor = _FALSE;
} else {
canvas.addStyle({
backgroundColor: color,
backgroundImage: ""
});
articleBackgroundColor = color;
canvas.getConfig().hasUserBgcolor = _TRUE;
}
},
_restoreColor: function(data) {
var canvas = this.canvas;
canvas.addStyle({ backgroundColor: data.backgroundColor });
if (data.backgroundImage) {
canvas.addStyle({ backgroundImage: data.backgroundImage });
}
articleBackgroundColor = data.backgroundColor;
}
});
Trex.install('canvas.getBgColor & canvas.setBgColor & editor.getContentWithBg',
function(editor, toolbar, sidebar, canvas, config) {
articleBackgroundColor = config.canvas.styles.backgroundColor;
// 저장, 로드할때 content 수정
canvas.getBgColor = function() {
var color = articleBackgroundColor || canvas.getPanel("html").getStyle("backgroundColor");
if ( color ) {
return Trex.Color.getHexColor(color);
} else {
return "";
}
};
canvas.setBgColor = function(color) {
canvas.getPanel("html").addStyle({
"backgroundColor": color || 'transparent'
});
};
editor.getContentWithBg = function() {
var _selColor = canvas.getBgColor().toLowerCase();
if(_selColor == 'transparent') {
return editor.getContent();
} else {
return [
'
',
'| ',
editor.getContent(),
' | ',
'
'
].join("");
}
};
var _originInitContent = canvas.initContent.bind(canvas);
canvas.initContent = function(content) {
if(content.search(/]*txc-wrapper[^>]*>/i) > -1) {
var _selColor;
content = content.replace(/]*txc-wrapper[^>]*>| ]*)>([\s\S]*?)<\/td><\/tr><\/table>/i, function(full, color, html){
_selColor = color.replace(/\sbgcolor="([#\w]*)"/, "$1");
return html;
});
canvas.setBgColor(_selColor);
}
_originInitContent(content);
};
canvas.history.initHistory({
'backgroundColor': config.canvas.styles.backgroundColor,
'backgroundImage': config.canvas.styles.backgroundImage || "none"
});
canvas.reserveJob(Trex.Ev.__IFRAME_LOAD_COMPLETE, function() {
var color = canvas.config.articleBackgroundColor;
if ( color && color != "transparent" ){
canvas.addStyle({
backgroundColor: color,
backgroundImage: ""
});
}
});
canvas.observeJob('canvas.apply.letterpaper', function(data){
if ( data.id ){
canvas.getPanel("html").addStyle({
"backgroundColor": 'transparent'
});
}
});
}
);
})(); |