HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/bs.kntsleep.com/system/extend/ueditor/_src/plugins/background.js
/**
 * 背景插件,为UEditor提供设置背景功能
 * @file
 * @since 1.2.6.1
 */
UE.plugin.register("background", function() {
  var me = this,
    cssRuleId = "editor_background",
    isSetColored,
    reg = new RegExp("body[\\s]*\\{(.+)\\}", "i");

  function stringToObj(str) {
    var obj = {},
      styles = str.split(";");
    utils.each(styles, function(v) {
      var index = v.indexOf(":"),
        key = utils.trim(v.substr(0, index)).toLowerCase();
      key && (obj[key] = utils.trim(v.substr(index + 1) || ""));
    });
    return obj;
  }

  function setBackground(obj) {
    if (obj) {
      var styles = [];
      for (var name in obj) {
        if (obj.hasOwnProperty(name)) {
          styles.push(name + ":" + obj[name] + "; ");
        }
      }
      utils.cssRule(
        cssRuleId,
        styles.length ? "body{" + styles.join("") + "}" : "",
        me.document
      );
    } else {
      utils.cssRule(cssRuleId, "", me.document);
    }
  }
  //重写editor.hasContent方法

  var orgFn = me.hasContents;
  me.hasContents = function() {
    if (me.queryCommandValue("background")) {
      return true;
    }
    return orgFn.apply(me, arguments);
  };
  return {
    bindEvents: {
      getAllHtml: function(type, headHtml) {
        var body = this.body,
          su = domUtils.getComputedStyle(body, "background-image"),
          url = "";
        if (su.indexOf(me.options.imagePath) > 0) {
          url = su
            .substring(su.indexOf(me.options.imagePath), su.length - 1)
            .replace(/"|\(|\)/gi, "");
        } else {
          url = su != "none" ? su.replace(/url\("?|"?\)/gi, "") : "";
        }
        var html = '<style type="text/css">body{';
        var bgObj = {
          "background-color":
            domUtils.getComputedStyle(body, "background-color") || "#ffffff",
          "background-image": url ? "url(" + url + ")" : "",
          "background-repeat":
            domUtils.getComputedStyle(body, "background-repeat") || "",
          "background-position": browser.ie
            ? domUtils.getComputedStyle(body, "background-position-x") +
                " " +
                domUtils.getComputedStyle(body, "background-position-y")
            : domUtils.getComputedStyle(body, "background-position"),
          height: domUtils.getComputedStyle(body, "height")
        };
        for (var name in bgObj) {
          if (bgObj.hasOwnProperty(name)) {
            html += name + ":" + bgObj[name] + "; ";
          }
        }
        html += "}</style> ";
        headHtml.push(html);
      },
      aftersetcontent: function() {
        if (isSetColored == false) setBackground();
      }
    },
    inputRule: function(root) {
      isSetColored = false;
      utils.each(root.getNodesByTagName("p"), function(p) {
        var styles = p.getAttr("data-background");
        if (styles) {
          isSetColored = true;
          setBackground(stringToObj(styles));
          p.parentNode.removeChild(p);
        }
      });
    },
    outputRule: function(root) {
      var me = this,
        styles = (utils.cssRule(cssRuleId, me.document) || "")
          .replace(/[\n\r]+/g, "")
          .match(reg);
      if (styles) {
        root.appendChild(
          UE.uNode.createElement(
            '<p style="display:none;" data-background="' +
              utils.trim(styles[1].replace(/"/g, "").replace(/[\s]+/g, " ")) +
              '"><br/></p>'
          )
        );
      }
    },
    commands: {
      background: {
        execCommand: function(cmd, obj) {
          setBackground(obj);
        },
        queryCommandValue: function() {
          var me = this,
            styles = (utils.cssRule(cssRuleId, me.document) || "")
              .replace(/[\n\r]+/g, "")
              .match(reg);
          return styles ? stringToObj(styles[1]) : null;
        },
        notNeedUndo: true
      }
    }
  };
});