Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/chrome/content/chaika/bbsmenu/page.js b/chrome/content/chaika/bbsmenu/page.js
- index 7c0b9f5..f6538cc 100644
- --- a/chrome/content/chaika/bbsmenu/page.js
- +++ b/chrome/content/chaika/bbsmenu/page.js
- @@ -239,6 +239,9 @@ var SearchBox = {
- case "find2ch":
- this._textbox.emptyText = "2ch 検索";
- break;
- + case "domo2":
- + this._textbox.emptyText = "2ch 検索 (domo2)";
- + break;
- case "boardFilter":
- this._textbox.emptyText = "フィルタ";
- break;
- @@ -256,6 +259,9 @@ var SearchBox = {
- case "find2ch":
- Find2ch.search(aSearchStr);
- break;
- + case "domo2":
- + Domo2.search(aSearchStr);
- + break;
- case "boardFilter":
- Bbsmenu.filter(aSearchStr);
- break;
- @@ -700,6 +706,110 @@ var Find2ch = {
- };
- +var Domo2 = {
- +
- + _downloader: null,
- + _infoNode: null,
- +
- + search: function Domo2_search(aSearchStr){
- + const QUERY_URL = 'http://www.domo2.net/search/search.cgi?word=';
- + const ENCODE = 'EUC-JP';
- + const QUERY = escape(this._convertEncode(aSearchStr, ENCODE));
- +
- + var ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
- + var url = ioService.newURI(QUERY_URL + QUERY, null, null);
- +
- + this._downloader = new ChaikaSimpleDownloader();
- + this._downloader.download(url, ENCODE, this);
- +
- + Notification.removeAll();
- + this._infoNode = Notification.info("検索中");
- + },
- +
- +
- + onStop: function Domo2_onStop(aDownloader, aResponse, aHttpStatus){
- + if(aResponse){
- + this.initTree(aResponse);
- + }
- +
- + Notification.remove(this._infoNode);
- + this._downloader = null;
- + this._infoNode = null;
- + },
- +
- +
- + onError: function Domo2_onError(aDownloader, aErrorCode){
- + Notification.critical("検索に失敗しました", 2500);
- + Notification.remove(this._infoNode);
- + this._downloader = null;
- + this._infoNode = null;
- + },
- +
- + initTree: function Domo2_initTree(aResponse){
- + var resultDoc = this._convertDocFromHTML(aResponse);
- + Tree.initTree(resultDoc, MODE_FIND2CH);
- + },
- +
- + _convertDocFromHTML: function(aResponseStr){
- + var domParser = Cc["@mozilla.org/xmlextras/domparser;1"]
- + .createInstance(Ci.nsIDOMParser);
- + var findDoc = domParser.parseFromString(aResponseStr, "text/html");
- +
- + var resultDoc = document.implementation.createDocument(null, '', null);
- + var root = document.createElement('category');
- +
- + var resultObj = {}; //key: board name, value: an array of threads
- + Array.slice(findDoc.querySelectorAll('table tr:not(:first-child)')).forEach(function(item){
- + var cells = item.getElementsByTagName('td');
- +
- + var thread = cells[2].getElementsByTagName('a')[0];
- + var threadURI = thread.getAttribute('href').replace(/\d+-\d+$/, '');
- + var threadTitle = thread.textContent;
- +
- + var post = cells[3].textContent.replace(/\D/g, '') || '0';
- + var boardTitle = cells[1].textContent;
- +
- + var threadItem = document.createElement('thread');
- + threadItem.setAttribute('url', threadURI);
- + threadItem.setAttribute('title', threadTitle + ' [' + post + ']');
- + threadItem.setAttribute('boardName', boardTitle);
- +
- + if(!resultObj[boardTitle]){
- + resultObj[boardTitle] = [];
- + }
- + resultObj[boardTitle].push(threadItem);
- + });
- +
- + for(let boardTitle in resultObj){
- + var boardItem = document.createElement('board');
- + boardItem.setAttribute('title', boardTitle);
- + boardItem.setAttribute('isContainer', 'true');
- + boardItem.setAttribute('isOpen', 'true');
- +
- + resultObj[boardTitle].forEach(function(threadItem){
- + boardItem.appendChild(threadItem);
- + });
- +
- + root.appendChild(boardItem);
- + }
- +
- + resultDoc.appendChild(root);
- +
- + return resultDoc;
- + },
- +
- + _convertEncode: function(aStr, aEncode){
- + var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].getService(Ci.nsIScriptableUnicodeConverter);
- +
- + try{
- + converter.charset = aEncode;
- + return converter.ConvertFromUnicode(aStr);
- + }catch(e){
- + return aStr;
- + }
- + }
- +
- +};
- diff --git a/chrome/content/chaika/bbsmenu/page.xul b/chrome/content/chaika/bbsmenu/page.xul
- index 5be1ef9..21fa0dd 100644
- --- a/chrome/content/chaika/bbsmenu/page.xul
- +++ b/chrome/content/chaika/bbsmenu/page.xul
- @@ -15,6 +15,8 @@
- <menupopup id="searchModeMenu" onpopupshowing="SearchBox.searchModeMenuShowing(event)">
- <menuitem label="find.2ch.net で検索" value="find2ch" type="radio" name="searchModeMenuItem"
- oncommand="SearchBox.setSearchMode('find2ch')"/>
- + <menuitem label="domo2 で検索" value="domo2" type="radio" name="searchModeMenuItem"
- + oncommand="SearchBox.setSearchMode('domo2')"/>
- <menuitem label="板名フィルタ" value="boardFilter" type="radio" name="searchModeMenuItem"
- oncommand="SearchBox.setSearchMode('boardFilter')"/>
- </menupopup>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement