(function (global, factory) { if (typeof define === "function" && define.amd) { define('ss.LeftAndMain.EditForm', ['jQuery', 'i18n'], factory); } else if (typeof exports !== "undefined") { factory(require('jQuery'), require('i18n')); } else { var mod = { exports: {} }; factory(global.jQuery, global.i18n); global.ssLeftAndMainEditForm = mod.exports; } })(this, function (_jQuery, _i18n) { 'use strict'; var _jQuery2 = _interopRequireDefault(_jQuery); var _i18n2 = _interopRequireDefault(_i18n); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } window.onbeforeunload = function (e) { var form = (0, _jQuery2.default)('.cms-edit-form'); form.trigger('beforesubmitform'); if (form.is('.changed') && !form.is('.discardchanges')) { return _i18n2.default._t('LeftAndMain.CONFIRMUNSAVEDSHORT'); } }; _jQuery2.default.entwine('ss', function ($) { $('.cms-edit-form').entwine({ PlaceholderHtml: '', ChangeTrackerOptions: { ignoreFieldSelector: '.no-change-track, .ss-upload :input, .cms-navigator :input' }, onadd: function onadd() { var self = this; this.attr("autocomplete", "off"); this._setupChangeTracker(); for (var overrideAttr in { 'action': true, 'method': true, 'enctype': true, 'name': true }) { var el = this.find(':input[name=' + '_form_' + overrideAttr + ']'); if (el) { this.attr(overrideAttr, el.val()); el.remove(); } } if (this.hasClass('validationerror')) { var tabError = this.find('.message.validation, .message.required').first().closest('.tab'); $('.cms-container').clearCurrentTabState(); tabError.closest('.ss-tabset').tabs('option', 'active', tabError.index('.tab')); } this._super(); }, onremove: function onremove() { this.changetracker('destroy'); this._super(); }, onmatch: function onmatch() { this._super(); }, onunmatch: function onunmatch() { this._super(); }, redraw: function redraw() { if (window.debug) console.log('redraw', this.attr('class'), this.get(0)); this.add(this.find('.cms-tabset')).redrawTabs(); this.find('.cms-content-header').redraw(); }, _setupChangeTracker: function _setupChangeTracker() { this.changetracker(this.getChangeTrackerOptions()); }, confirmUnsavedChanges: function confirmUnsavedChanges() { this.trigger('beforesubmitform'); if (!this.is('.changed') || this.is('.discardchanges')) { return true; } var confirmed = confirm(_i18n2.default._t('LeftAndMain.CONFIRMUNSAVED')); if (confirmed) { this.addClass('discardchanges'); } return confirmed; }, onsubmit: function onsubmit(e, button) { if (this.prop("target") != "_blank") { if (button) this.closest('.cms-container').submitForm(this, button); return false; } }, validate: function validate() { var isValid = true; this.trigger('validate', { isValid: isValid }); return isValid; }, 'from .htmleditor': { oneditorinit: function oneditorinit(e) { var self = this, field = $(e.target).closest('.field.htmleditor'), editor = field.find('textarea.htmleditor').getEditor().getInstance(); editor.onClick.add(function (e) { self.saveFieldFocus(field.attr('id')); }); } }, 'from .cms-edit-form :input:not(:submit)': { onclick: function onclick(e) { this.saveFieldFocus($(e.target).attr('id')); }, onfocus: function onfocus(e) { this.saveFieldFocus($(e.target).attr('id')); } }, 'from .cms-edit-form .treedropdown *': { onfocusin: function onfocusin(e) { var field = $(e.target).closest('.field.treedropdown'); this.saveFieldFocus(field.attr('id')); } }, 'from .cms-edit-form .dropdown .chosen-container a': { onfocusin: function onfocusin(e) { var field = $(e.target).closest('.field.dropdown'); this.saveFieldFocus(field.attr('id')); } }, 'from .cms-container': { ontabstaterestored: function ontabstaterestored(e) { this.restoreFieldFocus(); } }, saveFieldFocus: function saveFieldFocus(selected) { if (typeof window.sessionStorage == "undefined" || window.sessionStorage === null) return; var id = $(this).attr('id'), focusElements = []; focusElements.push({ id: id, selected: selected }); if (focusElements) { try { window.sessionStorage.setItem(id, JSON.stringify(focusElements)); } catch (err) { if (err.code === DOMException.QUOTA_EXCEEDED_ERR && window.sessionStorage.length === 0) { return; } else { throw err; } } } }, restoreFieldFocus: function restoreFieldFocus() { if (typeof window.sessionStorage == "undefined" || window.sessionStorage === null) return; var self = this, hasSessionStorage = typeof window.sessionStorage !== "undefined" && window.sessionStorage, sessionData = hasSessionStorage ? window.sessionStorage.getItem(this.attr('id')) : null, sessionStates = sessionData ? JSON.parse(sessionData) : false, elementID, tabbed = this.find('.ss-tabset').length !== 0, activeTab, elementTab, toggleComposite, scrollY; if (hasSessionStorage && sessionStates.length > 0) { $.each(sessionStates, function (i, sessionState) { if (self.is('#' + sessionState.id)) { elementID = $('#' + sessionState.selected); } }); if ($(elementID).length < 1) { this.focusFirstInput(); return; } activeTab = $(elementID).closest('.ss-tabset').find('.ui-tabs-nav .ui-tabs-active .ui-tabs-anchor').attr('id'); elementTab = 'tab-' + $(elementID).closest('.ss-tabset .ui-tabs-panel').attr('id'); if (tabbed && elementTab !== activeTab) { return; } toggleComposite = $(elementID).closest('.togglecomposite'); if (toggleComposite.length > 0) { toggleComposite.accordion('activate', toggleComposite.find('.ui-accordion-header')); } scrollY = $(elementID).position().top; if (!$(elementID).is(':visible')) { elementID = '#' + $(elementID).closest('.field').attr('id'); scrollY = $(elementID).position().top; } $(elementID).focus(); if (scrollY > $(window).height() / 2) { self.find('.cms-content-fields').scrollTop(scrollY); } } else { this.focusFirstInput(); } }, focusFirstInput: function focusFirstInput() { this.find(':input:not(:submit)[data-skip-autofocus!="true"]').filter(':visible:first').focus(); } }); $('.cms-edit-form .Actions input.action[type=submit], .cms-edit-form .Actions button.action').entwine({ onclick: function onclick(e) { if (this.hasClass('gridfield-button-delete') && !confirm(_i18n2.default._t('TABLEFIELD.DELETECONFIRMMESSAGE'))) { e.preventDefault(); return false; } if (!this.is(':disabled')) { this.parents('form').trigger('submit', [this]); } e.preventDefault(); return false; } }); $('.cms-edit-form .Actions input.action[type=submit].ss-ui-action-cancel, .cms-edit-form .Actions button.action.ss-ui-action-cancel').entwine({ onclick: function onclick(e) { if (window.history.length > 1) { window.history.back(); } else { this.parents('form').trigger('submit', [this]); } e.preventDefault(); } }); $('.cms-edit-form .ss-tabset').entwine({ onmatch: function onmatch() { if (!this.hasClass('ss-ui-action-tabset')) { var tabs = this.find("> ul:first"); if (tabs.children("li").length == 1) { tabs.hide().parent().addClass("ss-tabset-tabshidden"); } } this._super(); }, onunmatch: function onunmatch() { this._super(); } }); }); });