Categorias favoritas
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
Categorias favoritas
Detalhes da questão
Endereço do fórum: novaerarpg.com
Versão do fórum: Invision
Descrição
Ola,
Eu acabei achando um tutorial que me interessou bastante, porem ele foi feito para a versão PunBB. Eu queria saber como poderia aplicar os efeitos desse tutorial em meu fórum Invision.
Link do tutorial: https://ajuda.forumeiros.com/t93876-tutorial-categoria-para-foruns-favoritos-punbb?highlight=Tutorial
Grato
Re: Categorias favoritas
Olá autor, crie um novo javascript com investimento no indice e nos sub-fóruns com esse código:
Até mais.
- Código:
$(function() {
// automatically detects the version
var version = $('.bodylinewidth')[0] ? 0 : document.getElementById('wrap') ? 1 : $('div.pun')[0] ? 2 : document.getElementById('ipbwrapper') ? 3 : 'badapple';
// error notifications
if (version == 'badapple' || !window.JSON || !window.localStorage) {
var errString = 'The plugin "fa_starred" could not be executed because : ';
if (version == 'badapple') errString += '\nYour forum version is not supported.';
if (!window.JSON) errString += '\nJSON is not supported by your browser';
if (!window.localStorage) errString += '\nThe Storage API is not support by your browser.';
window.console && console.error ? console.error(errString) : alert(errString);
return;
}
// get fontawesome if unavailable
if (!$('link[href$="font-awesome.min.css"]')[0]) {
document.getElementsByTagName('HEAD')[0].insertAdjacentHTML('beforeend', '<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.0/css/font-awesome.min.css" />');
}
window.fa_starred = {
version : version, // forum version
forums : localStorage.fa_starred_forums ? JSON.parse(localStorage.fa_starred_forums) : null,
// language settings
lang : {
star : 'Star this forum',
unstar : 'Unstar this forum',
starred : 'Starred Forums'
},
icon : {
star : '',
unstar : ''
},
// selectors
select : {
content : version ? document.getElementById('main-content') : $('#content-container td:has(> img[height="5"])')[0],
category : ['.forumline:has(.secondarytitle)', '.forabg', '.main:has(.tcr) .main-content', '.borderwrap:has(.index-box)'][version],
forum : 'a.' + (version ? 'forumtitle' : 'forumlink'),
row : version == 1 ? 'li' : 'tr'
},
// move the selected forum to the "starred" category
star : function(that, id, startup) {
if (!fa_starred.forums) fa_starred.forums = {};
if (!fa_starred.board) fa_starred.createStarBoard();
if (!fa_starred.forums[id]) {
// clone the row and add it to the star board
var clone = $(that).closest(fa_starred.select.row)[0].cloneNode(true),
rows = $(that).closest(fa_starred.select.row).parent().find(fa_starred.select.row);
// update the star attributes for the clone
$('.fa_star', clone).attr({
'onclick' : 'fa_starred.unstar(this, ' + id + '); return false',
'class' : 'fa_unstar',
'title' : fa_starred.lang.unstar
}).html('<i class="fa">' + fa_starred.icon.unstar + '</i>');
fa_starred.list.appendChild(clone); // append the clone to the starred category
$(that).closest(fa_starred.select.row)[0].style.display = 'none'; // hide the original row
// check if all forums are hidden for this category
for (var i = 0, j = rows.length, k = 0; i < j; i++) {
if (/none/.test(rows[i].style.display)) k++;
}
// hide the category if all forums are hidden
if (i == k) {
$(that).closest(fa_starred.select.category)[0].className += ' fa_star_hidden';
}
// jump to the star board if it's out of sight
if (!startup && document.getElementById('fa_star_board').getBoundingClientRect().top < 0) {
window.location.hash = '';
window.location.hash = '#fa_star_board';
}
// update storage
fa_starred.forums[id] = 1;
localStorage.fa_starred_forums = JSON.stringify(fa_starred.forums);
}
},
// unstar the selected forum
unstar : function (that, id) {
var forum, catg, i = 0, j;
fa_starred.list.removeChild($(that).closest(fa_starred.select.row)[0]); // remove cloned row
// update variables
forum = $(fa_starred.select.forum + '[href^="/f' + id + '-"]')[0]; // original forum
catg = $(forum).closest(fa_starred.select.category)[0]; // original category
$(forum).closest(fa_starred.select.row)[0].style.display = ''; // show the original forum's row
// show the category if all forums were hidden
if (/fa_star_hidden/.test(catg.className)) {
catg.className = catg.className.replace(/fa_star_hidden/, '');
}
// delete the starred forum and check if there are anymore stars
delete fa_starred.forums[id];
for (j in fa_starred.forums) {
if (fa_starred.forums[j]) i++;
}
// update storage
if (i) {
localStorage.fa_starred_forums = JSON.stringify(fa_starred.forums);
} else {
fa_starred.forums = null;
localStorage.removeItem('fa_starred_forums');
// remove nodes
if (version == 2) {
fa_starred.board.parentNode.removeChild(fa_starred.board.previousSibling); // remove header for punbb
}
fa_starred.board.parentNode.removeChild(fa_starred.board);
// delete node references
delete fa_starred.board;
delete fa_starred.list;
}
},
// create the "starred" category
createStarBoard : function() {
var catg = $(fa_starred.select.category, fa_starred.select.content)[0],
board = catg.cloneNode(true),
rows = $(fa_starred.select.row, board);
board.id = 'fa_star_board';
board.style.display = '';
if (version != 2) {
board.getElementsByTagName('H2')[0].innerHTML = fa_starred.lang.starred; // change category title
}
// find forum list and remove exisiting rows in the clone
fa_starred.list = rows[0].parentNode;
rows.remove();
// punbb insertion method
if (version == 2) {
var head = catg.previousSibling.cloneNode(true);
head.getElementsByTagName('H2')[0].innerHTML = fa_starred.lang.starred;
catg.parentNode.insertBefore(board, catg.previousSibling);
board.parentNode.insertBefore(head, board);
} else {
catg.parentNode.insertBefore(board, catg); // default insertion
}
fa_starred.board = board;
}
};
fa_starred.select.row += ':has(' + fa_starred.select.forum + ')'; // update row selector
// general startup
var a = $(fa_starred.select.forum, fa_starred.select.content),
i = 0,
j = a.length,
k,
id;
// setup star board and reset forum states if starred
if (fa_starred.forums) {
if (!fa_starred.board) fa_starred.createStarBoard();
for (k in fa_starred.forums) {
fa_starred.forums[k] = 0;
}
}
// setup stars and starred forums
for (; i < j; i++) {
id = a[i].href.replace(/.*?\/f(\d+).*/, '$1');
a[i].insertAdjacentHTML('afterend', '<a href="#" class="fa_star" onclick="fa_starred.star(this, ' + id + '); return false;" title="' + fa_starred.lang.star + '"><i class="fa">' + fa_starred.icon.unstar + '</i></a>');
if (fa_starred.forums) {
for (k in fa_starred.forums) {
if (k == id) {
fa_starred.star(a[i], id, true);
}
}
}
}
document.getElementsByTagName('HEAD')[0].insertAdjacentHTML('beforeend', '<style type="text/css">a.fa_star,a.fa_unstar{color:#999!important;font-size:16px;vertical-align:-2px;margin-left:3px;opacity:0}a.fa_star:hover,a.fa_unstar,li:hover a.fa_star,tr:hover a.fa_star{opacity:1}a.fa_star i,a.fa_unstar i{position:relative}a.fa_star i:hover:after,a.fa_unstar i:after{content:"' + fa_starred.icon.star + '";position:absolute;left:0;bottom:0}a.fa_unstar i:hover:after{content:""}.fa_star_hidden {display:none!important}</style>');
});
Até mais.
Re: Categorias favoritas
while escreveu:Olá autor, crie um novo javascript com investimento no indice e nos sub-fóruns com esse código:
- Código:
$(function() {
// automatically detects the version
var version = $('.bodylinewidth')[0] ? 0 : document.getElementById('wrap') ? 1 : $('div.pun')[0] ? 2 : document.getElementById('ipbwrapper') ? 3 : 'badapple';
// error notifications
if (version == 'badapple' || !window.JSON || !window.localStorage) {
var errString = 'The plugin "fa_starred" could not be executed because : ';
if (version == 'badapple') errString += '\nYour forum version is not supported.';
if (!window.JSON) errString += '\nJSON is not supported by your browser';
if (!window.localStorage) errString += '\nThe Storage API is not support by your browser.';
window.console && console.error ? console.error(errString) : alert(errString);
return;
}
// get fontawesome if unavailable
if (!$('link[href$="font-awesome.min.css"]')[0]) {
document.getElementsByTagName('HEAD')[0].insertAdjacentHTML('beforeend', '<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.0/css/font-awesome.min.css" />');
}
window.fa_starred = {
version : version, // forum version
forums : localStorage.fa_starred_forums ? JSON.parse(localStorage.fa_starred_forums) : null,
// language settings
lang : {
star : 'Star this forum',
unstar : 'Unstar this forum',
starred : 'Starred Forums'
},
icon : {
star : '',
unstar : ''
},
// selectors
select : {
content : version ? document.getElementById('main-content') : $('#content-container td:has(> img[height="5"])')[0],
category : ['.forumline:has(.secondarytitle)', '.forabg', '.main:has(.tcr) .main-content', '.borderwrap:has(.index-box)'][version],
forum : 'a.' + (version ? 'forumtitle' : 'forumlink'),
row : version == 1 ? 'li' : 'tr'
},
// move the selected forum to the "starred" category
star : function(that, id, startup) {
if (!fa_starred.forums) fa_starred.forums = {};
if (!fa_starred.board) fa_starred.createStarBoard();
if (!fa_starred.forums[id]) {
// clone the row and add it to the star board
var clone = $(that).closest(fa_starred.select.row)[0].cloneNode(true),
rows = $(that).closest(fa_starred.select.row).parent().find(fa_starred.select.row);
// update the star attributes for the clone
$('.fa_star', clone).attr({
'onclick' : 'fa_starred.unstar(this, ' + id + '); return false',
'class' : 'fa_unstar',
'title' : fa_starred.lang.unstar
}).html('<i class="fa">' + fa_starred.icon.unstar + '</i>');
fa_starred.list.appendChild(clone); // append the clone to the starred category
$(that).closest(fa_starred.select.row)[0].style.display = 'none'; // hide the original row
// check if all forums are hidden for this category
for (var i = 0, j = rows.length, k = 0; i < j; i++) {
if (/none/.test(rows[i].style.display)) k++;
}
// hide the category if all forums are hidden
if (i == k) {
$(that).closest(fa_starred.select.category)[0].className += ' fa_star_hidden';
}
// jump to the star board if it's out of sight
if (!startup && document.getElementById('fa_star_board').getBoundingClientRect().top < 0) {
window.location.hash = '';
window.location.hash = '#fa_star_board';
}
// update storage
fa_starred.forums[id] = 1;
localStorage.fa_starred_forums = JSON.stringify(fa_starred.forums);
}
},
// unstar the selected forum
unstar : function (that, id) {
var forum, catg, i = 0, j;
fa_starred.list.removeChild($(that).closest(fa_starred.select.row)[0]); // remove cloned row
// update variables
forum = $(fa_starred.select.forum + '[href^="/f' + id + '-"]')[0]; // original forum
catg = $(forum).closest(fa_starred.select.category)[0]; // original category
$(forum).closest(fa_starred.select.row)[0].style.display = ''; // show the original forum's row
// show the category if all forums were hidden
if (/fa_star_hidden/.test(catg.className)) {
catg.className = catg.className.replace(/fa_star_hidden/, '');
}
// delete the starred forum and check if there are anymore stars
delete fa_starred.forums[id];
for (j in fa_starred.forums) {
if (fa_starred.forums[j]) i++;
}
// update storage
if (i) {
localStorage.fa_starred_forums = JSON.stringify(fa_starred.forums);
} else {
fa_starred.forums = null;
localStorage.removeItem('fa_starred_forums');
// remove nodes
if (version == 2) {
fa_starred.board.parentNode.removeChild(fa_starred.board.previousSibling); // remove header for punbb
}
fa_starred.board.parentNode.removeChild(fa_starred.board);
// delete node references
delete fa_starred.board;
delete fa_starred.list;
}
},
// create the "starred" category
createStarBoard : function() {
var catg = $(fa_starred.select.category, fa_starred.select.content)[0],
board = catg.cloneNode(true),
rows = $(fa_starred.select.row, board);
board.id = 'fa_star_board';
board.style.display = '';
if (version != 2) {
board.getElementsByTagName('H2')[0].innerHTML = fa_starred.lang.starred; // change category title
}
// find forum list and remove exisiting rows in the clone
fa_starred.list = rows[0].parentNode;
rows.remove();
// punbb insertion method
if (version == 2) {
var head = catg.previousSibling.cloneNode(true);
head.getElementsByTagName('H2')[0].innerHTML = fa_starred.lang.starred;
catg.parentNode.insertBefore(board, catg.previousSibling);
board.parentNode.insertBefore(head, board);
} else {
catg.parentNode.insertBefore(board, catg); // default insertion
}
fa_starred.board = board;
}
};
fa_starred.select.row += ':has(' + fa_starred.select.forum + ')'; // update row selector
// general startup
var a = $(fa_starred.select.forum, fa_starred.select.content),
i = 0,
j = a.length,
k,
id;
// setup star board and reset forum states if starred
if (fa_starred.forums) {
if (!fa_starred.board) fa_starred.createStarBoard();
for (k in fa_starred.forums) {
fa_starred.forums[k] = 0;
}
}
// setup stars and starred forums
for (; i < j; i++) {
id = a[i].href.replace(/.*?\/f(\d+).*/, '$1');
a[i].insertAdjacentHTML('afterend', '<a href="#" class="fa_star" onclick="fa_starred.star(this, ' + id + '); return false;" title="' + fa_starred.lang.star + '"><i class="fa">' + fa_starred.icon.unstar + '</i></a>');
if (fa_starred.forums) {
for (k in fa_starred.forums) {
if (k == id) {
fa_starred.star(a[i], id, true);
}
}
}
}
document.getElementsByTagName('HEAD')[0].insertAdjacentHTML('beforeend', '<style type="text/css">a.fa_star,a.fa_unstar{color:#999!important;font-size:16px;vertical-align:-2px;margin-left:3px;opacity:0}a.fa_star:hover,a.fa_unstar,li:hover a.fa_star,tr:hover a.fa_star{opacity:1}a.fa_star i,a.fa_unstar i{position:relative}a.fa_star i:hover:after,a.fa_unstar i:after{content:"' + fa_starred.icon.star + '";position:absolute;left:0;bottom:0}a.fa_unstar i:hover:after{content:""}.fa_star_hidden {display:none!important}</style>');
});
Até mais.
Existe a possibilidade para que essa nova categoria com os favoritos apareça como a terceira categoria do fórum, por exemplo, ao invés de aparecer como sendo a primeira?
Re: Categorias favoritas
Mas, não ficaria tão chamativo... o certo seria no começo ou fim não acha autor?
Além de não ficar tão chamativo, poderia confundir os seus demais membros, não dando uma aparência tão agradável.
Essa é minha opinião né... mas, quer mesmo continuar?
Até mais.
Além de não ficar tão chamativo, poderia confundir os seus demais membros, não dando uma aparência tão agradável.
Essa é minha opinião né... mas, quer mesmo continuar?
Até mais.
Re: Categorias favoritas
while escreveu:Mas, não ficaria tão chamativo... o certo seria no começo ou fim não acha autor?
Além de não ficar tão chamativo, poderia confundir os seus demais membros, não dando uma aparência tão agradável.
Essa é minha opinião né... mas, quer mesmo continuar?
Até mais.
No caso do meu fórum, mesmo não ficando no topo, será de extrema valia. Então sim, eu queria continuar. Uma coisa que percebi agora: ao clicar para minimizar a categoria Índice (a primeira do fórum), ele acaba minimizando a categoria dos Fóruns Favoritos, ao invés do Índice. Teria como arrumar isso?
Grato.
Re: Categorias favoritas
Troque o código por este:
Resulta?
Até mais.
- Código:
$(function() {
// automatically detects the version
var version = $('.bodylinewidth')[0] ? 0 : document.getElementById('wrap') ? 1 : $('div.pun')[0] ? 2 : document.getElementById('ipbwrapper') ? 3 : 'badapple';
// error notifications
if (version == 'badapple' || !window.JSON || !window.localStorage) {
var errString = 'The plugin "fa_starred" could not be executed because : ';
if (version == 'badapple') errString += '\nYour forum version is not supported.';
if (!window.JSON) errString += '\nJSON is not supported by your browser';
if (!window.localStorage) errString += '\nThe Storage API is not support by your browser.';
window.console && console.error ? console.error(errString) : alert(errString);
return;
}
// get fontawesome if unavailable
if (!$('link[href$="font-awesome.min.css"]')[0]) {
document.getElementsByTagName('HEAD')[0].insertAdjacentHTML('beforeend', '<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.0/css/font-awesome.min.css" />');
}
window.fa_starred = {
version : version, // forum version
forums : localStorage.fa_starred_forums ? JSON.parse(localStorage.fa_starred_forums) : null,
// language settings
lang : {
star : 'Star this forum',
unstar : 'Unstar this forum',
starred : 'Starred Forums'
},
icon : {
star : '',
unstar : ''
},
// selectors
select : {
content : version ? document.getElementById('main-content') : $('#content-container td:has(> img[height="5"])')[0],
category : ['.forumline:has(.secondarytitle)', '.forabg', '.main:has(.tcr) .main-content', '.borderwrap:has(.index-box)'][version],
forum : 'a.' + (version ? 'forumtitle' : 'forumlink'),
row : version == 1 ? 'li' : 'tr'
},
// move the selected forum to the "starred" category
star : function(that, id, startup) {
if (!fa_starred.forums) fa_starred.forums = {};
if (!fa_starred.board) fa_starred.createStarBoard();
if (!fa_starred.forums[id]) {
// clone the row and add it to the star board
var clone = $(that).closest(fa_starred.select.row)[0].cloneNode(true),
rows = $(that).closest(fa_starred.select.row).parent().find(fa_starred.select.row);
// update the star attributes for the clone
$('.fa_star', clone).attr({
'onclick' : 'fa_starred.unstar(this, ' + id + '); return false',
'class' : 'fa_unstar',
'title' : fa_starred.lang.unstar
}).html('<i class="fa">' + fa_starred.icon.unstar + '</i>');
fa_starred.list.appendChild(clone); // append the clone to the starred category
$(that).closest(fa_starred.select.row)[0].style.display = 'none'; // hide the original row
// check if all forums are hidden for this category
for (var i = 0, j = rows.length, k = 0; i < j; i++) {
if (/none/.test(rows[i].style.display)) k++;
}
// hide the category if all forums are hidden
if (i == k) {
$(that).closest(fa_starred.select.category)[0].className += ' fa_star_hidden';
}
// jump to the star board if it's out of sight
if (!startup && document.getElementById('fa_star_board').getBoundingClientRect().top < 0) {
window.location.hash = '';
window.location.hash = '#fa_star_board';
}
// update storage
fa_starred.forums[id] = 1;
localStorage.fa_starred_forums = JSON.stringify(fa_starred.forums);
}
},
// unstar the selected forum
unstar : function (that, id) {
var forum, catg, i = 0, j;
fa_starred.list.removeChild($(that).closest(fa_starred.select.row)[0]); // remove cloned row
// update variables
forum = $(fa_starred.select.forum + '[href^="/f' + id + '-"]')[0]; // original forum
catg = $(forum).closest(fa_starred.select.category)[0]; // original category
$(forum).closest(fa_starred.select.row)[0].style.display = ''; // show the original forum's row
// show the category if all forums were hidden
if (/fa_star_hidden/.test(catg.className)) {
catg.className = catg.className.replace(/fa_star_hidden/, '');
}
// delete the starred forum and check if there are anymore stars
delete fa_starred.forums[id];
for (j in fa_starred.forums) {
if (fa_starred.forums[j]) i++;
}
// update storage
if (i) {
localStorage.fa_starred_forums = JSON.stringify(fa_starred.forums);
} else {
fa_starred.forums = null;
localStorage.removeItem('fa_starred_forums');
// remove nodes
if (version == 2) {
fa_starred.board.parentNode.removeChild(fa_starred.board.previousSibling); // remove header for punbb
}
fa_starred.board.parentNode.removeChild(fa_starred.board);
// delete node references
delete fa_starred.board;
delete fa_starred.list;
}
},
// create the "starred" category
createStarBoard : function() {
var catg = $(fa_starred.select.category, fa_starred.select.content)[3],
board = catg.cloneNode(true),
rows = $(fa_starred.select.row, board);
board.id = 'fa_star_board';
board.style.display = '';
if (version != 2) {
board.getElementsByTagName('H2')[0].innerHTML = fa_starred.lang.starred; // change category title
}
// find forum list and remove exisiting rows in the clone
fa_starred.list = rows[0].parentNode;
rows.remove();
// punbb insertion method
if (version == 2) {
var head = catg.previousSibling.cloneNode(true);
head.getElementsByTagName('H2')[0].innerHTML = fa_starred.lang.starred;
catg.parentNode.insertBefore(board, catg.previousSibling);
board.parentNode.insertBefore(head, board);
} else {
catg.parentNode.insertBefore(board, catg); // default insertion
}
fa_starred.board = board;
}
};
fa_starred.select.row += ':has(' + fa_starred.select.forum + ')'; // update row selector
// general startup
var a = $(fa_starred.select.forum, fa_starred.select.content),
i = 0,
j = a.length,
k,
id;
// setup star board and reset forum states if starred
if (fa_starred.forums) {
if (!fa_starred.board) fa_starred.createStarBoard();
for (k in fa_starred.forums) {
fa_starred.forums[k] = 0;
}
}
// setup stars and starred forums
for (; i < j; i++) {
id = a[i].href.replace(/.*?\/f(\d+).*/, '$1');
a[i].insertAdjacentHTML('afterend', '<a href="#" class="fa_star" onclick="fa_starred.star(this, ' + id + '); return false;" title="' + fa_starred.lang.star + '"><i class="fa">' + fa_starred.icon.unstar + '</i></a>');
if (fa_starred.forums) {
for (k in fa_starred.forums) {
if (k == id) {
fa_starred.star(a[i], id, true);
}
}
}
}
document.getElementsByTagName('HEAD')[0].insertAdjacentHTML('beforeend', '<style type="text/css">a.fa_star,a.fa_unstar{color:#999!important;font-size:16px;vertical-align:-2px;margin-left:3px;opacity:0}a.fa_star:hover,a.fa_unstar,li:hover a.fa_star,tr:hover a.fa_star{opacity:1}a.fa_star i,a.fa_unstar i{position:relative}a.fa_star i:hover:after,a.fa_unstar i:after{content:"' + fa_starred.icon.star + '";position:absolute;left:0;bottom:0}a.fa_unstar i:hover:after{content:""}.fa_star_hidden {display:none!important}</style>');
});
Resulta?
Até mais.
Re: Categorias favoritas
while escreveu:Troque o código por este:
- Código:
$(function() {
// automatically detects the version
var version = $('.bodylinewidth')[0] ? 0 : document.getElementById('wrap') ? 1 : $('div.pun')[0] ? 2 : document.getElementById('ipbwrapper') ? 3 : 'badapple';
// error notifications
if (version == 'badapple' || !window.JSON || !window.localStorage) {
var errString = 'The plugin "fa_starred" could not be executed because : ';
if (version == 'badapple') errString += '\nYour forum version is not supported.';
if (!window.JSON) errString += '\nJSON is not supported by your browser';
if (!window.localStorage) errString += '\nThe Storage API is not support by your browser.';
window.console && console.error ? console.error(errString) : alert(errString);
return;
}
// get fontawesome if unavailable
if (!$('link[href$="font-awesome.min.css"]')[0]) {
document.getElementsByTagName('HEAD')[0].insertAdjacentHTML('beforeend', '<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.0/css/font-awesome.min.css" />');
}
window.fa_starred = {
version : version, // forum version
forums : localStorage.fa_starred_forums ? JSON.parse(localStorage.fa_starred_forums) : null,
// language settings
lang : {
star : 'Star this forum',
unstar : 'Unstar this forum',
starred : 'Starred Forums'
},
icon : {
star : '',
unstar : ''
},
// selectors
select : {
content : version ? document.getElementById('main-content') : $('#content-container td:has(> img[height="5"])')[0],
category : ['.forumline:has(.secondarytitle)', '.forabg', '.main:has(.tcr) .main-content', '.borderwrap:has(.index-box)'][version],
forum : 'a.' + (version ? 'forumtitle' : 'forumlink'),
row : version == 1 ? 'li' : 'tr'
},
// move the selected forum to the "starred" category
star : function(that, id, startup) {
if (!fa_starred.forums) fa_starred.forums = {};
if (!fa_starred.board) fa_starred.createStarBoard();
if (!fa_starred.forums[id]) {
// clone the row and add it to the star board
var clone = $(that).closest(fa_starred.select.row)[0].cloneNode(true),
rows = $(that).closest(fa_starred.select.row).parent().find(fa_starred.select.row);
// update the star attributes for the clone
$('.fa_star', clone).attr({
'onclick' : 'fa_starred.unstar(this, ' + id + '); return false',
'class' : 'fa_unstar',
'title' : fa_starred.lang.unstar
}).html('<i class="fa">' + fa_starred.icon.unstar + '</i>');
fa_starred.list.appendChild(clone); // append the clone to the starred category
$(that).closest(fa_starred.select.row)[0].style.display = 'none'; // hide the original row
// check if all forums are hidden for this category
for (var i = 0, j = rows.length, k = 0; i < j; i++) {
if (/none/.test(rows[i].style.display)) k++;
}
// hide the category if all forums are hidden
if (i == k) {
$(that).closest(fa_starred.select.category)[0].className += ' fa_star_hidden';
}
// jump to the star board if it's out of sight
if (!startup && document.getElementById('fa_star_board').getBoundingClientRect().top < 0) {
window.location.hash = '';
window.location.hash = '#fa_star_board';
}
// update storage
fa_starred.forums[id] = 1;
localStorage.fa_starred_forums = JSON.stringify(fa_starred.forums);
}
},
// unstar the selected forum
unstar : function (that, id) {
var forum, catg, i = 0, j;
fa_starred.list.removeChild($(that).closest(fa_starred.select.row)[0]); // remove cloned row
// update variables
forum = $(fa_starred.select.forum + '[href^="/f' + id + '-"]')[0]; // original forum
catg = $(forum).closest(fa_starred.select.category)[0]; // original category
$(forum).closest(fa_starred.select.row)[0].style.display = ''; // show the original forum's row
// show the category if all forums were hidden
if (/fa_star_hidden/.test(catg.className)) {
catg.className = catg.className.replace(/fa_star_hidden/, '');
}
// delete the starred forum and check if there are anymore stars
delete fa_starred.forums[id];
for (j in fa_starred.forums) {
if (fa_starred.forums[j]) i++;
}
// update storage
if (i) {
localStorage.fa_starred_forums = JSON.stringify(fa_starred.forums);
} else {
fa_starred.forums = null;
localStorage.removeItem('fa_starred_forums');
// remove nodes
if (version == 2) {
fa_starred.board.parentNode.removeChild(fa_starred.board.previousSibling); // remove header for punbb
}
fa_starred.board.parentNode.removeChild(fa_starred.board);
// delete node references
delete fa_starred.board;
delete fa_starred.list;
}
},
// create the "starred" category
createStarBoard : function() {
var catg = $(fa_starred.select.category, fa_starred.select.content)[3],
board = catg.cloneNode(true),
rows = $(fa_starred.select.row, board);
board.id = 'fa_star_board';
board.style.display = '';
if (version != 2) {
board.getElementsByTagName('H2')[0].innerHTML = fa_starred.lang.starred; // change category title
}
// find forum list and remove exisiting rows in the clone
fa_starred.list = rows[0].parentNode;
rows.remove();
// punbb insertion method
if (version == 2) {
var head = catg.previousSibling.cloneNode(true);
head.getElementsByTagName('H2')[0].innerHTML = fa_starred.lang.starred;
catg.parentNode.insertBefore(board, catg.previousSibling);
board.parentNode.insertBefore(head, board);
} else {
catg.parentNode.insertBefore(board, catg); // default insertion
}
fa_starred.board = board;
}
};
fa_starred.select.row += ':has(' + fa_starred.select.forum + ')'; // update row selector
// general startup
var a = $(fa_starred.select.forum, fa_starred.select.content),
i = 0,
j = a.length,
k,
id;
// setup star board and reset forum states if starred
if (fa_starred.forums) {
if (!fa_starred.board) fa_starred.createStarBoard();
for (k in fa_starred.forums) {
fa_starred.forums[k] = 0;
}
}
// setup stars and starred forums
for (; i < j; i++) {
id = a[i].href.replace(/.*?\/f(\d+).*/, '$1');
a[i].insertAdjacentHTML('afterend', '<a href="#" class="fa_star" onclick="fa_starred.star(this, ' + id + '); return false;" title="' + fa_starred.lang.star + '"><i class="fa">' + fa_starred.icon.unstar + '</i></a>');
if (fa_starred.forums) {
for (k in fa_starred.forums) {
if (k == id) {
fa_starred.star(a[i], id, true);
}
}
}
}
document.getElementsByTagName('HEAD')[0].insertAdjacentHTML('beforeend', '<style type="text/css">a.fa_star,a.fa_unstar{color:#999!important;font-size:16px;vertical-align:-2px;margin-left:3px;opacity:0}a.fa_star:hover,a.fa_unstar,li:hover a.fa_star,tr:hover a.fa_star{opacity:1}a.fa_star i,a.fa_unstar i{position:relative}a.fa_star i:hover:after,a.fa_unstar i:after{content:"' + fa_starred.icon.star + '";position:absolute;left:0;bottom:0}a.fa_unstar i:hover:after{content:""}.fa_star_hidden {display:none!important}</style>');
});
Resulta?
Até mais.
Ele aparece uma categoria acima de onde eu queria. Ele aparece aqui:
- Categoria
- Categoria
- Categoria
- FAVORITOS
Eu quero que apareça nessa posição:
- Categoria
- Categoria
- FAVORITOS
- Categoria
Grato.
Re: Categorias favoritas
Me explicava então...
Troque por este:
Até mais.
Troque por este:
- Código:
$(function() {
// automatically detects the version
var version = $('.bodylinewidth')[0] ? 0 : document.getElementById('wrap') ? 1 : $('div.pun')[0] ? 2 : document.getElementById('ipbwrapper') ? 3 : 'badapple';
// error notifications
if (version == 'badapple' || !window.JSON || !window.localStorage) {
var errString = 'The plugin "fa_starred" could not be executed because : ';
if (version == 'badapple') errString += '\nYour forum version is not supported.';
if (!window.JSON) errString += '\nJSON is not supported by your browser';
if (!window.localStorage) errString += '\nThe Storage API is not support by your browser.';
window.console && console.error ? console.error(errString) : alert(errString);
return;
}
// get fontawesome if unavailable
if (!$('link[href$="font-awesome.min.css"]')[0]) {
document.getElementsByTagName('HEAD')[0].insertAdjacentHTML('beforeend', '<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.0/css/font-awesome.min.css" />');
}
window.fa_starred = {
version : version, // forum version
forums : localStorage.fa_starred_forums ? JSON.parse(localStorage.fa_starred_forums) : null,
// language settings
lang : {
star : 'Star this forum',
unstar : 'Unstar this forum',
starred : 'Starred Forums'
},
icon : {
star : '',
unstar : ''
},
// selectors
select : {
content : version ? document.getElementById('main-content') : $('#content-container td:has(> img[height="5"])')[0],
category : ['.forumline:has(.secondarytitle)', '.forabg', '.main:has(.tcr) .main-content', '.borderwrap:has(.index-box)'][version],
forum : 'a.' + (version ? 'forumtitle' : 'forumlink'),
row : version == 1 ? 'li' : 'tr'
},
// move the selected forum to the "starred" category
star : function(that, id, startup) {
if (!fa_starred.forums) fa_starred.forums = {};
if (!fa_starred.board) fa_starred.createStarBoard();
if (!fa_starred.forums[id]) {
// clone the row and add it to the star board
var clone = $(that).closest(fa_starred.select.row)[0].cloneNode(true),
rows = $(that).closest(fa_starred.select.row).parent().find(fa_starred.select.row);
// update the star attributes for the clone
$('.fa_star', clone).attr({
'onclick' : 'fa_starred.unstar(this, ' + id + '); return false',
'class' : 'fa_unstar',
'title' : fa_starred.lang.unstar
}).html('<i class="fa">' + fa_starred.icon.unstar + '</i>');
fa_starred.list.appendChild(clone); // append the clone to the starred category
$(that).closest(fa_starred.select.row)[0].style.display = 'none'; // hide the original row
// check if all forums are hidden for this category
for (var i = 0, j = rows.length, k = 0; i < j; i++) {
if (/none/.test(rows[i].style.display)) k++;
}
// hide the category if all forums are hidden
if (i == k) {
$(that).closest(fa_starred.select.category)[0].className += ' fa_star_hidden';
}
// jump to the star board if it's out of sight
if (!startup && document.getElementById('fa_star_board').getBoundingClientRect().top < 0) {
window.location.hash = '';
window.location.hash = '#fa_star_board';
}
// update storage
fa_starred.forums[id] = 1;
localStorage.fa_starred_forums = JSON.stringify(fa_starred.forums);
}
},
// unstar the selected forum
unstar : function (that, id) {
var forum, catg, i = 0, j;
fa_starred.list.removeChild($(that).closest(fa_starred.select.row)[0]); // remove cloned row
// update variables
forum = $(fa_starred.select.forum + '[href^="/f' + id + '-"]')[0]; // original forum
catg = $(forum).closest(fa_starred.select.category)[0]; // original category
$(forum).closest(fa_starred.select.row)[0].style.display = ''; // show the original forum's row
// show the category if all forums were hidden
if (/fa_star_hidden/.test(catg.className)) {
catg.className = catg.className.replace(/fa_star_hidden/, '');
}
// delete the starred forum and check if there are anymore stars
delete fa_starred.forums[id];
for (j in fa_starred.forums) {
if (fa_starred.forums[j]) i++;
}
// update storage
if (i) {
localStorage.fa_starred_forums = JSON.stringify(fa_starred.forums);
} else {
fa_starred.forums = null;
localStorage.removeItem('fa_starred_forums');
// remove nodes
if (version == 2) {
fa_starred.board.parentNode.removeChild(fa_starred.board.previousSibling); // remove header for punbb
}
fa_starred.board.parentNode.removeChild(fa_starred.board);
// delete node references
delete fa_starred.board;
delete fa_starred.list;
}
},
// create the "starred" category
createStarBoard : function() {
var catg = $(fa_starred.select.category, fa_starred.select.content)[2],
board = catg.cloneNode(true),
rows = $(fa_starred.select.row, board);
board.id = 'fa_star_board';
board.style.display = '';
if (version != 2) {
board.getElementsByTagName('H2')[0].innerHTML = fa_starred.lang.starred; // change category title
}
// find forum list and remove exisiting rows in the clone
fa_starred.list = rows[0].parentNode;
rows.remove();
// punbb insertion method
if (version == 2) {
var head = catg.previousSibling.cloneNode(true);
head.getElementsByTagName('H2')[0].innerHTML = fa_starred.lang.starred;
catg.parentNode.insertBefore(board, catg.previousSibling);
board.parentNode.insertBefore(head, board);
} else {
catg.parentNode.insertBefore(board, catg); // default insertion
}
fa_starred.board = board;
}
};
fa_starred.select.row += ':has(' + fa_starred.select.forum + ')'; // update row selector
// general startup
var a = $(fa_starred.select.forum, fa_starred.select.content),
i = 0,
j = a.length,
k,
id;
// setup star board and reset forum states if starred
if (fa_starred.forums) {
if (!fa_starred.board) fa_starred.createStarBoard();
for (k in fa_starred.forums) {
fa_starred.forums[k] = 0;
}
}
// setup stars and starred forums
for (; i < j; i++) {
id = a[i].href.replace(/.*?\/f(\d+).*/, '$1');
a[i].insertAdjacentHTML('afterend', '<a href="#" class="fa_star" onclick="fa_starred.star(this, ' + id + '); return false;" title="' + fa_starred.lang.star + '"><i class="fa">' + fa_starred.icon.unstar + '</i></a>');
if (fa_starred.forums) {
for (k in fa_starred.forums) {
if (k == id) {
fa_starred.star(a[i], id, true);
}
}
}
}
document.getElementsByTagName('HEAD')[0].insertAdjacentHTML('beforeend', '<style type="text/css">a.fa_star,a.fa_unstar{color:#999!important;font-size:16px;vertical-align:-2px;margin-left:3px;opacity:0}a.fa_star:hover,a.fa_unstar,li:hover a.fa_star,tr:hover a.fa_star{opacity:1}a.fa_star i,a.fa_unstar i{position:relative}a.fa_star i:hover:after,a.fa_unstar i:after{content:"' + fa_starred.icon.star + '";position:absolute;left:0;bottom:0}a.fa_unstar i:hover:after{content:""}.fa_star_hidden {display:none!important}</style>');
});
Até mais.
Re: Categorias favoritas
while escreveu:Me explicava então...
Troque por este:
- Código:
$(function() {
// automatically detects the version
var version = $('.bodylinewidth')[0] ? 0 : document.getElementById('wrap') ? 1 : $('div.pun')[0] ? 2 : document.getElementById('ipbwrapper') ? 3 : 'badapple';
// error notifications
if (version == 'badapple' || !window.JSON || !window.localStorage) {
var errString = 'The plugin "fa_starred" could not be executed because : ';
if (version == 'badapple') errString += '\nYour forum version is not supported.';
if (!window.JSON) errString += '\nJSON is not supported by your browser';
if (!window.localStorage) errString += '\nThe Storage API is not support by your browser.';
window.console && console.error ? console.error(errString) : alert(errString);
return;
}
// get fontawesome if unavailable
if (!$('link[href$="font-awesome.min.css"]')[0]) {
document.getElementsByTagName('HEAD')[0].insertAdjacentHTML('beforeend', '<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.0/css/font-awesome.min.css" />');
}
window.fa_starred = {
version : version, // forum version
forums : localStorage.fa_starred_forums ? JSON.parse(localStorage.fa_starred_forums) : null,
// language settings
lang : {
star : 'Star this forum',
unstar : 'Unstar this forum',
starred : 'Starred Forums'
},
icon : {
star : '',
unstar : ''
},
// selectors
select : {
content : version ? document.getElementById('main-content') : $('#content-container td:has(> img[height="5"])')[0],
category : ['.forumline:has(.secondarytitle)', '.forabg', '.main:has(.tcr) .main-content', '.borderwrap:has(.index-box)'][version],
forum : 'a.' + (version ? 'forumtitle' : 'forumlink'),
row : version == 1 ? 'li' : 'tr'
},
// move the selected forum to the "starred" category
star : function(that, id, startup) {
if (!fa_starred.forums) fa_starred.forums = {};
if (!fa_starred.board) fa_starred.createStarBoard();
if (!fa_starred.forums[id]) {
// clone the row and add it to the star board
var clone = $(that).closest(fa_starred.select.row)[0].cloneNode(true),
rows = $(that).closest(fa_starred.select.row).parent().find(fa_starred.select.row);
// update the star attributes for the clone
$('.fa_star', clone).attr({
'onclick' : 'fa_starred.unstar(this, ' + id + '); return false',
'class' : 'fa_unstar',
'title' : fa_starred.lang.unstar
}).html('<i class="fa">' + fa_starred.icon.unstar + '</i>');
fa_starred.list.appendChild(clone); // append the clone to the starred category
$(that).closest(fa_starred.select.row)[0].style.display = 'none'; // hide the original row
// check if all forums are hidden for this category
for (var i = 0, j = rows.length, k = 0; i < j; i++) {
if (/none/.test(rows[i].style.display)) k++;
}
// hide the category if all forums are hidden
if (i == k) {
$(that).closest(fa_starred.select.category)[0].className += ' fa_star_hidden';
}
// jump to the star board if it's out of sight
if (!startup && document.getElementById('fa_star_board').getBoundingClientRect().top < 0) {
window.location.hash = '';
window.location.hash = '#fa_star_board';
}
// update storage
fa_starred.forums[id] = 1;
localStorage.fa_starred_forums = JSON.stringify(fa_starred.forums);
}
},
// unstar the selected forum
unstar : function (that, id) {
var forum, catg, i = 0, j;
fa_starred.list.removeChild($(that).closest(fa_starred.select.row)[0]); // remove cloned row
// update variables
forum = $(fa_starred.select.forum + '[href^="/f' + id + '-"]')[0]; // original forum
catg = $(forum).closest(fa_starred.select.category)[0]; // original category
$(forum).closest(fa_starred.select.row)[0].style.display = ''; // show the original forum's row
// show the category if all forums were hidden
if (/fa_star_hidden/.test(catg.className)) {
catg.className = catg.className.replace(/fa_star_hidden/, '');
}
// delete the starred forum and check if there are anymore stars
delete fa_starred.forums[id];
for (j in fa_starred.forums) {
if (fa_starred.forums[j]) i++;
}
// update storage
if (i) {
localStorage.fa_starred_forums = JSON.stringify(fa_starred.forums);
} else {
fa_starred.forums = null;
localStorage.removeItem('fa_starred_forums');
// remove nodes
if (version == 2) {
fa_starred.board.parentNode.removeChild(fa_starred.board.previousSibling); // remove header for punbb
}
fa_starred.board.parentNode.removeChild(fa_starred.board);
// delete node references
delete fa_starred.board;
delete fa_starred.list;
}
},
// create the "starred" category
createStarBoard : function() {
var catg = $(fa_starred.select.category, fa_starred.select.content)[2],
board = catg.cloneNode(true),
rows = $(fa_starred.select.row, board);
board.id = 'fa_star_board';
board.style.display = '';
if (version != 2) {
board.getElementsByTagName('H2')[0].innerHTML = fa_starred.lang.starred; // change category title
}
// find forum list and remove exisiting rows in the clone
fa_starred.list = rows[0].parentNode;
rows.remove();
// punbb insertion method
if (version == 2) {
var head = catg.previousSibling.cloneNode(true);
head.getElementsByTagName('H2')[0].innerHTML = fa_starred.lang.starred;
catg.parentNode.insertBefore(board, catg.previousSibling);
board.parentNode.insertBefore(head, board);
} else {
catg.parentNode.insertBefore(board, catg); // default insertion
}
fa_starred.board = board;
}
};
fa_starred.select.row += ':has(' + fa_starred.select.forum + ')'; // update row selector
// general startup
var a = $(fa_starred.select.forum, fa_starred.select.content),
i = 0,
j = a.length,
k,
id;
// setup star board and reset forum states if starred
if (fa_starred.forums) {
if (!fa_starred.board) fa_starred.createStarBoard();
for (k in fa_starred.forums) {
fa_starred.forums[k] = 0;
}
}
// setup stars and starred forums
for (; i < j; i++) {
id = a[i].href.replace(/.*?\/f(\d+).*/, '$1');
a[i].insertAdjacentHTML('afterend', '<a href="#" class="fa_star" onclick="fa_starred.star(this, ' + id + '); return false;" title="' + fa_starred.lang.star + '"><i class="fa">' + fa_starred.icon.unstar + '</i></a>');
if (fa_starred.forums) {
for (k in fa_starred.forums) {
if (k == id) {
fa_starred.star(a[i], id, true);
}
}
}
}
document.getElementsByTagName('HEAD')[0].insertAdjacentHTML('beforeend', '<style type="text/css">a.fa_star,a.fa_unstar{color:#999!important;font-size:16px;vertical-align:-2px;margin-left:3px;opacity:0}a.fa_star:hover,a.fa_unstar,li:hover a.fa_star,tr:hover a.fa_star{opacity:1}a.fa_star i,a.fa_unstar i{position:relative}a.fa_star i:hover:after,a.fa_unstar i:after{content:"' + fa_starred.icon.star + '";position:absolute;left:0;bottom:0}a.fa_unstar i:hover:after{content:""}.fa_star_hidden {display:none!important}</style>');
});
Até mais.
Maravilha.
Re: Categorias favoritas
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
» Como faço para que categorias tenham ícones de mensagens diferentes de outras categorias
» [Resolvido] Como fazer novas categorias é sub-categorias??
» Sub-categorias visíveis na pagina inicial das categorias
» [Resolvido] Como criar categorias e sub-categorias
» Sub-categorias
» [Resolvido] Como fazer novas categorias é sub-categorias??
» Sub-categorias visíveis na pagina inicial das categorias
» [Resolvido] Como criar categorias e sub-categorias
» Sub-categorias
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