|
|
(3 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| Sometime ago I noticed the [http://forums.mozillazine.org/viewtopic.php?f=23&t=1172765 Mozilla's Places Stats Project] thread with the possibility to display a list of installed extensions in JSON notation by using the Error Console. That gave me an idea to do the same for the printing passwords code in the [[Password Manager]] article.<br>
| | Blank |
| | |
| I have also taken the opportunity to create a similar file for displaying the installed extensions. So here are two versions.<br>
| |
| The first version shows the name and version number and the second version has the possibility to select which additional columns you wish to see.<br>
| |
| <pre>/*
| |
| * Paste this file into Firefox's JavaScript Console and evaluate it to display the installed extensions - dickvl@kb.mozillazine.org
| |
| */
| |
| (function () {
| |
| var Cc = Components.classes;
| |
| var Ci = Components.interfaces;
| |
| var EMP = "http://www.mozilla.org/2004/em-rdf#";
| |
| var EMT = 2; /* Extensions: EMT = 2; Themes: EMT = 4; */
| |
| var rv = [];
| |
| | |
| var ds =
| |
| Cc["@mozilla.org/extensions/manager;1"].
| |
| getService(Ci.nsIExtensionManager).
| |
| datasource;
| |
| var rdf =
| |
| Cc["@mozilla.org/rdf/rdf-service;1"].
| |
| getService(Ci.nsIRDFService);
| |
| var elts =
| |
| Cc["@mozilla.org/rdf/container-utils;1"].
| |
| getService(Ci.nsIRDFContainerUtils).
| |
| MakeSeq(ds, rdf.GetResource("urn:mozilla:item:root")).
| |
| GetElements();
| |
| | |
| function rdfGS(res){
| |
| try{
| |
| return(ds.GetTarget(elt,rdf.GetResource(EMP+res),true).QueryInterface(Ci.nsIRDFLiteral).Value);
| |
| }catch(e){return("")}
| |
| }
| |
| | |
| while (elts.hasMoreElements()) {
| |
| var elt = elts.getNext().QueryInterface(Ci.nsIRDFResource);
| |
| if (ds.HasAssertion(elt,rdf.GetResource(EMP+"type"),rdf.GetIntLiteral(EMT),true)) {
| |
| var nam = rdfGS("name");
| |
| var ver = rdfGS("version");
| |
| var dis = rdfGS("isDisabled");
| |
| rv.push({name:nam,id:elt.Value.replace(/^urn:mozilla:item:/,""),vers:ver,disab:dis});
| |
| }
| |
| }
| |
| | |
| var names="",RV;
| |
| for (i=0;RV=rv[i];i++) {
| |
| var name = RV.name;
| |
| var vers = RV.vers;
| |
| var disab = (RV.disab=="true")?"(disabled)":"";
| |
| names+=" <tr><td>" + name + "</td><td>" + vers + "</td><td>" + disab + "</td></tr>\n";
| |
| }
| |
| | |
| function tdig(string) {return (string.length < 2) ? "0" + string : string ;}
| |
| function fdig(number){return (number < 1000) ? number + 1900 : number;}
| |
| | |
| var now = new Date();
| |
| var hrs = tdig(now.getHours() + "");
| |
| var min = tdig(now.getMinutes() + "");
| |
| var sec = tdig(now.getSeconds() + "");
| |
| | |
| var timeValue = " | At "+hrs+":"+min+":"+sec;
| |
| var days = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
| |
| var months = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
| |
| var date = ((now.getDate()<10) ? "0" : "")+ now.getDate();
| |
| | |
| var today ="On "+days[now.getDay()]+", "+date+" "+months[now.getMonth()]+" "+(fdig(now.getYear()))+timeValue;
| |
| | |
| window.open('data:text/html,
| |
| <html><head>
| |
| <meta http-equiv=content-type" content="text/html; charset=ISO-8859-1">
| |
| | |
| <title>Mozilla Extensions</title>
| |
| <style type="text/css">
| |
| td {
| |
| font-family: "Trebuchet MS", Arial, Helvetica, Geneva, Verdana, Sans-Serif;
| |
| font-size: 85%;
| |
| padding: 1px 2px 1px 2px;
| |
| }
| |
| </style>
| |
| </head><body style="margin: 1em 3em; background-color: rgb(255, 221, 221);">
| |
| <b>MOZILLA EXTENSIONS INFORMATION - by dickvl@kb.mozillazine.org</b><br>'+today+
| |
| '</p><p>
| |
| <table style="empty-cells: show; background-color: rgb(221, 255, 221);" border="1" cellspacing="0">
| |
| <tbody><tr style="background-color: rgb(204, 204, 255);">
| |
| <td>
| |
| <b>Name</b>
| |
| </td>
| |
| <td>
| |
| <b>Version</b>
| |
| </td>
| |
| <td>
| |
| <b>Disabled</b>
| |
| </td>
| |
| </tr>'+names+'</tbody></table>
| |
| </p></body></html>',
| |
| "", "menubar=yes,toolbar=no,scrollbars=yes,resizable=yes,width=1000,height=600");
| |
| })();
| |
| </pre>
| |
| <pre>/* To display the installed extensions paste this file into Firefox's JavaScript Console and evaluate it - dickvl@kb.mozillazine.org */
| |
| | |
| (function () {
| |
| var Cc = Components.classes;
| |
| var Ci = Components.interfaces;
| |
| var EMP = "http://www.mozilla.org/2004/em-rdf#";
| |
| var EMT = 2; /* Extensions: EMT = 2; Themes: EMT = 4; */
| |
| var rv = [];
| |
| | |
| var ds =
| |
| Cc["@mozilla.org/extensions/manager;1"].
| |
| getService(Ci.nsIExtensionManager).
| |
| datasource;
| |
| var rdf =
| |
| Cc["@mozilla.org/rdf/rdf-service;1"].
| |
| getService(Ci.nsIRDFService);
| |
| var elts =
| |
| Cc["@mozilla.org/rdf/container-utils;1"].
| |
| getService(Ci.nsIRDFContainerUtils).
| |
| MakeSeq(ds, rdf.GetResource("urn:mozilla:item:root")).
| |
| GetElements();
| |
| | |
| function rdfGS(res){
| |
| try{
| |
| return(ds.GetTarget(elt,rdf.GetResource(EMP+res),true).QueryInterface(Ci.nsIRDFLiteral).Value);
| |
| }catch(e){return("")}
| |
| }
| |
| | |
| while (elts.hasMoreElements()) {
| |
| var elt = elts.getNext().QueryInterface(Ci.nsIRDFResource);
| |
| if (ds.HasAssertion(elt,rdf.GetResource(EMP+"type"),rdf.GetIntLiteral(EMT),true)) {
| |
| var nam = rdfGS("name");
| |
| var ver = rdfGS("version");
| |
| var des = rdfGS("description");
| |
| var dis = rdfGS("isDisabled");
| |
| var ads = rdfGS("appDisabled");
| |
| var uds = rdfGS("userDisabled");
| |
| var hom = rdfGS("homepageURL");
| |
| var com = rdfGS("compatible");
| |
| var ins = rdfGS("installLocation");
| |
| rv.push({name:nam,id:elt.Value.replace(/^urn:mozilla:item:/,""),vers:ver,descr:des,adis:ads,udis:uds,home:hom,dis:dis,inst:ins,comp:com});
| |
| }
| |
| }
| |
| | |
| /* columns - 0:space 1:name 2:version 3,4:disabled 5:id 6:description 7:homepage 8:compatible 9:install location */
| |
| var THEAD = ["","Name","Version","Disabled","(-)","ID","Description","Home","Comp.","Inst.Loc"];
| |
| var TCONT = (prompt("Columns:\n\n1:Name\n2:Version\n3:Disabled 4:(-)\n5:ID\n6:Description\n7:Home page\n","1 2 3"));
| |
| TCONT=((TCONT==null || TCONT=="")?"1 2 3":TCONT).split(" ");
| |
| var thead="",tdiv="",i,j,DV,TC,RV;
| |
| | |
| for(j=0;TC=TCONT[j];j++){thead+="<td><b>"+(THEAD[TC])+"</b></td>";}
| |
| | |
| for (i=0;RV=rv[i];i++) {
| |
| tdiv+="<tr>";
| |
| for(j=0;TC=TCONT[j];j++){
| |
| switch(parseInt(TC)){
| |
| case 1: DV=RV.name;break;
| |
| case 2: DV=RV.vers;break;
| |
| case 3: DV=(RV.dis=="true")?"(disabled)":"";break;
| |
| case 4: DV=((RV.adis=="true")?"(A)":"")+((RV.udis=="true")?"(U)":"");break;
| |
| case 5: DV=RV.id;break;
| |
| case 6: DV=RV.descr;break;
| |
| case 7: DV=RV.home;break;
| |
| case 8: DV=(RV.comp=="true")?"Yes":"No";break;
| |
| case 9: DV=RV.inst;break;
| |
| default: DV="";break;
| |
| } tdiv+="<td>"+DV+"</td>";
| |
| }
| |
| tdiv+="</tr>";
| |
| }
| |
| | |
| function TD(string) {return (string.length < 2) ? "0" + string : string ;}
| |
| function FD(number){return (number < 1000) ? number + 1900 : number;}
| |
| | |
| var now = new Date();
| |
| var hrs = TD(now.getHours() + "");
| |
| var min = TD(now.getMinutes() + "");
| |
| var sec = TD(now.getSeconds() + "");
| |
| | |
| var timeValue = " | At " + hrs + ":" + min + ":" + sec;
| |
| var days = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
| |
| var months = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
| |
| var date = ((now.getDate()<10) ? "0" : "")+ now.getDate();
| |
| | |
| var today = "On " + days[now.getDay()] + ", " + date + " " + months[now.getMonth()] + " " + (FD(now.getYear())) + timeValue;
| |
| | |
| window.open('data:text/html,
| |
| <html><head>
| |
| <meta http-equiv=content-type" content="text/html; charset=ISO-8859-1">
| |
| | |
| <title>Mozilla Extensions</title>
| |
| <style type="text/css">
| |
| td {
| |
| font-family: "Trebuchet MS", Arial, Verdana, Sans-Serif;
| |
| font-size: 85%;
| |
| padding: 1px 2px 1px 2px;
| |
| }
| |
| </style>
| |
| </head><body style="margin: 1em 3em; background-color: rgb(255, 221, 221);">
| |
| <b>MOZILLA EXTENSIONS INFORMATION (by dickvl@kb.mozillazine.org)</b><br>'+today+
| |
| '</p><p>
| |
| <table style="empty-cells: show; background-color: rgb(221, 255, 221);" border="1" cellspacing="0">
| |
| <tbody><tr style="background-color: rgb(204, 204, 255);">'+thead+'</tr>'+
| |
| tdiv+'</tbody></table>
| |
| </p></body></html>',"", "menubar=yes,toolbar=no,resizable=yes,scrollbars=yes,width=1000,height=700");
| |
| })();
| |
| </pre>
| |