/* -------------------------------------------------------------------- Chevereto Popup Upload Plugin (PUP) @website http://chevereto.com/ @version 1.0.7 @author Rodolfo Berrios A. --------------------------------------------------------------------- */ (function () { var PUP = { defaultSettings: { url: "https://demo.chevereto.com/upload", vendor: "auto", mode: "auto", lang: "auto", autoInsert: "bbcode-embed-medium", palette: "default", init: "onload", containerClass: 1, buttonClass: 1, sibling: 0, siblingPos: "after", fitEditor: 0, observe: 0, observeCache: 1, html: '
', css: ".%cClass{display:inline-block;margin-top:5px;margin-bottom:5px}.%bClass{line-height:normal;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s;outline:0;color:%2;border:none;cursor:pointer;border:1px solid rgba(0,0,0,.15);background:%1;border-radius:.2em;padding:.5em 1em;font-size:12px;font-weight:700;text-shadow:none}.%bClass:hover{background:%3;color:%4;border-color:rgba(0,0,0,.1)}.%iClass,.%tClass{display:inline-block;vertical-align:middle}.%iClass svg{display:block;width:1em;height:1em;fill:currentColor}.%tClass{margin-left:.25em}" }, ns: { plugin: "chevereto-pup" }, palettes: { default: ["#ececec", "#333", "#2980b9", "#fff"], clear: ["inherit", "inherit", "inherit", "#2980b9"], turquoise: ["#16a085", "#fff", "#1abc9c", "#fff"], green: ["#27ae60", "#fff", "#2ecc71", "#fff"], blue: ["#2980b9", "#fff", "#3498db", "#fff"], purple: ["#8e44ad", "#fff", "#9b59b6", "#fff"], darkblue: ["#2c3e50", "#fff", "#34495e", "#fff"], yellow: ["#f39c12", "#fff", "#f1c40f", "#fff"], orange: ["#d35400", "#fff", "#e67e22", "#fff"], red: ["#c0392b", "#fff", "#e74c3c", "#fff"], grey: ["#ececec", "#000", "#e0e0e0", "#000"], black: ["#333", "#fff", "#666", "#fff"] }, classProps: ["button", "container"], iconSvg: '', l10n: { ar: "\u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0635\u0648\u0631", cs: "Nahr\u00e1t obr\u00e1zky", da: "Upload billeder", de: "Bilder hochladen", es: "Subir im\u00e1genes", fi: "Lataa kuvia", fr: "Importer des images", id: "Unggah gambar", it: "Carica immagini", ja: "\u753b\u50cf\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9", nb: "Last opp bilder", nl: "Upload afbeeldingen", pl: "Wy\u015Blij obrazy", pt_BR: "Enviar imagens", ru: "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f", tr: "Resim Yukle", uk: "\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438 \u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F", zh_CN: "\u4e0a\u4f20\u56fe\u7247", zh_TW: "\u4e0a\u50b3\u5716\u7247" }, vendors: { default: { check: function () { return 1; }, getEditor: function () { var skip = { textarea: { name: [ "recaptcha", "search", "recipients", "coppa", "^comment_list", "username_list", "add" ] }, ce: { dataset: ["gramm"] } }; var mods = ["~", "|", "^", "$", "*"]; var not = {}; for (var k in skip) { not[k] = ""; var el = skip[k]; for (var attr in el) { for (var i = 0; i < el[attr].length; i++) { var mod = ""; var value = el[attr][i]; var f = value.charAt(0); if (mods.indexOf(f) > -1) { mod = f; value = value.substring(1); } not[k] += ":not([" + (attr == "dataset" ? "data-" + value : attr + mod + '="' + value + '"') + "])"; } } } return document.querySelectorAll( '[contenteditable=""]' + not.ce + ',[contenteditable="true"]' + not.ce + ",textarea:not([readonly])" + not.textarea ); } }, bbpress: { settings: { autoInsert: "html-embed-medium", html: '', sibling: "#qt_bbp_reply_content_img", siblingPos: "before" }, check: "bbpEngagementJS" }, discourse: { settings: { autoInsert: "markdown-embed-medium", html: '', sibling: ".upload.btn", siblingPos: "before", observe: ".create,#create-topic,.usercard-controls button", observeCache: 0, onDemand: 1 }, check: "Discourse" }, discuz: { settings: { buttonClass: 1, html: '%iconSvg', sibling: ".fclr,#e_attach", css: "a.%bClass,.bar a.%bClass{box-sizing:border-box;cursor:pointer;background:%1;color:%2;text-indent:unset;position:relative}.b1r a.%bClass:hover,a.%bClass:hover{background:%3;color:%4}a.%bClass{font-size:14px}.b1r a.%bClass{border:1px solid rgba(0,0,0,.15)!important;font-size:20px;padding:0;height:44px}.%bClass svg{font-size:1em;width:1em;height:1em;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;left:50%;top:50%;fill:currentColor}", palette: "purple" }, palettes: { default: ["transparent", "#333", "#2980b9", "#fff"] }, check: "DISCUZCODE", getEditor: function () { return document.querySelector('.area textarea[name="message"]'); } }, ipb: { settings: { autoInsert: "html-embed-medium", html: '%iconSvg%text', sibling: ".cke_button__ipslink", siblingPos: "before", css: ".cke_button.%bClass{background:%1;position:relative}.cke_button.%bClass:hover{background:%3;border-color:%5}.cke_button.%bClass svg{font-size:15px;width:1em;height:1em;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;left:50%;top:50%;fill:%2}.cke_button.%bClass:hover svg{fill:%4}" }, palettes: { default: ["inherit", "#444", "", "inherit"] }, check: "ips", getEditorFn: function () { var id = this.getEditor().dataset.ipseditorName; return CKEDITOR.instances[id]; }, getEditor: function () { return document.querySelector("[data-ipseditor-name]"); }, editorValue: function (str) { var element = CKEDITOR.dom.element.createFromHtml( "

" + str + "

" ); this.getEditorFn().insertElement(element); }, useCustomEditor: function () { return 1; } }, mybb: { settings: { sibling: "#quickreply_e > tr > td > *:last-child, .sceditor-container", fitEditor: 0, extracss: ".trow2 .%cClass{margin-bottom:0}" }, check: "MyBB", getEditor: function () { if (MyBBEditor) { return MyBBEditor.getContentAreaContainer().parentElement; } return document.querySelector("#quickreply_e textarea"); }, editorValue: function (str) { if (MyBBEditor) { var fn = MyBBEditor.inSourceMode() ? "insert" : "wysiwygEditorInsertHtml"; MyBBEditor[fn](fn == "insert" ? str : MyBBEditor.fromBBCode(str)); } else { this.getEditor().value += str; } }, useCustomEditor: function () { return !!MyBBEditor; } }, nodebb: { settings: { autoInsert: "markdown-embed-medium", html: '
  • ', sibling: '[data-format="picture-o"]', siblingPos: "before", observe: '[component="category/post"],[component="topic/reply"],[component="topic/reply-as-topic"],[component="post/reply"],[component="post/quote"]', observeCache: 0, onDemand: 1 }, check: "__nodebbSpamBeGoneCreateCaptcha__", callback: function () { var els = document.querySelectorAll(".btn-toolbar .img-upload-btn"); for (var i = 0; i < els.length; i++) { els[i].parentNode.removeChild(els[i]); } } }, phpbb: { settings: { html: document.querySelector("#format-buttons *:first-child") && document.querySelector("#format-buttons *:first-child").tagName == "BUTTON" ? ' ' : ' ', sibling: document.querySelector("#format-buttons *:first-child") && document.querySelector("#format-buttons *:first-child").tagName == "BUTTON" ? ".bbcode-img" : "#message-box textarea.inputbox", siblingPos: "after" }, check: "phpbb", getEditor: function () { if ( typeof form_name == typeof undefined || typeof text_name == typeof undefined ) { return; } return document.forms[form_name].elements[text_name]; } }, proboards: { settings: { html: ' ', css: "", sibling: "input[type=submit]", siblingPos: "before" }, check: "proboards", editorValue: function (str) { var wysiwyg = $(".wysiwyg-textarea").data("wysiwyg"); var editor = wysiwyg.editors[wysiwyg.currentEditorName]; editor.setContent(editor.getContent() + str); }, useCustomEditor: function () { return $(".container.quick-reply").size() !== 1; }, getEditor: function () { return document.querySelector("textarea[name=message]"); } }, redactor2: { getEditor: function () { var editor = this.getEditorFn(); if (!editor) { return null; } return !this.useCustomEditor() ? editor[0] : editor.$box[0]; }, getEditorEl: function () { return this.useCustomEditor() ? this.getEditorFn().$editor[0] : this.getEditorFn()[0]; }, editorValue: function (str) { var nl = "


    "; var property = this.useCustomEditor() ? "innerHTML" : "value"; if (typeof str == "string") { if (this.useCustomEditor()) { var insert = "

    " + str + "

    "; this.getEditorFn().insert.html( this.editorValue() !== "" ? nl + insert : insert ); } else { this.getEditorEl()[property] = str; } return; } var value = this.getEditorEl()[property]; if (this.useCustomEditor() && value == "


    ") { return ""; } return this.getEditorEl()[property]; }, useCustomEditor: function () { return !(this.getEditorFn() instanceof jQuery); } }, smf: { settings: { html: ' ', css: "%defaultCSS #bbcBox_message .%bClass{margin-right:1px;transition:none;color:%2;padding:0;width:23px;height:21px;border-radius:5px;background-color:%1}#bbcBox_message .%bClass:hover{background-color:%3}#bbcBox_message .%tClass{display:none}", sibling: "#BBCBox_message_button_1_1,.quickReplyContent + div", siblingPos: "before", fitEditor: 1 }, palettes: { default: ["#E7E7E7", "#333", "#B0C4D6", "#333"] }, check: "smf_scripturl", getEditor: function () { return smf_editorArray.length > 0 ? smf_editorArray[0].oTextHandle : document.querySelector(".quickReplyContent textarea"); } }, "quill": { settings: { autoInsert: "html-embed-medium", html: '', sibling: "ul.richEditor-menuItems li.richEditor-menuItem:last-child", css: ".%iClass {display: block; height: 24px; margin: auto; width: 24px;}" }, check: "quill", editorValue: function (str) { quill.clipboard.dangerouslyPasteHTML( quill.getText() == "\n" ? 0 : quill.getLength(), str ); }, useCustomEditor: function () { return 1; }, getEditor: function () { return quill.container; } }, vanilla: { settings: { autoInsert: "markdown-embed-medium", html: '', sibling: ".editor-dropdown-upload" }, check: "Vanilla", getEditor: function () { return document.getElementById("Form_Body"); } }, vbulletin: { settings: { autoInsert: "html-embed-medium", html: '
  • %iconSvg
  • ', sibling: ".b-toolbar__item--secondary:first-child", siblingPos: "before", css: ".%bClass{background:%1;color:%2;position:relative}.%bClass:hover{background:%3;color:%4;border-color:%5}.%bClass svg{font-size:15px;width:1em;height:1em;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;left:50%;top:50%;fill:currentColor}" }, palettes: { default: ["", "#4B6977", "", "#007EB8"] }, check: "vBulletin", getEditorFn: function () { var id = this.getEditor().getAttribute("ck-editorid"); return CKEDITOR.instances[id]; }, getEditor: function () { return document.querySelector("[data-message-type]"); }, editorValue: function (str) { var element = CKEDITOR.dom.element.createFromHtml( "

    " + str + "

    " ); this.getEditorFn().insertElement(element); }, useCustomEditor: function () { return 1; } }, // Redactor // At some point, WoltLab: { settings: { autoInsert: "html-embed-medium", sibling: 'li[data-name="settings"]', html: '
  • %text
  • ' }, check: "WBB", getEditorFn: function () { var redactor = $("#text").data("redactor"); if (redactor) { return redactor; } return null; } }, // Redactor XF1: { settings: { autoInsert: "html-embed-medium", containerClass: 1, buttonClass: 1, html: '
  • %iconSvg
  • ', sibling: ".redactor_btn_container_image", siblingPos: "before", css: "li.%cClass .%bClass{background:%1;color:%2;text-indent:unset;border-radius:3px;position:relative}li.%cClass a.%bClass:hover{background:%3;color:%4;border-color:%5}.%cClass .%bClass svg{font-size:15px;width:1em;height:1em;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;left:50%;top:50%;fill:currentColor}", observe: ".edit.OverlayTrigger", observeCache: 1 }, palettes: { default: ["none", "inherit", "none", "inherit", ""] }, check: "XenForo", getEditorFn: function () { var form = document.querySelector("#exposeMask") && document.querySelector("#exposeMask").offsetParent ? ".xenOverlay form" : "form"; if (form !== "form") { var forms = document.querySelectorAll(form); for (var i = 0; i < forms.length; i++) { if (forms[i].offsetParent) { form += '[action="' + forms[i].getAttribute("action") + '"]'; break; } } } return XenForo.getEditorInForm(form); }, getEditor: function () { var editor = this.getEditorFn(); if (!editor) { return null; } return !this.useCustomEditor() ? editor[0] : editor.$box[0]; }, getEditorEl: function () { return this.useCustomEditor() ? this.getEditorFn().$editor[0] : this.getEditorFn()[0]; }, editorValue: function (str) { var nl = "


    "; var property = this.useCustomEditor() ? "innerHTML" : "value"; if (typeof str == "string") { if (this.useCustomEditor()) { var insert = "

    " + str + "

    "; this.getEditorFn().insertHtml( this.editorValue() !== "" ? nl + insert : insert ); } else { this.getEditorEl()[property] = str; } return; } var value = this.getEditorEl()[property]; if (this.useCustomEditor() && value == "


    ") { return ""; } return this.getEditorEl()[property]; }, useCustomEditor: function () { return !(this.getEditorFn() instanceof jQuery); } }, // Froala XF2: { settings: { autoInsert: "html-embed-medium", containerClass: 1, buttonClass: "button--link js-attachmentUpload button button--icon button--icon--upload fa--xf", html: '
    ', sibling: '', siblingPos: "after", observe: '[data-xf-click="quick-edit"]', observeCache: 1 }, palettes: { default: ["transparent", "#505050", "rgba(20,20,20,0.06)", "#141414"] }, check: "XF", // Use id to pass the target editor, if not... XF editor will always return the first editor (DOM) for .js-editor selector getEditorFn: function (id) { var sel = ".js-editor"; if (typeof id == "string") { sel = this.getEditorSel(id); } return XF.getEditorInContainer($(sel)); }, getEditorSel: function (id) { return "[" + PUP.ns.dataPluginTarget + '="' + id + '"]'; }, getEditor: function (id) { if (typeof id == "string") { return document.querySelector(this.getEditorSel(id)); } return document.querySelectorAll(".js-editor"); }, getBbCode: function (edFnCode) { return edFnCode.getTextArea()[0].value; }, editorValue: function (str, id) { var nl = "


    "; var edFn = this.getEditorFn(id); var type = edFn.ed.bbCode.isBbCodeView() ? ["bbCode", "getBbCode", "insertBbCode"] : ["html", "get", "insert"]; var edFnCode = edFn.ed[type[0]]; if (typeof str == "string") { var jump = this.editorValue(false, id) !== ""; if (type[0] == "html") { var insert = "

    " + str + "

    "; edFnCode[type[2]](jump ? nl + insert : insert); } else { var XHR = XF.ajax( "POST", XF.canonicalizeUrl("index.php?editor/to-bb-code"), { html: str } ); XHR.done(function (data) { edFnCode[type[2]](jump ? "\n" + data.bbCode : data.bbCode); }); } return; } if (typeof edFnCode[type[1]] == typeof undefined) { var value = this.getBbCode(edFnCode); } else { var value = edFnCode[type[1]](); } if (this.useCustomEditor() && value == nl) { return ""; } return value; }, useCustomEditor: function () { return ( typeof XF.getEditorInContainer($(".js-editor")) !== typeof undefined ); } } }, generateGuid: function () { var d = new Date().getTime(); if ( typeof performance !== "undefined" && typeof performance.now === "function" ) { d += performance.now(); } return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function ( c ) { var r = (d + Math.random() * 16) % 16 | 0; d = Math.floor(d / 16); return (c === "x" ? r : (r & 0x3) | 0x8).toString(16); }); }, getNewValue: function (el, msg) { var prop = typeof el.getAttribute("contenteditable") !== "string" ? "value" : "innerHTML"; var newline = prop == "value" ? "\n" : "
    "; var value = el[prop]; var fixed = msg; var escape = false; if (escape) { fixed = String(msg) .replace(/&/g, "&") .replace(//g, ">") .replace(/"/g, """); } if (value.length == 0) { return fixed; } var ret = ""; var match = value.match(/\n+$/g); var newlines = match ? match[0].split("\n").length : 0; if (newlines <= 2) { var repeats = newlines == 0 ? 2 : 1; ret += newline.repeat(repeats); } return ret + fixed; }, insertTrigger: function () { var vendor = this.vendors[this.settings.vendor]; var sibling = !this.settings.sibling ? 0 : document.querySelectorAll( this.settings.sibling + ":not([" + this.ns.dataPlugin + "])" )[0]; var areas; if (this.settings.mode == "auto") { areas = this.vendors[ vendor.hasOwnProperty("getEditor") ? this.settings.vendor : "default" ].getEditor(); } else { var targets = document.querySelectorAll( "[" + this.ns.dataPluginTrigger + "][data-target]:not([" + this.ns.dataPluginId + "])" ); var targetsSel = []; for (var i = 0; i < targets.length; i++) { targetsSel.push(targets[i].dataset.target); } if (targetsSel.length > 0) { areas = document.querySelectorAll(targetsSel.join(",")); } } if (!areas) { return; } if (!document.getElementById(this.ns.pluginStyle) && this.settings.css) { var style = document.createElement("style"); var rules = this.settings.css; rules = this.appyTemplate(rules); style.type = "text/css"; style.innerHTML = rules.replace(/%p/g, "." + this.ns.plugin); style.setAttribute("id", this.ns.pluginStyle); document.body.appendChild(style); } if (!(areas instanceof NodeList)) { areas = [areas]; } var count = 0; for (var i = 0; i < areas.length; i++) { if (areas[i].getAttribute(this.ns.dataPluginTarget)) { continue; } var target = sibling ? sibling : areas[i]; target.setAttribute(this.ns.dataPlugin, "sibling"); target.insertAdjacentHTML( { before: "beforebegin", after: "afterend" }[ this.settings.siblingPos ], this.appyTemplate(this.settings.html) ); var trigger = target.parentElement.querySelector( "[" + this.ns.dataPluginTrigger + "]" ); this.setBoundId(trigger, areas[i]); count++; } this.triggerCounter = count; if (typeof vendor.callback == "function") { vendor.callback.call(); } }, appyTemplate: function (template) { if (!this.cacheTable) { var table = [ { "%iconSvg": this.iconSvg }, { "%text": this.settings.langString } ]; if (this.palette) { var re = /%(\d+)/g; var match = re.exec(template); var arr = []; while (match !== null) { if (arr.indexOf(match[1]) == -1) { arr.push(match[1]); } match = re.exec(template); } if (arr) { arr.sort(function (a, b) { return b - a; }); var vendor = this.vendors[this.settings.vendor]; for (var i = 0; i < arr.length; i++) { var index = arr[i] - 1; var value = this.palette[index] || ""; if ( !value && this.settings.vendor !== "default" && this.settings.palette !== "default" ) { value = this.palette[index - 2]; } var o = {}; o["%" + arr[i]] = value; table.push(o); } } } var bClass = this.settings.buttonClass || this.ns.plugin + "-button"; var named = [ { "%cClass": this.settings.containerClass || this.ns.plugin + "-container" }, { "%bClass": bClass }, { "%iClass": bClass + "-icon" }, { "%tClass": bClass + "-text" }, { "%x": this.ns.dataPluginTrigger }, { "%p": this.ns.plugin } ]; for (var i = 0; i < named.length; i++) { table.push(named[i]); } this.cacheTable = table; } return this.strtr(template, this.cacheTable); }, strtr: function (str, replaces) { var str = str.toString(); if (!str || typeof replaces == typeof undefined) { return str; } for (var i = 0; i < replaces.length; i++) { var obj = replaces[i]; for (var key in obj) { if (typeof obj[key] !== typeof undefined) { re = new RegExp(key, "g"); str = str.replace(re, obj[key]); } } } return str; }, setBoundId: function (trigger, target) { var id = this.generateGuid(); trigger.setAttribute(this.ns.dataPluginId, id); // target.setAttribute(this.ns.dataPluginId, id); target.setAttribute(this.ns.dataPluginTarget, id); }, openPopup: function (id) { if (typeof id !== "string") { return; } var self = this; if (typeof this.popups == typeof undefined) { this.popups = {}; } if (typeof this.popups[id] !== typeof undefined) { this.popups[id].window.focus(); return; } else { this.popups[id] = {}; } var client = { l: window.screenLeft != undefined ? window.screenLeft : screen.left, t: window.screenTop != undefined ? window.screenTop : screen.top, w: window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width, h: window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height }; var size = { w: 720, h: 690 }; var tolerance = { w: 0.5, h: 0.85 }; for (var key in size) { if (size[key] / client[key] > tolerance[key]) { size[key] = client[key] * tolerance[key]; } } var pos = { l: Math.trunc(client.w / 2 - size.w / 2 + client.l), t: Math.trunc(client.h / 2 - size.h / 2 + client.t) }; this.popups[id].window = window.open( this.settings.url, id, "width=" + size.w + ",height=" + size.h + ",top=" + pos.t + ",left=" + pos.l ); this.popups[id].timer = window.setInterval(function () { if ( !self.popups[id].window || self.popups[id].window.closed !== false ) { window.clearInterval(self.popups[id].timer); self.popups[id] = undefined; } }, 200); }, postSettings: function (id) { this.popups[id].window.postMessage( { id: id, settings: this.settings }, this.settings.url ); }, liveBind: function (qs, et, c) { document.addEventListener( et, function (e) { var caller = document.querySelectorAll(qs); if (!caller) { return; } var el = e.target; var index = -1; while ( el && (index = Array.prototype.indexOf.call(caller, el)) === -1 ) { el = el.parentElement; } if (index > -1) { e.preventDefault(); c.call(e, el); } }, true ); }, prepare: function () { var self = this; this.ns.dataPlugin = "data-" + this.ns.plugin; this.ns.dataPluginId = this.ns.dataPlugin + "-id"; this.ns.dataPluginTrigger = this.ns.dataPlugin + "-trigger"; this.ns.dataPluginTarget = this.ns.dataPlugin + "-target"; this.ns.pluginStyle = this.ns.plugin + "-style"; this.ns.selDataPluginTrigger = "[" + this.ns.dataPluginTrigger + "]"; var srcEl = document.currentScript || document.getElementById(this.ns.plugin + "-src"); if (!srcEl) { srcEl = { dataset: {} }; } else if (srcEl.dataset["buttonTemplate"]) { srcEl.dataset["html"] = srcEl.dataset["buttonTemplate"]; } var nocss = 0; this.settings = {}; for (var key in this.defaultSettings) { var value = srcEl && srcEl.dataset[key] ? srcEl.dataset[key] : this.defaultSettings[key]; if (value === "1" || value === "0") { value = value == "true"; } if ( typeof value == "string" && this.classProps.indexOf(key.replace(/Class$/, "")) > -1 ) { nocss = 1; } this.settings[key] = value; } if (this.settings.vendor == "auto") { this.settings.vendor = "default"; this.settings.fitEditor = 0; for (var key in this.vendors) { if (key == "default") continue; if (typeof window[this.vendors[key].check] !== typeof undefined) { this.settings.vendor = key; break; } } } var skip = ["lang", "url", "vendor", "target"]; if (this.settings.vendor == "default") { this.vendors.default.settings = {}; } var vendor = this.vendors[this.settings.vendor]; if (vendor.settings) { for (var key in vendor.settings) { if (!srcEl || !srcEl.dataset.hasOwnProperty(key)) { this.settings[key] = vendor.settings[key]; } } } else { vendor.settings = {}; for (var key in this.defaultSettings) { if (skip.indexOf(key) == -1) { vendor.settings[key] = this.defaultSettings[key]; } } } if (this.settings.vendor !== "default") { if ( !vendor.settings.hasOwnProperty("fitEditor") && !srcEl.dataset.hasOwnProperty("fitEditor") ) { this.settings.fitEditor = 1; } if (this.settings.fitEditor) { nocss = !vendor.settings.css; } else { var skip = ["autoInsert", "observe", "observeCache"]; for (var key in vendor.settings) { if (skip.indexOf(key) == -1 && !srcEl.dataset.hasOwnProperty(key)) { this.settings[key] = this.defaultSettings[key]; } } } } if (nocss) { this.settings.css = ""; } else { this.settings.css = this.settings.css.replace( "%defaultCSS", this.defaultSettings.css ); if (vendor.settings.extracss && this.settings.css) { this.settings.css += vendor.settings.extracss; } var palette = this.settings.palette.split(","); if (palette.length > 1) { this.palette = palette; } else if (!this.palettes.hasOwnProperty(palette)) { this.settings.palette = "default"; } if (!this.palette) { this.palette = (this.settings.fitEditor && vendor.palettes && vendor.palettes[this.settings.palette] ? vendor : this ).palettes[this.settings.palette]; } } var props = this.classProps; for (var i = 0; i < props.length; i++) { var prop = props[i] + "Class"; if (typeof this.settings[prop] !== "string") { this.settings[prop] = this.ns.plugin + "-" + props[i]; if (this.settings.fitEditor) { this.settings[prop] += "--" + this.settings.vendor; } } } var clientLang = (this.settings.lang == "auto" ? navigator.language || navigator.userLanguage : this.settings.lang ).replace("-", "_"); this.settings.langString = "Upload images"; var langKey = clientLang in this.l10n ? clientLang : clientLang.substring(0, 2) in this.l10n ? clientLang.substring(0, 2) : null; if (langKey) { this.settings.langString = this.l10n[langKey]; } var parser = document.createElement("a"); parser.href = this.settings.url; this.originUrlPattern = "^" + (parser.protocol + "//" + parser.hostname) .replace(/\./g, "\\.") .replace(/\//g, "\\/") + "$"; var namedTargets = document.querySelectorAll( this.ns.selDataPluginTrigger + "[data-target]" ); if (namedTargets.length > 0) { for (var i = 0; i < namedTargets.length; i++) { var target = document.querySelector(namedTargets[i].dataset.target); this.setBoundId(namedTargets[i], target); } } if (this.settings.observe) { var observe = this.settings.observe; if (this.settings.observeCache) { observe += ":not([" + this.ns.dataPlugin + "])"; } this.liveBind( observe, "click", function (el) { el.setAttribute(self.ns.dataPlugin, 1); self.observe(); }.bind(this) ); } if (this.settings.sibling && !this.settings.onDemand) { this.waitForSibling(); } else { if (this.settings.init == "onload") { if (document.readyState === "loading") { document.addEventListener( "DOMContentLoaded", function (event) { self.init(); }, false ); } else { this.init(); } } else { this.observe(); } } }, observe: function () { this.waitForSibling("observe"); }, waitForSibling: function (m) { var fn = this.initialized ? "insertTrigger" : "init"; if (this.settings.sibling) { var sibling = document.querySelector( this.settings.sibling + ":not([" + this.ns.dataPlugin + "])" ); } else if (m == "observe") { this[fn](); if (this.triggerCounter) { return; } } if (!sibling) { if (document.readyState === "complete" && m !== "observe") { return; } setTimeout( (m == "observe" ? this.observe : this.waitForSibling).bind(this), 250 ); } else { this[fn](); } }, init: function () { this.insertTrigger(); var self = this; var vendor = this.vendors[this.settings.vendor]; this.liveBind(this.ns.selDataPluginTrigger, "click", function (el) { var id = el.getAttribute(self.ns.dataPluginId); self.openPopup(id); }); window.addEventListener( "message", function (e) { var regex = new RegExp(self.originUrlPattern, "i"); if ( !regex.test(e.origin) && (typeof e.data.id == typeof undefined || typeof e.data.message == typeof undefined) ) { return; } var id = e.data.id; if (!id || e.source !== self.popups[id].window) { return; } if ( e.data.requestAction && self.hasOwnProperty(e.data.requestAction) ) { self[e.data.requestAction](id); return; } var area; if (self.settings.vendor !== "default") { if ( vendor.hasOwnProperty("useCustomEditor") && vendor.useCustomEditor() ) { vendor.editorValue(e.data.message, id); return; } else if (vendor.hasOwnProperty("getEditor")) { area = vendor.getEditor(); } } if (!area) { area = document.querySelector( "[" + self.ns.dataPluginTarget + '="' + id + '"]' ); if (!area) { alert("Target not found"); // calma calma que no panda el cúnico return; } } var valueProp = area.getAttribute("contenteditable") === null ? "value" : "innerHTML"; area[valueProp] += self.getNewValue(area, e.data.message); var events = ["blur", "focus", "input", "change", "paste"]; for (var i = 0; i < events.length; i++) { var event = new Event(events[i]); area.dispatchEvent(event); } }, false ); this.initialized = 1; } }; var redactor2 = ["WoltLab", "XF1"]; for (var i = 0; i < redactor2.length; i++) { PUP.vendors[redactor2[i]] = Object.assign( Object.assign({}, PUP.vendors.redactor2), PUP.vendors[redactor2[i]] ); } PUP.prepare(); })();