Com este tutorial, a postagem de mensagens será mais simples, sem a atualização da página e com avisos.
Postar em AJAX com avisos
TUTORIAIS, DICAS E ASTÚCIAS |
Instalação do código Javascript As páginas javascript ativas em seu fórum possibilita inserir scripts e jQuery para personalizar seu fórum, contudo é importante saber que qualquer script encontrado na internet acabam por não surgir efeito nos fóruns.
Painel de Controle Módulos HTML e Javascript Gestão dos códigos Javascript Criar um novo javascript |
| Habilitar o gerenciamento dos códigos Javascript - Permite ativar os scripts personalizados criados pelo administrador no fórum. Este recurso não tem qualquer impacto nos scripts nativos do fórum. |
| Tìtulo - Cria um título para identificar o script a ser modificado mais tarde na lista de scripts do fórum. |
| Investimento - Define o local em específico que este script será executado. Você pode investir o script para vários locais no fórum (Todas as páginas) ou pode definir para certos locais disponíveis na tela de investimento. Neste caso, estaremos investindo nos tópicos. |
| Código Javascript - Espaço destinado a receber o script que será ativado pelo administrador. Antes de aplicar o script ao fórum, é importante revisá-lo para ter certeza de seu funcionamento. | Código:
- Código:
/* * Aplicação: Postar em AJAX com avisos * Data: 16/05/2018 * Versão: 2.016052018 * Copyright (c) 2018 Daemon <ajuda.forumeiros.com> * Trabalho gratuito. Pode ser partilhado e/ou editado */ (function() { ajaxPost = { initialize: function() { $(function() { ajaxPost.setupAjaxPost(); }); }, min: 10, max: 15000, scrollSpeed: 120, minMsg: 'Você deve digitar um limite mínimo de caracteres para enviar o comentário', maxMsg: 'Seu comentário ultrapassou o limite máximo de caracteres', loadingMsg: 'Carregando...', successMsg: 'Postado com sucesso!', ajaxDiv: $("<div>", { id: 'ajax-message' }), message: function(a, b) { ajaxPost.ajaxDiv.html(b).attr("class", a); }, response: { success: 'alert-success', error: 'alert-error', info: 'alert-info' }, myCSS: '<style type="text/css">' + '.alert-success, .alert-error, .alert-info {' + /* ' -moz-box-shadow: rgba(0,0,0,0.1) 0 1px 3px;' + ' -webkit-box-shadow: rgba(0,0,0,0.1) 0 1px 3px;' + ' background: url(https://imgur.com/J3aqwYE.png) repeat-x 0 0;' + ' box-shadow: rgba(0,0,0,0.1) 0 1px 3px;' +*/ ' display: block;' + ' font-size: 12px;' + ' line-height: 1.6;' + ' padding: 10px;' +/* ' text-shadow: 0 1px 0 rgba(255,255,255,0.5);' +*/ '}' + '.alert-success {' + ' background-color: #cde3a4;' + ' border: 1px solid #a8c471;' + ' color: #436500;' + '}' + '.alert-error {' + ' background-color: #ffbdbd;' + ' border: 1px solid #d8aba7;' + ' color: #92463f;' + '}' + '.alert-info {' + ' background-color: #52a8b1;' + ' border: 1px solid #5573a0;' + ' color: #1a2b44;' + '}' + '</style>', setupAjaxPost: function() { var form = $("#quick_reply"), textEditorVal = "", replyHref = $("a[href^='/post?t=']").attr("href"), viewTopicHref = null, pagination = $(".paging .sprite-arrow_prosilver_right"); // Inserting CSS before page body $(ajaxPost.myCSS).insertBefore("body"); // Inserting element ajaxMessage prepend to form quick_reply $(ajaxPost.ajaxDiv).prependTo(form); form.on("click", "input[name='post']", function(e) { e.preventDefault(); textEditorVal = $("#text_editor_textarea").sceditor("instance").val(); if (textEditorVal.length < ajaxPost.min) { ajaxPost.message(ajaxPost.response.error, ajaxPost.minMsg + " (" + ajaxPost.min + ")"); } else if (textEditorVal.length > ajaxPost.max) { ajaxPost.message(ajaxPost.response.error, ajaxPost.maxMsg + " (" + ajaxPost.max + ")"); } else { $("input[type='submit']").attr("disabled", true); ajaxPost.message(ajaxPost.response.info, ajaxPost.loadingMsg); $.post(replyHref, { message: textEditorVal, post: 1, attach_sig: 1 }).done(function(data) { viewTopicHref = $("a[href^='/viewtopic']", data).attr("href"); if (pagination.length && pagination.parent().attr("href") !== location.pathname) { location.href = viewTopicHref; } else { $.get(viewTopicHref, function(e) { $(".post:last", e).hide().insertAfter(".post:last").slideDown(function() { $("html, body").stop().animate({ scrollTop: $(".post:last").offset().top - ajaxPost.scrollSpeed }); }); }); ajaxPost.message(ajaxPost.response.success, ajaxPost.successMsg); $("input[type='submit']").attr("disabled", false); $("#text_editor_textarea").sceditor("instance").val(""); } }).fail(function(jqXHR, textStatus, errorThrown) { console.log(textStatus, errorThrown); }); } }); } }; ajaxPost.initialize(); })(); Demostração:
|