Botões SCEditor em determinados tópicos
2 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
Botões SCEditor em determinados tópicos
Detalhes da questão
Endereço do fórum: http://www.brasilplayultimate.com.br
Versão do fórum: ModernBB
Descrição
Lembro-me bem do código ser funcional na versão PunBB mas acho que tinha algum JavaScript a mais que devo ter apagado nessa mudança, infelizmente não me lembro de qual.
Vejamos, o código utilizado por mim é este:
- Código:
/**
* Código jQuery que permite adiconar múltiplos botões ao SCEditor;
* Autores: Luiz~ e Kyo Panda (ajuda.forumeiros.com);
* Plataforma: Forumeiros;
* Versão: Todas;
* Investimento: Todas as páginas;
* Licence MIT;
*/
(function ($) {
'use strict';
var forumAdd = 6;
var botoes = [
{
'somenteModVer': true,
'name': 'Tópico Bloqueado',
'text': 'Olá! \nO seu tópico encontra-se bloqueado. \nQueira ler nossas [i]regras[/i] para saber mais.',
'id': 'tpc-lock',
'imgUrl': 'http://i.imgur.com/z5lPhgz.png'
}, {
'somenteModVer': true,
'name': 'Tópico Desbloqueado',
'text': 'Olá! \nEsta é uma mensagem de status: \nSeu tópico foi desbloqueado. \nQueira ler nossas [i]regras[/i] para saber mais.',
'id': 'tpc-unlock',
'imgUrl': 'http://i.imgur.com/hsBvMRG.png'
}, {
'somenteModVer': true,
'name': 'Mensagens de Denúncias',
'id': 'mensagens-de-denuncias',
'imgUrl': 'http://i.imgur.com/oAGWDdG.png',
'filhos': [
{
'somenteModVer': true,
'name': 'Denúncia UP',
'text': '[table class=sucesso][tr][td][b]Denúncia UP[/b] \n\[b]Motivo:[/b] Motivo Aqui \n\[b]Punição:[/b] Punição Aqui \n \n[b]Achou injusto? Peça revisão nessa área: http://www.brasilplayultimate.com.br/f130-revisao-de-punicao[/b]\n \n[b]Tópico Marcado como Resolvido e movido para "Arquivos - Denúncias".[/b][/td][/tr][/table]',
'id': 'msm-denuncia',
'imgUrl': 'http://i.imgur.com/W5mUMil.png'
}, {
'somenteModVer': true,
'name': 'Denúncia FAIL',
'text': '[table class=alerta][tr][td][b]Denúncia FAIL[/b]\n\[b]Motivo:[/b] Motivo Aqui \n \n[b]Achou injusto? Peça revisão nessa área: http://www.brasilplayultimate.com.br/f130-revisao-de-punicao[/b]\n\ \n\[b]Tópico Marcado como Recusado e movido para "Arquivos - Denúncias".[/b][/td][/tr][/table]',
'id': 'msm-denuncia',
'imgUrl': 'http://i.imgur.com/E3r9Hh1.png'
}, {
'somenteModVer': true,
'name': 'Denúncia Em Curso',
'text': '[table class=aviso][tr][td][b]Denúncia Em Curso[/b] \n \n[b]Tópico Marcado como Em Curso. Denúncias são fechadas no prazo de 24H caso o acusado responda, caso contrário, terá o fechamento no tempo de 48H.[/b][/td][/tr][/table]',
'id': 'msm-denuncia',
'imgUrl': 'http://i.imgur.com/l7KlLp6.png'
}
]
}
];
// Begin CSS:
$(function () {
$([
/**
* Você pode customizar o CSS, mas lembre-se de incluir as linhas entre aspas simples,
* E sempre usar aspas compostas dentro de cada linha.
* Lembre-se também de sempre incluir vírgula após cada linha. Exceto na última linha.
*/
'<style>',
' #main .sceditor-toolbar,',
' #main .sceditor-group {',
' overflow: initial;',
' }',
' .sceditor-group {',
' position: relative;',
' }',
' .fa-dropdown1 {',
' position: absolute;',
' padding: 0px!important;',
' top: 27px;',
' background-color: #fff;',
' border: 1px #ccc solid;',
' display: none;',
' }',
' .fa-dropdown1 a {',
' display: block;',
' line-height: 1.5em;',
' padding: 7px 15px 7px 30px;',
' white-space: nowrap;',
' border-bottom: 1px #ccc solid;',
' cursor: pointer;',
' font-size: 12px;',
' }',
' .fa-dropdown1 a:last-child {',
' border-bottom: none;',
' }',
' .fa-dropdown1-open {',
' display: block;',
' }',
'.naoaparecer{display:none!important;}',
'</style>'
].join('\n'))
.appendTo('head');
});
// Begin 'code':
$(window).on('load', function () {
// Variáveis Importantes:
var $ultimoGrupo = $('.sceditor-group:last');
var $sceditor = $('#text_editor_textarea').sceditor('instance');
var bgStyles1 = 'background-position: center!important; background-repeat: no-repeat!important;';
var bgStyles2 = 'background-position: 8px 9px!important; background-repeat: no-repeat!important;';
$.each(botoes, function (index, botoes) {
if (botoes.somenteModVer && _userdata.user_level <= 0) {
return;
}
if(botoes.id=='mensagens-de-denuncias'&&jQuery('p.crumbs a.nav[href^="/f'+forumAdd+'-"]').length==0){
return false;
}
else {
if ($(botoes.filhos).length) {
// Caso seja um dropdown (TENHA UM FILHO):
var $parent = $('<a>', {
class: 'sceditor-button ' + botoes.id,
title: ' ' + botoes.name,
style: 'background-image: url(' + botoes.imgUrl + ')!important; ' + bgStyles1,
unselectable: 'on'
})
.appendTo($ultimoGrupo)
.on('click', function () {
$ultimoGrupo
.find('.fa-dropdown1-' + botoes.id)
.css('left', $parent.position().left + 'px')
.toggleClass('fa-dropdown1-open');
});
var $dropdown = $('<div>', {
class: 'sceditor-dropdown fa-dropdown1 fa-dropdown1-' + botoes.id
})
.appendTo($ultimoGrupo);
// Dropdown children:
$.each(botoes.filhos, function (index, filhos) {
$('<a>', {
html: filhos.name,
class: filhos.id + 'fa-dropdown1-item',
style: 'background-image: url(' + filhos.imgUrl + ')!important; ' + bgStyles2,
})
.appendTo($dropdown)
.on('click', function () {
$sceditor.insertText(filhos.text);
$('.fa-dropdown1')
.toggleClass('fa-dropdown1-open');
});
});
return;
}
}
});
});
}(jQuery));
- Código:
var forumAdd = 6;
- Código:
if(botoes.id=='mensagens-de-denuncias'&&jQuery('p.crumbs a.nav[href^="/f'+forumAdd+'-"]').length==0){
Tem como fazer o código funcional novamente ?
Re: Botões SCEditor em determinados tópicos
Podemos fazê-lo, mas é ineficaz:
Funcionaria perfeitamente pela caixa de resposta rápida, mas se o usuário clicar em responder, não funcionaria, tendo em vista que os crumbs não estão disponíveis na página de postagem.
Concorda?
Funcionaria perfeitamente pela caixa de resposta rápida, mas se o usuário clicar em responder, não funcionaria, tendo em vista que os crumbs não estão disponíveis na página de postagem.
Concorda?
Re: Botões SCEditor em determinados tópicos
Mas a intenção é apenas na caixa de resposta mesmo luiz, o código acima funcionava do mesmo jeito que você falou.
Concordo sim, pode prosseguir amigo.
Concordo sim, pode prosseguir amigo.
Re: Botões SCEditor em determinados tópicos
Ao invés de usar essa condição um pouco [s]mal feita[/s], podemos usar algo melhor, veja:
-> http://prntscr.com/gw2j8z
Creio que com isso o senhor consiga ajeitar.
- Código:
(function () {
if (location.pathname.indexOf('/t110349') === -1) {
return;
}
// Do Stuff:
console.log('Tudo ok!');
})();
-> http://prntscr.com/gw2j8z
Creio que com isso o senhor consiga ajeitar.
Re: Botões SCEditor em determinados tópicos
Certo, como seria adicionado isso ao JS ?
Tentei adicionar desta maneira mas não tive sucesso:
Ele aparece em todos os locais.
Tentei adicionar desta maneira mas não tive sucesso:
- Código:
/**
* Código jQuery que permite adiconar múltiplos botões ao SCEditor;
* Autores: Luiz~ e Kyo Panda (ajuda.forumeiros.com);
* Plataforma: Forumeiros;
* Versão: Todas;
* Investimento: Todas as páginas;
* Licence MIT;
*/
(function ($) {
(function () {
if (location.pathname.indexOf('/f6-') === -1) {
return;
}
// Do Stuff:
console.log('Tudo ok!');
})();
var botoes = [
{
'somenteModVer': true,
'name': 'Tópico Bloqueado',
'text': 'Olá! \nO seu tópico encontra-se bloqueado. \nQueira ler nossas [i]regras[/i] para saber mais.',
'id': 'tpc-lock',
'imgUrl': 'http://i.imgur.com/z5lPhgz.png'
}, {
'somenteModVer': true,
'name': 'Tópico Desbloqueado',
'text': 'Olá! \nEsta é uma mensagem de status: \nSeu tópico foi desbloqueado. \nQueira ler nossas [i]regras[/i] para saber mais.',
'id': 'tpc-unlock',
'imgUrl': 'http://i.imgur.com/hsBvMRG.png'
}, {
'somenteModVer': true,
'name': 'Mensagens de Denúncias',
'id': 'mensagens-de-denuncias',
'imgUrl': 'http://i.imgur.com/oAGWDdG.png',
'filhos': [
{
'somenteModVer': true,
'name': 'Denúncia UP',
'text': '[table class=sucesso][tr][td][b]Denúncia UP[/b] \n\[b]Motivo:[/b] Motivo Aqui \n\[b]Punição:[/b] Punição Aqui \n \n[b]Achou injusto? Peça revisão nessa área: http://www.brasilplayultimate.com.br/f130-revisao-de-punicao[/b]\n \n[b]Tópico Marcado como Resolvido e movido para "Arquivos - Denúncias".[/b][/td][/tr][/table]',
'id': 'msm-denuncia',
'imgUrl': 'http://i.imgur.com/W5mUMil.png'
}, {
'somenteModVer': true,
'name': 'Denúncia FAIL',
'text': '[table class=alerta][tr][td][b]Denúncia FAIL[/b]\n\[b]Motivo:[/b] Motivo Aqui \n \n[b]Achou injusto? Peça revisão nessa área: http://www.brasilplayultimate.com.br/f130-revisao-de-punicao[/b]\n\ \n\[b]Tópico Marcado como Recusado e movido para "Arquivos - Denúncias".[/b][/td][/tr][/table]',
'id': 'msm-denuncia',
'imgUrl': 'http://i.imgur.com/E3r9Hh1.png'
}, {
'somenteModVer': true,
'name': 'Denúncia Em Curso',
'text': '[table class=aviso][tr][td][b]Denúncia Em Curso[/b] \n \n[b]Tópico Marcado como Em Curso. Denúncias são fechadas no prazo de 24H caso o acusado responda, caso contrário, terá o fechamento no tempo de 48H.[/b][/td][/tr][/table]',
'id': 'msm-denuncia',
'imgUrl': 'http://i.imgur.com/l7KlLp6.png'
}
]
}
];
// Begin CSS:
$(function () {
$([
/**
* Você pode customizar o CSS, mas lembre-se de incluir as linhas entre aspas simples,
* E sempre usar aspas compostas dentro de cada linha.
* Lembre-se também de sempre incluir vírgula após cada linha. Exceto na última linha.
*/
'<style>',
' #main .sceditor-toolbar,',
' #main .sceditor-group {',
' overflow: initial;',
' }',
' .sceditor-group {',
' position: relative;',
' }',
' .fa-dropdown1 {',
' position: absolute;',
' padding: 0px!important;',
' top: 27px;',
' background-color: #fff;',
' border: 1px #ccc solid;',
' display: none;',
' }',
' .fa-dropdown1 a {',
' display: block;',
' line-height: 1.5em;',
' padding: 7px 15px 7px 30px;',
' white-space: nowrap;',
' border-bottom: 1px #ccc solid;',
' cursor: pointer;',
' font-size: 12px;',
' }',
' .fa-dropdown1 a:last-child {',
' border-bottom: none;',
' }',
' .fa-dropdown1-open {',
' display: block;',
' }',
'.naoaparecer{display:none!important;}',
'</style>'
].join('\n'))
.appendTo('head');
});
// Begin 'code':
$(window).on('load', function () {
// Variáveis Importantes:
var $ultimoGrupo = $('.sceditor-group:last');
var $sceditor = $('#text_editor_textarea').sceditor('instance');
var bgStyles1 = 'background-position: center!important; background-repeat: no-repeat!important;';
var bgStyles2 = 'background-position: 8px 9px!important; background-repeat: no-repeat!important;';
$.each(botoes, function (index, botoes) {
if (botoes.somenteModVer && _userdata.user_level <= 0) {
return;
}
if(botoes.id=='mensagens-de-denuncias'&&jQuery('p.crumbs a.nav[href^="/f'+forumAdd+'-"]').length==0){
return false;
}
else {
if ($(botoes.filhos).length) {
// Caso seja um dropdown (TENHA UM FILHO):
var $parent = $('<a>', {
class: 'sceditor-button ' + botoes.id,
title: ' ' + botoes.name,
style: 'background-image: url(' + botoes.imgUrl + ')!important; ' + bgStyles1,
unselectable: 'on'
})
.appendTo($ultimoGrupo)
.on('click', function () {
$ultimoGrupo
.find('.fa-dropdown1-' + botoes.id)
.css('left', $parent.position().left + 'px')
.toggleClass('fa-dropdown1-open');
});
var $dropdown = $('<div>', {
class: 'sceditor-dropdown fa-dropdown1 fa-dropdown1-' + botoes.id
})
.appendTo($ultimoGrupo);
// Dropdown children:
$.each(botoes.filhos, function (index, filhos) {
$('<a>', {
html: filhos.name,
class: filhos.id + 'fa-dropdown1-item',
style: 'background-image: url(' + filhos.imgUrl + ')!important; ' + bgStyles2,
})
.appendTo($dropdown)
.on('click', function () {
$sceditor.insertText(filhos.text);
$('.fa-dropdown1')
.toggleClass('fa-dropdown1-open');
});
});
return;
}
}
});
});
}(jQuery));
Ele aparece em todos os locais.
Re: Botões SCEditor em determinados tópicos
Tente trocar por este:
- Código:
/**
* Código jQuery que permite adiconar múltiplos botões ao SCEditor;
* Autores: Luiz~ e Kyo Panda (ajuda.forumeiros.com);
* Plataforma: Forumeiros;
* Versão: Todas;
* Investimento: Todas as páginas;
* Licence MIT;
*/
(function ($) {
var botoes = [
{
'somenteModVer': true,
'name': 'Tópico Bloqueado',
'text': 'Olá! \nO seu tópico encontra-se bloqueado. \nQueira ler nossas [i]regras[/i] para saber mais.',
'id': 'tpc-lock',
'imgUrl': 'http://i.imgur.com/z5lPhgz.png'
}, {
'somenteModVer': true,
'name': 'Tópico Desbloqueado',
'text': 'Olá! \nEsta é uma mensagem de status: \nSeu tópico foi desbloqueado. \nQueira ler nossas [i]regras[/i] para saber mais.',
'id': 'tpc-unlock',
'imgUrl': 'http://i.imgur.com/hsBvMRG.png'
}, {
'somenteModVer': true,
'name': 'Mensagens de Denúncias',
'id': 'mensagens-de-denuncias',
'imgUrl': 'http://i.imgur.com/oAGWDdG.png',
'filhos': [
{
'somenteModVer': true,
'name': 'Denúncia UP',
'text': '[table class=sucesso][tr][td][b]Denúncia UP[/b] \n\[b]Motivo:[/b] Motivo Aqui \n\[b]Punição:[/b] Punição Aqui \n \n[b]Achou injusto? Peça revisão nessa área: http://www.brasilplayultimate.com.br/f130-revisao-de-punicao[/b]\n \n[b]Tópico Marcado como Resolvido e movido para "Arquivos - Denúncias".[/b][/td][/tr][/table]',
'id': 'msm-denuncia',
'imgUrl': 'http://i.imgur.com/W5mUMil.png'
}, {
'somenteModVer': true,
'name': 'Denúncia FAIL',
'text': '[table class=alerta][tr][td][b]Denúncia FAIL[/b]\n\[b]Motivo:[/b] Motivo Aqui \n \n[b]Achou injusto? Peça revisão nessa área: http://www.brasilplayultimate.com.br/f130-revisao-de-punicao[/b]\n\ \n\[b]Tópico Marcado como Recusado e movido para "Arquivos - Denúncias".[/b][/td][/tr][/table]',
'id': 'msm-denuncia',
'imgUrl': 'http://i.imgur.com/E3r9Hh1.png'
}, {
'somenteModVer': true,
'name': 'Denúncia Em Curso',
'text': '[table class=aviso][tr][td][b]Denúncia Em Curso[/b] \n \n[b]Tópico Marcado como Em Curso. Denúncias são fechadas no prazo de 24H caso o acusado responda, caso contrário, terá o fechamento no tempo de 48H.[/b][/td][/tr][/table]',
'id': 'msm-denuncia',
'imgUrl': 'http://i.imgur.com/l7KlLp6.png'
}
]
}
];
// Begin CSS:
$(function () {
if (location.pathname.indexOf('/f6-') === -1) {
return;
}
$([
/**
* Você pode customizar o CSS, mas lembre-se de incluir as linhas entre aspas simples,
* E sempre usar aspas compostas dentro de cada linha.
* Lembre-se também de sempre incluir vírgula após cada linha. Exceto na última linha.
*/
'<style>',
' #main .sceditor-toolbar,',
' #main .sceditor-group {',
' overflow: initial;',
' }',
' .sceditor-group {',
' position: relative;',
' }',
' .fa-dropdown1 {',
' position: absolute;',
' padding: 0px!important;',
' top: 27px;',
' background-color: #fff;',
' border: 1px #ccc solid;',
' display: none;',
' }',
' .fa-dropdown1 a {',
' display: block;',
' line-height: 1.5em;',
' padding: 7px 15px 7px 30px;',
' white-space: nowrap;',
' border-bottom: 1px #ccc solid;',
' cursor: pointer;',
' font-size: 12px;',
' }',
' .fa-dropdown1 a:last-child {',
' border-bottom: none;',
' }',
' .fa-dropdown1-open {',
' display: block;',
' }',
'.naoaparecer{display:none!important;}',
'</style>'
].join('\n'))
.appendTo('head');
});
// Begin 'code':
$(window).on('load', function () {
// Variáveis Importantes:
var $ultimoGrupo = $('.sceditor-group:last');
var $sceditor = $('#text_editor_textarea').sceditor('instance');
var bgStyles1 = 'background-position: center!important; background-repeat: no-repeat!important;';
var bgStyles2 = 'background-position: 8px 9px!important; background-repeat: no-repeat!important;';
$.each(botoes, function (index, botoes) {
if (botoes.somenteModVer && _userdata.user_level <= 0) {
return;
}
if(botoes.id=='mensagens-de-denuncias'&&jQuery('p.crumbs a.nav[href^="/f'+forumAdd+'-"]').length==0){
return false;
}
else {
if ($(botoes.filhos).length) {
// Caso seja um dropdown (TENHA UM FILHO):
var $parent = $('<a>', {
class: 'sceditor-button ' + botoes.id,
title: ' ' + botoes.name,
style: 'background-image: url(' + botoes.imgUrl + ')!important; ' + bgStyles1,
unselectable: 'on'
})
.appendTo($ultimoGrupo)
.on('click', function () {
$ultimoGrupo
.find('.fa-dropdown1-' + botoes.id)
.css('left', $parent.position().left + 'px')
.toggleClass('fa-dropdown1-open');
});
var $dropdown = $('<div>', {
class: 'sceditor-dropdown fa-dropdown1 fa-dropdown1-' + botoes.id
})
.appendTo($ultimoGrupo);
// Dropdown children:
$.each(botoes.filhos, function (index, filhos) {
$('<a>', {
html: filhos.name,
class: filhos.id + 'fa-dropdown1-item',
style: 'background-image: url(' + filhos.imgUrl + ')!important; ' + bgStyles2,
})
.appendTo($dropdown)
.on('click', function () {
$sceditor.insertText(filhos.text);
$('.fa-dropdown1')
.toggleClass('fa-dropdown1-open');
});
});
return;
}
}
});
});
}(jQuery));
Re: Botões SCEditor em determinados tópicos
Eu prefiro fazer um novo script com essa função.
Aproveito e aplico novos conhecimentos que adquiri durante o tempo de agora e o que fiz este outro.
Assim que terminar edito essa mensagem. o/
Aproveito e aplico novos conhecimentos que adquiri durante o tempo de agora e o que fiz este outro.
Assim que terminar edito essa mensagem. o/
Re: Botões SCEditor em determinados tópicos
Sem problemas, peço que deixe pelo menos as mensagens semelhantes pois eu utilizo outras>
Ah, esta parte do código:
Ah, esta parte do código:
- Código:
'somenteModVer': true,
'name': 'Tópico Bloqueado',
'text': 'Olá! \nO seu tópico encontra-se bloqueado. \nQueira ler nossas [i]regras[/i] para saber mais.',
'id': 'tpc-lock',
'imgUrl': 'http://i.imgur.com/z5lPhgz.png'
}, {
'somenteModVer': true,
'name': 'Tópico Desbloqueado',
'text': 'Olá! \nEsta é uma mensagem de status: \nSeu tópico foi desbloqueado. \nQueira ler nossas [i]regras[/i] para saber mais.',
'id': 'tpc-unlock',
'imgUrl': 'http://i.imgur.com/hsBvMRG.png'
Re: Botões SCEditor em determinados tópicos
Troque-o por este:
É uma nova versão, cheia de novas opções e muito melhor. [s]Eu acho [/s]
Enfim, como você pode ver, essas são as opções que são definidas por padão:
Aí você pode usá-las no array dos botões:
Para configurar os tópicos que serão exibidos, na opção "topics", que por padrão é "['*']", troque por:
Sendo cada número o ID de um subfórum.
Eu já testei diversas vezes, mas se o senhor encontrar qualquer bug, não hesite em comentar.
- Código:
/*globals jQuery, FA, _userdata*/
/**
* Botões de moderação para o SCEditor.
*
* @author lffg <https://github.com/lffg>
* @version 1.0
*/
(function ($) {
'use strict';
var buttons = [
{
name : 'Tópico Bloqueado',
id : 'topic-block-button',
text : 'Olá, o tópico foi bloqueado... [...]',
topics : ['*'],
img : 'https://i.imgur.com/z5lPhgz.png',
onlyForMod: true
}, {
name : 'Lista de Ações',
id : 'topic-actions-list',
topics : ['*'],
img : 'https://i.imgur.com/oAGWDdG.png',
inGroup : false,
onlyForAdmin: true,
children : [
{ name: 'Ação 1', text: 'Texto da ação 1.', icon: 'fa fa-cog' },
{ name: 'Ação 2', text: 'Texto da ação 2.', icon: 'fa fa-cog' },
{ name: 'Ação 3', text: 'Texto da ação 3.', icon: 'fa fa-cog' }
]
}
];
window.FA = window.FA || {};
FA.Topic = FA.Topic || {};
var ModButtons;
FA.Topic.ModButtons = ModButtons = function (userConfig) {
var self = this;
self.userConfig = userConfig;
self.defaults = {
name : undefined,
id : '',
inGroup : true,
topics : ['*'],
text : '',
children : false,
img : undefined,
onlyForMod : false,
onlyForAdmin: false
};
self.config = $.extend({}, self.defaults, self.userConfig);
$.each(self.config, function (key, value) {
if (key === undefined) {
throw new Error ('Não foi especificado um: ' + key + ' para o script de botões de moderação.');
}
if (value === undefined) {
throw new Error ('Não foi especificado um valor: ' + value + ' para o script de botões de moderação.');
}
});
self.createStyles();
};
ModButtons.prototype.init = function () {
var self = this;
if (self.config.onlyForMod && (_userdata.user_level !== 1 && _userdata.user_level !== 2)) {
return false;
}
if (self.config.onlyForAdmin && _userdata.user_level !== 1) {
return false;
}
if (self.config.topics.indexOf('*') === -1) {
var topicId = parseInt(location.href.replace(/.*\/t(\d+).*|.*\/post\?t=(\d+)&.*/gi, function (string, match1, match2) {
if (match1 === undefined) {
return match2;
}
return match1;
}));
if (self.config.topics.indexOf(topicId) === -1) {
return false;
}
}
if (Array.isArray(self.config.children) && self.config.children.length >= 1) {
self.createButton(true);
} else {
self.createButton(false);
}
};
/**
* @param {boolean} isDrop Se for true, significa que o botão tem filhos.
* Caso contrário, o botão não tem filhos.
*/
ModButtons.prototype.createButton = function (isDrop) {
var self = this;
if (!$.sceditor) {
return false;
}
self.$group = $('.sceditor-group:last');
self.$element = $('<a>', {
'class' : 'sceditor-button',
'unselectable': 'on',
'title' : self.config.name,
'data-id' : self.config.id,
'html' : $('<div>', { 'unselectable': 'on' }).css('background-image', 'url(' + self.config.img + ')').prop('outerHTML')
});
switch (isDrop) {
case true:
self.$element.attr('data-dropdown', 'true');
self.createChildren();
self.documentListen();
self.$element.on('click', function (event) {
event.preventDefault();
event.stopPropagation();
var $this = $(this);
var offset = $this.offset();
var height = $this.height();
self.$dropdown
.css('position', 'absolute')
.css('top', offset.top + height)
.css('left', offset.left)
.toggle()
;
});
break;
case false:
self.$element
.attr('data-dropdown', 'false')
.attr('data-text', self.config.text)
.on('click', function (event) {
self.insertText($(this), event);
})
;
break;
}
if (self.config.inGroup) {
self.$group.append(self.$element);
return;
}
$('<div>', { 'class': 'sceditor-group' })
.insertBefore(self.$group)
.append(self.$element)
;
};
ModButtons.prototype.createChildren = function () {
var self = this;
self.$dropdown = $('<div>', { 'class': 'sceditor-dropdown fa-mod-buttons-prototype-dropdown' });
$.each(self.config.children, function (index, child) {
$('<a>', {
'data-text': child.text,
'title' : child.name,
'html' : [
$('<i>', { 'class': child.icon }).prop('outerHTML'),
$('<span>', { 'text': child.name }).prop('outerHTML')
].join('\n')
})
.appendTo(self.$dropdown)
.on('click', function (event) {
self.insertText($(this), event);
self.$dropdown.hide();
})
;
});
self.$dropdown
.hide()
.appendTo('body')
;
};
/**
* @param {string} text - Corresponde ao texto que será inserido no editor.
*/
ModButtons.prototype.insertText = function (context, contextEvent) {
contextEvent.preventDefault();
contextEvent.stopPropagation();
var $this = $(context);
var $textarea = $('#text_editor_textarea');
var $sceditor = $textarea.sceditor('instance');
$sceditor.insertText($this.attr('data-text'));
};
ModButtons.prototype.documentListen = function () {
var self = this;
self.$dropdown.on('click', function (event) {
event.stopPropagation();
});
$(document).on('click', function (event) {
self.$dropdown.hide();
});
};
ModButtons.prototype.createStyles = function () {
$('<style>', {
'text': [
'.fa-mod-buttons-prototype-dropdown {',
' padding: 0px !important;',
' margin-top: 5px !important;',
' min-width: 120px;',
' max-height: 200px;',
' overflow-y: auto;',
'}',
'',
'.fa-mod-buttons-prototype-dropdown > a {',
' display: block;',
' padding: 8px 10px;',
' border-bottom: solid 1px #ddd;',
' font-size: 10px;',
' cursor: pointer;',
'}',
'',
'.fa-mod-buttons-prototype-dropdown > a:last-child {',
' border-bottom: none;',
'}',
'',
'.fa-mod-buttons-prototype-dropdown > a > i {',
' font-size: 12px;',
' vertical-align: middle;',
'}'
].join('\n')
}).appendTo('head');
};
$(function () {
$.each(buttons, function () {
var self = this;
(new FA.Topic.ModButtons(self)).init();
});
});
}(jQuery));
É uma nova versão, cheia de novas opções e muito melhor. [s]Eu acho [/s]
Enfim, como você pode ver, essas são as opções que são definidas por padão:
- Código:
name : undefined,
id : '',
inGroup : true,
topics : ['*'],
text : '',
children : false,
img : undefined,
onlyForMod : false,
onlyForAdmin: false
Aí você pode usá-las no array dos botões:
- Código:
var buttons = [
{
name : 'Tópico Bloqueado',
id : 'topic-block-button',
text : 'Olá, o tópico foi bloqueado... [...]',
topics : ['*'],
img : 'https://i.imgur.com/z5lPhgz.png',
onlyForMod: true
}, {
name : 'Lista de Ações',
id : 'topic-actions-list',
topics : ['*'],
img : 'https://i.imgur.com/oAGWDdG.png',
inGroup : false,
onlyForAdmin: true,
children : [
{ name: 'Ação 1', text: 'Texto da ação 1.', icon: 'fa fa-cog' },
{ name: 'Ação 2', text: 'Texto da ação 2.', icon: 'fa fa-cog' },
{ name: 'Ação 3', text: 'Texto da ação 3.', icon: 'fa fa-cog' }
]
}
];
Para configurar os tópicos que serão exibidos, na opção "topics", que por padrão é "['*']", troque por:
- Código:
[7, 4, 1, 3]
Sendo cada número o ID de um subfórum.
Eu já testei diversas vezes, mas se o senhor encontrar qualquer bug, não hesite em comentar.
Re: Botões SCEditor em determinados tópicos
Adicionei e não resultou em nada '-'
Configurei corretamente? Veja:
Gostaria que aparecesse apenas nos tópicos aqui : /f6-
Configurei corretamente? Veja:
- Código:
/*globals jQuery, FA, _userdata*/
/**
* Botões de moderação para o SCEditor.
*
* @author lffg <https://github.com/lffg>
* @version 1.0
*/
(function ($) {
'use strict';
var buttons = [
{
name : 'Tópico Bloqueado',
id : 'topic-block-button',
text : 'Olá, o tópico foi bloqueado... [...]',
topics : ['6'],
img : 'https://i.imgur.com/z5lPhgz.png',
onlyForMod: true
}, {
name : 'Lista de Ações',
id : 'topic-actions-list',
topics : ['6'],
img : 'https://i.imgur.com/oAGWDdG.png',
inGroup : false,
onlyForAdmin: true,
children : [
{ name: 'Ação 1', text: 'Texto da ação 1.', icon: 'fa fa-cog' },
{ name: 'Ação 2', text: 'Texto da ação 2.', icon: 'fa fa-cog' },
{ name: 'Ação 3', text: 'Texto da ação 3.', icon: 'fa fa-cog' }
]
}
];
window.FA = window.FA || {};
FA.Topic = FA.Topic || {};
var ModButtons;
FA.Topic.ModButtons = ModButtons = function (userConfig) {
var self = this;
self.userConfig = userConfig;
self.defaults = {
name : undefined,
id : '',
inGroup : true,
topics : ['6'],
text : '',
children : false,
img : undefined,
onlyForMod : false,
onlyForAdmin: false
};
self.config = $.extend({}, self.defaults, self.userConfig);
$.each(self.config, function (key, value) {
if (key === undefined) {
throw new Error ('Não foi especificado um: ' + key + ' para o script de botões de moderação.');
}
if (value === undefined) {
throw new Error ('Não foi especificado um valor: ' + value + ' para o script de botões de moderação.');
}
});
self.createStyles();
};
ModButtons.prototype.init = function () {
var self = this;
if (self.config.onlyForMod && (_userdata.user_level !== 1 && _userdata.user_level !== 2)) {
return false;
}
if (self.config.onlyForAdmin && _userdata.user_level !== 1) {
return false;
}
if (self.config.topics.indexOf('*') === -1) {
var topicId = parseInt(location.href.replace(/.*\/t(\d+).*|.*\/post\?t=(\d+)&.*/gi, function (string, match1, match2) {
if (match1 === undefined) {
return match2;
}
return match1;
}));
if (self.config.topics.indexOf(topicId) === -1) {
return false;
}
}
if (Array.isArray(self.config.children) && self.config.children.length >= 1) {
self.createButton(true);
} else {
self.createButton(false);
}
};
/**
* @param {boolean} isDrop Se for true, significa que o botão tem filhos.
* Caso contrário, o botão não tem filhos.
*/
ModButtons.prototype.createButton = function (isDrop) {
var self = this;
if (!$.sceditor) {
return false;
}
self.$group = $('.sceditor-group:last');
self.$element = $('<a>', {
'class' : 'sceditor-button',
'unselectable': 'on',
'title' : self.config.name,
'data-id' : self.config.id,
'html' : $('<div>', { 'unselectable': 'on' }).css('background-image', 'url(' + self.config.img + ')').prop('outerHTML')
});
switch (isDrop) {
case true:
self.$element.attr('data-dropdown', 'true');
self.createChildren();
self.documentListen();
self.$element.on('click', function (event) {
event.preventDefault();
event.stopPropagation();
var $this = $(this);
var offset = $this.offset();
var height = $this.height();
self.$dropdown
.css('position', 'absolute')
.css('top', offset.top + height)
.css('left', offset.left)
.toggle()
;
});
break;
case false:
self.$element
.attr('data-dropdown', 'false')
.attr('data-text', self.config.text)
.on('click', function (event) {
self.insertText($(this), event);
})
;
break;
}
if (self.config.inGroup) {
self.$group.append(self.$element);
return;
}
$('<div>', { 'class': 'sceditor-group' })
.insertBefore(self.$group)
.append(self.$element)
;
};
ModButtons.prototype.createChildren = function () {
var self = this;
self.$dropdown = $('<div>', { 'class': 'sceditor-dropdown fa-mod-buttons-prototype-dropdown' });
$.each(self.config.children, function (index, child) {
$('<a>', {
'data-text': child.text,
'title' : child.name,
'html' : [
$('<i>', { 'class': child.icon }).prop('outerHTML'),
$('<span>', { 'text': child.name }).prop('outerHTML')
].join('\n')
})
.appendTo(self.$dropdown)
.on('click', function (event) {
self.insertText($(this), event);
self.$dropdown.hide();
})
;
});
self.$dropdown
.hide()
.appendTo('body')
;
};
/**
* @param {string} text - Corresponde ao texto que será inserido no editor.
*/
ModButtons.prototype.insertText = function (context, contextEvent) {
contextEvent.preventDefault();
contextEvent.stopPropagation();
var $this = $(context);
var $textarea = $('#text_editor_textarea');
var $sceditor = $textarea.sceditor('instance');
$sceditor.insertText($this.attr('data-text'));
};
ModButtons.prototype.documentListen = function () {
var self = this;
self.$dropdown.on('click', function (event) {
event.stopPropagation();
});
$(document).on('click', function (event) {
self.$dropdown.hide();
});
};
ModButtons.prototype.createStyles = function () {
$('<style>', {
'text': [
'.fa-mod-buttons-prototype-dropdown {',
' padding: 0px !important;',
' margin-top: 5px !important;',
' min-width: 120px;',
' max-height: 200px;',
' overflow-y: auto;',
'}',
'',
'.fa-mod-buttons-prototype-dropdown > a {',
' display: block;',
' padding: 8px 10px;',
' border-bottom: solid 1px #ddd;',
' font-size: 10px;',
' cursor: pointer;',
'}',
'',
'.fa-mod-buttons-prototype-dropdown > a:last-child {',
' border-bottom: none;',
'}',
'',
'.fa-mod-buttons-prototype-dropdown > a > i {',
' font-size: 12px;',
' vertical-align: middle;',
'}'
].join('\n')
}).appendTo('head');
};
$(function () {
$.each(buttons, function () {
var self = this;
(new FA.Topic.ModButtons(self)).init();
});
});
}(jQuery));
Gostaria que aparecesse apenas nos tópicos aqui : /f6-
Re: Botões SCEditor em determinados tópicos
Não transforme números em strings.
Os números e os booleanos (true/false) não devem ser envoltos por aspas (strings).
Troque por:
o/
Os números e os booleanos (true/false) não devem ser envoltos por aspas (strings).
Troque por:
- Código:
/*globals jQuery, FA, _userdata*/
/**
* Botões de moderação para o SCEditor.
*
* @author lffg <https://github.com/lffg>
* @version 1.0
*/
(function ($) {
'use strict';
var buttons = [
{
name : 'Tópico Bloqueado',
id : 'topic-block-button',
text : 'Olá, o tópico foi bloqueado... [...]',
topics : [6],
img : 'https://i.imgur.com/z5lPhgz.png',
onlyForMod: true
}, {
name : 'Lista de Ações',
id : 'topic-actions-list',
topics : [6],
img : 'https://i.imgur.com/oAGWDdG.png',
inGroup : false,
onlyForAdmin: true,
children : [
{ name: 'Ação 1', text: 'Texto da ação 1.', icon: 'fa fa-cog' },
{ name: 'Ação 2', text: 'Texto da ação 2.', icon: 'fa fa-cog' },
{ name: 'Ação 3', text: 'Texto da ação 3.', icon: 'fa fa-cog' }
]
}
];
window.FA = window.FA || {};
FA.Topic = FA.Topic || {};
var ModButtons;
FA.Topic.ModButtons = ModButtons = function (userConfig) {
var self = this;
self.userConfig = userConfig;
self.defaults = {
name : undefined,
id : '',
inGroup : true,
topics : ['6'],
text : '',
children : false,
img : undefined,
onlyForMod : false,
onlyForAdmin: false
};
self.config = $.extend({}, self.defaults, self.userConfig);
$.each(self.config, function (key, value) {
if (key === undefined) {
throw new Error ('Não foi especificado um: ' + key + ' para o script de botões de moderação.');
}
if (value === undefined) {
throw new Error ('Não foi especificado um valor: ' + value + ' para o script de botões de moderação.');
}
});
self.createStyles();
};
ModButtons.prototype.init = function () {
var self = this;
if (self.config.onlyForMod && (_userdata.user_level !== 1 && _userdata.user_level !== 2)) {
return false;
}
if (self.config.onlyForAdmin && _userdata.user_level !== 1) {
return false;
}
if (self.config.topics.indexOf('*') === -1) {
var topicId = parseInt(location.href.replace(/.*\/t(\d+).*|.*\/post\?t=(\d+)&.*/gi, function (string, match1, match2) {
if (match1 === undefined) {
return match2;
}
return match1;
}));
if (self.config.topics.indexOf(topicId) === -1) {
return false;
}
}
if (Array.isArray(self.config.children) && self.config.children.length >= 1) {
self.createButton(true);
} else {
self.createButton(false);
}
};
/**
* @param {boolean} isDrop Se for true, significa que o botão tem filhos.
* Caso contrário, o botão não tem filhos.
*/
ModButtons.prototype.createButton = function (isDrop) {
var self = this;
if (!$.sceditor) {
return false;
}
self.$group = $('.sceditor-group:last');
self.$element = $('<a>', {
'class' : 'sceditor-button',
'unselectable': 'on',
'title' : self.config.name,
'data-id' : self.config.id,
'html' : $('<div>', { 'unselectable': 'on' }).css('background-image', 'url(' + self.config.img + ')').prop('outerHTML')
});
switch (isDrop) {
case true:
self.$element.attr('data-dropdown', 'true');
self.createChildren();
self.documentListen();
self.$element.on('click', function (event) {
event.preventDefault();
event.stopPropagation();
var $this = $(this);
var offset = $this.offset();
var height = $this.height();
self.$dropdown
.css('position', 'absolute')
.css('top', offset.top + height)
.css('left', offset.left)
.toggle()
;
});
break;
case false:
self.$element
.attr('data-dropdown', 'false')
.attr('data-text', self.config.text)
.on('click', function (event) {
self.insertText($(this), event);
})
;
break;
}
if (self.config.inGroup) {
self.$group.append(self.$element);
return;
}
$('<div>', { 'class': 'sceditor-group' })
.insertBefore(self.$group)
.append(self.$element)
;
};
ModButtons.prototype.createChildren = function () {
var self = this;
self.$dropdown = $('<div>', { 'class': 'sceditor-dropdown fa-mod-buttons-prototype-dropdown' });
$.each(self.config.children, function (index, child) {
$('<a>', {
'data-text': child.text,
'title' : child.name,
'html' : [
$('<i>', { 'class': child.icon }).prop('outerHTML'),
$('<span>', { 'text': child.name }).prop('outerHTML')
].join('\n')
})
.appendTo(self.$dropdown)
.on('click', function (event) {
self.insertText($(this), event);
self.$dropdown.hide();
})
;
});
self.$dropdown
.hide()
.appendTo('body')
;
};
/**
* @param {string} text - Corresponde ao texto que será inserido no editor.
*/
ModButtons.prototype.insertText = function (context, contextEvent) {
contextEvent.preventDefault();
contextEvent.stopPropagation();
var $this = $(context);
var $textarea = $('#text_editor_textarea');
var $sceditor = $textarea.sceditor('instance');
$sceditor.insertText($this.attr('data-text'));
};
ModButtons.prototype.documentListen = function () {
var self = this;
self.$dropdown.on('click', function (event) {
event.stopPropagation();
});
$(document).on('click', function (event) {
self.$dropdown.hide();
});
};
ModButtons.prototype.createStyles = function () {
$('<style>', {
'text': [
'.fa-mod-buttons-prototype-dropdown {',
' padding: 0px !important;',
' margin-top: 5px !important;',
' min-width: 120px;',
' max-height: 200px;',
' overflow-y: auto;',
'}',
'',
'.fa-mod-buttons-prototype-dropdown > a {',
' display: block;',
' padding: 8px 10px;',
' border-bottom: solid 1px #ddd;',
' font-size: 10px;',
' cursor: pointer;',
'}',
'',
'.fa-mod-buttons-prototype-dropdown > a:last-child {',
' border-bottom: none;',
'}',
'',
'.fa-mod-buttons-prototype-dropdown > a > i {',
' font-size: 12px;',
' vertical-align: middle;',
'}'
].join('\n')
}).appendTo('head');
};
$(window).on('load', function () {
$.each(buttons, function () {
var self = this;
(new FA.Topic.ModButtons(self)).init();
});
});
}(jQuery));
o/
Re: Botões SCEditor em determinados tópicos
Ué, continua sem funcionar :/ isso está apenas para http://www.brasilplayultimate.com.br/f6-denuncias
ou para todos os sub-foruns dentro dele ?
ou para todos os sub-foruns dentro dele ?
Re: Botões SCEditor em determinados tópicos
Não, amigo. Só funciona para tópicos, não para fóruns. É muito pouco performático fazer utilizando o parâmetro como fóruns.
Experimente trocar o array pelo ID de um tópico, por exemplo, o deste:
Experimente trocar o array pelo ID de um tópico, por exemplo, o deste:
- Código:
[776668]
Re: Botões SCEditor em determinados tópicos
Eu queria igual o que eu passei acima, para os subforuns '-' e aparecesse dentro dos tópicos de x sub-forum.
Se fosse pra por de tópico em tópico não teria como fazer pois eu estaria editando o JS todo hora praticamente
há como investir no passado acima ? Pois irei investir 1 em cada sub-forum.
O de denúncias no sub-forum de dennúncias o de dúvida no de dúvida e assim sucessivamente, não necessito ter várias opções kk
Se fosse pra por de tópico em tópico não teria como fazer pois eu estaria editando o JS todo hora praticamente
há como investir no passado acima ? Pois irei investir 1 em cada sub-forum.
O de denúncias no sub-forum de dennúncias o de dúvida no de dúvida e assim sucessivamente, não necessito ter várias opções kk
Re: Botões SCEditor em determinados tópicos
Como disse, não. É muito pouco performático e promisso à erros e falhas, logo, não. :/
E eu sei que todas as opções não são necessitadas para o senhor. :v Isso irá ser um tutorial muito em breve...
E eu sei que todas as opções não são necessitadas para o senhor. :v Isso irá ser um tutorial muito em breve...
Última edição por Luiz em 11.10.17 21:53, editado 1 vez(es)
Re: Botões SCEditor em determinados tópicos
Sempre utilizei o código acima e nunca tive problemas.
Realmente não há como fazer tal coisa ?
Realmente não há como fazer tal coisa ?
Re: Botões SCEditor em determinados tópicos
Como disse, não, tendo em vista que é muito promisso à falhas, além de não ser eficiente. :/
Re: Botões SCEditor em determinados tópicos
Vamos fazer o seguinte então, com o código que passei acima dá para criar tipo sub-menus?
Desta forma: http://prntscr.com/gw8u6g
Ai seria um exemplo:
Um ícone no sceditor ai ao clicar aparece digamos que 3 menus:
Mensagens para Denúncia
Mensagens para Dúvidas
Mensagens para Bugs
Ai ao passar o mouse em cada uma delas aparecia:
Resolvido
Recusado
Em curso
Há como ?
Desta forma: http://prntscr.com/gw8u6g
Ai seria um exemplo:
Um ícone no sceditor ai ao clicar aparece digamos que 3 menus:
Mensagens para Denúncia
Mensagens para Dúvidas
Mensagens para Bugs
Ai ao passar o mouse em cada uma delas aparecia:
Resolvido
Recusado
Em curso
Há como ?
Re: Botões SCEditor em determinados tópicos
Teria que restruturar totalmente todo o JavaScript, isso é completamente inviável, tendo em vista que daria um enorme trabalho.
É mais fácil o senhor criar três botões (mensagens para denúncia, dúvidas e bugs), com os seus respetivos filhos, não?
É mais fácil o senhor criar três botões (mensagens para denúncia, dúvidas e bugs), com os seus respetivos filhos, não?
Re: Botões SCEditor em determinados tópicos
Sim, eu tenho já pronto mas o ruim vai ser que aparecerá em todas as abas..
Mas se é o jeito infelizmente terá de ser assim.
O senhor poderia me apresentar outra ideia/solução? Se não pode considerar como concluído :/
Mas se é o jeito infelizmente terá de ser assim.
O senhor poderia me apresentar outra ideia/solução? Se não pode considerar como concluído :/
Re: Botões SCEditor em determinados tópicos
Erro de digitação hehehe
Todos os foruns * (tópicos dos foruns)
Todos os foruns * (tópicos dos foruns)
Re: Botões SCEditor em determinados tópicos
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
» Erro em determinados topicos.
» Botões em Determinados Tópicos
» Aparecer JS apenas em tópicos determinados
» Não consigo visualizar determinados tópicos
» Definir os membros que podem ver determinados tópicos
» Botões em Determinados Tópicos
» Aparecer JS apenas em tópicos determinados
» Não consigo visualizar determinados tópicos
» Definir os membros que podem ver determinados tópicos
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