MediaWiki:Common.js: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
(Vytvorená stránka „→‎Tu sa nachádzajúci JavaScript sa načíta všetkým používateľom pri každom načítaní stránky.: /** Collapsible tables ***************************************…“)
 
Riadok 90: Riadok 90:
 
};
 
};
 
})();
 
})();
 +
//--------------------------------------------------------------------------------
 +
// -------------------------------------------------------------------------------
 +
//  Force Preview  JavaScript code - Start
 +
//
 +
//  To allow any group to bypass being forced to preview,
 +
//  enter the group name in the permittedGroups array.
 +
//  E.g.
 +
//    var permittedGroups = [];                      // force everyone
 +
//    var permittedGroups = [ "user"];                // permit logged-in users
 +
//    var permittedGroups = [ "sysop", "bureaucrat"]; // permit sysop, bureaucrat
 +
// -------------------------------------------------------------------------------
 +
var permittedGroups = [];
 +
 +
Array.prototype.intersects = function() {
 +
  // --------------------------------------------------------
 +
  //  Returns true if any element in the argument array
 +
  //  is the same as an element in this array
 +
  // --------------------------------------------------------
 +
  if( !arguments.length ){
 +
    return false;
 +
  }
 +
  var array2 = arguments[0];
 +
 +
  var len1 = this.length;
 +
  var len2 = array2.length;
 +
  if( len2 == 0 ){
 +
    return false;
 +
  }
 +
 +
  for(var i=0; i<len1; i++){
 +
    for(var j=0; j<len2; j++) {
 +
      if( this[i] === array2[j] ) {
 +
        return true;
 +
      }
 +
    }
 +
  }
 +
  return false;
 +
};
 +
 +
function forcePreview()
 +
{
 +
  if( wgAction != "edit") return;
 +
  if( wgUserGroups === null) {
 +
    wgUserGroups = [];
 +
  }
 +
  if( wgUserGroups.intersects(permittedGroups) ) {
 +
    return;
 +
  }
 +
  var saveButton = document.getElementById("wpSave");
 +
  if( !saveButton )
 +
    return;
 +
  saveButton.disabled = true;
 +
  saveButton.value = "Save page (use preview first)";
 +
  saveButton.style.fontWeight = "normal";
 +
  document.getElementById("wpPreview").style.fontWeight = "bold";
 +
}
 +
 +
addOnloadHook(forcePreview);
 +
// -----------------------------------------------------
 +
//  Force Preview  JavaScript code - End
 +
// -----------------------------------------------------

Verzia zo dňa a času 19:49, 5. január 2010

/* Tu sa nachádzajúci JavaScript sa načíta všetkým používateľom pri každom načítaní stránky. */
/** Collapsible tables *********************************************************
 *
 *  Description: Allows tables to be collapsed, showing only the header. See
 *               http://www.mediawiki.org/wiki/Manual:Collapsible_tables.
 *  Maintainers: [[**MAINTAINERS**]]
 */
var autoCollapse = 2;
var collapseCaption = 'hide';
var expandCaption = 'show';
 
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.className = 'collapseButton'; // Styles are declared in MediaWiki:Common.css
 
			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 );
 
/** Test if an element has a certain class **************************************
 *
 * Description: Uses regular expressions and caching for better performance.
 * Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
 */
 
var hasClass = (function() {
	var reCache = {};
	return function( element, className ) {
		return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
	};
})();
//--------------------------------------------------------------------------------
// -------------------------------------------------------------------------------
//  Force Preview  JavaScript code - Start
//
//  To allow any group to bypass being forced to preview, 
//  enter the group name in the permittedGroups array.
//  E.g.
//    var permittedGroups = [];                       // force everyone
//    var permittedGroups = [ "user"];                // permit logged-in users 
//    var permittedGroups = [ "sysop", "bureaucrat"]; // permit sysop, bureaucrat 
// -------------------------------------------------------------------------------
var permittedGroups = [];
 
Array.prototype.intersects = function() {
  // --------------------------------------------------------
  //  Returns true if any element in the argument array
  //  is the same as an element in this array
  // --------------------------------------------------------
  if( !arguments.length ){
    return false;
  }
  var array2 = arguments[0];
 
  var len1 = this.length;
  var len2 = array2.length;
  if( len2 == 0 ){
    return false;
  }
 
  for(var i=0; i<len1; i++){
    for(var j=0; j<len2; j++) {
      if( this[i] === array2[j] ) {
        return true;
      }
    }
  }
  return false;
};
 
function forcePreview() 
{
  if( wgAction != "edit") return;
  if( wgUserGroups === null) {
    wgUserGroups = [];
  }
  if( wgUserGroups.intersects(permittedGroups) ) {
    return;
  }
  var saveButton = document.getElementById("wpSave");
  if( !saveButton )
    return;
  saveButton.disabled = true;
  saveButton.value = "Save page (use preview first)";
  saveButton.style.fontWeight = "normal";
  document.getElementById("wpPreview").style.fontWeight = "bold";
}
 
addOnloadHook(forcePreview);
// -----------------------------------------------------
//  Force Preview  JavaScript code - End
// -----------------------------------------------------