Html2Wiki

From Freephile Wiki
Revision as of 00:27, 26 February 2015 by Freephile (talk | contribs)

Jump to navigation Jump to search

This extension officially lives at https://www.mediawiki.org/wiki/Extension:Html2Wiki This extension to MediaWiki is used to import HTML content (including images) into the wiki. We don't want to maintain another copy of the documentation here, but we may well host development ideas.

Custom "Tools" item

This is the JavaScript code used to add a custom element to the Tools panel to the left

/* Any JavaScript here will be loaded for all users on every page load. */
 
 
/** * Cusomize the sidebar * @see https://www.mediawiki.org/wiki/Manual:Interface/Sidebar * added by Greg Rundlett <info@eQuality-Tech.com> */
function isObject( obj ) {
	return typeof obj == 'object' && obj !== null;
}
 
function isArray( obj ) {
	return isObject( obj ) && obj.constructor.toString().indexOf( 'Array' ) != -1;
}
 
Array.prototype.Contains = function( element, strict ) {
	for( var i in this ) {
		if( this[i] == element && !strict || this[i] === element ) {
			return true;
		}
	}
	return false;
};
 
function ModifySidebar( action, section, name, link ) {
	try {
		var target;
		switch ( section ) {
			case 'languages':
				target = 'p-lang';
				break;
			case 'toolbox':
				target = 'p-tb';
				break;
			case 'navigation':
				target = 'p-navigation';
				break;
			default:
				target = 'p-' + section;
				break;
		}
 
		if ( action == 'add' ) {
			var node = document.getElementById( target )
							   .getElementsByTagName( 'div' )[0]
							   .getElementsByTagName( 'ul' )[0];
 
			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 );
		}
 
		if ( action == 'remove' ) {
			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] );
				}
			}
		}
 
	} catch( e ) {
		// let's just ignore what's happened
		return;
	}
}
 
function CustomizeModificationsOfSidebar() {
	// adds [[Special:Html2Wiki]] to toolbox
	ModifySidebar( 'add', 'toolbox', 'Import HTML', '/wiki/Special:Html2Wiki' );
	// removes [[Special:Upload]] from toolbox
	// ModifySidebar( 'remove', 'toolbox', 'Upload file', 'http://en.wikipedia.org/wiki/Special:Upload' );
}
// for anyone
addOnloadHook( CustomizeModificationsOfSidebar );
// customize only for bureaucrats
// didn't work in testing
/*if ( isArray( wgUserGroups ) ) { 	if ( wgUserGroups.Contains( 'bureaucrat' ) ) { 		addOnloadHook( CustomizeModificationsOfSidebar ); 	} }*/