Archiv | Impressum | Datenschutz
26. Januar 2009
Nerd 2.0

Lesezeichensidebar mit Icons

Nie hätte ich gedacht, dass ich bei der Fülle an Firefoxextensions mal nicht das Richtig finde.

Geplant war einfach mein Firefox etwas „aufzuräumen“ und wichtige Lesezeichen links auf einer Sidebar per Icon aufrufen zu lassen. Fertiges Plugin fehlanzeige!

Nach etwas recherche hab ich dann doch endlich einen Weg gefunden, mein Vorhaben zu realisieren.

So beschreibt Evan Rowals in seinem Blog, wie mithilfe der „All-In-One Sidebar“ Extension und der „Custom Buttons²“ Extension sich solche eine Lesezeichenbar bauen lässt.

Da sich sein Beispielcode für den Hinzufügenbutton aber nicthmehr aufrufen lässt, habe ich mir mit der Hilfe des Custom Buttons Forums eine eigene Lösung gebastelt.

var button=this;

function createButton(button,name,img,code,Icode)
{
var nowButton=button;
var nowButtonNum=custombuttons.getNumber(nowButton.id);
var values=getButtonParameters(name,img,code,Icode);

var toolbar=nowButton.parentNode;

var newNum=custombuttons.min_button_number();
var newButton=custombuttons.createButton(newNum,values);
var newButton2=custombuttons.createButton(newNum,values);
var newButtonId=newButton.id;

//äîáàâëÿåì â palette
custombuttons.addToPalette(newButton2);

//â toolbar
var aBefore=nowButton.nextSibling;
custombuttons.insertToToolbar(toolbar,newButton,aBefore);

//Èñïðàâëÿåì currentSet äëÿ toolbar
var ar=toolbar.getAttribute(‚currentset‘).split(‚,‘);
var z=1;
for (var j=0;j
if (ar[j]==nowButton.id){
z=j+1;
break;
}
}
ar.splice(z,0,newButtonId);
//èçáàâëÿåìñÿ îò ãëþêà ñ ñàìîïðîèçâîëüíûì ðàçìíîæåíèåì êíîïîê
var newSet=“;
var temp={};
for (var i=0;i
if (!(ar[i] in temp)){
temp[ar[i]]=true;
newSet+=ar[i];
if (i+1
}
}
toolbar.setAttribute(‚currentset‘,newSet);
document.persist(toolbar.id, ‚currentset‘);

//åñëè ýòî custom-toolbar, òî èñïðàâëÿåì àòðèáóòû â toolbarSet…
var customindex=toolbar.getAttribute(‚customindex‘);
if (customindex>0){
var attrName=’toolbar’+customindex;
var toolbarSet=document.getElementById(‚customToolbars‘);
var oldSet=toolbarSet.getAttribute(attrName);
newSet=oldSet.substring(0,oldSet.indexOf(‚:‘)+1)+newSet;
toolbarSet.setAttribute(attrName,newSet);
document.persist(‚customToolbars‘,attrName);
}
//Èñïðàâëåíèÿ äëÿ AIOS
if (document.getElementById(‚aiostbx-belowtabs-toolbox‘))
persistCurrentSets();
custombuttons.saveButtonsToProfile();
}
function getButtonParameters(name,img,code,Icode){
var ar=new Array;
ar.push(name);
ar.push(img);
ar.push(code);
ar.push(Icode);
return {
’name‘ :ar[0]||“,
‚image‘:ar[1]||“,
‚code‘ :ar[2]||“,
‚initCode‘ :ar[3]||“
};
}

this.create_image=function(img)
{
this.CB=window.custombuttons;
var aURL=img;
var kIOContractID = „@mozilla.org/network/io-service;1″;
var kIOIID = Components. interfaces. nsIIOService;
var IOSVC = Components. classes [kIOContractID]. getService (kIOIID);
var chan = IOSVC. newChannel (aURL, null, null);
var listener = new this.CB.imageLoadListener (chan);
chan. notificationCallbacks = listener;
listener.callBackFunction=this.setImageURL;
chan. asyncOpen (listener, null);
}
this.setImageURL=function(img)
{
var name=content.document.title;
var code=“ „;
var Icode=“var link = „“+content.document.location.href+““;nvar label = „“+name+““;nthis.quot = function(evt) {nif(evt.shiftKey) {nthis.showPopup(this);nreturn;n}nn nswitch(evt.button) {nn case 0:n loadURI(link);n break;nn case 2:n gBrowser.selectedTab=gBrowser.addTab(link);nbreak;nn}n}nthis.showPopup = function(node) {n var popup = document.getElementById(‚custombuttons-contextpopup‘);n var x = node.boxObject.x;n var y = node.boxObject.y + node.boxObject.height;n document.popupNode = node;n popup.showPopup(node, x, y, ‚popup‘, null, null);n}nn this.setAttribute(‚onclick‘, ‚this.quot(event);‘);n this.setAttribute(‚context‘, “);n this.tooltipText = label;“;

createButton(button,name,img,code,Icode);

}
this.bkmrk=function(evt) {

var favicon=document.getElementById(„page-proxy-favicon“).src;
if (!document.getElementById(„page-proxy-favicon“).src) {
favicon=prompt(‚This site has no favicon! n If you would like to specify one, please do so:nnnn For files use, „file:///“ and the locationnnOr use a URL instead‘, ‚file:///‘, ‚Specify a Favicon‘);
if ((favicon.match(‚file:///.‘)) || (favicon.match(‚http://‘))) {
this.create_image(favicon);
return;
}
if (favicon == null) {
return;
}
else {
favicon=“chrome://custombuttons/skin/button.png“;
this.create_image(favicon);
}
}
else {
this.create_image(favicon);
}
}

this.setAttribute(„homepage“, „http://custombuttons.phpbbnow.com/viewtopic.php?t=167“);

Mit einem Klick auf den Stern wie jetzt ein Button angelegt, der bei einem Linksklick die gespeicherte Seite im aktuellen Tab öffnet und bei einem Rechtsklick in einem Neuen. Shift+Rechtsklick öffnet das Custom Button Menü zum Bearbeiten.

Viel vergnügen ;)

Ähnliche Beiträge:
Firefox: Icon-Sidebar (Update)
DLink 360-T: Router, HTTP-Server und DHCP in einem
Entpacken mit PHP
Webserver & DHCP auf DLink 360T
Text gekürzt, aber HTML offen?

Ein Kommentar


[…] Firefox: Icon-Sidebar (Update) BODY-SNATCHER 16.06.2009 Kein Kommentar Drucken Der alltägliche Surfer, Gesammelte Werke Weiteres zum Thema: Lesezeichensidebar mit Icons […]


Kommentieren