mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2024-12-22 16:31:53 +00:00
e28d39e46b
git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@1550 48356398-32a2-884e-a903-53898d9a118a
160 lines
6.6 KiB
Plaintext
160 lines
6.6 KiB
Plaintext
|
|
TODO List
|
|
|
|
= KEY ====================
|
|
# Flagship
|
|
- Regular
|
|
? Maybe I'll Do It
|
|
==========================
|
|
|
|
If no interest is expressed for a feature that may required a considerable
|
|
amount of effort to implement, it may get endlessly delayed. Do not be
|
|
afraid to cast your vote for the next feature to be implemented!
|
|
|
|
|
|
UPCOMING RELEASE
|
|
----------------
|
|
|
|
IMPORTANT
|
|
- Test HTMLPurifier.auto.php, HTMLPurifier.includes.php, and combinations
|
|
of the two. This is related to standalone in tests/index.php. This should use
|
|
semi-automated smoketests using PHPT style files (probably should be part
|
|
of SimpleTest framework). These tests can be further extended to work for
|
|
many of our other smoketests.
|
|
- Release candidate, because of the major changes
|
|
- Move utility classes for ConfigSchema into HTML Purifier itself: they're
|
|
that important
|
|
|
|
DOCUMENTATION
|
|
- Document new methods of including the library (probably can go in INSTALL)
|
|
- Document new ConfigSchema setup and format; dev-includes.txt is a base
|
|
but we need it in HTML
|
|
- Update French translation of README
|
|
- Document which scripts need to be called when a change is made
|
|
- Document that standalone doesn't load autoload by default, so you need
|
|
to include HTMLPurifier.autoload.php after it
|
|
|
|
IMPORTANT FEATURES
|
|
- Get everything into configuration objects (filters, I'm looking at you)
|
|
- Factor generate-schema-cache.php into a class, so that the maintenance script
|
|
is as small as possible
|
|
- Factor out command line parser into its own class
|
|
- Optimize ConfigSchema by only caching things necessary for runtime
|
|
|
|
CONFIGDOC
|
|
- Properly integrate new ConfigSchema system into configdoc (Configdoc
|
|
should directly read the configuration files, or at the very least should
|
|
not use static functions)
|
|
- Reduce code duplication between Serializer and Adapter/ReverseAdapter
|
|
(we probably want to use ReverseAdapter for the long haul)
|
|
- Have configdoc use version and deprecated information (hide deprecated
|
|
info, for example)
|
|
- Implement file sniffing for configdoc, so we can easily figure out
|
|
which files use what configuration
|
|
|
|
IF IT AIN'T BROKE...
|
|
- Rename merge-library.php script
|
|
- Create "super" script which performs all regeneration actions
|
|
- Remove all includes from unit tests, and remove blanks/ folder and generation
|
|
- Simplify merge library script by removing recursion? (or other things)
|
|
- Update unit tests for ConfigSchema
|
|
- Perhaps replace types with integer identifiers in ConfigSchema? (would be
|
|
smaller, but not by much).
|
|
|
|
NICE FEATURES
|
|
- Factor demo.php into a set of Printer classes, and then create a stub
|
|
file for users here (inside the actual HTML Purifier library)
|
|
- Support exporting configuration, so users can easily tweak settings
|
|
in the demo, and then copy-paste into their own setup
|
|
|
|
|
|
FUTURE VERSIONS
|
|
---------------
|
|
|
|
3.2 release [Error'ed]
|
|
# Error logging for filtering/cleanup procedures
|
|
- XSS-attempt detection
|
|
|
|
3.3 release [Do What I Mean, Not What I Say]
|
|
# Additional support for poorly written HTML
|
|
- Microsoft Word HTML cleaning (i.e. MsoNormal, but research essential!)
|
|
- Friendly strict handling of <address> (block -> <br>)
|
|
- Remove redundant tags, ex. <u><u>Underlined</u></u>. Implementation notes:
|
|
1. Analyzing which tags to remove duplicants
|
|
2. Ensure attributes are merged into the parent tag
|
|
3. Extend the tag exclusion system to specify whether or not the
|
|
contents should be dropped or not (currently, there's code that could do
|
|
something like this if it didn't drop the inner text too.)
|
|
- Remove <span> tags that don't do anything (no attributes)
|
|
- Remove empty inline tags<i></i>
|
|
- Append something to duplicate IDs so they're still usable (impl. note: the
|
|
dupe detector would also need to detect the suffix as well)
|
|
- Externalize inline CSS to promote clean HTML
|
|
|
|
3.4 release [It's All About Trust] (floating)
|
|
# Implement untrusted, dangerous elements/attributes
|
|
# Implement IDREF support (harder than it seems, since you cannot have
|
|
IDREFs to non-existent IDs)
|
|
# Frameset XHTML 1.0 and HTML 4.01 doctypes
|
|
|
|
4.0 release [Beyond HTML]
|
|
# Legit token based CSS parsing (will require revamping almost every
|
|
AttrDef class). Probably will use CSSTidy class
|
|
# More control over allowed CSS properties (maybe modularize it in the
|
|
same fashion!)
|
|
# HTML 5 support
|
|
- Standardize token armor for all areas of processing
|
|
- Convert RTL/LTR override characters to <bdo> tags, or vice versa on demand.
|
|
Also, enable disabling of directionality
|
|
- Table of Contents generation (XHTML Compiler might be reusable)
|
|
|
|
5.0 release [To XML and Beyond]
|
|
- Extended HTML capabilities based on namespacing and tag transforms (COMPLEX)
|
|
- Hooks for adding custom processors to custom namespaced tags and
|
|
attributes, offer default implementation
|
|
- Lots of documentation and samples
|
|
|
|
Ongoing
|
|
- More refactoring to take advantage of PHP5's facilities
|
|
- Lots of profiling, make it faster!
|
|
- Plugins for major CMSes (COMPLEX)
|
|
- phpBB
|
|
- more! (look for ones that use WYSIWYGs)
|
|
- Complete basic smoketests
|
|
|
|
AutoFormat
|
|
- Smileys
|
|
- Syntax highlighting with <pre> and possibly <?php
|
|
- Look at http://drupal.org/project/Modules/category/63 for ideas
|
|
|
|
Unknown release (on a scratch-an-itch basis)
|
|
# CHMOD install script for PEAR installs
|
|
? Have 'lang' attribute be checked against official lists, achieved by
|
|
encoding all characters that have string entity equivalents
|
|
- Abstract ChildDef_BlockQuote to work with all elements that only
|
|
allow blocks in them, required or optional
|
|
- Reorganize Unit Tests
|
|
- Advanced URI filtering schemes (see docs/proposal-new-directives.txt)
|
|
- Implement lenient <ruby> child validation
|
|
- Explain how to use HTML Purifier in non-PHP languages / create
|
|
a simple command line stub (or complicated?)
|
|
- Fixes for Firefox's inability to handle COL alignment props (Bug 915)
|
|
- Automatically add non-breaking spaces to empty table cells when
|
|
empty-cells:show is applied to have compatibility with Internet Explorer
|
|
- Distinguish between default settings and explicitly set settings, so
|
|
configurations can be merged
|
|
- Nested configuration namespaces
|
|
- Allow scoped="scoped" attribute in <style> tags; may be troublesome
|
|
because regular CSS has no way of uniquely identifying nodes, so we'd
|
|
have to generate IDs
|
|
|
|
Requested
|
|
|
|
Wontfix
|
|
- Non-lossy smart alternate character encoding transformations (unless
|
|
patch provided)
|
|
- Pretty-printing HTML: users can use Tidy on the output on entire page
|
|
- Native content compression, whitespace stripping (don't rely on Tidy, make
|
|
sure we don't remove from <pre> or related tags): use gzip if this is
|
|
really important
|