%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 18.191.68.61 Web Server : Apache/2.4.52 (Ubuntu) System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64 User : www-root ( 1010) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,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, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/js/landing/ui/panel/ |
Upload File : |
;(function() { "use strict"; BX.namespace("BX.Landing.UI.Panel"); var attr = BX.Landing.Utils.attr; var join = BX.Landing.Utils.join; var random = BX.Landing.Utils.random; var setTextContent = BX.Landing.Utils.setTextContent; var isPlainObject = BX.Landing.Utils.isPlainObject; var isString = BX.Landing.Utils.isString; var textToPlaceholders = BX.Landing.Utils.textToPlaceholders; var findParent = BX.Landing.Utils.findParent; var escapeText = BX.Landing.Utils.escapeText; /** * Implements interface for works with links panel * Implements singleton patter * @extends {BX.Landing.UI.Panel.Content} * @inheritDoc * @constructor */ BX.Landing.UI.Panel.Link = function(id, data) { BX.Landing.UI.Panel.Content.apply(this, arguments); this.layout.classList.add("landing-ui-panel-link"); this.overlay.classList.add("landing-ui-panel-link"); this.appendFooterButton( new BX.Landing.UI.Button.BaseButton("save_block_content", { text: BX.Landing.Loc.getMessage("BLOCK_SAVE"), onClick: this.save.bind(this), className: "landing-ui-button-content-save" }) ); this.appendFooterButton( new BX.Landing.UI.Button.BaseButton("cancel_block_content", { text: BX.Landing.Loc.getMessage("BLOCK_CANCEL"), onClick: this.hide.bind(this), className: "landing-ui-button-content-cancel" }) ); document.body.appendChild(this.layout); }; /** * Stores instance of BX.Landing.UI.Panel.Link * @type {BX.Landing.UI.Panel.Link} */ BX.Landing.UI.Panel.Link.instance = null; /** * Gets instance of BX.Landing.UI.Panel.Link * @return {BX.Landing.UI.Panel.Link} */ BX.Landing.UI.Panel.Link.getInstance = function() { if (!BX.Landing.UI.Panel.Link.instance) { BX.Landing.UI.Panel.Link.instance = new BX.Landing.UI.Panel.Link("link_panel", { title: BX.Landing.Loc.getMessage("LANDING_EDIT_LINK") }); } return BX.Landing.UI.Panel.Link.instance; }; BX.Landing.UI.Panel.Link.prototype = { constructor: BX.Landing.UI.Panel.Link, __proto__: BX.Landing.UI.Panel.Content.prototype, show: function(node) { var form; this.title.innerHTML = BX.Landing.Loc.getMessage("LANDING_EDIT_LINK"); if (!!node && node instanceof BX.Landing.Block.Node.Link) { this.node = node; form = new BX.Landing.UI.Form.BaseForm({title: this.node.manifest.name}); this.field = this.node.getField(); form.addField(this.field); this.clear(); this.appendForm(form); BX.Landing.UI.Panel.Content.prototype.show.call(this); BX.Landing.UI.Panel.EditorPanel.getInstance().hide(); } if (!!node && (node instanceof BX.Landing.Block.Node.Text || node instanceof BX.Landing.UI.Field.Text)) { this.range = document.getSelection().getRangeAt(0); this.node = node; this.textField = BX.Landing.UI.Field.BaseField.currentField; if (!!this.textField && this.textField.isEditable()) { this.node = this.textField; } var link = this.range.cloneContents().querySelector("a"); if (!link) { link = findParent(this.range.startContainer, {tagName: "A"}); } var href = ""; var target = ""; if (link) { href = link.getAttribute("href"); target = link.getAttribute("target") || "_self"; } else { this.title.innerHTML = BX.Landing.Loc.getMessage("LANDING_CREATE_LINK"); } form = new BX.Landing.UI.Form.BaseForm({title: ""}); BX.remove(form.header); var allowedTypes = [ BX.Landing.UI.Field.LinkURL.TYPE_BLOCK, BX.Landing.UI.Field.LinkURL.TYPE_PAGE ]; if (BX.Landing.Main.getInstance().options.params.type === 'STORE') { allowedTypes.push(BX.Landing.UI.Field.LinkURL.TYPE_CATALOG); } this.field = new BX.Landing.UI.Field.Link({ title: BX.Landing.Loc.getMessage("FIELD_LINK_TEXT_LABEL"), content: { text: textToPlaceholders(escapeText(link ? link.innerText : this.range.toString())), href: escapeText(href), target: escapeText(target) }, options: { siteId: BX.Landing.Main.getInstance().options.site_id, landingId: BX.Landing.Main.getInstance().id, filter: { '=TYPE': BX.Landing.Main.getInstance().options.params.type } }, allowedTypes: allowedTypes }); form.addField(this.field); this.clear(); this.appendForm(form); BX.Landing.UI.Panel.Content.prototype.show.call(this); } }, save: function() { if (this.field.isChanged()) { if (!!this.node && this.node instanceof BX.Landing.Block.Node.Link) { this.node.setValue(this.field.getValue()); } else { var value = this.field.getValue(); document.getSelection().removeAllRanges(); document.getSelection().addRange(this.range); this.node.enableEdit(); var tmpHref = escapeText(join(value.href, random())); var selection = document.getSelection(); document.execCommand("createLink", false, tmpHref); var link = selection.anchorNode .parentElement .parentElement .parentElement .querySelector(join("[href=\"", tmpHref, "\"]")); if (link) { attr(link, "href", value.href); attr(link, "target", value.target); if (isString(value.text)) { if (value.text.includes("{{name}}")) { this.field.hrefInput.getPlaceholderData(value.href) .then(function(placeholdersData) { link.innerHTML = value.text.replace( new RegExp("{{name}}"), "<span data-placeholder=\"name\">"+placeholdersData.name+"</span>" ); }.bind(this)); } else { setTextContent(link, value.text); } } if (isPlainObject(value.attrs)) { attr(link, value.attrs); } } } } this.hide(); } }; })();