360 lines
18 KiB
Markdown
360 lines
18 KiB
Markdown
|
# Change History
|
||
|
|
||
|
This document tracks the enhancements and bug fixes between releases of
|
||
|
WYMeditor.
|
||
|
|
||
|
## 1.0.0b5 (Beta 5)
|
||
|
|
||
|
*release-date* July 31, 2013
|
||
|
|
||
|
### Enhancements
|
||
|
|
||
|
* We now have all of the documentation in one place at
|
||
|
[wymeditor.readthedocs.org](https://wymeditor.readthedocs.org)! No more
|
||
|
switching back and forth between the old Trac site and the github Wiki. The
|
||
|
new documentation uses [Sphinx](http://sphinx-doc.org/) and new pull
|
||
|
requests will now be able to come with `docs/` already committed! Thanks to
|
||
|
Nick McLaughlin for the herculean effort in combining the years of spread-out
|
||
|
documentation.
|
||
|
* We now document how to run WYMeditor with jQuery 1.8.x and 1.9.x via
|
||
|
[jquery-migrate](https://github.com/jquery/jquery-migrate/). The unit tests
|
||
|
now also support those versions of jQuery.
|
||
|
* Some community members have created a
|
||
|
[Django-CMS 3](https://github.com/wymeditor/djangocms_wymeditor_plugin)
|
||
|
plugin for WYMeditor. If you're upgrading from Django-CMS 2 to 3, you'll want
|
||
|
to check it out.
|
||
|
* Tables can now be inserted and used in lists. Previously, the editor would
|
||
|
not let the user insert a table anywhere in a list, but now, the user can
|
||
|
insert a table at any point in a list or sublist and can even insert multiple
|
||
|
tables in the same list item. In addition, the tables should properly indent,
|
||
|
outdent, and space themselves within a list.
|
||
|
* Elements in the editor can now easily be flagged to be removed from the
|
||
|
editor output by the XHTML parser. This allows elements to be "editor-only"
|
||
|
in the sense that they will be visible in the editor but not included in the
|
||
|
outputted XHTML from the editor. Simply add the class
|
||
|
`WYMeditor.EDITOR_ONLY_CLASS` to an element to specify it to be removed by
|
||
|
the XHTML parser in this manner.
|
||
|
* Classes can now be specified to be removed from tags' `class` attribute by
|
||
|
the XHTML parser. Simply add a string for each of the class names to remove
|
||
|
to the `WYMeditor.CLASSES_REMOVED_BY_PARSER` array, and the XHTML parser will
|
||
|
remove all of those classes from all the tags in the editor's output.
|
||
|
* `div` elements are now visible and labeled in the editor so that they can
|
||
|
easily be worked with. In addition, `div` containers can now be switched to
|
||
|
other container types using the containers panel. This change was made to
|
||
|
allow for the addition of the selectable default root container feature
|
||
|
described in the following point.
|
||
|
* The default root container used by the editor can now be specified as
|
||
|
an option to be either `p` or `div`. The specified container for this option
|
||
|
will be used by default when an unspecified new container is created in the
|
||
|
root of the editor, and it will also be used as the default container for
|
||
|
wrapping any text or inline elements inserted directly into the editor body.
|
||
|
In addition, the editor will enforce that the unchosen option for the
|
||
|
default root container is not allowed in the root of the document by
|
||
|
converting the unchosen default root container to the chosen default root
|
||
|
container when possible (e.g. if `div` is specified as the default root
|
||
|
container, the editor will convert `p` elements in the root of the document
|
||
|
to `div` elements when the user modifies those containers). The default root
|
||
|
container option can be specified as an option of the new `structureRules`
|
||
|
option in the editor's initialization. For example:
|
||
|
|
||
|
```javascript
|
||
|
jQuery('.wymeditor').wymeditor({
|
||
|
structureRules: {
|
||
|
defaultRootContainer: 'div'
|
||
|
}
|
||
|
});
|
||
|
```
|
||
|
|
||
|
### Bug Fixes
|
||
|
|
||
|
* WYMeditor now works properly in Chrome when using jQuery 1.4 or higher.
|
||
|
Thanks to several folks for outlining the fix and for Nick McLaughlin for the
|
||
|
pull request.
|
||
|
* When using the bold tool in a heading in Chrome, there was an issue where a
|
||
|
span with a style attribute set to `font-weight: normal` would be wrapped
|
||
|
around the header's content. This has been fixed so that this span will no
|
||
|
longer occur after bolding.
|
||
|
* When attempting to insert an image outside of a container in Chrome such as
|
||
|
in the case of inserting an image into a blank document, there was an issue
|
||
|
where the image was being moved outside of the wymeditor body causing none of
|
||
|
the user-entered values for the attributes of the image to be applied to the
|
||
|
image. This has been fixed so that inserting an image properly places it
|
||
|
within the wymeditor body and properly applies the user-entered values for
|
||
|
its attributes.
|
||
|
* When switching between a normal table cell and a table header using the
|
||
|
"Table Header" option in the containers panel in the editor, any `colspan` or
|
||
|
other attributes were being lost in the container conversion. This has been
|
||
|
fixed so that all attributes such as `colspan` are retained when switching
|
||
|
between a normal table cell and a table header.
|
||
|
* In various situations when working in the editor, hitting enter to
|
||
|
create a new container in the root of the document would erroneously
|
||
|
create a `div` container instead of a `p` container. This `div`
|
||
|
container would not be labeled in the editor, and it could not be
|
||
|
converted to another type of container. As part of the feature
|
||
|
addition of a selectable default root container, this issue has been
|
||
|
fixed so that the selected default root container is always inserted
|
||
|
when hitting enter to create a new container in the root of the
|
||
|
document. In addition, `div` containers are now clearly labeled in the
|
||
|
editor and can now be converted to other types of containers using the
|
||
|
containers panel.
|
||
|
* A couple bugs in IE dealing with content not allowed to be in the root of the
|
||
|
editor body not being properly wrapped in containers have been fixed. The
|
||
|
first bug fixed was that text directly typed into the body of the editor was
|
||
|
not being wrapped in a container, but this is now fixed and the text will be
|
||
|
properly wrapped in the default root container. The second bug fixed was that
|
||
|
inline elements not allowable to be directly inserted into the body of the
|
||
|
editor (e.g. `strong`, `em`, `a`, etc.) were not being wrapped in a
|
||
|
container, but this is also now fixed and those elements will be properly
|
||
|
wrapped in the default root container when modified in the body.
|
||
|
|
||
|
### Build Process Improvements
|
||
|
|
||
|
* [Grunt](http://gruntjs.com/) has been set up for the WYMeditor project so
|
||
|
that the unit test suite can now easily be run from the command line in a
|
||
|
headless [Phantom.js](http://phantomjs.org/) browser using the Grunt `test`
|
||
|
task. See the testing section in the README or the docs for more information.
|
||
|
* The WYMeditor project is now set up on [Travis CI](https://travis-ci.org/)
|
||
|
for continuous integration using the unit test suite run with a variety of
|
||
|
jQuery versions using the Grunt `test` task.
|
||
|
* [Selenium2](http://seleniumhq.org/) tests have been set up for the WYMeditor
|
||
|
project to allow for testing coverage of some behaviors that can't be
|
||
|
replicated well with JavaScript. See the README for information on running
|
||
|
the Selenium tests.
|
||
|
|
||
|
### Deprecation
|
||
|
|
||
|
* The `WYMeditor.editor.html()` function has been deprecated and replaced with
|
||
|
the `WYMeditor.editor._html()` function that has the same functionality. This
|
||
|
change was made to discourage users from using the `html()` function (which
|
||
|
is intended only for internal use) as a means to get the HTML output from the
|
||
|
editor because that function bypasses all parsing and cross-browser cleanup
|
||
|
for the HTML. In most cases, users should be using the
|
||
|
`WYMeditor.editor.xhtml()` function to get the HTML output from the editor
|
||
|
because it does parse and apply cross-browser cleanup to the HTML. Now, using
|
||
|
the `html()` function will still work but just give a console warning of its
|
||
|
deprecation, but the function will be fully removed in the release of version
|
||
|
1.0.0.
|
||
|
|
||
|
## 1.0.0b4 (Beta 4)
|
||
|
|
||
|
*release-date* February 15, 2013
|
||
|
|
||
|
### Enhancements
|
||
|
|
||
|
* Added a Danish translation. Thanks Sebastian Kolind.
|
||
|
* The Makefile now supports building a WYMeditor distribution based on Google's
|
||
|
Closure Compiler instead of UglifyJS. Thanks Michael Farrell.
|
||
|
|
||
|
### Bug Fixes
|
||
|
|
||
|
* The editor area is now properly displayed when using the Compact skin and
|
||
|
styling with `white-space: nowrap'`. Thanks to Jorge Salinas for the fix.
|
||
|
* Fixed several bugs related to parsing void elements (br, hr, etc) which could
|
||
|
be either self-closing or not. These usually manifested when used near other
|
||
|
inline elements (eg. span). Thanks to Craig MacGregor for the fix.
|
||
|
* Fixed several XHTML-strict non-compliance problems. WYMeditor aims to always
|
||
|
output fully-compliant XHTML. Thanks Philipp Cordes for the report and fix.
|
||
|
* The Makefile now fails more gracefully when you don't have UglifyJS installed
|
||
|
and you attempt to build a distribution. Thanks to Michael Farrell for the fix.
|
||
|
* Fixed the Slovak translation language code. Thanks to Josef Šimánek for the
|
||
|
fix.
|
||
|
* In 1.0.0b2, we added a bug fix to allow DIV tags to peacefully co-exist with
|
||
|
P tags in document structure. It turned out that this fix was a bit
|
||
|
half-baked and actually broke both P and DIV tags in subtle ways, especially
|
||
|
in webkit browsers. We've reverted that change, so DIVs are now just as
|
||
|
broken as they were previously, but P tags are back to being peachy. The full
|
||
|
fix for mixing DIV and P tags for structure is being worked on as part of
|
||
|
[Issue 360](https://github.com/wymeditor/wymeditor/pull/360) and will
|
||
|
hopefully land in 1.0.0b5, which is now definitely going to be a thing.
|
||
|
|
||
|
### 1.0.0 Blocking Issues
|
||
|
|
||
|
In an attempt to ovary-up (or whatever your preferred genatalia) and actually
|
||
|
get a 1.0.0 out the door, we've moved the goalposts a bit. The applicable 1.0.x
|
||
|
issues have been narrowed down a bit to the major bugs in supported browsers. I
|
||
|
understand that `major` is in the eye of the beholder, but this is an attempt
|
||
|
to more-effectively allocated the project's limited resources. The remaining
|
||
|
issues are listed on the [1.0.0
|
||
|
milestone](https://github.com/wymeditor/wymeditor/issues?milestone=5) and
|
||
|
you'll notice there are no features that made the cut. It's all bug-fix mode.
|
||
|
|
||
|
Folks have been using WYMeditor in production longer than Chrome has existed as
|
||
|
a browser. Perhaps it's time to not pretend like a non-1.0 version number means
|
||
|
anything.
|
||
|
|
||
|
## 1.0.0b3 (Beta 3)
|
||
|
|
||
|
*release-date* June 26, 2012
|
||
|
|
||
|
This is a small hotfix release to fix `jQuery.noConflict()` compatibility,
|
||
|
which is necessary for Drupal integration.
|
||
|
|
||
|
## 1.0.0b2 (Beta 2)
|
||
|
|
||
|
*release-date* June 22, 2012
|
||
|
|
||
|
### Enhancements
|
||
|
|
||
|
* Added a Slovak translation. Thanks Miroslav Bendik.
|
||
|
|
||
|
### Bug Fixes
|
||
|
|
||
|
* A missing space in the tools HTML was triggering quirks mode in FF and other
|
||
|
browsers. Thanks to corphi for the fix.
|
||
|
* Inserting `div` tags via the API or DOM no longer breaks document structure
|
||
|
in chrome and safari. Thanks to Jakub Krčma for the fix.
|
||
|
* It is once again possible to use the Drupal 7 wysiwyg module to integrate
|
||
|
WYMeditor. Thanks to Jean-Francois Hovinne for the patch.
|
||
|
* Newline characters are no longer incorrectly removed in IE, which could cause
|
||
|
words in copy/pasted lists to join together. Thanks to Jakub Krčma for the
|
||
|
fix.
|
||
|
* Tables and images are once again properly inserted at your cursor location
|
||
|
in Internet Explorer. This was a regression bug in 1.0.0b1.
|
||
|
|
||
|
## 1.0.0b1 (Beta 1)
|
||
|
|
||
|
*release-date* February 27, 2012
|
||
|
|
||
|
We're almost there! Following up on the later October alpha release, we're
|
||
|
happy to announce the availability of a beta-quality WYMeditor release. This
|
||
|
release is not without bugs, but we think it is strictly better than 0.5.0rc2
|
||
|
with a variety of enhancements and bug fixes. Users currently on an earlier
|
||
|
alpha or on 0.5.0rc2 are encouraged to try out this release and report any
|
||
|
bugs, especially those that are new since 0.5.0rc2.
|
||
|
|
||
|
Bugs that are determined to be regressions from 0.5.0rc2 will receive the
|
||
|
highest priority fixes.
|
||
|
|
||
|
Any feedback or discussion would be appreciated on the
|
||
|
[WYMeditor Forums](http://community.wymeditor.org/).
|
||
|
|
||
|
Versus 0.5.0rc2 we have:
|
||
|
|
||
|
* *19* major bug fixes
|
||
|
* *8* major enhancements including a new theme.
|
||
|
* A huge internal code refactor to make maintaining and improving WYMeditor easier
|
||
|
* A passing unit test suite containing more than 600 tests across all supported browsers
|
||
|
|
||
|
### Upgrade Cycle
|
||
|
|
||
|
Once all
|
||
|
[milestone 1.0.0 issues](https://github.com/wymeditor/wymeditor/issues?milestone=10&sort=created&direction=desc&state=open)
|
||
|
are completed, this cycle will culminate in a 1.0.0 stable release.
|
||
|
|
||
|
### Enhancements
|
||
|
|
||
|
* The parser now works harder to correct any invalid list nesting that might
|
||
|
occur due to browser-specific problems or HTML that was loaded to begin. On
|
||
|
every list action (indent, outdent, order/unordered conversion), the parser
|
||
|
crawls your list to make any necessary corrections. This ensures a much more
|
||
|
consistent list-editing experience, especially in Internet Explorer.
|
||
|
* A new *pretty* theme option is now available for modern browsers (ie9+, FF,
|
||
|
Chrome, Safari). This theme uses CSS instead of images to provide context
|
||
|
clues for blocks, resulting in fewer HTTP requests and better network
|
||
|
performance. Additionally, the context clues have been expanded to provide a
|
||
|
better "plain english" explanation of the elements. Give this new theme a
|
||
|
swing at [the example](http://wymeditor.no.de/wymeditor/examples/17-pretty-theme.html).
|
||
|
|
||
|
You can enable it in your project by passing the
|
||
|
`iframeBasePath: "wymeditor/iframe/pretty/"` option to your WYMeditor instance.
|
||
|
|
||
|
Thanks to first-time contributor Gyuris Gellért for the theme.
|
||
|
* The Embed plugin now supports embedding via an iframe.
|
||
|
* List indent/outdent has been rewritten to fix several outstanding bugs in
|
||
|
various browsers. Indent and outdent are now always opposites of each other
|
||
|
(outdenting what you just indented returns you to your original state) and
|
||
|
the behavior is consistent across all supported browsers.
|
||
|
* A list plugin is now available that enables tab for list indent and
|
||
|
shift + tab for list outdent.
|
||
|
|
||
|
It is available at `wymeditor/plugins/list/jquery.wymeditor.list.js`.
|
||
|
To enable the plugin, create a ListPlugin object via the
|
||
|
`wymeditor.postInit` option. eg::
|
||
|
|
||
|
$('.wymeditor').wymeditor({
|
||
|
postInit: function(wym) {
|
||
|
var listPlugin = new ListPlugin({}, wym);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
* A new Table editing plugin is now available
|
||
|
|
||
|
The table editing plugin enables the following:
|
||
|
|
||
|
* Users can now add and remove rows and columns from existing tables.
|
||
|
* Users can merge table cells to create either `colspan` or `rowspan`.
|
||
|
* Hitting the `tab` key while inside a table now moves the cursor to the
|
||
|
next cell, improving usability when editing tables. This can be disabled
|
||
|
by passing `enableCellTabbing: false` to the plugin initialization.
|
||
|
|
||
|
The plugin is available at `wymeditor/plugins/table/jquery.wymeditor.table.js`.
|
||
|
To enable the plugin, instantiate it during the `wymeditor.postInit` option.
|
||
|
eg::
|
||
|
|
||
|
$('.wymeditor').wymeditor({
|
||
|
postInit: function(wym) {
|
||
|
var tableEditor = wym.table();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
* Rangy is now included as part of the distribution and used to create
|
||
|
consistent cross-browser selection objects.
|
||
|
|
||
|
* A console warning message is now created if no wymPath option is provided and
|
||
|
it can't be automatically determined. The editor also attempts to continue
|
||
|
with the assumption that your wymPath is your current directory, instead of
|
||
|
throwing an exception immediately.
|
||
|
|
||
|
|
||
|
### Bug Fixes
|
||
|
|
||
|
* A rare bug affecting ie8 users with certain combinations of CSS attributes
|
||
|
has been fixed (with a work-around). This bug would manifest as all content
|
||
|
in the editor temporarily and randomly disappearing after a keypress, only
|
||
|
to re-appear when the user moved their mouse.
|
||
|
* The editor height no longer changes height by a few pixels the first time
|
||
|
someone hovers over a tool.
|
||
|
* Several list indent/outdent bugs that could result in invalid HTML and broken
|
||
|
lists are now fixed. Users can no-longer break their lists with specific
|
||
|
combinations of double indents and outdents.
|
||
|
* The HTML parser/validator now corrects unclosed <li> tags in lists so that if
|
||
|
a piece of HTML has previously been affected by the broken list bug, it will
|
||
|
be automatically corrected.
|
||
|
* It is now always possible to insert tables, preformatted text and blockquotes
|
||
|
at the start and end of documents, as well as in between each other.
|
||
|
Previously, depending on your browser and version, you couldn't do one or more
|
||
|
of these things.
|
||
|
* It is now possible to paste content in to a table when using internet
|
||
|
explorer.
|
||
|
* Fixed some problems with ordered and unordered list nesting in Internet
|
||
|
Explorer caused by a regex failing to account for IE's insertion of
|
||
|
whitespace in list HTML.
|
||
|
* `colSpan` and `rowSpan` attributes are no longer stripped out in Internet
|
||
|
Explorer.
|
||
|
* Fixed a bug making it impossible to use *Paste From Word* inside tables or lists
|
||
|
* Fixed a list indent bug when indenting a list with a previous list item which
|
||
|
had a sublist of a different list type. This used to create a second sublist
|
||
|
of the original list type, which isn't what someone would expect.
|
||
|
* Fixed several related list outdent bugs where content could be re-ordered or
|
||
|
where outdent would fail to occur.
|
||
|
* It's now possible to consistently toggle lists between ordered and unordered
|
||
|
in all supported browsers.
|
||
|
* Turning a top-level item into a list no longer wraps the list in a paragraph
|
||
|
in chrome 16 and higher.
|
||
|
* Fixed indent/outdent when highlighting an inline node instead of the list
|
||
|
(eg. a bolded section).
|
||
|
* Updated the turkish translation (thanks Gokce).
|
||
|
* Attempting to indent with a cursor outside of a list no longer throws a
|
||
|
javascript error.
|
||
|
* Several bugs related to losing/moving your selection when indenting or
|
||
|
outdenting lists are now fixed.
|
||
|
* Outdenting after using backspace to join an item inside a list no longer
|
||
|
loses content in internet explorer.
|
||
|
* `<col />` tags are now automatically self-closing and the parser no longer
|
||
|
forces a closing `</col>` tag.
|
||
|
|
||
|
Thanks to first-time contributor Steven Bufton for the fix.
|
||
|
|
||
|
|
||
|
|