Помогите разобраться с плагином link (tinymce)
Приветствую, человеки!
Помогите разобраться с плагином link для tinymce. Что собственно нужно: "Добавлять класс к ссылке, если той оборачивается картинка". К сожалению, приходиться работать с минимизированной версией. Вот собственно сам код (отформатировал как смог): tinymce.PluginManager.add("link", function(e) { function t(t) { return function() { var n = e.settings.link_list; "string" == typeof n ? tinymce.util.XHR.send({url: n, success: function(e) { t(tinymce.util.JSON.parse(e)) }}) : t(n) } } function n(t) { function n(e) { var t = f.find("#text"); (!t.value() || e.lastControl && t.value() == e.lastControl.text()) && t.value(e.control.text()), f.find("#href").value(e.control.value()) } function l() { var n = [{text: "None", value: ""}]; return tinymce.each(t, function(t) { n.push({text: t.text || t.title, value: e.convertURL(t.value || t.url, "href"), menu: t.menu}) }), n } function i(t) { var n = [{text: "None", value: ""}]; return tinymce.each(e.settings.rel_list, function(e) { n.push({text: e.text || e.title, value: e.value, selected: t === e.value}) }), n } function r(t) { var n = [{text: "None", value: ""}]; return e.settings.target_list || n.push({text: "New window", value: "_blank"}), tinymce.each(e.settings.target_list, function(e) { n.push({text: e.text || e.title, value: e.value, selected: t === e.value}) }), n } function a(t) { var l = []; return tinymce.each(e.dom.select("a:not([href])"), function(e) { var n = e.name || e.id; n && l.push({text: n, value: "#" + n, selected: -1 != t.indexOf("#" + n)}) }), l.length ? (l.unshift({text: "None", value: ""}), {name: "anchor", type: "listbox", label: "Anchors", values: l, onselect: n}) : void 0 } function o() { d && d.value(e.convertURL(this.value(), "href")), c || 0 !== x.text.length || this.parent().parent().find("#text")[0].value(this.value()) } var u, s, c, f, d, h, v, x = {}, g = e.selection, m = e.dom; u = g.getNode(), s = m.getParent(u, "a[href]"), x.text = c = s ? s.innerText || s.textContent : g.getContent({format: "text"}), x.href = s ? m.getAttrib(s, "href") : "", x.target = s ? m.getAttrib(s, "target") : "", x.rel = s ? m.getAttrib(s, "rel") : "", "IMG" == u.nodeName && (x.text = c = " "), t && (d = {type: "listbox", label: "Link list", values: l(), onselect: n, value: e.convertURL(x.href, "href"), onPostRender: function() { d = this }}), e.settings.target_list !== !1 && (v = {name: "target", type: "listbox", label: "Target", values: r(x.target)}), e.settings.rel_list && (h = {name: "rel", type: "listbox", label: "Rel", values: i(x.rel)}), f = e.windowManager.open({title: "Insert link", data: x, body: [{name: "href", type: "filepicker", filetype: "file", size: 40, autofocus: !0, label: "Url", onchange: o, onkeyup: o}, {name: "text", type: "textbox", size: 40, label: "Text to display", onchange: function() { x.text = this.value() }}, a(x.href), d, h, v], onSubmit: function(t) { function n(t, n) { var l = e.selection.getRng(); window.setTimeout(function() { e.windowManager.confirm(t, function(t) { e.selection.setRng(l), n(t) }) }, 0) } function l() { i.text != c ? s ? (e.focus(), s.innerHTML = i.text, m.setAttribs(s, {href: r, target: i.target ? i.target : null, rel: i.rel ? i.rel : null}), g.select(s)) : e.insertContent(m.createHTML("a", {href: r, target: i.target ? i.target : null, rel: i.rel ? i.rel : null}, i.text)) : e.execCommand("mceInsertLink", !1, {href: r, target: i.target, rel: i.rel ? i.rel : null}) } var i = t.data, r = i.href; return r ? r.indexOf("@") > 0 && -1 == r.indexOf("//") && -1 == r.indexOf("mailto:") ? (n("The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?", function(e) { e && (r = "mailto:" + r), l() }), void 0) : /^\s*www\./i.test(r) ? (n("The URL you entered seems to be an external link. Do you want to add the required http:// prefix?", function(e) { e && (r = "http://" + r), l() }), void 0) : (l(), void 0) : (e.execCommand("unlink"), void 0) }}) } e.addButton("link", {icon: "link", tooltip: "Insert/edit link", shortcut: "Ctrl+K", onclick: t(n), stateSelector: "a[href]"}), e.addButton("unlink", {icon: "unlink", tooltip: "Remove link", cmd: "unlink", stateSelector: "a[href]"}), e.addShortcut("Ctrl+K", "", t(n)), this.showDialog = n, e.addMenuItem("link", {icon: "link", text: "Insert link", shortcut: "Ctrl+K", onclick: t(n), stateSelector: "a[href]", context: "insert", prependToContext: !0}) }); В строке 44 существует проверка "IMG" == u.nodeName Значит, мы можем знать что выделено: абзац, картинка или ссылка, через u.nodeName. Только вот проблемка одна, я не могу понять, где собственно и происходит рисование ссылки вокруг выделенной области? Где мне добавить это: "IMG" == u.nodeName ? 'class="not-decoration"' : '' Сам я в JS еще очень слаб, а задачу нужно решать. :help: |
Часовой пояс GMT +3, время: 16:43. |