JSView 2.0.5-mod for SeaMonkey 2.0+ and Firefox 3.5+

General discussion about web technology.
Alan Baxter
Ambassador
Posts: 1586
Joined: Fri Mar 20, 2009 4:47 am
Location: Colorado, USA

JSView 2.0.5-mod for SeaMonkey 2.0+ and Firefox 3.5+

Post by Alan Baxter » Wed Jan 20, 2010 5:22 am

Philip Chee has modified JSView so all its features work properly in SeaMonkey 2.0+ and Firefox 3.5+.

http://forums.mozillazine.org/viewtopic ... &t=1704235
Philip Chee wrote:http://xsidebar.mozdev.org/modifiedmisc.html#jsview
JSView appears to have been abandoned by the author. It hasn't been updated since July 2008. I have taken the latest version from https://addons.mozilla.org/ and updated it for SeaMonkey 2.0+ and Firefox 3.5+.

Install JSview for Seamonkey 2.0 and Firefox 3.5+
jsview-2.0.5-mod.xpi

Updates:
  • [fix] Make JSView page info panes work in SeaMonkey 2.0 and Firefox 3.5.
  • [fix] Missing (??) file sizes in the JSView UI.

Known issues:
  • I don't have suitable graphics for the selector buttons in the Firefox PageInfo window so all you get is the generic squished PageInfo button.
Phil
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7

User avatar
therube
Ambassador
Posts: 7519
Joined: Thu Mar 19, 2009 4:17 pm
Location: Maryland USA

Re: JSView 2.0.5-mod for SeaMonkey 2.0+ and Firefox 3.5+

Post by therube » Wed Jan 20, 2010 9:34 pm

Good! I'll have to try it out :-).

It was our thread here, Find out where script is in source?, that prompted me to ask for an update, http://forums.mozillazine.org/viewtopic ... 5#p8314705.
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.19) Gecko/20110420 SeaMonkey/2.0.14 Pinball NoScript FlashGot AdblockPlus
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20100104 SeaMonkey/2.0.2

User avatar
therube
Ambassador
Posts: 7519
Joined: Thu Mar 19, 2009 4:17 pm
Location: Maryland USA

Re: JSView 2.0.5-mod for SeaMonkey 2.0+ and Firefox 3.5+

Post by therube » Wed Jan 20, 2010 9:38 pm

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.19) Gecko/20110420 SeaMonkey/2.0.14 Pinball NoScript FlashGot AdblockPlus
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20100104 SeaMonkey/2.0.2

Alan Baxter
Ambassador
Posts: 1586
Joined: Fri Mar 20, 2009 4:47 am
Location: Colorado, USA

Re: JSView 2.0.5-mod for SeaMonkey 2.0+ and Firefox 3.5+

Post by Alan Baxter » Thu Jan 21, 2010 4:17 am

therube wrote:that prompted me to ask for an update

Good for you! And thanks for asking Philip for the update. The features he fixed for Fx 3.5+ may be useful to me sometime.
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7

User avatar
computerfreaker
Senior Member
Posts: 220
Joined: Wed Sep 16, 2009 10:03 pm
Location: USA

Re: JSView 2.0.5-mod for SeaMonkey 2.0+ and Firefox 3.5+

Post by computerfreaker » Thu Jan 21, 2010 11:07 am

therube wrote:It was our thread here, Find out where script is in source?, that prompted me to ask for an update, http://forums.mozillazine.org/viewtopic ... 5#p8314705.

Thanks for requesting an update! I'll be collecting that ASAP!
With great power comes great responsibility.
Learn something new every day, and the rest will take care of itself.
Life is a journey, not a destination. Enjoy the trip!
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7

barbaz
Senior Member
Posts: 9321
Joined: Sat Aug 03, 2013 5:45 pm

Re: JSView 2.0.5-mod for SeaMonkey 2.0+ and Firefox 3.5+

Post by barbaz » Wed Mar 12, 2014 2:41 am

Sorry to bump such an old thread but since the 2.0.8-mod available on http://xsidebar.mozdev.org/modifiedmisc.html#jsview is currently the only available JSView and it's buggy in modern browsers, figured I should share how I've patched the mod. This will fix the bug where clicking some JS/CSS in the menu would load http://undefined/ instead of the requested source file, and restore missing file sizes in Gecko 18+ (size doesn't display on Mac OS X menus other than context, probably can't fix there :( ).

Code: Select all

diff -r jsv208mod/chrome/content/jsview/jsviewExternal.js jsv21mod/chrome/content/jsview/jsviewExternal.js
96c96
<           webBrowserPersist.saveURI(uri, null, null, null, null, file);
---
>           webBrowserPersist.saveURI(uri, null, null, null, null, file, null);
278c278
< };
\ No newline at end of file
---
> };
diff -r jsv208mod/chrome/content/jsview/jsviewOverlay.js jsv21mod/chrome/content/jsview/jsviewOverlay.js
275a276,297
>    makeCacheListener: function(tag, filesize) {
>       var kb = jsvutils.getStr('jsview.KB');
>       var bytes = jsvutils.getStr('jsview.Bytes');
>       let cacheListener = {
>          tag: tag,
>          onCacheEntryAvailable: function(entry, accessGranted, status)
>          {
>             if (!entry) return;
>             let size = '';
>             if (filesize) {
>                size = ' (' + (entry.dataSize / 1024).toFixed(2) + ' ' + kb + ')';
>             } else {
>                size = ' (' + jsvutils.addCommas(entry.dataSize) + ' ' + bytes + ')';
>             }
>             let e = document.getElementById("jsview-"+this.tag);
>             e.setAttribute("label", e.getAttribute("label")+size);
>          },
>          onCacheEntryDoomed: function(status) {}
>       };
>       return cacheListener;
>    },
>
289c311,312
<       var done = jsvutils.getStr('jsview.Done');
---
>       //var done = jsvutils.getStr('jsview.Done');
>       var done = "";
293,294d315
<       var kb = jsvutils.getStr('jsview.KB');
<       var bytes = jsvutils.getStr('jsview.Bytes');
324,329c345
<             entry = cache.openCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, false);
<             if (filesize) {
<                size = ' (' + (entry.dataSize / 1024).toFixed(2) + ' ' + kb + ')';
<             } else {
<                size = ' (' + jsvutils.addCommas(entry.dataSize) + ' ' + bytes + ')';
<             }
---
>             cache.asyncOpenCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, jsview.makeCacheListener(cacheKey, filesize));
331c347
<             size = '';
---
>             Components.utils.reportError(e);
335c351,352
<               ['label',fname + size],
---
>               ['id','jsview-'+cacheKey],
>               ['label',fname],
339,341c356,358
<               ['oncommand','jsvutils.viewSource(this.value,4);'],
<               ['onclick','jsvutils.promptBehavior(event,this.parentNode,this.value);'],
<               ['onmouseover','window.content.status = this.value;'],
---
>               ['oncommand','jsvutils.viewSource("'+js[i].spec+'",4);'],
>               ['onclick','jsvutils.promptBehavior(event,this.parentNode,"'+js[i].spec+'");'],
>               ['onmouseover','window.content.status = "'+js[i].spec+'";'],
375,380c392
<             entry = cache.openCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, false);
<             if (filesize) {
<                size = ' (' + (entry.dataSize / 1024).toFixed(2) + ' ' + kb + ')';
<             } else {
<                size = ' (' + jsvutils.addCommas(entry.dataSize) + ' ' + bytes + ')';
<             }
---
>             cache.asyncOpenCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, jsview.makeCacheListener(cacheKey, filesize));
382c394
<             size = '';
---
>             Components.utils.reportError(e);
386c398,399
<               ['label',fname + size],
---
>               ['id','jsview-'+cacheKey],
>               ['label',fname],
390,392c403,405
<               ['oncommand','jsvutils.viewSource(this.value,4);'],
<               ['onclick','jsvutils.promptBehavior(event,this.parentNode,this.value);'],
<               ['onmouseover','window.content.status = this.value;'],
---
>               ['oncommand','jsvutils.viewSource("'+css[i].spec+'",4);'],
>               ['onclick','jsvutils.promptBehavior(event,this.parentNode,'+css[i].spec+');'],
>               ['onmouseover','window.content.status = "'+css[i].spec+'";'],
diff -r jsv208mod/chrome/content/jsview/jsviewPageInfo.js jsv21mod/chrome/content/jsview/jsviewPageInfo.js
63a64,84
>    makeCacheListener: function(tag, filesize) {
>       var kb = jsvutils.getStr('jsview.KB');
>       var bytes = jsvutils.getStr('jsview.Bytes');
>       let cacheListener = {
>          tag: tag,
>          onCacheEntryAvailable: function(entry, accessGranted, status)
>          {
>             if (!entry) return;
>             if (filesize) {
>                size = (entry.dataSize / 1024).toFixed(2) + ' ' + kb;
>             } else {
>                size = jsvutils.addCommas(entry.dataSize) + ' ' + bytes;
>             }
>             let e = document.getElementById("jsview-pginfo-"+this.tag);
>             e.setAttribute("label", size);
>          },
>          onCacheEntryDoomed: function(status) {}
>       };
>       return cacheListener;
>    },
>
65c86
<       var url,size,cacheKey,entry;
---
>       var url,size,cacheKey,entry,item;
70,73d90
<       //get string translations
<       var kb = jsvutils.getStr('jsview.KB');
<       var bytes = jsvutils.getStr('jsview.Bytes');
<
90,95c107
<             entry = cache.openCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, false);
<             if (filesize) {
<                size = (entry.dataSize / 1024).toFixed(2) + ' ' + kb;
<             } else {
<                size = jsvutils.addCommas(entry.dataSize) + ' ' + bytes;
<             }
---
>             cache.asyncOpenCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, jsviewPageInfo.makeCacheListener(cacheKey, filesize));
97d108
<             size = '??'; //display something to indicate size unknown
100c111,113
<          child.appendChild(this.createItem([url,size]));
---
>          item = this.createItem([url,'??']);
>          if (url == "about:srcdoc") item.setAttribute('jsview',i);
>          child.appendChild(item);
135a149
>             size = unk;
140,145c154
<                entry = cache.openCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, false);
<                if (filesize) {
<                   size = (entry.dataSize / 1024).toFixed(2) + ' ' + kb;
<                } else {
<                   size = jsvutils.addCommas(entry.dataSize) + ' ' + bytes;
<                }
---
>                cache.asyncOpenCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, jsviewPageInfo.makeCacheListener(cacheKey, filesize));
147d155
<                size = unk;
189a198
>             size = unk;
194,199c203
<                entry = cache.openCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, false);
<                if (filesize) {
<                   size = (entry.dataSize / 1024).toFixed(2) + ' ' + kb;
<                } else {
<                   size = jsvutils.addCommas(entry.dataSize) + ' ' + bytes;
<                }
---
>                cache.asyncOpenCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, jsviewPageInfo.makeCacheListener(cacheKey, filesize));
201c205
<                size = unk;
---
>                Components.utils.reportError(e);
218a223,224
>          // Size cells need an id.  Assume that cells is of the form [url,size].
>          if (i == 1) cell.setAttribute("id", "jsview-pginfo-"+cells[0]);
diff -r jsv208mod/chrome/content/jsview/jsviewViewSourceOverlay.js jsv21mod/chrome/content/jsview/jsviewViewSourceOverlay.js
233a234,255
>    makeCacheListener: function(tag, filesize) {
>       var kb = jsvutils.getStr('jsview.KB');
>       var bytes = jsvutils.getStr('jsview.Bytes');
>       let cacheListener = {
>          tag: tag,
>          onCacheEntryAvailable: function(entry, accessGranted, status)
>          {
>             if (!entry) return;
>             let size = '';
>             if (filesize) {
>                size = ' (' + (entry.dataSize / 1024).toFixed(2) + ' ' + kb + ')';
>             } else {
>                size = ' (' + jsvutils.addCommas(entry.dataSize) + ' ' + bytes + ')';
>             }
>             let e = document.getElementById("jsview-"+this.tag);
>             e.setAttribute("label", e.getAttribute("label")+size);
>          },
>          onCacheEntryDoomed: function(status) {}
>       };
>       return cacheListener;
>    },
>
251,252d272
<       var kb = jsvutils.getStr('jsview.KB');
<       var bytes = jsvutils.getStr('jsview.Bytes');
282,287c302
<             entry = cache.openCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, false);
<             if (filesize) {
<                size = ' (' + (entry.dataSize / 1024).toFixed(2) + ' ' + kb + ')';
<             } else {
<                size = ' (' + jsvutils.addCommas(entry.dataSize) + ' ' + bytes + ')';
<             }
---
>             cache.asyncOpenCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, jsviewViewSource.makeCacheListener(cacheKey, filesize));
289c304
<             size = '';
---
>             Components.utils.reportError(e);
292a308
>               ['id','jsview-'+cacheKey],
333,338c349
<             entry = cache.openCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, false);
<             if (filesize) {
<                size = ' (' + (entry.dataSize / 1024).toFixed(2) + ' ' + kb + ')';
<             } else {
<                size = ' (' + jsvutils.addCommas(entry.dataSize) + ' ' + bytes + ')';
<             }
---
>             cache.asyncOpenCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, jsviewViewSource.makeCacheListener(cacheKey, filesize));
340c351
<             size = '';
---
>             Components.utils.reportError(e);
343a355
>               ['id','jsview-'+cacheKey],

I also bumped the version in install.rdf to 2.1.
*Always* check the changelogs BEFORE updating that important software!
Mozilla/5.0 (X11; Linux i686; rv:30.0) Gecko/20100101 Firefox/30.0 SeaMonkey/2.27a1

barbaz
Senior Member
Posts: 9321
Joined: Sat Aug 03, 2013 5:45 pm

Re: JSView 2.0.5-mod for SeaMonkey 2.0+ and Firefox 3.5+

Post by barbaz » Thu Jun 12, 2014 2:32 am

^^ UPDATE: The downloadable version of JSView will not work *at all* in Gecko >= 32, and the above patches by Elbart and myself do not fix that. I've had some success in modifying JSView to make it work on an early SeaMonkey 2.30a1 (based on Gecko 33), all seems to be well atm but it needs more testing IMO. Watch this space, I'll post the new diff from Philip Chee's downloadable mod here soon once I'm more sure I've got everything working properly.
*Always* check the changelogs BEFORE updating that important software!
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:30.0) Gecko/20100101 Firefox/30.0 SeaMonkey/2.27a2

barbaz
Senior Member
Posts: 9321
Joined: Sat Aug 03, 2013 5:45 pm

Re: JSView 2.0.5-mod for SeaMonkey 2.0+ and Firefox 3.5+

Post by barbaz » Sat Jun 14, 2014 4:54 pm

Seems to be working fine, so here's the new diff. This patch set requires at least Gecko 27, and on Gecko < 32 you must set browser.cache.use_new_backend to 1 in about:config.

Code: Select all

Only in ./jsview-2.0.8-mod/chrome/content/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/content/jsview: jsviewAbout0.xul
Only in ./jsview-2.0.8-mod/chrome/content/jsview: jsviewCustomizeToolbarOverlay0.js
Only in ./jsview-2.0.8-mod/chrome/content/jsview: jsviewExternal0.js
diff -r ./jsview-2.0.8-mod/chrome/content/jsview/jsviewExternal.js ./jsview-2.1.1-mod/chrome/content/jsview/jsviewExternal.js
96c96
<           webBrowserPersist.saveURI(uri, null, null, null, null, file);
---
>           webBrowserPersist.saveURI(uri, null, null, null, null, file, null);
278c278
< };
\ No newline at end of file
---
> };
Only in ./jsview-2.0.8-mod/chrome/content/jsview: jsviewOverlay0.xul
diff -r ./jsview-2.0.8-mod/chrome/content/jsview/jsviewOverlay.js ./jsview-2.1.1-mod/chrome/content/jsview/jsviewOverlay.js
275a276,301
>    makeCacheListener: function(element, filesize) {
>       var kb = jsvutils.getStr('jsview.KB');
>       var bytes = jsvutils.getStr('jsview.Bytes');
>       let cacheListener = {
>          element: element,
>          onCacheEntryAvailable: function(entry, accessGranted, status)
>          {
>             if (!entry) return;
>             let size = '';
>             if (filesize) {
>                size = ' (' + (entry.dataSize / 1024).toFixed(2) + ' ' + kb + ')';
>             } else {
>                size = ' (' + jsvutils.addCommas(entry.dataSize) + ' ' + bytes + ')';
>             }
>             this.element.setAttribute("label", this.element.getAttribute("label")+size);
>             // try to avoid memory leaks..
>             this.element = null;
>          },
>          onCacheEntryCheck: function()
>          {
>             return Components.interfaces.nsICacheEntryOpenCallback.ENTRY_WANTED;
>          }
>       };
>       return cacheListener;
>    },
>
289c315,316
<       var done = jsvutils.getStr('jsview.Done');
---
>       //var done = jsvutils.getStr('jsview.Done');
>       var done = "";
293,294d319
<       var kb = jsvutils.getStr('jsview.KB');
<       var bytes = jsvutils.getStr('jsview.Bytes');
321,333c346
<          //get filesize for url if cached
<          cacheKey = js[i].spec.replace(/#.*$/,'');
<          try {
<             entry = cache.openCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, false);
<             if (filesize) {
<                size = ' (' + (entry.dataSize / 1024).toFixed(2) + ' ' + kb + ')';
<             } else {
<                size = ' (' + jsvutils.addCommas(entry.dataSize) + ' ' + bytes + ')';
<             }
<          } catch(e) {
<             size = '';
<          }
<
---
>          //create the element...
335c348
<               ['label',fname + size],
---
>               ['label',fname],
339,341c352,354
<               ['oncommand','jsvutils.viewSource(this.value,4);'],
<               ['onclick','jsvutils.promptBehavior(event,this.parentNode,this.value);'],
<               ['onmouseover','window.content.status = this.value;'],
---
>               ['oncommand','jsvutils.viewSource("'+js[i].spec+'",4);'],
>               ['onclick','jsvutils.promptBehavior(event,this.parentNode,"'+js[i].spec+'");'],
>               ['onmouseover','window.content.status = "'+js[i].spec+'";'],
344c357,367
<          menu.appendChild(this.makeElement(attrs));
---
>          let e = this.makeElement(attrs);
>
>          //get filesize for url if cached
>          cacheKey = js[i].spec.replace(/#.*$/,'');
>          try {
>             cache.asyncOpenURI(js[i], "", Components.interfaces.nsICacheStorage.OPEN_READONLY, jsview.makeCacheListener(e, filesize));
>          } catch(ex) {
>             Components.utils.reportError(ex);
>          }
>
>          menu.appendChild(e);
372,384c395
<          //get filesize for url if cached
<          cacheKey = css[i].spec.replace(/#.*$/,'');
<          try {
<             entry = cache.openCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, false);
<             if (filesize) {
<                size = ' (' + (entry.dataSize / 1024).toFixed(2) + ' ' + kb + ')';
<             } else {
<                size = ' (' + jsvutils.addCommas(entry.dataSize) + ' ' + bytes + ')';
<             }
<          } catch(e) {
<             size = '';
<          }
<
---
>          // make the element...
386c397
<               ['label',fname + size],
---
>               ['label',fname],
390,392c401,403
<               ['oncommand','jsvutils.viewSource(this.value,4);'],
<               ['onclick','jsvutils.promptBehavior(event,this.parentNode,this.value);'],
<               ['onmouseover','window.content.status = this.value;'],
---
>               ['oncommand','jsvutils.viewSource("'+css[i].spec+'",4);'],
>               ['onclick','jsvutils.promptBehavior(event,this.parentNode,"'+css[i].spec+'");'],
>               ['onmouseover','window.content.status = "'+css[i].spec+'";'],
395c406,416
<          menu.appendChild(this.makeElement(attrs));
---
>          let e = this.makeElement(attrs);
>
>          //get filesize for url if cached
>          cacheKey = css[i].spec.replace(/#.*$/,'');
>          try {
>             cache.asyncOpenURI(css[i], "", Components.interfaces.nsICacheStorage.OPEN_READONLY, jsview.makeCacheListener(e, filesize));
>          } catch(ex) {
>             Components.utils.reportError(ex);
>          }
>
>          menu.appendChild(e);
Only in ./jsview-2.0.8-mod/chrome/content/jsview: jsviewPageInfo0.js
diff -r ./jsview-2.0.8-mod/chrome/content/jsview/jsviewPageInfo.js ./jsview-2.1.1-mod/chrome/content/jsview/jsviewPageInfo.js
63a64,89
>    makeCacheListener: function(ancestor, filesize) {
>       var kb = jsvutils.getStr('jsview.KB');
>       var bytes = jsvutils.getStr('jsview.Bytes');
>       let cacheListener = {
>          ancestor: ancestor,
>          onCacheEntryAvailable: function(entry, accessGranted, status)
>          {
>             if (!entry) return;
>             if (filesize) {
>                size = (entry.dataSize / 1024).toFixed(2) + ' ' + kb;
>             } else {
>                size = jsvutils.addCommas(entry.dataSize) + ' ' + bytes;
>             }
>             let e = this.ancestor.getElementsByClassName("jsview-pginfo-size")[0];
>             e.setAttribute("label", size);
>             // try to prevent memory leaks
>             this.ancestor = null;
>          },
>          onCacheEntryCheck: function()
>          {
>             return Components.interfaces.nsICacheEntryOpenCallback.ENTRY_WANTED;
>          }
>       };
>       return cacheListener;
>    },
>
65c91
<       var url,size,cacheKey,entry;
---
>       var url,size,entry,item;
70,73d95
<       //get string translations
<       var kb = jsvutils.getStr('jsview.KB');
<       var bytes = jsvutils.getStr('jsview.Bytes');
<
86a109,110
>          item = this.createItem([url,'??']);
>          if (url == "about:srcdoc") item.setAttribute('jsview',i);
89,95c113
<             cacheKey = url.replace(/#.*$/,'');
<             entry = cache.openCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, false);
<             if (filesize) {
<                size = (entry.dataSize / 1024).toFixed(2) + ' ' + kb;
<             } else {
<                size = jsvutils.addCommas(entry.dataSize) + ' ' + bytes;
<             }
---
>             cache.asyncOpenURI(jsvutils.getURI(url), "", Components.interfaces.nsICacheStorage.OPEN_READONLY, jsviewPageInfo.makeCacheListener(item, filesize));
97d114
<             size = '??'; //display something to indicate size unknown
100c117
<          child.appendChild(this.createItem([url,size]));
---
>          child.appendChild(item);
105c122
<       var url,size,cacheKey,entry,item,index;
---
>       var url,size,entry,item,index;
134a152,153
>             item = this.createItem([url,size]);
>             item.setAttribute('jsview',i);
135a155,157
>             size = unk;
>             url = scripts[i];
>             item = this.createItem([url,size]);
137,138d158
<                url = scripts[i];
<                cacheKey = url.replace(/#.*$/,'');
140,145c160
<                entry = cache.openCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, false);
<                if (filesize) {
<                   size = (entry.dataSize / 1024).toFixed(2) + ' ' + kb;
<                } else {
<                   size = jsvutils.addCommas(entry.dataSize) + ' ' + bytes;
<                }
---
>                cache.asyncOpenURI(jsvutils.getURI(url), "", Components.interfaces.nsICacheStorage.OPEN_READONLY, jsviewPageInfo.makeCacheListener(item, filesize));
147d161
<                size = unk;
152,153d165
<          item = this.createItem([url,size]);
<          if (url == embd) item.setAttribute('jsview',i);
159c171
<       var url,size,cacheKey,entry,item,index;
---
>       var url,size,entry,item,index;
188a201,202
>             item = this.createItem([url,size]);
>             item.setAttribute('jsview',i);
189a204,206
>             size = unk;
>             url = sheets[i];
>             item = this.createItem([url,size]);
191,192d207
<                url = sheets[i];
<                cacheKey = url.replace(/#.*$/,'');
194,199c209
<                entry = cache.openCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, false);
<                if (filesize) {
<                   size = (entry.dataSize / 1024).toFixed(2) + ' ' + kb;
<                } else {
<                   size = jsvutils.addCommas(entry.dataSize) + ' ' + bytes;
<                }
---
>                cache.asyncOpenURI(jsvutils.getURI(url), "", Components.interfaces.nsICacheStorage.OPEN_READONLY, jsviewPageInfo.makeCacheListener(item, filesize));
201c211
<                size = unk;
---
>                Components.utils.reportError(e);
205,206d214
<          item = this.createItem([url,size]);
<          if (url == embd) item.setAttribute('jsview',i);
218a227,228
>          // Size cells need a class.  Assume that each entry in cells is of the form [url,size].
>          if (i == 1) cell.setAttribute("class", "jsview-pginfo-size");
Only in ./jsview-2.0.8-mod/chrome/content/jsview: jsviewPageInfoOverlayFF0.xul
Only in ./jsview-2.0.8-mod/chrome/content/jsview: jsviewUtils0.js
diff -r ./jsview-2.0.8-mod/chrome/content/jsview/jsviewUtils.js ./jsview-2.1.1-mod/chrome/content/jsview/jsviewUtils.js
27a28
> Components.utils.import("resource://gre/modules/Services.jsm");
80,84c81,85
<       var cache = Components.classes["@mozilla.org/network/cache-service;1"].
<       getService(Components.interfaces.nsICacheService).
<       createSession("HTTP", 0, true);
<       cache.doomEntriesIfExpired = false;
<       return cache;
---
>       let LoadContextInfo = Components.utils.import("resource://gre/modules/LoadContextInfo.jsm", {});
>       var cache = Components.classes["@mozilla.org/netwerk/cache-storage-service;1"].
>       getService(Components.interfaces.nsICacheStorageService).
>       diskCacheStorage(LoadContextInfo.default, false);
>       return cache;
Only in ./jsview-2.0.8-mod/chrome/content/jsview: jsviewViewSourceOverlay0.js
diff -r ./jsview-2.0.8-mod/chrome/content/jsview/jsviewViewSourceOverlay.js ./jsview-2.1.1-mod/chrome/content/jsview/jsviewViewSourceOverlay.js
233a234,258
>    makeCacheListener: function(element, filesize) {
>       var kb = jsvutils.getStr('jsview.KB');
>       var bytes = jsvutils.getStr('jsview.Bytes');
>       let cacheListener = {
>          element: element,
>          onCacheEntryAvailable: function(entry, accessGranted, status)
>          {
>             if (!entry) return;
>             let size = '';
>             if (filesize) {
>                size = ' (' + (entry.dataSize / 1024).toFixed(2) + ' ' + kb + ')';
>             } else {
>                size = ' (' + jsvutils.addCommas(entry.dataSize) + ' ' + bytes + ')';
>             }
>             this.element.setAttribute("label", this.element.getAttribute("label")+size);
>             this.element = null;
>          },
>          onCacheEntryCheck: function()
>          {
>             return Components.interfaces.nsICacheEntryOpenCallback.ENTRY_WANTED;
>          }
>       };
>       return cacheListener;
>    },
>
251,252d275
<       var kb = jsvutils.getStr('jsview.KB');
<       var bytes = jsvutils.getStr('jsview.Bytes');
279,291c302
<          //get filesize for url if cached
<          cacheKey = js[i].spec.replace(/#.*$/,'');
<          try {
<             entry = cache.openCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, false);
<             if (filesize) {
<                size = ' (' + (entry.dataSize / 1024).toFixed(2) + ' ' + kb + ')';
<             } else {
<                size = ' (' + jsvutils.addCommas(entry.dataSize) + ' ' + bytes + ')';
<             }
<          } catch(e) {
<             size = '';
<          }
<
---
>          // create the element...
293c304
<               ['label',fname + size],
---
>               ['label',fname],
297,299c308,310
<               ['oncommand','jsvutils.viewSource(this.value,4);'],
<               ['onclick','jsvutils.promptBehavior(event,this.parentNode,this.value);'],
<               ['onmouseover','jsviewViewSource.showStatusText(this.value);'],
---
>               ['oncommand','jsvutils.viewSource("'+js[i].spec+'",4);'],
>               ['onclick','jsvutils.promptBehavior(event,this.parentNode,"'+js[i].spec+'");'],
>               ['onmouseover','jsviewViewSource.showStatusText("'+js[i].spec+'");'],
302c313,323
<          menu.appendChild(this.makeElement(attrs));
---
>          let e = this.makeElement(attrs);
>
>          //get filesize for url if cached
>          cacheKey = js[i].spec.replace(/#.*$/,'');
>          try {
>             cache.asyncOpenURI(js[i], "", Components.interfaces.nsICache.OPEN_READONLY, jsviewViewSource.makeCacheListener(e, filesize));
>          } catch(ex) {
>             Components.utils.reportError(ex);
>          }
>
>          menu.appendChild(e);
330,342c351
<          //get filesize for url if cached
<          cacheKey = css[i].spec.replace(/#.*$/,'');
<          try {
<             entry = cache.openCacheEntry(cacheKey, Components.interfaces.nsICache.ACCESS_READ, false);
<             if (filesize) {
<                size = ' (' + (entry.dataSize / 1024).toFixed(2) + ' ' + kb + ')';
<             } else {
<                size = ' (' + jsvutils.addCommas(entry.dataSize) + ' ' + bytes + ')';
<             }
<          } catch(e) {
<             size = '';
<          }
<
---
>          // create the element...
344c353
<               ['label',fname + size],
---
>               ['label',fname],
348,350c357,359
<               ['oncommand','jsvutils.viewSource(this.value,4);'],
<               ['onclick','jsvutils.promptBehavior(event,this.parentNode,this.value);'],
<               ['onmouseover','jsviewViewSource.showStatusText(this.value);'],
---
>               ['oncommand','jsvutils.viewSource("'+css[i].spec+'",4);'],
>               ['onclick','jsvutils.promptBehavior(event,this.parentNode,"'+css[i].spec+'");'],
>               ['onmouseover','jsviewViewSource.showStatusText("'+css[i].spec+'");'],
353c362,372
<          menu.appendChild(this.makeElement(attrs));
---
>          let e = this.makeElement(attrs);
>
>          //get filesize for url if cached
>          cacheKey = css[i].spec.replace(/#.*$/,'');
>          try {
>             cache.asyncOpenURI(css[i], "", Components.interfaces.nsICache.OPEN_READONLY, jsviewViewSource.makeCacheListener(e, filesize));
>          } catch(e) {
>             Components.utils.reportError(e);
>          }
>
>          menu.appendChild(e);
Only in ./jsview-2.0.8-mod/chrome: jsview.jar
Only in ./jsview-2.0.8-mod/chrome/locale/be-BY/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/ca-AD/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/cs-CZ/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/de/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/de-CH/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/en-US/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/es-ES/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/fa-IR/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/fr/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/hr-HR/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/hu-HU/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/it-IT/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/ja-JP/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/ko-KR/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/nl/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/pl/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/pl-PL/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/pt-BR/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/pt-PT/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/ro-RO/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/ru-RU/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/sv-SE/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/tr-TR/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/uk-UA/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/zh-CN/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/locale/zh-TW/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/skin/classic/jsview: contents.rdf
Only in ./jsview-2.0.8-mod/chrome/skin/classic/jsview: jsviewStyle0.css
diff -r ./jsview-2.0.8-mod/chrome.manifest ./jsview-2.1.1-mod/chrome.manifest
11c11
< content   jsview   jar:chrome/jsview.jar!/content/jsview/
---
> content   jsview   chrome/content/jsview/
13c13
< skin   jsview   classic/1.0   jar:chrome/jsview.jar!/skin/classic/jsview/
---
> skin   jsview   classic/1.0   chrome/skin/classic/jsview/
15,39c15,39
< locale   jsview   be-BY   jar:chrome/jsview.jar!/locale/be-BY/jsview/
< locale   jsview   ca-AD   jar:chrome/jsview.jar!/locale/ca-AD/jsview/
< locale   jsview   cs-CZ   jar:chrome/jsview.jar!/locale/cs-CZ/jsview/
< locale   jsview   de   jar:chrome/jsview.jar!/locale/de/jsview/
< locale   jsview   de-CH   jar:chrome/jsview.jar!/locale/de-CH/jsview/
< locale   jsview   en-US   jar:chrome/jsview.jar!/locale/en-US/jsview/
< locale   jsview   es-ES   jar:chrome/jsview.jar!/locale/es-ES/jsview/
< locale   jsview   fa-IR   jar:chrome/jsview.jar!/locale/fa-IR/jsview/
< locale   jsview   fr   jar:chrome/jsview.jar!/locale/fr/jsview/
< locale   jsview   hr-HR   jar:chrome/jsview.jar!/locale/hr-HR/jsview/
< locale   jsview   hu-HU   jar:chrome/jsview.jar!/locale/hu-HU/jsview/
< locale   jsview   it-IT   jar:chrome/jsview.jar!/locale/it-IT/jsview/
< locale   jsview   ja-JP   jar:chrome/jsview.jar!/locale/ja-JP/jsview/
< locale   jsview   ko-KR   jar:chrome/jsview.jar!/locale/ko-KR/jsview/
< locale   jsview   nl   jar:chrome/jsview.jar!/locale/nl/jsview/
< locale   jsview   pl   jar:chrome/jsview.jar!/locale/pl/jsview/
< locale   jsview   pt-BR   jar:chrome/jsview.jar!/locale/pt-BR/jsview/
< locale   jsview   pt-PT   jar:chrome/jsview.jar!/locale/pt-PT/jsview/
< locale   jsview   ro-RO   jar:chrome/jsview.jar!/locale/ro-RO/jsview/
< locale   jsview   ru-RU   jar:chrome/jsview.jar!/locale/ru-RU/jsview/
< locale   jsview   sv-SE   jar:chrome/jsview.jar!/locale/sv-SE/jsview/
< locale   jsview   tr-TR   jar:chrome/jsview.jar!/locale/tr-TR/jsview/
< locale   jsview   uk-UA   jar:chrome/jsview.jar!/locale/uk-UA/jsview/
< locale   jsview   zh-CN   jar:chrome/jsview.jar!/locale/zh-CN/jsview/
< locale   jsview   zh-TW   jar:chrome/jsview.jar!/locale/zh-TW/jsview/
---
> locale   jsview   be-BY   chrome/locale/be-BY/jsview/
> locale   jsview   ca-AD   chrome/locale/ca-AD/jsview/
> locale   jsview   cs-CZ   chrome/locale/cs-CZ/jsview/
> locale   jsview   de   chrome/locale/de/jsview/
> locale   jsview   de-CH   chrome/locale/de-CH/jsview/
> locale   jsview   en-US   chrome/locale/en-US/jsview/
> locale   jsview   es-ES   chrome/locale/es-ES/jsview/
> locale   jsview   fa-IR   chrome/locale/fa-IR/jsview/
> locale   jsview   fr   chrome/locale/fr/jsview/
> locale   jsview   hr-HR   chrome/locale/hr-HR/jsview/
> locale   jsview   hu-HU   chrome/locale/hu-HU/jsview/
> locale   jsview   it-IT   chrome/locale/it-IT/jsview/
> locale   jsview   ja-JP   chrome/locale/ja-JP/jsview/
> locale   jsview   ko-KR   chrome/locale/ko-KR/jsview/
> locale   jsview   nl   chrome/locale/nl/jsview/
> locale   jsview   pl   chrome/locale/pl/jsview/
> locale   jsview   pt-BR   chrome/locale/pt-BR/jsview/
> locale   jsview   pt-PT   chrome/locale/pt-PT/jsview/
> locale   jsview   ro-RO   chrome/locale/ro-RO/jsview/
> locale   jsview   ru-RU   chrome/locale/ru-RU/jsview/
> locale   jsview   sv-SE   chrome/locale/sv-SE/jsview/
> locale   jsview   tr-TR   chrome/locale/tr-TR/jsview/
> locale   jsview   uk-UA   chrome/locale/uk-UA/jsview/
> locale   jsview   zh-CN   chrome/locale/zh-CN/jsview/
> locale   jsview   zh-TW   chrome/locale/zh-TW/jsview/
Only in ./jsview-2.0.8-mod: chrome.old.manifest
Only in ./jsview-2.0.8-mod: install.js
Only in ./jsview-2.0.8-mod: install.old.rdf
diff -r ./jsview-2.0.8-mod/install.rdf ./jsview-2.1.1-mod/install.rdf
9,10c9,10
<       <em:name>JSView</em:name>
<       <em:version>2.0.8</em:version>
---
>       <em:name>JSView (Remake)</em:name>
>       <em:version>2.1.1</em:version>
12a13,14
>       <em:developer>Philip Chee</em:developer>
>       <em:developer>barbaz</em:developer>
17,68d18
<       <!--<em:updateURL>http://forum.softwareblaze.com/jsview/update.rdf</em:updateURL>-->
<
<       <em:file>
<          <Description about="urn:mozilla:extension:file:jsview.jar">
<             <em:package>content/jsview/</em:package>
<             <em:skin>skin/classic/jsview/</em:skin>
<
<             <em:locale>locale/be-BY/jsview/</em:locale>
<             <em:locale>locale/ca-AD/jsview/</em:locale>
<             <em:locale>locale/cs-CZ/jsview/</em:locale>
<             <em:locale>locale/de/jsview/</em:locale>
<             <em:locale>locale/de-CH/jsview/</em:locale>
<             <em:locale>locale/en-US/jsview/</em:locale>
<             <em:locale>locale/es-ES/jsview/</em:locale>
<             <em:locale>locale/fa-IR/jsview/</em:locale>
<             <em:locale>locale/fr/jsview/</em:locale>
<             <em:locale>locale/hr-HR/jsview/</em:locale>
<             <em:locale>locale/hu-HU/jsview/</em:locale>
<             <em:locale>locale/it-IT/jsview/</em:locale>
<             <em:locale>locale/ja-JP/jsview/</em:locale>
<             <em:locale>locale/ko-KR/jsview/</em:locale>
<             <em:locale>locale/nl/jsview/</em:locale>
<             <em:locale>locale/pl/jsview/</em:locale>
<             <em:locale>locale/pt-BR/jsview/</em:locale>
<             <em:locale>locale/pt-PT/jsview/</em:locale>
<             <em:locale>locale/ro-RO/jsview/</em:locale>
<             <em:locale>locale/ru-RU/jsview/</em:locale>
<             <em:locale>locale/sv-SE/jsview/</em:locale>
<             <em:locale>locale/tr-TR/jsview/</em:locale>
<             <em:locale>locale/uk-UA/jsview/</em:locale>
<             <em:locale>locale/zh-CN/jsview/</em:locale>
<             <em:locale>locale/zh-TW/jsview/</em:locale>
<          </Description>
<       </em:file>
<       
<       <!-- Mozilla Firefox -->
<       <em:targetApplication>
<          <Description>
<             <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<             <em:minVersion>3.0</em:minVersion>
<             <em:maxVersion>20.*</em:maxVersion>
<          </Description>
<       </em:targetApplication>
<
<       <!-- Flock -->
<       <em:targetApplication>
<          <Description>
<             <em:id>{a463f10c-3994-11da-9945-000d60ca027b}</em:id>
<             <em:minVersion>1.1</em:minVersion>
<             <em:maxVersion>2.6.*</em:maxVersion>
<          </Description>
<       </em:targetApplication>
74c24
<             <em:minVersion>2.0b1</em:minVersion>
---
>             <em:minVersion>2.24</em:minVersion>
79,88c29
<       <!-- Netscape -->
<       <!--<em:targetApplication>
<          <Description>
<             <em:id>{3db10fab-e461-4c80-8b97-957ad5f8ea47}</em:id>
<             <em:minVersion>9.0</em:minVersion>
<             <em:maxVersion>9.0.*</em:maxVersion>
<          </Description>
<       </em:targetApplication>-->
<
<       <!-- Songbird -->
---
>       <!-- Generic toolkit -->
91,93c32,34
<             <em:id>songbird@songbirdnest.com</em:id>
<             <em:minVersion>1.8</em:minVersion>
<             <em:maxVersion>2.*</em:maxVersion>
---
>             <em:id>toolkit@mozilla.org</em:id>
>             <em:minVersion>27.0</em:minVersion>
>             <em:maxVersion>56.*</em:maxVersion>
Only in ./jsview-2.0.8-mod: jsview208.diff
Only in ./jsview-2.0.8-mod: mod-notes

(Although it may not be apparent from the diff, note that I got rid of the internal jar file in the new jsview and put its contents directly in the xpi.)
*Always* check the changelogs BEFORE updating that important software!
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:30.0) Gecko/20100101 Firefox/30.0 SeaMonkey/2.27a2

barbaz
Senior Member
Posts: 9321
Joined: Sat Aug 03, 2013 5:45 pm

Re: JSView 2.0.5-mod for SeaMonkey 2.0+ and Firefox 3.5+

Post by barbaz » Sat Jun 14, 2014 5:02 pm

And here's my full "plain-English" changelog up to this point, for any who are interested:

Code: Select all

Changelog for JSView post version 2.0.8 (Philip Chee mod - http://xsidebar.mozdev.org/modifiedmisc.html#jsview)

Version 2.1.1 (20140613):
 *** DROPPING SUPPORT FOR GECKO < 27 ***
 ** Gecko < 32: this addon now requires browser.cache.use_new_backend set to 1 **
 - Switch to HTTP cache v2 APIs
 - Fix oversight in jsviewViewSourceOverlay.js causing "undefined" to be appended to all filenames in the menu
 - Get rid of the jsview.jar file - no longer supporting Gecko versions for which it's helpful
 - Fix "missed spots" from prior fixes

Version 2.1 (20131229):
 - Fix file sizes not working on Gecko >= 18
 - Remove unused files
 - Set Firefox maxVersion to 18.*
 - Add "(Remake)" to addon name
 KNOWN ISSUES:
  - (Resolved 2.1.1?,CantFix this version) Size won't show on any menu but context in Mac OS X.

Version 2.0.9 (20130420):
 - Removed the persistent and annoying "Done" text
 - Added Philip Chee and me as developers
 - Fixed view menu on Mac OS X returning "undefined" as the URL of external JS and CSS
 - Applied suggested fix for external editor not working
*Always* check the changelogs BEFORE updating that important software!
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:30.0) Gecko/20100101 Firefox/30.0 SeaMonkey/2.27a2

barbaz
Senior Member
Posts: 9321
Joined: Sat Aug 03, 2013 5:45 pm

Re: JSView 2.0.5-mod for SeaMonkey 2.0+ and Firefox 3.5+

Post by barbaz » Sun Aug 24, 2014 9:38 pm

@therube (or anyone else with a MozillaZine account as I don't have one atm): Think it's worth notifying Philip Chee about my latest diff here? Gecko 32 is going to hit release sometime next week or so, and currently there won't be any downloadable JSView XPI which works *at all* OOB with it. (I don't have time to deal with putting one out there myself.)
*Always* check the changelogs BEFORE updating that important software!
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:31.0) Gecko/20100101 SeaMonkey/2.28

User avatar
therube
Ambassador
Posts: 7519
Joined: Thu Mar 19, 2009 4:17 pm
Location: Maryland USA

Re: JSView 2.0.5-mod for SeaMonkey 2.0+ and Firefox 3.5+

Post by therube » Mon Aug 25, 2014 11:06 am

Host the xpi somewhere & I'll note the link over at mozillazine.
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.19) Gecko/20110420 SeaMonkey/2.0.14 Pinball NoScript FlashGot AdblockPlus
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0 SeaMonkey/2.29

barbaz
Senior Member
Posts: 9321
Joined: Sat Aug 03, 2013 5:45 pm

Re: JSView 2.0.5-mod for SeaMonkey 2.0+ and Firefox 3.5+

Post by barbaz » Mon Aug 25, 2014 3:49 pm

therube wrote:Host the xpi somewhere & I'll note the link over at mozillazine.

Unfortunately I have neither a world-accessible server nor time to set up an account anywhere :(
*Always* check the changelogs BEFORE updating that important software!
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:31.0) Gecko/20100101 SeaMonkey/2.28

User avatar
therube
Ambassador
Posts: 7519
Joined: Thu Mar 19, 2009 4:17 pm
Location: Maryland USA

Re: JSView 2.0.5-mod for SeaMonkey 2.0+ and Firefox 3.5+

Post by therube » Mon Aug 25, 2014 4:55 pm

I didn't mean a place for you to host it, just a place so someone (I) can download the modded xpi version from.

And from there I'll put it on googledocs or similar.
And I'll leave it up to Phil if he wishes to host it on mozdev.
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.19) Gecko/20110420 SeaMonkey/2.0.14 Pinball NoScript FlashGot AdblockPlus
Mozilla/5.0 (Windows NT 5.1; rv:32.0) Gecko/20100101 SeaMonkey/2.29

barbaz
Senior Member
Posts: 9321
Joined: Sat Aug 03, 2013 5:45 pm

Re: JSView 2.0.5-mod for SeaMonkey 2.0+ and Firefox 3.5+

Post by barbaz » Mon Aug 25, 2014 6:21 pm

therube wrote:put it on googledocs

Well, I've already got a Google account so that should work in theory.
How to upload a file to Google so that only you & I have access? I really don't want to "permanently" host the XPI.
*Always* check the changelogs BEFORE updating that important software!
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:31.0) Gecko/20100101 SeaMonkey/2.28

User avatar
therube
Ambassador
Posts: 7519
Joined: Thu Mar 19, 2009 4:17 pm
Location: Maryland USA

Re: JSView 2.0.5-mod for SeaMonkey 2.0+ and Firefox 3.5+

Post by therube » Mon Aug 25, 2014 8:35 pm

Set the share to [only those who know the URL] (or whatever it says) & pm me the link. I'll download & leave a message here so you can cancel the share.
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.19) Gecko/20110420 SeaMonkey/2.0.14 Pinball NoScript FlashGot AdblockPlus
Mozilla/5.0 (Windows NT 5.1; rv:32.0) Gecko/20100101 SeaMonkey/2.29

Post Reply