Hastymail2

Hastymail2 is an Open Source IMAP webmail client written in PHP. Our focus is compliance, usability, security, and speed.
     

Code Updates for March 3

    Yet another busy week for Hastymail updates, primarily to the new plugin system. More testing has resulted in some important fixes and improvements. Over all I think the system is proving to be efficient and down right powerful. The API for plugins continues to expand as more methods are added to the tools class and hooks are added to the core code. Plugins can now use a shared database connection, have their own AJAX callbacks, insert Javascript into page headers, even interact with the IMAP server, all using the documented tools class methods. Aside from plugins we also have some updates to the message view, including image attachment thumbnails and previous and next links that walk through the viewable parts of a message. Read on for the full list.

- Plugin system updates:

- Plugins can now gain access to an SQL server if Hastymail is configured to use one. This makes it possible for plugins to use an existing database without the additional overhead of managing it's own connection (I may add the ability for plugins to use a separate db connection if the there is a need). New tools methods for select, insert, update, delete, debug, and quote are all in place. These methods are easy to use and have first draft documentation in docs/plugin_tools.txt.
-  Added the first round of display hooks. These are the main hooks that are run on every page. They are documented in docs/plugin_display_hooks.txt
- Added a system in which plugin authors can setup AJAX callbacks to a specific function in there plugin code. To use it a plugin "registers" its ajax callback with a special tools method that must be called from the "init" work hook. Then all the plugin author needs to do is create a file called ajax.php with the named function. A Javascript version of this function is then available for the plugin author to bind to an event. The callback can optionally update the page XHTML by defining a containing element id from the page that the callback's output will replace. The "hello wolrd" plugin has a very simple example and first draft documentation is in docs/plugin_ajax.txt
- I was lingering in the Squirrelmail IRC channel and there was some discussion going on about a problem with unintentional output from plugins breaking functionality inside Squirrelmail. The problem arises when a plugin outputs HTML unintentionally, specifically by having extra newlines or white-space after the final closing php tag. The problem with this is exhibited when the page request is to download a message part. A plugin that accidentally sends HTML to the browser (even white-space) will corrupt that download and/or break the file specific headers that must be sent for proper downloading.  In Squirrelmail the solution is to omit the final closing php tag in plugin code. In Hastymail we have instead a general solution that uses ob_start to collect any output that may have been accidentally generated, then flushing the buffer before we build the page XHTML, or before we send HTTP headers for a download or inline image.
- Added basic IMAP methods to the tools class. This lets plugins perform IMAP actions or queries. In all there are 13 IMAP related methods that a plugin author can use to interact with the IMAP server. I have not documented these yet but will be doing so this week.
- Some reworking and extending of the documentation for plugins (located in the source under docs/). There is quite a bit documented already, and as hooks and methods are added I try to keep up on the docs as well. Once the plugin system is more solidified (very soon) I will be adding a plugins section to this site with some additional online resources. 

- Simple display mode got some attention this week, though is still incomplete. Unlike Hastymail 1 I want to limit display modes to "default" and "simple", rather than have a 3rd "palm" mode.  Simple display mode will hopefully work well with text browsers and hand-held devices both without the need for a additional display mode. Several pages are looking good in simple mode, and the average page size is a tiny 12k.

- Added image thumbnail preview support for image attachments in the message parts area (screenshot below). It requires PHP GD support and is an option in the general settings area of the options page (disabled by default). Thanks to Petaris in IRC for coming up with this idea, it is pretty slick if I do say so myself :)

- Added previous and next links to any message that has more than one viewable part so you can browse any viewable message parts easily (screenshot below). If the message part has its own headers (part of a rfc822 attachment for example) that match the users small headers selection those are shown as well. It's really nice for digest messages, and handy for quickly switching to the next message part without having to scroll down to the parts area. 


Images
preview
Image attachment thumbnails
preview
Previous and next within a digest message
Comments
No comments posted yet

Add a comment

Name:
Email:
Subject:
Comment:
Security Image:
security image
Enter the letters you see above.
Get Hastymail at SourceForge.net. Fast, secure and Free Open Source software downloads