Difference between revisions of "MediaWiki:Cyclechaos.js"
Jump to navigation
Jump to search
(8 intermediate revisions by the same user not shown) | |||
Line 36: | Line 36: | ||
ta['n-Workspace'] = new Array('','Start working on articles here'); | ta['n-Workspace'] = new Array('','Start working on articles here'); | ||
ta['n-recentchanges'] = new Array('x','The list of recent changes in the wiki.'); | ta['n-recentchanges'] = new Array('x','The list of recent changes in the wiki.'); | ||
ta['n-randompage'] = new Array('r',' | ta['n-randompage'] = new Array('r','View a random Page'); | ||
ta['n-help'] = new Array('','The place to find out.'); | ta['n-help'] = new Array('','The place to find out.'); | ||
ta['n-sitesupport'] = new Array('','Support us'); | ta['n-sitesupport'] = new Array('','Support us'); | ||
ta['t-whatlinkshere'] = new Array('j','List of all wiki pages that link here'); | ta['t-whatlinkshere'] = new Array('j','List of all wiki pages that link here'); | ||
ta['t-recentchangeslinked'] = new Array('k','Recent changes in pages linked from this page'); | ta['t-recentchangeslinked'] = new Array('k','Recent changes in pages linked from this page'); | ||
Line 179: | Line 171: | ||
// ============================================================ | // ============================================================ | ||
/* A helper function to add a button to one of the toolbars in the interface. */ | |||
function addLink(where, url, name, id, title, key, after){ | |||
//* where is the id of the toolbar where the button should be added; | |||
// i.e. one of "p-cactions", "p-personal", or "p-navigation". | |||
//* url is the URL which will be called when the button is clicked. | |||
// javascript: urls can be used to do more complex things. | |||
//* name is what will appear as the name of the button. | |||
//* id is the id of the button; it's best to define one. | |||
// Use a prefix to make sure its unique. Optional. | |||
//* title is the tooltip title that gives a longer description | |||
// of the button; if you define a accesskey, mention it here. Optional. | |||
//* key is the char you want for the accesskey. Optional. | |||
//* after is the id of the button you want to follow this one. Optional. | |||
var na = document.createElement('a'); | |||
na.href = url; | |||
na.appendChild(document.createTextNode(name)); | |||
var li = document.createElement('li'); | |||
if(id) li.id = id; | |||
li.appendChild(na); | |||
var tabs = document.getElementById(where).getElementsByTagName('ul')[0]; | |||
if(after) { | |||
tabs.insertBefore(li,document.getElementById(after)); | |||
} else { | |||
tabs.appendChild(li); | |||
} | |||
if(id) { | |||
if(key && title) { ta[id] = [key, title]; } | |||
else if(key) { ta[id] = [key, '']; } | |||
else if(title) { ta[id] = ['', title];} | |||
} | |||
// re-render the title and accesskeys from existing code in wikibits.js | |||
akeytt(); | |||
return li; | |||
}; | |||
function doPopups() { | |||
if (!document.getElementsByTagName) return false; | |||
var links = document.getElementsByTagName("a"); | |||
for (var i=0; i < links.length; i++) { | |||
if (links[i].className.match("external free")) { | |||
links[i].className = links[i].className + " newWinStyle"; | |||
if (links[i].title == "") { | |||
links[i].title = "(new window)"; | |||
} | |||
else { | |||
links[i].title = links[i].title + " (new window)"; | |||
} | |||
links[i].onclick = function(e) { | |||
if(!e)e=window.event; | |||
if(e.shiftKey || e.ctrlKey || e.altKey) return; | |||
window.open(this.href); | |||
return false; | |||
} | |||
} | |||
} | |||
} | |||
addOnloadHook(function () { // add onload handler using code from wikibits.js | addOnloadHook(function () { // add onload handler using code from wikibits.js | ||
doPopups(); | |||
}); | }); |
Latest revision as of 18:59, 30 April 2007
function addLoadEvent(func)
{
if (window.addEventListener)
window.addEventListener("load", func, false);
else if (window.attachEvent)
window.attachEvent("onload", func);
}
/* tooltips and access keys */
ta = new Object();
ta['pt-userpage'] = new Array('.','My user page');
ta['pt-anonuserpage'] = new Array('.','The user page for the ip you\'re editing as');
ta['pt-mytalk'] = new Array('n','My talk page');
ta['pt-anontalk'] = new Array('n','Discussion about edits from this ip address');
ta['pt-preferences'] = new Array('','My preferences');
ta['pt-watchlist'] = new Array('l','The list of pages you\'re monitoring for changes.');
ta['pt-mycontris'] = new Array('y','List of my contributions');
ta['pt-login'] = new Array('o','You are encouraged to log in, it is not mandatory however.');
ta['pt-anonlogin'] = new Array('o','You are encouraged to log in, it is not mandatory however.');
ta['pt-logout'] = new Array('o','Log out');
ta['ca-talk'] = new Array('t','Discussion about the content page');
ta['ca-edit'] = new Array('e','You can edit this page. Please use the preview button before saving.');
ta['ca-addsection'] = new Array('+','Add a comment to this discussion.');
ta['ca-viewsource'] = new Array('e','This page is protected. You can view its source.');
ta['ca-history'] = new Array('h','Past versions of this page.');
ta['ca-protect'] = new Array('=','Protect this page');
ta['ca-delete'] = new Array('d','Delete this page');
ta['ca-undelete'] = new Array('d','Restore the edits done to this page before it was deleted');
ta['ca-move'] = new Array('m','Move this page');
ta['ca-nomove'] = new Array('','You don\'t have the permissions to move this page');
ta['ca-watch'] = new Array('w','Add this page to your watchlist');
ta['ca-unwatch'] = new Array('w','Remove this page from your watchlist');
ta['search'] = new Array('f','Search this wiki');
ta['p-logo'] = new Array('','Main Page');
ta['n-mainpage'] = new Array('z','Visit the Main Page');
ta['n-portal'] = new Array('','Index');
ta['n-Workspace'] = new Array('','Start working on articles here');
ta['n-recentchanges'] = new Array('x','The list of recent changes in the wiki.');
ta['n-randompage'] = new Array('r','View a random Page');
ta['n-help'] = new Array('','The place to find out.');
ta['n-sitesupport'] = new Array('','Support us');
ta['t-whatlinkshere'] = new Array('j','List of all wiki pages that link here');
ta['t-recentchangeslinked'] = new Array('k','Recent changes in pages linked from this page');
ta['feed-rss'] = new Array('','RSS feed for this page');
ta['feed-atom'] = new Array('','Atom feed for this page');
ta['t-contributions'] = new Array('','View the list of contributions of this user');
ta['t-emailuser'] = new Array('','Send a mail to this user');
ta['t-upload'] = new Array('u','Upload images or media files');
ta['t-specialpages'] = new Array('q','List of all special pages');
ta['ca-nstab-main'] = new Array('c','View the content page');
ta['ca-nstab-user'] = new Array('c','View the user page');
ta['ca-nstab-media'] = new Array('c','View the media page');
ta['ca-nstab-special'] = new Array('','This is a special page, you can\'t edit the page itself.');
ta['ca-nstab-wp'] = new Array('a','View the project page');
ta['ca-nstab-image'] = new Array('c','View the image page');
ta['ca-nstab-mediawiki'] = new Array('c','View the system message');
ta['ca-nstab-template'] = new Array('c','View the template');
ta['ca-nstab-help'] = new Array('c','View the help page');
ta['ca-nstab-category'] = new Array('c','View the category page');
// ============================================================
// BEGIN Dynamic Navigation Bars (experimantal)
// set up the words in your language
var NavigationBarHide = '[ Hide ]';
var NavigationBarShow = '[ Show ]';
// set up max count of Navigation Bars on page,
// if there are more, all will be hidden
// NavigationBarShowDefault = 0; // all bars will be hidden
// NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
var NavigationBarShowDefault = 1;
// 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 (NavChild.className == 'NavPic') {
NavChild.style.display = 'none';
}
if (NavChild.className == '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 (NavChild.className == 'NavPic') {
NavChild.style.display = 'block';
}
if (NavChild.className == '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
for(
var i=0;
NavFrame = document.getElementsByTagName("div")[i];
i++
) {
// if found a navigation bar
if (NavFrame.className == "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);
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 (NavFrame.childNodes[j].className == "NavHead") {
NavFrame.childNodes[j].appendChild(NavToggle);
}
}
NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
}
}
// if more Navigation Bars found than Default: hide all
if (NavigationBarShowDefault < indexNavigationBar) {
for(
var i=1;
i<=indexNavigationBar;
i++
) {
toggleNavigationBar(i);
}
}
}
addLoadEvent(createNavigationBarToggleButton);
// END Dynamic Navigation Bars
// ============================================================
/* A helper function to add a button to one of the toolbars in the interface. */
function addLink(where, url, name, id, title, key, after){
//* where is the id of the toolbar where the button should be added;
// i.e. one of "p-cactions", "p-personal", or "p-navigation".
//* url is the URL which will be called when the button is clicked.
// javascript: urls can be used to do more complex things.
//* name is what will appear as the name of the button.
//* id is the id of the button; it's best to define one.
// Use a prefix to make sure its unique. Optional.
//* title is the tooltip title that gives a longer description
// of the button; if you define a accesskey, mention it here. Optional.
//* key is the char you want for the accesskey. Optional.
//* after is the id of the button you want to follow this one. Optional.
var na = document.createElement('a');
na.href = url;
na.appendChild(document.createTextNode(name));
var li = document.createElement('li');
if(id) li.id = id;
li.appendChild(na);
var tabs = document.getElementById(where).getElementsByTagName('ul')[0];
if(after) {
tabs.insertBefore(li,document.getElementById(after));
} else {
tabs.appendChild(li);
}
if(id) {
if(key && title) { ta[id] = [key, title]; }
else if(key) { ta[id] = [key, '']; }
else if(title) { ta[id] = ['', title];}
}
// re-render the title and accesskeys from existing code in wikibits.js
akeytt();
return li;
};
function doPopups() {
if (!document.getElementsByTagName) return false;
var links = document.getElementsByTagName("a");
for (var i=0; i < links.length; i++) {
if (links[i].className.match("external free")) {
links[i].className = links[i].className + " newWinStyle";
if (links[i].title == "") {
links[i].title = "(new window)";
}
else {
links[i].title = links[i].title + " (new window)";
}
links[i].onclick = function(e) {
if(!e)e=window.event;
if(e.shiftKey || e.ctrlKey || e.altKey) return;
window.open(this.href);
return false;
}
}
}
}
addOnloadHook(function () { // add onload handler using code from wikibits.js
doPopups();
});