Aleksander Machniak
2012-08-27 8eefbb2158c43b51a8c33e6c480cbe61539b9535
program/js/tiny_mce/plugins/style/js/props.js
@@ -27,10 +27,41 @@
var defaultBorderWidth = "thin;medium;thick";
var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none";
function init() {
function aggregateStyles(allStyles) {
   var mergedStyles = {};
   tinymce.each(allStyles, function(style) {
      if (style !== '') {
         var parsedStyles = tinyMCEPopup.editor.dom.parseStyle(style);
         for (var name in parsedStyles) {
            if (parsedStyles.hasOwnProperty(name)) {
               if (mergedStyles[name] === undefined) {
                  mergedStyles[name] = parsedStyles[name];
               }
               else if (name === 'text-decoration') {
                  if (mergedStyles[name].indexOf(parsedStyles[name]) === -1) {
                     mergedStyles[name] = mergedStyles[name] +' '+ parsedStyles[name];
                  }
               }
            }
         }
      }
   });
  return mergedStyles;
}
var applyActionIsInsert;
var existingStyles;
function init(ed) {
   var ce = document.getElementById('container'), h;
   ce.style.cssText = tinyMCEPopup.getWindowArg('style_text');
   existingStyles = aggregateStyles(tinyMCEPopup.getWindowArg('styles'));
   ce.style.cssText = tinyMCEPopup.editor.dom.serializeStyle(existingStyles);
   applyActionIsInsert = ed.getParam("edit_css_style_insert_span", false);
   document.getElementById('toggle_insert_span').checked = applyActionIsInsert;
   h = getBrowserHTML('background_image_browser','background_image','image','advimage');
   document.getElementById("background_image_browser").innerHTML = h;
@@ -144,6 +175,8 @@
   f.text_overline.checked = inStr(ce.style.textDecoration, 'overline');
   f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through');
   f.text_blink.checked = inStr(ce.style.textDecoration, 'blink');
   f.text_none.checked = inStr(ce.style.textDecoration, 'none');
   updateTextDecorations();
   // Setup background fields
@@ -366,13 +399,41 @@
   return true;
}
function toggleApplyAction() {
   applyActionIsInsert = ! applyActionIsInsert;
}
function applyAction() {
   var ce = document.getElementById('container'), ed = tinyMCEPopup.editor;
   generateCSS();
   tinyMCEPopup.restoreSelection();
   ed.dom.setAttrib(ed.selection.getSelectedBlocks(), 'style', tinyMCEPopup.editor.dom.serializeStyle(tinyMCEPopup.editor.dom.parseStyle(ce.style.cssText)));
   var newStyles = tinyMCEPopup.editor.dom.parseStyle(ce.style.cssText);
   if (applyActionIsInsert) {
      ed.formatter.register('plugin_style', {
         inline: 'span', styles: existingStyles
      });
      ed.formatter.remove('plugin_style');
      ed.formatter.register('plugin_style', {
         inline: 'span', styles: newStyles
      });
      ed.formatter.apply('plugin_style');
   } else {
      var nodes;
      if (tinyMCEPopup.getWindowArg('applyStyleToBlocks')) {
         nodes = ed.selection.getSelectedBlocks();
      }
      else {
         nodes = ed.selection.getNode();
      }
      ed.dom.setAttrib(nodes, 'style', tinyMCEPopup.editor.dom.serializeStyle(newStyles));
   }
}
function updateAction() {
@@ -632,4 +693,17 @@
      selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value);
}
function updateTextDecorations(){
   var el = document.forms[0].elements;
   var textDecorations = ["text_underline", "text_overline", "text_linethrough", "text_blink"];
   var noneChecked = el["text_none"].checked;
   tinymce.each(textDecorations, function(id) {
      el[id].disabled = noneChecked;
      if (noneChecked) {
         el[id].checked = false;
      }
   });
}
tinyMCEPopup.onInit.add(init);