123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- ///import core
- ///import uicore
- ///import ui/popup.js
- ///import ui/autotypesetpicker.js
- ///import ui/splitbutton.js
- (function() {
- var utils = baidu.editor.utils,
- Popup = baidu.editor.ui.Popup,
- AutoTypeSetPicker = baidu.editor.ui.AutoTypeSetPicker,
- SplitButton = baidu.editor.ui.SplitButton,
- AutoTypeSetButton = (baidu.editor.ui.AutoTypeSetButton = function(options) {
- this.initOptions(options);
- this.initAutoTypeSetButton();
- });
- function getPara(me) {
- var opt = {},
- cont = me.getDom(),
- editorId = me.editor.uid,
- inputType = null,
- attrName = null,
- ipts = domUtils.getElementsByTagName(cont, "input");
- for (var i = ipts.length - 1, ipt; (ipt = ipts[i--]); ) {
- inputType = ipt.getAttribute("type");
- if (inputType == "checkbox") {
- attrName = ipt.getAttribute("name");
- opt[attrName] && delete opt[attrName];
- if (ipt.checked) {
- var attrValue = document.getElementById(
- attrName + "Value" + editorId
- );
- if (attrValue) {
- if (/input/gi.test(attrValue.tagName)) {
- opt[attrName] = attrValue.value;
- } else {
- var iptChilds = attrValue.getElementsByTagName("input");
- for (
- var j = iptChilds.length - 1, iptchild;
- (iptchild = iptChilds[j--]);
- ) {
- if (iptchild.checked) {
- opt[attrName] = iptchild.value;
- break;
- }
- }
- }
- } else {
- opt[attrName] = true;
- }
- } else {
- opt[attrName] = false;
- }
- } else {
- opt[ipt.getAttribute("value")] = ipt.checked;
- }
- }
- var selects = domUtils.getElementsByTagName(cont, "select");
- for (var i = 0, si; (si = selects[i++]); ) {
- var attr = si.getAttribute("name");
- opt[attr] = opt[attr] ? si.value : "";
- }
- utils.extend(me.editor.options.autotypeset, opt);
- me.editor.setPreferences("autotypeset", opt);
- }
- AutoTypeSetButton.prototype = {
- initAutoTypeSetButton: function() {
- var me = this;
- this.popup = new Popup({
- //传入配置参数
- content: new AutoTypeSetPicker({ editor: me.editor }),
- editor: me.editor,
- hide: function() {
- if (!this._hidden && this.getDom()) {
- getPara(this);
- this.getDom().style.display = "none";
- this._hidden = true;
- this.fireEvent("hide");
- }
- }
- });
- var flag = 0;
- this.popup.addListener("postRenderAfter", function() {
- var popupUI = this;
- if (flag) return;
- var cont = this.getDom(),
- btn = cont.getElementsByTagName("button")[0];
- btn.onclick = function() {
- getPara(popupUI);
- me.editor.execCommand("autotypeset");
- popupUI.hide();
- };
- domUtils.on(cont, "click", function(e) {
- var target = e.target || e.srcElement,
- editorId = me.editor.uid;
- if (target && target.tagName == "INPUT") {
- // 点击图片浮动的checkbox,去除对应的radio
- if (
- target.name == "imageBlockLine" ||
- target.name == "textAlign" ||
- target.name == "symbolConver"
- ) {
- var checked = target.checked,
- radioTd = document.getElementById(
- target.name + "Value" + editorId
- ),
- radios = radioTd.getElementsByTagName("input"),
- defalutSelect = {
- imageBlockLine: "none",
- textAlign: "left",
- symbolConver: "tobdc"
- };
- for (var i = 0; i < radios.length; i++) {
- if (checked) {
- if (radios[i].value == defalutSelect[target.name]) {
- radios[i].checked = "checked";
- }
- } else {
- radios[i].checked = false;
- }
- }
- }
- // 点击radio,选中对应的checkbox
- if (
- target.name == "imageBlockLineValue" + editorId ||
- target.name == "textAlignValue" + editorId ||
- target.name == "bdc"
- ) {
- var checkboxs = target.parentNode.previousSibling.getElementsByTagName(
- "input"
- );
- checkboxs && (checkboxs[0].checked = true);
- }
- getPara(popupUI);
- }
- });
- flag = 1;
- });
- this.initSplitButton();
- }
- };
- utils.inherits(AutoTypeSetButton, SplitButton);
- })();
|