From svnnotify @ sourceforge.jp Sun Jul 22 02:54:38 2007 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Sun, 22 Jul 2007 02:54:38 +0900 Subject: [Bbs2ch-cvs 186] =?utf-8?b?WzE2OF0gIOeLrOiHquWxpeattOOCkuOCt+ODs+ODl+ODq+OBqw==?= =?utf-8?b?44GX44Gf?= Message-ID: <20070721175438.C0D422AC024@users.sourceforge.jp> Revision: 168 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=bbs2ch&view=rev&rev=168 Author: flyson Date: 2007-07-22 02:54:38 +0900 (Sun, 22 Jul 2007) Log Message: ----------- 独自履歴をシンプルにした Modified Paths: -------------- trunk/bbs2chreader/chrome/content/bbs2chreader/board/page.js trunk/bbs2chreader/chrome/content/bbs2chreader/server/thread.js trunk/bbs2chreader/components/idl/nsIBbs2chService.idl trunk/bbs2chreader/components/nsBbs2chService.js trunk/bbs2chreader/components/nsIBbs2chService.xpt Modified: trunk/bbs2chreader/chrome/content/bbs2chreader/board/page.js =================================================================== --- trunk/bbs2chreader/chrome/content/bbs2chreader/board/page.js 2007-07-21 16:32:24 UTC (rev 167) +++ trunk/bbs2chreader/chrome/content/bbs2chreader/board/page.js 2007-07-21 17:54:38 UTC (rev 168) @@ -204,7 +204,7 @@ document.getElementById("lblTitle").setAttribute("value", gBoardItems.title); if(gFirstInitTreeSubject){ - gBbs2chService.visitBoardPage(gBoardItems.url, gBoardItems.title); + gBbs2chService.visitPage(gBoardItems.url, gBoardItems.title, 0); gFirstInitTreeSubject = false; } Modified: trunk/bbs2chreader/chrome/content/bbs2chreader/server/thread.js =================================================================== --- trunk/bbs2chreader/chrome/content/bbs2chreader/server/thread.js 2007-07-21 16:32:24 UTC (rev 167) +++ trunk/bbs2chreader/chrome/content/bbs2chreader/server/thread.js 2007-07-21 17:54:38 UTC (rev 168) @@ -254,7 +254,7 @@ close: function(){ if(this._headerResponded && this.dat){ var title = this._bbs2chService.fromSJIS(this.dat.title); - this._bbs2chService.visitThreadPage(this.dat.boardURL, this.dat.id, title); + this._bbs2chService.visitPage(this.dat.threadPlainURL, title, 1); } this._opend = false; this._httpChannel = null; Modified: trunk/bbs2chreader/components/idl/nsIBbs2chService.idl =================================================================== --- trunk/bbs2chreader/components/idl/nsIBbs2chService.idl 2007-07-21 16:32:24 UTC (rev 167) +++ trunk/bbs2chreader/components/idl/nsIBbs2chService.idl 2007-07-21 17:54:38 UTC (rev 168) @@ -236,6 +236,5 @@ */ void maruAuth(); - boolean visitBoardPage(in nsIURL aBoardURL, in AString aTitle); - boolean visitThreadPage(in nsIURL aBoardURL, in ACString aDatID, in AString aTitle); + boolean visitPage(in nsIURL aBoardURL, in AString aTitle, in unsigned long aType); }; Modified: trunk/bbs2chreader/components/nsBbs2chService.js =================================================================== --- trunk/bbs2chreader/components/nsBbs2chService.js 2007-07-21 16:32:24 UTC (rev 167) +++ trunk/bbs2chreader/components/nsBbs2chService.js 2007-07-21 17:54:38 UTC (rev 168) @@ -60,105 +60,56 @@ this._historyDB.beginTransaction(); try{ - if(!this._historyDB.tableExists("board_history")){ + if(!this._historyDB.tableExists("history")){ var sql = <>.toString(); this._historyDB.executeSimpleSQL(sql); } - if(!this._historyDB.tableExists("thread_history")){ - var sql = <>.toString(); - this._historyDB.executeSimpleSQL(sql); - } // 最終訪問日が30以前のデータを削除 // XXX 設定で日付を指定できるようにする - var sql = "DELETE FROM board_history WHERE last_visited < strftime('%s', 'now', '-30 day')"; + var sql = "DELETE FROM history WHERE last_visited < strftime('%s', 'now', '-30 day')"; this._historyDB.executeSimpleSQL(sql); - sql = "DELETE FROM thread_history WHERE last_visited < strftime('%s', 'now', '-30 day')"; - this._historyDB.executeSimpleSQL(sql); }finally{ this.historyDB.commitTransaction(); } }, - visitBoardPage: function(aBoardURL, aTitle){ - var boardID = null; + visitPage: function(aURL, aTitle, aType){ + var pageID = null; this.historyDB.beginTransaction(); try{ - var sql = "SELECT id FROM board_history WHERE url=?1"; + var sql = "SELECT id FROM history WHERE url=?1"; var statement = this.historyDB.createStatement(sql); - statement.bindStringParameter(0, aBoardURL.spec); + statement.bindStringParameter(0, aURL.spec); if(statement.executeStep()){ - boardID = statement.getInt32(0); + pageID = statement.getInt32(0); } statement.reset(); - if(boardID){ - sql = "UPDATE board_history SET title=?1, visit_count=visit_count+1, last_visited=?2 WHERE id=?3;"; + if(pageID){ + sql = "UPDATE history SET title=?1, visit_count=visit_count+1, last_visited=?2 WHERE id=?3;"; statement = this.historyDB.createStatement(sql); statement.bindStringParameter(0, aTitle); statement.bindInt32Parameter(1, Date.now() / 1000); - statement.bindInt32Parameter(2, boardID); + statement.bindInt32Parameter(2, pageID); statement.execute(); }else{ - sql = "INSERT INTO board_history(url, title, last_visited) VALUES(?1, ?2, ?3);"; + sql = "INSERT INTO history(url, title, type, last_visited) VALUES(?1, ?2, ?3, ?4);"; statement = this.historyDB.createStatement(sql); - statement.bindStringParameter(0, aBoardURL.spec); + statement.bindStringParameter(0, aURL.spec); statement.bindStringParameter(1, aTitle); - statement.bindInt32Parameter(2, Date.now() / 1000); - statement.execute(); - } - }finally{ - this.historyDB.commitTransaction(); - } - return true; - }, - - visitThreadPage: function(aBoardURL, aDatID, aTitle){ - var threadID = null; - - this.historyDB.beginTransaction(); - try{ - var sql = "SELECT id FROM thread_history WHERE board_url=?1 AND dat_id=?2;"; - var statement = this.historyDB.createStatement(sql); - statement.bindStringParameter(0, aBoardURL.spec); - statement.bindStringParameter(1, aDatID); - if(statement.executeStep()){ - threadID = statement.getInt32(0); - } - statement.reset(); - - if(threadID){ - sql = "UPDATE thread_history SET title=?1, visit_count=visit_count+1, last_visited=?2 WHERE id=?3;"; - statement = this.historyDB.createStatement(sql); - statement.bindStringParameter(0, aTitle); - statement.bindInt32Parameter(1, Date.now() / 1000); - statement.bindInt32Parameter(2, threadID); - statement.execute(); - }else{ - sql = "INSERT INTO thread_history(board_url, dat_id, title, last_visited) VALUES(?1, ?2, ?3, ?4);"; - statement = this.historyDB.createStatement(sql); - statement.bindStringParameter(0, aBoardURL.spec); - statement.bindStringParameter(1, aDatID); - statement.bindStringParameter(2, aTitle); + statement.bindInt32Parameter(2, aType); statement.bindInt32Parameter(3, Date.now() / 1000); statement.execute(); } @@ -784,12 +735,9 @@ os.notifyObservers(null, "b2r-2ch-viewer-auth", "NG"); }, - visitBoardPage: function(aBoardURL, aTitle){ - return this._globalHistory.visitBoardPage(aBoardURL, aTitle); - }, - visitThreadPage: function(aBoardURL, aDatID, aTitle){ - return this._globalHistory.visitThreadPage(aBoardURL, aDatID, aTitle); + visitPage: function(aURL, aTitle, aType){ + return this._globalHistory.visitPage(aURL, aTitle, aType); }, Modified: trunk/bbs2chreader/components/nsIBbs2chService.xpt =================================================================== (Binary files differ) From svnnotify @ sourceforge.jp Sun Jul 22 03:25:51 2007 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Sun, 22 Jul 2007 03:25:51 +0900 Subject: [Bbs2ch-cvs 187] =?utf-8?b?WzE2OV0gIOWxpeattOODoeODi+ODpeODvOOCkueLrOiHquWxpQ==?= =?utf-8?b?5q2044Gr5aSJ5pu0?= Message-ID: <20070721182551.55AC92AC011@users.sourceforge.jp> Revision: 169 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=bbs2ch&view=rev&rev=169 Author: flyson Date: 2007-07-22 03:25:50 +0900 (Sun, 22 Jul 2007) Log Message: ----------- 履歴メニューを独自履歴に変更 Modified Paths: -------------- trunk/bbs2chreader/chrome/content/bbs2chreader/bbsmenu/page.js trunk/bbs2chreader/chrome/content/bbs2chreader/bbsmenu/page.xul Modified: trunk/bbs2chreader/chrome/content/bbs2chreader/bbsmenu/page.js =================================================================== --- trunk/bbs2chreader/chrome/content/bbs2chreader/bbsmenu/page.js 2007-07-21 17:54:38 UTC (rev 168) +++ trunk/bbs2chreader/chrome/content/bbs2chreader/bbsmenu/page.js 2007-07-21 18:25:50 UTC (rev 169) @@ -6,7 +6,6 @@ var gTreeBbsMenuView; var gBbsMenuFile; var gBbsMenuXMLFile; -var gHistoryRDF; function startup(){ gBbsmenuUpdater = document.getElementById("bbsmenuUpdater"); @@ -25,16 +24,6 @@ document.loadOverlay(overlayURL, null); } - if("@mozilla.org/rdf/datasource;1?name=history" in Components.classes){ - gHistoryRDF = new b2rRDF("rdf:history"); - var btnHistory = document.getElementById("btnHistory"); - btnHistory.hidden = !gBbs2chService.pref.getBoolPref( - "extensions.bbs2chreader.bbsmenu_historymenu_show"); - }else{ - var btnHistory = document.getElementById("btnHistory"); - btnHistory.hidden = true; - } - // ツリーの偶数行に色をつける if(gBbs2chService.pref.getBoolPref("extensions.bbs2chreader.enable_tree_stripe2")) gTreeBbsMenu.setAttribute("stripe", "true"); @@ -140,61 +129,70 @@ * 履歴を読んで History メニューを更新する */ function updateHistoryMenu(){ - const NS_NC_NAME = "http://home.netscape.com/NC-rdf#Name"; - var popHistory = document.getElementById("popHistory"); while(popHistory.hasChildNodes()){ popHistory.removeChild(popHistory.firstChild); } - var treeHiddenHistory = document.getElementById("treeHiddenHistory"); - if(treeHiddenHistory.hidden){ - treeHiddenHistory.hidden = false; - treeHiddenHistory.database.AddDataSource(gHistoryRDF.ds); - } - - treeHiddenHistory.ref = "find:datasource=history&match=URL&method=startswith&text=bbs2ch:board:"; - var boardCount = treeHiddenHistory.treeBoxObject.view.rowCount; var boardMax = gBbs2chService.pref.getIntPref("extensions.bbs2chreader.bbsmenu_historymenu_board_max"); if(boardMax > 15) boardMax = 15; - if(boardCount > boardMax) boardCount = boardMax; - if(boardCount > 0){ - for(var i=0; i 15) threadMax = 15; - if(threadCount > threadMax) threadCount = threadMax; - if(threadCount > 0){ - if(boardCount > 0) popHistory.appendChild(document.createElement("menuseparator")); + sql = sql = "SELECT url, title FROM history WHERE type=1 ORDER BY last_visited DESC LIMIT ?1"; + statement = gBbs2chService.historyDB.createStatement(sql); + statement.bindInt32Parameter(0, threadMax); - for(i=0; i 0){ + if(type == gBbs2chService.BOARD_TYPE_MACHI){ + threadURL += "&LAST=" + threadViewLimit; + }else{ + threadURL += "l" + threadViewLimit; + } + } + + var menuNode = document.createElement("menuitem"); + menuNode.setAttribute("label", title); + menuNode.setAttribute("value", threadURL); + menuNode.setAttribute("tooltiptext", threadURL); + popHistory.appendChild(menuNode); } + statement.reset(); + }finally{ + gBbs2chService.historyDB.commitTransaction(); } } Modified: trunk/bbs2chreader/chrome/content/bbs2chreader/bbsmenu/page.xul =================================================================== --- trunk/bbs2chreader/chrome/content/bbs2chreader/bbsmenu/page.xul 2007-07-21 17:54:38 UTC (rev 168) +++ trunk/bbs2chreader/chrome/content/bbs2chreader/bbsmenu/page.xul 2007-07-21 18:25:50 UTC (rev 169) @@ -14,7 +14,6 @@ + Modified: branches/GP_BRANCH/chrome/content/bbs2chreader/res/skin-default/popup.js =================================================================== --- branches/GP_BRANCH/chrome/content/bbs2chreader/res/skin-default/popup.js 2007-07-23 13:29:11 UTC (rev 170) +++ branches/GP_BRANCH/chrome/content/bbs2chreader/res/skin-default/popup.js 2007-07-23 13:41:43 UTC (rev 171) @@ -270,7 +270,7 @@ b2rPopup.videoPopup = { init: function(){ - var xpathYoutube = "descendant::a[@class='outLink'][contains(@href, 'http://www.youtube.com/watch')]"; + var xpathYoutube = "descendant::a[@class='outLink'][contains(@href, '.youtube.com/watch')]"; var xpathStage6 = "descendant::a[@class='outLink'][contains(@href, 'http://stage6.divx.com/content/show')]"; var xpathStage6m = "descendant::a[@class='outLink'][contains(@href, 'http://stage6.divx.com/members')]"; var xpathStage6c = "descendant::a[@class='outLink'][contains(@href, 'http://stage6.client.jp/#')]"; @@ -289,7 +289,7 @@ var url = targetNode.href; var content; - if(url.indexOf("www.youtube.com")!=-1 && url.match(/v=([^\&]+)/)){ + if(url.indexOf(".youtube.com")!=-1 && url.match(/v=([^\&]+)/)){ content = b2rPopup.videoPopup.createYoutubeContent(RegExp.$1); }else if(url.indexOf("stage6.divx.com")!=-1 && url.match(/content_id=([^\&]+)/)){ content = b2rPopup.videoPopup.createStage6Content(RegExp.$1); Modified: branches/GP_BRANCH/chrome/content/bbs2chreader/server/thread.js =================================================================== --- branches/GP_BRANCH/chrome/content/bbs2chreader/server/thread.js 2007-07-23 13:29:11 UTC (rev 170) +++ branches/GP_BRANCH/chrome/content/bbs2chreader/server/thread.js 2007-07-23 13:41:43 UTC (rev 171) @@ -3,6 +3,7 @@ start: function(aServerHandler){ 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); @@ -237,6 +238,13 @@ this.write(this.converter.getNewMark() +"\n"); } } + + if(this.dat.maruGetted){ + this.write(this.converter.getFooter("ok")); + this.close(); + } + + this._handler.flush(); this.datDownload(); }, @@ -246,10 +254,8 @@ close: function(){ if(this._headerResponded && this.dat){ - var b2rStorageService = Components.classes["@mozilla.org/b2r-atorage-service;1"] - .getService(Components.interfaces.b2rIStorageService); var title = this._bbs2chService.fromSJIS(this.dat.title); - b2rStorageService.visitThreadPage(this.dat.boardURL, this.dat.id, title); + this._bbs2chService.visitPage(this.dat.threadPlainURL, title, 1); } this._opend = false; this._httpChannel = null; @@ -370,8 +376,19 @@ datDownload: function(aKako){ if(aKako){ - this.httpChannel = this._bbs2chService.getHttpChannel(this.dat.datKakoURL); + if(this._bbs2chService.maruLogined){ + var sid = encodeURIComponent(this._bbs2chService.maruSessionID); + var datURLSpec = this.dat.threadPlainURL.spec.replace(/\/read\.cgi\//, "/offlaw.cgi/"); + datURLSpec += "?raw=.0&sid=" + sid; + var datKakoURL = this._ioService.newURI(datURLSpec, null, null) + .QueryInterface(Components.interfaces.nsIURL); + this.httpChannel = this._bbs2chService.getHttpChannel(datKakoURL); + this._maruMode = true; + }else{ + this.httpChannel = this._bbs2chService.getHttpChannel(this.dat.datKakoURL); + } this._kakoDatDownload = true; + }else{ this.httpChannel = this._bbs2chService.getHttpChannel(this.dat.datURL); this._kakoDatDownload = false; @@ -428,6 +445,15 @@ } this._aboneChecked = true; + + if(this._maruMode && this._data.length == 0){ + if(availableData.match(/\n/)){ + availableData = RegExp.rightContext; + }else{ + return; + } + } + // NULL ?? availableData = availableData.replace(/\x00/g, "*"); // ???? DAT ??????? @@ -457,7 +483,13 @@ this._bInputStream = null; aRequest.QueryInterface(Components.interfaces.nsIHttpChannel); - var httpStatus = aRequest.responseStatus; + try{ + var httpStatus = aRequest.responseStatus; + }catch(ex){ + this.write(this.converter.getFooter("network_error")); + this.close(); + return; + } try{ this.dat.lastModified = aRequest.getResponseHeader("Last-Modified"); @@ -529,6 +561,7 @@ // .dat ??????? this.dat.appendContent(aDatContent); // .idx ?????+ if(this._maruMode) this.dat.maruGetted = true; this.dat.flushIdx(); } } @@ -904,6 +937,14 @@ return this._lastModified = aValue; }, + get maruGetted(){ + return this._maruGetted; + }, + set maruGetted(aValue){ + return this._maruGetted = aValue; + }, + + get queryHash(){ if(!this._queryHash){ this._queryHash = new Array(); @@ -953,10 +994,12 @@ 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._maruGetted = idxContent.match(/^maruGetted=(.+)/m) ? (RegExp.$1=="true") : false; }else{ this._title = ""; this._lineCount = 0; this._lastModified = ""; + this._maruGetted = false; } }, @@ -966,13 +1009,9 @@ 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); + if(this.maruGetted) idxContent.push("maruGetted=true"); idxContent = idxContent.join("\n"); this._bbs2chService.writeFile(this.idxFile.path, idxContent, false); - - var b2rStorageService = Components.classes["@mozilla.org/b2r-atorage-service;1"] - .getService(Components.interfaces.b2rIStorageService); - b2rStorageService.saveDatIndex(this.id, this.boardURL, this._bbs2chService.fromSJIS(this.title), - this.lineCount, this.lastModified, 0); }, @@ -1092,7 +1131,6 @@ skinURISpec = fileURL.resolve(encodeURIComponent(skinName)) + "/"; } - this._tmpHeader = this._bbs2chService.readLocalURI(skinURISpec + "Header.html"); this._tmpFooter = this._bbs2chService.readLocalURI(skinURISpec + "Footer.html"); this._tmpRes = this._bbs2chService.readLocalURI(skinURISpec + "Res.html"); @@ -1249,4 +1287,4 @@ return false; } -}; +}; \ No newline at end of file Modified: branches/GP_BRANCH/chrome/content/bbs2chreader/settings/general-pane.js =================================================================== --- branches/GP_BRANCH/chrome/content/bbs2chreader/settings/general-pane.js 2007-07-23 13:29:11 UTC (rev 170) +++ branches/GP_BRANCH/chrome/content/bbs2chreader/settings/general-pane.js 2007-07-23 13:41:43 UTC (rev 171) @@ -79,5 +79,10 @@ var txtDataDir = document.getElementById("txtDataDir"); if(!dataDirPref.value) return ""; return dataDirPref.value; + }, + + openMaruDialog: function(){ + document.documentElement.openSubDialog( + "chrome://bbs2chreader/content/settings/maru.xul", "", null); } }; \ No newline at end of file Modified: branches/GP_BRANCH/chrome/content/bbs2chreader/settings/general-pane.xul =================================================================== --- branches/GP_BRANCH/chrome/content/bbs2chreader/settings/general-pane.xul 2007-07-23 13:29:11 UTC (rev 170) +++ branches/GP_BRANCH/chrome/content/bbs2chreader/settings/general-pane.xul 2007-07-23 13:41:43 UTC (rev 171) @@ -70,10 +70,15 @@ onsyncfrompreference="return gGeneralPane.readDataDirPref()"/>