Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o tema • Voltar para a ficha do tema
Postar em ajax com avisos
5 participantes
Fórum dos Fóruns :: Ajuda e atendimento ao utilizador :: Questões sobre códigos :: Questões resolvidas sobre códigos Javascript e jQuery
Página 1 de 1
Postar em ajax com avisos
Detalhes da questão
Endereço do fórum: http://www.brasilplayforever.com/forum
Versão do fórum: ModernBB
Descrição
Seguinte, tenho este código que funciona na versão atual do meu fórum (phpBB3)
--
Mas ele não funciona na versão ModernBB... no console aparece o seguinte erro: Uncaught TypeError: Cannot read property 'toLowerCase' of undefined
Teria como fazer alguma modificação para que ele resultasse na versão ModernBB?
Última edição por Eduardo Lima em 09.03.18 23:28, editado 1 vez(es)
Re: Postar em ajax com avisos
Olá,
tente usar este JS, editado pelo @Kyo Panda
tente usar este JS, editado pelo @Kyo Panda
- Código:
/* globals jQuery*/
/**
* Código: Postar mensagem sem refresh
* Versão: 1.0
* Autor: Daemon
* Data: 17/09/2016
*/
(function($) {
'use strict';
var bg = function() {
$('div.postbody').each(function() {
var node;
var $post = $('.post-entry', this);
var $content = $('.content', this);
if ($post.length) {
node = $post[0];
} else if ($content.length) {
node = $content[0];
}
while (node.nodeType !== 3 && node.hasChildNodes()) {
node = node.childNodes[0];
}
if (node.nodeType !== 3) {
return;
}
if (node.nodeValue.substr(0, 8) !== '[postbg=') {
return;
}
var matches = node.nodeValue.match(/^\[postbg=([^\]]*)\]/);
if (!matches) return;
$(this)
.closest('div.post-container, div.post, td.row1, td.row2,div.postmain')
.addClass('postbg')
.css('background-image', 'url(' + matches[1] + ')');
node.nodeValue = node.nodeValue.replace(/^\[postbg=[^\[]*\]\n?/, '');
if (
!node.nodeValue
&& node.nextSibling
&& node.nextSibling.nodeType === 1
&& node.nextSibling.tagName === 'BR'
) {
$(node.nextSibling).remove();
}
});
};
$(function() {
$('body').append([
'<style>' +
'.alert-success, .alert-error {',
' -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(http://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;',
'}',
'</style>',
].join('\n'));
var hrefResposta = $('a[href^="/post?t="]').attr('href');
var $form = $('#quick_reply');
$form.prepend('<div id="resultados_ajax"></div>');
$form.on('submit', function(event) {
event.preventDefault();
var resAjax = $('#resultados_ajax'); // Elemento resultados_ajax
var textEditorVal = $('textarea').sceditor('instance').val(); // Valor do editor
var min = 10; // Mínimo de caracteres para o post
var max = 15000; // Máximo de caracteres para o post (Não ultrapasse o valor limite estipulado pela forumeiros)
if (textEditorVal.length < min) {
resAjax
.html('Digite pelo menos ' + min + ' caracteres para enviar o post')
.attr('class', 'alert-error');
return;
}
if (textEditorVal.length > max) {
resAjax
.html('Seu post ultrapassou o limite de ' + max + ' caracteres')
.attr('class', 'alert-error');
return;
}
/** BEGIN Fix background image */
var image = $('#quick_reply .sceditor-container')
.css('background-image')
.match(/url\(('|")?([^'"]+)('|")?\)/i);
if (image && image.length === 4) {
textEditorVal = '[postbg=' + image[2] + ']' + textEditorVal;
}
/** END Fix background image */
$('input[type="submit"]').attr('disabled', true);
var parametros = $form.serialize();
$.ajax({
type: 'POST',
url: hrefResposta,
data: parametros + '&message=' + textEditorVal + '&post=1',
beforeSend: function(objeto) {
resAjax.html('Carregando...').attr('class', false);
},
success: function(dados) {
var href = $('a[href^="/viewtopic"]', dados).attr('href');
$.get(href, function(e) {
$('.post:last', e).hide().insertAfter('.post:last').slideDown('fast', function() {
$('html, body').animate({
scrollTop: $('.post:last').offset().top,
}, 500);
bg();
});
});
resAjax.html('Postado com sucesso!').attr('class', 'alert-success');
$('input[type="submit"]').attr('disabled', false);
$('textarea').sceditor('instance').val('');
},
});
});
});
}(jQuery));
tikky- Admineiro
- Membro desde : 13/01/2017
Mensagens : 7964
Pontos : 9219
Re: Postar em ajax com avisos
Boa noite,
O código em questão não apresenta nenhum erro relacionado a esse método, tanto é que o método .toLowerCase() não é usado nenhuma vez no código. Provavelmente é erro de outro JavaScript.
Queira checar, por gentileza.
o/
[...] Mas ele não funciona na versão ModernBB... no console aparece o seguinte erro: Uncaught TypeError: Cannot read property 'toLowerCase' of undefined [...]
O código em questão não apresenta nenhum erro relacionado a esse método, tanto é que o método .toLowerCase() não é usado nenhuma vez no código. Provavelmente é erro de outro JavaScript.
Queira checar, por gentileza.
o/
Re: Postar em ajax com avisos
- Código:
/**
* Melhorar o botão CODE no SCEditor.
*
* @author: Luiz~
* @see: <a href="http://ajuda.forumeiros.com/">Fórum dos Fóruns</a>
* @licence: MIT
*/
(function ($) {
'use strict';
$(window).on('load', function () {
$('.sceditor-button-code').css('display', 'none');
var $faCode = $([
'<a class="sceditor-button sceditor-button-c0de" data-sceditor-command="fa-code" ' +
' unselectable="on" title="Code">',
' <div unselectable="on" style="background-position: 0 -544px; filter: none!important; ' +
' opacity: 1!important;">Code</div>',
'</a>',
].join('\n'))
.on('click', function () {
$('.sceditor-fa-code-drop')
.css({
left: $faCode.offset().left + 'px',
top: $faCode.offset().top + 'px'
})
.toggle();
})
.insertAfter('.sceditor-button-code')
;
$([
'<div class="sceditor-dropdown sceditor-fa-code-drop">',
' <div>',
' <label for="txt" unselectable="on">Cole o código:</label>',
' <textarea id="fa-code-content" value="" cols="20" rows="7" ' +
' style="min-width: 160px; width: 160px;"></textarea>',
' </div>',
' <div>',
' <input type="button" class="button" id="fa-code-btn" value="Inserir código">',
' </div>',
'</div>',
].join('\n'))
.css({
marginTop: '28px',
display: 'none'
})
.appendTo('body')
;
var $sceditor = $("#text_editor_textarea");
$('#fa-code-btn').on('click', function () {
$sceditor
.sceditor('instance')
.insertText('[code]' + $('#fa-code-content').val() + '[/code]')
;
$('.sceditor-fa-code-drop').toggle();
$('#fa-code-content').val('');
});
});
}(jQuery));
Eu desativo ele e o post em ajax volta a funcionar... há algo de errado nele?
Re: Postar em ajax com avisos
Esse código também não usa o método .toLowerCase().
Tente trocá-lo por este e veja se resolve:
Tente trocá-lo por este e veja se resolve:
- Código:
/**
* Melhorar o botão CODE no SCEditor.
*
* @author: Luiz~
* @see: <a href="http://ajuda.forumeiros.com/">Fórum dos Fóruns</a>
* @licence: MIT
*/
(function ($) {
'use strict';
$(window).on('load', function () {
if (! $.sceditor) return;
$('.sceditor-button-code').css('display', 'none');
var $faCode = $([
'<a class="sceditor-button sceditor-button-c0de" data-sceditor-command="fa-code" ' +
' unselectable="on" title="Code">',
' <div unselectable="on" style="background-position: 0 -544px; filter: none!important; ' +
' opacity: 1!important;">Code</div>',
'</a>',
].join('\n'))
.on('click', function () {
$('.sceditor-fa-code-drop')
.css({
left: $faCode.offset().left + 'px',
top: $faCode.offset().top + 'px'
})
.toggle();
})
.insertAfter('.sceditor-button-code')
;
$([
'<div class="sceditor-dropdown sceditor-fa-code-drop">',
' <div>',
' <label for="txt" unselectable="on">Cole o código:</label>',
' <textarea id="fa-code-content" value="" cols="20" rows="7" ' +
' style="min-width: 160px; width: 160px;"></textarea>',
' </div>',
' <div>',
' <input type="button" class="button" id="fa-code-btn" value="Inserir código">',
' </div>',
'</div>',
].join('\n'))
.css({
marginTop: '28px',
display: 'none'
})
.appendTo('body')
;
var $sceditor = $("#text_editor_textarea");
$('#fa-code-btn').on('click', function () {
$sceditor
.sceditor('instance')
.insertText('[code]' + $('#fa-code-content').val() + '[/code]')
;
$('.sceditor-fa-code-drop').toggle();
$('#fa-code-content').val('');
});
});
}(jQuery));
Re: Postar em ajax com avisos
Dei uma pesquisada nos códigos que utilizam este método e achei um, mas mesmo eu desativando-o, o código do post em ajax não funciona... só funciona se desativo o outro código da tag CODE.
Vou te passar por MP o fórum onde estou fazendo os testes, então você pode ver se encontra algo.
Obs: O código que você passou não resolveu o problema.
Vou te passar por MP o fórum onde estou fazendo os testes, então você pode ver se encontra algo.
Obs: O código que você passou não resolveu o problema.
Última edição por Eduardo Lima em 09.03.18 17:53, editado 1 vez(es)
Re: Postar em ajax com avisos
Olá,
Vamos tentar da seguinte forma.
Aceda à:
Procure pela opção:
"Desautorizar formulários não oficiais de postarem no fórum e enviar mensagens privadas :"
Opte pela opção Não.
Em seguida, salve as novas configurações.
Resulta?
o/
Vamos tentar da seguinte forma.
Aceda à:
Painel de Controle Geral Segurança
Procure pela opção:
"Desautorizar formulários não oficiais de postarem no fórum e enviar mensagens privadas :"
Opte pela opção Não.
Em seguida, salve as novas configurações.
Resulta?
o/
Re: Postar em ajax com avisos
Pode fechar o tópico.
Obs: O botão de resolvido não está funcionado, apertei mais de 10x e não troca o ícone.
Obs: O botão de resolvido não está funcionado, apertei mais de 10x e não troca o ícone.
Re: Postar em ajax com avisos
Questão marcada como Resolvida ou o Autor solicitou que ela fosse arquivada. Tópico marcado como Resolvido e movido para Questões resolvidas. |
Tópicos semelhantes
» Postar em AJAX com avisos
» Postar em ajax com avisos
» Postar em ajax com avisos
» Postar em ajax com avisos
» Postar mensagem com ajax
» Postar em ajax com avisos
» Postar em ajax com avisos
» Postar em ajax com avisos
» Postar mensagem com ajax
Fórum dos Fóruns :: Ajuda e atendimento ao utilizador :: Questões sobre códigos :: Questões resolvidas sobre códigos Javascript e jQuery
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos