"MediaWiki:Common.js" sayfasının sürümleri arasındaki fark

AmonRa Wiki sitesinden
Şuraya atla: kullan, ara
(Sayfa oluşturdu, içeriği: '/** Collapsible tables ********************************************************* * * Description: Allows tables to be collapsed, showing only the header. See * ...')
 
1. satır: 1. satır:
/** Collapsible tables *********************************************************
+
function ModifySidebar(action, section, name, link) {
*
+
  try {
*  Description: Allows tables to be collapsed, showing only the header. See
+
    switch (section) {
*                        http://www.mediawiki.org/wiki/Manual:Collapsible_tables.
+
      case "languages":
*  Maintainers: [[en:User:R. Koot]]
+
        var target = "p-lang";
*/
+
        break;
 +
      case "toolbox":
 +
        var target = "p-tb";
 +
        break;
 +
      case "navigation":
 +
        var target = "p-navigation";
 +
        break;
 +
      default:
 +
        var target = "p-" + section;
 +
        var custom = true;
 +
        break;
 +
    }
 
   
 
   
var autoCollapse = 2;
+
    if (action == "addC") {
var collapseCaption = 'hide';
+
      var node = document.getElementById(target)
var expandCaption = 'show';
+
                        .getElementsByTagName('div')[0]
 +
                        .getElementsByTagName('ul')[0];
 +
      var nodeelements = node.getElementsByTagName('li');
 
   
 
   
function collapseTable( tableIndex ) {
+
      for (var i = 0; i < nodeelements.length; i++) {
        var Button = document.getElementById( 'collapseButton' + tableIndex );
+
        if (nodeelements[i].getElementsByTagName('a')[0].innerHTML == name ||
        var Table = document.getElementById( 'collapsibleTable' + tableIndex );
+
            nodeelements[i].getElementsByTagName('a')[0].href == link) {
+
          node.removeChild(nodeelements[i]);
        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;
 
 
         }
 
         }
}
+
      }
+
      var aNode = document.createElement('a');
function createCollapseButtons() {
+
      var liNode = document.createElement('li');
        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.className = 'collapseButton'; // Styles are declared in [[MediaWiki:Common.css]]
+
      aNode.appendChild(document.createTextNode(name));
 +
      aNode.setAttribute('href', link);
 +
      liNode.appendChild(aNode);
 +
      liNode.className='plainlinks';
 +
      node.appendChild(liNode);
 +
      node.style.display = "visible";
 +
    }
 
   
 
   
                        ButtonLink.style.color = Header.style.color;
+
    if (action == "removeC") {
                        ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
+
      var list = document.getElementById(target)
                        ButtonLink.setAttribute( 'href', "javascript:collapseTable(" + tableIndex + ");" );
+
                        .getElementsByTagName('div')[0]
                        ButtonLink.appendChild( ButtonText );
+
                        .getElementsByTagName('ul')[0];
 
   
 
   
                        Button.appendChild( document.createTextNode( '[' ) );
+
      var listelements = list.getElementsByTagName('li');
                        Button.appendChild( ButtonLink );
 
                        Button.appendChild( document.createTextNode( ']' ) );
 
 
   
 
   
                        Header.insertBefore( Button, Header.childNodes[0] );
+
      for (var i = 0; i < listelements.length; i++) {
                        tableIndex++;
+
        if (listelements[i].getElementsByTagName('a')[0].innerHTML == name ||
                }
+
            listelements[i].getElementsByTagName('a')[0].href == link) {
 +
          list.removeChild(listelements[i]);
 
         }
 
         }
 +
      }
 +
    }
 
   
 
   
        for ( var i = 0;  i < tableIndex; i++ ) {
+
    if (action == "removeP"){
                if ( hasClass( NavigationBoxes[i], 'collapsed' ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], 'autocollapse' ) ) ) {
+
      var node = document.getElementById(target);
                        collapseTable( i );
+
      node.style.visibility = "hidden";
                } else if ( hasClass( NavigationBoxes[i], 'innercollapse' ) ) {
+
    }
                        var element = NavigationBoxes[i];
+
  } catch(e) {
                        while ( element = element.parentNode ) {
+
    // lets just ignore what's happened
                                if ( hasClass( element, 'outercollapse' ) ) {
+
    return;
                                        collapseTable( i );
+
  }
                                        break;
 
                                }
 
                        }
 
                }
 
        }
 
 
}
 
}
 
   
 
   
addOnloadHook( createCollapseButtons );
+
function AdminSidebar() {
 +
  ModifySidebar("addC", "source", "Design", "http://sl3d.woodassoc.us/wiki/Source:Design");
 +
  ModifySidebar("addC", "source", "Conceptual", "http://sl3d.woodassoc.us/wiki/Source:Conceptual");
 +
  ModifySidebar("addC", "source", "Layout", "http://sl3d.woodassoc.us/wiki/Source:Layout");
 +
  ModifySidebar("addC", "project", "Design", "http://sl3d.woodassoc.us/wiki/Silverlight_3D:Design");
 +
  ModifySidebar("addC", "project", "Conceptual", "http://sl3d.woodassoc.us/wiki/Silverlight_3D:Conceptual");
 +
  ModifySidebar("addC", "project", "Layout", "http://sl3d.woodassoc.us/wiki/Silverlight_3D:Layout");
 +
  ModifySidebar("addC", "toolbox", "Upload file", "http://sl3d.woodassoc.us/wiki/Special:Upload");
 +
}
 
   
 
   
/** Test if an element has a certain class **************************************
+
function UserSidebar(){
*
+
  ModifySidebar("removeP", "toolbox", "toolbox", null);
* Description: Uses regular expressions and caching for better performance.
+
}
* Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
 
*/
 
 
   
 
   
var hasClass = ( function() {
+
if (isArray(wgUserGroups)){
        var reCache = {};
+
  if (wgUserGroups.Contains('bureaucrat') || wgUserGroups.Contains('sysop')){
        return function( element, className ) {
+
    //If the user logged in is a Bureaucrat or Sysop
                return ( reCache[className] ? reCache[className] : ( reCache[className] = new RegExp( "(?:\\s|^)" + className + "(?:\\s|$)" ) ) ).test( element.className );
+
    addOnloadHook(AdminSidebar);
        };
+
  }else{
})();
+
    //If the user logged in is not a Bureaucrat or Sysop
 +
    addOnloadHook(UserSidebar);
 +
  }
 +
}else{
 +
  //If an anonymous user is viewing the site
 +
  addOnloadHook(UserSidebar);
 +
}

07:36, 22 Ocak 2012 tarihindeki hâli

function ModifySidebar(action, section, name, link) {
  try {
    switch (section) {
      case "languages":
        var target = "p-lang";
        break;
      case "toolbox":
        var target = "p-tb";
        break;
      case "navigation":
        var target = "p-navigation";
        break;
      default:
        var target = "p-" + section;
        var custom = true;
        break;
    }
 
    if (action == "addC") {
      var node = document.getElementById(target)
                         .getElementsByTagName('div')[0]
                         .getElementsByTagName('ul')[0];
      var nodeelements = node.getElementsByTagName('li');
 
      for (var i = 0; i < nodeelements.length; i++) {
        if (nodeelements[i].getElementsByTagName('a')[0].innerHTML == name ||
            nodeelements[i].getElementsByTagName('a')[0].href == link) {
          node.removeChild(nodeelements[i]);
        }
      }
      var aNode = document.createElement('a');
      var liNode = document.createElement('li');
 
      aNode.appendChild(document.createTextNode(name));
      aNode.setAttribute('href', link);
      liNode.appendChild(aNode);
      liNode.className='plainlinks';
      node.appendChild(liNode);
      node.style.display = "visible";
    }
 
    if (action == "removeC") {
      var list = document.getElementById(target)
                         .getElementsByTagName('div')[0]
                         .getElementsByTagName('ul')[0];
 
      var listelements = list.getElementsByTagName('li');
 
      for (var i = 0; i < listelements.length; i++) {
        if (listelements[i].getElementsByTagName('a')[0].innerHTML == name ||
            listelements[i].getElementsByTagName('a')[0].href == link) {
          list.removeChild(listelements[i]);
        }
      }
    }
 
    if (action == "removeP"){
      var node = document.getElementById(target);
      node.style.visibility = "hidden";
    }
  } catch(e) {
    // lets just ignore what's happened
    return;
  }
}
 
function AdminSidebar() {
  ModifySidebar("addC", "source", "Design", "http://sl3d.woodassoc.us/wiki/Source:Design");
  ModifySidebar("addC", "source", "Conceptual", "http://sl3d.woodassoc.us/wiki/Source:Conceptual");
  ModifySidebar("addC", "source", "Layout", "http://sl3d.woodassoc.us/wiki/Source:Layout");
  ModifySidebar("addC", "project", "Design", "http://sl3d.woodassoc.us/wiki/Silverlight_3D:Design");
  ModifySidebar("addC", "project", "Conceptual", "http://sl3d.woodassoc.us/wiki/Silverlight_3D:Conceptual");
  ModifySidebar("addC", "project", "Layout", "http://sl3d.woodassoc.us/wiki/Silverlight_3D:Layout");
  ModifySidebar("addC", "toolbox", "Upload file", "http://sl3d.woodassoc.us/wiki/Special:Upload");
}
 
function UserSidebar(){
  ModifySidebar("removeP", "toolbox", "toolbox", null);
}
 
if (isArray(wgUserGroups)){
  if (wgUserGroups.Contains('bureaucrat') || wgUserGroups.Contains('sysop')){
    //If the user logged in is a Bureaucrat or Sysop
    addOnloadHook(AdminSidebar);
  }else{
    //If the user logged in is not a Bureaucrat or Sysop
    addOnloadHook(UserSidebar);
  }
}else{
  //If an anonymous user is viewing the site
  addOnloadHook(UserSidebar);
}