-
-
Save syoichi/1859940 to your computer and use it in GitHub Desktop.
ログアウトしている時でも外部サービス一覧を表示するように修正した。その他、Twilog・検索ページのリンクの修正、外部サービスにTogetterを追加、Twtrfrndのユーザーを固定せずにログイン中のユーザーに対応、ログイン中のユーザーのページでも動作、HTTPSのページでのみ動作、などの変更を行った。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @id twitter_custom_module | |
// @name twitter_custom_module | |
// @namespace http://kksg.net | |
// @author kkosuge | |
// @version 1.1.2 | |
// @update 2012-02-19T01:13:24.757Z(GMT+09:00) | |
// @description New New Twitter (2011/12/09 ~) のサイドバーに便利サービスのリンクを追加します。 | |
// @include https://twitter.com/* | |
// @run-at document-end | |
// @priority 0 | |
// @compatibility Firefox 10.0.2(Scriptish 0.1.7), Chrome 17.0.963.56, Safari 5.1.2(NinjaKit 0.8.5), Opera 11.61(「User JavaScript on HTTPS」有効時) on Windows 7 Home Premium SP1 64bit | |
// @charset UTF-8 | |
// ==/UserScript== | |
/*jslint browser: true, maxerr: 50, maxlen: 80, indent: 4*/ | |
// Edition 2012-02-17 | |
(function executeAddEventListener(doc) { | |
'use strict'; | |
var pageContainer, myLink, screenNames, linkTemplates, foundlastComponent, | |
replaceTemplate, addLinkComponent; | |
pageContainer = doc.getElementById('page-container'); | |
if (!pageContainer) { | |
return; | |
} | |
myLink = doc.querySelector('#user-dropdown .current-user > a'); | |
screenNames = doc.getElementsByClassName('screen-name'); | |
linkTemplates = { | |
'Favstar.fm': 'http://ja.favstar.fm/users/{screen_name}/recent', | |
'Twitmemo': 'http://twitmemo.net/user/{screen_name}', | |
'Google': 'http://google.co.jp/search?q={screen_name}', | |
'Search @{screen_name}': '/#!/search/%40{screen_name}', | |
'Search to:{screen_name}': '/#!/search/to:{screen_name}', | |
'Twilog': 'http://twilog.org/{screen_name}', | |
'Favotter': 'http://favotter.net/user/{screen_name}', | |
'Togetter': 'http://togetter.com/id/{screen_name}' | |
}; | |
foundlastComponent = false; | |
if (myLink) { | |
linkTemplates.Twtrfrnd = | |
'http://twtrfrnd.com' + myLink.pathname + '/{screen_name}'; | |
} | |
replaceTemplate = function replaceTemplate(template) { | |
return template.replace( | |
/\{screen_name\}/g, | |
screenNames[0].textContent.slice(1) | |
); | |
}; | |
addLinkComponent = function addLinkComponent() { | |
var lastComponent, serviceNames, serviceNamesLen, listHtml, serviceName; | |
if (!screenNames.length) { | |
if (foundlastComponent) { | |
foundlastComponent = false; | |
} | |
return; | |
} | |
if (foundlastComponent || doc.getElementById('link-component')) { | |
return; | |
} | |
lastComponent = doc.querySelector( | |
'.dashboard > [data-component-term="footer"]:last-child' | |
); | |
if (!lastComponent) { | |
return; | |
} | |
foundlastComponent = true; | |
serviceNames = Object.keys(linkTemplates).reverse(); | |
serviceNamesLen = serviceNames.length; | |
listHtml = ''; | |
while (serviceNamesLen) { | |
serviceName = serviceNames[serviceNamesLen -= 1]; | |
listHtml += [ | |
'<li>', | |
'<a', | |
' class="list-link"', | |
' href="' + replaceTemplate(linkTemplates[serviceName]) + '"', | |
' target="_blank"', | |
'>', | |
replaceTemplate(serviceName), | |
'</a>', | |
'</li>' | |
].join(''); | |
} | |
lastComponent.insertAdjacentHTML('AfterEnd', [ | |
'<div id="link-component" class="component">', | |
'<div class="module">', | |
'<ul>', | |
listHtml, | |
'</ul>', | |
'</div>', | |
'</div>' | |
].join('')); | |
}; | |
pageContainer.addEventListener('DOMNodeInserted', addLinkComponent); | |
}(document)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment