Skip to content

Commit

Permalink
Merge branch 'release/1.7.2'
Browse files Browse the repository at this point in the history
  • Loading branch information
nodaguti committed Dec 27, 2014
2 parents 8778d1e + bf5d917 commit 6a1e6a7
Show file tree
Hide file tree
Showing 54 changed files with 2,620 additions and 1,659 deletions.
229 changes: 150 additions & 79 deletions chaika/chrome/content/chaika/bbsmenu/page.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,89 +17,129 @@ const MODE_SEARCH = 1;

var Page = {

startup: function Page_startup(){
startup: function(){
var tree = document.getElementById("bookmarks-view");
tree.collapsed = true;
tree.setAttribute("treesize", ChaikaCore.pref.getChar("bbsmenu.tree_size"));

this.showViewFoxAge2chMenu();
SearchBox.init();
PrefObserver.start();

setTimeout(function(){ Page.delayStartup(); }, 0);
Bbsmenu.init();
},

delayStartup: function Page_delayStartup(){
var tree = document.getElementById("bookmarks-view");
tree.collapsed = false;

if(Bbsmenu.getItemCount() == 0){
BbsmenuUpdater.update();
}else{
Bbsmenu.initTree();
}
},

shutdown: function Page_shutdown(){
shutdown: function(){
PrefObserver.stop();
Tree.saveOpenedCategories();
},


showViewFoxAge2chMenu: function Page_showViewFoxAge2chMenu(){
showViewFoxAge2chMenu: function(){
var browser = ChaikaCore.browser.getBrowserWindow();

if(browser && browser.document.getElementById("viewFoxAge2chSidebar")){
document.getElementById("viewFoxAge2chMenu").hidden = false;
document.getElementById('viewFoxAge2chMenu-separator').hidden = false;
}
},


openLogManager: function Page_openLogManager(){
ChaikaCore.browser.openURL(Services.io.newURI("chaika://log-manager/", null, null), true);
/**
* URL を新しいタブで開く
* @param {String} aURL 開く URL
*/
_openURL: function(aURL){
ChaikaCore.browser.openURL(Services.io.newURI(aURL, null, null), true);
},


openDataFolder: function Page_openDataFolder(){
var logDir = ChaikaCore.getDataDir();
ChaikaCore.io.revealDir(logDir);
/**
* フォルダを開く
* @param {nsIFile} aDir 開くフォルダ
*/
_openFolder: function(aDir){
ChaikaCore.io.reveal(aDir);
},


/**
* ダイアログを開く
* @param {String} aURL 開くダイアログの URL
* @param {String} [aType] 開くダイアログのタイプ (windowtype)
*/
_openDialog: function(aURL, aType){
ChaikaCore.browser.openWindow(aURL, aType);
},


openSupport: function Page_openSupport(){
ChaikaCore.browser.openURL(Services.io.newURI("chaika://support/", null, null), true);
openLogManager: function(){
this._openURL("chaika://log-manager/");
},


openReleaseNotes: function Page_openReleaseNotes(){
ChaikaCore.browser.openURL(Services.io.newURI("chaika://releasenotes/", null, null), true);
openAboneManager: function(){
this._openDialog("chrome://chaika/content/settings/abone-manager.xul");
},


openAAManager: function(){
this._openDialog("chrome://chaika/content/settings/aa-manager.xul");
},


openReplacementManager: function(){
this._openDialog("chrome://chaika/content/settings/replacement-manager.xul");
},


openDataFolder: function(){
this._openFolder(ChaikaCore.getDataDir());
},


openSkinFolder: function(){
let skinDir = ChaikaCore.getDataDir();

skinDir.appendRelativePath('skin');
this._openFolder(skinDir);
},


openSearchPluginFolder: function(){
let pluginFolder = ChaikaCore.getDataDir();

pluginFolder.appendRelativePath('search');
this._openFolder(pluginFolder);
},


openLogFolder: function(){
this._openFolder(ChaikaCore.getLogDir());
},


openSupport: function(){
this._openURL("chaika://support/");
},


openReleaseNotes: function(){
this._openURL("chaika://releasenotes/");
},


openOnlineHelp: function(){
ChaikaCore.browser.openURL(Services.io.newURI("https://github.com/chaika/chaika/wiki", null, null), true);
this._openURL("https://github.com/chaika/chaika/wiki");
},


openSettings: function Page_openSettings(){
var winMediator = Cc["@mozilla.org/appshell/window-mediator;1"]
.getService(Ci.nsIWindowMediator);
var settingdWin = winMediator.getMostRecentWindow("chaika:settings");
if(settingdWin){
settingdWin.focus();
return;
}
openHomePage: function(){
this._openURL("https://github.com/chaika/chaika");
},

var settingDialogURL = "chrome://chaika/content/settings/settings.xul";
var features = "";
try{
var pref = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
var instantApply = pref.getBoolPref("browser.preferences.instantApply");
features = "chrome,titlebar,toolbar,centerscreen" + (instantApply ? ",dialog=no" : ",modal");
}catch(ex){
features = "chrome,titlebar,toolbar,centerscreen,modal";
}
window.openDialog(settingDialogURL, "", features);

openSettings: function(){
this._openDialog("chrome://chaika/content/settings/settings.xul", "chaika:settings");
},


Expand All @@ -109,7 +149,6 @@ var Page = {
browser.document.getElementById("viewFoxAge2chSidebar").doCommand();
}
}

};


Expand Down Expand Up @@ -137,7 +176,6 @@ var PrefObserver = {
if(aData == "tree_size"){
Tree.changeTreeSize();
}

}

};
Expand Down Expand Up @@ -376,17 +414,26 @@ var BbsmenuUpdater = {

var Bbsmenu = {

init: function(){
this._DOMParser = Cc["@mozilla.org/xmlextras/domparser;1"].createInstance(Ci.nsIDOMParser);

if(this.getItemCount() === 0){
BbsmenuUpdater.update();
}else{
this.initTree();
}
},

initTree: function Bbsmenu_initTree(){
var doc = this.getBbsmenuDoc();
Tree.initTree(doc, MODE_BBSMENU);
},

update: function Bbsmenu_update(aHtmlSource){
var parserUtils = Cc["@mozilla.org/parserutils;1"].getService(Ci.nsIParserUtils);
var domParser = Cc["@mozilla.org/xmlextras/domparser;1"].createInstance(Ci.nsIDOMParser);
var ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);

var bbsmenuDoc = domParser.parseFromString("<root xmlns:html='http://www.w3.org/1999/xhtml'/>", "text/xml");
var bbsmenuDoc = this._DOMParser.parseFromString("<root xmlns:html='http://www.w3.org/1999/xhtml'/>", "text/xml");
var fragment = parserUtils.parseFragment(aHtmlSource, 0, false, null, bbsmenuDoc.documentElement);
bbsmenuDoc.documentElement.appendChild(fragment);

Expand Down Expand Up @@ -477,17 +524,57 @@ var Bbsmenu = {
return result;
},


openOutsideXML: function(){
let userOutsideFile = ChaikaCore.getDataDir();
userOutsideFile.appendRelativePath('favorite_boards.xml');

ChaikaCore.io.reveal(userOutsideFile);
},


getBbsmenuDoc: function Bbsmenu_getBbsmenuDoc(){
var bbsmenuDoc = (new DOMParser()).parseFromString("<bbsmenu/>", "text/xml");
var outsideDoc = this.getOutsideDoc();

var nodes = outsideDoc.documentElement.childNodes;
for(var i=0; i<nodes.length; i++){
var node = nodes[i];
var newNode = bbsmenuDoc.importNode(node, true);
bbsmenuDoc.documentElement.appendChild(newNode);
let bbsmenuDoc = this._DOMParser.parseFromString("<bbsmenu/>", "text/xml");


/**
* 外部板を定義する XML ファイルから板情報を読み込む
* @param {nsIFile} file 読み込む XML ファイル
*/
let importOutsideDoc = function(file){
let doc = this.getOutsideDoc(file);

Array.slice(doc.documentElement.childNodes).forEach((node) => {
let bbsmenuNode = bbsmenuDoc.importNode(node, true);
bbsmenuDoc.documentElement.appendChild(bbsmenuNode);
});
}.bind(this);


// chaika 関連の外部板
if(ChaikaCore.pref.getBool('bbsmenu.add_chaika_boards')){
let defaultOutsideFile = ChaikaCore.getDefaultsDir();

defaultOutsideFile.appendRelativePath("outside.xml");
importOutsideDoc(defaultOutsideFile);
}


// ユーザー定義の外部板
let userOutsideFile = ChaikaCore.getDataDir();
userOutsideFile.appendRelativePath('favorite_boards.xml');

if(!userOutsideFile.exists()){
let defaultUserOutside = ChaikaCore.getDefaultsDir();
defaultUserOutside.appendRelativePath('favorite_boards.xml');

defaultUserOutside.copyTo(userOutsideFile.parent, null);
}

importOutsideDoc(userOutsideFile);


// BBSMENU
var storage = ChaikaCore.storage;
var sql = "SELECT title, url, path, board_type, is_category FROM bbsmenu;";
var statement = storage.createStatement(sql);
Expand Down Expand Up @@ -529,30 +616,14 @@ var Bbsmenu = {
},


getOutsideDoc: function Bbsmenu_getOutsideDoc(){
var outsideXMLFile = ChaikaCore.getDataDir();
outsideXMLFile.appendRelativePath("outside.xml");
getOutsideDoc: function Bbsmenu_getOutsideDoc(file){
let outsideXMLString = ChaikaCore.io.readString(file, 'UTF-8');
let outsideDoc = this._DOMParser.parseFromString(outsideXMLString, 'text/xml');

if(!outsideXMLFile.exists()){
var defaultOutsideFile = ChaikaCore.getDefaultsDir();
defaultOutsideFile.appendRelativePath("outside.xml");
defaultOutsideFile.copyTo(outsideXMLFile.parent, null);

outsideXMLFile = outsideXMLFile.clone();
}


var outsideXMLString = ChaikaCore.io.readString(outsideXMLFile, 'UTF-8');
var outsideDoc = (new DOMParser()).parseFromString(outsideXMLString, 'text/xml');


var categoryNodes = outsideDoc.getElementsByTagName("category");

for(var i=0; i<categoryNodes.length; i++){
let node = categoryNodes[i];
node.setAttribute("isContainer", "true");
node.setAttribute("isOpen", "false");
}
Array.slice(outsideDoc.getElementsByTagName('category')).forEach((category) => {
category.setAttribute('isContainer', 'true');
category.setAttribute('isOpen', 'false');
});

return outsideDoc;
}
Expand Down
22 changes: 19 additions & 3 deletions chaika/chrome/content/chaika/bbsmenu/page.xul
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
type="search"
timeout="2000"
oncommand="if(this.value === '') SearchBox.search('')"
onkeypress="if(event.keyCode == KeyEvent.DOM_VK_RETURN) SearchBox.search(this.value)">
onkeypress="if(event.keyCode === KeyEvent.DOM_VK_RETURN) SearchBox.search(this.value)">
<box>
<dropmarker popup="searchModeMenu" class="plain" />
</box>
Expand All @@ -53,13 +53,29 @@
<menu id="toolsMenu" label="ツール" class="plain menu-iconic">
<menupopup id="toolsMenuPopup" position="after_end">
<menuitem label="BBSMENU を更新" oncommand="BbsmenuUpdater.update()" />
<menuitem label="外部板を追加" oncommand="Bbsmenu.openOutsideXML()" />
<menuseparator />
<menuitem label="ログマネージャ..." oncommand="Page.openLogManager()" />
<menuitem label="データフォルダを開く" oncommand="Page.openDataFolder()" />
<menu label="マネージャを開く">
<menupopup>
<menuitem label="ログマネージャ" oncommand="Page.openLogManager()" />
<menuitem label="あぼーんマネージャ" oncommand="Page.openAboneManager()" />
<menuitem label="置換マネージャ" oncommand="Page.openReplacementManager()" />
<menuitem label="AA マネージャ" oncommand="Page.openAAManager()" />
</menupopup>
</menu>
<menu label="フォルダを開く">
<menupopup>
<menuitem label="データフォルダ" oncommand="Page.openDataFolder()" />
<menuitem label="スキンフォルダ" oncommand="Page.openSkinFolder()" />
<menuitem label="検索プラグインフォルダ" oncommand="Page.openSearchPluginFolder()" />
<menuitem label="ログフォルダ" oncommand="Page.openLogFolder()" />
</menupopup>
</menu>
<menuseparator />
<menuitem label="リリースノート" oncommand="Page.openReleaseNotes()" />
<menuitem label="トラブルシューティング情報" oncommand="Page.openSupport()" />
<menuitem label="オンラインヘルプ" oncommand="Page.openOnlineHelp()" />
<menuitem label="公式サイト" oncommand="Page.openHomePage()" />
<menuseparator />
<menuitem label="FoxAge2ch を開く" id="viewFoxAge2chMenu"
hidden="true" oncommand="Page.viewFoxAge2ch()" />
Expand Down
Loading

0 comments on commit 6a1e6a7

Please sign in to comment.