Ticket #9249 (closed PLIP: fixed)
Add TinyMCE as the default visual editor
Reported by: | limi | Owned by: | robgietema |
---|---|---|---|
Priority: | minor | Milestone: | 4.0 |
Component: | Visual Editor | Version: | |
Keywords: | accessibility | Cc: | robgietema, lucmult@…, plip-advisories@…, dukebody, grahamperrin@…, yurj |
Description (last modified by limi) (diff)
For Plone 4, we propose adding TinyMCE as the default editor for Plone. The majority of this work is already done with the Products.TinyMCE add-on.
Main implementation issues to watch out for:
- TinyMCE has to have feature parity with Kupu to make the transition as seamless as possible (e.g. definition lists are missing now, I think?)
- Some filter settings are stored on the Kupu tool currently, shouldn't be
- Same button layout as Kupu, except where it is clearly broken (example: the internal/external link buttons)
- Buttons should be styled text where it makes sense, so they can be translated — examples: the [B] button is [F] in Norwegian MS Word, the link button should be the text "Link" rendered in blue with underline.
- We change the behavior of the editor preference on users: blank value means "use the site default". A script to do this to all users in the site so people that upgrade to Plone 4 can switch to TinyMCE
- Upgrading: current thought is that sites on existing 3.x instances should keep Kupu as their default, new instances get TinyMCE. This might change, depending on whether it's a pain to ship both TinyMCE and Kupu in Plone 4.
Hopefully, we can also get the Trusted role into Plone 4, so groups of people can be selectively opted out of the HTML filtering of embed/object/etc.
Change History
comment:4 Changed 7 years ago by alecm
If we don't ship kupu and keep it installed for migrated 3.x sites, people using customized kupu functionality (fairly common, I think) will have their expectations broken. Are there reasons why shipping both for migration purposes would be painful? In any case, this change is likely to require major documentation updates, and the success of this effort may largely be determined by the extent to which the integration of the new editor is reflected in documentation.
comment:5 Changed 7 years ago by pupq
People don't like to have things disappear on them. Continuing to ship Kupu would seem critical to this being received warmly by some integrators.
It would definitely be important for us to have a high-level doc that helps people understand *why* we've chosen TinyMCE, at a level integrators can follow. This is +1 for my perspective--but I understand the benefits here. If we don't explain his in high-level, happy ways, I'd fear people just see this as "oh no, another new thing we have to learn".
In general: very +1.
comment:6 Changed 7 years ago by erikrose
- Owner robgietema deleted
Clearing Owner field of 4.0 PLIPs so we can use it to mean "implementor". (Many of these owners were automatically assigned from choosing a Component that had a default owner.)
comment:9 Changed 7 years ago by davisagli
I doubt that it's very feasible for us to continue to bundle and support kupu in addition to TinyMCE if we switch to TinyMCE as the default...we already have enough trouble maintaining kupu for the 3.x series.
I agree that it is very important that we do a good job of documenting the ways in which TinyMCE differs from kupu, as well as the reasons for making this switch.
From my personal experience customizing both tinymce and kupu, I can attest that tinymce's plugin system is quite nice.
My FWT vote: a cautious +1.
comment:10 Changed 7 years ago by MatthewWilkes
FWT Vote: +1
Oh good god, +1.
comment:11 Changed 7 years ago by rossp
FWT vote +1. Concerning Kupu, I think we should either keep Kupu in Plone 4 or add TinyMCE to Plone 3. IOW, I think there should be a period with both and I don't think the difficulty in maintaining Kupu justifies the disruption to users.
comment:12 Changed 7 years ago by raphael
FWT vote:
+1 on adding TinyMCE +1 on making it the default on new sites -1 on removing kupu (maybe OK in Plone 5)
that gives: +1
comment:13 Changed 7 years ago by calvinhp
FWT Vote: +1 I agree wtih rossp that we should maintain both for a while to keep end user disruption and integrator pain to a minimum.
comment:14 Changed 7 years ago by esteele
Approved by FWT vote.
comment:15 Changed 7 years ago by esteele
Do we have an implementer for this PLIP?
comment:19 Changed 7 years ago by robgietema
This PLIP is ready for review.
http://svn.plone.org/svn/plone/buildouts/plone-coredev/branches/4.0/plips/plip9249-tinymce.txt
comment:20 Changed 7 years ago by xela7
A note - Before I installed the plip, I had an existing plone site. After intalling plip, the tiny mce was not in the control panel add on configuration or in the pull down list under the site configlet. Could be a problem for upgrades?
comment:21 Changed 7 years ago by xela7
As noted above, I had an existing plone site. I deleted that site and added a new site. When trying to add a Page to the home page, (and also tried an even and got similar error) I received the following error:
Traceback (innermost last):
Module ZPublisher.Publish, line 127, in publish Module ZPublisher.mapply, line 77, in mapply Module ZPublisher.Publish, line 47, in call_object Module Products.CMFPlone.FactoryTool, line 446, in call Module ZPublisher.mapply, line 77, in mapply Module ZPublisher.Publish, line 47, in call_object Module Products.CMFFormController.FSControllerPageTemplate, line 91, in call Module Products.CMFFormController.BaseControllerPageTemplate, line 31, in _call Module Shared.DC.Scripts.Bindings, line 324, in call Module Shared.DC.Scripts.Bindings, line 361, in _bindAndExec Module Products.CMFCore.FSPageTemplate, line 240, in _exec Module Products.CMFCore.FSPageTemplate, line 180, in pt_render Module Products.PageTemplates.PageTemplate, line 80, in pt_render Module zope.pagetemplate.pagetemplate, line 115, in pt_render
- Warning: Macro expansion failed
- Warning: <type 'exceptions.KeyError'>: 'macro'
Module zope.tal.talinterpreter, line 271, in call Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 888, in do_useMacro Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 533, in do_optTag_tal Module zope.tal.talinterpreter, line 518, in do_optTag Module zope.tal.talinterpreter, line 513, in no_tag Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 888, in do_useMacro Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 533, in do_optTag_tal Module zope.tal.talinterpreter, line 518, in do_optTag Module zope.tal.talinterpreter, line 513, in no_tag Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 954, in do_defineSlot Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 533, in do_optTag_tal Module zope.tal.talinterpreter, line 518, in do_optTag Module zope.tal.talinterpreter, line 513, in no_tag Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 858, in do_defineMacro Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 954, in do_defineSlot Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 533, in do_optTag_tal Module zope.tal.talinterpreter, line 518, in do_optTag Module zope.tal.talinterpreter, line 513, in no_tag Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 946, in do_defineSlot Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 533, in do_optTag_tal Module zope.tal.talinterpreter, line 518, in do_optTag Module zope.tal.talinterpreter, line 513, in no_tag Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 858, in do_defineMacro Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 533, in do_optTag_tal Module zope.tal.talinterpreter, line 518, in do_optTag Module zope.tal.talinterpreter, line 513, in no_tag Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 888, in do_useMacro Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 852, in do_condition Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 954, in do_defineSlot Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 533, in do_optTag_tal Module zope.tal.talinterpreter, line 518, in do_optTag Module zope.tal.talinterpreter, line 513, in no_tag Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 852, in do_condition Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 533, in do_optTag_tal Module zope.tal.talinterpreter, line 518, in do_optTag Module zope.tal.talinterpreter, line 513, in no_tag Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 821, in do_loop_tal Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 533, in do_optTag_tal Module zope.tal.talinterpreter, line 518, in do_optTag Module zope.tal.talinterpreter, line 513, in no_tag Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 533, in do_optTag_tal Module zope.tal.talinterpreter, line 522, in do_optTag Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 821, in do_loop_tal Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 533, in do_optTag_tal Module zope.tal.talinterpreter, line 518, in do_optTag Module zope.tal.talinterpreter, line 513, in no_tag Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 888, in do_useMacro Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 533, in do_optTag_tal Module zope.tal.talinterpreter, line 518, in do_optTag Module zope.tal.talinterpreter, line 513, in no_tag Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 888, in do_useMacro Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 533, in do_optTag_tal Module zope.tal.talinterpreter, line 518, in do_optTag Module zope.tal.talinterpreter, line 513, in no_tag Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 852, in do_condition Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 533, in do_optTag_tal Module zope.tal.talinterpreter, line 518, in do_optTag Module zope.tal.talinterpreter, line 513, in no_tag Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 852, in do_condition Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 946, in do_defineSlot Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 533, in do_optTag_tal Module zope.tal.talinterpreter, line 518, in do_optTag Module zope.tal.talinterpreter, line 513, in no_tag Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 888, in do_useMacro Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 533, in do_optTag_tal Module zope.tal.talinterpreter, line 518, in do_optTag Module zope.tal.talinterpreter, line 513, in no_tag Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 533, in do_optTag_tal Module zope.tal.talinterpreter, line 518, in do_optTag Module zope.tal.talinterpreter, line 513, in no_tag Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 888, in do_useMacro Module zope.tal.talinterpreter, line 343, in interpret Module zope.tal.talinterpreter, line 583, in do_setLocal_tal Module zope.tales.tales, line 696, in evaluate
- URL: file:/Users/alex/buildout_sites/plone4_buildout/src/Products.TinyMCE/Products/TinyMCE/skins/tinymce/wysiwyg_support.pt
- Line 5, Column 2
- Expression: <PythonExpr path('nocall:here/%s_wysiwyg_support|here/%s/wysiwyg_support|here/portal_skins/plone_wysiwyg/wysiwyg_support' % (editor, editor))>
- Names:
{'container': <PloneSite at /Site>,
'context': <ATDocument at /Site/portal_factory/Document/document.2009-08-27.5080664252 used for /Site>, 'default': <object object at 0x16530>, 'here': <ATDocument at /Site/portal_factory/Document/document.2009-08-27.5080664252 used for /Site>, 'loop': {u'field': <Products.PageTemplates.Expressions.PathIterator object at 0x579bd10>,
u'fieldset': <Products.PageTemplates.Expressions.PathIterator object at 0x579bb50>},
'nothing': None, 'options': {'args': (),
'state': <Products.CMFFormController.ControllerState.ControllerState object at 0x5805870>},
'repeat': <Products.PageTemplates.Expressions.SafeMapping object at 0x60dfe68>, 'request': <HTTPRequest, URL= http://localhost:8080/Site/portal_factory/Document/document.2009-08-27.5080664252/atct_edit>, 'root': <Application at >, 'template': <FSControllerPageTemplate at /Site/atct_edit used for /Site/portal_factory/Document/document.2009-08-27.5080664252>, 'traverse_subpath': [], 'user': <PropertiedUser 'admin'>}
Module Products.PageTemplates.ZRPythonExpr, line 49, in call
- traceback_info: path('nocall:here/%s_wysiwyg_support|here/%s/wysiwyg_support|here/portal_skins/plone_wysiwyg/wysiwyg_support' % (editor, editor))
Module PythonExpr, line 1, in <expression> Module zope.tales.pythonexpr, line 77, in call Module Products.PageTemplates.Expressions, line 111, in init Module zope.tales.expressions, line 167, in init Module zope.tales.tales, line 598, in compile Module Products.PageTemplates.Expressions, line 111, in init Module zope.tales.expressions, line 170, in init Module zope.tales.expressions, line 57, in init
CompilerError: Path element may not be empty in 'herewysiwyg_support'
comment:22 Changed 7 years ago by xela7
Note also, I switched to kupu in the site configlet and received the same error. I then switched back to tinymce and received the same error.
comment:23 Changed 7 years ago by fulviocasali
I haven't been able to run this plip. Buildout works fine, but as soon as I start the instance, I get this error:
2009-08-27 16:40:40 ERROR Application Could not import Products.ATContentTypes Traceback (most recent call last): File "/Users/fulvio/plone/plone4/eggs/Zope2-2.12.0b4-py2.6-macosx-10.5-i386.egg/OFS/Application.py", line 596, in import_product product=__import__(pname, global_dict, global_dict, silly) File "/Users/fulvio/plone/plone4/eggs/Products.ATContentTypes-1.3.2-py2.6.egg/Products/ATContentTypes/__init__.py", line 37, in <module> from Products.ATContentTypes.config import HAS_LINGUA_PLONE File "/Users/fulvio/plone/plone4/eggs/Products.ATContentTypes-1.3.2-py2.6.egg/Products/ATContentTypes/config.py", line 30, in <module> from Products.ATContentTypes.configuration import zconf File "/Users/fulvio/plone/plone4/eggs/Products.ATContentTypes-1.3.2-py2.6.egg/Products/ATContentTypes/configuration/__init__.py", line 25, in <module> from Products.ATContentTypes.configuration.config import zconf File "/Users/fulvio/plone/plone4/eggs/Products.ATContentTypes-1.3.2-py2.6.egg/Products/ATContentTypes/configuration/config.py", line 29, in <module> from Products.ATContentTypes.configuration.schema import atctSchema File "/Users/fulvio/plone/plone4/eggs/Products.ATContentTypes-1.3.2-py2.6.egg/Products/ATContentTypes/configuration/schema.py", line 29, in <module> from Products.ATContentTypes.configuration import datatype File "/Users/fulvio/plone/plone4/eggs/Products.ATContentTypes-1.3.2-py2.6.egg/Products/ATContentTypes/configuration/datatype.py", line 25, in <module> from Products.CMFCore import permissions as CMFCorePermissions File "/Users/fulvio/plone/plone4/eggs/Products.CMFCore-2.1.2-py2.6.egg/Products/CMFCore/__init__.py", line 26, in <module> import PortalFolder File "/Users/fulvio/plone/plone4/eggs/Products.CMFCore-2.1.2-py2.6.egg/Products/CMFCore/PortalFolder.py", line 32, in <module> from CMFCatalogAware import CMFCatalogAware File "/Users/fulvio/plone/plone4/eggs/Products.CMFCore-2.1.2-py2.6.egg/Products/CMFCore/CMFCatalogAware.py", line 31, in <module> from interfaces import ICallableOpaqueItem File "/Users/fulvio/plone/plone4/eggs/Products.CMFCore-2.1.2-py2.6.egg/Products/CMFCore/interfaces/__init__.py", line 47, in <module> from Interface.bridge import createZope3Bridge ImportError: No module named Interface.bridge Traceback (most recent call last): File "/Users/fulvio/plone/plone4/bin/runzope", line 89, in <module> Zope2.Startup.run.run() File "/Users/fulvio/plone/plone4/eggs/Zope2-2.12.0b4-py2.6-macosx-10.5-i386.egg/Zope2/Startup/run.py", line 21, in run starter.prepare() File "/Users/fulvio/plone/plone4/eggs/Zope2-2.12.0b4-py2.6-macosx-10.5-i386.egg/Zope2/Startup/__init__.py", line 93, in prepare self.startZope() File "/Users/fulvio/plone/plone4/eggs/Zope2-2.12.0b4-py2.6-macosx-10.5-i386.egg/Zope2/Startup/__init__.py", line 283, in startZope Zope2.startup() File "/Users/fulvio/plone/plone4/eggs/Zope2-2.12.0b4-py2.6-macosx-10.5-i386.egg/Zope2/__init__.py", line 47, in startup _startup() File "/Users/fulvio/plone/plone4/eggs/Zope2-2.12.0b4-py2.6-macosx-10.5-i386.egg/Zope2/App/startup.py", line 58, in startup OFS.Application.import_products() File "/Users/fulvio/plone/plone4/eggs/Zope2-2.12.0b4-py2.6-macosx-10.5-i386.egg/OFS/Application.py", line 573, in import_products import_product(product_dir, product_name, raise_exc=debug_mode) File "/Users/fulvio/plone/plone4/eggs/Zope2-2.12.0b4-py2.6-macosx-10.5-i386.egg/OFS/Application.py", line 596, in import_product product=__import__(pname, global_dict, global_dict, silly) File "/Users/fulvio/plone/plone4/eggs/Products.ATContentTypes-1.3.2-py2.6.egg/Products/ATContentTypes/__init__.py", line 37, in <module> from Products.ATContentTypes.config import HAS_LINGUA_PLONE File "/Users/fulvio/plone/plone4/eggs/Products.ATContentTypes-1.3.2-py2.6.egg/Products/ATContentTypes/config.py", line 30, in <module> from Products.ATContentTypes.configuration import zconf File "/Users/fulvio/plone/plone4/eggs/Products.ATContentTypes-1.3.2-py2.6.egg/Products/ATContentTypes/configuration/__init__.py", line 25, in <module> from Products.ATContentTypes.configuration.config import zconf File "/Users/fulvio/plone/plone4/eggs/Products.ATContentTypes-1.3.2-py2.6.egg/Products/ATContentTypes/configuration/config.py", line 29, in <module> from Products.ATContentTypes.configuration.schema import atctSchema File "/Users/fulvio/plone/plone4/eggs/Products.ATContentTypes-1.3.2-py2.6.egg/Products/ATContentTypes/configuration/schema.py", line 29, in <module> from Products.ATContentTypes.configuration import datatype File "/Users/fulvio/plone/plone4/eggs/Products.ATContentTypes-1.3.2-py2.6.egg/Products/ATContentTypes/configuration/datatype.py", line 25, in <module> from Products.CMFCore import permissions as CMFCorePermissions File "/Users/fulvio/plone/plone4/eggs/Products.CMFCore-2.1.2-py2.6.egg/Products/CMFCore/__init__.py", line 26, in <module> import PortalFolder File "/Users/fulvio/plone/plone4/eggs/Products.CMFCore-2.1.2-py2.6.egg/Products/CMFCore/PortalFolder.py", line 32, in <module> from CMFCatalogAware import CMFCatalogAware File "/Users/fulvio/plone/plone4/eggs/Products.CMFCore-2.1.2-py2.6.egg/Products/CMFCore/CMFCatalogAware.py", line 31, in <module> from interfaces import ICallableOpaqueItem File "/Users/fulvio/plone/plone4/eggs/Products.CMFCore-2.1.2-py2.6.egg/Products/CMFCore/interfaces/__init__.py", line 47, in <module> from Interface.bridge import createZope3Bridge ImportError: No module named Interface.bridge
comment:24 Changed 7 years ago by davisagli
comment:25 Changed 7 years ago by optilude
comment:26 Changed 7 years ago by esteele
Your PLIP has been reviewed by the Framework team. Feel free to discuss any suggested changes either here in the PLIP ticket or on the mailing lists. Final deadline for this PLIP is set for September 30.
comment:27 Changed 7 years ago by robgietema
Ready for merge.
comment:28 Changed 6 years ago by davisagli
comment:29 Changed 6 years ago by rossp
FWT vote: +1 for merge
comment:30 Changed 6 years ago by MatthewWilkes
B-E-A-Utiful! FWT Vote: +1
comment:31 Changed 6 years ago by rossp
I just noticed under a Plone 3.3.1 site that TinyMCE works for the static portlet add form, but not the edit form. I tried testing under the plip cfg in coredev but I can't add portlets at all on a newly created plone site. It seems there aren't any portlet managers/columns.
Can someone test that TinyMCE works when editing an existing static portlet?
comment:32 Changed 6 years ago by optilude
We use TinyMCE on a 3.3 site and it works fine, both to add and edit static text portlets. I also tested that in the PLIP bundle when I reviewed it a few weeks ago, and it worked.
comment:33 Changed 6 years ago by erikrose
In OmniWeb 5.10.1, Safari 4.0.3, and Firefox 3.5.3, once I add any Discreet text, all the text I add afterward also ends up discreet, even if I switch to a different style or select (remove style). The only way out is editing the raw HTML. This makes it a step backward from Kupu, from a user's point of view, imo. Once we fix this (and I suspect it's a bug in our use of it, as I wasn't able to reproduce it an TinyMCE's demo site), I'll happily change my vote to +1.
Reproduction:
- Edit the front page, and clear out the rich text field.
- Type "hello" on line 1.
- Assign the Discreet style to it.
- Press Return, and type "heading" on line 2.
- Select Heading from the Style menu. The Discreet style doesn't go away, but it should. No matter how you thrash about with (remove style) and such, you can't get rid of the discreet class on the heading without editing the raw HTML.
comment:34 Changed 6 years ago by esteele
Erik,
For what it's worth, I was able to fix this quickly by changing the "discreet" definition in the configlet to use a span instead of p tag. The remove formatting method by default only rips out span,b,strong,em,i,font,u, and strike elements (see http://dev.plone.org/collective/browser/Products.TinyMCE/trunk/Products/TinyMCE/skins/tinymce/tiny_mce.js#8787). I can see several solutions to this and they're all trivial, IMO.
comment:35 Changed 6 years ago by esteele
Erik's bug is fixed in http://dev.plone.org/collective/changeset/99196 and http://dev.plone.org/collective/changeset/99200
comment:36 Changed 6 years ago by erikrose
For what it's worth
It's worth a +1. :-)
comment:37 Changed 6 years ago by tom_gross
The following error occurs when exporting the TinyMCE (1.1rc5)-profile via portal_setup:
Traceback (innermost last): Module ZPublisher.Publish, line 119, in publish Module ZPublisher.mapply, line 88, in mapply Module ZPublisher.Publish, line 42, in call_object Module Products.GenericSetup.tool, line 656, in manage_exportSelectedSteps Module Products.GenericSetup.tool, line 1114, in _doRunExportSteps Module Products.TinyMCE.exportimport, line 198, in exportTinyMCESettings Module Products.GenericSetup.utils, line 809, in exportObjects Module Products.GenericSetup.utils, line 530, in _exportBody Module Products.TinyMCE.exportimport, line 128, in _exportNode AttributeError: 'NoneType' object has no attribute 'split'
comment:38 Changed 6 years ago by esteele
This PLIP has been accepted for merging into Plone 4.0
The final vote was: Alec Mitchell +1 David Glick +.5 Erik Rose +1 Laurence Rowe +1 Matthew Wilkes +1 Ross Patterson +1
Please merge your branches into the Plone 4.0 head by end-of-day Friday Oct 16. If you need assistance with merging, please contact me.
We'll be assigning a documentation ticket to this PLIP shortly. Please assist the docs team in documenting the changes and new features that this PLIP introduces.
comment:39 Changed 6 years ago by esteele
Please assist the doc team in creating/updating documentation relating to this PLIP. See #9602.
comment:40 Changed 6 years ago by robgietema
- Status changed from assigned to closed
- Resolution set to fixed
This plip has been merged.
comment:41 Changed 6 years ago by yurj
- Keywords accessibility added
- Status changed from closed to reopened
- Resolution fixed deleted
- Cc yurj added
Its accessibility seems not to be fixed, at least with Jaws. Can someone check it?
comment:42 Changed 6 years ago by hannosch
- Status changed from reopened to closed
- Resolution set to fixed
The PLIP has been merged and finished. New tickets should be created for any issues now.