AniDB RTE: Difference between revisions
Fahrenheit (talk | contribs) |
|||
(17 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{TOCright}} | {{TOCright}} | ||
The AniDB '''R'''ich '''T'''ext '''E'''ditor<br> | |||
This page will try to explain the AniDB RTE and why it isn't your standard Rich Text Editor. | This page will try to explain the AniDB RTE and why it isn't your standard Rich Text Editor. | ||
== What is an RTE == | == What is an RTE == | ||
A Rich Text Editor is a User Interface control that replaces a standard HTML textarea element; it allows for the rich formatting of text content, including common structural treatments like lists, or formatting treatments like bold and italic text. These formatting options are applied in real time, so that you get an immediate feedback on what you are doing. This is pretty much what you should be used to from using a word processing application like MS Word, Open Office Writer, etc. | |||
A Rich Text Editor is a User Interface control that replaces a standard HTML textarea element; it allows for the rich formatting of text content, including common structural treatments like lists, formatting treatments like bold and italic text | |||
== How does an RTE work == | == How does an RTE work == | ||
An RTE is usually an html document within an iframe with the contentEditable attribute enabled which allows for the editing of the document in your browser, there is then a set of basic commands for doing basic commands, these basic commands are done via the document.execCommand command, stuff like bold, italic and so on are applied with this command, execCommand also has another functions to control how an RTE works.<br> | |||
The RTE interface was developed by Microsoft and ported to other browsers by their respective vendors, much like the xmlhttprequest function that is core of AJAX. | |||
The content of the edited document is then sent by some way to the server, usually by an HTTP POST command, servers then store the content and after display it. | |||
The | The problem is that vendors more or less follow specifications standards with some not respecting execCommands which control how the editor works. This makes coding an RTE a very complicated issue if one intends to support multiple browsers with lots of hacked in code to support/work-around browser quirks. | ||
Every RTE has a lot of code, which can be either client, server-sided or both, to process the input, clean it up and adapt the data to the servers requirements. | |||
Every | |||
== The AniDB case == | == The AniDB case == | ||
AniDB doesn't store html formatted content like many other sites do, AniDB had for a long time a kind of tags, much like to the phpBB forum, like <tt>[b]some bold text[/b]</tt> and so on.<br> | |||
AniDB doesn't store html | |||
Whenever you used one of these tags in a review or message or whatever those tags were then saved to the server and then parsed and converted to html content on display by the server, so the above text would be returned as "'''some bold text'''". | Whenever you used one of these tags in a review or message or whatever those tags were then saved to the server and then parsed and converted to html content on display by the server, so the above text would be returned as "'''some bold text'''". | ||
=== Supported tags === | === Supported tags === | ||
* <tt>[b]...[/b]</tt> - bold text | |||
* [b]...[/b] - bold text | * <tt>[i]...[/i]</tt> - italic text | ||
* [i]...[/i] - italic text | * <tt>[u]...[/u]</tt> - underline | ||
* [u]...[/u] - underline | * <tt>[s]...[/s]</tt> - line-trough style | ||
* [s]...[/s] - line-trough style | * <tt>[ul]...[/ul]</tt> - unordered lists | ||
* [ul]...[/ul] - unordered lists | * <tt>[ol]...[/ol]</tt> - ordered lists | ||
* [ol]...[/ol] - ordered lists | * <tt>[li]...[/li]</tt> - lists items (go inside both <tt>[ul]</tt> and <tt>[ol]</tt>) | ||
* [li]...[/li] - lists items (go inside both [ul] and [ol]) | * <tt>[quote]...[/quote]</tt> - quoted text without name | ||
* [quote]...[/quote] - quoted text without name | * <tt>[quote=USERNAME]...[/quote]</tt> - quoted text with name referenced | ||
* [quote=USERNAME]...[/quote] - quoted text with name referenced | * <tt>[code]...[/code]</tt> - non-formatted text | ||
* [code]...[/code] - non- | * <tt>[spoiler]...[/spoiler]</tt> - text is hidden; visibility of text can be toggled using "Show/Hide Spoiler" button | ||
* [url]HREF[/url] - link to | * <tt>[url]HREF[/url]</tt> - link to URL where text is the same as the URL (can only be used to link AniDB domain URLs) | ||
* [url=HREF]...[/url] - link to | * <tt>[url=HREF]...[/url]</tt> - link to URL where text is different from the URL (can only be used to link AniDB domain URLs) | ||
* [img]HREF[/img] | * <tt>[img]HREF[/img]</tt> - link to an image | ||
=== Piece it all together === | === Piece it all together === | ||
Now that you know all the commands/tags what really happens when you write something in the RTE is: | Now that you know all the commands/tags what really happens when you write something in the RTE is: | ||
# You type all the text you wish and apply all the | # You type all the text you wish and apply all the formatting you wish | ||
# You press add/submit/send/whatever | # You press add/submit/send/whatever | ||
# Before your text is actually submitted to the server it will be parsed and known html commands will be converted to the | # Before your text is actually submitted to the server it will be parsed and known html commands will be converted to the AniDB format | ||
# Your text is submitted to the server | # Your text is submitted to the server | ||
Line 105: | Line 48: | ||
=== How can it go wrong === | === How can it go wrong === | ||
This is a run down of the most usual cases for the output to look like crap and most efficient solutions. | This is a run down of the most usual cases for the output to look like crap and most efficient solutions. | ||
==== Known causes for text to be borked ==== | ==== Known causes for text to be borked ==== | ||
* You did a copy paste from word or some other editor | * You did a copy paste from word or some other editor | ||
* You did a copy paste from a site | * You did a copy paste from a site | ||
==== What can you do to fix the output ==== | ==== What can you do to fix the output ==== | ||
* First and most useful is before copy/pasting text from a text editor first paste it in "Mode: Advanced" to remove the underlying formats and then switch to "Mode: Visual" if needed. | |||
* First and most useful is before copy/pasting text from a text editor first paste it in | * Disable JavaScript and reload the page and use the normal textarea to clean up the content | ||
* Disable | |||
* Bug fahrenheit until he finds out what have you done wrong and solve the issue | * Bug fahrenheit until he finds out what have you done wrong and solve the issue | ||
== Browser Support == | == Browser Support == | ||
Here is a list of the currently browser support and some notes about them:<br> | |||
Here is a list of the currently browser support and some notes about them:<br | For visual preview of the current browser support check this [[http://anidb.net/perl-bin/animedb.pl?show=cmt&id=17941 forum thread]]. | ||
=== Supported === | === Supported === | ||
* Internet Explorer 7 - | * Internet Explorer 7/8 - Can't correctly insert lists | ||
* Firefox/Gecko 2.0 - No issues | * Firefox/Gecko 2.0 - No issues | ||
* Opera 9.27 - | * Opera 9.27 - Can't correctly insert lists | ||
* Safari/AppleWebKit 3.1 - | * Safari/AppleWebKit 3.1 - No Issues | ||
=== Not Supported === | === Not Supported === | ||
* Any non- | * Any non-JavaScript enabled browser | ||
* Any | * Any browser that doesn't support document.contentEditable (i.e.: Opera 8) | ||
=== Not tested by AniDB === | === Not tested by AniDB === | ||
* Any other browser and or browser versions | * Any other browser and or browser versions | ||
[[Category:Features]] |
Latest revision as of 10:26, 20 August 2014
The AniDB Rich Text Editor
This page will try to explain the AniDB RTE and why it isn't your standard Rich Text Editor.
What is an RTE
A Rich Text Editor is a User Interface control that replaces a standard HTML textarea element; it allows for the rich formatting of text content, including common structural treatments like lists, or formatting treatments like bold and italic text. These formatting options are applied in real time, so that you get an immediate feedback on what you are doing. This is pretty much what you should be used to from using a word processing application like MS Word, Open Office Writer, etc.
How does an RTE work
An RTE is usually an html document within an iframe with the contentEditable attribute enabled which allows for the editing of the document in your browser, there is then a set of basic commands for doing basic commands, these basic commands are done via the document.execCommand command, stuff like bold, italic and so on are applied with this command, execCommand also has another functions to control how an RTE works.
The RTE interface was developed by Microsoft and ported to other browsers by their respective vendors, much like the xmlhttprequest function that is core of AJAX.
The content of the edited document is then sent by some way to the server, usually by an HTTP POST command, servers then store the content and after display it.
The problem is that vendors more or less follow specifications standards with some not respecting execCommands which control how the editor works. This makes coding an RTE a very complicated issue if one intends to support multiple browsers with lots of hacked in code to support/work-around browser quirks.
Every RTE has a lot of code, which can be either client, server-sided or both, to process the input, clean it up and adapt the data to the servers requirements.
The AniDB case
AniDB doesn't store html formatted content like many other sites do, AniDB had for a long time a kind of tags, much like to the phpBB forum, like [b]some bold text[/b] and so on.
Whenever you used one of these tags in a review or message or whatever those tags were then saved to the server and then parsed and converted to html content on display by the server, so the above text would be returned as "some bold text".
Supported tags
- [b]...[/b] - bold text
- [i]...[/i] - italic text
- [u]...[/u] - underline
- [s]...[/s] - line-trough style
- [ul]...[/ul] - unordered lists
- [ol]...[/ol] - ordered lists
- [li]...[/li] - lists items (go inside both [ul] and [ol])
- [quote]...[/quote] - quoted text without name
- [quote=USERNAME]...[/quote] - quoted text with name referenced
- [code]...[/code] - non-formatted text
- [spoiler]...[/spoiler] - text is hidden; visibility of text can be toggled using "Show/Hide Spoiler" button
- [url]HREF[/url] - link to URL where text is the same as the URL (can only be used to link AniDB domain URLs)
- [url=HREF]...[/url] - link to URL where text is different from the URL (can only be used to link AniDB domain URLs)
- [img]HREF[/img] - link to an image
Piece it all together
Now that you know all the commands/tags what really happens when you write something in the RTE is:
- You type all the text you wish and apply all the formatting you wish
- You press add/submit/send/whatever
- Before your text is actually submitted to the server it will be parsed and known html commands will be converted to the AniDB format
- Your text is submitted to the server
So whenever the parser tries to parse some html command and it doesn't find a match it will send the text as is to the server which will then convert it to plain and harmless text which will look but ugly in your review.
How can it go wrong
This is a run down of the most usual cases for the output to look like crap and most efficient solutions.
Known causes for text to be borked
- You did a copy paste from word or some other editor
- You did a copy paste from a site
What can you do to fix the output
- First and most useful is before copy/pasting text from a text editor first paste it in "Mode: Advanced" to remove the underlying formats and then switch to "Mode: Visual" if needed.
- Disable JavaScript and reload the page and use the normal textarea to clean up the content
- Bug fahrenheit until he finds out what have you done wrong and solve the issue
Browser Support
Here is a list of the currently browser support and some notes about them:
For visual preview of the current browser support check this [forum thread].
Supported
- Internet Explorer 7/8 - Can't correctly insert lists
- Firefox/Gecko 2.0 - No issues
- Opera 9.27 - Can't correctly insert lists
- Safari/AppleWebKit 3.1 - No Issues
Not Supported
- Any non-JavaScript enabled browser
- Any browser that doesn't support document.contentEditable (i.e.: Opera 8)
Not tested by AniDB
- Any other browser and or browser versions