User talk:Dickvl: Difference between revisions

From MozillaZine Knowledge Base
Jump to navigationJump to search
mNo edit summary
No edit summary
Line 4: Line 4:
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>
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>/*
<pre>/*
  * Paste this file into Firefox's JavaScript Console and evaluate it to display the installed extensions - dickvl@kb.mozillazine.org
  * Paste this file into Firefox's JavaScript Console and evaluate it to display the installed extensions and themes - dickvl@kb.mozillazine.org
*/
*/
(function () {
(function () {
Line 25: Line 25:
     GetElements();
     GetElements();


function rdfGS(res){
function rdfGS(elt,res){
  try{
  try{
     return(ds.GetTarget(elt,rdf.GetResource(EMP+res),true).QueryInterface(Ci.nsIRDFLiteral).Value);
     return(ds.GetTarget(elt,rdf.GetResource(EMP+res),true).QueryInterface(Ci.nsIRDFLiteral).Value);
Line 31: Line 31:
}
}


while (elts.hasMoreElements()) {
function makeRV(elt,rv){
  var elt = elts.getNext().QueryInterface(Ci.nsIRDFResource);
var nam = rdfGS(elt,"name");
  if (ds.HasAssertion(elt,rdf.GetResource(EMP+"type"),rdf.GetIntLiteral(2),true)) {
var ver = rdfGS(elt,"version");
    var nam = rdfGS("name");
var dis = rdfGS(elt,"isDisabled");
    var ver = rdfGS("version");
var hom = rdfGS(elt,"homepageURL");
    var dis = rdfGS("isDisabled");
rv.push({name:nam,id:elt.Value.replace(/^urn:mozilla:item:/,""),vers:ver,dis:dis,home:hom});
    rv.ext.push({name:nam,id:elt.Value.replace(/^urn:mozilla:item:/,""),vers:ver,dis:dis});
return(rv);
  }
}
  if (ds.HasAssertion(elt,rdf.GetResource(EMP+"type"),rdf.GetIntLiteral(4),true)) {
    var nam = rdfGS("name");
    var ver = rdfGS("version");
    var dis = rdfGS("isDisabled");
    rv.the.push({name:nam,id:elt.Value.replace(/^urn:mozilla:item:/,""),vers:ver,dis:dis});
  }
}


var names="<p><b>Extensions:</b><br>",i,RV;
function makeLIST(rv){
for (i=0;RV=rv.ext[i];i++) {
var list="",i,RV;
for (i=0;RV=rv[i];i++) {
   var name = RV.name;
   var name = RV.name;
   var vers = RV.vers;
   var vers = RV.vers;
   var disab = (RV.dis=="true")?"(disabled)":"";
   var disab = (RV.dis=="true")?"(disabled)":"";
   names+="<span>" + name + " </span><span> " + vers + " </span><span> " + disab + " </span></br>";
   var home = RV.home;
  list+="<a href=" + home + "><span>" + name + " </span><span> " + vers + " </span></a><span> " + disab + " </span></br>";
}
return(list);
}
}
names+="</p><p><b>Themes:</b><br>";
 
for (i=0;RV=rv.the[i];i++) {
while (elts.hasMoreElements()) {
  var name = RV.name;
var elt = elts.getNext().QueryInterface(Ci.nsIRDFResource);
   var vers = RV.vers;
if (ds.HasAssertion(elt,rdf.GetResource(EMP+"type"),rdf.GetIntLiteral(2),true)){
  var disab = (RV.dis=="true")?"(disabled)":"";
   makeRV(elt,rv.ext);  
   names+="<span>" + name + " </span><span> " + vers + " </span><span> " + disab + " </span><br>";
}
if (ds.HasAssertion(elt,rdf.GetResource(EMP+"type"),rdf.GetIntLiteral(4),true)){
   makeRV(elt,rv.the);
}
}
}
var extList="<p><b>Extensions:</b><br>"+makeLIST(rv.ext)+"</p>";
var theList="<p><b>Themes:</b><br>"+makeLIST(rv.the)+"</p>";


window.open('data:text/html,
window.open('data:text/html,
Line 67: Line 70:
<title>Mozilla Extensions</title>
<title>Mozilla Extensions</title>
</head><body style="margin: 1em 3em; background-color: rgb(255, 221, 221);">
</head><body style="margin: 1em 3em; background-color: rgb(255, 221, 221);">
' + names + '
' + extList + theList + '
</body></html>',
</body></html>',
"", "menubar=yes,toolbar=no,scrollbars=yes,resizable=yes,width=1000,height=600");
"", "menubar=yes,toolbar=no,scrollbars=yes,resizable=yes,width=1000,height=600");
Line 73: Line 76:
</pre>
</pre>
<pre>/*  
<pre>/*  
  *To display the installed extensions paste this file into Firefox's JavaScript Console and evaluate it - dickvl@kb.mozillazine.org
  *To display the installed extensions and themes paste this file into Firefox's JavaScript Console and evaluate it - dickvl@kb.mozillazine.org
*/
*/
(function () {
(function () {
Line 80: Line 83:
var EMP = "http://www.mozilla.org/2004/em-rdf#";
var EMP = "http://www.mozilla.org/2004/em-rdf#";
var EMT = 2; /* Extensions: EMT = 2;  Themes: EMT = 4; */
var EMT = 2; /* Extensions: EMT = 2;  Themes: EMT = 4; */
var rv = [];
var rv = {}; rv.ext = []; rv.the = [];
 
/* 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 Page","Comp.","Inst.Loc"];
var TCONT = (prompt("Columns:\n\n1:Name\n2:Version\n3:Disabled  4:(U|A)\n5:ID\n6:Description\n7:Home Page\n","1 2 3"));
TCONT=((TCONT==null || TCONT=="")?"1 2 3":TCONT).split(" ");


var ds =
var ds =
Line 95: Line 103:
     GetElements();
     GetElements();


function rdfGS(res){
function rdfGS(elt,res){
  try{
  try{
   return(ds.GetTarget(elt,rdf.GetResource(EMP+res),true).QueryInterface(Ci.nsIRDFLiteral).Value);
   return(ds.GetTarget(elt,rdf.GetResource(EMP+res),true).QueryInterface(Ci.nsIRDFLiteral).Value);
Line 101: Line 109:
}
}


while (elts.hasMoreElements()) {
function makeTD(rv){
var elt = elts.getNext().QueryInterface(Ci.nsIRDFResource);
var i,j,DV,RV,TC,td="";
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 Page","Comp.","Inst.Loc"];
var TCONT = (prompt("Columns:\n\n1:Name\n2:Version\n3:Disabled  4:(U|A)\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++) {
for (i=0;RV=rv[i];i++) {
tdiv+="<tr>";
  td+="<tr>";
  for(j=0;TC=TCONT[j];j++){
  for(j=0;TC=TCONT[j];j++){
   switch(parseInt(TC)){
   switch(parseInt(TC)){
Line 139: Line 125:
   case 9: DV=RV.inst;break;
   case 9: DV=RV.inst;break;
   default: DV="";break;
   default: DV="";break;
   } tdiv+="<td>"+DV+"</td>";
   } td+="<td>"+DV+"</td>";
}
td+="</tr>";
}
return(td);
}
 
function makeRV(elt,rv){
var nam = rdfGS(elt,"name");
var ver = rdfGS(elt,"version");
var des = rdfGS(elt,"description");
var dis = rdfGS(elt,"isDisabled");
var ads = rdfGS(elt,"appDisabled");
var uds = rdfGS(elt,"userDisabled");
var hom = rdfGS(elt,"homepageURL");
var com = rdfGS(elt,"compatible");
var ins = rdfGS(elt,"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});
return(rv);
}
 
while (elts.hasMoreElements()){
var elt = elts.getNext().QueryInterface(Ci.nsIRDFResource);
if(isExt=ds.HasAssertion(elt,rdf.GetResource(EMP+"type"),rdf.GetIntLiteral(2),true)){
  makeRV(elt,rv.ext);
}
if(isExt=ds.HasAssertion(elt,rdf.GetResource(EMP+"type"),rdf.GetIntLiteral(4),true)){
  makeRV(elt,rv.the);
  }
  }
tdiv+="</tr>";
}
}
var thead="";
for(j=0;TC=TCONT[j];j++){thead+="<td><b>"+(THEAD[(TC<THEAD.length)?TC:0])+"</b></td>";}
var tdivE = makeTD(rv.ext);
var tdivT = makeTD(rv.the);


function TD(string) {return (string.length < 2) ? "0" + string : string ;}
function TD(string) {return (string.length < 2) ? "0" + string : string ;}
Line 158: Line 176:


var today =  "On " + days[now.getDay()] + ", " + date + " " + months[now.getMonth()] + " " +    (FD(now.getYear())) + timeValue;
var today =  "On " + days[now.getDay()] + ", " + date + " " + months[now.getMonth()] + " " +    (FD(now.getYear())) + timeValue;
function makeTABLE(label,thead,tcont){
return('<p><b>'+label+':</b><br>
<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>'+
tcont+'</tbody></table></p>');
}


window.open('data:text/html,
window.open('data:text/html,
<html><head>
<html><head>
<meta http-equiv=content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv=content-type" content="text/html; charset=ISO-8859-1">
 
<title>Mozilla Extensions & Themes</title>
<title>Mozilla Extensions</title>
<style type="text/css">
<style type="text/css">
  td {
  td {
Line 172: Line 196:
</style>
</style>
</head><body style="margin: 1em 3em; background-color: rgb(255, 221, 221);">
</head><body style="margin: 1em 3em; background-color: rgb(255, 221, 221);">
<b>MOZILLA EXTENSIONS INFORMATION (by dickvl@kb.mozillazine.org)</b><br>'+today+
<b>MOZILLA ADD-ONS INFORMATION (by dickvl@kb.mozillazine.org)</b><p>'+today+'</p>'+
'</p><p>
makeTABLE("Extensions",thead,tdivE) + makeTABLE("Themes",thead,tdivT)+'
<table style="empty-cells: show; background-color: rgb(221, 255, 221);" border="1" cellspacing="0">
</body></html>',"", "menubar=yes,toolbar=no,resizable=yes,scrollbars=yes,width=1000,height=700");
<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>
</pre>

Revision as of 19:03, 27 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 and themes - dickvl@kb.mozillazine.org
*/
(function () {
var Cc = Components.classes;
var Ci = Components.interfaces;
var EMP = "http://www.mozilla.org/2004/em-rdf#";
var rv = {}; rv.ext = []; rv.the = [];

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(elt,res){
 try{
     return(ds.GetTarget(elt,rdf.GetResource(EMP+res),true).QueryInterface(Ci.nsIRDFLiteral).Value);
 } catch(e){return("")}
}

function makeRV(elt,rv){
 var nam = rdfGS(elt,"name");
 var ver = rdfGS(elt,"version");
 var dis = rdfGS(elt,"isDisabled");
 var hom = rdfGS(elt,"homepageURL");
 rv.push({name:nam,id:elt.Value.replace(/^urn:mozilla:item:/,""),vers:ver,dis:dis,home:hom});
return(rv);
}

function makeLIST(rv){
 var list="",i,RV;
 for (i=0;RV=rv[i];i++) {
  var name = RV.name;
  var vers = RV.vers;
  var disab = (RV.dis=="true")?"(disabled)":"";
  var home = RV.home;
  list+="<a href=" + home + "><span>" + name + " </span><span> " + vers + " </span></a><span> " + disab + " </span></br>";
 }
return(list);
}

while (elts.hasMoreElements()) {
 var elt = elts.getNext().QueryInterface(Ci.nsIRDFResource);
 if (ds.HasAssertion(elt,rdf.GetResource(EMP+"type"),rdf.GetIntLiteral(2),true)){
  makeRV(elt,rv.ext); 
 }
 if (ds.HasAssertion(elt,rdf.GetResource(EMP+"type"),rdf.GetIntLiteral(4),true)){
  makeRV(elt,rv.the);
 }
}

var extList="<p><b>Extensions:</b><br>"+makeLIST(rv.ext)+"</p>";
var theList="<p><b>Themes:</b><br>"+makeLIST(rv.the)+"</p>";

window.open('data:text/html,
<html><head>
<meta http-equiv=content-type" content="text/html; charset=ISO-8859-1">
<title>Mozilla Extensions</title>
</head><body style="margin: 1em 3em; background-color: rgb(255, 221, 221);">
' + extList + theList + '
</body></html>',
"", "menubar=yes,toolbar=no,scrollbars=yes,resizable=yes,width=1000,height=600");
})();
/* 
 *To display the installed extensions and themes 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 = {}; rv.ext = []; rv.the = [];

/* 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 Page","Comp.","Inst.Loc"];
var TCONT = (prompt("Columns:\n\n1:Name\n2:Version\n3:Disabled  4:(U|A)\n5:ID\n6:Description\n7:Home Page\n","1 2 3"));
TCONT=((TCONT==null || TCONT=="")?"1 2 3":TCONT).split(" ");

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(elt,res){
 try{
  return(ds.GetTarget(elt,rdf.GetResource(EMP+res),true).QueryInterface(Ci.nsIRDFLiteral).Value);
 }catch(e){return("")}
}

function makeTD(rv){
var i,j,DV,RV,TC,td="";
for (i=0;RV=rv[i];i++) {
  td+="<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":((RV.comp=="false")?"No":"");break;
   case 9: DV=RV.inst;break;
   default: DV="";break;
  } td+="<td>"+DV+"</td>";
 }
 td+="</tr>";
}
return(td);
}

function makeRV(elt,rv){
 var nam = rdfGS(elt,"name");
 var ver = rdfGS(elt,"version");
 var des = rdfGS(elt,"description");
 var dis = rdfGS(elt,"isDisabled");
 var ads = rdfGS(elt,"appDisabled");
 var uds = rdfGS(elt,"userDisabled");
 var hom = rdfGS(elt,"homepageURL");
 var com = rdfGS(elt,"compatible");
 var ins = rdfGS(elt,"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});
return(rv);
}

while (elts.hasMoreElements()){
 var elt = elts.getNext().QueryInterface(Ci.nsIRDFResource);
 if(isExt=ds.HasAssertion(elt,rdf.GetResource(EMP+"type"),rdf.GetIntLiteral(2),true)){
  makeRV(elt,rv.ext);
 }
 if(isExt=ds.HasAssertion(elt,rdf.GetResource(EMP+"type"),rdf.GetIntLiteral(4),true)){
  makeRV(elt,rv.the);
 }
}

var thead="";
for(j=0;TC=TCONT[j];j++){thead+="<td><b>"+(THEAD[(TC<THEAD.length)?TC:0])+"</b></td>";}

var tdivE = makeTD(rv.ext);
var tdivT = makeTD(rv.the);

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;

function makeTABLE(label,thead,tcont){
return('<p><b>'+label+':</b><br>
<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>'+
tcont+'</tbody></table></p>');
}

window.open('data:text/html,
<html><head>
<meta http-equiv=content-type" content="text/html; charset=ISO-8859-1">
<title>Mozilla Extensions & Themes</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 ADD-ONS INFORMATION (by dickvl@kb.mozillazine.org)</b><p>'+today+'</p>'+
makeTABLE("Extensions",thead,tdivE) + makeTABLE("Themes",thead,tdivT)+'
</body></html>',"", "menubar=yes,toolbar=no,resizable=yes,scrollbars=yes,width=1000,height=700");
})();