Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save syoichi/1859940 to your computer and use it in GitHub Desktop.
Save syoichi/1859940 to your computer and use it in GitHub Desktop.
ログアウトしている時でも外部サービス一覧を表示するように修正した。その他、Twilog・検索ページのリンクの修正、外部サービスにTogetterを追加、Twtrfrndのユーザーを固定せずにログイン中のユーザーに対応、ログイン中のユーザーのページでも動作、HTTPSのページでのみ動作、などの変更を行った。
// ==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