Difference between revisions of "Html2Wiki"

From Freephile Wiki
Jump to navigation Jump to search
(Remove feature)
 
(9 intermediate revisions by one other user not shown)
Line 1: Line 1:
 
__NOTOC__ __NOEDITSECTION__
 
__NOTOC__ __NOEDITSECTION__
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.
+
<!-- {{Feature
 +
|explains= Special:Html2Wiki
 +
|description=Convert  web pages, Google Docs, or entire websites (including images) to your wiki
 +
|notes=Authored by [[User:Freephile|Greg Rundlett]]
 +
|tests=Interesting test case: http://howtoreallypronouncegif.com/
 +
|examples=
 +
}} -->
 +
This extension officially lives at [[mw:Extension:Html2Wiki]]
  
== Custom "Tools" item ==
+
See the documentation there, since it is maintained with the software.
This is the JavaScript code (added to MediaWiki:Common.js) used to add a custom element to the '''Tools''' panel to the left
 
  
<source lang="JavaScript">
+
This site may host development ideas or interesting examples/demos.
  
/* Any JavaScript here will be loaded for all users on every page load. */
+
== Other conversion tools ==
+
Html2Wiki relies on <code>pandoc</code> to do format conversionHere are some other approaches to doing conversions.
+
=== LibreOffice ===
/** * Cusomize the sidebar * @see https://www.mediawiki.org/wiki/Manual:Interface/Sidebar * added by Greg Rundlett <info@eQuality-Tech.com> */
+
LibreOffice Writer can connect to a Wiki, and allow you to edit and save articles in the wiki.
function isObject( obj ) {
+
* Make sure your LibreOffice can export MediaWiki directly from any format that LibreOffice can read
return typeof obj == 'object' && obj !== null;
+
  sudo apt-get install libreoffice-wiki-publisher
}
+
With this library installed, you can now export documents straight out of LibreOffice.
 
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 ); } }*/
 
  
</source>
+
=== Two-step conversion ===
 +
This isn't really better than using LibreOffice directly, but it is an option to at least compare the output (assuming direct export is giving a bad result)
 +
* Convert a doc to mediawiki by converting to HTML first, and then using <code>pandoc</code> to convert HTML to MediaWiki markup
 +
libreoffice --headless --convert-to html /tmp/awk.cheat.sheet.doc && \
 +
pandoc awk.cheat.sheet.html -o awk.cheat.sheet.mw -f html -t mediawiki
 +
 
 +
=== Online conversion ===
 +
https://devotter.com/converter is a webform interface to pandoc
 +
 
 +
Note: [[MediaWiki/Toolbox]] explains how we add a custom link to the "toolbox" element of this site.
 +
 
 +
# {{@todo}} [https://phabricator.wikimedia.org/project/board/1094/ Html2Wiki workboard]
 +
# {{@todo}} upgrade extension to work with new loading mechanism
 +
# {{@todo}} Create a service to import Google Docs to wiki
 +
# {{@todo}} Expand Html2Wiki to include anything that pandoc supports

Latest revision as of 16:06, 13 May 2020

This extension officially lives at mw:Extension:Html2Wiki

See the documentation there, since it is maintained with the software.

This site may host development ideas or interesting examples/demos.

Other conversion tools

Html2Wiki relies on pandoc to do format conversion. Here are some other approaches to doing conversions.

LibreOffice

LibreOffice Writer can connect to a Wiki, and allow you to edit and save articles in the wiki.

  • Make sure your LibreOffice can export MediaWiki directly from any format that LibreOffice can read
sudo apt-get install libreoffice-wiki-publisher

With this library installed, you can now export documents straight out of LibreOffice.

Two-step conversion

This isn't really better than using LibreOffice directly, but it is an option to at least compare the output (assuming direct export is giving a bad result)

  • Convert a doc to mediawiki by converting to HTML first, and then using pandoc to convert HTML to MediaWiki markup
libreoffice --headless --convert-to html /tmp/awk.cheat.sheet.doc && \
pandoc awk.cheat.sheet.html -o awk.cheat.sheet.mw -f html -t mediawiki

Online conversion

https://devotter.com/converter is a webform interface to pandoc

Note: MediaWiki/Toolbox explains how we add a custom link to the "toolbox" element of this site.

  1. Gedit.svg todo Html2Wiki workboard
  2. Gedit.svg todo upgrade extension to work with new loading mechanism
  3. Gedit.svg todo Create a service to import Google Docs to wiki
  4. Gedit.svg todo Expand Html2Wiki to include anything that pandoc supports