DOMBlogger
DOMBlogger is a security minded HTML 5 compliant Content Management System (aka CMS).
The product is not yet ready for public consumption, stay tuned.
NOTE: If you click on the validator icon and do not get a valid report, there are three possibilities:
- Bug in my CMS. I check regularly for them, but ...
- Mistake in content section of document. If content is not valid HTML 5, the CMS may not fix it. The tidy library may fix some issues, but tidy is not an HTML parser nor does it understand HTML 5 structure.
Features
This is basically my todo list
- HTML 5 semantic markup
- Detects Chrome Frame in IE and adds appropriate trigger meta tag
- HTML 5 emulation JavaScript for browsers with missing HTML 5 features - started, needs work / testing, I probably will not emulate everything
- Complete separation of content from layout and scripting
- Rich text editor for GUI content generation - Not yet started
- Automatically maintains proper redirect header when you shuffle pages around
- Robust client independent XSS Output Filter
- Robust client independent CSRF protection
- Full feature Blog - Started, needs work
- Event planner / calendar - Started, needs work, need to write calculator for lunar based holidays (Easter, etc.) and finish event database design
- Image / Video Gallery - Not yet started
- Automated dynamic sitemap.xml generation - Started, needs work
- Interface to Sphyder search engine - Started, needs work
- Custom Search Engine that checks spelling, dead internal links,
dead external links, uses sitemap.xml for link discovery and
sectiondepth within anarticlefor keyword priority - Barely started, will not be complete until well after first version of DOMBlogger ships, not trivial - MathML generation - Barely started, low priority
- Standards Compliant RSS Feed generation - Mostly done
- Plugin architecture for enhancements - Started, needs work
- Affiliate Marketing Plugins - Not yet started
- PayPal compatible Shopping Cart - Not yet started
Featured Inhouse Technology
DOMBlogger utilizes a collection of high quality noteworthy PHP Classes written by the DOMBlogger lead developer.
docType
docType is a PHP class that properly detects the requesting clients ability to handle XHTML an sends the requested document as either XHTML or HTML accordingly. It also features the ability to detect Internet Explorer with Chrome Frame installed and adds the appropriate meta tag to the document so that users of Chrome Frame can benefit from the improved HTML 5 rendering.
docType was nominated for an innovation award at phpclasses.org for the month of January, 2010.
CSP Filter
CSP Filter is a PHP class that implements the Mozilla Content Security Policy recommendation server side, giving an extra measure of protection against XSS attacks to your users whether or not they have a browser that implements the CSP recommondation.
CSP Filter was nominated for an innovation award at phpclasses.org for the month of April, 2009.
embedMedia
embedMedia is a PHP class that allows for easy embedding of
media using the HTML 5 audio and video
elements using Flowplayer as a
flash based fallback for browsers that do not yet handle HTML 5
media.
SessionManager
SessionManager is a rewrite of the database driven session management class originally written by Rich Smith for DevShed.
The rewrite involved porting the class to Pear MDB2 allowing it to be used with almost any database, and adding APC cache functionality so that the database is not hit every time the page loads and the PHP script needs to read session data, improving session read performance.
SessionManager was considered "notable" by phpclasses.org in the month of January, 2010.
Featured Outhouse Technology
- HTML Purifier - High quality HTML input filter
- HTML Tidy - Excellent library for repairing broken tag structure
- CKEditor - Rich Text editor for web applications
- Flowplayer - The best flash based multimedia player I have ever seen
Known Issues
In addition to not yet quite being complete, there are a couple of known issues.
HTML Entities
HTML has a long list of entities that are not supported in XML unless the doctype defines them. HTML 5 when served as XHTML does not.
For content that is cached, all of the entities described on the following web pages are converted to either the character itself (most cases) or the numbered entity, which is fine for XML:
There are a few other entity sets that need to be added, such as the MathML 2.0 entities, etc.
The entities are converted before the content is cached so that the conversion only needs to be done when the content is not already cached.
Best practice is to avoid using named entities, either use the UTF8 character directly or use the numbered entity, but DOMBlogger does have the facilities to do the conversion for most of the entities that are currently used and soon will also cover any entities for the extensions to HTML that HTML 5 supports (MathML 2.0, SVG 1.1, ARIA). It is possible MathML is all I have to worry about.
Cross Browser Support
I do not have regular access to either Safari or Internet Explorer. At some point, I need to get a cheap junk PC that works and has a legal copy of Windows XP so I can test in IE 7 and Safari. I really do not give a Rattus norvegicus glutæus maximus about IE 6.
Display is undoubtedly screwed up in any version of Internet
Explorer with scripting disabled. The reason, Internet Explorer
does not recognize the HTML 5 tags and ignores the display:
block; associated with the elements in the CSS. A JavaScript
used on every page supposedly fixes the issue, but it will not work
with JS disabled (and apparently does not work with printing even
with JS enabled). Nothing I can do about that, IE 9 is suppose to
fix that issue. Hopefully MS will patch IE 7/8 to recognize them so
that the JS is not needed and printing works, but I doubt they
will. Every other browser I have tried recognizes the CSS
associated with the new HTML 5 tags even without JS to teach them
to recognize them, only IE is a problem.
Tidy and HTML 5
Currently tidy is used to ensure XML content is sane before it gets sucked into the DOM. I am beginning to think that tidy is the wrong tool, the problem is that for SVG and MathML to work, tidy has to be taught a large number of new tags. It might be better for me to instead try teaching HTML Purifier about those new tags than tidy, since HTML Purifier also makes it possible to teach about the new attributes as well.
The tests below (which will not work in all browsers, should work in FireFox 3.5+) are the result of limited tidy teaching, very limited tidy teaching.