From svnnotify @ sourceforge.jp Tue Oct 9 21:12:12 2007 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Tue, 09 Oct 2007 21:12:12 +0900 Subject: [Bbs2ch-cvs 243] =?utf-8?b?WzIyNV0gIOOCueODrOOCv+OCpOODiOODq+OBruaWh+Wtl+WPgg==?= =?utf-8?b?54Wn44KS5bGV6ZaL?= Message-ID: <1191931932.076789.8933.nullmailer@users.sourceforge.jp> Revision: 225 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=bbs2ch&view=rev&rev=225 Author: flyson Date: 2007-10-09 21:12:11 +0900 (Tue, 09 Oct 2007) Log Message: ----------- スレタイトルの文字参照を展開 Modified Paths: -------------- trunk/bbs2chreader/chrome/content/bbs2chreader/board/items.js -------------- next part -------------- Modified: trunk/bbs2chreader/chrome/content/bbs2chreader/board/items.js =================================================================== --- trunk/bbs2chreader/chrome/content/bbs2chreader/board/items.js 2007-09-28 18:33:48 UTC (rev 224) +++ trunk/bbs2chreader/chrome/content/bbs2chreader/board/items.js 2007-10-09 12:12:11 UTC (rev 225) @@ -237,7 +237,7 @@ item.datID = RegExp.$1; item.id = "item-" + item.datID; item.number = i + 1; - item.title = RegExp.$2; + item.title = this.htmlToText(RegExp.$2); item.count = Number(RegExp.$3); item.read = 0; item.unread = 0; @@ -280,6 +280,27 @@ }, + htmlToText: function(aStr){ + if(aStr.indexOf("&") == -1) return aStr; + var fromStr = Components.classes["@mozilla.org/supports-string;1"] + .createInstance(Components.interfaces.nsISupportsString); + fromStr.data = aStr; + try{ + var toStr = { value: null }; + var formatConverter = Components.classes["@mozilla.org/widget/htmlformatconverter;1"] + .createInstance(Components.interfaces.nsIFormatConverter); + formatConverter.convert("text/html", fromStr, fromStr.toString().length, + "text/unicode", toStr, {}); + }catch(e){ + return aStr; + } + if(toStr.value){ + toStr = toStr.value.QueryInterface(Components.interfaces.nsISupportsString); + return toStr.toString(); + } + return aStr; + }, + /** * ログディレクトリ内の .idx を読み込んでログアイテムハッシュを作る */ @@ -297,7 +318,7 @@ cacheItem.datID = cacheLine[0]; cacheItem.lastModified = cacheLine[1]; cacheItem.count = parseInt(cacheLine[2]); - cacheItem.title = cacheLine[3]; + cacheItem.title = this.htmlToText(cacheLine[3]); cacheItem.id = "item-" + cacheItem.datID; cacheItemHash[cacheItem.id] = cacheItem; } From svnnotify @ sourceforge.jp Thu Oct 18 23:41:55 2007 From: svnnotify @ sourceforge.jp (svnnotify @ sourceforge.jp) Date: Thu, 18 Oct 2007 23:41:55 +0900 Subject: [Bbs2ch-cvs 244] =?utf-8?b?WzIyNl0gIOabuOOBjei+vOOBv+ODleOCo+ODq+OCvw==?= Message-ID: <1192718515.316062.18957.nullmailer@users.sourceforge.jp> Revision: 226 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=bbs2ch&view=rev&rev=226 Author: flyson Date: 2007-10-18 23:41:54 +0900 (Thu, 18 Oct 2007) Log Message: ----------- ?吾?莨若??????? Modified Paths: -------------- trunk/bbs2chreader/chrome/content/bbs2chreader/post-wizard.js trunk/bbs2chreader/chrome/content/bbs2chreader/post-wizard.xul Added Paths: ----------- trunk/bbs2chreader/chrome/content/bbs2chreader/post/ trunk/bbs2chreader/chrome/content/bbs2chreader/post/filter.js trunk/bbs2chreader/chrome/content/bbs2chreader/post/textarea.xml trunk/bbs2chreader/defaults/postFilters/ trunk/bbs2chreader/defaults/postFilters/extensionList.xml -------------- next part -------------- Added: trunk/bbs2chreader/chrome/content/bbs2chreader/post/filter.js =================================================================== --- trunk/bbs2chreader/chrome/content/bbs2chreader/post/filter.js 2007-10-09 12:12:11 UTC (rev 225) +++ trunk/bbs2chreader/chrome/content/bbs2chreader/post/filter.js 2007-10-18 14:41:54 UTC (rev 226) @@ -0,0 +1,153 @@ + + +function b2rPostFilterManager(){ + this._filters = new Array(); +} + +b2rPostFilterManager.prototype = { + get filters(){ + return this._filters; + }, + + loadScripts: function(){ + this._filters = new Array(); + var fileExtensionTest = /\.xml$/i; + + var bbs2chreaderID = "{0B9D558E-6983-486b-9AAD-B6CBCD2FC807}"; + var extensionManager = Cc["@mozilla.org/extensions/manager;1"].getService(Ci.nsIExtensionManager); + var installLocation = extensionManager.getInstallLocation(bbs2chreaderID); + var postFiltersFolder = installLocation.getItemFile(bbs2chreaderID, "defaults/postFilters") + .clone().QueryInterface(Ci.nsILocalFile); + var entries = postFiltersFolder.directoryEntries.QueryInterface(Ci.nsIDirectoryEnumerator); + while(true){ + var entry = entries.nextFile; + if(!entry) break; + if(!fileExtensionTest.test(entry.leafName)) continue; + + var postFilter = this._createFilter(entry); + if(postFilter){ + this._filters.push(postFilter); + } + } + entries.close(); + + + var postFiltersProfileFolder = gBbs2chService.getDataDir(); + postFiltersProfileFolder.appendRelativePath("postFilters"); + if(!postFiltersProfileFolder.exists()){ + postFiltersProfileFolder.create(Ci.nsIFile.DIRECTORY_TYPE, 0777); + } + var entries = postFiltersProfileFolder.directoryEntries.QueryInterface(Ci.nsIDirectoryEnumerator); + while(true){ + var entry = entries.nextFile; + if(!entry) break; + if(!fileExtensionTest.test(entry.leafName)) continue; + + var postFilter = this._createFilter(entry); + if(postFilter){ + this._filters.push(postFilter); + } + } + entries.close(); + }, + + _createFilter: function(aLocalFile){ + var fileInputStream = Cc["@mozilla.org/network/file-input-stream;1"] + .createInstance(Ci.nsIFileInputStream); + fileInputStream.init(aLocalFile, 0x01, 0666, Ci.nsIFileInputStream.CLOSE_ON_EOF); + var parser = new DOMParser(); + var doc = parser.parseFromStream(fileInputStream, null, aLocalFile.fileSize , "text/xml"); + if(doc.firstChild.nodeName!="postFilter") return null; + doc.normalize(); + + var filter = {}; + filter.title = this._getNodeText(doc, "postFilter/title/text()"); + if(!filter.title) filter.title = aLocalFile.leafName.replace(/\.xml$/, ""); + filter.description = this._getNodeText(doc, "postFilter/description/text()"); + filter.version = this._getNodeText(doc, "postFilter/version/text()"); + filter.script = this._getNodeText(doc, "postFilter/script/text()"); + filter.scriptFile = aLocalFile; + filter.scriptDoc = doc; + if(!filter.script) return null; + + return filter; + }, + + _getNodeText: function(aDoc, aXpath){ + var result = new Array(); + var xpathResult = aDoc.evaluate(aXpath, aDoc, null, + XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); + for(let i=0; i + + + + + + + + + + \ No newline at end of file Modified: trunk/bbs2chreader/chrome/content/bbs2chreader/post-wizard.js =================================================================== --- trunk/bbs2chreader/chrome/content/bbs2chreader/post-wizard.js 2007-10-09 12:12:11 UTC (rev 225) +++ trunk/bbs2chreader/chrome/content/bbs2chreader/post-wizard.js 2007-10-18 14:41:54 UTC (rev 226) @@ -38,6 +38,7 @@ var gThreadURL; var gPost; +var gFilterManager; var gBbs2chService = Components.classes["@mozilla.org/bbs2ch-service;1"] .getService(Components.interfaces.nsIBbs2chService); var gIoService = Components.classes["@mozilla.org/network/io-service;1"] @@ -96,8 +97,9 @@ wizPostWizard.title = "POST: " + gPost.title + " [bbs2chreader]"; document.getElementById("lblThreadTitle").value = gPost.title; + mailDisabled(); - + initPostFilter(); checkBeLogin(); } @@ -116,6 +118,27 @@ document.getElementById("txtMail").disabled = document.getElementById("chkSage").checked; } +function initPostFilter(){ + gFilterManager = new b2rPostFilterManager(); + gFilterManager.loadScripts(); + var filterPopup = document.getElementById("filterPopup"); + + for(let[key, value] in Iterator(gFilterManager.filters)){ + var menuitem = document.createElement("menuitem"); + menuitem.setAttribute("label", value.title); + menuitem.setAttribute("value", key); + filterPopup.appendChild(menuitem); + } + filterPopup.parentNode.parentNode.buildContextMenu(); +} + +function execPostFilter(aScriptIndex){ + var postFilter = gFilterManager.filters[aScriptIndex]; + var messageText = document.getElementById("txtMsg"); + + messageText.value = gFilterManager.execFilterScript(postFilter, messageText); +} + /** * ハードコーティングな文字列をスクリプト内部で利用可能な文字列に変換 * @param aString string 文字列 Modified: trunk/bbs2chreader/chrome/content/bbs2chreader/post-wizard.xul =================================================================== --- trunk/bbs2chreader/chrome/content/bbs2chreader/post-wizard.xul 2007-10-09 12:12:11 UTC (rev 225) +++ trunk/bbs2chreader/chrome/content/bbs2chreader/post-wizard.xul 2007-10-18 14:41:54 UTC (rev 226) @@ -12,13 +12,17 @@ persist="screenX screenY width height" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> +