利用者:Lemonsquash/comments in local time(en).js
表示
お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
- Ctrl を押しながら F5 を押す。
Mac における Safari
Mac における Chrome や Firefox
- ⌘ Cmd と ⇧ Shift を押しながら R を押す。
詳細についてはWikipedia:キャッシュを消すをご覧ください。
/*
日時入り著名の UTC 日時を、ローカルの日時の表記にで置き換えるスクリプト。
[[:user:Lemonsquash/comments in local time(ja).js]]
日時の表示形式を 日本語版 Wikipedia の日時入り著名のスタイルに準拠
オリジナル表記: 2009年7月1日 (水) 18:02 \(UTC\)
見た目の表記: 2009年7月2日 (水) 03:02 (UTC+9)
[[:user:Lemonsquash/comments in local time(en).js]]
日時の表示形式を 英語版 Wikipedia の日時入り著名のスタイルに準拠
オリジナル表記: 2009年7月1日 (水) 18:02 \(UTC\)
見た目の表記: 03:02, 2 July 2009 (UTC+9)
なお、これらは見た目のみの変更であり、編集時のテキストには元の表記のままとなります。
*/
$(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
*/
var language =
{
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December'
}
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d{1,2}):(\d{1,2})\s+(\d{4})年(\d{1,2})月(\d{1,2})日\s*\(UTC\)/g, adjust_time2);
replace_text(document.getElementById(element_id), /(\d{4})年(\d{1,2})月(\d{1,2})日\s*\([月火水木金土日]\)\s*(\d{1,2}):(\d{1,2})\s*\(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time2(original_timestamp, old_hour, old_minute, old_year, old_month, old_day, offset)
{
return adjust_time(original_timestamp, old_year, old_month, old_day, old_hour, old_minute, offset);
}
function adjust_time(original_timestamp, old_year, old_month, old_day, old_hour, old_minute, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, old_month-1, old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// calculate day of week
day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
day_of_the_week = day_names[time.getDay()];
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
formatted_date = day + ' ' + month_name + ' ' + year;
var date = formatted_date;
var time = add_leading_zero(hour) + ':' + minute;
utc_offset = ' (UTC' + utc_offset + ')';
var return_date = time + ', ' + date + utc_offset;
return '' + return_date;
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function replace_text(node, search, replace)
{
var length = 0;
if (node.nodeType == 3)
{
value = node.nodeValue;
matches = value.match(search);
if (matches != null)
{
node_parent_node = node.parentNode;
old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
length = matches[match].toString().length;
before_match = value.substring(0, position);
var after_match = value.substring(position + length);
first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', matches[match]);
second_span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
first_span.appendChild(second_span);
new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(first_span);
new_node.appendChild(document.createTextNode(after_match));
// new_node_list = new_node.childNodes;
node_parent_node.replaceChild(new_node, old_node);
// old_node_list = new_node_list;
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});