User:Roc michael
About Myself
[edit]Hi. I am Michael Chang (張致信Email),a Chinese in Taiwan. Since my name is too popular to be an ID for me, I chose the roc michael (Republic Of China's Michael). Then MW turned it into Roc michael.
- Hi, everybody I am in Jiaosi, Yilan Taiwan now. I wish everybody study to use(or to develop Mediawiki Extension) easily.
- 大家好,我現在人在台灣省宜蘭縣礁溪鄉。祝大家維基學習之旅能愉快順利。
Translation
[edit]- Extension:UserRightsList
- Extension talk:ImagePlus#Chinese message (Zh_tw)
- Extension:Replace Text
- Extension:Semantic MediaWiki
- DPL Chinese UI
- SpecialPages_grouped_into_categories/Chinese
- Extension:AWC's Forum
- Extension:Todo Tasks
- Extension:WhoIsWatchingTabbed
- Extension:WhoIsWatching
- Extension:Data Transfer
- Extension talk:IssueTracker#i18n_for_Taiwanese_Chinese
My page in other wiki
[edit]Mediawiki Study
[edit]|
Developing & Extending
|
|
此頁很炫*諸多連結圍著圓形的圖檔。
Files not using anymore
[edit]My Environment
[edit]- MediaWiki: 1.12.0
- Win XP
- The AppServ Open Project - 2.5.7 for Windows
- Apache Web Server Version 2.2.3
- PHP Script Language Version 5.1.6
- MySQL Database Version 5.0.24a
- phpMyAdmin Database Manager Version 2.9.0.2
Could you give me a hand?
My Environment
[edit]- MediaWiki: 1.14.0
- Win XP
- The AppServ Open Project - 2.5.7 for Windows
- Apache Web Server Version 2.2.3
- PHP Script Language Version 5.1.6
- MySQL Database Version 5.0.24a
- phpMyAdmin Database Manager Version 2.9.0.2
Could you give me a hand?
The MediaWiki:Common.css in my testwiki
[edit]/** CSS placed here will be applied to all skins */
/********** Colour of Main + Talk
主頁面與討論頁面的相關顏色設定 ************/
.ns-0 #content, .ns-0 #p-cactions li, .ns-0 #p-cactions li a { background: #eeeeff; }
.ns-0 div.thumb { border-color: #f4f4f4; }
.ns-1 #content, .ns-1 #p-cactions li, .ns-1 #p-cactions li a { background: #ffcc00; }
.ns-1 div.thumb { border-color: #f4f4f4; }
/********** Colour of NS MediaWiki + MediaWiki_talk
MediaWiki 與 MediaWiki_talk頁面的相關顏色設定 **********/
.ns-8 #content, .ns-8 #p-cactions li, .ns-8 #p-cactions li a { background: #ffcc00; }
.ns-8 div.thumb { border-color: #f4f4f4; }
.ns-9 #content, .ns-9 #p-cactions li, .ns-9 #p-cactions li a { background: #ffcc00; }
.ns-9 div.thumb { border-color: #f4f4f4; }
/* Background colors */
.backgroundc1 { background-color: #ffffff; } /* white */
.backgroundc2 { background-color: #f9f9f9; } /* light grey (as toc) */
.backgroundc3 { background-color: #eeeeee; } /* light grey (headers) */
.backgroundc4 { background-color: #e0e0e0; } /* more grey */
.backgroundc5 { background-color: #d2d2d2; } /* more grey */
.backgroundc6 { background-color: #b7b7b7; } /* more grey */
.backgroundc7 { background-color: #a3a3a3; } /* darker grey */
/* Major warning - used on the main page template to warn against editing carelessly, but can be used elsewhere as well */
.majorwarning {
background: yellow;
padding: 0.3em;
text-align: center;
font-size: 125%;
border: 2px solid red;
}
/******* MAIN PAGE STYLING
以下為Mediawiki.org首頁所使用的特定CSS
**********/
#mainpage_topbox {
background: #f9f9f9;
padding: 0px;
border: 1px solid #aaaaaa;
margin: 0.2em 10px 10px;
}
.mainpage_boxtitle, .mainpage_hubtitle, #mainpage_pagetitle {
font-size: 105%;
padding: 0.4em;
background-color: #eeeeee;
border-bottom: 1px solid #aaaaaa;
}
.mainpage_boxtitle {
line-height: 120%;
}
#mainpage_pagetitle {
color: #cf7606;
font-size: 200% !important;
}
#mainpage_sitelinks {
padding: 0.2em;
text-align: center;
background-color: white;
}
.mainpage_hubtitle {
text-align: center;
}
.mainpage_boxcontents, .mainpage_boxcontents_small {
background: #ffffff;
padding:0.2em 0.4em;
}
.mainpage_boxcontents_small {
font-size: 95%;
}
.mainpage_hubbox, #mainpage_newscell, #mainpage_downloadcell {
padding: 0;
border: 1px solid #aaaaaa;
}
.mainpage_hubbox {
margin-bottom: 0;
}
#mainpage_newscell {
margin-bottom: 15px;
margin-top: 0 !important;
}
#mainpage_newscell .mainpage_boxtitle {
background-image: url(http://upload.wikimedia.org/wikipedia/commons/thumb/8/89/Exquisite-khelpcenter.png/20px-Exquisite-khelpcenter.png);
background-repeat: no-repeat;
background-position: 99% 0.3em;
padding-right: 25px;
}
#mainpage_downloadcell {
width: 17em;
margin-bottom: 5px;
}
#mainpage_downloadcell .mainpage_boxtitle {
background-image: url(http://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Crystal_Clear_action_build.png/18px-Crystal_Clear_action_build.png);
background-repeat: no-repeat;
background-position: 96% 0.33em;
padding-right: 25px;
}
/* The words 'MediaWiki.org' in the title.*/
#mainpage_mwtitle {
color: #005288;
}
/**** For Extensions
Simple Calendar */
table.calendar { margin: 0; padding: 10px; }
table.calendar td { margin: 0; padding: 2px; vertical-align: top; }
table.month .heading td { padding:2px; background-color:#d4d4d4; color:#aaa; text-align:center; font-size:120%; font-weight:bold; }
table.month .dow td { color:#aaa; text-align:center; font-size:110%; }
table.month td.today { background-color:#ddd; }
table.month td {
border: none;
margin: 0;
padding: 1pt 1.5pt;
font-weight: bold;
font-size: 8pt;
text-align: right;
background-color: #eee;
}
#bodyContent table.month a { background:none; padding:0 }
.day-active { color:#0000cc }
.day-empty { color:#cc0000 }
/* Extension Infobox Styling */
.ext-infobox {
border: 2px solid #aaaaaa;
width: 272px;
float: right;
margin: 0 0 0.5em 0.5em;
border-collapse: collapse;
background-color: white;
}
.ext-infobox td {
border: 2px none #aaaaaa;
padding: 0.2em 0.5em;
border-bottom: 1px solid #f0f0f0 !important;
}
.ext-header {
background-color: #aaaaaa;
color: white;
text-align: left;
}
.ext-header td {
padding-top: 0.5em;
}
.ext-header img {
padding: 0 0.2em 0 0.5em;
}
.ext-status-unstable, .ext-status-unstable td {
border-color: #990000;
}
.ext-status-unstable .ext-header {
background-color: #990000;
color: #ffff00;
}
.ext-status-experimental, .ext-status-experimental td {
border-color: #CC6600;
}
.ext-status-experimental .ext-header {
background-color: #CC6600;
}
.ext-status-beta, .ext-status-beta td {
border-color: #000099;
}
.ext-status-beta .ext-header {
background-color: #000099;
}
.ext-status-stable, .ext-status-stable td {
border-color: #009900;
}
.ext-status-stable .ext-header {
background-color: #009900;
}
/* prettify [[Extension Matrix]] */
.xm-table {
border: 1px solid #666666;
background-color: white;
}
.xm-table td, .xm-table th {
vertical-align: top;
text-align: left;
border: none;
background-color: #EEEEEE;
}
.xm-table th {
font-weight: bold;
}
.xm-name { font-weight: bold; }
.xm-status-unknown { color:#888888; }
.xm-status-experimental { color:red; }
.xm-status-beta { color:blue; }
.xm-status-stable { color:green; }
.xm-type-unknown { color:#888888; }
.xm-name, .xm-status, .xm-type, .xm-version, .xm-updated { white-space: nowrap; }
.xm-updated { font-size:80%; }
.xm-alert { background-color: yellow; }
td.xm-blank { background-color: inherit; }
td.xm-updated { background-color: inherit; }
td.xm-description {
background-color: inherit;
font-style: italic;
}
th.xm-blank, th.xm-updated, th.xm-description {
background-color: inherit;
padding-bottom:0.6ex;
border-bottom: 1px solid #666666;
}
th.xm-description {
font-style: italic;
}
/* Extension:Expandable tables */
.expandable-heading {
background-color: #eee;
border: 1px solid #aaa;
width: 100%;
margin: 0.2em 0 0.2em 0;
padding: 0;
}
.expandable-heading td {
border: none;
padding: 0;
}
.expandable-link {
color: #3D5270;
font-weight: bold;
font-size: 90%;
white-space: nowrap;
padding: 0;
}
.expandable-content {
width: 100%;
background-color: #f4f4f4;
border: none;
padding: 0 0.2em 0 0.2em;
margin: 0;
}
.expandable-content td {
border: none;
margin: 0;
padding: 0 0.2em 0 0.2em;
vertical-align: top;
}
.expandable-content td a { white-space: nowrap; }
/* For DPL-forum use */
table td.forum_title a.forum_new { font-weight: bold }
table td.forum_title a.forum_new:visited { font-weight: normal }
table td.forum_edited a { text-decoration: none }
.forumlist { border-collapse: collapse }
.forumlist td { border-top: solid #999 1px }
.forumlist td span { display: block; padding-left: 10px; font-size: smaller }
.forumlist td span a { text-decoration: none; }
.forumlist td span.forum_author { padding-left: 30px; }
.forumlist td.forum_title a { padding-left: 20px }
.forumlist td.forum_title span a { padding-left: 0px }
.forumlist td.forum_title a.forum_new { background: url(/w/images/Forum_new.gif) center left no-repeat }
.forumlist td.forum_title a.forum_new:visited { background: none }
.forumlist th.forum_title { padding-left: 20px }
/*一般用途
Extension Infobox Styling */
.ext-infobox {
border: 2px solid #aaaaaa;
width: 272px;
float: right;
margin: 0 0 0.5em 0.5em;
border-collapse: collapse;
background-color: white;
}
.ext-infobox td {
border: 2px none #aaaaaa;
padding: 0.2em 0.5em;
border-bottom: 1px solid #f0f0f0 !important;
}
.ext-header {
background-color: #aaaaaa;
color: white;
text-align: left;
}
.ext-header td {
padding-top: 0.5em;
}
.ext-header img {
padding: 0 0.2em 0 0.5em;
}
.ext-status-unstable, .ext-status-unstable td {
border-color: #990000;
}
.ext-status-unstable .ext-header {
background-color: #990000;
color: #ffff00;
}
.ext-status-experimental, .ext-status-experimental td {
border-color: #CC6600;
}
.ext-status-experimental .ext-header {
background-color: #CC6600;
}
.ext-status-beta, .ext-status-beta td {
border-color: #000099;
}
.ext-status-beta .ext-header {
background-color: #000099;
}
.ext-status-stable, .ext-status-stable td {
border-color: #009900;
}
.ext-status-stable .ext-header {
background-color: #009900;
}
/* GENERAL PURPOSE PRETTY TABLES */
table.datatable {
background-color: transparent;
}
table.datatable th, td {
padding: 4px;
}
table.datatable th {
text-align: left;
background-color: #999999;
}
table.datatable tr {
background-color: #CCCCCC;
}
table.datatable tr:hover {
background-color: #FFFFCC;
}
/* GENERAL PURPOSE PRETTY TABLES (淺色) */
table.datatable_light {
background-color: transparent;
}
table.datatable_light th, td {
padding: 4px;
}
table.datatable_light th {
text-align: center; vertical-align:middle;
background-color: #ccccff;
}
table.datatable_light tr {
background-color: #CCCCCC;
}
table.datatable_light tr:hover {
background-color: #FFFFCC;
}
/*wikitable/prettytable class for skinning normal tables */
table.wikitable,
table.prettytable {
margin: 1em 1em 1em 0;
background: #f9f9f9;
border: 1px #aaa solid;
border-collapse: collapse;
empty-cells:show;
}
table.wikitable th, table.wikitable td,
table.prettytable th, table.prettytable td {
border: 1px #aaa solid;
padding: 0.2em;
}
table.wikitable th, table.wikitable td.hl3, table.wikitable th.hl3,
table.prettytable th, table.prettytable td.hl3, table.wikitable th.hl3 {
background: #8da7d6;
text-align: center;
}
table.wikitable td.hl1, table.wikitable th.hl1,
table.prettytable td.hl1, table.wikitable th.hl1 {
background: #c5d8fc;
text-align: center;
}
table.wikitable td.hl2, table.wikitable th.hl2,
table.prettytable td.hl2, table.wikitable th.hl2 {
background: #a7c1f2;
text-align: center;
}
table.wikitable caption,
table.prettytable caption {
margin-left: inherit;
margin-right: inherit;
font-weight: bold;
}
/* Sidebar External Links */
#n-browse-cvs a, #n-phpdoc a, #n-Mailing-list a {
background: url(/skins-1.5/monobook/external.png) center right no-repeat;
padding-right: 13px;
color: #36b;
}
/* make the list of references look smaller */
ol.references {
font-size: 100%;
}
.references-small { font-size: 90%;}
/* prevent ugly horizontal page expansion */
pre { overflow: auto; }
/* Standard Navigationsleisten, aka box hiding thingy from .de. Documentation at [[Wikipedia:NavFrame]]. */
div.Boxmerge,
div.NavFrame {
margin: 0px;
padding: 4px;
border: 1px solid #aaa;
text-align: center;
border-collapse: collapse;
font-size: 95%;
}
div.Boxmerge div.NavFrame {
border-style: none;
border-style: hidden;
}
div.NavFrame + div.NavFrame {
border-top-style: none;
border-top-style: hidden;
}
div.NavPic {
background-color: #fff;
margin: 0px;
padding: 2px;
float: left;
}
div.NavFrame div.NavHead {
height: 1.6em;
font-weight: bold;
background-color: #ccf;
position:relative;
}
div.NavFrame p {
font-size: 100%;
}
div.NavFrame div.NavContent {
font-size: 100%;
}
div.NavFrame div.NavContent p {
font-size: 100%;
}
div.NavEnd {
margin: 0px;
padding: 0px;
line-height: 1px;
clear: both;
}
a.NavToggle {
position:absolute;
top:0px;
right:3px;
font-weight:normal;
font-size:smaller;
}
/* Coloured watchlist numbers */
.mw-plusminus-pos {
color: #006400; /* darkgreen */
}
/* .mw-plusminus-null currently at developer default */
.mw-plusminus-neg {
color: #8B0000; /* darkred */
}
.dablink {
font-style: italic;
padding-left: 2em;
}
.dablink i {
font-style: normal;
}
/* Style for horizontal UL lists */
.horizontal ul {
padding: 0;
margin: 0;
}
.horizontal li {
padding: 0 0.6em 0 0.4em;
display: inline;
border-right: 1px solid;
}
.horizontal li:last-child {
border-right: none;
padding-right: 0;
}
/* Coloured watchlist / Special:Recentchanges numbers */
.mw-plusminus-pos {
color: #006400; /* darkgreen */
}
/* .mw-plusminus-null currently at developer default */
.mw-plusminus-neg {
color: #8B0000; /* darkred */
}
/* extra buttons for edit dialog */
/* from commons:MediaWiki:Common.css */
.my-buttons {
padding: 0.5em;
}
.my-buttons a {
color: black;
background-color: #ccddee !important;
font-weight: bold;
font-size: 1.2em;
text-decoration: none;
border: thin #006699 outset;
padding: 0 0.1em 0.1em 0.1em;
}
.my-buttons a:hover, .my-buttons a:active {
background-color: #bbccdd;
border-style: inset;
}
/* Infobox template style */
.infobox {
border: 1px solid #aaaaaa;
background-color: #f9f9f9;
color: black;
margin-bottom: 0.5em;
margin-left: 1em;
padding: 0.2em;
float: right;
clear: right;
}
.infobox td,
.infobox th {
vertical-align: top;
}
.infobox caption {
font-size: larger;
margin-left: inherit;
}
.infobox.bordered {
border-collapse: collapse;
}
.infobox.bordered td,
.infobox.bordered th {
border: 1px solid #aaaaaa;
}
.infobox.bordered .borderless td,
.infobox.bordered .borderless th {
border: 0;
}
.infobox.sisterproject {
width: 20em;
font-size: 90%;
}
@media print {
.infobox.sisterproject {
display: none;
}
}
/* styles for bordered infobox with merged rows */
.infobox.bordered .mergedtoprow td,
.infobox.bordered .mergedtoprow th {
border: 0;
border-top: 1px solid #aaaaaa;
border-right: 1px solid #aaaaaa;
}
.infobox.bordered .mergedrow td,
.infobox.bordered .mergedrow th {
border: 0;
border-right: 1px solid #aaaaaa;
}
/* styles for geography infoboxes, e.g. countries, country subdivisions, cities, etc. */
.infobox.geography {
text-align: left;
border-collapse: collapse;
line-height: 1.2em;
font-size: 90%;
}
.infobox.geography td,
.infobox.geography th {
border-top: solid 1px #aaaaaa;
padding: 0.4em 0.6em 0.4em 0.6em;
}
.infobox.geography .mergedtoprow td,
.infobox.geography .mergedtoprow th {
border-top: solid 1px #aaaaaa;
padding: 0.4em 0.6em 0.2em 0.6em;
}
.infobox.geography .mergedrow td,
.infobox.geography .mergedrow th {
border: 0;
padding: 0 0.6em 0.2em 0.6em;
}
.infobox.geography .mergedbottomrow td,
.infobox.geography .mergedbottomrow th {
border-top: 0;
border-bottom: solid 1px #aaaaaa;
padding: 0 0.6em 0.4em 0.6em;
}
.infobox.geography .maptable td,
.infobox.geography .maptable th {
border: 0;
padding: 0;
}
/* CSS for Extension:TransformChanges */
table.changes { border:none; width:100%; }
table.changes tr { margin:0; padding:0; }
table.changes tr.even { background:white; }
table.changes tr.odd { background:#eee; }
table.changes td { margin:0; padding: 1px 4px 0 4px; vertical-align: top; }
table.changes td.heading { font-size: 110%; font-weight:bold; padding-top:10px; }
table.changes td.comment { width:100%; }
table.changes td.talk,
table.changes td.diff { font-size: 90%; }
table.changes td.user,
table.changes td.talk,
table.changes td.diff,
table.changes td.info { white-space: nowrap; }
/*--------------------------------------------------|
| dTree 2.05 | www.destroydrop.com/javascript/tree/ |
|---------------------------------------------------|
| Copyright (c) 2002-2003 Geir Landr� |
|--------------------------------------------------*/
.dtree {
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #666;
white-space: nowrap;
}
.dtree img {
border: 0px;
vertical-align: middle;
}
.dtree a {
color: #333;
text-decoration: none;
}
.dtree a.node, .dtree a.nodeSel {
white-space: nowrap;
padding: 1px 2px 1px 2px;
}
.dtree a.node:hover, .dtree a.nodeSel:hover {
color: #333;
text-decoration: underline;
}
.dtree a.nodeSel {
background-color: #c0d2ec;
}
.dtree .clip {
overflow: hidden;
}
/*
* Dynamic menus
*/
.dmenu { width: 180px }
.dmenu, .dmenu ul { /* all lists */
padding: 0;
margin: 0;
list-style: none;
}
.dmenu .selflink { font-weight: normal; }
.dmenu li { /* all list items */
position: relative;
float: left;
width: 172px;
padding: 4px;
z-index: 100;
}
.dmenu li,
.dmenu li.even a,
.dmenu li.odd a,
.dmenu li li,
.dmenu li li a,
.dmenu li li li,
.dmenu li li li a {
color : black;
}
.dmenu li li { margin: 0; }
.dmenu li ul { /* second-level lists */
position: absolute;
left: -999em;
z-index: 101;
border: 1px solid #ccc;
}
.dmenu li ul ul { /* third-and-above-level lists */
position: absolute;
left: -999em;
margin: 0 0 0 0;
z-index: 102;
}
.dmenu li.odd .submenu {
width: 12px;
height: 15px;
float: right;
background: url(/common/images/rarr-lt.png) 0 3px no-repeat;
}
.dmenu li.even .submenu {
width: 12px;
height: 15px;
float: right;
background: url(/common/images/rarr-dk.png) 0 3px no-repeat;
}
.dmenu li.odd {
background: #E9EDF4;
border: 2px solid #E9EDF4;
}
.dmenu li.even {
background: #D0D8E8;
border: 2px solid #D0D8E8;
}
.dmenu li:hover, .dmenu li.sfhover {
border: 2px solid #385D8A;
}
.dmenu li:hover ul ul,
.dmenu li:hover ul ul ul,
.dmenu li.sfhover ul ul,
.dmenu li.sfhover ul ul ul {
left: -999em;
}
.dmenu li:hover ul,
.dmenu li li:hover ul,
.dmenu li li li:hover ul,
.dmenu li.sfhover ul,
.dmenu li li.sfhover ul,
.dmenu li li li.sfhover ul { /* lists nested under hovered list items */
left: 182px;
top: -3px;
}
/*
--------- Extension:PageBy
*/
ul.pageby {
float:right;
clear:right;
border:1px solid #60606F;
background-color:#E0E0EF;
font-size: 80%;
margin:1ex;
padding:1ex;
list-style-type:none;
/*
The MediaWiki:Common.js in my testwiki
[edit]/*所有用戶在加載任何頁面時,這裡的JavaScript都會加載
__FORCETOC__
*說明
*按鈕設定方式參見[[MediaWiki:Common.js編輯按鈕維護]]
*設定值
*輔助處理 ****/
//功能設定
var JSConfig={
'isEdit0':true, //設置是否顯示編輯首段按鈕
'collapseText':wgULS('隱藏▲','隱藏▲'),//指示折疊收縮的默認文字
'expandText':wgULS('顯示▼','顯示▼'),//指示折疊展開的默認文字
'autoCollapse':2, //文章少於 autoCollapse 個折疊塊時,不自動折疊
'SpecialSearchEnhancedDisabled':false//是否禁止增加其他搜索引擎
}
// 相容性修正
if (window.showModalDialog && document.compatMode && document.compatMode == "CSS1Compat")
{
var oldWidth;
var docEl = document.documentElement;
function fixIEScroll()
{
if (!oldWidth || docEl.clientWidth > oldWidth){
doFixIEScroll();
}else{
setTimeout(doFixIEScroll, 1);
}
oldWidth = docEl.clientWidth;
}
function doFixIEScroll() {
docEl.style.overflowX = (docEl.scrollWidth - docEl.clientWidth < 4) ? "hidden" : "";
}
document.attachEvent("onreadystatechange", fixIEScroll);
attachEvent("onresize", fixIEScroll);
}
// 移動元素
function elementMoveto(node, refNode, pos){//默認位置爲refNode前
if(node && refNode){
var parent=refNode.parentNode;
if (pos && pos=='after') {refNode=refNode.nextSibling;}
try {
if(refNode){
parent.insertBefore(node, refNode);
}else{
parent.appendChild(node);
}
} catch (DOMException) {};
}
}
//創建元素
function createElement(tag,children,props){
var element = document.createElement(tag);
if(children instanceof Array){
for(var i=0;i<children.length;i++){
var child=children[i];
if(typeof child=='string'){child=document.createTextNode(child);}
if(child){element.appendChild(child);}
}
}
if(typeof props=='object'){
for(var k in props){
switch(k){
case 'styles':
var styles=props.styles;
if(typeof styles=='object'){
for(var s in styles){element.style[s]=styles[s];}
}
break;
case 'events':
var events=props.events;
if(typeof events=='object'){
for(var e in events){element['on'+e]=events[e];}
}
break;
case 'class':
element.className=props[k];break;
default:
element.setAttribute(k,props[k]);
}
}
}
return element;
}
//導入模組
function getWikiPath(page,paras){
paras.ctype=paras.ctype||'text';
paras.dontcountme=paras.dontcountme||'s';
paras.action=paras.action||'raw';
var url = wgScriptPath + '/index.php?title=' + encodeURI( page.replace( ' ', '_' ) );
for(var k in paras){url += '&' + k + '=' + paras[k]; }
return url;
}
function importScript( page ) {
var src= /^https?:\/\//.test(page) ? page : getWikiPath(page,{'ctype':'text/javascript'});
var scriptElem = createElement( 'script',null,{'src':src,'type':'text/javascript'} );
document.getElementsByTagName( 'head' )[0].appendChild( scriptElem );
}
function importStylesheet( page ) {
var sheet= /^https?:\/\//.test(page) ? page : getWikiPath(page,{'ctype':'text/css'});
var styleElem = createElement( 'style', ['@import "'+sheet+'";'], {'type':'text/css'} );
document.getElementsByTagName( 'head' )[0].appendChild( styleElem );
}
/* 測試元素中是否含有指定的樣式 **************************************
* Description: 使用正則式與緩存來提高性能
* Maintainers: User:fdcn @zh.wikipedia
* [[en:User:Mike Dillon]], [[en:User:R. Koot]], [[en:User:SG]] @en.wikipedia
*/
var hasClass = (function () {
var reCache = {};
return function (element, className) {
return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
};
})();
//設置中文語言頁
var htmlE=document.documentElement;
htmlE.setAttribute("lang",wgUserLanguage);
htmlE.setAttribute("xml:lang",wgUserLanguage);
//返回繁簡字串
function wgULS(cn,tw,hk,sg,zh){
return {//保證每一語言有值
'zh-cn':cn||sg,
'zh-sg':sg||cn,
'zh-tw':tw||hk,
'zh-hk':hk||tw,
'zh':zh||cn||tw||hk||sg
}[wgUserLanguage];
}
/*** 調整編輯工具欄
mwEditButtons , mwCustomEditButtons 爲預設按鈕集合
***/
//override original function
var mwEdittoolButtons=[];
function mwInsertEditButton(parent,item) {
var doClick = typeof item.doClick=='function' ? item.doClick : insertTags;
var image = createElement("IMG",null,
{
'width':item.width||23,
'height':22,
'class':"mw-toolbar-editbutton",
'src':item.imageFile,
'border':0,
'alt':item.speedTip,
'title':item.speedTip,
'styles':{'cursor':"pointer"},
'events':{'click':function(){
doClick(item.tagOpen, item.tagClose, item.sampleText);
return false;
}}
}
);
if (item.imageId) {
image.id = item.imageId;
mwEdittoolButtons[image.id]=Image;
}
mwEdittoolButtons.push(image);
parent.appendChild(image);
return true;
}
/**
* 插入游標所在的分段前後
* sectReg 分段的正則運算式
* author & maintainer : fdcn@zhwiki
*/
function insertSect(sectReg,pre,post){
var txtarea = document.editform.wpTextbox1;
insertTags('<sectins>','</sectins>','');
var reg=/<sectins><\/sectins>/g;
var scrollTop = txtarea.scrollTop;
var text=txtarea.value;
var index=-1;
text=text.replace(reg,function(m,i){index=i;return '';});
if(index>-1){
sectReg.lastIndex=0;
var currentIndex=0,startIndex=0,endIndex=0;
while(true){
var item= sectReg.exec(text);
if(!item){
endIndex=text.length;
break;
}
currentIndex=item.index;
if(currentIndex<index){
startIndex=sectReg.lastIndex;
continue;
}else{
endIndex=currentIndex;
break;
}
}
txtarea.value=text.substring(0, startIndex)+pre+text.substring(startIndex,endIndex)+post+text.substr(endIndex);
}else{
txtarea.value=text.replace(/<sectins>/g,pre).replace(/<\/sectins>/g,post);
}
txtarea.scrollTop = scrollTop;
}
/**
* 插入游標所在的行前後
* isMultiLine 是否應用于每一行前後
* author & maintainer : fdcn@zhwiki
*/
function insertLine(pre,sampletext,post,isMultiLine){
var txtarea = document.editform.wpTextbox1;
var scrollTop = txtarea.scrollTop;
insertTags('<sectins>','</sectins>','');
var text=txtarea.value
.replace(/\r/g,"")
.replace(/^(.*)<sectins>/m,'<sectins>$1')
.replace(/<\/sectins>(.*)$/m,'$1<\/sectins>')
.replace(/<sectins> *<\/sectins>/,'<sectins>'+sampletext+'<\/sectins>');
if(/<sectins>((?:a|[^a])*)<\/sectins>/.exec(text)){
var leftContext=RegExp.leftContext;
var rightContext =RegExp.rightContext ;
var matchContext= isMultiLine
? RegExp.$1.replace(/$/mg,'<endline\/>').replace(/^/mg,pre).replace(/<endline\/>/g,post)
: pre+RegExp.$1+post;
}
txtarea.value=leftContext+matchContext+rightContext;
//IE
if (document.selection && !is_gecko) {
var range=txtarea.createTextRange();
var searchText=matchContext.replace(/\n.*/g,'');
range.findText(searchText);
range.select();
// Mozilla
}else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
txtarea.selectionStart = leftContext.length;
txtarea.selectionEnd = txtarea.selectionStart +matchContext.length;
txtarea.scrollTop = scrollTop;
}
// reposition cursor if possible
if (txtarea.createTextRange) {
txtarea.caretPos = document.selection.createRange().duplicate();
}
}
if (mwCustomEditButtons){
var doML=function(pre,post,sampletext){insertLine(pre,sampletext,post,true);}
//prepare buttons
function addEditButton(imageFile, tagOpen, sampleText, tagClose, speedTip, imageId){
var item={
"imageId": imageId,
"imageFile": "http://studwww.nou.edu.tw/~e-live/image/" + imageFile,
"tagOpen": tagOpen,
"sampleText": sampleText,
"tagClose": tagClose,
"speedTip": speedTip
};
mwCustomEditButtons.push(item);
return item;
}
//define buttons
var __temp,item;
addEditButton('wiki_buttons/Internal_link_icon.png','[[','鏈結標題',']]','內部鏈結','btnInterLink');
addEditButton("wiki_buttons/Button_sub_link.png","[[條目#","章節|文本","]]","內部段落鏈結",'btnInterHashLink' );
addEditButton("wiki_buttons/Button_category02.png","[[:Category:","分類名","]]","分類鏈結",'btnCategoryLink');
addEditButton('wiki_buttons/Media_icon.png','[[Media:','Example.ogg',']]','媒體文件鏈結','btnMediaLink');
addEditButton('wiki_buttons/External_link_icon.png','[','http://www.example.com 鏈結標題',']','外部鏈結(加字首 http://)','btnExtraLink');
addEditButton("wiki_buttons/Template_button.png","{{","樣板名","}}","應用樣板",'btnTemplateLink');
addEditButton("wiki_buttons/Button_category03.png","[[Category:","分類名","]]","分類",'btnCategory');
addEditButton("wiki_buttons/Button_redir.png","#REDIRECT [[","目標條目名","]]","重定向",'btnRedirect');
addEditButton('wiki_buttons/Image_icon.png','[[Image:','Example.jpg',']]','嵌入圖像','btnImage');
addEditButton("wiki_buttons/Button_advanced_image.png",
"<imagemap>\n",
"Image:圖像名 | 100px | 描述\nrect 0 0 50 50 [[鏈接]]\ncircle 50 50 20 [[鏈接B]]\ndesc bottom-left\n",
"</imagemap>",
wgULS("高級畫像","高級畫像"),
'btnAdvImage'
);
__temp="\nImage:PictureFileName.jpg|"+wgULS("圖片題注","圖片題注");
addEditButton("wiki_buttons/Btn_toolbar_gallery.png","<gallery>",__temp+__temp,"\n</gallery>",wgULS("畫廊","畫廊"),'btnGallery' );
addEditButton('wiki_buttons/Math_icon.png','\<math\>','插入數學公式','\</math\>','插入數學公式(LaTeX)','btnMath');
addEditButton('wiki_buttons/Nowiki_icon.png','\<nowiki\>','插入非格式文本','\</nowiki\>','插入非格式文本','btnNowiki');
item=addEditButton('wiki_buttons/Button_sig.png','[[User:Michael|Michael]]','','','簽名(無日期)','btnSigOnly')
.width = 11;
addEditButton('wiki_buttons/Signature_icon.png','—[[User:Michael|Michael]] 2008年1月12日 (六) 15:26 (UTC)','','','簽名','btnSignature');
addEditButton('wiki_buttons/Button_headline2.png','== ','標題文字','==','2級標題文字','btnHeadline2')
.doClick=doML;
addEditButton("wiki_buttons/Button_headline3.png","=== ","標題文本","===","三級子標題",'btnHeadline3' )
.doClick=doML;
addEditButton('wiki_buttons/H-line_icon.png','\n----\n','','',wgULS('水平線','水平線'),'btnHr' );
addEditButton("wiki_buttons/Button_enter.png","<br />","","", wgULS("換行","換行"),'btnBr' );
addEditButton('wiki_buttons/Bold_icon.png','\'\'\'','粗體','\'\'\'','粗體','btnBold');
addEditButton('wiki_buttons/Italic_icon.png','\'\'','斜體','\'\'','斜體','btnItalic');
__temp=wgULS("下劃線","下劃線");
addEditButton('wiki_buttons/Button_underline.png','<span style="text-decoration: underline;">',__temp,'</span>',__temp,'btnUnderline');
__temp=wgULS("刪除線","刪除線");
addEditButton("wiki_buttons/Button_strike.png","<del>",__temp,"</del>",__temp,'btnStrike');
__temp=wgULS("左對齊","左對齊");
addEditButton("wiki_buttons/Button_align_left.png",'<div style="text-align: left;">\n',__temp,"\n</div>",__temp,'btnAlignLeft')
.doClick=doML;
addEditButton("wiki_buttons/Button_center.png",'<div style="text-align: center;">\n',"居中","\n</div>","居中",'btnAlignCenter')
.doClick=doML;
__temp=wgULS("右對齊","右對齊");
addEditButton("wiki_buttons/Button_align_right.png",'<div style="text-align: right;">\n',__temp,"\n</div>",__temp,'btnAlignRight')
.doClick=doML;
__temp=wgULS("上標","上標");
addEditButton("wiki_buttons/Button_sup_letter.png","<sup>",__temp,"</sup>", __temp,'btnSup');
__temp=wgULS("下標","下標");
addEditButton("wiki_buttons/Button_sub_letter.png","<sub>",__temp,"</sub>",__temp,'btnSub');
addEditButton("wiki_buttons/Button_big.png",'<span style="font-size:larger;">',"放大","</span>","放大",'btnBig');
__temp=wgULS("縮小","縮小");
addEditButton("wiki_buttons/Button_small.png",'<span style="font-size:smaller;">',__temp,"</span>",__temp,'btnSmall');
addEditButton("wiki_buttons/Button_shifting.png",":","","","縮進",'btnShift' )
.doClick=doML;
addEditButton("wiki_buttons/Btn_toolbar_enum.png","#","","","數字列表",'btnEnum' )
.doClick=doML;
addEditButton("wiki_buttons/Btn_toolbar_liste.png","*","","","符號列表",'btnList' )
.doClick=doML;
addEditButton("wiki_buttons/Button_definition_list.png","; ","釋義",": ","定義文本",'btnDefine' )
.doClick=doML;
addEditButton("wiki_buttons/Button_font_color.png",'<span style="color: ColorName;">',"彩色文本","</span>","彩色文本",'btnColor');
addEditButton("wiki_buttons/Button_blockquote.png",'{\{quote|\n',"引文","\n}\}","塊引用",'btnQuote' );
addEditButton("wiki_buttons/Button_code.png","<code>","代碼","</code>","代碼文本",'btnCode' );
addEditButton('wiki_buttons/Tt_icon.png','<tt>','tt文字註記','</tt>','tt文字註記','btnTt');
addEditButton('wiki_buttons/Button_pre.png','<pre>','pre_text文字標籤','</pre>','pre_text文字標籤','btnPretext');
addEditButton('wiki_buttons/Button_source.png','<syntaxhighlight lang="php">','[http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi 前往查看]','
','高亮度語法標示','btnSource');
addEditButton("wiki_buttons/Button_hide_comment.png","","注釋或隱藏文字",'btnComment' ); addEditButton("wiki_buttons/Button_array.png",'\n{| border="1" \n|- \n| 第一部分 || 第二部分 \n|- \n| 第三部分 || 第四部分',"","\n|}\n","插入表格",'btnTable'); addEditButton('wiki_buttons/Button_array_excel.png','<tab width=100% class="wikitable sortable">','\n姓名 分數\n張三 65\n李四 75\n','</tab>','MS Excel相容表格','btnArrayExcel'); __temp=wgULS("參考","參考"); addEditButton("wiki_buttons/Button_ref.png","[1]", __temp,'btnRef' ); __temp=wgULS("同項參考","同項參考"); addEditButton("wiki_buttons/Button_ref_adv.png",'[2]', __temp,'btnRef2' ) .width = 12;
addEditButton("wiki_buttons/Button_refs.png",'\n==參考文獻==\n
',,, wgULS("參考文獻區","參考文獻區"),'btnReferences' );
delete __temp; addOnloadHook(function(){ mwEditButtons=[]; }); }
// 調整工具
hookEvent("load",function(){
var wpEditToolbar=document.getElementById("toolbar");
if(wpEditToolbar){
//移動下拉選單
var dropdownListEditTools=document.getElementById("dropdownListEditTools");
if(wpEditToolbar&&dropdownListEditTools){
wpEditToolbar.appendChild(dropdownListEditTools);
}
//dropdownListEditTools.style.display="inline";
//移動符號表
var editspecialchars=document.getElementById("editpage-specialchars");
elementMoveto(editspecialchars , wpEditToolbar , 'after' );
}
});
/**** 增加特殊符號的下拉選單 ****/
/**
* add menu for selecting subsets of secial characters
* must match MediaWiki:Edittools
* Maintainers: User:fdcn @zh.wikipedia
*/
addOnloadHook(function(){
var edittools = document.getElementById('editpage-specialchars');
if (edittools) {
// select subsection of special characters
var lines = edittools.getElementsByTagName('p');
function chooseCharSubset() {
var s=menu.selectedIndex;
for (var i = 0,p; p=lines[i] ; i++) {
p.style.display = i == s ? 'inline' : 'none';
}
}
var menu=createElement("select",null,{
'styles':{'display':"inline"},
'events':{'change':chooseCharSubset}
});
for (var i = 0,p; p=lines[i] ; i++) {
menu.options[i]=new Option(p.title?p.title:p.id);
}
edittools.insertBefore(menu,edittools.firstChild);
chooseCharSubset();
}
});
/**** 尋找及取代工具 ****/
var sr$t;
var sr$f;
var sr$s;
var sr$r;
var sr$w;
var sr$i;
var sr$re;
var sr$mc;
function $e(id) {return document.getElementById(id)}
function srBack()
{
if (sr$s.value=='') {sr$t.focus(); return }
if (sr$re.checked) {
var searchString = sr$s.value;
} else {
searchString=sr$s.value.replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g,'\\$1');
}
searchString="("+searchString+")(?![\\s\\S]*"+searchString+")";
if (sr$mc.checked)
var re=new RegExp(searchString);
else
var re=new RegExp(searchString,"i");
var res = re.exec (sr$t.value.substring(0,sr$t.selectionStart));
if (!res) {
var res = re.exec (sr$t.value)
}
if (res)
{
sr$t.selectionStart=res.index;
sr$t.selectionEnd=res.index+res[1].length;
}
else sr$t.selectionStart=sr$t.selectionEnd;
srSync();
}
function srNext()
{
if (sr$s.value=='') {sr$t.focus(); return }
if (sr$re.checked) {
var searchString = sr$s.value;
} else {
searchString=sr$s.value.replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g,'\\$1');
}
if (sr$mc.checked)
var re=new RegExp(searchString,"g");
else
var re=new RegExp(searchString,"gi");
re.lastIndex=sr$t.selectionEnd;
var res = re.exec (sr$t.value)
if (!res) {
re.lastIndex=0;
var res = re.exec (sr$t.value)
}
if (res)
{
sr$t.selectionStart=res.index;
sr$t.selectionEnd=res.index+res[0].length;
}
else sr$t.selectionStart=sr$t.selectionEnd;
srSync();
}
function srReplace()
{
var sels=sr$t.selectionStart;
var sele=sr$t.selectionEnd;
var selr=sr$t.value.length-sele;
if (sr$s.value=='' || sels==sele) {sr$t.focus(); return }
if (sr$re.checked) {
var searchString = sr$s.value;
var replaceString = sr$r.value;
} else {
searchString=sr$s.value.replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g,'\\$1');
replaceString=sr$r.value.replace(/([\$\\])/g,'\\$1');
}
if (sr$mc.checked)
var re=new RegExp(searchString,"g");
else
var re=new RegExp(searchString,"gi");
re.lastIndex=sels;
var res = re.exec (sr$t.value);
var $$=0;
if (res && res.index==sels && res[0].length==sele-sels)
{
if (sr$re.checked) {
replaceString=replaceString.replace(/\\\\/g,'&backslash;').replace(/\\\$/g,'$')
var replaceBits=(" "+replaceString).split(/(?=\$\d)/);
replaceString=replaceBits[0].substring(1);
for (var i=1; i<replaceBits.length; i++)
{
$$=replaceBits[i][1]-'0';
if ($$<res.length)
replaceString += res[$$] + replaceBits[i].substring(2)
else
replaceString += replaceBits[i];
}
replaceString=replaceString.replace (/\\n/,"\n").replace (/&backslash;/g,"\\").replace
(/$/g,"\$")
}
sr$t.value= sr$t.value.substring(0,sels) + replaceString + sr$t.value.substring(sele);
}
sr$t.selectionStart=sels;
sr$t.selectionEnd=sr$t.value.length-selr;
srSync();
}
function srReplaceall()
{
if (!sr$s.value) {sr$t.focus(); return }
var sels=sr$t.selectionStart;
var sele=sr$t.selectionEnd;
var selr=sr$t.value.length-sele;
var reps;
if (sr$re.checked) {
var searchString = sr$s.value;
var replaceString = sr$r.value.replace(/\\\\/,'&backslash;').replace(/\\n/,'\n').replace(/&backslash;/,"\\");
} else {
searchString=sr$s.value.replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g,'\\$1');
replaceString=sr$r.value.replace(/([\$\\])/g,'\\$1');
}
if (sele>sels)
reps=sr$t.value.substring(sels,sele);
else
reps=sr$t.value;
if (sr$mc.checked)
var re=new RegExp(searchString,"g");
else
var re=new RegExp(searchString,"gi");
var replaceCounter=0;
var replaceFunc=function(){replaceCounter++;return replaceString};
reps=reps.replace(re,replaceFunc);
if (sele>sels)
sr$t.value = sr$t.value.substring(0,sels) + reps + sr$t.value.substring(sele);
else
sr$t.value = reps;
sr$t.selectionStart=sels;
sr$t.selectionEnd=sele>sels ? sr$t.value.length-selr : sels;
window.status = replaceCounter+" ocurrences of " + searchString + " replaced.";
srSync();
}
function srToggleCase()
{
var sels=sr$t.selectionStart;
var sele=sr$t.selectionEnd;
var selr=sr$t.value.length-sele;
var selt=sr$t.value.substring(sels,sele);
if (sele>sels)
{
if (selt==selt.toUpperCase())
selt=selt.toLowerCase()
else if (selt==selt.toLowerCase() && sele-sels>1)
selt=selt.substring(0,1).toUpperCase()+selt.substring(1).toLowerCase()
else
selt=selt.toUpperCase();
sr$t.value = sr$t.value.substring(0,sels) + selt + sr$t.value.substring(sele);
sr$t.selectionStart=sels;
sr$t.selectionEnd=sele>sels ? sr$t.value.length-selr : sels;
}
srSync();
}
function srSync()
{
var i;
var allLines=0;
var lineNo=0;
var w=sr$t.cols-5;
var dummy=sr$t.value.split("\n");
for (i=0;i<dummy.length;i++){allLines+=Math.ceil(dummy[i].length/w)}
var dummy=sr$t.value.substring(0,sr$t.selectionStart).split("\n");
for (i=0;i<dummy.length;i++){lineNo+=Math.ceil(dummy[i].length/w)}
// alert (w+" "+lineNo+"/"+allLines);
sr$t.scrollTop=sr$t.scrollHeight*(lineNo-10)/allLines;
sr$t.focus();
}
function srInit()
{
if($e('wpTextbox1')) {
var srBoxCode ='<div id="srForm"><table id="srBox" cellpadding="0" cellspacing="2">'
+'<tr><td valign="bottom"><small><span style="color:#000000;">search for:</span></small><br/>'
+'<input type="text" id="srSearch" accesskey="F" tabindex="8"'
+'onkeypress="event.which == 13 && srNext()"; value=""/></td>'
+'<td valign="bottom"><small><span style="color:#000000;">replace with:</span></small><br/><input type="text" id="srReplace" accesskey="G" tabindex="9"'
+'onkeypress="event.which == 13 && srNext()"; value=""/></td>'
+'<td valign="top">'
+'<input type="checkbox" id="srCase" onclick="sr$t.focus()" tabindex="10"/><small><span style="color:#000000;">match case</span></small>'
+'<input type="checkbox" id="srRegexp" onclick="sr$t.focus()" tabindex="11"/><small><span style="color:#000000;">use regexp</span></small><br/> '
+'<a href="javascript:srBack()" onmouseover="sr$t.focus()" title="find previous match [alt-2]" accesskey="2"><</a> '
+'<a href="javascript:srNext()" onmouseover="sr$t.focus()" title="find next match [alt-3]" accesskey="3">find ></a> '
+'<a href="javascript:srReplace();srBack()" onmouseover="sr$t.focus()" title="replace and find previous match [alt-4]" accesskey="4"><</a> '
+'<a href="javascript:srReplace()" onmouseover="sr$t.focus()" title="replace this match">replace</a> '
+'<a href="javascript:srReplace();srNext()" onmouseover="sr$t.focus()" title="replace and find next match [alt-5]" accesskey="5">></a> '
+'<a href="javascript:srReplaceall()" onmouseover="sr$t.focus()" title="replace all matches [alt-7]" accesskey="7">replace all</a> '
+'</td></tr></table></div>'
var ep=$e('searchInput');
if (ep) ep.accessKey='none';
sr$t=document.editform.wpTextbox1;
sr$w=sr$t.style.width;
var sr=document.createElement('div');
sr.innerHTML=srBoxCode;
var im=document.createElement('span');
im.innerHTML='<a id="SearchIcon" href="javascript:srShowHide()"><img style="cursor: pointer;" title="Search/Replace" alt="Search/Replace" src="http://upload.wikimedia.org/wikipedia/en/1/12/Button_find.png" border="0" height="22" width="23"></a><a href="javascript:srToggleCase()"><img style="cursor: pointer;" title="Toggle case" alt="Toggle case" src="http://upload.wikimedia.org/wikipedia/en/1/12/Button_case.png" border="0" height="22" width="23"></a>';
var ep=$e('toolbar');
if (ep)
{
ep.appendChild(im)
}
else
{
var ep=$e('editform');
ep.parentNode.insertBefore(im,ep);
}
sr$i=$e('SearchIcon');
sr$i.accessKey="F";
sr.firstChild.style.display='none';
var ep=$e('editform');
ep.parentNode.insertBefore(sr,ep);
sr$f=$e('srForm');
sr$s=$e('srSearch');
sr$r=$e('srReplace');
sr$re=$e('srRegexp');
sr$mc=$e('srCase');
}
}
function srShowHide()
{
if (sr$f.style.display=='none')
{
sr$f.style.display='block';
sr$i.accessKey="none";
sr$t.style.width='auto';
sr$s.focus();
}
else
{
sr$f.style.display='none';
sr$t.style.width=sr$w;
sr$i.accessKey="F";
}
}
document.write('<link rel="stylesheet" type="text/css" href="'
+ 'http://en.wikipedia.org/w/index.php?title=User:Zocky/SearchBox.css'
+ '&action=raw&ctype=text/css&dontcountme=s">');
addOnloadHook(srInit);
/***以新視窗開啟外部連結*****/
externalLinks = function() {
if (!document.getElementsByTagName) {
return;
}
var anchors = document.getElementsByTagName("a");
for (var i = 0; i < anchors.length; i++) {
var anchor = anchors[i];
if (anchor.getAttribute("href") &&
anchor.getAttribute("rel") != null &&
(anchor.getAttribute("rel").indexOf("external") >= 0 ||
anchor.getAttribute("rel").indexOf("nofollow") >= 0)
) {
anchor.target = "_blank";
}
}
}
if (window.addEventListener) {
window.addEventListener("load", externalLinks, false);
}
else if (window.attachEvent) {
window.attachEvent("onload", externalLinks);
}
/*** Collapsible tables ***/
/** Collapsible tables *********************************************************
*
* Description: Allows tables to be collapsed, showing only the header. See
* [[Wikipedia:NavFrame]].
* Maintainers: [[User:R. Koot]]
*/
var autoCollapse = 2;
var collapseCaption = "隱藏";
var expandCaption = "顯示";
function collapseTable( tableIndex )
{
var Button = document.getElementById( "collapseButton" + tableIndex );
var Table = document.getElementById( "collapsibleTable" + tableIndex );
if ( !Table || !Button ) {
return false;
}
var Rows = Table.rows;
if ( Button.firstChild.data == collapseCaption ) {
for ( var i = 1; i < Rows.length; i++ ) {
Rows[i].style.display = "none";
}
Button.firstChild.data = expandCaption;
} else {
for ( var i = 1; i < Rows.length; i++ ) {
Rows[i].style.display = Rows[0].style.display;
}
Button.firstChild.data = collapseCaption;
}
}
function createCollapseButtons()
{
var tableIndex = 0;
var NavigationBoxes = new Object();
var Tables = document.getElementsByTagName( "table" );
for ( var i = 0; i < Tables.length; i++ ) {
if ( hasClass( Tables[i], "collapsible" ) ) {
/* only add button and increment count if there is a header row to work with */
var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0];
if (!HeaderRow) continue;
var Header = HeaderRow.getElementsByTagName( "th" )[0];
if (!Header) continue;
NavigationBoxes[ tableIndex ] = Tables[i];
Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
var Button = document.createElement( "span" );
var ButtonLink = document.createElement( "a" );
var ButtonText = document.createTextNode( collapseCaption );
Button.style.styleFloat = "right";
Button.style.cssFloat = "right";
Button.style.fontWeight = "normal";
Button.style.textAlign = "right";
Button.style.width = "6em";
ButtonLink.style.color = Header.style.color;
ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
ButtonLink.appendChild( ButtonText );
Button.appendChild( document.createTextNode( "[" ) );
Button.appendChild( ButtonLink );
Button.appendChild( document.createTextNode( "]" ) );
Header.insertBefore( Button, Header.childNodes[0] );
tableIndex++;
}
}
for ( var i = 0; i < tableIndex; i++ ) {
if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) {
collapseTable( i );
}
}
}
addOnloadHook( createCollapseButtons );
/** Dynamic Navigation Bars (experimental) *************************************
*
* Description: See [[Wikipedia:NavFrame]].
* Maintainers: UNMAINTAINED
*/
// set up the words in your language
var NavigationBarHide = '[' + collapseCaption + ']';
var NavigationBarShow = '[' + expandCaption + ']';
// shows and hides content and picture (if available) of navigation bars
// Parameters:
// indexNavigationBar: the index of navigation bar to be toggled
function toggleNavigationBar(indexNavigationBar)
{
var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
if (!NavFrame || !NavToggle) {
return false;
}
// if shown now
if (NavToggle.firstChild.data == NavigationBarHide) {
for (
var NavChild = NavFrame.firstChild;
NavChild != null;
NavChild = NavChild.nextSibling
) {
if ( hasClass( NavChild, 'NavPic' ) ) {
NavChild.style.display = 'none';
}
if ( hasClass( NavChild, 'NavContent') ) {
NavChild.style.display = 'none';
}
}
NavToggle.firstChild.data = NavigationBarShow;
// if hidden now
} else if (NavToggle.firstChild.data == NavigationBarShow) {
for (
var NavChild = NavFrame.firstChild;
NavChild != null;
NavChild = NavChild.nextSibling
) {
if (hasClass(NavChild, 'NavPic')) {
NavChild.style.display = 'block';
}
if (hasClass(NavChild, 'NavContent')) {
NavChild.style.display = 'block';
}
}
NavToggle.firstChild.data = NavigationBarHide;
}
}
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton()
{
var indexNavigationBar = 0;
// iterate over all < div >-elements
var divs = document.getElementsByTagName("div");
for(
var i=0;
NavFrame = divs[i];
i++
) {
// if found a navigation bar
if (hasClass(NavFrame, "NavFrame")) {
indexNavigationBar++;
var NavToggle = document.createElement("a");
NavToggle.className = 'NavToggle';
NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
var NavToggleText = document.createTextNode(NavigationBarHide);
for (
var NavChild = NavFrame.firstChild;
NavChild != null;
NavChild = NavChild.nextSibling
) {
if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
if (NavChild.style.display == 'none') {
NavToggleText = document.createTextNode(NavigationBarShow);
break;
}
}
}
NavToggle.appendChild(NavToggleText);
// Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
for(
var j=0;
j < NavFrame.childNodes.length;
j++
) {
if (hasClass(NavFrame.childNodes[j], "NavHead")) {
NavFrame.childNodes[j].appendChild(NavToggle);
}
}
NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
}
}
}
addOnloadHook( createNavigationBarToggleButton );
/**------------------**/