Spaces:
No application file
No application file
| Mautic.overflowNavOptions = { | |
| "parent": ".nav-overflow-tabs", | |
| "more": Mautic.translate('mautic.core.tabs.more') | |
| }; | |
| /** | |
| * Toggle a tab based on published status | |
| * | |
| * @param el | |
| */ | |
| Mautic.toggleTabPublished = function(el) { | |
| if (mQuery(el).val() === "1" && mQuery(el).prop('checked')) { | |
| Mautic.publishTab(el); | |
| } else { | |
| Mautic.unpublishTab(el); | |
| } | |
| } | |
| /** | |
| * Publish a tab | |
| * | |
| * @param tab | |
| */ | |
| Mautic.publishTab = function(tab) { | |
| mQuery('a[href="#'+Mautic.getTabId(tab)+'"]').find('.fa').removeClass('text-muted').addClass('text-success'); | |
| }; | |
| /** | |
| * Unpublish a tab | |
| * | |
| * @param tab | |
| */ | |
| Mautic.unpublishTab = function(tab) { | |
| mQuery('a[href="#'+Mautic.getTabId(tab)+'"]').find('.fa').removeClass('text-success').addClass('text-muted'); | |
| }; | |
| /** | |
| * Get the tab ID from the given element | |
| * | |
| * @param tab | |
| * @returns {*} | |
| */ | |
| Mautic.getTabId = function(tab) { | |
| if (!mQuery(tab).hasClass('tab-pane')) { | |
| tab = mQuery(tab).closest('.tab-pane'); | |
| } | |
| return mQuery(tab).attr('id'); | |
| }; | |
| /** | |
| * | |
| * @param tabs | |
| * @param options | |
| */ | |
| Mautic.activateOverflowTabs = function(tabs, options) { | |
| if (!options) { | |
| options = {}; | |
| } | |
| var localOptions = Mautic.overflowNavOptions; | |
| mQuery.extend(localOptions, options); | |
| mQuery(tabs).overflowNavs(localOptions); | |
| var resizeMe = function(tabs, options) { | |
| mQuery(window).on('resize', {tabs: tabs, options: options}, | |
| function (event) { | |
| mQuery(event.data.tabs).overflowNavs(event.data.options); | |
| } | |
| ); | |
| }; | |
| resizeMe(tabs, localOptions); | |
| }; | |
| /** | |
| * Activate sortable tabs | |
| * @param tabs | |
| */ | |
| Mautic.activateSortableTabs = function(tabs) { | |
| mQuery(tabs).sortable( | |
| { | |
| container: 'ul.nav', | |
| axis: mQuery(tabs).hasClass('tabs-right') || mQuery(tabs).hasClass('tabs-left') ? 'y' : 'x', | |
| stop: function (e, ui) { | |
| var action = mQuery(tabs).attr('data-sort-action'); | |
| mQuery.ajax({ | |
| type: "POST", | |
| url: action, | |
| data: mQuery(tabs).sortable("serialize", {attribute: 'data-tab-id'}) | |
| }); | |
| } | |
| } | |
| ); | |
| }; | |
| /** | |
| * Activate hover delete buttons | |
| * | |
| * @param container | |
| */ | |
| Mautic.activateTabDeleteButtons = function(container) { | |
| mQuery(container + " .nav.nav-deletable>li a").each( | |
| function() { | |
| Mautic.activateTabDeleteButton(this); | |
| } | |
| ); | |
| }; | |
| /** | |
| * Activate hover and click for tab deletes | |
| * | |
| * @param tab | |
| */ | |
| Mautic.activateTabDeleteButton = function(tab) { | |
| var btn = mQuery('<span class="btn btn-danger btn-xs btn-delete pull-right hide"><i class="ri-close-line"></i></span>') | |
| .on('click', | |
| function() { | |
| return Mautic.deleteTab(btn) | |
| } | |
| ).appendTo(tab); | |
| mQuery(tab).hover( | |
| function() { | |
| mQuery(btn).removeClass('hide'); | |
| }, | |
| function () { | |
| mQuery(btn).addClass('hide'); | |
| } | |
| ); | |
| }; | |
| /** | |
| * Delete a tab | |
| * | |
| * @param tab | |
| */ | |
| Mautic.deleteTab = function(deleteBtn) { | |
| var tab = mQuery(deleteBtn).closest('li'); | |
| var tabContent = mQuery(deleteBtn).closest('a').attr('href'); | |
| var parent = mQuery(tab).closest('ul'); | |
| var wasActive = (mQuery(tab.hasClass('active'))); | |
| var action = mQuery(parent).attr('data-delete-action'); | |
| if (action) { | |
| var success = false; | |
| mQuery.ajax({ | |
| url: action, | |
| type: 'POST', | |
| dataType: "json", | |
| data: {tab: tabContent}, | |
| success: function (response) { | |
| if (response && response.success) { | |
| mQuery(tab).remove(); | |
| mQuery(tabContent).remove(); | |
| if (wasActive) { | |
| mQuery(parent).find('li:first a').click(); | |
| } | |
| if (!mQuery(parent).find('li').length) { | |
| mQuery('.tab-content .placeholder').removeClass('hide'); | |
| } | |
| } else { | |
| Mautic.stopIconSpinPostEvent(); | |
| } | |
| } | |
| }); | |
| } else { | |
| mQuery(tab).remove(); | |
| mQuery(tabContent).remove(); | |
| if (wasActive) { | |
| mQuery(parent).find('li:first a').click(); | |
| } | |
| if (!mQuery(parent).find('li').length) { | |
| mQuery('.tab-content .placeholder').removeClass('hide'); | |
| } | |
| } | |
| return false; | |
| }; |