Skip to content

Instantly share code, notes, and snippets.

@ronekko
Last active August 29, 2015 14:12
Show Gist options
  • Save ronekko/e0b265f0fbab09c8ad64 to your computer and use it in GitHub Desktop.
Save ronekko/e0b265f0fbab09c8ad64 to your computer and use it in GitHub Desktop.
LDR - Expand Folders in Rate View Mode
// ==UserScript==
// @name LDR - Expand Folders in Rate View Mode
// @namespace http://profile.livedoor.com/ronekko/
// @description Livedoor Readerで起動/リロード時にフォルダを自動的に開く(レート表示モードのときのみ)
// @include http://reader.livedoor.com/reader/
// @version 20150102
// @grant GM_getValue
// @grant GM_setValue
// @grant unsafeWindow
// ==/UserScript==
// 20130217: フォルダの開閉状態を記憶し、起動時には前回終了時の開閉状態を復元するようにした
// 20150101: Greasemonkey 2.0に対応
// 20150102: フォルダの開閉ができなくなっていたのを修正した
function exportGMFunc(fn, name) {
var fnName = name || fn.name;
// page contextからfnNameを呼べるようにする特権作成関数
exportFunction(fn, unsafeWindow, {defineAs: fnName });
return unsafeWindow[fnName];
}
var config = eval("("+GM_getValue("config")+")") || [0,0,0,0,0,1];
var w = unsafeWindow;
function expandRateFolders(){
if(w.Config.view_mode !== 'rate'){ return; }
var folders = document.querySelectorAll('.folder_root');
if(folders.length){
Array.forEach(folders, function(folder_elem){
var folder = w.TreeView.instance[folder_elem.id];
var rate = folder.param.name.match(/(\d)\.gif/)[1];
if(config[rate]){
folder.open();
}
folder.toggle = exportGMFunc(function(){
folder.state ? folder.close() : folder.open();
config[rate] = folder.state;
setTimeout(function (){
GM_setValue("config", JSON.stringify(config));
}, 0);
});
});
}
else{
setTimeout(expandRateFolders, 500);
}
}
w.register_hook('AFTER_SUBS_LOAD', exportGMFunc(function(){
expandRateFolders();
}));
w.register_hook('AFTER_CONFIGLOAD', exportGMFunc(function(){
// Keybind.add('esc', func)の中身のblur_findboxに機能を追加
var blur_findbox_esc = w.Keybind._keyfunc['esc'];
w.Keybind.add('esc', function(){
var rv = blur_findbox_esc();
expandRateFolders();
return rv;
});
// Control.blur_findboxに機能を追加
var blur_findbox_ctrl = w.Control.blur_findbox;
w.Control.blur_findbox = function(){
var rv = blur_findbox_ctrl();
expandRateFolders();
return rv;
}
var change_view_ = w.Control.change_view;
w.Control.change_view = function(view){
var rv = change_view_(view);
expandRateFolders();
return rv;
}
var change_sort_ = w.Control.change_sort;
w.Control.change_sort = function(sort){
var rv = change_sort_(sort);
expandRateFolders();
return rv;
}
}));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment