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 »

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: 7929
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 »

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: 7929
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 »

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 »

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 »

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: 10847
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 »

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: 10847
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 »

^^ 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: 10847
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 »

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: 10847
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 »

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: 10847
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 »

@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: 7929
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 »

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: 10847
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 »

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: 7929
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 »

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: 10847
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 »

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: 7929
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 »

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