User talk:Dickvl: Difference between revisions

From MozillaZine Knowledge Base
Jump to navigationJump to search
No edit summary
(list installed extensions using the JavaScript (Error) Console)
Line 1: Line 1:
(blank)
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>
 
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>

Revision as of 20:16, 26 May 2009

Sometime ago I noticed the 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.

I have also taken the opportunity to create a similar file for displaying the installed extensions. So here are two versions.
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.

/*
 * 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");
})();
/* 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");
})();