Extension:Html2Wiki/Reference

Html2Wiki
Html2Wiki project page on MediaWiki.org

Html2Wiki code in Wikimedia Git

Html2Wiki code on GitHub

Composer For extensions

Development Website
Special:Html2Wiki

Special:Upload

api.php?action=query&amp;meta=siteinfo&amp;format=json

http://localhost:8080/info.php

MediaWiki

 * 1) MediaWiki Architecture from The Architecture of Open Source Applications., volume II
 * 2) Manual:MediaWiki architecture
 * 3) mediawiki-core/master - also an example of Doxygen which is used by MediaWiki
 * 4) VisualEditor/master/
 * 5) http://api.jquery.com/
 * 6) php simplexmlelement.getname.php
 * 7) API:Main_page - esp. for creating content outside normal edit flow
 * 8) API:Calling internally
 * 9) Manual:Parameters to index.php
 * 10) Manual:Ajax about using the jQuery in MediaWiki
 * 11) How to become a MediaWiki hacker / Extension Writing Tutorial
 * 12) Manual:Developing extensions
 * 13) Manual:Database_layout
 * 14) Manual:Coding conventions / PHP
 * 15) Manual:How to debug [1]
 * 16) Manual:WebRequest.php
 * 17) ResourceLoader/Default_modules discusses using jQuery and the other resources
 * 18) Manual:$wgResourceModules
 * 19) Manual:Special_pages
 * 20) Manual:$wgEnableUploads
 * 21) Manual:$wgUploadDirectory - use this to change the upload location for ext.
 * 22) Manual:$wgHashedUploadDirectory set this false to get an easier 1to1 view I don't think I can use the upload facility at all (unless extending it considerably) because of the assumptions built into the upload facility (it's for assets, and would pollute the 'recent files' gallery etc.)
 * 23) Manual:Edit.php
 * 24) Manual:Edit token
 * 25) For Vagrant, there is a LocalSettings.php in /vagrant which overrides /vagrant/mediawiki/LocalSettings.php  (e.g. images is in /srv/images)
 * 26) Markup spec tells us what HTML allowed in wiki markup

DOM Parsing

 * 1) PHP DOM is based on libxml and native to PHP, so fast, but finicky can do XPath queries
 * 2) StackOverflow review
 * 3) phpquery is similar to jQuery (but last updated 2009) explained
 * 4) querypath does jQuery selectors; is installed with Composer and does HTML5 also
 * 5) simplehtmldom is written in PHP and not based on libxml.  More generous.

Parsoid

 * 1) to html
 * 2) Parsoid/Setup
 * 3) Parsoid/Debugging
 * 4) Parsoid/Troubleshooting

Pre-processing / Validators

 * 1) php manual / ref.tidy.php The PHP lib-tidy binding
 * 2) Tidy man page (configuration options including "new-blocklevel-tags")
 * 3) http://htmlpurifier.org/
 * 4) http://htmlpurifier.org/demo.php?post
 * 5) https://validator.nu/ is the best choice for API/service/testing https://about.validator.nu/
 * 6) W3C's validator, and Step-by-step guide (source available for "Unicorn" - the combined validator)
 * 7) http://oli.jp/2009/html5-structure4/ background article explaining HTML4 -&gt; HTML5 which can almost be summarized by "change the doctype".

Existing / Example code

 * 1) Extensions within Category:Bulk upload
 * 2) Extension:UploadLocal looks really good for showing how to hook into the upload process, and repeat it, with a display of files to be processed. Drawbacks: it handles ONLY images, and those must already be on the server.  May not be current, but looks fairly current.
 * 3) Extension:MsUpload looks really good - especially for hooking into the Edit screen and calling the API using HTML5 AJAX for drag and drop ease.  It specifically offers a new method of creating document sets: create/edit the category page, and uploads will be tagged with that category.  Drawbacks: dependency on Plupload and fallback to Flash and Silverlight which means hacking it might be impractical.  In any case, these authors have related extensions that make this extension and those others very likely a part of the solution.
 * 4) Extension:UploadWizard is an extension that allows a user to upload multiple files with a step-by-step JavaScript wizard.
 * 5) The simple way to HTML5 is to replace the first 4 lines of an HTML4 doc with
 * 6) Snippets for AJAX
 * 7) The "Working Wiki" extension to MediaWiki is an advanced and interesting project for later follow-up.

in-browser Editing

 * 1) Mozilla Gecko's built-in rich text editor
 * 2) Kevin Roth's RTE

-

[1] wfDebug( __METHOD__ . ": unzipping stuff" ); will put something in the log file

MWDebug::log("Setting $attribute to  ${$attribute}"); will put something in the console

https://www.mediawiki.org/wiki/Debugging_toolbar