%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/assets/c612d4ee/js/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/assets/c612d4ee/js/humhub.content.form.js |
/** * Core module for managing Streams and StreamItems * @type Function */ humhub.module('content.form', function(module, require, $) { var CREATE_FORM_ROOT_SELECTOR = '#contentFormBody'; var object = require('util').object; var client = require('client'); var event = require('event'); var Widget = require('ui.widget').Widget; var loader = require('ui.loader'); var instance; var CreateForm = function(node) { Widget.call(this, node); }; object.inherits(CreateForm, Widget); CreateForm.prototype.init = function() { this.$.hide(); this.menu = this.$.parent().prev('#contentFormMenu'); // Hide options by default $('.contentForm_options').hide(); this.setDefaultVisibility(); this.$.fadeIn('fast'); if(!module.config['disabled']) { var that = this; $('#contentFormBody').on('click.humhub:content:form dragover.humhub:content:form', function(evt) { // Prevent fading in for topic remove button clicks if($(evt.target).closest('.topic-remove-label').length) { return; } that.showMenu(); $('.contentForm_options').fadeIn(); }); } else { $('#contentFormBody').find('.humhub-ui-richtext').trigger('disable'); } }; CreateForm.prototype.showMenu = function() { this.menu.find('li,a').removeClass('active'); const firstMenuWithForm = this.menu.find('a[data-action-click=loadForm]:eq(0)'); if (firstMenuWithForm.length) { firstMenuWithForm.addClass('active') .parent().addClass('active'); } this.menu.fadeIn(); } CreateForm.prototype.submit = function(evt) { this.$.find('.preferences, .fileinput-button').hide(); this.$.find('.help-block-error').html(''); this.$.find('.has-error').removeClass('has-error'); var that = this; evt.block = 'manual'; event.trigger('humhub:content:beforeSubmit', this); client.submit(evt).then(function(response) { that.$.find(".preferences, .fileinput-button").show(); $('.contentForm_options .preferences, .fileinput-button').show(); if(!response.errors) { event.trigger('humhub:content:newEntry', response.output, this); event.trigger('humhub:content:afterSubmit', response.output, this); that.resetForm(); } else { that.handleError(response); } }).catch(function(e) { module.log.error(e, true); }).finally(function() { evt.finish(); }); }; /** * Todo: this is post form only, this needs to be added to post module perhaps by calling $form.trigger('humhub:form:clear'); * @returns {undefined} */ CreateForm.prototype.resetForm = function() { // Reset Form (Empty State) $('.contentForm_options').hide(); var $contentForm = $('.contentForm'); $contentForm.filter(':text').val(''); $contentForm.filter('textarea').val('').trigger('autosize.resize'); $contentForm.attr('checked', false); this.resetSettingInputs(); this.setDefaultVisibility(); this.resetFilePreview(); this.resetFileUpload(); $('#public').attr('checked', false); $('#contentFormBody').find('.humhub-ui-richtext').trigger('clear'); }; CreateForm.prototype.resetSettingInputs = function() { $('#notifyUserContainer').hide(); Widget.instance('#notifyUserInput').reset(); $('#postTopicContainer').hide(); var topicPicker = Widget.instance('#postTopicInput'); if(topicPicker) { topicPicker.reset(); } }; CreateForm.prototype.resetFilePreview = function() { var preview = Widget.instance($('#contentFormFiles_preview')); if(preview) { preview.reset(); } }; CreateForm.prototype.resetFileUpload = function() { var upload = Widget.instance($('#contentForm_message-file-upload')); if(upload) { upload.reset(); } }; CreateForm.prototype.handleError = function(response) { var that = this; var model = that.$.find('.form-group:first').attr('class').replace(/^.+field-([^-]+).+$/, '$1'); $.each(response.errors, function(fieldName, errorMessages) { var fieldSelector = '.field-' + model + '-' + fieldName; var inputSelector = '.field-contentForm_' + fieldName; var multiInputSelector = '[name="' + fieldName + '[]"]'; that.$.find(fieldSelector).addClass('has-error'); that.$.find(fieldSelector + ', ' + inputSelector + ', ' + inputSelector + '_input') .find('.help-block-error:first').html(errorMessages.join('<br>')); that.$.find(multiInputSelector).closest('.form-group').addClass('has-error'); }); }; CreateForm.prototype.getForm = function() { return this.$.find('form:visible'); }; CreateForm.prototype.changeVisibility = function() { if(!$('#contentForm_visibility').prop('checked')) { this.setPublicVisibility(); } else { this.setPrivateVisibility(); } }; CreateForm.prototype.setDefaultVisibility = function() { if(module.config['defaultVisibility']) { this.setPublicVisibility(); } else { this.setPrivateVisibility(); } }; CreateForm.prototype.setPublicVisibility = function() { $('#contentForm_visibility').prop("checked", true); $('#contentForm_visibility_entry').html('<i class="fa fa-lock"></i>' + module.text(['makePrivate'])); $('.label-public').removeClass('hidden'); }; CreateForm.prototype.setPrivateVisibility = function() { $('#contentForm_visibility').prop("checked", false); $('#contentForm_visibility_entry').html('<i class="fa fa-unlock"></i>' + module.text(['makePublic'])); $('.label-public').addClass('hidden'); }; CreateForm.prototype.notifyUser = function() { $('#notifyUserContainer').show(); Widget.instance('#notifyUserInput').focus(); }; CreateForm.prototype.setTopics = function() { $('#postTopicContainer').show(); var topicPicker = Widget.instance('#postTopicInput'); if(topicPicker) { topicPicker.focus(); } }; const CreateFormMenu = Widget.extend(); CreateFormMenu.prototype.init = function() { this.topMenu = this.$.find('ul.nav'); this.subMenu = this.$.find('li.content-create-menu-more'); this.formPanel = this.$.parent().find('.panel'); if (!this.formPanel.find('form').length) { this.$.fadeIn(); this.$.addClass('menu-without-form'); } } CreateFormMenu.prototype.activateMenu = function (evt) { this.topMenu.find('li,a').removeClass('active'); evt.$trigger.addClass('active').find('a').addClass('active'); if (evt.$trigger.closest('ul.dropdown-menu').length) { // Move item from sub menu to top menu this.subMenu.find('ul').prepend(this.subMenu.prev()); this.subMenu.before(evt.$trigger.parent()); } } CreateFormMenu.prototype.loadForm = function (evt) { const that = this; loader.set(that.formPanel); that.activateMenu(evt); client.get(evt).then(function(response) { that.formPanel.replaceWith(response.html); that.formPanel = that.$.parent().find('.panel'); that.formPanel.find('[data-action-component], [data-ui-widget]').each(function () { Widget.instance($(this)); }); that.formPanel.find('input[type=text], textarea, .ProseMirror').eq(0).trigger('click').focus(); }).catch(function(e) { module.log.error(e, true); loader.reset(that.formPanel); }); } var init = function() { var $root = $(CREATE_FORM_ROOT_SELECTOR); if($root.length) { instance = Widget.instance($root); } }; var unload = function() { instance = undefined; } module.export({ CreateForm: CreateForm, CreateFormMenu: CreateFormMenu, instance: instance, init: init, initOnPjaxLoad: true, unload: unload }); });