[Tutorial] Fórum favorito
Página 1 de 1 • Compartilhe
Informações:
Autor: Ange Tuteur
Funcionalidade: Todas as versões
Acesse:
E Crie um novo Javascript com investimento no indice com esse código:Painel de Controle ☛ Modulos ☛ Html e Javascript ☛ Gestão dos codigos Javascript
- Código:
$(function() {
'DEVELOPED BY ANGE TUTEUR';
'NO DISTRIBUTION WITHOUT CONSENT OF THE AUTHOR';
// 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 : 'Estrelar este fórum',
unstar : 'Remover estrela neste fórum',
starred : 'Fóruns com estrela'
},
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>');
});
Resultado:
Tópicos semelhantes
Cria uma conta ou logue para postar uma mensagem.
Você precisa ser um membro, para poder postar uma resposta.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos