User:Cacycle/wikEd development
wikEd |
---|
![]() |
Installation |
wikEd diff |
Program code |
Project |
Gadgets |
|
Translations |
|
This is the developer page and program documentation for wikEd, a full-featured in-browser text editor that adds enhanced text processing functions to Wikipedia and other MediaWiki edit pages. Please use this talk page for discussing wikEd development issues.
How it works
wikEd replaces the classic textarea input field with an iframe in designmode. That is essentially a separate html page that can be edited. The browser's rich-text editing interface is used to manipulate the text upon clicking a wikEd button, see [1]. After pushing the Save page button the content is copied back to the hidden textarea and then submitted.
Program structure
- Basic initialization
- Built-in user interface texts
- Edit-frame css rules
- Main window css rules
- Button image URLs
- Button definitions
- Toolbar definition
- User customizable variables
- Global variables including DOM elements
- Check for updates (Ajax)
- Schedules the setup routine to run after the page has been loaded
- WikEdSetup() — the setup routine
- Loads the diff script
- Loads the Live Preview script
- Loads the RegExTypoFix script
- Rearranges page elements into wrapper divs
- Puts the wikEd buttons on the page
- Generates the combo input boxes (input with drop-down button)
- Generates the iframe in design mode that replaces the classic textarea input field
- Copyies the textarea content to the iframe
- Event handler definitions
- WikEdAutoUpdate() — check for the latest version using Ajax, forced reload of page to update
- The button handlers:
- WikEdButton() — for buttons that do not require nor change the text (fast)
- WikEdEditButton() — for buttons that require or change the text (slow)
- Helper subroutines:
- WikEdWikifyHTML() — converts pasted html code into plain text wikicode
- WikEdHighlightSyntax() — highlights the syntax by adding html code to the plain text
- WikEdUpdateTextarea() - copies the frame content to the textarea, strips html formatting
- WikEdUpdateFrame() - copies the textarea content to the frame
- WikEdGetInnerHTML() - gets the innerHTML from a document fragment
- Cookie management routines
- Get recursive custom offsets:
- WikEdGetOffsetTop() - gets the element offset relative to the window top
- WikEdGetOffsetLeft() - gets the element offset relative to the left window border
- WikEdParseDOM() - parses a DOM subtree and and adds the plain text into a complex data structure
- WikEdStyleSheet() - creates a new style sheet object (cross-browser)
- Debugging routines
- WikedInsertTags(): overrides the insertTags function in wikibits.js, used for the standard Wikipedia toolbar buttons
Programming conventions
- Subroutine names start uppercase
- Variable names start lowercase
- Global variables start with wikEd..., global (i.e. all) functions start with WikEd... for reasons of compatibility with other scripts
Debugging setup
For performance reasons it is highly recommended to test the scripts on a local copy of a Wikipedia edit page in that all addresses of scripts, css files, and images have been changed to local copies. Relative links have to be preceded with "http://en.wikipedia.org". Configuration variables can be set in the header JavaScript of the page, e.g.:
var wikEdUseLocalImages = true; var wikEdImagePathLocal = 'file:///D:/wikEd/images/'; // the directory were you keep all wikEd button images var wikEdSkipBrowserTest = true; // this enables wikEd under IE and Opera var wikEdShowSourceButton = true; var wikEdDiffSrc = 'file:///D:/wikEd/diff.js'; // the local diff program used for 'Show current changes below'
For finally testing the code on Wikipedia, every developer should create a code page in his own user space ending with .js (e.g. User:YourUsername/wikEd_dev.js). These pages can only be edited by the owner for security reasons.
Making wikEd cross-browser compatible
Making the code compatible with IE or Opera should start with the WikEdSetup() routine.