/** * @namespace WORKAREA.disablePublishNow */ WORKAREA.registerModule('disablePublishNow', (function () { 'use strict'; var getConfig = function ($button) { var $parent = $button.closest('form'); return _.assign({}, WORKAREA.config.tooltipster, { content : $('[data-disable-publish-now-warning]', $parent), contentCloning: true, side: 'top' }); }, enableTooltip = function($button) { if ($button.hasClass('tooltipstered')) { $button.tooltipster('enable'); } else { $button.tooltipster(getConfig($button)); } $button.tooltipster('open'); }, disableTooltip = function($button) { if ( ! $button.hasClass('tooltipstered')) { return; } $button .tooltipster('disable') .tooltipster('close'); }, checkPublishOption = function($option, event) { var $select = $(event.target), $button = $select.closest('form').find('[type="submit"]'); if ($select.val() === $option.attr('value') && $button.is(':visible')) { $button.attr('disabled', 'disabled'); enableTooltip($button); } else { $button.removeAttr('disabled'); disableTooltip($button); } }, toggleTooltips = function($options) { _.forEach($options, function(option) { var $option = $(option); checkPublishOption($option, { target: $option.closest('select') }); }); }, handleContentEditorForms = function(event) { var $options = $(event.target).find('[data-disable-publish-now]'); toggleTooltips($options); }, /** * @method * @name init * @memberof WORKAREA.disablePublishNow */ init = function ($scope) { var $option = $('[data-disable-publish-now]', $scope); $option .parent('select') .on('change', _.partial(checkPublishOption, $option)); toggleTooltips($option); $('.content-editor', $scope) .on('close:contentEditorAside open:contentEditorAside', handleContentEditorForms); }; return { init: init }; }()));