KompoZer Labs

This webpage will host all experimental features related to KompoZer.

Here’s a short list of the most requested features we’d like to have in KompoZer ASAP. All contributions have to be tri-licensed (GPL/LGPL/MPL) to fit KompoZer’s license.

XMPP collaborative edition

This project aims to implement real-time, collaborative edition through XMPP, with the Jabber network and the xmpp4moz library:

  • nodes that are being edited by another user should get a "-moz-editing-[nick]" class;
  • when the node has been validated (i.e. after a timeout or when this user is editing another node), the "-moz-editing-[nick]" class should be removed (or replaced by "-moz-author-[nick]");
  • two users should not be able to edit a single node at the same time — at the minimum, they should get a warning notice.

Here are the XMPP specs for multi-user / shared edition:

(assigned to: Frédéric Éterno)

SFTP support

Currently, KompoZer 0.8 has FTP / FTPS support (using a FireFTP library) but still lacks SFTP support. The reason is, there’s no built-in SSH support in the Mozilla code base. This sucks.

The SFTP support is by far the most requested feature, but it’s not an easy task. Implementing FTPS will require to use an external library (XPCOM, C++). Two solutions come to mind:

  • backport EnigMail’s IPC library to KompoZer 0.8 to bring SSH support
  • use a good old stable library like libCurl, and bind it as an XPCOM component

Recent versions of FireFTP can't be used because they're not stable yet, and their codebase is not compatible with KompoZer 0.8.

As there’s some compiled code involved, you’ll have to build the whole application.

(assigned to: Aymeric “Neros” Walerack)

Blogger / xml-rpc support

This project should implement a Blogger interface to KompoZer. Main goals:

  • write a blogpost in HTML or XHTML and publish it with KompoZer
  • handle attachments (e.g. images) seemlessly
  • save blogposts locally

The User Interface has to be as well integrated in KompoZer as possible:

  • create a SiteManager-like sidebar to list all blog posts
  • add a “Blogger” tab in the SiteManager settings (along with the “General Settings” and “FTP settings” ones)
  • the “New Page” dialog has to offer a “Blog post” entry

Main feature: when a “Blog post” document is created, the “Publish” button should call the Blogger API to publish the inner HTML of <body> instead of uploading the HTML document through FTP.

This Blogger support would be a very important feature in KompoZer: CMS users could use KompoZer to tweak the CSS and publish their blogposts in WYSIWYG mode. Blogger has become an xml-rpc standard for publishing files on CMS and blog engines, it’s widely supported.

This should be developed as an add-on.

(assigned to: Guillaume “chipowok” Wilfrid)

Make the “DOM Explorer” sidebar editable

Currently, the DOM Explorer sidebar displays the HTML tree and the CSS rules that are applied to the current element.

This DOM Explorer tree should be editable:

  • rename / remove HTML nodes (elements)
  • move HTML nodes in the tree with a drag and drop
  • adjust / remove existing CSS properties
  • add new CSS properties for an existing selector

When an external CSS stylesheet has been modified, it should be marked as such in the DOM Explorer; when the user saves the related HTML document, he should be prompted to save modified stylesheets… or cancel the modifications on the CSS.

(assigned to: Fabien “kasparov” Rocu)

Easy CSS editor

The CSS Editor UI is not intuitive for “box” properties. It’s more than time to revamp the whole UI.

<div> toolbar button

The first step will be to design a new property box from scratch for <div> containers (and block-level CSS properties):

  • CSS box propertiessimple presentation of offset, margin, border, padding, size
  • we don’t need a real scale
  • all dimensions have to be editable (this includes the units)
  • there should be an easy way to specify:
    • if we want the same value for all 4 sides
    • if the offset is defined from the top/bottom or left/right side
    • the positioning method: absolute, relative, float (as in OOo or for the image properties)
  • the whole window should fit in WVGA screens (800*480)

This <div> button should replace the “pin” buttons on the right side of the format toolbar. It should ease the use of <div> by beginning web authors: clicking on this <div> button should create a <div> if necessary, or edit the CSS properties of the selected <div> container.

<span> toolbar button

The second step will be to implement a <span> button with inline-level CSS properties. Most of the current CSS Editor UI could be reused, but improvements are welcome.

Again: clicking on this <span> button should create an inline <span> container if needed, or edit the CSS properties of the selected <span> element. Advanced users could use this <span> button as a replacement of the second format toolbar. That would be an efficient way to produce a clean HTML markup.

Revamp the CSS Editor

The last step will be to revamp the CSS Editor, using the <div|span> property boxes as a basis. Users should see easier what’s a block-level property and what’s an inline-level property.

Bonus: the revamped CSS Editor would be perfect if it could be docked at the bottom of the screen, in “Split” view, in place of the HTML editor.

(assigned to: Sébastien “i-cue” Pontaillier)

“Media” dialog box

In KompoZer 0.8 there’s a new “Media” file type, but there’s no associated action yet. At the minimum, users should be allowed to double-click on a Media file in the site manager and get a dialog box to insert an <object> node in the current HTML document:

  • the media type should be auto-detected
  • the inserted HTML markup should be standard-compliant and compatible with IE

We also need a “Media” dialog box in the format toolbar to insert:

  • either a “local” media file (i.e. a file that will be hosted on the same web server)
  • or a third-party media file: YouTube, DailyMotion, etc.

For a 3rd-party media file, the only parameter that should be entered by the user is the URL. The HTML code that is proposed on most video websites is not HTML compliant (which can lead to data loss in KompoZer): you’ll have to generate your own markup.

This should be developed as an add-on.

Thumbnail Generator

KompoZer doesn’t allow yet to resize images properly. Many users “resize” their 10 Mpix pictures with the mouse, like they’d do it in a word processor, which results to heavy web pages.

The thumbnail generator should extend the Image property dialog:

  • required: define a target size in px
  • optional: define a target name (default = original filename + "_tb" + extension)
  • click, the image has been replaced by its thumbnail + link to the original image

There are (at least) two methods to resize an image:

  • quick one: use <canvas>
  • sharp one: use ImageMagick

Using ImageMagick would give a much better result, but will also require more work: more settings in the dialog box, need to install a separate application or to embed ImageMagick in an XPCOM component.

Bonus: batch processing of a picture directory to build a list-based thumbnail gallery.

This should be developed as an add-on.

Sitemap Generator

Two main goals:

  • generate a sitemap.xml file for any website (as defined in the site manager)
  • check all links for the current document and/or the current website

This should be developed as an add-on. Not part of the Comete project.