From flyson @ users.sourceforge.jp Sat Oct 8 02:16:35 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sat, 8 Oct 2005 02:16:35 +0900 Subject: [Bbs2ch-cvs 20] CVS update: bbs2chreader/content/bbs2chreader Message-ID: <20051007171635.8C77B2AC01B@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/abone.js diff -u bbs2chreader/content/bbs2chreader/abone.js:1.4 bbs2chreader/content/bbs2chreader/abone.js:1.5 --- bbs2chreader/content/bbs2chreader/abone.js:1.4 Mon Feb 14 22:02:00 2005 +++ bbs2chreader/content/bbs2chreader/abone.js Sat Oct 8 02:16:35 2005 @@ -178,7 +178,7 @@ function checkAbone(aNgArray, aCheckString){ aCheckString = Bbs2chGlobal.fromSJIS(aCheckString); for(var i=0; i Index: bbs2chreader/components/nsBbs2chChannel.js diff -u bbs2chreader/components/nsBbs2chChannel.js:1.3 bbs2chreader/components/nsBbs2chChannel.js:1.4 --- bbs2chreader/components/nsBbs2chChannel.js:1.3 Fri Sep 9 20:48:27 2005 +++ bbs2chreader/components/nsBbs2chChannel.js Sat Oct 8 02:26:27 2005 @@ -40,7 +40,6 @@ } nsBbs2chChannel.prototype = { - QueryInterface: function(aIID){ if(aIID.equals(Components.interfaces.nsIBbs2chChannel)) return this; if(aIID.equals(Components.interfaces.nsIChannel)) return this; @@ -162,7 +161,13 @@ requestRespond: function(aData, aDataLength){ if(!this._cacheMode){ - this._cacheOutputStream.write(aData, aDataLength); + try{ + this._cacheOutputStream.write(aData, aDataLength); + }catch(ex){ + this._cacheOutputStream.close(); + this._cacheEntry.close(); + this._cacheMode = true; + } } this._stringStream.setData(aData, aDataLength); From flyson @ users.sourceforge.jp Sun Oct 9 03:39:43 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sun, 9 Oct 2005 03:39:43 +0900 Subject: [Bbs2ch-cvs 22] CVS update: bbs2chreader Message-ID: <20051008183943.D0F732AC00E@users.sourceforge.jp> Index: bbs2chreader/install.rdf diff -u bbs2chreader/install.rdf:1.11 bbs2chreader/install.rdf:1.12 --- bbs2chreader/install.rdf:1.11 Fri Sep 9 20:49:21 2005 +++ bbs2chreader/install.rdf Sun Oct 9 03:39:43 2005 @@ -5,7 +5,7 @@ bbs2chreader {0B9D558E-6983-486b-9AAD-B6CBCD2FC807} - 0.2.6 + 0.2.6+ 2ch(Japanese Web Forum) Reader chrome://bbs2chreader/content/settings/settings.xul http://bbs2ch.sourceforge.jp/ @@ -17,7 +17,7 @@ {ec8030f7-c20a-464f-9b0e-13a3a9e97384} 1.0 - 1.4 + 1.4.1 From flyson @ users.sourceforge.jp Tue Oct 11 22:17:31 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Tue, 11 Oct 2005 22:17:31 +0900 Subject: [Bbs2ch-cvs 23] CVS update: bbs2chreader/content/bbs2chreader Message-ID: <20051011131731.6CAC92AC014@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/board-items.js diff -u bbs2chreader/content/bbs2chreader/board-items.js:1.10 bbs2chreader/content/bbs2chreader/board-items.js:1.11 --- bbs2chreader/content/bbs2chreader/board-items.js:1.10 Tue Aug 23 22:09:42 2005 +++ bbs2chreader/content/bbs2chreader/board-items.js Tue Oct 11 22:17:31 2005 @@ -320,11 +320,12 @@ search: function(aSearchString){ if(!this._lastItems) this._lastItems = this.items.concat(); - + aSearchString = aSearchString.toLowerCase(); + var resultItems = new Array(); for(var i=0; i Index: bbs2chreader/content/bbs2chreader/test/thread-test.js diff -u /dev/null bbs2chreader/content/bbs2chreader/test/thread-test.js:1.1 --- /dev/null Sun Oct 16 11:05:25 2005 +++ bbs2chreader/content/bbs2chreader/test/thread-test.js Sun Oct 16 11:05:25 2005 @@ -0,0 +1,218 @@ +/* + case "thread:": + tmpChannel = Components.classes["@mozilla.org/bbs2ch-channel;1"] + .createInstance(Components.interfaces.nsIBbs2chChannel); + tmpChannel.init(aURI, "text/plain", "Shift_JIS", + new b2rThreadFactory().create(aURI)); + break; + +*/ + + +function b2rThreadFactory(){ +} + +b2rThreadFactory.prototype = { + + create: function(aThreadURI){ + var bbs2chService = Components.classes["@mozilla.org/bbs2ch-service;1"] + .getService(Components.interfaces.nsIBbs2chService); + var ioService = Components.classes["@mozilla.org/network/io-service;1"] + .getService(Components.interfaces.nsIIOService); + + var threadURLSpec = aThreadURI.spec.replace(/^bbs2ch:thread-test:/, ""); + try{ + var threadURL = ioService.newURI(threadURLSpec, null, null) + .QueryInterface(Components.interfaces.nsIURL); + }catch(ex){ + return new b2rThread(); + } + + // 板のタイプをチェック + var threadType = bbs2chService.getBoardType(threadURL.spec); + switch(threadType){ + case bbs2chService.BOARD_TYPE_2CH: + return new b2r2chThread(); + case bbs2chService.BOARD_TYPE_JBBS: + return new b2rJbbsThread(); + } + return new b2rThread(); + } + +} + + + + +function b2rThread(){ +} + +b2rThread.prototype = { + init: function(aChannel){ + this._channel = aChannel; + this._bbs2chService = Components.classes["@mozilla.org/bbs2ch-service;1"] + .getService(Components.interfaces.nsIBbs2chService); + this._ioService = Components.classes["@mozilla.org/network/io-service;1"] + .getService(Components.interfaces.nsIIOService); + + this.startThread(); + }, + + startThread: function(){ + var threadURLSpec = this._channel.URI.spec.replace(/^bbs2ch:thread-test:/, ""); + this.requestRespond("BAD URL :\t" + threadURLSpec); + this.requestEnd(); + }, + + requestRespond: function(aString){ + aString = String(aString); + this._channel.requestRespond(aString, aString.length); + }, + + requestEnd: function(){ + this._channel.requestEnd(); + } +} + + + + +function b2r2chThread(){ +} + +b2r2chThread.prototype = { + +// ********** ********* プロパティ ********** ********** + + get threadURL(){ + return this._threadURL; + }, + + get boardURL(){ + return this._boardURL; + }, + + get type(){ + return this._type; + }, + + get datURL(){ + if(!this._datURL){ + var datURLSpec = this.boardURL.resolve("dat/" + this.datID + ".dat"); + this._datURL = this._ioService.newURI(datURLSpec, null, null) + .QueryInterface(Components.interfaces.nsIURL); + } + return this._datURL; + }, + + get datFile(){ + return this._datFile; + }, + + get idxFile(){ + return this._idxFile; + }, + + get datID(){ + if(!this._datID) + this._datID = this.threadURL.directory.match(/\/(\d{9,10})/) ? RegExp.$1 : null; + return this._datID; + }, + + get title(){ + return this._title; + }, + + get optionsStart(){ + return (this.threadURL.fileName.match(/(\d+)\-/)) ? RegExp.$1 : null; + }, + get optionsLast(){ + return (this.threadURL.fileName.match(/l(\d+)/)) ? RegExp.$1 : null; + }, + get optionsEnd(){ + return (this.threadURL.fileName.match(/\-(\d+)/)) ? RegExp.$1 : null; + }, + get optionsNoFirst(){ + return (this.threadURL.fileName.indexOf("n") != -1); + }, + + +// ********** ********* メソッド ********** ********** + + + startThread: function(){ + + // threadURL + var threadURLSpec = this._channel.URI.spec.replace(/^bbs2ch:thread-test:/, ""); + this._threadURL = this._ioService.newURI(threadURLSpec, null, null) + .QueryInterface(Components.interfaces.nsIURL); + // URL が、DAT ID で終わるときは "/" を追加する + if(this.threadURL.fileName.match(/^\d{9,10}$/)) + this._threadURL = this._ioService.newURI(threadURLSpec + "/", null, null) + .QueryInterface(Components.interfaces.nsIURL); + this._boardURL = this._bbs2chService.getBoardURL(this.threadURL.spec); + this._type = this._bbs2chService.getBoardType(this.threadURL.spec); + this._datFile = this._bbs2chService.getLogFileAtURL( + this.boardURL.resolve(this.datID + ".dat")); + this._idxFile = this._bbs2chService.getLogFileAtURL( + this.boardURL.resolve(this.datID + ".idx")); + + // idx ファイルからタイトル等を取得 + if(this.idxFile.exists()){ + var idxContent = this._bbs2chService.readFile(this.idxFile.path); + + this._title = idxContent.match(/^title=(.+)/m) ? RegExp.$1 : ""; + this._lineCount = idxContent.match(/^lineCount=(.+)/m) ? Number(RegExp.$1) : 0; + this._lastModified = idxContent.match(/^lastModified=(.+)/m) ? RegExp.$1 : ""; + this._eTag = idxContent.match(/^etag=(.+)/m) ? RegExp.$1 : ""; + }else{ + this._title = ""; + this._lineCount = 0; + this._lastModified = ""; + this._eTag = ""; + } + + this.requestRespond("Thread URL : " + this.threadURL.spec + "\n"); + this.requestRespond("Board URL : " + this.boardURL.spec + "\n"); + this.requestRespond("DAT URL : " + this.datURL.spec + "\n"); + this.requestRespond("Type : " + this.type + "\n"); + this.requestRespond("DAT ID : " + this.datID + "\n"); + this.requestRespond("DAT File : " + this.datFile.path + "\n"); + this.requestRespond("IDX File : " + this.idxFile.path + "\n"); + this.requestRespond("----- ----- -----\n"); + this.requestRespond("Title : " + this.title + "\n"); + this.requestRespond("LineCount : " + this._lineCount + "\n"); + this.requestRespond("LastModified : " + this._lastModified + "\n"); + this.requestRespond("ETag : " + this._eTag + "\n"); + this.requestRespond("----- ----- -----\n"); + this.requestRespond("URL Options \n"); + this.requestRespond(" Start : " + this.optionsStart + "\n"); + this.requestRespond(" Last : " + this.optionsLast + "\n"); + this.requestRespond(" End : " + this.optionsEnd + "\n"); + this.requestRespond(" NoFirst : " + this.optionsNoFirst + "\n"); + this.requestEnd(); + } + +} +b2r2chThread.prototype.__proto__ = b2rThread.prototype; + + + + +function b2rJbbsThread(){ +} + +b2rJbbsThread.prototype = { + + get datURL(){ + if(!this._datURL){ + var datURLSpec = this.threadURL.resolve("./").replace("read.cgi", "rawmode.cgi"); + this._datURL = this._ioService.newURI(datURLSpec, null, null) + .QueryInterface(Components.interfaces.nsIURL); + } + return this._datURL; + }, + +} +b2rJbbsThread.prototype.__proto__ = b2r2chThread.prototype; + From flyson @ users.sourceforge.jp Sun Oct 16 11:05:25 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sun, 16 Oct 2005 11:05:25 +0900 Subject: [Bbs2ch-cvs 25] CVS update: bbs2chreader/components Message-ID: <20051016020525.E7DD32AC025@users.sourceforge.jp> Index: bbs2chreader/components/nsBbs2chProtocolHandler.js diff -u bbs2chreader/components/nsBbs2chProtocolHandler.js:1.4 bbs2chreader/components/nsBbs2chProtocolHandler.js:1.5 --- bbs2chreader/components/nsBbs2chProtocolHandler.js:1.4 Sat Sep 17 04:36:51 2005 +++ bbs2chreader/components/nsBbs2chProtocolHandler.js Sun Oct 16 11:05:25 2005 @@ -95,6 +95,13 @@ .createInstance(Components.interfaces.nsIBbs2chChannel); tmpChannel.init(aURI, "text/html", "Shift_JIS", new Bbs2chThread()); break; + case "thread-test:" : + this._subScrLoader.loadSubScript("chrome://bbs2chreader/content/test/thread-test.js"); + var threadFactory = new b2rThreadFactory(); + tmpChannel = Components.classes["@mozilla.org/bbs2ch-channel;1"] + .createInstance(Components.interfaces.nsIBbs2chChannel); + tmpChannel.init(aURI, "text/plain", "Shift_JIS", threadFactory.create(aURI)); + break; case "board-rss:" : tmpChannel = Components.classes["@mozilla.org/bbs2ch-channel;1"] .createInstance(Components.interfaces.nsIBbs2chChannel); From flyson @ users.sourceforge.jp Mon Oct 17 22:19:33 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Mon, 17 Oct 2005 22:19:33 +0900 Subject: [Bbs2ch-cvs 26] CVS update: bbs2chreader/content/bbs2chreader/res Message-ID: <20051017131933.256142AC02F@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/res/outside.txt diff -u bbs2chreader/content/bbs2chreader/res/outside.txt:1.1 bbs2chreader/content/bbs2chreader/res/outside.txt:1.2 --- bbs2chreader/content/bbs2chreader/res/outside.txt:1.1 Sat Feb 5 21:53:10 2005 +++ bbs2chreader/content/bbs2chreader/res/outside.txt Mon Oct 17 22:19:33 2005 @@ -1,10 +1,12 @@ # ?????? # URL???????????????? -# ????????? -# type-2ch 2ch ? BBS -# type-machi ??BBS -# type-jbbs livedoor ???? -# type-page ??y?? +# 0 = 2ch ? BBS +# 1 = ? 2ch ? BBS (???) +# 2 = Be @ 2ch BBS +# 3 = livedoor ???? BBS +# 4 = ??BBS (???) +# 5 = ??y?? # -http://bbs2ch.sourceforge.jp/ bbs2chreader ??? type-page -http://jbbs.livedoor.jp/computer/351/ Monazilla @ JBBS type-jbbs +http://bbs2ch.sourceforge.jp/ bbs2chreader ??? 5 +http://yy22.kakiko.com/bbs2ch/ bbs2ch ???? 0 +http://jbbs.livedoor.jp/computer/351/ Monazilla @ JBBS 3 From flyson @ users.sourceforge.jp Mon Oct 17 22:19:33 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Mon, 17 Oct 2005 22:19:33 +0900 Subject: [Bbs2ch-cvs 27] CVS update: bbs2chreader/content/bbs2chreader Message-ID: <20051017131933.477592AC043@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/bbsmenu-ds.js diff -u bbs2chreader/content/bbs2chreader/bbsmenu-ds.js:1.10 bbs2chreader/content/bbs2chreader/bbsmenu-ds.js:1.11 --- bbs2chreader/content/bbs2chreader/bbsmenu-ds.js:1.10 Tue Sep 27 21:22:14 2005 +++ bbs2chreader/content/bbs2chreader/bbsmenu-ds.js Mon Oct 17 22:19:33 2005 @@ -114,7 +114,7 @@ var outsideContainer = this.rdf.makeSeqContainer("urn:bbs2ch:bbsmenu:outside-board"); this.rdf.setLiteralProperty(outsideContainer.Resource, NS_BBS2CH + "title", "OUTSIDE"); - var regOutsideLine = /^(http:\/\/.*)\t(.+)\t(type-.+)/; + var regOutsideLine = /^(http:\/\/.*)\t(.+)\t(\d)/; // 外部板リストが存在しないときはテンプレートから作る if(!this.outsideFile.exists()){ var templateContent = this._bbs2chService.readLocalURI( From flyson @ users.sourceforge.jp Thu Oct 20 22:30:31 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Thu, 20 Oct 2005 22:30:31 +0900 Subject: [Bbs2ch-cvs 28] CVS update: bbs2chreader/content/bbs2chreader Message-ID: <20051020133031.694B02AC035@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/board-page.js diff -u bbs2chreader/content/bbs2chreader/board-page.js:1.21 bbs2chreader/content/bbs2chreader/board-page.js:1.22 --- bbs2chreader/content/bbs2chreader/board-page.js:1.21 Sat Aug 6 01:55:06 2005 +++ bbs2chreader/content/bbs2chreader/board-page.js Thu Oct 20 22:30:31 2005 @@ -73,7 +73,7 @@ // ツリーの偶数行に色をつける if(gBbs2chService.pref.getBoolPref("fls.bbs2chreader.enable_tree_stripe")) - gTreeSubject.setAttribute("stripe", "true"); + gTreeSubject.setAttribute("stripe", "true"); if(gBbs2chService.pref.getBoolPref("fls.bbs2chreader.board_auto_update")){ subjectUpdate(); @@ -608,13 +608,16 @@ treeNode.hidden = false; }, - getRowProperties: function(aIndex, aProperties){}, + getRowProperties: function(aIndex, aProperties){ + var status = "s" + this._items[aIndex].status; + aProperties.AppendElement(this._atomService.getAtom(status)); + }, getCellProperties: function(aRow, aColID, aProperties){ if(typeof(aColID) != "string") aColID = aColID.id; // XXX Gecko 1.7/1.8 互換 + var status = "s" + this._items[aRow].status; + aProperties.AppendElement(this._atomService.getAtom(status)); if(aColID =="colStatus"){ - var status = "s" + this._items[aRow].status; aProperties.AppendElement(this._atomService.getAtom("icon")); - aProperties.AppendElement(this._atomService.getAtom(status)); } }, getColumnProperties: function(aColID, aColElement, aProperties){}, From flyson @ users.sourceforge.jp Thu Oct 20 22:53:36 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Thu, 20 Oct 2005 22:53:36 +0900 Subject: [Bbs2ch-cvs 29] CVS update: bbs2chreader/content/bbs2chreader Message-ID: <20051020135336.E72502AC035@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/board-page.js diff -u bbs2chreader/content/bbs2chreader/board-page.js:1.22 bbs2chreader/content/bbs2chreader/board-page.js:1.23 --- bbs2chreader/content/bbs2chreader/board-page.js:1.22 Thu Oct 20 22:30:31 2005 +++ bbs2chreader/content/bbs2chreader/board-page.js Thu Oct 20 22:53:36 2005 @@ -130,10 +130,14 @@ } } function sortFunc(aItemA, aItemB){ - return(aItemA[sortProperty] - aItemB[sortProperty]); + var propA = aItemA[sortProperty]; + var propB = aItemB[sortProperty]; + return((propA > propB) - (propA < propB)); } function reverseFunc(aItemA, aItemB){ - return(aItemB[sortProperty] - aItemA[sortProperty]); + var propA = aItemA[sortProperty]; + var propB = aItemB[sortProperty]; + return((propB > propA) - (propB < propA)); } if(sortCol && sortDirection=="ascending") gBoardItems.items.sort(sortFunc); if(sortCol && sortDirection=="descending") gBoardItems.items.sort(reverseFunc); @@ -596,10 +600,14 @@ } function sortFunc(aItemA, aItemB){ - return(aItemA[property] - aItemB[property]); + var propA = aItemA[property]; + var propB = aItemB[property]; + return((propA > propB) - (propA < propB)); } function reverseFunc(aItemA, aItemB){ - return(aItemB[property] - aItemA[property]); + var propA = aItemA[property]; + var propB = aItemB[property]; + return((propB > propA) - (propB < propA)); } treeNode.hidden = true; From flyson @ users.sourceforge.jp Sat Oct 22 13:14:14 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sat, 22 Oct 2005 13:14:14 +0900 Subject: [Bbs2ch-cvs 30] CVS update: bbs2chreader/content/bbs2chreader/res Message-ID: <20051022041414.AF5E52AC00E@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/res/outside.txt diff -u bbs2chreader/content/bbs2chreader/res/outside.txt:1.2 bbs2chreader/content/bbs2chreader/res/outside.txt:1.3 --- bbs2chreader/content/bbs2chreader/res/outside.txt:1.2 Mon Oct 17 22:19:33 2005 +++ bbs2chreader/content/bbs2chreader/res/outside.txt Sat Oct 22 13:14:14 2005 @@ -1,12 +1,12 @@ # ?????? # URL???????????????? -# 0 = 2ch ? BBS -# 1 = ? 2ch ? BBS (???) -# 2 = Be @ 2ch BBS -# 3 = livedoor ???? BBS -# 4 = ??BBS (???) -# 5 = ??y?? +# type-2ch = 2ch ? BBS +# type-old2ch = ? 2ch ? BBS (???) +# type-be2ch = Be @ 2ch BBS +# type-jbbs = livedoor ???? BBS +# type-machi = ??BBS (???) +# type-page = ??y?? # -http://bbs2ch.sourceforge.jp/ bbs2chreader ??? 5 -http://yy22.kakiko.com/bbs2ch/ bbs2ch ???? 0 -http://jbbs.livedoor.jp/computer/351/ Monazilla @ JBBS 3 +http://bbs2ch.sourceforge.jp/ bbs2chreader ??? type-page +http://yy22.kakiko.com/bbs2ch/ bbs2ch ???? type-2ch +http://jbbs.livedoor.jp/computer/351/ Monazilla @ JBBS type-jbbs From flyson @ users.sourceforge.jp Sat Oct 22 13:14:14 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sat, 22 Oct 2005 13:14:14 +0900 Subject: [Bbs2ch-cvs 31] CVS update: bbs2chreader/content/bbs2chreader Message-ID: <20051022041414.CDF052AC0D9@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/bbsmenu-ds.js diff -u bbs2chreader/content/bbs2chreader/bbsmenu-ds.js:1.11 bbs2chreader/content/bbs2chreader/bbsmenu-ds.js:1.12 --- bbs2chreader/content/bbs2chreader/bbsmenu-ds.js:1.11 Mon Oct 17 22:19:33 2005 +++ bbs2chreader/content/bbs2chreader/bbsmenu-ds.js Sat Oct 22 13:14:14 2005 @@ -114,7 +114,6 @@ var outsideContainer = this.rdf.makeSeqContainer("urn:bbs2ch:bbsmenu:outside-board"); this.rdf.setLiteralProperty(outsideContainer.Resource, NS_BBS2CH + "title", "OUTSIDE"); - var regOutsideLine = /^(http:\/\/.*)\t(.+)\t(\d)/; // 外部板リストが存在しないときはテンプレートから作る if(!this.outsideFile.exists()){ var templateContent = this._bbs2chService.readLocalURI( @@ -123,12 +122,24 @@ } var outsideLines = this._bbs2chService.readFile(this.outsideFile.path); outsideLines = this._bbs2chService.fromSJIS(outsideLines).split("\n"); + + var regOutsideLine = /^(http:\/\/.*)\t(.+)\t(type-.+)/; + var typeHash = new Array(); + typeHash["type-2ch"] = 0; + typeHash["type-old2ch"] = 1; + typeHash["type-be2ch"] = 2; + typeHash["type-jbbs"] = 3; + typeHash["type-machi"] = 4; + typeHash["type-page"] = 5; for(var i=0; i Index: bbs2chreader/content/bbs2chreader/test/thread-test.js diff -u bbs2chreader/content/bbs2chreader/test/thread-test.js:1.1 bbs2chreader/content/bbs2chreader/test/thread-test.js:1.2 --- bbs2chreader/content/bbs2chreader/test/thread-test.js:1.1 Sun Oct 16 11:05:25 2005 +++ bbs2chreader/content/bbs2chreader/test/thread-test.js Sun Oct 23 21:14:10 2005 @@ -190,15 +190,148 @@ this.requestRespond(" Last : " + this.optionsLast + "\n"); this.requestRespond(" End : " + this.optionsEnd + "\n"); this.requestRespond(" NoFirst : " + this.optionsNoFirst + "\n"); + this.requestRespond("----- ----- -----\n\n"); + this.datDownload(); + }, + + datDownload: function(){ + var httpChannel = this._ioService.newChannelFromURI(this.datURL) + .QueryInterface(Components.interfaces.nsIHttpChannel); + httpChannel.requestMethod = "GET"; + httpChannel.redirectionLimit = 0; // 302 等のリダイレクトを行わない + httpChannel.loadFlags = httpChannel.LOAD_BYPASS_CACHE; + httpChannel.setRequestHeader("User-Agent", this._bbs2chService.userAgent, false); + + // 差分GET + if(this.datFile.exists() && this._lastModified){ + httpChannel.setRequestHeader("Accept-Encoding", "identity", false); + httpChannel.setRequestHeader("If-Modified-Since", this._lastModified, false); + httpChannel.setRequestHeader("Range", "bytes=" + this.datFile.fileSize + "-", false); + } + + this.wrappedJSObject = this; + httpChannel.asyncOpen(this.httpListener, this); + }, + + httpListener: { + onStartRequest: function(aRequest, aContext){ + aRequest.QueryInterface(Components.interfaces.nsIHttpChannel); + + this._bInputStream = Components.classes["@mozilla.org/binaryinputstream;1"] + .createInstance(Components.interfaces.nsIBinaryInputStream); + this._data = new Array(); + + aContext.wrappedJSObject.onStartRequest(aRequest); + }, + + onDataAvailable: function (aRequest, aContext, aInputStream, aOffset, aCount){ + aRequest.QueryInterface(Components.interfaces.nsIHttpChannel); + + this._bInputStream.setInputStream(aInputStream); + var availableData = this._bInputStream.readBytes(aCount); + // NULL 文字 + availableData = availableData.replace(/\x00/g, "*"); + // 変換前の DAT を保存しておく + this._data.push(availableData); + + aContext.wrappedJSObject.onDataAvailable(aRequest, + availableData, aRequest.responseStatus); + }, + + onStopRequest: function(aRequest, aContext, aStatus){ + aRequest.QueryInterface(Components.interfaces.nsIHttpChannel); + aContext.wrappedJSObject.onStopRequest(aRequest, + this._data.join(""), aRequest.responseStatus); + this._data = null; + } + }, + + onStartRequest: function(aHttpChannel){ + this._datBuffer = ""; + }, + onDataAvailable: function(aHttpChannel, aAvailableData, aHttpStatus){ + if(!(aHttpStatus==200 || aHttpStatus==206)) return; + + var availableData = this._datBuffer + aAvailableData; + // 改行を含まないならバッファに追加して終了 + if(!availableData.match(/\n/)){ + this._datBuffer = availableData; + return; + } + + // 取得した DAT を行ごとに配列にし、最後の行をバッファに追加 + var datLines = availableData.split("\n"); + this._datBuffer = (datLines.length>1) ? datLines.pop() : ""; + + // DAT を 変換して書き出す + for(var i=0; i tmpLineCount){ + // .dat の書き込み + this._bbs2chService.writeFile(this.datFile.path, aDatContent, true); + + // .idx の書き込み + var idxContent = new Array(); + if(this.title) idxContent.push("title=" + this.title); + if(this._lineCount) idxContent.push("lineCount=" + this._lineCount); + if(this._lastModified) idxContent.push("lastModified=" + this._lastModified); + if(this._eTag) idxContent.push("etag=" + this._eTag); + idxContent = idxContent.join("\n"); + this._bbs2chService.writeFile(this.idxFile.path, idxContent, false); + } + } } b2r2chThread.prototype.__proto__ = b2rThread.prototype; + + function b2rJbbsThread(){ } From flyson @ users.sourceforge.jp Thu Oct 27 00:16:00 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Thu, 27 Oct 2005 00:16:00 +0900 Subject: [Bbs2ch-cvs 33] CVS update: bbs2chreader Message-ID: <20051026151600.110472AC012@users.sourceforge.jp> Index: bbs2chreader/install.rdf diff -u bbs2chreader/install.rdf:1.12 bbs2chreader/install.rdf:1.13 --- bbs2chreader/install.rdf:1.12 Sun Oct 9 03:39:43 2005 +++ bbs2chreader/install.rdf Thu Oct 27 00:15:59 2005 @@ -17,7 +17,7 @@ {ec8030f7-c20a-464f-9b0e-13a3a9e97384} 1.0 - 1.4.1 + 1.5.0.* From flyson @ users.sourceforge.jp Thu Oct 27 22:54:52 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Thu, 27 Oct 2005 22:54:52 +0900 Subject: [Bbs2ch-cvs 34] CVS update: bbs2chreader/content/bbs2chreader/test Message-ID: <20051027135452.E0F382AC00E@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/test/dat-test.js diff -u /dev/null bbs2chreader/content/bbs2chreader/test/dat-test.js:1.1 --- /dev/null Thu Oct 27 22:54:52 2005 +++ bbs2chreader/content/bbs2chreader/test/dat-test.js Thu Oct 27 22:54:52 2005 @@ -0,0 +1,160 @@ +/* ***** ??? IDL ***** + +#include "nsISupports.idl" + +interface nsIURL; +interface nsILocalFile; + +[scriptable, uuid(f4da0efe-dc42-48ae-8980-28a67896a780)] +interface b2rIDat : nsISupports +{ + readonly attribute nsIURL threadURL; + readonly attribute nsIURL boardURL; + readonly attribute nsIURL datURL; + readonly attribute unsigned long type; + readonly attribute nsILocalFile datFile; + readonly attribute nsILocalFile idxFile; + readonly attribute unsigned long id; + attribute AString title; + attribute unsigned long lineCount; + attribute ACString lastModified; + + void init(in nsIURL aThreadURL, in nsIURL aBoardURL, in unsigned long aType); + boolean flushIdx(); + AString readContent(); + boolean writeContent(in AString aContent); + boolean appendContent(in AString aContent); + boolean remove(); +} + + +[scriptable, uuid(25baecb4-ed4e-48c6-bfdb-e612d21a3af9)] +interface b2rI2chDat : b2rIDat +{ + readonly attribute nsIURL datURL; + readonly attribute unsigned long id; +} + +***** IDL ***** */ + + + + +function b2rDat(){ +} + +b2rDat.prototype = { + get threadURL(){ + return this._threadURL; + }, + + get boardURL(){ + return this._boardURL; + }, + + get datURL(){ + if(!this._datURL){ + var datURLSpec = this.boardURL.resolve("dat/" + this.id + ".dat"); + this._datURL = this._ioService.newURI(datURLSpec, null, null) + .QueryInterface(Components.interfaces.nsIURL); + } + return this._datURL; + }, + + get type(){ + return this._type; + }, + + get datFile(){ + return this._datFile; + }, + + get idxFile(){ + return this._idxFile; + }, + + get id(){ + if(!this._id) + this._id = this.threadURL.directory.match(/\/(\d{9,10})/) ? RegExp.$1 : null; + return this._id; + }, + + get title(){ + return this._title; + }, + set title(aValue){ + return this._title = aValue; + }, + + get lineCount(){ + return this._lineCount; + }, + set lineCount(aValue){ + return this._lineCount = aValue; + }, + + get lastModified(){ + return this._lastModified; + }, + set lastModified(aValue){ + return this._lastModified = aValue; + }, + + + init: function(aThreadURL, aBoardURL, aType){ + this._bbs2chService = Components.classes["@mozilla.org/bbs2ch-service;1"] + .getService(Components.interfaces.nsIBbs2chService); + this._ioService = Components.classes["@mozilla.org/network/io-service;1"] + .getService(Components.interfaces.nsIIOService); + + this._threadURL = aThreadURL; + + this._boardURL = (!aBoardURL) ? + this._bbs2chService.getBoardURL(this.threadURL.spec) : aBoardURL; + this._type = (isNaN(aType)) ? + this._bbs2chService.getBoardType(this.threadURL.spec) : aType; + + this._datFile = this._bbs2chService.getLogFileAtURL( + this.boardURL.resolve(this.id + ".dat")); + this._idxFile = this._bbs2chService.getLogFileAtURL( + this.boardURL.resolve(this.id + ".idx")); + + // idx ?????????????? + if(this.idxFile.exists()){ + var idxContent = this._bbs2chService.readFile(this.idxFile.path); + + this._title = idxContent.match(/^title=(.+)/m) ? RegExp.$1 : ""; + this._lineCount = idxContent.match(/^lineCount=(.+)/m) ? Number(RegExp.$1) : 0; + this._lastModified = idxContent.match(/^lastModified=(.+)/m) ? RegExp.$1 : ""; + }else{ + this._title = ""; + this._lineCount = 0; + this._lastModified = ""; + } + }, + + + flushIdx: function(){ + var idxContent = new Array(); + if(this.title) idxContent.push("title=" + this.title); + if(!isNaN(this.lineCount)) idxContent.push("lineCount=" + this.lineCount); + if(this.lastModified) idxContent.push("lastModified=" + this.lastModified); + idxContent = idxContent.join("\n"); + this._bbs2chService.writeFile(this.idxFile.path, idxContent, false); + }, + + + readContent: function(){ + return this._bbs2chService.readFile(this.datFile.path); + }, + + writeContent: function(aContent){ + this._bbs2chService.writeFile(this.datFile.path, aContent, false); + }, + + appendContent: function(aContent){ + this._bbs2chService.writeFile(this.datFile.path, aContent, true); + }, + + remove: function(){} +}; From flyson @ users.sourceforge.jp Thu Oct 27 22:56:17 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Thu, 27 Oct 2005 22:56:17 +0900 Subject: [Bbs2ch-cvs 35] CVS update: bbs2chreader/content/bbs2chreader/test Message-ID: <20051027135617.81AF42AC00E@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/test/thread-test.js diff -u bbs2chreader/content/bbs2chreader/test/thread-test.js:1.2 bbs2chreader/content/bbs2chreader/test/thread-test.js:1.3 --- bbs2chreader/content/bbs2chreader/test/thread-test.js:1.2 Sun Oct 23 21:14:10 2005 +++ bbs2chreader/content/bbs2chreader/test/thread-test.js Thu Oct 27 22:56:17 2005 @@ -96,33 +96,6 @@ return this._type; }, - get datURL(){ - if(!this._datURL){ - var datURLSpec = this.boardURL.resolve("dat/" + this.datID + ".dat"); - this._datURL = this._ioService.newURI(datURLSpec, null, null) - .QueryInterface(Components.interfaces.nsIURL); - } - return this._datURL; - }, - - get datFile(){ - return this._datFile; - }, - - get idxFile(){ - return this._idxFile; - }, - - get datID(){ - if(!this._datID) - this._datID = this.threadURL.directory.match(/\/(\d{9,10})/) ? RegExp.$1 : null; - return this._datID; - }, - - get title(){ - return this._title; - }, - get optionsStart(){ return (this.threadURL.fileName.match(/(\d+)\-/)) ? RegExp.$1 : null; }, @@ -152,38 +125,22 @@ .QueryInterface(Components.interfaces.nsIURL); this._boardURL = this._bbs2chService.getBoardURL(this.threadURL.spec); this._type = this._bbs2chService.getBoardType(this.threadURL.spec); - this._datFile = this._bbs2chService.getLogFileAtURL( - this.boardURL.resolve(this.datID + ".dat")); - this._idxFile = this._bbs2chService.getLogFileAtURL( - this.boardURL.resolve(this.datID + ".idx")); - - // idx ファイルからタイトル等を取得 - if(this.idxFile.exists()){ - var idxContent = this._bbs2chService.readFile(this.idxFile.path); - - this._title = idxContent.match(/^title=(.+)/m) ? RegExp.$1 : ""; - this._lineCount = idxContent.match(/^lineCount=(.+)/m) ? Number(RegExp.$1) : 0; - this._lastModified = idxContent.match(/^lastModified=(.+)/m) ? RegExp.$1 : ""; - this._eTag = idxContent.match(/^etag=(.+)/m) ? RegExp.$1 : ""; - }else{ - this._title = ""; - this._lineCount = 0; - this._lastModified = ""; - this._eTag = ""; - } + + this.dat = new b2rDat(); + this.dat.init(this.threadURL, this.boardURL, this._type); + this.requestRespond("Thread URL : " + this.threadURL.spec + "\n"); this.requestRespond("Board URL : " + this.boardURL.spec + "\n"); - this.requestRespond("DAT URL : " + this.datURL.spec + "\n"); this.requestRespond("Type : " + this.type + "\n"); - this.requestRespond("DAT ID : " + this.datID + "\n"); - this.requestRespond("DAT File : " + this.datFile.path + "\n"); - this.requestRespond("IDX File : " + this.idxFile.path + "\n"); + this.requestRespond("DAT URL : " + this.dat.datURL.spec + "\n"); + this.requestRespond("DAT ID : " + this.dat.id + "\n"); + this.requestRespond("DAT File : " + this.dat.datFile.path + "\n"); + this.requestRespond("IDX File : " + this.dat.idxFile.path + "\n"); this.requestRespond("----- ----- -----\n"); - this.requestRespond("Title : " + this.title + "\n"); - this.requestRespond("LineCount : " + this._lineCount + "\n"); - this.requestRespond("LastModified : " + this._lastModified + "\n"); - this.requestRespond("ETag : " + this._eTag + "\n"); + this.requestRespond("Title : " + this.dat.title + "\n"); + this.requestRespond("LineCount : " + this.dat.lineCount + "\n"); + this.requestRespond("LastModified : " + this.dat.lastModified + "\n"); this.requestRespond("----- ----- -----\n"); this.requestRespond("URL Options \n"); this.requestRespond(" Start : " + this.optionsStart + "\n"); @@ -191,11 +148,13 @@ this.requestRespond(" End : " + this.optionsEnd + "\n"); this.requestRespond(" NoFirst : " + this.optionsNoFirst + "\n"); this.requestRespond("----- ----- -----\n\n"); + + // this.requestEnd(); this.datDownload(); }, datDownload: function(){ - var httpChannel = this._ioService.newChannelFromURI(this.datURL) + var httpChannel = this._ioService.newChannelFromURI(this.dat.datURL) .QueryInterface(Components.interfaces.nsIHttpChannel); httpChannel.requestMethod = "GET"; httpChannel.redirectionLimit = 0; // 302 等のリダイレクトを行わない @@ -203,10 +162,10 @@ httpChannel.setRequestHeader("User-Agent", this._bbs2chService.userAgent, false); // 差分GET - if(this.datFile.exists() && this._lastModified){ + if(this.dat.datFile.exists() && this.dat.lastModified){ httpChannel.setRequestHeader("Accept-Encoding", "identity", false); - httpChannel.setRequestHeader("If-Modified-Since", this._lastModified, false); - httpChannel.setRequestHeader("Range", "bytes=" + this.datFile.fileSize + "-", false); + httpChannel.setRequestHeader("If-Modified-Since", this.dat.lastModified, false); + httpChannel.setRequestHeader("Range", "bytes=" + this.dat.datFile.fileSize + "-", false); } this.wrappedJSObject = this; @@ -265,8 +224,8 @@ // DAT を 変換して書き出す for(var i=0; i tmpLineCount){ - // .dat の書き込み - this._bbs2chService.writeFile(this.datFile.path, aDatContent, true); + if(this.dat.lineCount > tmpLineCount){ + // .dat の追記書き込み + this.dat.appendContent(aDatContent); // .idx の書き込み - var idxContent = new Array(); - if(this.title) idxContent.push("title=" + this.title); - if(this._lineCount) idxContent.push("lineCount=" + this._lineCount); - if(this._lastModified) idxContent.push("lastModified=" + this._lastModified); - if(this._eTag) idxContent.push("etag=" + this._eTag); - idxContent = idxContent.join("\n"); - this._bbs2chService.writeFile(this.idxFile.path, idxContent, false); + this.dat.flushIdx(); } } } @@ -337,14 +289,6 @@ b2rJbbsThread.prototype = { - get datURL(){ - if(!this._datURL){ - var datURLSpec = this.threadURL.resolve("./").replace("read.cgi", "rawmode.cgi"); - this._datURL = this._ioService.newURI(datURLSpec, null, null) - .QueryInterface(Components.interfaces.nsIURL); - } - return this._datURL; - }, } b2rJbbsThread.prototype.__proto__ = b2r2chThread.prototype; From flyson @ users.sourceforge.jp Thu Oct 27 22:56:17 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Thu, 27 Oct 2005 22:56:17 +0900 Subject: [Bbs2ch-cvs 36] CVS update: bbs2chreader/components Message-ID: <20051027135617.A15792AC026@users.sourceforge.jp> Index: bbs2chreader/components/nsBbs2chProtocolHandler.js diff -u bbs2chreader/components/nsBbs2chProtocolHandler.js:1.5 bbs2chreader/components/nsBbs2chProtocolHandler.js:1.6 --- bbs2chreader/components/nsBbs2chProtocolHandler.js:1.5 Sun Oct 16 11:05:25 2005 +++ bbs2chreader/components/nsBbs2chProtocolHandler.js Thu Oct 27 22:56:17 2005 @@ -96,6 +96,7 @@ tmpChannel.init(aURI, "text/html", "Shift_JIS", new Bbs2chThread()); break; case "thread-test:" : + this._subScrLoader.loadSubScript("chrome://bbs2chreader/content/test/dat-test.js"); this._subScrLoader.loadSubScript("chrome://bbs2chreader/content/test/thread-test.js"); var threadFactory = new b2rThreadFactory(); tmpChannel = Components.classes["@mozilla.org/bbs2ch-channel;1"] From flyson @ users.sourceforge.jp Fri Oct 28 00:26:21 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Fri, 28 Oct 2005 00:26:21 +0900 Subject: [Bbs2ch-cvs 37] CVS update: bbs2chreader/components Message-ID: <20051027152621.240AB2AC00E@users.sourceforge.jp> Index: bbs2chreader/components/nsBbs2chChannel.js diff -u bbs2chreader/components/nsBbs2chChannel.js:1.4 bbs2chreader/components/nsBbs2chChannel.js:1.5 --- bbs2chreader/components/nsBbs2chChannel.js:1.4 Sat Oct 8 02:26:27 2005 +++ bbs2chreader/components/nsBbs2chChannel.js Fri Oct 28 00:26:21 2005 @@ -99,6 +99,14 @@ }, cancel: function(aStatus){ + // キャッシュエントリがあるときは閉じる + if(this._cacheOutputStream){ + this._cacheOutputStream.close(); + } + if(this._cacheEntry){ + this._cacheEntry.close(); + } + if(this._isPending){ this._isPending = false; @@ -115,7 +123,7 @@ onCacheEntryAvailable: function(aDescriptor, aAccessGranted, aStatus){ this.requestStart(); - + if(this._cacheMode){ try{ // キャッシュからデータを取得して書き出す @@ -180,10 +188,12 @@ requestEnd: function(){ if(!this._cacheMode){ this._cacheOutputStream.close(); + this._cacheOutputStream = null; this._cacheEntry.setMetaDataElement("request-method", "GET"); this._cacheEntry.setMetaDataElement("response-head", "HTTP/1.1 200 OK\r\n"); this._cacheEntry.markValid(); this._cacheEntry.close(); + this._cacheEntry = null; } this._streamListener.onStopRequest(this, this._context, Components.results.NS_OK); From flyson @ users.sourceforge.jp Sun Oct 30 04:09:37 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sun, 30 Oct 2005 04:09:37 +0900 Subject: [Bbs2ch-cvs 38] CVS update: bbs2chreader Message-ID: <20051029190937.C5E962AC00F@users.sourceforge.jp> Index: bbs2chreader/install.rdf diff -u bbs2chreader/install.rdf:1.13 bbs2chreader/install.rdf:1.14 --- bbs2chreader/install.rdf:1.13 Thu Oct 27 00:15:59 2005 +++ bbs2chreader/install.rdf Sun Oct 30 04:09:37 2005 @@ -5,7 +5,7 @@ bbs2chreader {0B9D558E-6983-486b-9AAD-B6CBCD2FC807} - 0.2.6+ + 0.2.7 2ch(Japanese Web Forum) Reader chrome://bbs2chreader/content/settings/settings.xul http://bbs2ch.sourceforge.jp/ From flyson @ users.sourceforge.jp Sun Oct 30 06:47:48 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sun, 30 Oct 2005 06:47:48 +0900 Subject: [Bbs2ch-cvs 39] CVS update: bbs2chreader/content/bbs2chreader/test Message-ID: <20051029214748.98C192AC020@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/test/thread-test.js diff -u bbs2chreader/content/bbs2chreader/test/thread-test.js:1.3 bbs2chreader/content/bbs2chreader/test/thread-test.js:1.4 --- bbs2chreader/content/bbs2chreader/test/thread-test.js:1.3 Thu Oct 27 22:56:17 2005 +++ bbs2chreader/content/bbs2chreader/test/thread-test.js Sun Oct 30 06:47:48 2005 @@ -33,8 +33,6 @@ switch(threadType){ case bbs2chService.BOARD_TYPE_2CH: return new b2r2chThread(); - case bbs2chService.BOARD_TYPE_JBBS: - return new b2rJbbsThread(); } return new b2rThread(); } @@ -169,49 +167,30 @@ } this.wrappedJSObject = this; - httpChannel.asyncOpen(this.httpListener, this); + httpChannel.asyncOpen(this, null); }, - httpListener: { - onStartRequest: function(aRequest, aContext){ - aRequest.QueryInterface(Components.interfaces.nsIHttpChannel); - - this._bInputStream = Components.classes["@mozilla.org/binaryinputstream;1"] - .createInstance(Components.interfaces.nsIBinaryInputStream); - this._data = new Array(); - - aContext.wrappedJSObject.onStartRequest(aRequest); - }, - - onDataAvailable: function (aRequest, aContext, aInputStream, aOffset, aCount){ - aRequest.QueryInterface(Components.interfaces.nsIHttpChannel); - - this._bInputStream.setInputStream(aInputStream); - var availableData = this._bInputStream.readBytes(aCount); - // NULL 文字 - availableData = availableData.replace(/\x00/g, "*"); - // 変換前の DAT を保存しておく - this._data.push(availableData); - - aContext.wrappedJSObject.onDataAvailable(aRequest, - availableData, aRequest.responseStatus); - }, - - onStopRequest: function(aRequest, aContext, aStatus){ - aRequest.QueryInterface(Components.interfaces.nsIHttpChannel); - aContext.wrappedJSObject.onStopRequest(aRequest, - this._data.join(""), aRequest.responseStatus); - this._data = null; - } - }, - - onStartRequest: function(aHttpChannel){ + onStartRequest: function(aRequest, aContext){ + this._bInputStream = Components.classes["@mozilla.org/binaryinputstream;1"] + .createInstance(Components.interfaces.nsIBinaryInputStream); + this._data = new Array(); this._datBuffer = ""; }, - onDataAvailable: function(aHttpChannel, aAvailableData, aHttpStatus){ - if(!(aHttpStatus==200 || aHttpStatus==206)) return; - - var availableData = this._datBuffer + aAvailableData; + + onDataAvailable: function (aRequest, aContext, aInputStream, aOffset, aCount){ + aRequest.QueryInterface(Components.interfaces.nsIHttpChannel); + var httpStatus = aRequest.responseStatus; + // 必要な情報がないなら終了 + if(!(httpStatus==200 || httpStatus==206)) return; + + this._bInputStream.setInputStream(aInputStream); + var availableData = this._bInputStream.readBytes(aCount); + // NULL 文字 + availableData = availableData.replace(/\x00/g, "*"); + // 変換前の DAT を保存しておく + this._data.push(availableData); + + var availableData = this._datBuffer + availableData; // 改行を含まないならバッファに追加して終了 if(!availableData.match(/\n/)){ this._datBuffer = availableData; @@ -225,40 +204,48 @@ // DAT を 変換して書き出す for(var i=0; i tmpLineCount){ // .dat の追記書き込み this.dat.appendContent(aDatContent); - // .idx の書き込み this.dat.flushIdx(); } @@ -280,16 +266,3 @@ b2r2chThread.prototype.__proto__ = b2rThread.prototype; - - - - -function b2rJbbsThread(){ -} - -b2rJbbsThread.prototype = { - - -} -b2rJbbsThread.prototype.__proto__ = b2r2chThread.prototype; - From flyson @ users.sourceforge.jp Tue Nov 1 00:31:11 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Tue, 1 Nov 2005 00:31:11 +0900 Subject: [Bbs2ch-cvs 40] CVS update: bbs2chreader/content/bbs2chreader Message-ID: <20051031153111.B3E512AC01D@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/bbsmenu-page.js diff -u bbs2chreader/content/bbs2chreader/bbsmenu-page.js:1.26 bbs2chreader/content/bbs2chreader/bbsmenu-page.js:1.27 --- bbs2chreader/content/bbs2chreader/bbsmenu-page.js:1.26 Sun Sep 25 22:50:14 2005 +++ bbs2chreader/content/bbs2chreader/bbsmenu-page.js Tue Nov 1 00:31:11 2005 @@ -275,20 +275,24 @@ if(!gBbs2chService.pref.getBoolPref("fls.bbs2chreader.bbsmenu_toggle_open_container")) return; - // 開いているすべてのコンテナを列挙 - var openedContainers = gTreeBbsMenu.database.GetSources( - gBbsmenuDS.rdf.getResource("http://home.netscape.com/NC-rdf#open"), - gBbsmenuDS.rdf.getLiteral("true"), true); - // 閉じないコンテナのリソースを取得しておく var exceptResource = gTreeBbsMenu.builder.getResourceAtIndex(aExceptIndex); - while(openedContainers.hasMoreElements()){ - var container = openedContainers.getNext().QueryInterface(Components.interfaces.nsIRDFResource); - if(container.Value.indexOf("urn:bbs2ch:") == -1) continue; + var rootContainer = Components.classes["@mozilla.org/rdf/container;1"] + .createInstance(Components.interfaces.nsIRDFContainer); + rootContainer.Init(gTreeBbsMenu.database, + gBbsmenuDS.rdf.getResource("urn:bbs2ch:bbsmenu:root")); + var containers = rootContainer.GetElements(); + while(containers.hasMoreElements()){ + var container = containers.getNext() + .QueryInterface(Components.interfaces.nsIRDFResource); var index = gTreeBbsMenu.builder.getIndexOfResource(container); - if(index != aExceptIndex && index != -1) gTreeBbsMenu.view.toggleOpenState(index); - } + if(exceptResource == container) continue; + if(container.Value.indexOf("urn:bbs2ch:") == -1) continue; + if(!gTreeBbsMenu.view.isContainerOpen(index)) continue; + + if(index != -1) gTreeBbsMenu.view.toggleOpenState(index); + } // 閉じないコンテナが表示されるようにスクロール aExceptIndex = gTreeBbsMenu.builder.getIndexOfResource(exceptResource); From flyson @ users.sourceforge.jp Tue Nov 1 00:47:05 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Tue, 1 Nov 2005 00:47:05 +0900 Subject: [Bbs2ch-cvs 41] CVS update: bbs2chreader/content/bbs2chreader Message-ID: <20051031154705.0A6882AC016@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/bbsmenu-page.js diff -u bbs2chreader/content/bbs2chreader/bbsmenu-page.js:1.27 bbs2chreader/content/bbs2chreader/bbsmenu-page.js:1.28 --- bbs2chreader/content/bbs2chreader/bbsmenu-page.js:1.27 Tue Nov 1 00:31:11 2005 +++ bbs2chreader/content/bbs2chreader/bbsmenu-page.js Tue Nov 1 00:47:04 2005 @@ -43,6 +43,7 @@ var gBbsmenuDS; var gHistoryRDF; + function startup(){ gBbsmenuDS = new Bbs2chBbsMenuDS(); From flyson_moz @ ybb.ne.jp Thu Nov 3 22:44:01 2005 From: flyson_moz @ ybb.ne.jp (flyson) Date: Thu, 3 Nov 2005 22:44:01 +0900 (JST) Subject: [Bbs2ch-cvs 42] RELEASE_0_2_7 Message-ID: <20051103134401.19448.qmail@web3202.mail.bbt.yahoo.co.jp> RELEASE_0_2_7 From flyson @ users.sourceforge.jp Thu Nov 3 22:49:55 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Thu, 3 Nov 2005 22:49:55 +0900 Subject: [Bbs2ch-cvs 43] CVS update: bbs2chreader Message-ID: <20051103134955.6E0782AC047@users.sourceforge.jp> Index: bbs2chreader/mkxpi.bat diff -u bbs2chreader/mkxpi.bat:1.8 bbs2chreader/mkxpi.bat:1.9 --- bbs2chreader/mkxpi.bat:1.8 Fri Sep 9 20:49:21 2005 +++ bbs2chreader/mkxpi.bat Thu Nov 3 22:49:55 2005 @@ -1,7 +1,7 @@ @ECHO OFF SET EXT_NAME=bbs2chreader -SET EXT_VER=026 +SET EXT_VER=027 MKDIR chrome ZIP -r chrome\%EXT_NAME%.jar content skin locale Index: bbs2chreader/history.txt diff -u bbs2chreader/history.txt:1.7 bbs2chreader/history.txt:1.8 --- bbs2chreader/history.txt:1.7 Fri Sep 9 20:55:09 2005 +++ bbs2chreader/history.txt Thu Nov 3 22:49:55 2005 @@ -1,3 +1,17 @@ +0.2.7 + 1.5RC1 ?? + ?????ヲ?????????? + ???????????????????????????+ ????E????? sage ?????????????? + ?????????E???????N?????????? + ????E??????ヲ???????????????? + Be2ch ??ッ?????????+ ??????????????????????????????+ ?????????????????????????????????+ NG ?????????????????????????????+ [?????????????????]? Firefox1.5 ??????????????+ + 0.2.6 Firefox 1.5b1 ?????????s????? ???????????????????????ヲ??????????bug:6623] From flyson @ users.sourceforge.jp Sat Nov 5 01:18:04 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sat, 5 Nov 2005 01:18:04 +0900 Subject: [Bbs2ch-cvs 44] CVS update: bbs2chreader/content/bbs2chreader/lib Message-ID: <20051104161804.48D392AC055@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/lib/rdf.js diff -u bbs2chreader/content/bbs2chreader/lib/rdf.js:1.2 bbs2chreader/content/bbs2chreader/lib/rdf.js:1.3 --- bbs2chreader/content/bbs2chreader/lib/rdf.js:1.2 Sat Sep 17 04:11:11 2005 +++ bbs2chreader/content/bbs2chreader/lib/rdf.js Sat Nov 5 01:18:04 2005 @@ -127,8 +127,25 @@ * RDF URL を使って初期化 * @param {string} aURL RDF データソース URL */ - initWithRDFURL: function(aDataSource){ - this._ds = this._rdfService.GetDataSource(aDataSource); + initWithRDFURL: function(aURL){ + if(aURL.substring(0,4) == "rdf:"){ + this._ds = this._rdfService.GetDataSource(aURL); + return; + } + // RDF の同期読み込み + this._ds = Components.classes["@mozilla.org/rdf/datasource;1?name=in-memory-datasource"] + .createInstance(Components.interfaces.nsIRDFDataSource); + var httpReq = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"] + .createInstance(Components.interfaces.nsIXMLHttpRequest); + var rdfParser = Components.classes["@mozilla.org/rdf/xml-parser;1"] + .createInstance(Components.interfaces.nsIRDFXMLParser); + try{ + httpReq.open("GET", aURL, false); + httpReq.send(null); + rdfParser.parseString(this._ds, httpReq.channel.URI, httpReq.responseText); + }catch(ex){ + this._ds = this._rdfService.GetDataSource(aURL); + } }, From flyson @ users.sourceforge.jp Sat Nov 5 01:20:01 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sat, 5 Nov 2005 01:20:01 +0900 Subject: [Bbs2ch-cvs 45] CVS update: bbs2chreader/content/bbs2chreader Message-ID: <20051104162001.7B23F2AC055@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/bbsmenu-ds.js diff -u bbs2chreader/content/bbs2chreader/bbsmenu-ds.js:1.12 bbs2chreader/content/bbs2chreader/bbsmenu-ds.js:1.13 --- bbs2chreader/content/bbs2chreader/bbsmenu-ds.js:1.12 Sat Oct 22 13:14:14 2005 +++ bbs2chreader/content/bbs2chreader/bbsmenu-ds.js Sat Nov 5 01:20:01 2005 @@ -74,6 +74,14 @@ /** + * データフォルダ内の bbsmenu.rdf + * @return nsILocalFile + */ + get bbsMenuRDFFile(){ + return this._bbsMenuRDFFile; + }, + + /** * データフォルダ内の outside.txt * @return nsILocalFile */ @@ -88,10 +96,14 @@ this._rdf = new Bbs2chRDF(); this._bbs2chService = Components.classes["@mozilla.org/bbs2ch-service;1"] - .getService(Components.interfaces.nsIBbs2chService); + .getService(Components.interfaces.nsIBbs2chService); + this._ioService = Components.classes["@mozilla.org/network/io-service;1"] + .getService(Components.interfaces.nsIIOService); this._bbsMenuFile = this._bbs2chService.getDataDir(); this._bbsMenuFile.appendRelativePath("bbsmenu.html"); + this._bbsMenuRDFFile = this._bbs2chService.getDataDir(); + this._bbsMenuRDFFile.appendRelativePath("bbsmenu.rdf"); this._outsideFile = this._bbs2chService.getDataDir(); this._outsideFile.appendRelativePath("outside.txt"); }, @@ -106,6 +118,17 @@ // bbsmenu.html が無いときは終了 if(!this.bbsMenuFile.exists()) return; + if(this.bbsMenuRDFFile.exists() && this.outsideFile.exists()){ + var rdfLMTime = this.bbsMenuRDFFile.lastModifiedTime; + var bbsmenuLMTime = this.bbsMenuFile.lastModifiedTime; + var outsideLMTime = this.outsideFile.lastModifiedTime; + + if((rdfLMTime > bbsmenuLMTime) && (rdfLMTime > outsideLMTime)){ + var rdfURL = this._ioService.newFileURI(this.bbsMenuRDFFile); + this.rdf.initWithRDFURL(rdfURL.spec); + return; + } + } // ルートコンテナの作成 var rootContainer = this.rdf.makeSeqContainer("urn:bbs2ch:bbsmenu:root"); @@ -173,6 +196,10 @@ this._bbs2chService.getBoardType(RegExp.$1)); } } + + // RDF をキャッシュとして保存 + var rdfSource = this.rdf.getXmlSource("bbs2ch", NS_BBS2CH); + this._bbs2chService.writeFile(this.bbsMenuRDFFile.path, rdfSource, false); }, From flyson @ users.sourceforge.jp Sat Nov 5 02:01:12 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sat, 5 Nov 2005 02:01:12 +0900 Subject: [Bbs2ch-cvs 46] CVS update: bbs2chreader/components Message-ID: <20051104170112.8E5722AC04C@users.sourceforge.jp> Index: bbs2chreader/components/nsBbs2chChannel.js diff -u bbs2chreader/components/nsBbs2chChannel.js:1.5 bbs2chreader/components/nsBbs2chChannel.js:1.6 --- bbs2chreader/components/nsBbs2chChannel.js:1.5 Fri Oct 28 00:26:21 2005 +++ bbs2chreader/components/nsBbs2chChannel.js Sat Nov 5 02:01:12 2005 @@ -82,31 +82,20 @@ this._context = aContext; if(this.loadGroup) this.loadGroup.addRequest(this, this._context); - // HTTP キャッシュ - var cacheService = Components.classes["@mozilla.org/network/cache-service;1"] - .getService(Components.interfaces.nsICacheService); - var cacheSession = cacheService.createSession("HTTP", - Components.interfaces.nsICache.STORE_ANYWHERE, true); - cacheSession.doomEntriesIfExpired = false; - - this._cacheMode = false; - // キャッシュモード - if(this.loadFlags & 4096) this._cacheMode = true; - - // this.onCacheEntryAvailable を実行 - cacheSession.asyncOpenCacheEntry(this.URI.spec, - Components.interfaces.nsICache.ACCESS_READ_WRITE, this); + // 呼び出し元のスレッド処理後にスタート + var timer = Components.classes["@mozilla.org/timer;1"] + .createInstance(Components.interfaces.nsITimer); + var timerCallback = {}; + timerCallback._context = this; + timerCallback.observe = function(aTimer){ + var context = this._context; + context.requestStart(); + context._observer.init(context); + } + timer.init(timerCallback, 0, timer.TYPE_ONE_SHOT); }, cancel: function(aStatus){ - // キャッシュエントリがあるときは閉じる - if(this._cacheOutputStream){ - this._cacheOutputStream.close(); - } - if(this._cacheEntry){ - this._cacheEntry.close(); - } - if(this._isPending){ this._isPending = false; @@ -121,34 +110,6 @@ this.status = aStatus; }, - onCacheEntryAvailable: function(aDescriptor, aAccessGranted, aStatus){ - this.requestStart(); - - if(this._cacheMode){ - try{ - // キャッシュからデータを取得して書き出す - var inputStream = aDescriptor.openInputStream(0, -1, 0); - var scriptableInputStream = Components.classes["@mozilla.org/scriptableinputstream;1"] - .createInstance(Components.interfaces.nsIScriptableInputStream); - scriptableInputStream.init(inputStream); - var cacheContent = scriptableInputStream.read(scriptableInputStream.available()); - this.requestRespond(cacheContent, cacheContent.length); - scriptableInputStream.close(); - inputStream.close(); - aDescriptor.close(); - this.requestEnd(); - return; - }catch(ex){ - // キャッシュからデータを取得できない場合は通常モード - this._cacheMode = false; - } - } - - this._cacheEntry = aDescriptor; - this._cacheOutputStream = aDescriptor.openOutputStream(0, -1, 0); - this._observer.init(this); - }, - init: function(aURI, aContentType, aContentCharset, aObserver){ this.URI = aURI; this.originalURI = aURI; @@ -168,16 +129,6 @@ }, requestRespond: function(aData, aDataLength){ - if(!this._cacheMode){ - try{ - this._cacheOutputStream.write(aData, aDataLength); - }catch(ex){ - this._cacheOutputStream.close(); - this._cacheEntry.close(); - this._cacheMode = true; - } - } - this._stringStream.setData(aData, aDataLength); this._streamListener.onDataAvailable(this, this._context, this._stringStream, this._dataSize, aDataLength); @@ -186,16 +137,6 @@ }, requestEnd: function(){ - if(!this._cacheMode){ - this._cacheOutputStream.close(); - this._cacheOutputStream = null; - this._cacheEntry.setMetaDataElement("request-method", "GET"); - this._cacheEntry.setMetaDataElement("response-head", "HTTP/1.1 200 OK\r\n"); - this._cacheEntry.markValid(); - this._cacheEntry.close(); - this._cacheEntry = null; - } - this._streamListener.onStopRequest(this, this._context, Components.results.NS_OK); if(this.loadGroup){ try{ From flyson @ users.sourceforge.jp Sun Nov 6 21:18:29 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sun, 6 Nov 2005 21:18:29 +0900 Subject: [Bbs2ch-cvs 47] CVS update: bbs2chreader/components Message-ID: <20051106121829.0FB082AC017@users.sourceforge.jp> Index: bbs2chreader/components/nsBbs2chProtocolHandler.js diff -u bbs2chreader/components/nsBbs2chProtocolHandler.js:1.6 bbs2chreader/components/nsBbs2chProtocolHandler.js:1.7 --- bbs2chreader/components/nsBbs2chProtocolHandler.js:1.6 Thu Oct 27 22:56:17 2005 +++ bbs2chreader/components/nsBbs2chProtocolHandler.js Sun Nov 6 21:18:28 2005 @@ -127,7 +127,6 @@ this._subScrLoader.loadSubScript("chrome://bbs2chreader/content/httprequest.js"); this._subScrLoader.loadSubScript("chrome://bbs2chreader/content/abone.js"); // use Bbs2chBoardRss - this._subScrLoader.loadSubScript("chrome://bbs2chreader/content/lib/downloader.js"); this._subScrLoader.loadSubScript("chrome://bbs2chreader/content/board-items.js"); this._subScrLoader.loadSubScript("chrome://bbs2chreader/content/thread.js"); From flyson @ users.sourceforge.jp Sun Nov 6 21:18:29 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sun, 6 Nov 2005 21:18:29 +0900 Subject: [Bbs2ch-cvs 48] CVS update: bbs2chreader/content/bbs2chreader Message-ID: <20051106121829.309F12AC053@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/board-rss.js diff -u bbs2chreader/content/bbs2chreader/board-rss.js:1.9 bbs2chreader/content/bbs2chreader/board-rss.js:1.10 --- bbs2chreader/content/bbs2chreader/board-rss.js:1.9 Sat Sep 17 04:36:51 2005 +++ bbs2chreader/content/bbs2chreader/board-rss.js Sun Nov 6 21:18:29 2005 @@ -100,7 +100,6 @@ return; } - // ??????????? if(this.boardItems.subjectFile.exists()){ var interval = new Date().getTime() @@ -116,20 +115,67 @@ } } + var httpChannel = this._ioService.newChannelFromURI(this.boardItems.subjectURL) + .QueryInterface(Components.interfaces.nsIHttpChannel); + httpChannel.requestMethod = "GET"; + httpChannel.redirectionLimit = 0; // 302 ????????????? + httpChannel.loadFlags = httpChannel.LOAD_BYPASS_CACHE; + httpChannel.setRequestHeader("User-Agent", this._bbs2chService.userAgent, false); + + this.wrappedJSObject = this; + httpChannel.asyncOpen(this, null); + + }, + + onStartRequest: function(aRequest, aContext){ + aRequest.QueryInterface(Components.interfaces.nsIHttpChannel); + + this._bInputStream = Components.classes["@mozilla.org/binaryinputstream;1"] + .createInstance(Components.interfaces.nsIBinaryInputStream); + this._data = new Array(); + }, + + onDataAvailable: function (aRequest, aContext, aInputStream, aOffset, aCount){ + aRequest.QueryInterface(Components.interfaces.nsIHttpChannel); + var httpStatus = aRequest.responseStatus; + + // ??????????I? + if(!(httpStatus==200 || httpStatus==206)) return; - this._subjectDownloader = new Bbs2chDownloader(this.boardItems.subjectURL.spec, - this.boardItems.subjectFile.path); - this._subjectDownloader._context = this; - - this._subjectDownloader.onStart = function(aDownloader){}; - this._subjectDownloader.onStop = function(aDownloader, aStatus){ - this._context.RespondRSS(); - }; - this._subjectDownloader.onProgressChange = function(aDownloader, aPercentage){}; - this._subjectDownloader.onError = function(aDownloader, aErrorCode){ - this._context.requestErrorEnd(); - }; - this._subjectDownloader.download(); + this._bInputStream.setInputStream(aInputStream); + var availableData = this._bInputStream.readBytes(aCount); + this._data.push(availableData); + }, + + onStopRequest: function(aRequest, aContext, aStatus){ + aRequest.QueryInterface(Components.interfaces.nsIHttpChannel); + var httpStatus = aRequest.responseStatus; + this._bInputStream.close(); + + switch(httpStatus){ + case 200: // ??ET OK + case 206: // ??GET OK + break; + case 302: // DAT?? + this.requestRespond("DAT DOWNED"); + this.requestEnd(); + return; + case 304: // ??? + this.requestRespond("NOT MODIFIED"); + this.requestEnd(); + return; + default: // HTTP ??? + this.requestRespond("ERROR HTTP STATUS : " + httpStatus); + this.requestEnd(); + return; + } + + var availableData = this._data.join(); + this._data = null; + if(availableData){ + this._bbs2chService.writeFile(this.boardItems.subjectFile.path, availableData, false); + } + this.RespondRSS(); }, @@ -170,7 +216,8 @@ } if(this._bbs2chService.pref.getBoolPref("fls.bbs2chreader.livebookmarks_append_board_link")){ - var boardTemplate = "\n\t%BOARDTITLE%\n\tbbs2ch:board:%BOARDURL%\n\n\n"; + var boardTemplate = "\n\t%BOARDTITLE%\n\t" + + "bbs2ch:board:%BOARDURL%\n\n\n"; var boardSource = boardTemplate .replace("%BOARDTITLE%", this.boardItems.title) .replace("%BOARDURL%", this.boardItems.url.spec); From flyson @ users.sourceforge.jp Sun Nov 6 21:23:20 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sun, 6 Nov 2005 21:23:20 +0900 Subject: [Bbs2ch-cvs 49] CVS update: bbs2chreader/content/bbs2chreader Message-ID: <20051106122320.DCEEA2AC017@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/board-rss.js diff -u bbs2chreader/content/bbs2chreader/board-rss.js:1.10 bbs2chreader/content/bbs2chreader/board-rss.js:1.11 --- bbs2chreader/content/bbs2chreader/board-rss.js:1.10 Sun Nov 6 21:18:29 2005 +++ bbs2chreader/content/bbs2chreader/board-rss.js Sun Nov 6 21:23:20 2005 @@ -152,27 +152,9 @@ var httpStatus = aRequest.responseStatus; this._bInputStream.close(); - switch(httpStatus){ - case 200: // ??ET OK - case 206: // ??GET OK - break; - case 302: // DAT?? - this.requestRespond("DAT DOWNED"); - this.requestEnd(); - return; - case 304: // ??? - this.requestRespond("NOT MODIFIED"); - this.requestEnd(); - return; - default: // HTTP ??? - this.requestRespond("ERROR HTTP STATUS : " + httpStatus); - this.requestEnd(); - return; - } - var availableData = this._data.join(); this._data = null; - if(availableData){ + if(availableData && httpStatus == 200){ this._bbs2chService.writeFile(this.boardItems.subjectFile.path, availableData, false); } this.RespondRSS(); From flyson @ users.sourceforge.jp Sun Nov 6 21:29:51 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sun, 6 Nov 2005 21:29:51 +0900 Subject: [Bbs2ch-cvs 50] CVS update: bbs2chreader Message-ID: <20051106122951.D52142AC017@users.sourceforge.jp> Index: bbs2chreader/mkxpi.bat diff -u bbs2chreader/mkxpi.bat:1.9 bbs2chreader/mkxpi.bat:1.10 --- bbs2chreader/mkxpi.bat:1.9 Thu Nov 3 22:49:55 2005 +++ bbs2chreader/mkxpi.bat Sun Nov 6 21:29:51 2005 @@ -1,7 +1,7 @@ @ECHO OFF SET EXT_NAME=bbs2chreader -SET EXT_VER=027 +SET EXT_VER=028 MKDIR chrome ZIP -r chrome\%EXT_NAME%.jar content skin locale Index: bbs2chreader/install.rdf diff -u bbs2chreader/install.rdf:1.14 bbs2chreader/install.rdf:1.15 --- bbs2chreader/install.rdf:1.14 Sun Oct 30 04:09:37 2005 +++ bbs2chreader/install.rdf Sun Nov 6 21:29:51 2005 @@ -5,7 +5,7 @@ bbs2chreader {0B9D558E-6983-486b-9AAD-B6CBCD2FC807} - 0.2.7 + 0.2.8 2ch(Japanese Web Forum) Reader chrome://bbs2chreader/content/settings/settings.xul http://bbs2ch.sourceforge.jp/ @@ -16,7 +16,7 @@ {ec8030f7-c20a-464f-9b0e-13a3a9e97384} - 1.0 + 1.5.0.* 1.5.0.* Index: bbs2chreader/history.txt diff -u bbs2chreader/history.txt:1.8 bbs2chreader/history.txt:1.9 --- bbs2chreader/history.txt:1.8 Thu Nov 3 22:49:55 2005 +++ bbs2chreader/history.txt Sun Nov 6 21:29:51 2005 @@ -1,3 +1,8 @@ +0.2.8 + 1.0.x ???????+ ?????ヲ???????????+ ?????????????????????????+ 0.2.7 1.5RC1 ?? ?????ヲ?????????? From flyson_moz @ ybb.ne.jp Sun Nov 6 21:33:19 2005 From: flyson_moz @ ybb.ne.jp (flyson) Date: Sun, 6 Nov 2005 21:33:19 +0900 (JST) Subject: [Bbs2ch-cvs 51] RELEASE_0_2_8 Message-ID: <20051106123319.46848.qmail@web3213.mail.bbt.yahoo.co.jp> RELEASE_0_2_8 From flyson @ users.sourceforge.jp Wed Nov 9 00:23:22 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Wed, 9 Nov 2005 00:23:22 +0900 Subject: [Bbs2ch-cvs 52] CVS update: bbs2chreader Message-ID: <20051108152322.3060C2AC012@users.sourceforge.jp> Index: bbs2chreader/install.rdf diff -u bbs2chreader/install.rdf:1.15 bbs2chreader/install.rdf:1.16 --- bbs2chreader/install.rdf:1.15 Sun Nov 6 21:29:51 2005 +++ bbs2chreader/install.rdf Wed Nov 9 00:23:22 2005 @@ -5,7 +5,7 @@ bbs2chreader {0B9D558E-6983-486b-9AAD-B6CBCD2FC807} - 0.2.8 + 0.2.8+ 2ch(Japanese Web Forum) Reader chrome://bbs2chreader/content/settings/settings.xul http://bbs2ch.sourceforge.jp/ @@ -16,7 +16,7 @@ {ec8030f7-c20a-464f-9b0e-13a3a9e97384} - 1.5.0.* + 1.5 1.5.0.* From flyson @ users.sourceforge.jp Sun Nov 13 04:13:16 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sun, 13 Nov 2005 04:13:16 +0900 Subject: [Bbs2ch-cvs 53] CVS update: bbs2chreader/content/bbs2chreader Message-ID: <20051112191316.36B9C2AC05B@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/board-items.js diff -u bbs2chreader/content/bbs2chreader/board-items.js:1.11 bbs2chreader/content/bbs2chreader/board-items.js:1.12 --- bbs2chreader/content/bbs2chreader/board-items.js:1.11 Tue Oct 11 22:17:31 2005 +++ bbs2chreader/content/bbs2chreader/board-items.js Sun Nov 13 04:13:16 2005 @@ -162,6 +162,7 @@ }, refresh: function(aFilterLimit, aShowDownedLogs){ + var startTime = new Date().getTime(); const NS_BBS2CH = this._bbs2chService.nameSpace; const STATUS_NEW = 5; @@ -183,7 +184,8 @@ // ??????????? var regLine; - if(this.type==this._bbs2chService.BOARD_TYPE_2CH || this.type==this._bbs2chService.BOARD_TYPE_BE2CH){ // 2ch + if(this.type==this._bbs2chService.BOARD_TYPE_2CH || + this.type==this._bbs2chService.BOARD_TYPE_BE2CH){ // 2ch regLine = /^(\d{9,10})\.dat<>(.+) ?\((\d{1,4})\)/; }else if(this.type==this._bbs2chService.BOARD_TYPE_JBBS){ // JBBS regLine = /^(\d{9,10})\.cgi,(.+) ?\((\d{1,4})\)/; @@ -256,7 +258,7 @@ this._items.push(logItemHash[i]); } } - + dump("Bbs2chBoardItems.refresh : "+ (new Date().getTime() - startTime) +"ms\n"); }, @@ -265,6 +267,23 @@ */ getLogItemHash: function(aThreadUrlSpec){ var resultHash = new Array(); + var cacheFile = this._bbs2chService.getLogFileAtURL( + this.url.resolve("cache.txt")); + var cacheUpdated = false; + var cacheContents = this._bbs2chService.readFileLine(cacheFile.path, {}); + var cacheItemHash = new Array(); + for(var i=0; i"); + var cacheItem = {}; + cacheItem.datID = cacheLine[0]; + cacheItem.lastModified = cacheLine[1]; + cacheItem.count = cacheLine[2]; + cacheItem.title = cacheLine[3]; + cacheItem.id = "item-" + cacheItem.datID; + cacheItemHash[cacheItem.id] = cacheItem; + } + cacheContents = new Array(); var regIndexName = /(\d{9,10})\.idx$/i; var regTitle = /^title=(.+)/m; @@ -276,24 +295,41 @@ var file = entries.getNext().QueryInterface(Components.interfaces.nsILocalFile); if(!regIndexName.test(file.leafName)) continue; var datID = RegExp.$1; + var lastModified = file.lastModifiedTime; - var indexContent = this._bbs2chService.readFile(file.path); - indexContent = this._bbs2chService.fromType(indexContent, this.type); - var logItem = {}; logItem.datID = datID; logItem.id = "item-" + datID; logItem.number = -1; - logItem.title = regTitle.test(indexContent) ? "X" + RegExp.$1 : ""; - logItem.count = regLineCount.test(indexContent) ? RegExp.$1 : ""; - logItem.read = logItem.count; logItem.unread = 0; logItem.force = 0; logItem.makeDate = logItem.datID * 1000; logItem.url = aThreadUrlSpec + logItem.datID + "/"; - + + if(logItem.id in cacheItemHash && + cacheItemHash[logItem.id].lastModified == lastModified){ + logItem.title = cacheItemHash[logItem.id].title; + logItem.count = cacheItemHash[logItem.id].count; + logItem.read = logItem.count; + }else{ + // ??or?? idx ?????????????? + cacheUpdated = true; + var indexContent = this._bbs2chService.readFile(file.path); + indexContent = this._bbs2chService.fromType(indexContent, this.type); + logItem.title = regTitle.test(indexContent) ? "X" + RegExp.$1 : ""; + logItem.count = regLineCount.test(indexContent) ? RegExp.$1 : ""; + logItem.read = logItem.count; + } + + cacheContents.push(datID +"<>"+ lastModified +"<>"+ logItem.count +"<>"+ logItem.title); resultHash[logItem.id] = logItem; } + + if(cacheUpdated){ + cacheContents = cacheContents.join("\n"); + cacheContents = this._bbs2chService.toType(cacheContents, this.type); + this._bbs2chService.writeFile(cacheFile.path, cacheContents, false); + } return resultHash; }, From flyson @ users.sourceforge.jp Sun Nov 20 14:33:14 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sun, 20 Nov 2005 14:33:14 +0900 Subject: [Bbs2ch-cvs 54] CVS update: bbs2chreader/content/bbs2chreader/settings Message-ID: <20051120053314.3F3CE2AC04C@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/settings/settings.xul diff -u bbs2chreader/content/bbs2chreader/settings/settings.xul:1.12 bbs2chreader/content/bbs2chreader/settings/settings.xul:1.13 --- bbs2chreader/content/bbs2chreader/settings/settings.xul:1.12 Fri Apr 22 23:48:13 2005 +++ bbs2chreader/content/bbs2chreader/settings/settings.xul Sun Nov 20 14:33:14 2005 @@ -47,11 +47,6 @@ prefstring="fls.bbs2chreader.data_dir"/> - - From flyson @ users.sourceforge.jp Sun Nov 20 14:33:14 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sun, 20 Nov 2005 14:33:14 +0900 Subject: [Bbs2ch-cvs 55] CVS update: bbs2chreader/content/bbs2chreader Message-ID: <20051120053314.62D7A2AC08C@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/board-page.js diff -u bbs2chreader/content/bbs2chreader/board-page.js:1.23 bbs2chreader/content/bbs2chreader/board-page.js:1.24 --- bbs2chreader/content/bbs2chreader/board-page.js:1.23 Thu Oct 20 22:53:36 2005 +++ bbs2chreader/content/bbs2chreader/board-page.js Sun Nov 20 14:33:14 2005 @@ -71,10 +71,6 @@ gTreeSubject = document.getElementById("treeSubject"); - // ツリーの偶数行に色をつける - if(gBbs2chService.pref.getBoolPref("fls.bbs2chreader.enable_tree_stripe")) - gTreeSubject.setAttribute("stripe", "true"); - if(gBbs2chService.pref.getBoolPref("fls.bbs2chreader.board_auto_update")){ subjectUpdate(); }else if(!gBoardItems.subjectFile.exists() || gBoardItems.subjectFile.fileSize==0){ Index: bbs2chreader/content/bbs2chreader/bbsmenu-page.js diff -u bbs2chreader/content/bbs2chreader/bbsmenu-page.js:1.28 bbs2chreader/content/bbs2chreader/bbsmenu-page.js:1.29 --- bbs2chreader/content/bbs2chreader/bbsmenu-page.js:1.28 Tue Nov 1 00:47:04 2005 +++ bbs2chreader/content/bbs2chreader/bbsmenu-page.js Sun Nov 20 14:33:14 2005 @@ -55,9 +55,6 @@ gTreeBbsMenu = document.getElementById("treeBbsMenu"); - // ツリーの偶数行に色をつける - if(gBbs2chService.pref.getBoolPref("fls.bbs2chreader.enable_tree_stripe")) - gTreeBbsMenu.setAttribute("stripe", "true"); if(gBbsmenuDS.bbsMenuFile.exists()){ initTreeBbsMenu(); From flyson @ users.sourceforge.jp Sun Nov 20 14:33:14 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sun, 20 Nov 2005 14:33:14 +0900 Subject: [Bbs2ch-cvs 56] CVS update: bbs2chreader/skin/classic/bbs2chreader Message-ID: <20051120053314.87EF72AC04C@users.sourceforge.jp> Index: bbs2chreader/skin/classic/bbs2chreader/board-page.css diff -u bbs2chreader/skin/classic/bbs2chreader/board-page.css:1.4 bbs2chreader/skin/classic/bbs2chreader/board-page.css:1.5 --- bbs2chreader/skin/classic/bbs2chreader/board-page.css:1.4 Sat Aug 6 01:55:06 2005 +++ bbs2chreader/skin/classic/bbs2chreader/board-page.css Sun Nov 20 14:33:14 2005 @@ -48,11 +48,6 @@ color: #BBB; } -#treeSubject[stripe="true"] treechildren:-moz-tree-row(odd){ - background-image: url("chrome://bbs2chreader/skin/tree-row-odd.png"); -} - - #treeSubject treechildren::-moz-tree-image(icon){ margin-left: 2px; list-style-image: url("chrome://bbs2chreader/skin/board-status.gif") !important; Index: bbs2chreader/skin/classic/bbs2chreader/bbsmenu-page.css diff -u bbs2chreader/skin/classic/bbs2chreader/bbsmenu-page.css:1.4 bbs2chreader/skin/classic/bbs2chreader/bbsmenu-page.css:1.5 --- bbs2chreader/skin/classic/bbs2chreader/bbsmenu-page.css:1.4 Sun Jul 24 03:46:27 2005 +++ bbs2chreader/skin/classic/bbs2chreader/bbsmenu-page.css Sun Nov 20 14:33:14 2005 @@ -1,10 +1,6 @@ @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -#treeBbsMenu[stripe="true"] treechildren:-moz-tree-row(odd){ - background-image: url("chrome://bbs2chreader/skin/tree-row-odd.png"); -} - /* 2ch */ #treeBbsMenu treechildren::-moz-tree-image(type-0) { margin: 0px 2px; From flyson @ users.sourceforge.jp Sun Nov 20 14:33:14 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sun, 20 Nov 2005 14:33:14 +0900 Subject: [Bbs2ch-cvs 57] CVS update: bbs2chreader/defaults/preferences Message-ID: <20051120053314.B38D12AC08C@users.sourceforge.jp> Index: bbs2chreader/defaults/preferences/bbs2chreader-pref.js diff -u bbs2chreader/defaults/preferences/bbs2chreader-pref.js:1.2 bbs2chreader/defaults/preferences/bbs2chreader-pref.js:1.3 --- bbs2chreader/defaults/preferences/bbs2chreader-pref.js:1.2 Sun Jul 24 03:51:41 2005 +++ bbs2chreader/defaults/preferences/bbs2chreader-pref.js Sun Nov 20 14:33:14 2005 @@ -3,7 +3,6 @@ pref("fls.bbs2chreader.tab_load_in_foreground" ,false); pref("fls.bbs2chreader.appoint_data_dir" ,false); pref("fls.bbs2chreader.data_dir" ,""); -pref("fls.bbs2chreader.enable_tree_stripe" ,true); pref("fls.bbs2chreader.bbsmenu_load_url" ,"http://menu.2ch.net/bbsmenu.html"); pref("fls.bbs2chreader.bbsmenu_toggle_open_container" ,false); From flyson @ users.sourceforge.jp Sun Nov 20 14:34:35 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sun, 20 Nov 2005 14:34:35 +0900 Subject: [Bbs2ch-cvs 58] CVS update: bbs2chreader/content/bbs2chreader/test Message-ID: <20051120053435.0D80E2AC04C@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/test/thread-test.js diff -u bbs2chreader/content/bbs2chreader/test/thread-test.js:1.4 bbs2chreader/content/bbs2chreader/test/thread-test.js:1.5 --- bbs2chreader/content/bbs2chreader/test/thread-test.js:1.4 Sun Oct 30 06:47:48 2005 +++ bbs2chreader/content/bbs2chreader/test/thread-test.js Sun Nov 20 14:34:34 2005 @@ -58,7 +58,12 @@ startThread: function(){ var threadURLSpec = this._channel.URI.spec.replace(/^bbs2ch:thread-test:/, ""); - this.requestRespond("BAD URL :\t" + threadURLSpec); + + var template = this._bbs2chService.readLocalURI( + "chrome://bbs2chreader/content/res/thread-error.txt"); + template = template.replace(/%URL%/g, threadURLSpec) + .replace(/%STATUS%/g, "BAD URL"); + this.requestRespond(template); this.requestEnd(); }, From flyson @ users.sourceforge.jp Wed Nov 23 08:10:27 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Wed, 23 Nov 2005 08:10:27 +0900 Subject: [Bbs2ch-cvs 59] CVS update: bbs2chreader/content/bbs2chreader/test Message-ID: <20051122231027.D748A2AC08B@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/test/thread-test.js diff -u bbs2chreader/content/bbs2chreader/test/thread-test.js:1.5 bbs2chreader/content/bbs2chreader/test/thread-test.js:1.6 --- bbs2chreader/content/bbs2chreader/test/thread-test.js:1.5 Sun Nov 20 14:34:34 2005 +++ bbs2chreader/content/bbs2chreader/test/thread-test.js Wed Nov 23 08:10:27 2005 @@ -100,13 +100,13 @@ }, get optionsStart(){ - return (this.threadURL.fileName.match(/(\d+)\-/)) ? RegExp.$1 : null; + return (this.threadURL.fileName.match(/(\d+)\-/)) ? parseInt(RegExp.$1) : null; }, get optionsLast(){ - return (this.threadURL.fileName.match(/l(\d+)/)) ? RegExp.$1 : null; + return (this.threadURL.fileName.match(/l(\d+)/)) ? parseInt(RegExp.$1) : null; }, get optionsEnd(){ - return (this.threadURL.fileName.match(/\-(\d+)/)) ? RegExp.$1 : null; + return (this.threadURL.fileName.match(/\-(\d+)/)) ? parseInt(RegExp.$1) : null; }, get optionsNoFirst(){ return (this.threadURL.fileName.indexOf("n") != -1); @@ -152,8 +152,56 @@ this.requestRespond(" NoFirst : " + this.optionsNoFirst + "\n"); this.requestRespond("----- ----- -----\n\n"); - // this.requestEnd(); - this.datDownload(); + // 取得済みログの送信 + if(this.dat.datFile.exists()){ + var datLines = this._bbs2chService.readFileLine(this.dat.datFile.path, {}); + + if(this.optionsEnd){ // LOG PICKUP MODE + var start = this.optionsStart ? this.optionsStart : 1; + if(start < 1) start = 1; + var end = this.optionsEnd; + if(end > datLines.length) end = datLines.length; + if(start > end) start = end; + + var content = new Array(); + for(var i=start-1; i Index: bbs2chreader/content/bbs2chreader/test/thread-test.js diff -u bbs2chreader/content/bbs2chreader/test/thread-test.js:1.6 bbs2chreader/content/bbs2chreader/test/thread-test.js:1.7 --- bbs2chreader/content/bbs2chreader/test/thread-test.js:1.6 Wed Nov 23 08:10:27 2005 +++ bbs2chreader/content/bbs2chreader/test/thread-test.js Fri Nov 25 00:01:47 2005 @@ -117,6 +117,8 @@ startThread: function(){ + // HTML ヘッダを送信したら true になる + this._headerResponded = false; // threadURL var threadURLSpec = this._channel.URI.spec.replace(/^bbs2ch:thread-test:/, ""); @@ -130,9 +132,12 @@ this._type = this._bbs2chService.getBoardType(this.threadURL.spec); this.dat = new b2rDat(); - this.dat.init(this.threadURL, this.boardURL, this._type); + this.dat.init(this.threadURL, this.boardURL, this.type); + this.converter = new b2rThreadConverter(); + this.converter.init(this.threadURL, this.boardURL, this.type); + this.requestRespond("\n\n"); // 取得済みログの送信 if(this.dat.datFile.exists()){ @@ -175,35 +180,112 @@ }else{ if(!this.optionsNoFirst){ - var firstContent = 1 +"\t: "+ datLines[0] + "\n"; - this.requestRespond(firstContent); + this.requestRespond(this.datLineParse(datLines[0], 1, false) +"\n"); + }else if(this.dat.title){ + this._headerResponded = true; + var header = this.converter.getHeader(this.dat.title); + this.requestRespond(header); + }else{ + this.requestRespond(this.datLineParse(datLines[0], 1, false) +"\n"); } var start = 1; var end = datLines.length; - if(this.optionsLast){ + if(this.optionsLast || this.optionsLast == 0){ start = end - this.optionsLast; if(start < 1) start = 1; } - var content = new Array(); for(var i=start; i"); + var resNumber = aNumber; + var resName = "BLOKEN"; + var resMail = ""; + var resDate = "BLOKEN"; + var resID = ""; + var resBeID = ""; + var resMes = ""; + + if(resArray.length > 3){ + resName = resArray[0].replace(/<\/?b>|/g, ""); + resMail = resArray[1]; + resDate = resArray[2]; + resMes = resArray[3]; + } + + // BE:*******-* 形式 を に変換 + var regBeID = /BE: ?(\d+)\-(#{0,5})/; + if(resDate.match(regBeID)){ + resDate = resDate.replace(regBeID, ""); + } + + // resDate を DATE、BeID、BeLevel に分割 + if(resDate.match(/(.+)()/)){ + resDate = RegExp.$1; + resBeID = RegExp.$2; + } + // resDate を DATE と ID に分割 + if(resDate.match(/(.+)ID:(.+)/)){ + resDate = RegExp.$1; + resID = RegExp.$2; + } + + if(resBeID){ + var regBeID2 = //; + if(resBeID.match(regBeID2)){ + idInfoUrl = "http://be.2ch.net/test/p.php?i=" + RegExp.$1 + + "&u=d:" + this.threadURL.resolve("./") + aNumber; + resBeID = resBeID.replace(regBeID2, String("$1 Lv.$2").link(idInfoUrl)); + } + } + + // JSでは "\" が特殊な意味を持つため、数値文字参照に変換 + resName = resName.replace(/([^\x81-\xfc]|^)\x5C/g,"$1\"); + resMail = resMail.replace(/([^\x81-\xfc]|^)\x5C/g,"$1\"); + // レス番リンク処理 + var regResPointer = /()?(>>|>)([0-9]{1,4})(\-[0-9]{1,4})?(<\/a>)?/g; + resMes = resMes.replace(regResPointer, '$2$3$4'); + + // 通常リンク処理 + var regUrlLink = /(h?ttp)(s)?\:([\-_\.\!\~\*\'\(\)a-zA-Z0-9\;\/\?\:\@\&\=\+\$\,\%\#]+)/g; + resMes = resMes.replace(regUrlLink, '$1$2:$3'); + + + // スレッドのタイトルが見つかったときは HTML ヘッダを追加して送る + if(!this._headerResponded && resArray[4]){ + this._headerResponded = true; + this.dat.title = resArray[4]; + + var header = this.converter.getHeader(this.dat.title); + this.requestRespond(header); + } + var response = this.converter.getResponse(aNew, aNumber, resName, resMail, resDate, + resID, resBeID, resMes); + return response; + }, + datDownload: function(){ var httpChannel = this._ioService.newChannelFromURI(this.dat.datURL) .QueryInterface(Components.interfaces.nsIHttpChannel); @@ -257,7 +339,7 @@ // DAT を 変換して書き出す for(var i=0; i/g, this._skinURISpec) + .replace(//g, this._threadURL.resolve("./")) + .replace(//g, this._boardURL.spec); + }, + + getHeader: function(aTitle){ + return this._tmpHeader.replace(//g, aTitle); + }, + + getNewMark: function(){ + return this._tmpNewMark; + }, + + getResponse: function(aNew, aNumber, aName, aMail, aDate, aID, aBeID, aMessage){ + var template = aNew ? this._tmpNewRes : this._tmpRes; + var result = template.replace(//g, aNumber) + .replace(//g, aNumber) + .replace(//g, aName) + .replace(//g, aMail) + .replace(//g, "") + .replace(//g, aDate) + .replace(//g, aID) + .replace(//g, aBeID) + .replace(//g, aMessage); + return result; + } +} \ No newline at end of file From flyson @ users.sourceforge.jp Wed Nov 30 01:06:44 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Wed, 30 Nov 2005 01:06:44 +0900 Subject: [Bbs2ch-cvs 61] CVS update: bbs2chreader/content/bbs2chreader/test Message-ID: <20051129160644.8EC792AC040@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/test/thread-test.js diff -u bbs2chreader/content/bbs2chreader/test/thread-test.js:1.7 bbs2chreader/content/bbs2chreader/test/thread-test.js:1.8 --- bbs2chreader/content/bbs2chreader/test/thread-test.js:1.7 Fri Nov 25 00:01:47 2005 +++ bbs2chreader/content/bbs2chreader/test/thread-test.js Wed Nov 30 01:06:44 2005 @@ -162,6 +162,10 @@ var datLines = this._bbs2chService.readFileLine(this.dat.datFile.path, {}); if(this.optionsEnd){ // LOG PICKUP MODE + this._headerResponded = true; + var header = this.converter.getHeader(this.dat.title); + this.requestRespond(header); + var start = this.optionsStart ? this.optionsStart : 1; if(start < 1) start = 1; var end = this.optionsEnd; @@ -170,7 +174,7 @@ var content = new Array(); for(var i=start-1; i Index: bbs2chreader/content/bbs2chreader/channel.js diff -u bbs2chreader/content/bbs2chreader/channel.js:1.6 bbs2chreader/content/bbs2chreader/channel.js:removed --- bbs2chreader/content/bbs2chreader/channel.js:1.6 Fri Jun 17 00:11:22 2005 +++ bbs2chreader/content/bbs2chreader/channel.js Sat Dec 3 00:10:46 2005 @@ -1,253 +0,0 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is bbs2chreader. - * - * The Initial Developer of the Original Code is - * flyson. - * Portions created by the Initial Developer are Copyright (C) 2004 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * flyson - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - - - - -/** - * Channel の雛形 - */ -function Bbs2chChannel(aURI, aContentType, aContentCharset, aObserver){ - this.URI = aURI; - this.originalURI = aURI; - this.contentType = aContentType; - this.contentCharset = aContentCharset; - - this._properties = new Array(); - this._observer = aObserver; - - this._isPending = true; - this._dataSize = 0; - this._stringStream = Components.classes["@mozilla.org/io/string-input-stream;1"] - .createInstance(Components.interfaces.nsIStringInputStream); -} - -Bbs2chChannel.prototype = { - - QueryInterface: function(aIID){ - if(aIID.equals(Components.interfaces.nsIChannel)) return this; - if(aIID.equals(Components.interfaces.nsIProperties)) return this; - if(aIID.equals(Components.interfaces.nsIRequest)) return this; - if(aIID.equals(Components.interfaces.nsISupports)) return this; - - throw Components.results.NS_ERROR_NO_INTERFACE; - }, - - -// ********** ********* implements nsIProperties ********** ********** - - - get: function(aProperty, aIID){ - if(this.has(aProperty)){ - return this._properties[aProperty]; - } - throw Components.results.NS_ERROR_FAILURE; - }, - - - set: function(aProperty, aValue){ - this._properties[aProperty] = aValue; - return Components.results.NS_OK; - }, - - - has: function(aProperty){ - return this._properties.hasOwnProperty(aProperty); - }, - - - undefine: function(aProperty){ - if(this.has(aProperty)){ - delete this._properties[aProperty]; - return Components.results.NS_OK; - } - throw Components.results.NS_ERROR_FAILURE; - }, - - getKeys :function(aCount){ - var resultArray = new Array(); - for(var i in this._properties) resultArray.push(i); - aCount.value = resultArray.length; - return resultArray; - }, - - -// ********** ********* implements nsIChannel ********** ********** - - - owner: null, - notificationCallbacks: null, - securityInfo: null, - contentLength: -1, - status: Components.results.NS_OK, - loadGroup: null, - loadAttributes: null, - - open: function(){ - throw Components.results.NS_ERROR_NOT_IMPLEMENTED; - }, - - asyncOpen: function(aStreamListener, aContext){ - var cacheService = Components.classes["@mozilla.org/network/cache-service;1"] - .getService(Components.interfaces.nsICacheService); - var session = cacheService.createSession("HTTP", - Components.interfaces.nsICache.STORE_ON_DISK, true); - session.doomEntriesIfExpired = false; - - this._streamListener = aStreamListener; - this._context = aContext; - if(this.loadGroup) this.loadGroup.addRequest(this, this._context); - - this._cacheMode = false; - if(this.loadFlags & 4096){ - this._cacheMode = true; - session.asyncOpenCacheEntry(this.URI.spec, - Components.interfaces.nsICache.ACCESS_READ_WRITE, this); - return; - }; - - this._cacheEntry = session.openCacheEntry(this.URI.spec, - Components.interfaces.nsICache.ACCESS_READ_WRITE, true); - this._cacheOutputStream = this._cacheEntry.openOutputStream(0, -1, 0); - - - // 呼び出し元のスレッド処理後にスタート - var timer = Components.classes["@mozilla.org/timer;1"] - .createInstance(Components.interfaces.nsITimer); - var timerCallback = {}; - timerCallback._context = this; - timerCallback.observe = function(aTimer){ - this._context.asyncOpenDelay(); - } - timer.init(timerCallback, 0, timer.TYPE_ONE_SHOT); - }, - - onCacheEntryAvailable: function(aDescriptor, aAccessGranted, aStatus){ - this._streamListener.onStartRequest(this, this._context); - - var inputStream = aDescriptor.openInputStream(0, -1, 0); - var scriptableInputStream = Components.classes["@mozilla.org/scriptableinputstream;1"] - .createInstance(Components.interfaces.nsIScriptableInputStream); - scriptableInputStream.init(inputStream); - var cacheContent = scriptableInputStream.read(scriptableInputStream.available()); - this.requestRespond(cacheContent); - scriptableInputStream.close(); - inputStream.close(); - aDescriptor.close(); - this.requestEnd(); - }, - - isPending: function(){ - return this._isPending; - }, - - cancel: function(aStatus){ - if(this._isPending){ - this._isPending = false; - - this._streamListener.onStopRequest(this, this._context, aStatus); - if(this.loadGroup){ - try{ - this.loadGroup.removeRequest(this, null, aStatus); - }catch(ex){} - } - } - this.status = aStatus; - }, - - resume: function(){ - throw Components.results.NS_ERROR_NOT_IMPLEMENTED; - }, - - suspend: function(){ - throw Components.results.NS_ERROR_NOT_IMPLEMENTED; - }, - - -// ********** ********* implements Bbs2chChannel ********** ********** - - - /** - * リクエストのスタート - */ - asyncOpenDelay: function(){ - this._streamListener.onStartRequest(this, this._context); - // observer は、Bbs2chThread 等の Channel を操作するオブジェクト - var observer = new this._observer(this); - }, - - - /** - * リクエストにデータを送る - * @param aString string データ - */ - requestRespond: function(aString){ - aString = aString.toString(); - var strLength = aString.length; - - if(!this._cacheMode){ - this._cacheOutputStream.write(aString, strLength); - } - - this._stringStream.setData(aString, strLength); - this._streamListener.onDataAvailable(this, this._context, - this._stringStream, this._dataSize, strLength); - this._dataSize += strLength; - }, - - - /** - * リクエストを終了する - */ - requestEnd: function(){ - if(!this._cacheMode){ - this._cacheOutputStream.close(); - this._cacheEntry.setMetaDataElement("request-method", "GET"); - this._cacheEntry.setMetaDataElement("response-head", "HTTP/1.1 200 OK\r\n"); - this._cacheEntry.markValid(); - this._cacheEntry.close(); - } - - this._streamListener.onStopRequest(this, this._context, Components.results.NS_OK); - if(this.loadGroup){ - try{ - this.loadGroup.removeRequest(this, null, Components.results.NS_OK); - }catch(ex){} - } - this._isPending = false; - } -} \ No newline at end of file From flyson @ users.sourceforge.jp Sat Dec 3 23:20:34 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sat, 3 Dec 2005 23:20:34 +0900 Subject: [Bbs2ch-cvs 63] CVS update: bbs2chreader/components Message-ID: <20051203142034.1875A2AC062@users.sourceforge.jp> Index: bbs2chreader/components/nsBbs2chProtocolHandler.js diff -u bbs2chreader/components/nsBbs2chProtocolHandler.js:1.7 bbs2chreader/components/nsBbs2chProtocolHandler.js:1.8 --- bbs2chreader/components/nsBbs2chProtocolHandler.js:1.7 Sun Nov 6 21:18:28 2005 +++ bbs2chreader/components/nsBbs2chProtocolHandler.js Sat Dec 3 23:20:33 2005 @@ -84,10 +84,10 @@ var tmpChannel; switch(mode){ - case "bbsmenu": + case "bbsmenu" : tmpChannel = this._redirectChannel("chrome://bbs2chreader/content/bbsmenu-page.xul"); break; - case "board:": + case "board:" : tmpChannel = this._redirectChannel("chrome://bbs2chreader/content/board-page.xul"); break; case "thread:" : @@ -101,7 +101,7 @@ var threadFactory = new b2rThreadFactory(); tmpChannel = Components.classes["@mozilla.org/bbs2ch-channel;1"] .createInstance(Components.interfaces.nsIBbs2chChannel); - tmpChannel.init(aURI, "text/plain", "Shift_JIS", threadFactory.create(aURI)); + tmpChannel.init(aURI, "text/html", "Shift_JIS", threadFactory.create(aURI)); break; case "board-rss:" : tmpChannel = Components.classes["@mozilla.org/bbs2ch-channel;1"] @@ -122,7 +122,6 @@ _init: function(){ this._subScrLoader.loadSubScript("chrome://bbs2chreader/content/global.js"); - this._subScrLoader.loadSubScript("chrome://bbs2chreader/content/channel.js"); // use Bbs2chThread this._subScrLoader.loadSubScript("chrome://bbs2chreader/content/httprequest.js"); this._subScrLoader.loadSubScript("chrome://bbs2chreader/content/abone.js"); @@ -137,9 +136,7 @@ _redirectChannel: function(aURISpec){ - var channelURI = Components.classes["@mozilla.org/network/standard-url;1"] - .createInstance(Components.interfaces.nsIURI); - channelURI.spec = aURISpec; + var channelURI = this._ioService.newURI(aURISpec, null, null); return this._ioService.newChannelFromURI(channelURI); }, From flyson @ users.sourceforge.jp Sun Dec 4 01:00:31 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sun, 4 Dec 2005 01:00:31 +0900 Subject: [Bbs2ch-cvs 64] CVS update: bbs2chreader/content/bbs2chreader Message-ID: <20051203160031.B06462AC04C@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/board-items.js diff -u bbs2chreader/content/bbs2chreader/board-items.js:1.12 bbs2chreader/content/bbs2chreader/board-items.js:1.13 --- bbs2chreader/content/bbs2chreader/board-items.js:1.12 Sun Nov 13 04:13:16 2005 +++ bbs2chreader/content/bbs2chreader/board-items.js Sun Dec 4 01:00:31 2005 @@ -258,7 +258,6 @@ this._items.push(logItemHash[i]); } } - dump("Bbs2chBoardItems.refresh : "+ (new Date().getTime() - startTime) +"ms\n"); }, @@ -356,12 +355,21 @@ search: function(aSearchString){ if(!this._lastItems) this._lastItems = this.items.concat(); - aSearchString = aSearchString.toLowerCase(); - + + var unicodeNormalizer = Components.classes["@mozilla.org/intl/unicodenormalizer;1"] + .createInstance(Components.interfaces.nsIUnicodeNormalizer); + var normalizedStr = {}; + + var searchString = aSearchString.toLowerCase(); + unicodeNormalizer.NormalizeUnicodeNFKC(searchString, normalizedStr); + searchString = normalizedStr.value; + var resultItems = new Array(); for(var i=0; i Index: bbs2chreader/skin/classic/bbs2chreader/type-be2ch.gif From flyson @ users.sourceforge.jp Sun Dec 4 01:51:14 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sun, 4 Dec 2005 01:51:14 +0900 Subject: [Bbs2ch-cvs 66] CVS update: bbs2chreader/skin/classic/bbs2chreader Message-ID: <20051203165114.DAEC82AC11D@users.sourceforge.jp> Index: bbs2chreader/skin/classic/bbs2chreader/type-jbbs.gif Index: bbs2chreader/skin/classic/bbs2chreader/bbsmenu-page.css diff -u bbs2chreader/skin/classic/bbs2chreader/bbsmenu-page.css:1.5 bbs2chreader/skin/classic/bbs2chreader/bbsmenu-page.css:1.6 --- bbs2chreader/skin/classic/bbs2chreader/bbsmenu-page.css:1.5 Sun Nov 20 14:33:14 2005 +++ bbs2chreader/skin/classic/bbs2chreader/bbsmenu-page.css Sun Dec 4 01:51:14 2005 @@ -15,6 +15,14 @@ -moz-image-region: rect(0px, 16px, 16px, 0px); } +/* JBBS */ +#treeBbsMenu treechildren::-moz-tree-image(type-3) { + margin: 0px 2px; + list-style-image: url("chrome://bbs2chreader/skin/type-jbbs.gif") !important; + -moz-image-region: rect(0px, 16px, 16px, 0px); +} + + /* Machi BBS */ #treeBbsMenu treechildren::-moz-tree-image(type-4) { margin: 0px 2px; From flyson @ users.sourceforge.jp Sun Dec 11 01:52:40 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Sun, 11 Dec 2005 01:52:40 +0900 Subject: [Bbs2ch-cvs 67] CVS update: bbs2chreader/content/bbs2chreader Message-ID: <20051210165240.E4EC32AC0A3@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/post.js diff -u bbs2chreader/content/bbs2chreader/post.js:1.1 bbs2chreader/content/bbs2chreader/post.js:1.2 --- bbs2chreader/content/bbs2chreader/post.js:1.1 Tue Sep 13 22:41:22 2005 +++ bbs2chreader/content/bbs2chreader/post.js Sun Dec 11 01:52:40 2005 @@ -180,7 +180,8 @@ //本文の長さチェック var checkMessage=this._escape(this.message).replace(/%[0-9a-fA-F]{2}/g,"x"); - if(checkMessage.length > this.board.getSetting("BBS_MESSAGE_COUNT")){ + var bbsMessageCount = this.board.getSetting("BBS_MESSAGE_COUNT"); + if(bbsMessageCount && checkMessage.length > bbsMessageCount){ flag |= this.ERROR_MESSAGE_TOO_LONG; } @@ -191,13 +192,15 @@ //名前の長さチェック var checkName=this._escape(this.name).replace(/%[0-9a-fA-F]{2}/g,"x"); - if(checkName.length > this.board.getSetting("BBS_NAME_COUNT")){ + var bbsNameCount = this.board.getSetting("BBS_NAME_COUNT"); + if(bbsNameCount && checkName.length > bbsNameCount){ flag |= this.ERROR_NAME_TOO_LONG; } //メールの長さチェック var checkMail = this._escape(this.mail).replace(/%[0-9a-fA-F]{2}/g,"x"); - if(checkMail.length > this.board.getSetting("BBS_MAIL_COUNT")){ + var bbsMailCount = this.board.getSetting("BBS_MAIL_COUNT"); + if(bbsMailCount && checkMail.length > bbsMailCount){ flag |= this.ERROR_MAIL_TOO_LONG; } From flyson @ users.sourceforge.jp Mon Dec 12 02:19:11 2005 From: flyson @ users.sourceforge.jp (flyson) Date: Mon, 12 Dec 2005 02:19:11 +0900 Subject: [Bbs2ch-cvs 68] CVS update: bbs2chreader/content/bbs2chreader Message-ID: <20051211171911.9DEA62AC011@users.sourceforge.jp> Index: bbs2chreader/content/bbs2chreader/board-page.xul diff -u bbs2chreader/content/bbs2chreader/board-page.xul:1.13 bbs2chreader/content/bbs2chreader/board-page.xul:1.14 --- bbs2chreader/content/bbs2chreader/board-page.xul:1.13 Sat Aug 6 01:55:06 2005 +++ bbs2chreader/content/bbs2chreader/board-page.xul Mon Dec 12 02:19:11 2005 @@ -7,7 +7,7 @@ %board-page-dtd; ]>