MediaWiki:Gadget-CommentsInLocalTime.js
表示
お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
- Ctrl を押しながら F5 を押す。
Mac における Safari
Mac における Chrome や Firefox
- ⌘ Cmd と ⇧ Shift を押しながら R を押す。
詳細についてはWikipedia:キャッシュを消すをご覧ください。
/* Documentation: [[Help:UTCの時刻を地方時で表示する]] */ jQuery(function($) { /* Language */ varlanguage= { 'ja':{ // relative terms 'Today':'本日', 'Yesterday':'昨日', 'Tomorrow':'明日', 'last':'前の', 'this':'次の', // days of the week 'Sunday':'日曜日', 'Monday':'月曜日', 'Tuesday':'火曜日', 'Wednesday':'水曜日', 'Thursday':'木曜日', 'Friday':'金曜日', 'Saturday':'土曜日', // days of the week (abbreviation) 'Sun':'日', 'Mon':'月', 'Tue':'火', 'Wed':'水', 'Thu':'木', 'Fri':'金', 'Sat':'土', // months of the year 'January':'1月', 'February':'2月', 'March':'3月', 'April':'4月', 'May':'5月', 'June':'6月', 'July':'7月', 'August':'8月', 'September':'9月', 'October':'10月', 'November':'11月', 'December':'12月', // difference words 'ago':'前', 'from now':'後', // date phrases 'year':'年', 'years':'年', 'month':'か月', 'months':'か月', 'day':'日', 'days':'日', // difference format 'separator_value_unit':'', 'separator_before_month':'', 'separator_before_day':'と' }, 'en':{ // relative terms 'Today':'Today', 'Yesterday':'Yesterday', 'Tomorrow':'Tomorrow', 'last':'last', 'this':'this', // days of the week 'Sunday':'Sunday', 'Monday':'Monday', 'Tuesday':'Tuesday', 'Wednesday':'Wednesday', 'Thursday':'Thursday', 'Friday':'Friday', 'Saturday':'Saturday', // days of the week (abbreviation) 'Sun':'Sun', 'Mon':'Mon', 'Tue':'Tue', 'Wed':'Wed', 'Thu':'Thu', 'Fri':'Fri', 'Sat':'Sat', // 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', // difference words 'ago':'ago', 'from now':'from now', // date phrases 'year':'year', 'years':'years', 'month':'month', 'months':'months', 'day':'day', 'days':'days', // difference format 'separator_value_unit':' ', 'separator_before_month':', ', 'separator_before_day':', ' } }; /* Settings */ if(typeof(LocalComments)=='undefined') LocalComments={}; if(typeof(LocalComments.dateDifference)=='undefined') LocalComments.dateDifference=true; if(typeof(LocalComments.language)=='undefined') LocalComments.language=mw.config.get('wgUserLanguage'); else LocalComments.language=LocalComments.language.toLowerCase(); varlang=LocalComments.language; if(language[lang]==null) lang='en';//言語対応していない場合とりあえず英語設定 if(typeof(LocalComments.dateFormat)=='undefined') { if(lang=='ja') LocalComments.dateFormat='ja-default'; else LocalComments.dateFormat='dmy'; }else{ LocalComments.dateFormat=LocalComments.dateFormat.toLowerCase(); } if(typeof(LocalComments.timeFirst)=='undefined') LocalComments.timeFirst=true; if(typeof(LocalComments.twentyFourHours)=='undefined') LocalComments.twentyFourHours=false; /* End Settings */ /* Date and time format */ varfull_format; vardate_format; vartime_format; switch(LocalComments.dateFormat) { case'dmy': if(LocalComments.timeFirst) full_format='%time%, %date% (UTC%utc_offset%)'; else full_format='%date%, %time% (UTC%utc_offset%)'; date_format='%day% %month_name% %year%, %last%%day_of_the_week%%diff%'; time_format='%hour%:%minute%%ampm%'; break; case'mdy': if(LocalComments.timeFirst) full_format='%time%, %date% (UTC%utc_offset%)'; else full_format='%date%, %time% (UTC%utc_offset%)'; date_format='%month_name% %day%, %year%, %last%%day_of_the_week%%diff%'; time_format='%hour%:%minute%%ampm%'; break; case'ja-default': default: full_format='%date% %time% (UTC%utc_offset%)'; date_format='%year%年%month_num%月%day%日 (%day_of_the_week_abbr%)%diff%'; time_format='%hour%:%minute%%ampm%'; } switch(mw.config.get('wgCanonicalNamespace')) { case'': case'MediaWiki': case'Special': return; } varelement_id=null; if(mw.config.get('wgAction')=='view'){ switch(mw.config.get('skin')){ case'monobook': case'vector': case'vector-2022': case'minerva': case'timeless': element_id='bodyContent'; break; case'cologneblue': element_id='article'; break; case'modern': element_id='mw_contentholder'; break; } }elseif(mw.config.get('wgAction')=='edit'||mw.config.get('wgAction')=='submit'){ element_id='wikiPreview'; } if(element_id) replace_text(document.getElementById(element_id), /(?:(\d{4})年(\d{1,2})月(\d{1,2})日 \([日月火水木金土]\) (\d\d):(\d\d)|(\d\d):(\d\d) (\d{4})年(\d{1,2})月(\d{1,2})日) \(UTC\)/, adjust_time); functionadd_leading_zero(number) { if(number<10) number='0'+number; returnnumber; } functionadjust_time(original_timestamp,old_year,old_month,old_day,old_hour,old_minute, old_hour2,old_minute2,old_year2,old_month2,old_day2) { if(old_year==''||old_year===undefined)old_year=old_year2; if(old_month==''||old_month===undefined)old_month=old_month2; if(old_day==''||old_day===undefined)old_day=old_day2; if(old_hour==''||old_hour===undefined)old_hour=old_hour2; if(old_minute==''||old_minute===undefined)old_minute=old_minute2; vartoday=newDate(),yesterday=newDate(),tomorrow=newDate(); yesterday.setDate(yesterday.getDate()-1); tomorrow.setDate(tomorrow.getDate()+1); // set the date entered vartime=newDate(); time.setUTCFullYear(old_year,convert_month_to_number(old_month),old_day); time.setUTCHours(old_hour); time.setUTCMinutes(old_minute); // determine the time offset varutc_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 varyear=time.getFullYear(),month=add_leading_zero(time.getMonth()+1); varday=time.getDate(); varhour=parseInt(time.getHours()),minute=add_leading_zero(time.getMinutes()); // output am or pm depending on the date varampm=''; if(!LocalComments.twentyFourHours) { ampm=' am'; if(hour>11)ampm=' pm'; if(hour>12)hour-=12; if(hour=='00')hour=12; } // return 'today' or 'yesterday' if that is the case if(year==today.getFullYear()&&month==add_leading_zero(today.getMonth()+1)&&day==today.getDate()) vardate=language[lang]['Today']; elseif(year==yesterday.getFullYear()&&month==add_leading_zero(yesterday.getMonth()+1)&&day==yesterday.getDate()) vardate=language[lang]['Yesterday']; elseif(year==tomorrow.getFullYear()&&month==add_leading_zero(tomorrow.getMonth()+1)&&day==tomorrow.getDate()) vardate=language[lang]['Tomorrow']; else { // calculate day of week varday_of_the_week=newArray(language[lang]['Sunday'], language[lang]['Monday'], language[lang]['Tuesday'], language[lang]['Wednesday'], language[lang]['Thursday'], language[lang]['Friday'], language[lang]['Saturday'])[time.getDay()]; varday_of_the_week_abbr=newArray(language[lang]['Sun'], language[lang]['Mon'], language[lang]['Tue'], language[lang]['Wed'], language[lang]['Thu'], language[lang]['Fri'], language[lang]['Sat'])[time.getDay()]; if(LocalComments.dateDifference) { // calculate time difference from today and the timestamp today=newDate(today.getYear(),today.getMonth(),today.getDate()); time=newDate(time.getYear(),time.getMonth(),time.getDate()); varmilliseconds_ago=today.getTime()-time.getTime(); vardays_ago=Math.round(milliseconds_ago/1000/60/60/24); vardifference,difference_word='',last=''; if(today.valueOf()>=time.valueOf()) { difference=newDate(today.valueOf()-time.valueOf()); difference_word=language[lang]['ago']; if(days_ago<=7) last=language[lang]['last']+' '; } else { difference=newDate(time.valueOf()-today.valueOf()); difference_word=language[lang]['from now']; if(days_ago>=-7) last=language[lang]['this']+' '; } difference=newDate(difference.getUTCFullYear(),difference.getUTCMonth(),difference.getUTCDate()-1); vardescriptive_difference=[]; if(difference.getYear()-70>0) { varyears_ago=(difference.getYear()-70)+language[lang]['separator_value_unit']+pluralize(language[lang]['year'],difference.getYear()-70,language[lang]['years']); descriptive_difference.push(years_ago); } if(difference.getMonth()>0) { varmonths_ago=difference.getMonth()+language[lang]['separator_value_unit']+pluralize(language[lang]['month'],difference.getMonth(),language[lang]['months']); descriptive_difference.push(months_ago); } if(difference.getDate()>0) { varnew_days_ago=difference.getDate()+language[lang]['separator_value_unit']+pluralize(language[lang]['day'],difference.getDate(),language[lang]['days']); descriptive_difference.push(new_days_ago); } descriptive_difference=''; if(years_ago!=undefined){ descriptive_difference+=years_ago; } if(months_ago!=undefined){ descriptive_difference+=(descriptive_difference==''?'':language[lang]['separator_before_month'])+months_ago; } if(new_days_ago!=undefined){ descriptive_difference+=(descriptive_difference==''?'':language[lang]['separator_before_day'])+new_days_ago; } descriptive_difference='('+descriptive_difference+language[lang]['separator_value_unit']+difference_word+')'; } else { descriptive_difference=''; last=''; } // format the date according to user preferences vardate=date_format.replace('%year%',year) .replace('%month_num%',time.getMonth()+1) .replace('%month_name%',convert_number_to_month(time.getMonth())) .replace('%day%',day) .replace('%day_of_the_week%',day_of_the_week) .replace('%day_of_the_week_abbr%',day_of_the_week_abbr) .replace('%last%',last) .replace('%diff%',descriptive_difference); } vartime=hour+':'+minute+ampm; vartime=time_format.replace('%hour%',hour) .replace('%minute%',minute) .replace('%ampm%',ampm); varreturn_date=full_format.replace('%date%',date) .replace('%time%',time) .replace('%utc_offset%',utc_offset); returnreturn_date; } functionconvert_month_to_number(month) { varoutput=newDate('2001/'+month+'/1'); returnoutput.getMonth(); } functionconvert_number_to_month(number) { varmonth=newArray(language[lang]['January'],language[lang]['February'],language[lang]['March'],language[lang]['April'],language[lang]['May'],language[lang]['June'],language[lang]['July'],language[lang]['August'],language[lang]['September'],language[lang]['October'],language[lang]['November'],language[lang]['December']); returnmonth[number]; } functionpluralize(term,count,plural) { if(plural==null) plural=term+'s'; return(count==1?term:plural) } functionreplace_text(node,search,replace) { if(!node) return; if(node.nodeType==3) { varvalue=node.nodeValue; if(search.test(value)) { varnew_node=document.createDocumentFragment(); while(true){ varpos=value.search(search); if(pos<0)break; varmatch=value.match(search)[0]; // Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="match">replace(match)</span> varspan=document.createElement('span'); span.setAttribute('class','localcomments'); span.style.fontSize='95%'; span.style.whiteSpace='nowrap'; span.setAttribute('title',match); span.appendChild(document.createTextNode(match.replace(search,replace))); new_node.appendChild(document.createTextNode(value.substring(0,pos))); new_node.appendChild(span); value=value.substring(pos+match.length); } new_node.appendChild(document.createTextNode(value)); node.parentNode.replaceChild(new_node,node); } } else { varchildren=[],child=node.firstChild; while(child) { children[children.length]=child; child=child.nextSibling; } for(varchild=0;child<children.length;child++) replace_text(children[child],search,replace); } } });