background.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. (function() {
  2. TrexConfig.addTool(
  3. "background",
  4. {
  5. wysiwygonly: _TRUE,
  6. sync: _FALSE,
  7. status: _TRUE,
  8. needRevert: true,
  9. thumbs: Trex.__CONFIG_COMMON.thumbs
  10. }
  11. );
  12. var articleBackgroundColor;
  13. Trex.Tool.Background = Trex.Class.create({
  14. $const: {
  15. __Identity: 'background'
  16. },
  17. $extend: Trex.Tool,
  18. oninitialized: function() {
  19. /* button & menu weave */
  20. this.weave(
  21. new Trex.Button(this.buttonCfg),
  22. new Trex.Menu.ColorPallete(this.menuCfg),
  23. this.handler
  24. );
  25. },
  26. handler: function(color) {
  27. var self = this;
  28. var canvas = self.canvas;
  29. canvas.fireJobs("canvas.apply.backgroundcolor", color);
  30. canvas.history.saveHistory(
  31. {
  32. backgroundColor: articleBackgroundColor,
  33. backgroundImage: canvas.getStyle('backgroundImage')
  34. },
  35. {
  36. backgroundColor: color,
  37. backgroundImage: canvas.getStyle('backgroundImage')
  38. },
  39. function(data){
  40. self._restoreColor(data);
  41. }
  42. );
  43. if (color === null) {
  44. canvas.addStyle({
  45. backgroundColor: canvas.getConfig().styles ? canvas.getConfig().styles.backgroundColor || "" : "",
  46. backgroundImage: canvas.getConfig().styles ? canvas.getConfig().styles.backgroundImage || "" : ""
  47. });
  48. articleBackgroundColor = "";
  49. canvas.getConfig().hasUserBgcolor = _FALSE;
  50. } else {
  51. canvas.addStyle({
  52. backgroundColor: color,
  53. backgroundImage: ""
  54. });
  55. articleBackgroundColor = color;
  56. canvas.getConfig().hasUserBgcolor = _TRUE;
  57. }
  58. },
  59. _restoreColor: function(data) {
  60. var canvas = this.canvas;
  61. canvas.addStyle({ backgroundColor: data.backgroundColor });
  62. if (data.backgroundImage) {
  63. canvas.addStyle({ backgroundImage: data.backgroundImage });
  64. }
  65. articleBackgroundColor = data.backgroundColor;
  66. }
  67. });
  68. Trex.install('canvas.getBgColor & canvas.setBgColor & editor.getContentWithBg',
  69. function(editor, toolbar, sidebar, canvas, config) {
  70. articleBackgroundColor = config.canvas.styles.backgroundColor;
  71. // 저장, 로드할때 content 수정
  72. canvas.getBgColor = function() {
  73. var color = articleBackgroundColor || canvas.getPanel("html").getStyle("backgroundColor");
  74. if ( color ) {
  75. return Trex.Color.getHexColor(color);
  76. } else {
  77. return "";
  78. }
  79. };
  80. canvas.setBgColor = function(color) {
  81. canvas.getPanel("html").addStyle({
  82. "backgroundColor": color || 'transparent'
  83. });
  84. };
  85. editor.getContentWithBg = function() {
  86. var _selColor = canvas.getBgColor().toLowerCase();
  87. if(_selColor == 'transparent') {
  88. return editor.getContent();
  89. } else {
  90. return [
  91. '<table class="txc-wrapper" border="0" cellspacing="0" cellpadding="0"><tr>',
  92. '<td bgcolor="',_selColor,'">',
  93. editor.getContent(),
  94. '</td>',
  95. '</tr></table>'
  96. ].join("");
  97. }
  98. };
  99. var _originInitContent = canvas.initContent.bind(canvas);
  100. canvas.initContent = function(content) {
  101. if(content.search(/<table[^>]*txc-wrapper[^>]*>/i) > -1) {
  102. var _selColor;
  103. content = content.replace(/<table[^>]*txc-wrapper[^>]*><tr><td([^>]*)>([\s\S]*?)<\/td><\/tr><\/table>/i, function(full, color, html){
  104. _selColor = color.replace(/\sbgcolor="([#\w]*)"/, "$1");
  105. return html;
  106. });
  107. canvas.setBgColor(_selColor);
  108. }
  109. _originInitContent(content);
  110. };
  111. canvas.history.initHistory({
  112. 'backgroundColor': config.canvas.styles.backgroundColor,
  113. 'backgroundImage': config.canvas.styles.backgroundImage || "none"
  114. });
  115. canvas.reserveJob(Trex.Ev.__IFRAME_LOAD_COMPLETE, function() {
  116. var color = canvas.config.articleBackgroundColor;
  117. if ( color && color != "transparent" ){
  118. canvas.addStyle({
  119. backgroundColor: color,
  120. backgroundImage: ""
  121. });
  122. }
  123. });
  124. canvas.observeJob('canvas.apply.letterpaper', function(data){
  125. if ( data.id ){
  126. canvas.getPanel("html").addStyle({
  127. "backgroundColor": 'transparent'
  128. });
  129. }
  130. });
  131. }
  132. );
  133. })();