# After the Deadline for TinyMCE - README

After the Deadline is an open source software service that checks spelling, style, and grammar. This package contains an AtD TinyMCE Plugin and an example for using After the Deadline with TinyMCE.

### Quick Start

1. Extract the contents of this zip file into the tiny_mce/plugins directory.
2. You'll need to make up an API key. Ideally your application name followed by a string that is unique to this user is best. There is a performance benefit to using the same key for subsequent requests.
3. You'll need to set three variables in your TinyMCE init:

   atd_rpc_id
   An API key that you make up (e.g., WPORG-dkfjhds)

   atd_rpc_url
   the URL to post to, a proxy PHP script is included. This will redirect all calls to http://service.afterthedeadline.com/ Use: htp://yourserver.com/path/to/AtD/proxy.php?url= for this. Note: the '?url=' portion is expected by the included proxy.php script

   atd_css_url
   the URL of the content.css file. Edit this file to change the appearance of AtD errors.

4. You'll need a proxy script on your server. Use the included proxy.php if you can. Otherwise you'll need to write your own.
5. As a final note, make sure your webpage is encoded in UTF-8 format. AJAX requests use the encoding of the parent website and AtD expects UTF-8. This is important as AtD has better support for accented characters and we're working to support more languages.

### Examples

If you've unzipped this archive on a webserver with PHP installed, you should be able to access demo.html directly and see everything work.

- demo.html

### Using your own AtD Server

You can download the After the Deadline server from open.afterthedeadline.com and serve your own requests. If you go this route, modify server/proxy.php to connect to your AtD host. All the other steps are the same.

### Ignore Phrases Capability (Optional)

After the Deadline lets you specify a list of phrases it should not highlight. This is the AtD equivalent of add to dictionary functionality in other programs. You can hardcode these values in the `atd_ignore_strings` value in TinyMCE init. The format is a comma separated list of phrases. (See example below for more).

Users can choose to ignore phrases by selecting Ignore always when clicking a highlighted phrase. You have to enable this feature for the Ignore always menu to show up. Do so by setting the `atd_ignore_enable` to the string `"true"` in TinyMCE init.

If you see Ignore all when clicking an error then this feature is disabled.

#### Manage Ignored Phrases with Cookies

There is a caveat to this client side ignore capability. You get to create the user interface for unignoring rules. The phrases are stored in a cookie named `atd_ignore`. This cookie was created with:

`tinymce.util.Cookie.setHash("atd_ignore", ...);`

The format of the cookie is some+phrase=1&someWord=1&.... See the TinyMCE API for tinymce.util.Cookie.

support/atdphrases.js and support/unignore.html are included in this archive to assist you.

#### Manage Ignored Phrases Yourself

The best option is to manage the ignored phrases preference on your server. We do this in our WordPress plugin. When we generate the TinyMCE init we pull the user's ignore preferences from our database and populate the `atd_ignore_strings` value with them.

The AtD TinyMCE plugin can be configured to make an AJAX call to your server when a user selects Ignore Always. To enable this set `atd_ignore_rpc_url` in the TinyMCE init. When set AtD will do a GET call to this URL with the ignored phrase&key=api key appended.

### Error Categories

This TinyMCE plugin only shows grammar, spelling, and misused word errors by default. All other categories of errors are filtered and you must explicitly enable them in the TinyMCE init parameters by setting the `atd_show_types` variable.

`atd_show_types: "Bias Language,Cliches,Complex Expression,Diacritical Marks,Double Negatives,Hidden Verbs,Jargon Language,Passive voice,Phrases to Avoid,Redundant Expression",`

You may omit any of these categories. Note that categories are separated by commas with no whitespace. The category names are case sensitive and yes, voice is lowercase in Passive voice.

### Localization

To localize the strings in this extension, create an object with the localized strings. Here is an example:

    var my_plugin_strings = {
       menu_title_spelling: "Spelling",
       menu_title_repeated_word: "Repeated	Word",
       menu_option_explain: "Explain...",
       menu_option_ignore_once: "Ignore suggestion",
       menu_option_ignore_always: "Ignore always",
       button_proofread_tooltip: "Proofread Writing"
       message_no_errors_found: "No writing errors were found.",
       message_server_error: "There was a problem communicating with the After the Deadline service. Try again in one minute."
    };

Then make TinyMCE use these strings:

    tinyMCE.addI18n('en.AtD', my_plugin_strings);

Note: I used en.AtD to indicate my_plugin_strings are an English translation of this AtD extension. For other languages use lang.AtD where lang is the two letter language code value specified for language in your TinyMCE init.

These string labels are compatible with the AtD/jQuery extension.

### What's New?

See the change log.

### Contact

Raphael Mudge

Get support from the atd-developers mailing list.

This code is a hack on the spellcheck plugin from Moxiecode. Thanks for the hard work guys.

### License

LGPL