Cerberus Helpdesk Changelog

What's new in Cerberus Helpdesk 7.0.4

Aug 24, 2015
  • We design major functionality updates with backwards compatibility in mind -- both technically and conceptually. This means that when you update between two versions in the same "generation" (e.g. 6.8 to 6.9), you can expect your environment to still meet the same system requirements, and your workers should still feel completely familiar with how the interface and common functionality works.
  • Every two years or so, we plan and release a "generational" update. Those are the milestone where we allow ourselves to break backwards compatibility. We remove features and concepts that have been deprecated by new improvements along the way, and we introduce new features and concepts based on thousands of ongoing discussions with the community and several more years of accumulated experience. Generational updates may be a bit more disruptive than typical updates, but they are where Cerb takes big leaps forward.
  • Each generation of Cerb has had a central theme:
  • In 4.x, the theme was a clean slate. We completely rewrote Cerb from scratch to use modern design principles, to be highly stable and secure, to enable a much faster pace of development, and to be extensible through plugins with our Devblocks framework.
  • In 5.x, the theme was automation. We introduced Virtual Attendants for automating common workflows in a very flexible way. That evolved into one of the main reasons people use Cerb at all, and it expanded the kind of problems Cerb is suited to solve.
  • In 6.x, the theme was productivity. We introduced fully customizable, shared workspaces and dashboards for delivering the perfect interface to each worker based on their needs. We refined how common actions were performed in the interface, and incrementally reorganized to reduce clicks and keystrokes.
  • For 7.x, the theme is personalization and machine learning. As Cerb has matured, we've seen a sharp increase in the seat count of enterprise deployments. While shared workspaces are great for keeping large teams on the same page, the common issue that nearly all of those busy environments run into is that workers end up looking at the same exact lists and tripping over each other while trying to find work. With judicious filtering and dispatching, those issues can be minimized -- but the next issue becomes ensuring that workers are handling work in the appropriate order. Oftentimes, especially if a backlog forms, only the most recent records receive attention because workers approach their worklists like a traditional email client, which displays new messages at the top of the list. The older records become even later.

New in Cerberus Helpdesk 6.8.3 (Nov 12, 2014)

  • [Popups/Usability] Updated the jQuery UI library from 1.10.3 to 1.10.4 to fix issues with popups scrolling unexpectedly when clicking on form elements. This was first introduced in Cerb 6.6.
  • [Popups/Usability] Removed the jQuery UI floating tooltips introduced in 6.8.0 for popup forms. These could cause a scrolling popup to constantly scroll back to the top of the window when a form element was clicked.
  • [Virtual Attendants/Dates] Fixed an issue with date-based behavior variables and custom fields in the 'Create task' and 'Create ticket' actions of Virtual Attendants. It was possible in some situations for strange dates to be generated, like "monday +2 weeks" resulting in a date 90 years in the future.
  • [CHD-3850] [Mail/Virtual Attendants] Improved the 'Ticket conversation viewed by worker' event so it runs before the record is loaded on a ticket profile. As a consequence, any changes to the ticket by that behavior will now be properly reflected on the profile when it loads (previously, this required a page refresh).
  • [Setup/Translations] Fixed some PHP notices in the Translation Editor when using the 'Synchronize languages' feature.

New in Cerberus Helpdesk 6.6.0 (Feb 5, 2014)

  • Core:
  • Platform/Custom Fields] Implemented configurable parameters for custom fields. The various custom fields types can now provide additional options to modify how they work. Picklist and multi-checkbox fields had a hardcoded parameter for their option list which has been converted to the new format.
  • [CHD-3582] [Custom Fields/Owners] Added a 'Send worker notifications' option to worker-based custom fields. This makes it easy to add an 'owner' field to any kind of record. More advanced workflows are also possible; for example, having two owner fields for a 'salesperson' and 'sales support'. Owners receive watcher notifications about record activity for the duration of their assignment. They don't need to explicitly watch or unwatch records.
  • Custom Fields/Links] Implemented a new 'Record Link' custom field type. This is similar to how the Links tab works, except the custom field is formalized and the fields of the linked record will be shown in Virtual Attendant behaviors, snippets, etc. For instance, a time tracking entry could have a custom fieldset with fields for an organization and a domain. Time tracking records could then be filtered based on those links, and the related record information could be used in Virtual Attendants, worklists, and the API.
  • [Setup/Storage/Attachments] Fixed an issue where an attachment worklist with multiple links pointing to the same file resulted in missing rows.
  • [Setup/Attachments/Worklists] Attachment worklists now display the storage profile column as a name rather than an ID.
  • [CHD-3377] [Setup/Attachments/Worklists] Attachment worklists once again provide links to the records containing the files (i.e. the 'Context' column). Previously, a link was provided to the ticket but workers had to dig for the message containing the file. Now, when clicking on the permalink for an email message attachment that specific message will be expanded and focused.
  • [CHD-2971] [Mail/Reply/Usability/Keyboard] When using the keyboard to navigate the ticket reply form, using the attachments upload popup previously broke the TAB flow through the form. Now the focus is returned to the attachments (+) button after files have been uploaded.
  • [Storage/Platform/Optimization/Performance] Cerb now automatically detects when a new storage object duplicates an existing one, and an additional link will be created to the same underlying file. A file is only removed when there are zero links pointing at it (e.g. message or comment attachments). Duplicate attachment detection is implemented for incoming mail, worker replies through the UI, the worker proxy, messages imported from an ImpEx export, and files uploaded through the API. This should save a considerable amount of storage space in environments where the same attachments (e.g. PDFs, forms, ebooks) are sent by workers on a regular basis. Similarly, when the same senders include logos and other content in their signature these can be condensed into a single storage object. Currently, existing storage objects are not hashed since would be very intensive on busy systems. New duplicates will be prevented from version 6.6 onward. However, we'll be providing instructions on how to retroactively hash existing storage objects and remove redundancy (technical note: this involves providing SHA1 hashes in the attachment.storage_sha1hash database column, and redirecting attachment_link records based on that).
  • [Mail/Parser/Performance] The original_message.html attachment is now created more efficiently for new incoming messages. Previously its contents were written to a temporary file that was then read into long-term storage. Now it is saved directly from memory into storage. This improvement also made it easier to modify the contents of the HTML message to improve usability (e.g. rewriting links for inline attachments to Cerb URLs).
  • [Mail/Parser/Usability] When viewing an original_message.html attachment in the browser, inline images will now be properly displayed in the content. For instance, this is useful when customers send screenshots by embedding them in the middle of their reply. Previously, such images were included as attachments on the ticket but they weren't displayed in the HTML contents (technical note: The IMG tags still referenced the MIME content-id header). These IMG links are now rewritten to use Cerb file paths. This process works for all new messages that are received in version 6.6 or later, but it will not fix existing original_message.html attachments.
  • [Devblocks/Platform/Markdown] Added the Parsedown library http://parsedown.org/ to Devblocks. This is a faster, leaner, and more modern replacement for the existing PHP Markdown Extra library we've been using up to this point.
  • [Setup/Storage/S3/Usability] When testing a new S3 storage engine profile, a temporary object will be saved, read, and deleted to verify that the credentials work for all actions. Previously the contents of the bucket were listed, but this didn't verify that content could actually be stored and retrieved.
  • [Setup/Storage/S3/Usability] The S3 storage engine now supports a 'Path prefix' configuration option. Previously all content was saved starting at the top-level of a bucket. Now a single bucket can be shared between multiple instances of Cerb.
  • [Setup/Storage/S3/Security] When configuring the S3 storage engine, the secret key parameter is no longer displayed in the profile popup form. If left blank it will remain unchanged. This is far more secure than transmitting it.
  • [Storage/Performance] The storage service now has the ability to queue multiple delete operations to perform them in a single transaction. This is useful for storage engines where incremental deletes would be very expensive. For instance, S3 would generate an HTTP request per file being deleted, which could potentially be hundreds or thousands. Waiting for that many HTTP requests during cron.maint is undesirable. It is now possible for hundreds of objects to be deleted in a single request.
  • [Setup/Storage/S3/Usability] Implemented batch delete functionality in the S3 storage engine. Up to 500 objects can be deleted from S3 in a single HTTP request.
  • [CHD-2711] [Mail/Relay/Comments] When a worker is replying to a relayed message from an external email account, the #comment tag will now allow comments to span multiple lines. The comment will be terminated when it encounters a blank line or a line starting with another #tag. This was necessary because some email applications, like Gmail, force text/plain content to hard wrap on spaces before 76 characters, and quoted-printable encoding isn't used to preserve the original wrapping. The comment will still appear as a single paragraph in Cerb.
  • [CHD-2711] [Mail/Relay/Comments] A new #start comment tag is available to workers that respond to relayed messages through an external email account. This allows multiple line comments where linefeeds will be preserved. This is especially useful for chunks of formatted text like code fragments and patches. A multiple line comment is terminated with an #end tag on its own line. If a worker's mail application adds hard linefeeds to their comment content, those will be preserved in the comment created by Cerb.
  • [Mail/Parser/Localization] Cerb will now use the iconv PHP extension if it is loaded. This is capable of converting a wider range of encodings than mbstring. For instance, TIS-620 (Thai) and WIN-1258 (Vietnamese) were not properly converted to Unicode by Cerb when only using mbstring.
  • [Mail/Relay] Workers can now manually relay specific messages to external email accounts without having to set up a Virtual Attendant behavior first. The reply menu on each message contains a new 'Relay to worker email' option. Selecting the relay option displays a popup where worker email accounts can be filtered and selected. This feature is particularly useful for situations where workers may need to reply while offline, such as during transoceanic flights or cruises. A worker can relay messages from Cerb to their mobile email application, reply at their leisure, and their messages will be delivered when network access is restored. The feature is also useful when certain workers handle requests through email without logging into the Cerb interface (e.g. temps, interns, consultants). A human dispatcher can route messages to these workers on an as-needed basis.
  • [Mail/Relay/Activity Log] An Activity Log entry is now created when messages are relayed to an email account by a worker or Virtual Attendant. This notifies other workers that work may be taking place on the ticket from outside of Cerb, and it also serves to keep a better history of the actions of Virtual Attendants. Previously, there was no record on a ticket that it had been relayed unless a comment was explicitly created to say so.
  • [Mail/Activity Log/Preferences] Workers can now enable the display of Activity Log entries on the ticket timeline. This displays a mix of messages, comments, and activity log data in a single place without having to click into the 'Activity Log' tab. The option is located on the Settings page that is accessed from the menu displayed when a worker clicks on their name in the top right of the UI. Consecutive log entries will be combined in a single block, and those that take place with a similar timestamp are grouped together for readability. This option is also compatible with the 'Read all' option where the timeline is displayed expanded in 'oldest first' order rather than 'newest first'.
  • [Devblocks/Platform/jQuery] Updated jQuery dependency from 1.7.2 to 1.10.2
  • [Devblocks/Platform/jQuery] Updated jQuery UI dependency from 1.9.1 to 1.10.3
  • [Devblocks/Platform/Dependencies] Added the jQuery Caret plugin for getting and setting the cursor position in textareas.
  • [Devblocks/Platform/jqPlot] Updated jqplot dependency from 1.0.0b2 to 1.0.8
  • [Devblocks/Platform/qTip] Updated qTip dependency from 1.0.0rc3 to 2.2.0
  • [Tour/Usability] Updated and expanded the tour so it provides tips and callouts about the main functionality within Cerb. This should help onboard new workers faster.
  • [Tour/Usability] When clicking on a new 'Point of Interest' callout in tour mode, the previously viewed callout will now be closed automatically.
  • [CHD-786] [Mail/HTML] Workers can now send HTML formatted email replies from Cerb. This feature was a long time coming, as we wanted to implement it in a way that was consistent with Cerb's spirit of productivity and automation, which are heavily based on the efficient processing of large amounts of text. To facilitate this, the feature is divided into two parts: HTML templates and Markdown syntax. Multiple HTML templates (e.g. letterhead and stylesheets) can be created from the Setup->Mail->HTML page. Each group and bucket can be configured to use a specific template by default, which determines the style of their HTML replies. Templates can contain any valid HTML, although most mail apps will sanitize the messages (e.g. removing Javascript). Rather than introducing a visual HTML editor which obscures the underlying text, workers can reply with Markdown syntax to bold, italicize, link, embed images, quote, and to add headings, code blocks, and lists. Markdown is a markup language that was designed for use in email to preserve human readability. This "progressive enhancement" approach provides workers with greater flexibility in their replies without compromising efficiency. Outgoing messages in the Cerb history are still displayed as plaintext. Additionally, Virtual Attendant behaviors are capable of working with Markdown syntax much easier than with HTML directly.
  • [CHD-786] [Mail/Reply/HTML] When workers are replying to mail, an editor is now provided to assist with using Markdown formatting. By default the editor starts in plaintext mode, which behaves the same as Cerb always has (i.e. only sending text responses). In this case the toolbar only displays a single button that toggles rich text functionality. Once that button is clicked, the toolbar expands to provide: bold, italics, unordered and ordered lists, embedded images, external images, links, quotes, code blocks, and a preview option. The preview option displays the HTML version of the current reply in a popup window. It will also use the HTML template of the current group and bucket, if available. The preview window can be left open while responding, and it will update its contents every time the RETURN key is pressed.
  • [Storage/Files] Attachments can now be requested by their SHA-1 hash in a URL, in addition to the globally unique ID of any of their links. This makes it possible to refer to attachments that have been uploaded but not linked to anything yet. For instance, this is useful for implementing embedded images in mail and knowledgebase articles; those images would need to be previewed before the record (and link) is created.
  • [Platform/Usability] Popups will now open in the middle of the browser window by default. They previously opened in the top center, which made smaller popups less noticeable.
  • [Plugins/Platform] When a file is uploaded using the file chooser popup, it now provides the caller with a SHA-1 hash and internal URL, as well as the entire response object (name, size, mime type, etc). This should make the file chooser reusable in more situations; for instance, in providing embedded image functionality.
  • [Mail/Reply/HTML] Workers can now send inline images in their replies. A new 'Upload an Image' button is available in the toolbar when replying to mail with HTML formatting. This button displays the file chooser popup, which automatically generates the syntax for an embedded image once saved. The image is visible in the preview popup, and once the message is sent Cerb will automatically convert it to an embedded image for the recipient (i.e. replacing the link to Cerb with a self-contained MIME part).
  • [Mail/Search/Usability] When using Search->Ticket, the results will no longer be restricted to only a worker's own groups. The group filter is now added by default but it can be removed from the editable filters. Previously it was a required filter that couldn't be removed. This has been requested several times by organizations that want workers to see the "Access denied" listing for a ticket when searching by mask or participant, instead of having zero results shown (which leads people to believe they're doing the search wrong).
  • [Platform/Popups/Usability] Popups will now float over the same position in the browser even when the rest of the page scrolls. Previously, popups could be scrolled off the page and become lost.
  • [Mail/Peek/Usability] When viewing the peek popup for a ticket, its group and bucket are now shown as two linked dropdowns. Changing the group in the first dropdown will change the list of available buckets in the second one. Previously, the group and bucket were only visible by clicking the dropdown and looking for the (*) marker, which was cumbersome. Additionally, the previous dropdown also combined groups and buckets into a single long list which was difficult to use.
  • [Mail/Compose/Usability] When composing mail, the 'From:' option now displays the group and bucket in two linked dropdowns instead of one big list.
  • [Mail/Compose/HTML] Added HTML message support to the compose popup. The preview feature will display the template for the currently selected group and bucket.
  • [Storage/Files] The '/files' page now provides cache control headers for the content it serves. This allows a worker's browser to cache certain resources (like images) after their first retrieval so they aren't requested from the server again. This is useful now that content like embedded images in HTML messages are displayed through this page.
  • [Platform/Dependencies] Updated HTMLPurifier library from 4.5 to 4.6.
  • [Platform/Devblocks/Dependencies] Added the 'CSS to Inline Styles' library by Tijs Verkoyen. This provides an easy to way to convert CSS STYLE blocks to inline styles when sending HTML email, as many email readers filter out HEAD, BODY, and STYLE.
  • [Mail/Reply/HTML/Preferences] Added a worker preference for "Always switch to HTML mode" while replying to mail.
  • [Platform/Plugins/Popups] Plugins that use genericAjaxPopup() can now specify the 'target' option using a jQuery Position object; e.g. { my: 'top left', at: 'bottom right', of: 'selector' }.
  • [CHD-3622] [Explore/Usability] Improved the way the last accessed time is recorded for explorer sets. Previously the access timestamp only updated 20% of the time in order to reduce extraneous UPDATE database queries when someone quickly paged through the list. Now, instead, the access time is updated any time at least 30 seconds has elapsed since the last recorded access time. Additionally, the access time is now always recorded when the set is created. The prior inefficiency rarely caused problems, but it would manifest if an explorer set was created shortly before the maintenance scheduled job ran, or if the maintenance job was set to run very often instead of nightly. This could result in explorer sets being purged while they were still in use.
  • [Mail/HTML/Broadcast] Implemented HTML message support in ticket worklist broadcasts from bulk update.
  • [Mail/HTML/Broadcast] Implemented HTML message support in address worklist broadcasts from bulk update.
  • [Mail/HTML/Broadcast] Implemented HTML message support in opportunity worklist broadcasts from bulk update.
  • [Mail/Usability/HTML] When generating a plaintext part from an HTML-only message, Cerb now attempts to preserve whitespace in pre-formatted (PRE) and CODE blocks.
  • [Mail/Usability/HTML] When generating a plaintext part from an HTML-only message, Cerb now attempts to prefix nested BLOCKQUOTE content with '>'.
  • [Mail/HTML/Usability] When sending HTML mail, Cerb will generate a new plaintext part that cleans up Markdown formatting. This plaintext part is sent along with the HTML message (e.g. for mobile and automated mail readers), and it's also what's stored in the conversation history.
  • [REVERT] [Platform/Popups/Usability] Popups no longer open up in the center of the browser window by default. This was causing problems on popups that grow, since they could expand beyond the bottom of the window and constantly require being dragged into place. Popups now display at the top so they have the full browser height to grow before they show a scrollbar. When a popup is opened a position can be defined now, so popups that don't grow (like the file chooser) may still elect to show up in the center of the page.
  • [Setup/Mail/Reply-To/HTML] Reply-to addresses can now specify a default HTML template for outgoing mail. The template set on the default reply-to address is the global default. When a group doesn't have its own HTML template it will default to the one on its reply-to address.
  • [Mail/HTML/Usability] The upgrade script for 6.6 now automatically creates a default HTML template and associates it with the default reply-to address. This allows HTML replies to "just work" without any manual configuration.
  • [Virtual Attendants/Mail/HTML] The 'Send mail' action in Virtual Attendant behaviors now supports sending messages using Markdown and HTML templates.
  • [Virtual Attendants/Mail/HTML] The 'Send mail to recipients' action in Virtual Attendant behaviors now supports sending messages using Markdown and HTML templates.
  • [Mail/HTML/Reply] Workers can now optionally choose a specific HTML template when replying. If nothing is selected, the current group/bucket's default is used.
  • [Mail/HTML/Compose] Workers can now optionally choose a specific HTML template when composing a new message. If nothing is selected, the given group/bucket's default is used.
  • [Mail/HTML/Broadcast/Tickets] Workers can now optionally choose a specific HTML template when broadcasting from ticket worklists. If nothing is selected, the default for the group/bucket is used instead.
  • [Mail/HTML/Broadcast/Addresses] Workers can now optionally choose a specific HTML template when broadcasting from email address worklists. If nothing is selected, the default for the given group/bucket is used instead.
  • [Mail/HTML/Broadcast/CRM/Opps] Workers can now optionally choose a specific HTML template when broadcasting from opportunity worklists. If nothing is selected, the default for the group/bucket is used instead.
  • [Mail/Reply/Usability] When replying to a message, the "Would you like to move this conversation?" option now shows the groups and buckets in two linked dropdowns. Changing the group in the first list automatically displays the available buckets in the second list. Previously, the current group and bucket was displayed as a default "No, leave it in the [name] bucket of [group]" option, and moving the conversation required using a long combined list of all the buckets which was difficult to navigate. The new way is also more efficient when using keyboard shortcuts.
  • [Performance/Worklists/Tickets] When using the "Is in groups of [worker]" filter on ticket worklists, the database query is now optimized if the worker is a member of every group. Previously, this inefficiently checked the group_id on every result anyway.
  • [Support Center/Contact/Usability] The ability to upload multiple files in the Support Center now uses a browser's HTML5 support.
  • [Support Center/Contact/Usability] The file type is now set properly on attachments uploaded through the Support Center. Previously, all uploaded files were being saved as 'application/octet-stream', which forced attachments to download even if they could be displayed in the browser (e.g. images, text files).
  • [Web-API/Contexts] Implemented 'GET /rest/contexts/list.json' in the Web-API for retrieving a list of context IDs and names. The context IDs are used for making various kinds of requests (e.g. attachment links, comments, record links) and there wasn't a comprehensive list available anywhere. This API request will also include any contexts that were added through plugins, which the standard documentation wouldn't include.
  • [CHD-3562] [Web-API/Contexts/Links] Implemented 'POST /rest/contexts/link.json' in the Web-API for adding any number of links to a record. See: http://cerbweb.com/book/latest/developerguide/restapi/contexts.html
  • [CHD-3562] [Web-API/Contexts/Links] Implemented 'POST /rest/contexts/unlink.json' in the Web-API for removing any number of links from a record. See: http://cerbweb.com/book/latest/developerguide/restapi/contexts.html
  • [Setup/Groups] Fixed an issue when deleting a group where group-owned Virtual Attendants and custom fieldsets may not be cleaned up properly.

New in Cerberus Helpdesk 6.5.4 (Jan 20, 2014)

  • [CHD-3569] [Virtual Attendants/Mail/Headers] In 'Before sending worker message' Virtual Attendant behaviors, the 'Set header' action is now capable of replacing existing headers like 'Subject:' and 'X-Mailer:'. Previously, duplicate headers were being added.
  • [CHD-3519] [Virtual Attendants/Mail] In the 'Before sending worker message' Virtual Attendant behavior, the 'Bucket' condition is now available again.
  • [CHD-3568] [Worklists/Usability] Fixed an issue when editing 'Owner' filters on worklists where the existing values weren't displayed as defaults. This meant if you were filtering by a list of 5 owners, you had to reselect them in addition to any other changes you were making.
  • Virtual Attendants/Groups] Fixed an issue with bucket names always being 'Inbox' in some Virtual Attendant behaviors.
  • [CHD-3508] [Virtual Attendants/Usability] When building Virtual Attendant outcomes and actions, the 'Insert placeholder' menu will now include the '|date' modifier on placeholders by default. Otherwise they are displayed as Unix timestamps (e.g. 1381874586). This used to happen in earlier versions, but the '|date' option was hardcoded for various fields; now it happens automatically based on the field type.
  • [CHD-3470] [Mail/Reply/Usability] On ticket profiles, if the reply form is already open then clicking the 'Reply' button or pressing the 'r' shortcut will focus the existing form rather than discarding its contents and opening a new one.
  • [CHD-3433] [Mail/Setup/Usability] Added a warning to POP3 setup that downloaded messages will be deleted from the mailbox. There have been a few instances where users included an IMAP mailbox with a long history where clearing the mailbox was not desirable.
  • [CHD-3378] [Virtual Attendants/Worklists] 'While displaying a worklist' behaviors can now be created by role-owned Virtual Attendants.
  • Setup/Custom Fields/Usability] In Setup, custom fields can now be quickly dragged into the desired order rather than having to manually number them.
  • Setup/Custom Fields/Usability] When deleting custom fields in Setup, a confirmation step is now shown prior to deleting the fields and their data.
  • [CHD-3372] [Setup/Custom Fields/Fieldsets] In Setup, global custom fields can now be easily migrated to fieldsets of the same type.
  • [CHD-3341] [Mail/Reply/Usability] After clicking the 'Reply' button in a ticket conversation, a loading indicator is shown in a popup until the form is displayed. This was requested several times by clients who experience occasional latency so they have a visual cue that something is happening.

New in Cerberus Helpdesk 5.7.2 (Mar 15, 2012)

  • [Mail/Parser] The email parser will now check incoming attachments for a 'content-name' or 'disposition-filename'. Previously only the former was checked, and when an attachment only had the latter, and was text/plain, its contents were incorrectly appended to the message body.
  • [Search/Performance] Optimized the fulltext search indexing for messages and comments. Only the first 10KB bytes of message content will be indexed, and messages will ignore quoted content since this should be contained in the original message. This should make indexing long conversations much more efficient, and it should remedy the situation where workers or recipients quote the entire conversation every message and end up polluting the search index.
  • [Welcome] Added a link to the manual on the /welcome page.
  • [Virtual Attendants/Parameters] Fixed a warning with worker variables on Virtual Attendants when no workers are selected.
  • [CHD-2816] [Mail/Compose] Banned addresses will no longer be suggested as recipients when opening a ticket by organization.
  • [CHD-2788] [Mail/Tickets/Bulk Update] Workers can now bulk update the organization on ticket worklists.
  • [CHD-2779] [Mail/Worklists/Usability] In ticket worklists, the ticket move dropdown was changed to a chooser menu with a quick search box. This should make it much easier to select a specific bucket from a long list.
  • [Mail/Worklists/Usability] On ticket worklists, the 'm' keyboard shortcut will now open the move menu and focus the quick search box.
  • [CHD-2784] [Snippets/Usability] Added the two-step delete confirmation to the snippets popup.
  • [CHD-2792] [Mail/RSS/Security] Fixed an issue where RSS feeds for worklists were viewable for disabled workers.
  • [CHD-2754] [Plugins] Updated the built-in plugin manifests to version 5.7.2 from 5.6.x
  • [CHD-2764] [Reports] Date-based reports can now group charts by hour.
  • [CHD-2741] [Setup/Plugins] You can now search by name on the 'Installed Plugins' and 'Plugin Library' tabs in Setup.
  • [CHD-2766] [Reports] When hovering over a report chart, the value of a data point is now displayed in addition to the date and the label for the 'Group Replies over Date Range', 'Created Tickets by Group over Date Range', 'Closed Tickets by Group over Date Range', and 'Worker History over Date Range' reports.
  • [CHD-2627] [Mail/Parser] The parser will now treat 'message/rfc822' mime parts as attachments. These messages are sent as abuse reports, bounces, and forwarded messages. Their content will no longer be appended to the message body.
  • [Mail/Print] Fixed the broken default logos when printing tickets or messages.
  • [CHD-2807] [Snippets/Roles] Implemented role-owned snippets. This allows you to easily share snippets with multiple groups, arbitrary lists of workers, or everyone. Currently, only administrators can create or modify role-owned snippets, but any worker associated with the role can use them.
  • [CHD-2680] [Snippets/Worklists] Added a virtual column on snippet worklists for displaying the owner (worker, group, or role). This is also displayed on the snippet chooser.
  • [CHD-2680] [Snippets/Worklists/Search] Snippet worklists can now be filtered by owner. This also introduces a new multi-context autocomplete widget (selecting workers, groups, or roles).
  • [CHD-2808] [Snippets/Setup] Added a new Snippets management area to Setup. This allows administrators to create, view, and modify all snippets (regardless of owner) in a centralized place.
  • [CHD-2809] [Snippets/Worklists] Administrators can now bulk update owners and custom fields on snippet worklists.
  • [CHD-2827] [Snippets/Subtotals] Fixed a bug that prevented filtering snippet worklists by the 'plaintext' type from the subtotals sidebar.
  • [CHD-2826] [Mail/Filters] FIXED: Adding a wildcard (*) filter value on a header will match all messages, even those that don't contain the header.

New in Cerberus Helpdesk 5.7.1 (Jan 31, 2012)

  • This maintenance update includes 8 improvements from community feedback.
  • It fixes an issue during upgrades where the platform attempted to read plugin manifests before updating itself.
  • For now, any time the platform detects that the version has changed, it will redirect to /update without reading plugin manifests first.
  • It fixes a bug that prevented the 'From:' field on the Send Mail page from listing groups that had only an inbox and no other buckets.

New in Cerberus Helpdesk 5.7.0 (Jan 10, 2012)

  • [Plugins] Plugins will now be disabled during an upgrade if their requirements aren't met. Third-party plugins that haven't been tested with the new application version will also be disabled. To compensate for this, we'll be introducing a system that automatically updates plugins after an upgrade.
  • [Plugins] Plugin requirements can now be specified in their manifest. These include PHP extensions, plugin dependencies, a required minimum version of Cerb5, and a 'tested up to' version.
  • [Plugins] Plugin requirements are now clearly displayed in the Plugins tab in Setup.
  • [Plugins] Plugins manifests now should specify a version in the same XX.YY.ZZ format as Cerb5. The incremental revision count has been removed since it complicates maintaining branches of development for different major versions.
  • [Plugins/SDK] Updated the SDK examples to reflect the new plugin manifest changes.
  • [Devblocks/Platform] Implemented strVersionToInt() and intVersionToStr() utility methods. These convert versions between the formats '5.7.1' and '050701'. The latter integer version makes comparisons quicker and more efficient.
  • [Devblocks/Platform] Added the PclZip library by Vincent Blavet to Devblocks (LGPL licensed). This can be used to manage ZIP archives when the PHP 'zip' extension isn't installed. This will initially be used by the new browser-based plugin installer.
  • [Devblocks/Platform] Devblocks will now track plugin version numbers instead of revision numbers. This allows simple version comparisons when looking for updated plugins.
  • [Plugin Library] Implemented the Plugin Library which allows completely browser-based plugin installs. In addition, it makes it much easier to find new plugins that are guaranteed to be compatible with your current version. After a Cerb5 upgrade, the plugin library will help you automatically update all your plugins (previously you had to track down new plugin versions from various places on your own). This first library will focus on plugins that we've reviewed to ensure they're safe; however, we're building the system with the ability to add arbitrary repositories for easier management of your own custom plugins.
  • [Plugins/Setup] The setup pages for installed plugins and the plugin library have been combined into a single 'Manage Plugins' section. Each list is presented as a tab, which makes them easier to notice.
  • [Plugins/Setup] The list of installed plugins is now displayed in a worklist. This allows the familiar paging, sorting, and searching functionality. Plugins can now be enabled or disabled per-row, which makes it easier to enable dependencies.
  • [Plugins/Setup] Installed third-party plugins can now be completely uninstalled through the browser.
  • [Plugins/Usability/Setup] Plugins that are disabled will now display a banner on top of their plugin icon. This visual cue improves the usability of the worklist by making it easier to spot plugins that are inactive.
  • [Plugins/Setup] Plugins that are installed through the browser will no longer default to enabled. Instead, a popup will be shown which allows the plugin to be configured at the same time as it is enabled.
  • [Plugins/Setup] When managing plugins in setup, a configuration popup is now provided for each plugin. This saves plugin authors the requirement to create a new configuration section, and it makes it easier for end-users because they don't have to hunt down inconsistent configuration settings after installing a plugin.
  • [Plugins] Moved the Gravatar plugin out of the core project and into the plugin library.
  • [Plugins] Moved the Feed Reader plugin out of the core project and into the plugin library.
  • [Plugins] Moved the Call Logging plugin out of the core project and into the plugin library.
  • [Plugins] Moved the Datacenter plugin out of the core project and into the plugin library.
  • [Plugins] Moved the Datacenter domains plugin out of the core project and into the plugin library.
  • [Plugins] Moved the OpenID plugin out of the core project and into the plugin library.
  • [Plugins] Moved the Spam Analysis plugin out of the core project and into the plugin library.
  • [Plugins/Setup/Search] Implemented quick search for the Installed Plugins and Plugin Library worklists.
  • [Plugins/Setup/Subtotals] Implemented subtotals for the Installed Plugins and Plugin Library worklists.
  • [Plugins/Setup/SDK] Implemented a new extension point (cerberusweb.plugin.setup) that displays tabs on the 'Configure' area for a plugin in Setup. This makes it easy to provide options that need to be verified before a plugin can be enabled (e.g. for integration). Multiple instances of this extension per plugin will be rendered as tabs in the popup. Developers no longer need to implement custom page sections for configuration, and users no longer have to dig for the setup page for each plugin -- they can simply configure them at the same time they enable them.
  • [Plugins/Setup] Plugin requirements now must be satisfied before a plugin can be enabled in Setup.
  • [Virtual Attendants/Variables] Virtual Attendant behaviors can now define, set, and check custom variables. Variables can be used in conditions and actions. They are also available as placeholders in snippets. The value of a variable can be static (a constant value), synthesized (generated based on other values), or composited (combining multiple values). For a simple example usage, a variable can be set to a different value depending on the various outcomes of a condition. Additionally, a true/false variable can be set based on a complex set of conditions and then reused throughout the decision tree as a single condition with a more intuitive name (e.g. "has SLA"). This also handles workflows where a piece of information (e.g. an organization or server name) needs to be extracted from another field (e.g. a ticket subject) and act as both a condition and a value in actions. A variable's value can be set using snippets, and if the same template needs to be sent in multiple actions (e.g. auto-replies) then it can be set as a variable and reused with a single placeholder. This improves reusability and allows template modifications in a single place.
  • [Snippets] Implemented a 'regexp' modifier for snippet placeholders. For example, {{ticket_subject|regexp('/New Order: (.*?)/', 1}} returns the first match of the given regular expression. The optional second argument specifies the match to be returned as determined by parenthesis. For example, in the regular expression "/((\d)(\w))/" on the text "4J" there are three matches: the first match is both \d and \w ('4J'), the second is exclusively \d (a digit; '4') and the third is exclusively \w (a word character, 'J'). This modifier supports the same options as PHP's preg_match() function. This modifier is especially useful when paired with the new Virtual Attendant custom variables feature in order to extract information from one field and save it as a new one.
  • [Virtual Attendants/Mail] Virtual Attendant behavior can now rewrite ticket subjects using placeholders. For example, under certain conditions the phrase "URGENT:" could be prepended to incoming ticket subjects.
  • [Virtual Attendants/Custom Fields/Snippets] Virtual Attendant behavior can now set text-based custom fields using placeholder values.
  • [Virtual Attendants/Variables] Virtual Attendant behavior can now define custom variables that refer to workers. This is useful for configuring assignment workflow, where the variable can be used to set an owner rather than a hard-coded worker.

New in Cerberus Helpdesk 5.6.3 (Nov 18, 2011)

  • This maintenance update includes 12 improvements from community feedback.
  • The storage system will no longer leave stray attachments behind after deleting tickets.
  • The debug page can export an XML file which describes Virtual Attendant behavior for all events.
  • A new X-Header records the mailbox a message was downloaded from.
  • The installer includes database scripts for facilitating fully-automated installs.
  • When adding a new workspace, a worker's own workspaces are now shown by default, since the full list can be overwhelming when it's unintentional.

New in Cerberus Helpdesk 5.6.2 (Nov 9, 2011)

  • This maintenance update includes 14 improvements from community feedback.
  • Workers can now properly delete snippets they have write access to.
  • Virtual Attendant behaviors are now grouped by event and can be reordered by dragging on their titles and moving them within their event group.
  • This release fixes an issue which resulted in bulk updating tickets submitting all the changes to the database in one pass instead of batching them as designed, and an issue which prevented ticket searching by group through the Web API.

New in Cerberus Helpdesk 5.6.1 (Oct 25, 2011)

  • This maintenance update includes 22 improvements from community feedback.
  • If a POP3 mailbox fails more than five times, it will automatically be disabled and a notification with the most recent error message will be sent to all administrators.
  • Mail conversations now show the relative date next to the 'Date:' header.
  • Hovering over the relative date will also show the absolute date in the current worker's timezone.
  • Broadcast compose will now use the organization from the first recipient when creating the ticket.
  • The organization peek popup now shows the tabs for 'People' and 'Comments'.

New in Cerberus Helpdesk 5.6.0 (Oct 6, 2011)

  • [Contexts/Snippets] Added the ability for any context to abstractly provide a random record. This is useful for underlying functionality like snippet testers.
  • [Snippets] Snippets can now be created for any record type (e.g. tasks, opportunities, servers, knowledgebase articles). The upgrade process will automatically migrate ownership of snippets to the workers who created them. Ownership can then be transferred to the appropriate group.
  • [Snippets] Snippets can now be owned by workers or groups. This provides a way to partition snippets among workers for distinct brands. The 'Snippets' tab has moved to worker profiles for worker-owned snippets, and to group profiles for group-owned snippets. Managers can add/edit group snippets and any group member can see them when selecting snippets. A shortcut to the current worker's snippets is provided from the top-right menu.
  • [Snippets/Context] You can now change the context of a snippet when editing it. For example, you can change a 'worker' snippet to a 'ticket' one and the new placeholder options will appear. You can also change any snippet to 'plaintext' so it can be used on any record.
  • [Snippets/Tester] The snippet tester will now check that the provided placeholders are valid. In the past a nonsensical placeholder like {{dummy}} would simply be blank when output. Now, a warning will be given that the placeholder is unknown. This is especially useful when converting a snippet between contexts (e.g. from worker to ticket).
  • [Snippets/Usability] [CHD-2212] The snippets chooser now remains open after insertion and can be used to insert multiple templates with a single-click each.
  • [Snippets/Chooser/Usability] Added a quick search box to the snippets chooser. This saves workers from the hassle of opening up the filters to add a title criteria.
  • [Snippets/Broadcast/Usability] [CHD-1985] You can now add snippet templates to a broadcast from bulk update. This should save a lot of work from copying and pasting broadcast templates from elsewhere.
  • [Comments/Snippets] You can now use snippets when adding comments to any record type.
  • [Knowledgebase/Snippets] You can now use snippets to add content when editing knowledgebase articles. For example, you can have a template that provides consistent headings for new articles (e.g. Introduction, Instructions, References).
  • [Mail/Snippets/Sticky Notes] [CHD-1504] You can now use snippets when adding sticky notes to messages in a ticket conversation.
  • [Snippets/Mail/Compose] [CHD-880] You can now use snippets from the quick compose popup.
  • [Translations] A Spanish translation is now provided in /install/extras/translations
  • [Support Center/Knowledgebase] Knowledgebase articles will now be displayed on the Support Center by 'updated' date rather than most viewed as a default. This prevents the same couple articles from dominating the list. This will likely become a setting in the near future.
  • [Impostor/Impersonate] Implemented the ability for an administrator to impersonate any other worker from their profile. This is very useful for setting up a work environment for a new team member, or for troubleshooting reported issues, without a worker having to expose their password. The administrator can quickly change back to themselves by clicking their own name in the top right.
  • [ACL/Permissions/Roles] Worker permissions are now always active. If you're upgrading an environment that had permissions disabled then a default role will be created that grants all permissions to your workers.
  • [ACL/Permissions/Roles] Worker roles can now be applied to: everyone, specific groups, or specific workers. In previous versions you could only assign workers to roles and you had to do it for each new worker. The new 'everyone' and 'groups' options will automatically apply permissions to new workers, and permissions will be adjusted as workers join/leave groups. A role applied to 'everyone' can be used to create a permissions baseline; for example, enabling a common set of plugins or granting a common set of permissions. You can also use an 'everyone' role to grant all privileges if you don't wish to use itemized permissions.
  • [ACL/Permissions/Roles] When adding worker permissions from a role you can now grant: all, none, or itemized. In previous versions only the itemized option was available. If you use 'all' it will automatically include any new permissions that are added.
  • [ACL/Permissions/Performance] Worker permissions are now stored in a cache per worker, which reduces the overhead of invalidation when data changes.
  • [ACL/Permissions/Performance] Optimized the way plugins and extensions are authorized to remove redundant privilege checks within a single plugin (regardless of the number of extensions).
  • [Devblocks/Platform] Added a new helper method DevblocksPlatform::sanitizeArray($array, $type) to sanitize array user inputs and force them to specific types (e.g. integer, boolean).
  • [Translations/Russian] Added a Russian translation to /install/extras/translations (Thanks to barzog on the Cerb5 forums)
  • [ACL/Permissions/Roles] [CHD-2308] When saving a worker role the page will no longer reset to adding a new role.
  • [Workspaces] [CHD-308] Shared workspaces have been implemented. This allows multiple workers to see the exact same worklists in a workspace. Workspaces can be owned by workers, groups (managers), or roles (admins). Editors can change the worklist (name/required filters/columns), and readers can have their own subtotals/paging/sorting. This ensures multiple workers have the same perspective. The owner of a workspace is displayed at the top of the tab (if not owned by the current worker). Changes to shared worklists will automatically syndicate to any workers using them.
  • [Workspaces/Usability] Creating a workspace requires fewer steps now. Previously you had to create the workspace by name, then add it, click to its tab, and hit the Edit button. Now the 'Create Workspace' button will provided a popup for editing the workspace immediately.
  • [Mail/Reply] [CHD-1761] When replying to a message, the system will automatically provide suggestions of recipients to include based on the headers of the original message (e.g. From/To/Cc). This functions like a 'Reply to All' feature, but with more flexibility. The suggestion box will follow you when you focus To/Cc/Bcc, and clicking on a suggested address will add a new recipient to that category. You can dismiss this suggestion box, or it will dismiss itself once empty.
  • [Mail/Reply] The 'To:' field on the Reply screen will now automatically add any listed recipients to the conversation. This ensures they will receive copies of future correspondence.
  • [Mail/Reply] The 'To:/Cc:/Bcc:' inputs now provide a tooltip for each field while focused.
  • [Worklists/Usability] Improved the usability of row-selection on worklists by instructing the browser to not attempt to select/focus text in cells when clicked.
  • [Platform/Refactor/Plugins/Cleanup] Improved consistency of the schema/API by renaming any lingering instances of: agent->worker, team->group, category->bucket.
  • [Mail/Open Ticket] Combined the functionality of Open Ticket with Send Mail to remove redundancy. Open Ticket was implemented originally because the organization associated with a ticket was based on the first sender. This is no longer necessary in 5.6+ since you can assign the organization to each ticket.
  • [Mail/Auto Refresh] Moved the auto refresh functionality out of the core project. See: http://www.cerberusweb.com/support/k...rowser_plugins

New in Cerberus Helpdesk 5.5.2 (Sep 2, 2011)

  • This second maintenance update for version 5.5 contains ten usability tweaks and minor bugfixes.
  • The knowledge base RSS feeds in the Support Center now return the correct results.
  • An RSS feed was added for newly created articles.
  • Two new keyboard shortcuts are provided when displaying tickets.
  • An issue that led to Virtual Attendants occasionally choosing the wrong outcome for conditions based on picklist custom fields was fixed.
  • Activity will be logged and notifications will be sent when conversations are reopened after the "waiting until" timer has elapsed.

New in Cerberus Helpdesk 5.5.0 (Aug 9, 2011)

  • This release includes 109 improvements from community feedback.
  • Virtual attendants can schedule behavior loops like SLA escalations and reminders.
  • Custom behavior can be added before and after worker replies, and on assignment.
  • Macros automate reusable actions.
  • Decision trees can be rearranged with drag/drop interaction.
  • Virtual attendants manage mail filters.
  • Notifications linking to the same record are automatically marked read.
  • Properties and custom fields are displayed at the top of each record.
  • Comments can be searched.
  • The ticket mask format is customizable.
  • An LDAP plugin is available.

New in Cerberus Helpdesk 5.4.6 (Jul 7, 2011)

  • This maintenance update includes six minor fixes from community feedback.
  • Worker replies from relayed mail no longer have extraneous spacing issues.
  • The ability to download attachments was added to the Web API.
  • An issue with downloading certain attachment types in SSL using Internet Explorer was fixed.
  • When MySQL strict_mode is enabled, the GUI will no longer display errors next to some worklists.

New in Cerberus Helpdesk 5.4.5 (Jun 29, 2011)

  • [Support Center/Knowledgebase/RSS] [CHD-2468] The RSS feeds in the Support Center KB don't translate Markdown to HTML when syndicating articles.
  • [Web-API/Custom Fields] [CHD-2455] The Web-API now has named keys for custom field records. 'id' and 'context' are now provided. 'group_id' is visible for ticket custom fields. Sponsored by XILO Communications - http://www.xilo.net
  • [Mail/Broadcast/Queue] [CHD-2484] If you broadcast reply to a ticket with no requesters the mail_queue entry is undeliverable and never cleans up.
  • [Mail/Queue] [CHD-2483] If an autoreply fails to send and is queued for redelivery, it will remain flagged as an autoreply so no worker sender is required.
  • [Workspaces/Custom Fields] [CHD-2460] FIXED: An 'unknown column' error when adding a required custom field filter to a workspace worklist if the custom field is also not an editable filter.
  • [Mail/Relay] [CHD-2480] FIXED: The email relay uses a custom 'Message-Id' header that is invalid in some MTA/MUAs.
  • [Support Center/Templates] [CHD-2485] The Support Center 'customfields_readonly.tpl' and 'customfields_writeable.tpl' templates can now be modified when configuring Community Portals.
  • [Web-API/Groups] [CHD-2477] Implemented the ability to get/search groups through the Web-API.
  • [Who's Online/Display] [CHD-2462] When a worker displays a ticket it will now always update their last activity with a link to the ticket. By default, worker activity only updates once per 30 seconds. This makes it easy for workers to look at the same ticket as someone else without having to copy/paste URLs.
  • [Mail/Compose/Keyboard/Firefox] [CHD-2470] FIXED: Keyboard shortcuts don't work on mail compose or log ticket when using Firefox. The control key also don't work for copy/paste or selecting text via keyboard.
  • [Web-API/Custom Fields] [CHD-2474] Fixed an issue with the sortBy parameter not working in the Web-API for records with custom fields.
  • [Web-API/Tickets] When you retrieve a ticket record from the Web-API it will now include information about each requester.
  • [Web-API/Tickets/Requesters] [CHD-2481] Ability to add and remove requesters on tickets from the Web-API. Sponsored by XILO Communications - http://www.xilo.net/

New in Cerberus Helpdesk 5.4.4 (Jun 14, 2011)

  • [Support Center/Knowledgebase] [CHD-2395] FIXED: Support Center visitors are unable to download attachments if they aren't logged in.
  • [Mail/Drafts/Firefox4] [CHD-2418] Fixed an issue with Firefox4 where the 'discard' button in Open Ticket, Compose, and Reply, didn't properly delete the draft.
  • [Mail/Compose/Firefox4] [CHD-2417] Fixed a bug when using Firefox4 where clicking 'Continue Later' during Compose or Open Ticket wouldn't save the draft a final time before returning to the previous page.
  • [Groups/Setup/Buckets] [CHD-2398] The 'delete' button should not show up when editing buckets. If you click it, nothing happens.
  • [Support Center/Internet Explorer] [CHD-2433] FIXED: Support Center profiles are blank if you edit them from Setup when using Internet Explorer.
  • [Support Center/Firefox3] [CHD-2432] FIXED: The Save Changes button doesn't work when editing Community Portals in Firefox3.
  • [Mail/Reply] [CHD-2421] FIXED: When replying without quoting, 2-3 extra blank lines are inserted even if there's no signature.
  • [Virtual Attendants/Outcomes] [CHD-2405] FIXED: With 'magic_quotes_gpc' enabled any slashes in outcome/action values are escaped.
  • [Worklists] [CHD-2408] FIXED: Worklists aren't properly hiding the inherited columns and parameters that they're supposed to.
  • [Worklists/Mail] [CHD-2397] FIXED: Adding a worklist w/ required params of several group buckets will show subtotals for other buckets, and clicking subtotals will not filter buckets at all.
  • [Virtual Attendants/Email Relay] [CHD-2420] FIXED: The email relay is setting a message-id that isn't unique for multiple messages in the same conversion. This is leading some email clients to consider followups as dupes of earlier messages. A timestamp is now added to the header. This remains backwards compatible with messages that were sent from the email relay before the update.
  • [Virtual Attendants/Snippets] [CHD-2415] FIXED: Using the '|date()' modifier in snippets doesn't respect the server's current timezone, and instead always displays GMT.
  • [Virtual Attendants/Notifications/Snippets] [CHD-2425] Added a new {{url_markread}} token to notifications. This will provide a URL that will automatically mark the notification as 'read' when it is clicked. {{url}} will continue to display the actual destination URL.
  • [UI/Usability] [CHD-2442] Clicking the logo in the top left will take you back to the default page.
  • [UI/Style] Fixed the extra padding on buttons in Firefox.
  • [UI/Style] Dropdowns will now display as platform native controls in Firefox and Opera.
  • [Mail/Relay] [CHD-2339] FIXED: If a reply-to address or a sender has no name defined, the personal field of the message headers on reply is always "". This also manifests in the email relay and auto-replies.
  • [Mail/Open Ticket] [CHD-2422] Allow customization of the Open Ticket "This message was created on your behalf" text by moving it into the translation system.
  • [Virtual Attendants/Email Relay] [CHD-2406] The email relay can now include attachments at the discretion of each Virtual Attendant behavior. Mobile clients with limited data plans probably don't want large attachments, but desktop workers that never log in to the helpdesk most likely do.
  • [Web-API/REST/Tickets] [CHD-2454] You can now search tickets in the Web-API using 'requester', 'first_wrote' and 'last_wrote' filters.
  • [Web-API/Support Center/Contacts] [CHD-2414] Implemented the ability to manage registered contacts through the Web-API for the Support Center.
  • [Notifications/RSS] [CHD-2451] FIXED: RSS feeds for notifications don't display a title or description.
  • [Workspaces/Tickets] New ticket worklists will now automatically default to only showing tickets in the groups of the list owner.
  • [Mail/Groups/Virtuals/Filters] [CHD-2446] Added a new 'In Groups of Worker' virtual filter to ticket worklists. This makes it much easier to restrict a list to tickets that are visible to a specific worker based on their group memberships. Unlike manually setting group filters, this will automatically adjust when they join/leave groups.

New in Cerberus Helpdesk 5.4.3 (Jun 3, 2011)

  • [Profiles/Workers] Added worker profiles. By visiting a worker's profile you can view their recent activity and assignments. A worker can also add public workspaces to their profile that other workers can see and clone.
  • [Profiles/Groups] Added group profiles. Managers of a group can create shared workspaces on the group profile that can be viewed or cloned by any member. Members can display a group workspace to other pages (such as Mail). This helps groups work from consistent lists.
  • [Platform/Plugins] Added a new 'devblocks_permalink' modifier to templates that will reduce a string to alphanumerics (plus dash, underscore, period, comma, and parentheses). Other characters, including spaces, will be translated to underscores (_), and multiple underscores will be reduced to a single underscore. For example, the sentence "Cerb5 (5.4) has 100+ neat ideas!" will generate the permalink text of "Cerb5_(5.4)_has_100+_neat_ideas". This is used to generate friendly text inside URLs.
  • [Mail/Subtotals] Added shortcut links for resetting the status and worker subtotals on ticket lists.
  • [Platform/Plugins/API] Renamed all references of 'Worker Events' to 'Notifications'.
  • [Profiles/Notifications] Moved the notifications worklist to the current worker's profile.
  • [Watchers/UI/UX] Improved the style of the Watchers peek popup.
  • [SDK/Examples/Plugins] Added an example plugin (example.datacenter.tab) for creating new tabs on the Datacenter page.
  • [SDK/Examples/Plugins] Added a new example plugin (example.page) for creating new pages in Cerb5, which are displayed in the top navigation menu and can contain any kind of content.
  • [SDK/Examples/Plugin] Added a new example plugin (example.object) for demonstrating how to add custom objects (i.e. records) into Cerb5 which benefit from all the platform functionality: views, workspaces, custom fields, comments, links, attachments, peek, bulk update, explore, etc.
  • [UI] Changed 'my account' to 'my settings' to reflect the difference between profiles and settings.
  • [Platform/Plugins] Refactored DAO_Address::getWhere() so it accepts the usual $sortBy, $sortAsc, and $limit parameters.
  • [SDK/Plugins] Added an 'example.controller' plugin example to the SDK to demonstrate creating new controllers, which handle requests and write responses at a lower level than cerberusweb.page extensions.
  • [Groups/Setup/Custom Fields] Custom fields can now be added to group records from Setup. This will allow some extra flexibility in snippets and mail rules.
  • [Setup/UI/UX] Refactored the Setup page to use pulldown menus rather than tabs for exposing configuration functionality. This is more friendly to the plugin-mindset, since an amalgamation of alphabetized tabs made it very difficult for a plugin to expose sophisticated configuration screens. Now a plugin can be configured from a pulldown menu and then it can have as many tabs as it wants in its own screenspace/namespace. This makes a lot of room for third-party expansion. Menus and menu items are also extension points. Any page can reuse the menu functionality.
  • [Platform/Devblocks/Plugins/Extensions/API] Added Javascript convenience functions for Devblocks.showError() and Devblocks.showSuccess(), which show slide-in tips about form submission/validation errors and progress. This saves a full page reload when saving a form doesn't require one. This also helps move toward a JSON-based model for Ajax form 'submit' requests, rather than forcing a DIV/page reload. This makes error checking a lot easier, and it removes the need for redundant Javascript-side form validation.
  • [Setup/Localization] Moved more text from Setup into the Translations system.
  • [Setup/UI/UX/Usability] Improved the style and usability of the Setup pages.
  • [Setup/UI/UX/Usability] Split up the 'System' tab into a 'Settings' menu with 'License', 'Logo & Title', and 'IP Security' to make it easier to find the right section.
  • [Setup/Usability/Scheduler] Saving a Scheduler job in Setup will now reload just that job without reloading the entire page. This should make it a lot less tedious to configure several of them at once without losing your place.
  • [Platform/Plugins/Extensions/API] Added 'Extension_PageSection' for adding new sections to pages. Sections replace the need to overuse tabs to split up page contents. Sections are usually managed by a page menu extension, but this isn't a requirement.
  • [Setup/Usability/Mail] The SMTP tester on Mail Outgoing is now automatic when saving settings.
  • [Setup/Usability/Mail] Improved the verbosity on error messages from the POP3 account tester. Fixed a couple issues where PHP error messages were passed back with the test results.
  • [Community Portals/Platform/Plugins] Merged the 'usermeet.core' plugin into 'cerberusweb.core'. Community Portals are now a common part of the platform. Enabling the Support Center plugin no longer has hidden dependencies.
  • [Community Portals/Setup] Community Portal configuration now happens inside Setup.
  • [Community Portals/Setup] Cleaned up the look/feel and usability of most Setup pages.
  • [Community Portals/Setup] Removed manual 'order' positioning of modules in favor of drag/drop rearranging.
  • [Support Center] Removed manual 'order' positioning of contact situations, situation followups, and announcements in favor of drag/drop rearranging.
  • [Usability] Added a 'move' mouse cursor to the 'drag' handle icon everywhere it is used. This should make it more obvious that you click and drag the icon to rearrange items in lists.
  • [Support Center/Usability/Setup] Any number of contact situations and followup questions can be added or removed at the same time without having to save the page multiple times during the process.
  • [Support Center/Usability/Setup] Any number of announcement feed URLs can now be added or removed at the same time without having to save the page.
  • [Platform/Plugins/Menus] Plugins can now add new menus and menu items to any menubar using the new 'cerberusweb.ui.page.menu' and 'cerberusweb.ui.page.menu.item' extension points. Tabs have been overused in the interface to break up pages into sections, but they lack the ability to group sections logically -- such as grouping multiple sections related to Mail together. In areas like the 'Setup' page this has led to a long list of tabs with no particular order; and in some cases, too much content crammed into a single tab to avoid the issue of disparate tabs. Menus provide more structure to these pages.
  • [Plugins/SDK] Added new example plugins to the SDK for demonstrating menus: 'example.page.menu' and 'example.page.menu.item'
  • [Devblocks/Plugins] Added an 'animate' option to the Devblocks.showSuccess() and Devblocks.showError() Javascript library. This is useful when you want to display a message like "Please wait..." before showing success or failure from an Ajax response, and you don't want it to jitter from the animation if it returns too fast.
  • [Simulator/Setup] Refactored the Simulator plugin to use the new Setup functionality (menus, page sections, etc)
  • [Application] Added a 'LICENSE' file to the project directory.
  • [Setup/Plugins/Menus] The Setup page now provides menu extension points for the entire menubar: core.setup.menu.settings, core.setup.menu.workers, core.setup.menu.mail, core.setup.menu.storage, core.setup.menu.portals, core.setup.menu.plugins
  • [Setup/Time Tracking] Refactored the Time Tracking plugin to use the new Setup functionality (page sections, menus, etc). Slightly improved the look and feel of the activity configuration pages.
  • [Translation Editor/Setup] Refactored the 'Translation Editor' plugin to use the new Setup functionality (page sections, menus, etc).
  • [Watchers/Setup] Refactored the Watchers plugin to use the new Setup functionality (page sections, menus, etc).
  • [Address Book/Orgs/Merge] You can now merge any number of organizations from the Address Book. Merging combines duplicate records, and you can choose the best source for each property + custom field. Only unique values are shown. If there is only one value (e.g. fax number) then it picks it for you to save time. These end up as a single record, and all the contacts, custom fields, comments, and links are automatically moved. An 'org.merge' event is also triggered for plugins to listen for and update their stored data accordingly.
  • [Platform/Contexts/Plugins] Added 'DAO_ContextMergeHistory' for providing a log of record merges for any context. This can be used to retrieve the latest ID for an object after it has been merged any number of times with other objects.
  • [Platform/Plugins/Events] Added an 'org.merge' event point. This is triggered when any number of organizations are merged together, and it gives plugins an easy way to update their datastores.
  • [Setup/Mail] Removed the 'Outgoing Mail Settings' setup page. Added an explicit 'SMTP Server' setup page instead.
  • [Setup/Mail] Split the 'Mail' setup menu into 'Incoming Mail' and 'Outgoing Mail' sections.
  • [Setup/Mail] Added a 'Reply-To Addresses' page to the 'Mail' menu in Setup. This is used to explicitly configure the addresses that the helpdesk is allowed to use to send mail. This improves functionality from earlier versions where users could enter any email address when configuring a group's 'From:' address, which could lead to mail loops or customer replies being routed outside the helpdesk. Formalizing these addresses makes their reuse and management far more simple. Existing configuration will be automatically migrated by the update patch.
  • [Plugins/Performance] Improved the performance of DAO_Group::get() calls by using the existing object cache rather than always running a database query.
  • [Mail/Groups/Buckets] [CHD-1100] You can now set up reply addresses and signatures per-bucket as well as per-group. Outgoing replies from the helpdesk will use the appropriate preference, cascading from bucket, to group, to global default. A bucket can choose to just overload part of the reply-to defaults -- such as the personal reply name -- while retaining the other defaults. (Partially sponsored by Spilgames.com)
  • [Groups/Buckets/Setup] Buckets can now be reordered by clicking and dragging them in Group Setup. This is much more efficient than having to renumber them by hand. You don't have to hit 'Save Changes' after reordering -- your preferences will be saved automatically.
  • [Groups/Buckets/Setup] In Group Setup, buckets are now managed using a list and 'peek' popups. This allows more room for configuring buckets, easily allowing better integration with functionality like custom fields, etc.
  • [Groups/Setup] Improved the look and feel of the Group Setup pages.
  • [Groups/Buckets/Setup] When deleting a bucket from Group Setup you can now choose the bucket where you would like to move its tickets. Previously everything was always moved back to the Inbox.
  • [Preferences/Mail] Moved the 'signature position' setting to per-worker preferences. Previously this was a global setting that couldn't be overridden.
  • [Preferences/Mail] [CHD-1125] Added an option to worker preferences that allows the auto-inserted signature to be disabled. This allows signatures to be added manually (e.g. from snippets).
  • [Mail/Reply] [CHD-1220] Added an experimental keyboard shortcut (Ctrl+Shift+G) for inserting a signature into the message from the Reply screen.
  • [Mail/Reply] Added an experimental keyboard shortcut (Ctrl+Shift+I) for inserting a snippet into the message from the Reply screen. The shortcut will focus the snippet autocomplete text box; and selecting a snippet for insertion will automatically refocus the message textarea.
  • [Groups/Setup/Usability] Added group names to the permalink URLs. For example, instead of a mysterious '/groups/10/buckets', the URL now shows '/groups/10-Support/buckets'
  • [Groups/Buckets/Mail/Signature] Group and bucket signatures are now display parsed (with current worker details) rather than as unparsed template token values. This makes it easier to see how signatures would look when used in live email. It also makes it more clear how signatures cascade from bucket to group to global (and which one will be used for each bucket). The tokens are still shown when editing signatures.
  • [Groups/Buckets/Mail/Signature] Added a 'Reset to Default' option on Bucket peek from Group Setup. This saves the hassle of needing to copy and paste an example signature to use before customizing one for a bucket.
  • [Snippets/Signature/Workers] Added a new 'full_name' token to signatures and worker snippets to make it easier in situations where you want to display both the first and last name when available, but if either isn't set then you don't want extraneous spaces. This should simplify condition logic in signature templates for the most common use case.
  • [Snippets/Signature/Addresses] Added a new 'full_name' token to address snippets to make it easier in situations where you want to display both the first and last name when available, but if either isn't set then you don't want extraneous spaces. This should simplify condition logic in signature templates for the most common use case.
  • [Mail/Log/Compose] Added the 'Ctrl+Shift+G' shortcut for Insert Signature to Log Ticket and Compose.
  • [Mail/Groups/Buckets/Reply] [CHD-575] [CHD-930] [CHD-931] The 'personal' field in the Group/Bucket 'From:' header can now contain the same template tokens as signatures. This is much more flexible than the previous option to 'prefix worker names' to the From: line.
  • [Platform/Plugins/Snippets/Contexts] Added a new convenience method CerberusContexts::scrubTokensWithRegexp() which makes it easy to filter a set of labels/values returned from a context prior to merging it with another context. For example, if you're building tokens starting from a message and you want to merge the tokens in from its associated ticket, you likely don't need the 'initial_message_*' and 'latest_message_*' tokens from the ticket since you're focused on a particular message. This method allows you to remove those labels/values in a single line.
  • [Snippets/Contexts/Mail] Added a 'url' token to ticket context for giving a direct link to a ticket in snippets, decision tree actions, etc.
  • [Groups/Manage] The tabs in Group Setup will now persist properly between page views.
  • [Mail/Usability] Automated messages from the helpdesk in a conversation history will now properly be marked as 'outgoing'. This check was previously done by comparing the sender to known workers, but the helpdesk already knows if messages are incoming or outgoing independent of sender. This is important since new functionality in 5.4 makes it much easier to perform business automation.
  • [Comments/Usability] It is now possible for comments to be created by the helpdesk itself without a explicit author. This is used by business automation functionality in 5.4+
  • [Virtual Assistants/Decision Trees] Implemented Virtual Assistants functionality which is aimed at replacing the previous incarnation of mail rules and event listeners to provide much more sophisticated business automation using "decision trees". Prior to 5.4, mail rules were "serial" -- meaning that all your rules ran in order until a particular rule said to stop. This approach made it very difficult to provide complex behavior, such as having different responses based on the combination of 'day of week' and 'time of day'. With decision trees, complex behavior can be built in small steps, such as: Is it a weekend? Yes/No. For each of those outcomes there can be additional decisions: Is it after 5pm on a Friday? Does this sender have an SLA?
  • [Virtual Assistants/Decision Trees/Events] Decision trees observe 'events'. A decision tree is a collection of: decisions, outcomes, and actions. Each decision can have multiple outcomes (e.g. yes/no, high/normal/low, Mon/Weds/Fri). Each outcome can have multiple conditions (e.g. day of week, month of year, sender name, ticket subject) and actions (e.g. send email, create task, create notification). Decisions can be nested to any depth; for example, you can check if the current day is Friday, and then check if it's before or after 5pm, and then whether or not the sender has an SLA. At each point you can define behavior for all outcomes of a decision, or you can only provide actions for very specific cases while ignoring the rest. This helps open up previously hardcoded behavior: auto-replies, anti-spam, etc.
  • [Virtual Assistants/Decision Trees/Conditions/Plugins] Decision trees will automatically handle conditions that are associated with these types: string, number, boolean/checkbox, date, dropdown, multi-picklist, multi-checkbox, worker, month of year, day of week, time of day.
  • [Virtual Assistants/Decision Trees/Actions/Plugins] Decision trees provide these reusable actions: create comment, create notification, create task, create ticket, send email.
  • [Virtual Assistants/Decision Trees/Plugins] Virtual Assistants can be utilized and expanded by any plugin. Plugins can add new events, conditions, and actions to decision trees.
  • [Virtual Assistants/Decision Trees/Plugins/Usability] Plugins for Virtual Assistants and Decision Trees are designed to be lightweight and highly reusable. In many cases you can use one the built-in data types for a new condition (e.g. string, URL, number, checkbox, dropdown) without having to write any comparison code. Common actions (e.g. create task, send email) can also be reused for new events, often with a single line of code.
  • [Virtual Assistants/Decision Trees/Performance] Virtual Assistants and Decision Trees are designed for performance. An event manager queries 'triggers' to see if there are any listeners for a particular event. If not, no extra logic is performed. If there are listeners, the values for the related objects are loaded once, cached, and shared with every event. This saves each event from needing to retrieve objects from the database on it own, which is a major boost for performance and scalability. Additionally, events in 5.4+ can now be directed at particular types of listeners (e.g. workers, groups) or even particular listeners (a specific worker or group) which reduces the amount of work needed. Most of these checks are done using 'manifests', which means that event plugins don't need to be executed or loaded into memory until they are absolutely needed. This is far more efficient than executing every plugin to determine if they are needed.
  • [Virtual Assistants/Decision Trees/Objects/Contexts] Any object in the helpdesk can have a Virtual Assistant. Most commonly, workers and groups have Virtual Assistants, but it is possible for more exotic record types to have assistants too; for example, a particular conversation could have a dedicated Virtual Assistant that reacts to events only when they happen to that conversation. This enables incredibly flexible and powerful workflows to be built.
  • [Virtual Assistants/Plugins] A Virtual Assistant tab can be added to any page from plugins using the controller ('c=internal&a=showAssistantTab&context=&context_i d='). This provides shared access to decision trees functionality for a specific context.
  • [Virtual Assistants/Events/Plugins] Implemented the 'Notification Received By Owner' event (Event_NotificationReceivedByOwner).
  • [Virtual Assistants/Events/Plugins] Implemented the 'Mail Received By Owner' event (Event_MailReceivedByOwner).
  • [Virtual Assistants/Events/Plugins] Implemented the 'Mail Received By Group' event (Event_MailReceivedByGroup).
  • [Virtual Assistants/Groups/Manage] Added a 'Virtual Assistant' tab to Group Setup.
  • [Virtual Assistants/Preferences/Worker] Added a 'Virtual Assistant' tab to My Settings for each worker.
  • [Virtual Assistants/SDK/Plugins] Added an 'example.event.condition' sample plugin to the SDK for demonstrating how to add new conditions to decision trees.
  • [Virtual Assistants/SDK/Plugins] Added an 'example.event.action' sample plugin to the SDK for demonstrating how to add new actions to decision trees.
  • [Watchers/Attendants/Plugin] Removed the 'Watchers' plugin from the official project. It will be moved to the third-party plugin repository on GitHub. This functionality has been replaced by Virtual Attendants.
  • [Virtual Attendant/Groups/Conditions] Added new conditions to the 'Mail Received by Group' event: sender is worker, message is first, ticket spam score, ticket spam training, ticket status
  • [Virtual Attendant/Groups/Actions] Added new actions to the 'Mail Received by Group' event: set spam training, set status, move to bucket
  • [Virtual Attendant/Groups/Actions] Added a "Don't save a copy of this message to the conversation history" option to the 'Send email to requesters' action of the 'Mail Received By Group' event.
  • [Events/Notifications/Virtual Attendants/Plugins] Phased out the old 'ticket.reply.inbound' and 'ticket.reply.outbound' events in favor of the new Virtual Assistant functionality. This means that previously built-in notifications are now customizable, expandable, and may be disabled according to each worker's needs. This should also help in situations where users have complained that the notifications are too generic (e.g. "Someone replied to a ticket assigned to you"), since dynamic placeholders from snippets can now be used for these event actions.
  • [Devblocks/Plugins/Logging] Added 'getLogLevel()' and 'setLogLevel()' methods to the logging service at DevblocksPlatform::getConsoleLog(). This allows developers to retrieve log output on arbitrary UI actions.
  • [Devblocks/Plugins/Ajax] The Devblocks Javascript/jQuery convenience functions for 'genericAjaxGet' and 'genericAjaxPost' can now accept DOM IDs or jQuery objects for the 'div' and 'form' arguments. This makes it easier to deal with relative references in scripts that are loaded through Ajax.
  • [Virtual Attendants/Groups/Setup] The group options for open ticket auto-reply, close ticket auto-reply, and spam quarantine have been moved into the new Virtual Attendant tab. This allows much more flexibility over the automated behavior in these events. For example, auto-replies can now consider time of day, day of week, language of sender, SLAs, etc. Close auto-replies can now consider factors like the current bucket, custom field values, and idleness duration. Additionally, more criteria, actions, and email template tokens are now available. Existing settings will be automatically migrated during the 5.4 update.
  • [Virtual Attendants/Groups/Events] Previously, group routing rules could only be applied to the inbox. Now you can set up behavior in a group's Virtual Attendant for moves to any bucket. For example, when tickets are dropped into an 'Unsubscribe' bucket you could run custom behavior that performs several actions and then closes the ticket automatically.
  • [Virtual Attendants/Events] Added a new 'Event_MailClosedInGroup' event for Virtual Attendants. This allows custom behavior when tickets are closed in a group.
  • [Virtual Attendants/Events] Added a new 'Event_MailMovedToGroup' event for Virtual Attendants. This allows custom behavior when tickets are moved to or within a group.
  • [Virtual Attendants/Plugins] Added a reusable method (c=internal&a=testDecisionEventSnippets) for testing snippet token use in arbitrary Virtual Attendant actions.
  • [Devblocks/Cache/Memcached] If memcached is enabled for caching, bit the host:port settings are incorrect and the connection times out, Devblocks will now properly fall back to using a disk-based cache rather than rebuilding the cache on every request.
  • [Virtual Attendants/Plugins] Conditions and actions now have access to the full trigger object. This is often useful when something needs to adapt to the trigger's context (like a group's showing only its own buckets).
  • [Virtual Attendants/Conditions] Added a reusable 'ticket group bucket' condition which shows a list of buckets for the current group and allows multiple choices and negation.
  • [Mail/Watchers/Terminology] 'Take' and 'Surrender' are now known as 'Follow' and 'Unfollow'. These terms are much more well known and widely understood.
  • [Contexts/Terminology] 'Owners' are now 'Watchers' on all records.
  • [Worklists/Aesthetics/Usability] Worklist rows that are selected will now show a residual highlight style that will make it much easier to visually separate selected rows (rather than only having the checkbox as a visual aid). This also works with 'check all' and 'check none'.
  • [Worklists/Aesthetics/Usability] Added a 'pointer' cursor to worklist rows to make it more obvious they are clickable. Clicking them is a shortcut for toggling the row's checkbox.
  • [Worklists/Aesthetics/Usability] Added much more contrast to the worklist row highlight style.
  • [Aesthetics/Usability] Softened the borders on the global style for BUTTON. Added a .red and .green variation for BUTTON for better visual aids.
  • [Worklists/Performance/Watchers] Improved the performance of the worklist per-page watchers/owners lookup. This should make worklists faster in general. Previously this was inefficiently doing a lookup per row rather than per page (which meant larger worklist pages like search results took longer than they needed to).
  • [UI/UX] Aesthetic UI improvements. Migrated some more standalone gradient images to CSS styles (more design flexibility). Highlighted save and delete buttons as green/red.
  • [Worklists/Watchers/Contexts] Added a reusable watcher button to worklists that allows workers to follow or unfollow any piece of content in the application in a single click. By following (or 'watching') content you can receive notifications when it's updated -- such as when a customer replies to a conversation you're watching, or when a task you're watching is completed by another worker. This replaces the concept of 'owners' in earlier versions; ownership will no longer hide content.
  • [Mail/Workflow/Worklists] Mail in 'Workflow' is no longer hidden when someone is watching it. Since the concept of 'owners' has been improved into 'watchers', this makes it much easier to notice when other workers are watching particular mail conversations. When mail is hidden, it makes it difficult for other workers to step in and help customers if the primary worker is away -- and this is one of the primary functions of a helpdesk. You can still filter conversations to those which have zero watchers to emulate the old behavior. You can also add a 'worker' custom field to tickets if you want to enforce individual assignments (and you can use that custom field to hide mail with an assignee). You have options, we're just not going to hide mail as a default going forward.
  • [Worklists/Peek/Aesthetics/Usability] The peek button is now hidden in worklists until you hover over a particular row. This makes lists less noisy.
  • [Worklists/Aesthetics/Usability] Removed the checkboxes in worklists since row selected is better communicated by the row remaining highlighted. This frees up horizontal list space for more important column data, and it also reduces the number of visual elements on the screen.
  • [Workspaces/Performance] Reduced memory usage when rendering long groups of worklists on workspace tabs.
  • [Peeks/Watchers] You can add or remove yourself as a watcher from most peek popups. The ability to add other workers as 'owners' has been removed, since watchers work best when they're voluntary and explicit (i.e. trusted).
  • [Peeks/Comments/Watchers/Notifications] The comment 'notify' list on peeks will always notify watchers, and a notification will not be sent to the worker authoring the comment.
  • [Peeks/Comments/Usability/UI] The comment 'notify' options will now only be displayed if there is content in the comment textarea. This helps to reduce visual clutter in the UI.
  • [Groups/Worklists/Profiles] The group worklist now provides links to group profiles for each row.
  • [Mail/Workflow/Subtotals/Usability] The subtotal counts on Mail/Workflow are now aligned to the right, making them much easier to read and compare.
  • [UI/Aesthetics] Improved the default style of the tabs. There's now a border beneath inactive tabs, which gives a better contrast to the currently selected tab. The colors have been muted and smoothed. Added a better hover effect.
  • [UI/Opera/Aesthetics] Added Opera 11.10 compatible gradients using CSS3. This was already supported by Chrome, Firefox, and Safari.
  • [Worklists/Usability/Filters] By default, worklists now show a minimized summary of the filters applied to them rather than the entire 'Filter' widget. This saves a lot of screen space and reduces complexity. It also allows filters to be introduced to other highly-requested locations, such as the 'Links' tab and Workspaces (where filtering had to be done inefficiently through worklist 'customize'). It's now much easier to tell if one of your worklists is constrained by filters, especially if the only way of knowing previously was by clicking 'customize'.
  • [Worklists/Filters/Usability] Worklist filters can be quickly removed from the new filter summary at the top of each list.
  • [Worklists/Filters/Usability] The Filters widget will now automatically remember if it is expanded or not for each worklist.
  • [Performance] Split classes from larger source source code files into smaller files. Further separated commonly used classes from rarely used ones. This should help reduce memory usage on systems that aren't taking advantage of an opcode cache like XCache.
  • [Context Links/Connections/Performance] Improved the memory efficiency of large content link lists (including worker profile watchlists).
  • [Profiles/Workers/Watchers] The number of watched objects is now shown on the 'Watching' tab for a given worker profile.
  • [Performance/Devblocks/Swift] Swiftmailer will now lazy load. This saves some cycles and memory when doing quick requests (e.g. Ajax).
  • [Workspaces/Performance/Usability] Implemented a 'lazy loading' system for viewing a large number of worklists on a single workspace. In the past the workspace tab would sit blankly while waiting for all the worklists to output before you would have any indication of what was going on. Now each worklist will load individually in a queue. Worklists that are off the screen to the bottom of the browser will not be loaded until you scroll down (and even then, only the visible ones will be loaded as you scroll and read). This generates much less traffic to the server, and it returns results "much" faster. You should put your most frequently-used worklists at the top of your workspace to take advantage of this new functionality.
  • [Connections/Context Links/Performance/Usability] Implemented the 'lazy loading' system from Workspaces on Connections/links and worker profile watcher lists.
  • [Worklists/Usability] You can now click anywhere in a worklist column header to sort the rows. Previously you had to click directly on the link, which required more precision than was necessary.
  • [Worklists/Usability/Performance] Fixed an issue where worklists could remain sorted by a column that is no longer visible. Simplistically, this may be confusing. More insidiously, sorting by a custom field that is not displayed degrades performance needlessly.
  • [Custom Fields/Maintenance] There was an issue where some checkbox custom fields may have multiple values in the database. The patcher will clean these up when updating to version 5.4.
  • [Worklists/Views/Usability] It's now possible to persist a blank list of parameters on a worklist without it resetting itself back to defaults.
  • [Search/Platform/Plugins] Implemented a new DevblocksSearchCriteria::OPER_TRUE search operator. It will always return true and is useful for ensuring that a JOIN occurs in a search without otherwise filtering the results. This is used by subtotals to provide counts of all the possible values in a JOIN, whether other operators would require an explicit IS NULL or IS NOT NULL, returning only part of the results.
  • [Worklists/Subtotals/Usability] Clickable subtotal sidebars are now available on _EVERY_ worklist. Subtotals are now a service of Devblocks making it incredibly simple for third-party developers to add subtotals functionality to worklists of custom objects.
  • [Worklists/Subtotals/Usability] Previously the subtotal options on ticket worklists were hardcoded, making it seem strange if certain subtotals were available if their search filter wasn't (e.g. "status" on Workflow). Subtotals now automatically follow the behavior of their parent worklist and they'll automatically hide choices when they aren't useful.
  • [Worklists/Subtotals/Usability] Worklists will now persist your preferred subtotal field even if you disable subtotals for a worklist and re-enable them later. Your preferences are remembered per-instance -- meaning each workspace can retain its own unique perspective. This is incredibly useful.
  • [Worklists/Subtotals/Custom Fields] The following custom field types are automatically available to subtotals functionality for all worklists (including those from plugins): checkbox, picklist, multi-checkbox, multi-picklist, text, and worker.
  • [Worklists/Subtotals/Plugins] Subtotals functionality can automatically handle record fields that are text strings, booleans, and watcher lists. This makes it much quicker to add more kinds of data to subtotal.
  • [Worklists/Subtotals/Plugins] Any worklist can extend and override the subtotal functionality per field. For example, ticket worklists have an implementation for 'status' and 'group' subtotals that provide specialized behavior (e.g. buckets subtotaled per group).
  • [Worklists/Filters/Summary] When hovering over the filter summary bubbles above a worklist they will now all show their delete button. This requires less pixel-perfect mouse finessing, and it also makes it more obvious that you can delete filters this way (since the hover effect also happens when you're near the 'Filters:' link).
  • [Worklists/Subtotals/Tickets] Implemented the new subtotals functionality on Ticket worklists.
  • [Worklists/Subtotals/Address Book] Implemented the new subtotals functionality on Address worklists.
  • [Worklists/Subtotals/CRM] Implemented the new subtotals functionality on CRM Opportunity worklists.
  • [Worklists/Subtotals/Task] Implemented the new subtotals functionality on Task worklists.
  • [Worklists/Subtotals/Address Book] Implemented the new subtotals functionality on Organization worklists.
  • [Worklists/Subtotals/Call Logging] Implemented the new subtotals functionality on Call Logging worklists.
  • [Platform/Devblocks/jQuery] Updated the jQuery library from 1.4.4 to 1.5.2
  • [Worklists/Subtotals/Time Tracking] Implemented the new subtotals functionality on Time Tracking worklists.
  • [Worklists/Subtotals/Feedback] Implemented the new subtotals functionality on Feedback worklists.
  • [Worklists/Subtotals/Feed Reader] Implemented the new subtotals functionality on Feed Headline worklists.
  • [Worklists/Subtotals/Mail] Implemented the new subtotals functionality on Message worklists.
  • [Worklists/Subtotals/Address Book] Implemented the new subtotals functionality on Contact Person worklists.
  • [Worklists/Subtotals/Knowledgebase] Implemented the new subtotals functionality on Knowledgebase article worklists.
  • [Knowledgebase/Custom Fields/Search] Implemented custom fields in the knowledgebase search filters.
  • [Worklists/Subtotals/Datacenter] Implemented the new subtotals functionality on Server worklists.
  • [Worklists/Subtotals/Datacenter] Implemented the new subtotals functionality on Domain worklists.
  • [Worklists/Subtotals/Mail/Snippets] Implemented the new subtotals functionality on Snippets worklists.
  • [Worklists/Subtotals/Notifications] Implemented the new subtotals functionality on Notification worklists.
  • [Notifications/Subtotals] You can now use the new subtotals feature on a notifications worklist to find duplicate URLs and batch 'mark read' them. For convenience, subtotals will strip the base URL of your helpdesk to make it easier to read the useful part of the link (e.g. display/ABC-12345-678).
  • [Notifications/Filters] The 'is read' filter is now available on the Notifications tab on a worker's profile.
  • [Worklists/Subtotals/Workers] Implemented the new subtotals functionality on Worker worklists.
  • [Worklists/Subtotals/Groups] Implemented the new subtotals functionality on Group worklists.
  • [Groups/Custom Fields] Implemented custom fields on Group worklists and search filters.
  • [Worklists/Subtotals/Translation Editor] Implemented the new subtotals functionality on Translation worklists.
  • [Worklists/Subtotals/SDK] Implemented the new subtotals functionality in the SDK 'example.object' worklist.
  • [Worklists/Subtotals/Mail] Implemented the new subtotals functionality on Mail Drafts/Queue worklists.
  • [Platform/jQuery UI] Upgraded jQuery UI dependency from 1.8.7 to 1.8.11
  • [Worklists/Mail/Custom Fields/Orgs] Ticket worklists can now also use sender organization custom fields as columns, filters, and subtotals. This makes far more interesting workflows possible, such as sorting tickets by organization service level agreement (SLA). It also removes the need for filters to copy organization custom fields to ticket custom fields when new mail is received.
  • [Virtual Attendants/Conditions] Added more operators to string conditions: matches (*) wildcards, doesn't match wildcards, matches regular expression, doesn't match regular expression.
  • [Address Book/Worklists/Custom Fields] Email address worklists can now also use organization custom fields as columns, filters, and subtotals. This makes far more interesting workflows possible, such as sorting contacts by organization service level agreement (SLA) or industry.
  • [CRM/Opportunities/Worklists/Custom Fields] CRM opportunity worklists can now also use address and organization custom fields as columns, filters, and subtotals. This provides a far more complete picture of each opportunity. If an opportunity is from an address that is associated with an organization, and that org is marked as having purchased particular products (using a custom field), you can quickly filter your opportunity lists. Additionally, if you track 'do not contact' status as a custom field on email address records, you can use that field as a filter on opportunity lists as well. The possibilities are endless.
  • [Virtual Attendants/Decision Trees] You can now create outcomes where 'any' condition being true is sufficient. This is useful if a decision needs to be made based on a list of valid options where the action taken would be the same.
  • [Virtual Attendants/Decision Trees] Added a 'message header' condition for mail-based events. This allows several operators: is, is not, contains phrase, does not contain phrase, matches wildcard, does not match wildcard, matches regexp, doesn't match regexp. This should provide much more flexibility for events like mail routing.
  • [Virtual Attendants/Actions] Added a 'move to group' action to mail-based events.
  • [Virtual Attendants/Actions] Added a reusable 'Add Watchers' action. This allows Virtual Attendant behavior to add watchers to any kind of content from any type of event. For example, a group manager can automatically add watchers to new conversations that match particular criteria.
  • [Application/Usability/jQuery/Plugins] Added a new jQuery plugin -- .elastic() -- to allow boundless textboxes that grow as more text is entered. This is far more user-friendly than tiny textboxes with scrollbars.
  • [UI/UX/Aesthetics] Improved the default style on autocomplete results and popup menus.
  • [Virtual Attendants/Actions/Custom Fields] Virtual Attendant behavior can now set all custom field types as actions.
  • [Custom Fields] The 'multi-picklist' custom field type has been removed, since in almost every way the implemented was the same as multi-checkbox, and checkboxes are more user friendly than CMD/CTRL combinations for multiple selection. All multi-picklist custom fields will be automatically converted to multi-checkbox by the upgrade script.
  • [Virtual Attendants/Conditions] Added the ability to create multiple groups of conditions on a single outcome. Each group can use an 'any' or 'all' strategy. For example, a single outcome could check that a sender email address is 'any' of a number of conditions (each with its own operator and value; e.g. matches wildcard, but doesn't contain these words) and that additionally 'all' of another group of conditions are met. This reduces the complexity of Virtual Attendant behavior by removing the requirement to 'nest' outcomes when mixing any/all.
  • [Virtual Attendants/Conditions/Usability] Improved the usability of the Add Condition functionality when creating Outcomes by implementing a menu with a search filter. Now when you add a condition you can type a few letters and quickly select the desired criteria without scrolling in a long list. After making a selection the menu will remain open and re-focus the search box. This allows you to quickly add several conditions with fewer clicks compared to the previous dropdown.
  • [Virtual Attendants/Conditions/Usability] You can now drag/drop conditions when creating an Outcome. You can drag conditions between 'any/all' groups.
  • [Groups/Manage/Inbox Filters] Group Inbox Filters have been removed and replaced with Virtual Attendants. Attendants are far more flexible, allow for far more conditions and actions, are expandable with plugins, can have rules based on more than just inbox delivery, can have branched logic, support and/any, etc. Any group inbox filters that were set up will be automatically converted to Virtual Attendant behavior by the 5.4 update.
  • [Worklists/Mail/Subtotals] Added 'subject' as a subtotal field for ticket worklists.
  • [Devblocks/jQuery] Added the 'hoverIntent' jQuery plugin by Brian Cherne . This improves the UI hover events by watching if the mouse slows down near a target before triggering a hover. Otherwise hover events can be quite annoying if they're instantaneous and trigger when the mouse quickly moves past them on the way to something else.
  • [Abstract Views] Fixed a bug where new views were loading with no columns rather than using View_ defaults.
  • [Mail/Open Ticket] Creating a ticket on behalf of the requesters will now use the provided message content as the original message from the customer. Previously the message content was appended as a worker reply. The main reason for this change is to support the new Attendant behaviors which were confounded when there was an instant worker reply that changed the 'last' properties (sender/etc) for these messages.
  • [Plugins/Contexts] Contexts no longer need to provide translations for 'assigned' and 'commented' events. This is now handled automatically by the new Activity Log service.
  • [Plugins/Devblocks] Moved the string utilities (strToPermalink, strToHyperlinks, strPrettyBytes, strPrettyTime) from TemplateManager into DevblocksPlatform. This makes them reusable outside Smarty templates.
  • [Activity Log/Watchers/Notifications/Plugins] Implemented a new Activity Log service which can automatically track activity happening to any record type (e.g. tasks, tickets, addresses, opps). Copies of this activity automatically generate notifications which are sent to any watchers. The primary concepts in the activity log are 'actors' (the subject) and 'targets' (the object), although there is no requirement to follow this pattern. This provides a very simple and efficient way for watchers to follow changes to records of interest without requiring them to set up Attendant behavior or other complicated filters. These notifications can still be configured to send email/SMS/IM/etc. This replaces the previously built-in notifications for new assignments and comments.
  • [Activity Log] Activity log entries can be output in various formats: HTML (markup and hyperlinks), Markdown, email (most important link appended to plaintext), or plaintext (no hyperlinks or markup). This is very useful, as plaintext can be used to generate the summary text of notifications from the activity log, while HTML can be used to provide richer semantic information in the web interface.
  • [Activity Log/Plugins] An 'Activity Log' tab can be added to any page (including those provided by plugins) in a single line with no custom implementation code. This tab can display the activity log from the actor or target perspective. The actor perspective is used on profiles to show everything a particular actor has affected, while the target perspective is down on object records to show all the actors that affected them.
  • [Activity Log/Plugins] The Activity Log provides automatic actor-detection if no actor is provided when logging new activity. This involves detecting whether a change is happening as the result of Attendant behavior, or the current worker session. Activity that is the result of automated behavior is tagged as such to make it easier to find misbehaving business automatic logic. This also means that the '{{actor}}' token can be used in any log entry without needing to provide a variable or URL for it.
  • [Activity Log/Plugins] Activity Log entries can provide any number of hyperlinked tokens in the message. For example, in the log entry "Jeff Standen moved ticket '[ABC-12345-678] Help me' to group 'Support'", hyperlinks can be added to 'Jeff Standen', 'ABC-12345-678' and 'Support' that direct the reader to the worker profile, the ticket profile, and the group profile.
  • [Activity Log/Localization] Activity Log entries can now be provided by the translation system, but care must be take that the {{tokens}} are not translated.
  • [Activity Log/Usability] The Activity Log improves usability contextually from the 'target' perspective by hiding the target token and hyperlink in all log entries. For example, a log entry that says "Jeff Standen commented on task 'This is something we need to do': This is my comment" will display as "Jeff Standen commented on task: This is my comment" when viewed from the task itself. This removes a lot of unnecessary noise (i.e. a link doesn't need to be provided from the record you are currently viewing). When viewing the same log entry from the worker profile it will show the task name and link as well.
  • [Activity Log/Comments] Adding a comment to any record will now automatically generate an Activity Log entry. As often requested prior to 5.4, the content of the comment will be shown in the notification visible to watchers.
  • [Activity Log/Mail] Changing the status of a ticket will now automatically generate an activity log entry that will send a notification to watchers.
  • [Activity Log/Connections/Watchers] Linking two records will now automatically generate an activity log entry that will send a notification to watchers. This is done for both sides of the link.
  • [Activity Log/Watchers] A watching following or unfollowing a record will now automatically generate an activity log entry that will send a notification to other watchers.
  • [Activity Log/Mail] A worker replying to a ticket will now automatically generate an activity log entry that will send a notification to watchers.
  • [Activity Log/Mail] A contact replying to a ticket will now automatically generate an activity log entry that will send a notification to watchers.
  • [Activity Log] Added an 'Activity Log' tab to the display page for: calls, contacts, domains, feed items, opportunities, organizations, servers, tasks, tickets, and time tracking.
  • [Activity Log/Profiles/Worker] Added an 'Activity Log' tab to worker profiles. This shows from 'actor' perspective, so it will be all the activity for that worker across all record types.
  • [Activity Log/Watchers/Notifications] The Activity Log will now send automatic notifications to watchers of either the actor -or- the target. This means if you're watching an address and they send in a new message (as an actor) you will get a notification automatically.
  • [Address Book/Addresses/Profiles] Added a profile page for individual email addresses. This provides a workspace for viewing the activity log, reading/writing comments, and adding links to other records.
  • [Audit Log/Plugins] The 'Audit Log' plugin has been moved out of the official release and into the optional plugin repository. It has been superseded by the Activity Log.
  • [Activity Log/Tasks/Watchers] Watchers are now notified when tasks are completed.
  • [Events/Tasks/Plugins] A new 'dao.task.update' event point can be used by plugins to monitor changes to tasks.
  • [Activity Log/Opportunities/Watchers] Watchers are now notified when the status of opportunities changes: open, closed/won, closed/lost.
  • [Events/Opportunities/Plugins] A new 'dao.crm_opportunity.update' event point can be used by plugins to monitor changes to CRM opportunities.
  • [Address Book/Profiles] Added quick search and a watchers button to the address profile page.
  • [Tasks/Profiles] Added a watchers button to the tasks profile page. Also implemented a menu for quick actions like marking the task completed.
  • [Explorer] The Explorer frame can now show a message as the hyperlink instead of just a URL. This is useful for exploring things like Notifications where the content of the notification isn't represented anywhere in the link for each item.
  • [UI/Usability] The 'signed on as Worker' text in the top right is now a link with a menu. The menu provides shortcuts to: my profile, settings, notifications, virtual attendant, watchlist, history, and sign out. It also saves a lot of screen space in the top right.
  • [Worklists/Subtotals/Usability] Added a hover highlight effect to subtotal options, and you can now click anywhere in a subtotal row without having to click directly on the link.
  • [Worklists/Usability/Filters] You can now quickly reset the list of filters or switch to any preset in a single click from the filter summary above each worklist.
  • [Activity Log/Address Book/Orgs] The Activity Log will now record organization merge events.
  • [Activity Log/Mail] The Activity Log will now record ticket merge events.
  • [Activity Log/Watchers] The Activity Log will now use distinct events if someone else assigns/unassigns a watcher instead of that person following/unfollowing a record on their own. This becomes the first notification that someone sees when they are assigned something by an Attendant, a manager, etc.
  • [Workspaces/Custom Worklists] You can now set 'required' filters on custom worklists from the 'customize' menu. This will create a baseline using filters that are not affected by subtotals and editable filters. Editable filters can be used to sub-filter the worklist, but hitting 'reset' will restore your worklist's baseline rather than clearing all your filters. For example, if you set a required filter of "status=open" on a ticket worklist from the customize menu then there is no way using subtotals or filters to see anything but open tickets. When you 'reset' the editable filters you will see a list of "status=open" tickets with no visible filters applied.
  • [Activity Log/Plugins/Localization] Activity Points can now be defined in the plugin.xml manifest. This allows the localization of the log entry messages and the label for the activity (e.g. Ticket Closed).
  • [Simulator] The simulator can now create sample organizations and tasks in addition to tickets.
  • [Activity Log/Usability] Arbitrary Activity Log worklists now have their own ID and are flagged as ephemeral. This means multiple activity log worklists for the same worker on different browsers or tabs won't interfere with each other. Additionally, they're cleaned up between sessions.
  • [Activity Log/Watchers/Preferences] Each worker can now choose which activities they want to be notified about on watched objects. This can be configured from 'My Settings->Watcher Notifications'. For example, it may not be useful to be notified when other watchers start/stop watching something you're currently watching, or when someone adds/removes links, or when tickets are marked open or 'waiting for reply' (as that happens for every reply, and replies have their own activity log entries).
  • [Database/Installer] Added support for MySQL's InnoDB storage engine in the installer. This is now our preferred choice.
  • [Database/Installer] Added support for PHP's 'mysqli' driver (in addition to the legacy 'mysql' driver).
  • [Tour/Assist Mode] Drastically improved the style and content of the interactive Assist Mode tour that is displayed to new workers. Callouts are now done with jQuery and can be targeted to very specific elements on the page. Added a 'show all' option to display all the callouts for a page at once (if they overlap, hover over one to focus it).
  • [Tour/Assist Mode/Plugins] Any plugin can add content and callouts to the interactive assist mode. Added very flexible options: selectors, tooltip and target corners, and x+y offset for precise but effortless positioning.
  • [Mail/Workflow/Usability] Implemented advanced keyboard shortcuts for the Workflow worklist: (a) select all/none; (*) reset filters; (-) undo last filter; (~) subtotals menu; (`) focus subtotals. By focusing subtotals you can quickly use TAB and ENTER to modify the worklist without using the mouse.
  • [Virtual Attendants/Decision Trees/Usability] You can now have multiple popups open when editing a decision tree on an Attendant. This makes it much easier to condense duplicate outcomes/actions.
  • [Virtual Attendants/Decision Trees/Usability] When you save changes to decision tree nodes, the tree will reload via Ajax without reloading the page or closing any other popups you have have open. This makes it much easier to work with complex behavior.
  • [Performance] Drastically reduced the number of database queries per request by keeping track of which templates are capable of being overridden. Generally this is just the Support Center and other community portals, and none of the internal templates.
  • [Knowledgebase/UI/Aesthetics] Improved the knowledgebase stylesheet.
  • [Knowledgebase/Support Center/Aesthetics] Improved the default stylesheet on Support Center knowledgebase article content.
  • [CHD-2232] [Autocomplete/Choosers/Workers] Disabled workers will no longer show up in autocomplete results for choosers.
  • [CHD-2226] [Time Tracking/Setup] You can create blank time tracking 'activities' in Setup which then become impossible to edit.
  • [CHD-2221] [Choosers/Workers/Autocomplete] Autocomplete will no longer break on worker searches when you enter a space.
  • [Worklists/Usability] Added the workflow keyboard shortcuts to most other single worklists (ticket search, activity, addy book, kb, datacenter, but not workspaces): (a) select all; (*) reset filters; (-) undo last filter; (~) change subtotals; (`) focus subtotals.
  • [Feedback/Watchers] Added watcher filters and subtotals to feedback worklists.
  • [Opportunities/Watchers/Subtotals] Added watcher subtotals to opportunity worklists.
  • [Tasks/Worklists/Subtotals] Added watcher subtotals to task worklists.
  • [Address Book/Addresses/Subtotals/Watchers] Added watcher filters and subtotals to address worklists.
  • [Address Book/Contacts/Subtotals/Watchers] Added watcher filters and subtotals to contact worklists.
  • [Datacenter/Servers/Watchers] Added watchers filter and subtotals to datacenter server worklists.
  • [Datacenter/Domains/Watchers] Added watchers filter and subtotals to datacenter domain worklists.
  • [Knowledgebase/Watchers/Worklists] Added watchers filter and subtotals to knowledgebase article worklists.
  • [Knowledgebase/Usability] Added friendly URLs to the knowledgebase, both for workers and the Support Center. Topics, categories, and article titles will be shown in the URL. For example: /kb/article/52-Archiving_content_in_Amazon_S3_with_the_Storage_se rvice
  • [Activity Log/Plugins] Added the ability to override the 'actor' for the activity log functionality in a more global fashion. This is useful for functionality like the email relay, where each reply may be coming from a different worker, and the activities performed by those replies needs to be recorded as if each individual worker was the actor. This needs to happen whether a session exists, or mail is being downloaded from the /cron.
  • [Attendants/Watchers/Email Relay/Parser] [CHD-985] [CHD-839] You can configure Attendants to relay mail to external worker email addresses. This allows workers to take advantage of many helpdesk features through a standard email client; which is especially useful on mobile phones. This works for new messages in groups (configured by a group manager) as well as new messages on watched conversations (configured by a worker). This replaces the old email gateway functionality, and it can be expanded to work with all object types, not just tickets (e.g. replying to a notification about a task can add a comment and set a due date). A large number of 'tags' are supported that can be inserted into the reply, giving instructions to the helpdesk, which are unseen by the requesters who receive the final message.
  • [Attendants/Watchers/Email Relay/Parser] Implemented several new tags for giving instructions to the helpdesk through a regular email client: #watch (start watching), #unwatch (stop watching), #sig (insert signature), #status (change status), #reopen (set reopen date), #comment (add comment), #noreply (don't broadcast to requesters), #cut (don't relay below this line). See the full details with examples at: http://wiki.cerb5.com/wiki/Email_Relay
  • [Attendants/Watchers/Email Relay/Parser] Workers can now configure custom watcher email notifications. For example, the default watcher email template now sends a direct URL to the ticket; but any other snippet content can also be used. Lines that begin with '##' will be stripped from a reply by the worker from their external email client. It's suggested that you prefix anything with '##' that you wouldn't want a customer to accidentally read (like your helpdesk URL).
  • [Mail/Drafts] [CHD-2183] If you click 'Reply' multiple times on the same ticket, you'll create multiple draft auto-save timers. Additionally, if you 'discard' it won't clear the auto-save timer.
  • [Mail/Reply/Usability] [CHD-694] Added a pop-up warning if navigating away in the middle of writing an email reply on a ticket.
  • [Mail/Quick Compose] [CHD-2233] The quick compose popup now allows you to specify a reopen date for the new conversation.
  • [Mail/Compose/Usability] Added the ability to pass the destination address to the compose form: /tickets/[email protected]
  • [Knowledgebase/Web-API] Attempting to retrieve a KB article via the RestAPI does not work.
  • [Mail/Snippets/Usability] [CHD-2184] When using the snippet tester while replying to a ticket it should use the values from the current ticket.
  • [Snippets/Usability] Made the names of snippet fields more friendly.
  • [Snippets/Group] [CHD-2178] Group custom fields can now be used in snippets.
  • [Virtual Attendants/Group] Group custom fields can now be used in Virtual Attendants.
  • [Snippets/Usability] Added a quick 'insert placeholder' menu to the add snippet popup. This replaces the long dropdown which only allows you to use keyboard shortcuts matching the beginning of the placeholder. You can now do searches that match any part of the placeholder token, and the menu will remain open to make it easier to continue adding tokens with fewer keystrokes.
  • [Knowledgebase/Search] [CHD-2257] Knowledgebase articles will now be instantly search indexed upon creation. This resolves the issue you may add a new article while replying to a ticket and then you're unable to find it using a keyboard search until the search index scheduled job uns.
  • [Mail/Snippets/Compose] [CHD-2228] Added the snippets toolbar to the compose mail page.
  • [Mail/Snippets/Open Ticket] [CHD-2228] Added the snippets toolbar to the Open Ticket page.
  • [Watchers/Virtual Attendants/Relay] The Virtual Attendant will now relay mail copies with the Reply-To header as the proper group or bucket. This is something that the watchers functionality prior to 5.4 never did properly.
  • [Web-API/Feedback] You can now delete feedback entries through the Web-API.
  • [Web-API/Feedback] You can now properly update and search using 'quote_mood' on Feedback entries through the Web-API.
  • [Web-API/Orgs] Implemented delete for organizations through the Web-API.
  • [Web-API/Orgs] Added the rest of the organization fields to search functionality through the Web-API.
  • [Web-API/Tickets/Custom Fields] You can now display and search ticket custom fields with the Web-API.
  • [Web-API/Tasks/Custom Fields] You can now display and search task custom fields with the Web-API.
  • [Web-API/Tasks] Implemented the ability to delete tasks through the Web-API.
  • [Web-API/Addresses/Custom Fields] You can now display and search address custom fields with the Web-API.
  • [Web-API/Comments] Comments are now accessible through the Web-API.
  • [Web-API/Custom Fields] Custom fields are now accessible through the Web-API.
  • [Web-API/Messages] You can now delete individual messages from tickets through the Web-API.
  • [Web-API/Knowledgebase] You can now delete knowledgebase articles through the Web-API.
  • [Web-API/Knowledgebase/Custom Fields] You can now modify and search custom fields on knowledgebase articles through the Web-API.
  • [Web-API/Knowledgebase] You can now manage knowledgebase categories through the Web-API.
  • [Opportunities] [CHD-2273] Creating an opportunity from a profile (e.g. ticket) should auto-link it.
  • [Platform/Plugins/Localization] Provided a "Unidecode" implementation in Devblocks on DevblocksPlatform::strUnidecode(). This takes text in non-Latin-based character sets (e.g. Han, Nihongo, Cyrillic, Greek) and "Romanizes" them. This doesn't affect the actual in messages or articles, it just makes it easier to work with them on functionality like fulltext search indexing and anti-spam decision making.
  • [Mail/Localization/i18n] Email subjects that aren't quoted-printable should now be properly converted to UTF-8 based on the Content-type of the message body.
  • [Mail/Anti-Spam/Localization] Previously, anti-spam decisions were made after removing accents (é : e) and stripping all text that wasn't English alphanumeric (a-z, 0-9). While this handled many Latin-based languages like German, Spanish, Italian, and French, it completely ignored content from languages like Chinese, Japanese, Greek, and Russian. We're now using a much more sophisticated process where we "Unidecode" non-Latin languages into Romanized phonetics. For example, native Russian/Cyrillic characters may be converted into the form "zakhoditie na nash sait" for anti-spam purposes. This doesn't affect the readable content of email messages, it just changes how the software detects patterns between messages.
  • [Search/Localization] [CHD-1980] Previously, search functionality indexed content by removing accents (é : e) and stripping all text that wasn't English alphanumeric (a-z, 0-9). While this handled many Latin-based languages like German, Spanish, Italian, and French, it completely ignored content from languages like Chinese, Japanese, Greek, and Russian. We're now using a much more sophisticated process where we "Unidecode" non-Latin languages into Romanized phonetics. For example, native Chinese/Han characters may be converted into the form "shen zhen" for search purposes. This doesn't affect the readable content of email messages. You may now fulltext search interchangeably using either native characters or the Romanized version, and you'll get results in either format. Note: You will probably need to reindex your search content to take advantage of these impr

New in Cerberus Helpdesk 5.4.2 (May 25, 2011)

  • [CRM/Opportunities/Bulk] Added the ability to bulk delete opportunities with the proper permission.
  • [Virtual Attendants/Worker] [CHD-2322] Add the ability to choose the destination email when sending email from the 'New notification for me' event.
  • [Virtual Attendants/Worker] [CHD-2326] Fixed a bug that returned "Call to a member function getReplyTo()" when relaying mail using Virtual Attendants on the "Mail received by watcher" event.
  • [Installer/Patcher/Platform] Added a default of 'MyISAM' for the 'APP_DB_ENGINE' constant in framework.defaults.php since several people have upgraded by copying over the new framework.config.php file with an older version.
  • [Mail Relay/Watchers] [CHD-2331] A worker reply to a relayed message opens a new ticket at the same time it properly replies to an existing one.
  • [Activity Log/Notifications] [CHD-2321] If an activity log entry is created from the Support Center the URL won't be valid in the helpdesk.
  • [Snippets] [CHD-2323] Add a '|truncate' filter so placeholders can be shortened for email subjects, SMS, etc.
  • [Search/Indexing/Performance] Improved the performance and memory efficiency of the fulltext search indexer when working with very large content. We had several reports of the search indexer stalling with >1MB messages because of 'out of memory' errors. This had to do with Unidecode, and PHP's inherent array inefficiency.
  • [Search/Indexing] The search indexer will now record its progress more often so that it doesn't have to repeat as much work in the event of an error.
  • [Search/Indexing] Added the ability to append to existing search indexes. This allows large pieces of content to be indexed incrementally, in a way that is more friendly to PHP's memory model and enforced limits.
  • [Activity Log/Virtual Attendants] [CHD-2337] With deeply nested Virtual Attendants (e.g. a group attendant adding watchers, and multiple worker attendants relaying notifications) it was possible for the Activity Log to detect the wrong actor. Subsequent activity inexplicably appeared to be caused by each attendant in sequence. This has been resolved.
  • [Activity Log/Virtual Attendants] [CHD-2337] Fixed an Activity Log bug when using Open Ticket. If a group Virtual Attendant added the current worker as a watcher, the Activity Log read "Group [Attendant] started watching this record". It should have been showing the Attendant assigning the worker as a watcher instead.
  • [Virtual Attendants] [CHD-2333] Fixed a bug in the 'Move to Group' action of Virtual Attendants which prevented the action from running.

New in Cerberus Helpdesk 5.4.1 (May 16, 2011)

  • This maintenance release includes 19 fixes and usability tweaks.

New in Cerberus Helpdesk 5.4.0 (May 10, 2011)

  • [Profiles/Workers] Added worker profiles. By visiting a worker's profile you can view their recent activity and assignments. A worker can also add public workspaces to their profile that other workers can see and clone.
  • [Profiles/Groups] Added group profiles. Managers of a group can create shared workspaces on the group profile that can be viewed or cloned by any member. Members can display a group workspace to other pages (such as Mail). This helps groups work from consistent lists.
  • [Platform/Plugins] Added a new 'devblocks_permalink' modifier to templates that will reduce a string to alphanumerics (plus dash, underscore, period, comma, and parentheses). Other characters, including spaces, will be translated to underscores (_), and multiple underscores will be reduced to a single underscore. For example, the sentence "Cerb5 (5.4) has 100+ neat ideas!" will generate the permalink text of "Cerb5_(5.4)_has_100+_neat_ideas". This is used to generate friendly text inside URLs.
  • [Mail/Subtotals] Added shortcut links for resetting the status and worker subtotals on ticket lists.
  • [Platform/Plugins/API] Renamed all references of 'Worker Events' to 'Notifications'.
  • [Profiles/Notifications] Moved the notifications worklist to the current worker's profile.
  • [Watchers/UI/UX] Improved the style of the Watchers peek popup.
  • [SDK/Examples/Plugins] Added an example plugin (example.datacenter.tab) for creating new tabs on the Datacenter page.
  • [SDK/Examples/Plugins] Added a new example plugin (example.page) for creating new pages in Cerb5, which are displayed in the top navigation menu and can contain any kind of content.
  • [SDK/Examples/Plugin] Added a new example plugin (example.object) for demonstrating how to add custom objects (i.e. records) into Cerb5 which benefit from all the platform functionality: views, workspaces, custom fields, comments, links, attachments, peek, bulk update, explore, etc.
  • [UI] Changed 'my account' to 'my settings' to reflect the difference between profiles and settings.
  • [Platform/Plugins] Refactored DAO_Address::getWhere() so it accepts the usual $sortBy, $sortAsc, and $limit parameters.
  • [SDK/Plugins] Added an 'example.controller' plugin example to the SDK to demonstrate creating new controllers, which handle requests and write responses at a lower level than cerberusweb.page extensions.
  • [Groups/Setup/Custom Fields] Custom fields can now be added to group records from Setup. This will allow some extra flexibility in snippets and mail rules.
  • [Setup/UI/UX] Refactored the Setup page to use pulldown menus rather than tabs for exposing configuration functionality. This is more friendly to the plugin-mindset, since an amalgamation of alphabetized tabs made it very difficult for a plugin to expose sophisticated configuration screens. Now a plugin can be configured from a pulldown menu and then it can have as many tabs as it wants in its own screenspace/namespace. This makes a lot of room for third-party expansion. Menus and menu items are also extension points. Any page can reuse the menu functionality.
  • [Platform/Devblocks/Plugins/Extensions/API] Added Javascript convenience functions for Devblocks.showError() and Devblocks.showSuccess(), which show slide-in tips about form submission/validation errors and progress. This saves a full page reload when saving a form doesn't require one. This also helps move toward a JSON-based model for Ajax form 'submit' requests, rather than forcing a DIV/page reload. This makes error checking a lot easier, and it removes the need for redundant Javascript-side form validation.
  • [Setup/Localization] Moved more text from Setup into the Translations system.
  • [Setup/UI/UX/Usability] Improved the style and usability of the Setup pages.
  • [Setup/UI/UX/Usability] Split up the 'System' tab into a 'Settings' menu with 'License', 'Logo & Title', and 'IP Security' to make it easier to find the right section.
  • [Setup/Usability/Scheduler] Saving a Scheduler job in Setup will now reload just that job without reloading the entire page. This should make it a lot less tedious to configure several of them at once without losing your place.
  • [Platform/Plugins/Extensions/API] Added 'Extension_PageSection' for adding new sections to pages. Sections replace the need to overuse tabs to split up page contents. Sections are usually managed by a page menu extension, but this isn't a requirement.
  • [Setup/Usability/Mail] The SMTP tester on Mail Outgoing is now automatic when saving settings.
  • [Setup/Usability/Mail] Improved the verbosity on error messages from the POP3 account tester. Fixed a couple issues where PHP error messages were passed back with the test results.
  • [Community Portals/Platform/Plugins] Merged the 'usermeet.core' plugin into 'cerberusweb.core'. Community Portals are now a common part of the platform. Enabling the Support Center plugin no longer has hidden dependencies.
  • [Community Portals/Setup] Community Portal configuration now happens inside Setup.
  • [Community Portals/Setup] Cleaned up the look/feel and usability of most Setup pages.
  • [Community Portals/Setup] Removed manual 'order' positioning of modules in favor of drag/drop rearranging.
  • [Support Center] Removed manual 'order' positioning of contact situations, situation followups, and announcements in favor of drag/drop rearranging.
  • [Usability] Added a 'move' mouse cursor to the 'drag' handle icon everywhere it is used. This should make it more obvious that you click and drag the icon to rearrange items in lists.
  • [Support Center/Usability/Setup] Any number of contact situations and followup questions can be added or removed at the same time without having to save the page multiple times during the process.
  • [Support Center/Usability/Setup] Any number of announcement feed URLs can now be added or removed at the same time without having to save the page.
  • [Platform/Plugins/Menus] Plugins can now add new menus and menu items to any menubar using the new 'cerberusweb.ui.page.menu' and 'cerberusweb.ui.page.menu.item' extension points. Tabs have been overused in the interface to break up pages into sections, but they lack the ability to group sections logically -- such as grouping multiple sections related to Mail together. In areas like the 'Setup' page this has led to a long list of tabs with no particular order; and in some cases, too much content crammed into a single tab to avoid the issue of disparate tabs. Menus provide more structure to these pages.
  • [Plugins/SDK] Added new example plugins to the SDK for demonstrating menus: 'example.page.menu' and 'example.page.menu.item'
  • [Devblocks/Plugins] Added an 'animate' option to the Devblocks.showSuccess() and Devblocks.showError() Javascript library. This is useful when you want to display a message like "Please wait..." before showing success or failure from an Ajax response, and you don't want it to jitter from the animation if it returns too fast.
  • [Simulator/Setup] Refactored the Simulator plugin to use the new Setup functionality (menus, page sections, etc)
  • [Application] Added a 'LICENSE' file to the project directory.
  • [Setup/Plugins/Menus] The Setup page now provides menu extension points for the entire menubar: core.setup.menu.settings, core.setup.menu.workers, core.setup.menu.mail, core.setup.menu.storage, core.setup.menu.portals, core.setup.menu.plugins
  • [Setup/Time Tracking] Refactored the Time Tracking plugin to use the new Setup functionality (page sections, menus, etc). Slightly improved the look and feel of the activity configuration pages.
  • [Translation Editor/Setup] Refactored the 'Translation Editor' plugin to use the new Setup functionality (page sections, menus, etc).
  • [Watchers/Setup] Refactored the Watchers plugin to use the new Setup functionality (page sections, menus, etc).
  • [Address Book/Orgs/Merge] You can now merge any number of organizations from the Address Book. Merging combines duplicate records, and you can choose the best source for each property + custom field. Only unique values are shown. If there is only one value (e.g. fax number) then it picks it for you to save time. These end up as a single record, and all the contacts, custom fields, comments, and links are automatically moved. An 'org.merge' event is also triggered for plugins to listen for and update their stored data accordingly.
  • [Platform/Contexts/Plugins] Added 'DAO_ContextMergeHistory' for providing a log of record merges for any context. This can be used to retrieve the latest ID for an object after it has been merged any number of times with other objects.
  • [Platform/Plugins/Events] Added an 'org.merge' event point. This is triggered when any number of organizations are merged together, and it gives plugins an easy way to update their datastores.
  • [Setup/Mail] Removed the 'Outgoing Mail Settings' setup page. Added an explicit 'SMTP Server' setup page instead.
  • [Setup/Mail] Split the 'Mail' setup menu into 'Incoming Mail' and 'Outgoing Mail' sections.
  • [Setup/Mail] Added a 'Reply-To Addresses' page to the 'Mail' menu in Setup. This is used to explicitly configure the addresses that the helpdesk is allowed to use to send mail. This improves functionality from earlier versions where users could enter any email address when configuring a group's 'From:' address, which could lead to mail loops or customer replies being routed outside the helpdesk. Formalizing these addresses makes their reuse and management far more simple. Existing configuration will be automatically migrated by the update patch.
  • [Plugins/Performance] Improved the performance of DAO_Group::get() calls by using the existing object cache rather than always running a database query.
  • [Mail/Groups/Buckets] [CHD-1100] You can now set up reply addresses and signatures per-bucket as well as per-group. Outgoing replies from the helpdesk will use the appropriate preference, cascading from bucket, to group, to global default. A bucket can choose to just overload part of the reply-to defaults -- such as the personal reply name -- while retaining the other defaults. (Partially sponsored by Spilgames.com)
  • [Groups/Buckets/Setup] Buckets can now be reordered by clicking and dragging them in Group Setup. This is much more efficient than having to renumber them by hand. You don't have to hit 'Save Changes' after reordering -- your preferences will be saved automatically.
  • [Groups/Buckets/Setup] In Group Setup, buckets are now managed using a list and 'peek' popups. This allows more room for configuring buckets, easily allowing better integration with functionality like custom fields, etc.
  • [Groups/Setup] Improved the look and feel of the Group Setup pages.
  • [Groups/Buckets/Setup] When deleting a bucket from Group Setup you can now choose the bucket where you would like to move its tickets. Previously everything was always moved back to the Inbox.
  • [Preferences/Mail] Moved the 'signature position' setting to per-worker preferences. Previously this was a global setting that couldn't be overridden.
  • [Preferences/Mail] [CHD-1125] Added an option to worker preferences that allows the auto-inserted signature to be disabled. This allows signatures to be added manually (e.g. from snippets).
  • [Mail/Reply] [CHD-1220] Added an experimental keyboard shortcut (Ctrl+Shift+G) for inserting a signature into the message from the Reply screen.
  • [Mail/Reply] Added an experimental keyboard shortcut (Ctrl+Shift+I) for inserting a snippet into the message from the Reply screen. The shortcut will focus the snippet autocomplete text box; and selecting a snippet for insertion will automatically refocus the message textarea.
  • [Groups/Setup/Usability] Added group names to the permalink URLs. For example, instead of a mysterious '/groups/10/buckets', the URL now shows '/groups/10-Support/buckets'
  • [Groups/Buckets/Mail/Signature] Group and bucket signatures are now display parsed (with current worker details) rather than as unparsed template token values. This makes it easier to see how signatures would look when used in live email. It also makes it more clear how signatures cascade from bucket to group to global (and which one will be used for each bucket). The tokens are still shown when editing signatures.
  • [Groups/Buckets/Mail/Signature] Added a 'Reset to Default' option on Bucket peek from Group Setup. This saves the hassle of needing to copy and paste an example signature to use before customizing one for a bucket.
  • [Snippets/Signature/Workers] Added a new 'full_name' token to signatures and worker snippets to make it easier in situations where you want to display both the first and last name when available, but if either isn't set then you don't want extraneous spaces. This should simplify condition logic in signature templates for the most common use case.
  • [Snippets/Signature/Addresses] Added a new 'full_name' token to address snippets to make it easier in situations where you want to display both the first and last name when available, but if either isn't set then you don't want extraneous spaces. This should simplify condition logic in signature templates for the most common use case.
  • [Mail/Log/Compose] Added the 'Ctrl+Shift+G' shortcut for Insert Signature to Log Ticket and Compose.
  • [Mail/Groups/Buckets/Reply] [CHD-575] [CHD-930] [CHD-931] The 'personal' field in the Group/Bucket 'From:' header can now contain the same template tokens as signatures. This is much more flexible than the previous option to 'prefix worker names' to the From: line.
  • [Platform/Plugins/Snippets/Contexts] Added a new convenience method CerberusContexts::scrubTokensWithRegexp() which makes it easy to filter a set of labels/values returned from a context prior to merging it with another context. For example, if you're building tokens starting from a message and you want to merge the tokens in from its associated ticket, you likely don't need the 'initial_message_*' and 'latest_message_*' tokens from the ticket since you're focused on a particular message. This method allows you to remove those labels/values in a single line.
  • [Snippets/Contexts/Mail] Added a 'url' token to ticket context for giving a direct link to a ticket in snippets, decision tree actions, etc.
  • [Groups/Manage] The tabs in Group Setup will now persist properly between page views.
  • [Mail/Usability] Automated messages from the helpdesk in a conversation history will now properly be marked as 'outgoing'. This check was previously done by comparing the sender to known workers, but the helpdesk already knows if messages are incoming or outgoing independent of sender. This is important since new functionality in 5.4 makes it much easier to perform business automation.
  • [Comments/Usability] It is now possible for comments to be created by the helpdesk itself without a explicit author. This is used by business automation functionality in 5.4+
  • [Virtual Assistants/Decision Trees] Implemented Virtual Assistants functionality which is aimed at replacing the previous incarnation of mail rules and event listeners to provide much more sophisticated business automation using "decision trees". Prior to 5.4, mail rules were "serial" -- meaning that all your rules ran in order until a particular rule said to stop. This approach made it very difficult to provide complex behavior, such as having different responses based on the combination of 'day of week' and 'time of day'. With decision trees, complex behavior can be built in small steps, such as: Is it a weekend? Yes/No. For each of those outcomes there can be additional decisions: Is it after 5pm on a Friday? Does this sender have an SLA?
  • [Virtual Assistants/Decision Trees/Events] Decision trees observe 'events'. A decision tree is a collection of: decisions, outcomes, and actions. Each decision can have multiple outcomes (e.g. yes/no, high/normal/low, Mon/Weds/Fri). Each outcome can have multiple conditions (e.g. day of week, month of year, sender name, ticket subject) and actions (e.g. send email, create task, create notification). Decisions can be nested to any depth; for example, you can check if the current day is Friday, and then check if it's before or after 5pm, and then whether or not the sender has an SLA. At each point you can define behavior for all outcomes of a decision, or you can only provide actions for very specific cases while ignoring the rest. This helps open up previously hardcoded behavior: auto-replies, anti-spam, etc.
  • [Virtual Assistants/Decision Trees/Conditions/Plugins] Decision trees will automatically handle conditions that are associated with these types: string, number, boolean/checkbox, date, dropdown, multi-picklist, multi-checkbox, worker, month of year, day of week, time of day.
  • [Virtual Assistants/Decision Trees/Actions/Plugins] Decision trees provide these reusable actions: create comment, create notification, create task, create ticket, send email.
  • [Virtual Assistants/Decision Trees/Plugins] Virtual Assistants can be utilized and expanded by any plugin. Plugins can add new events, conditions, and actions to decision trees.
  • [Virtual Assistants/Decision Trees/Plugins/Usability] Plugins for Virtual Assistants and Decision Trees are designed to be lightweight and highly reusable. In many cases you can use one the built-in data types for a new condition (e.g. string, URL, number, checkbox, dropdown) without having to write any comparison code. Common actions (e.g. create task, send email) can also be reused for new events, often with a single line of code.
  • [Virtual Assistants/Decision Trees/Performance] Virtual Assistants and Decision Trees are designed for performance. An event manager queries 'triggers' to see if there are any listeners for a particular event. If not, no extra logic is performed. If there are listeners, the values for the related objects are loaded once, cached, and shared with every event. This saves each event from needing to retrieve objects from the database on it own, which is a major boost for performance and scalability. Additionally, events in 5.4+ can now be directed at particular types of listeners (e.g. workers, groups) or even particular listeners (a specific worker or group) which reduces the amount of work needed. Most of these checks are done using 'manifests', which means that event plugins don't need to be executed or loaded into memory until they are absolutely needed. This is far more efficient than executing every plugin to determine if they are needed.
  • [Virtual Assistants/Decision Trees/Objects/Contexts] Any object in the helpdesk can have a Virtual Assistant. Most commonly, workers and groups have Virtual Assistants, but it is possible for more exotic record types to have assistants too; for example, a particular conversation could have a dedicated Virtual Assistant that reacts to events only when they happen to that conversation. This enables incredibly flexible and powerful workflows to be built.
  • [Virtual Assistants/Plugins] A Virtual Assistant tab can be added to any page from plugins using the controller ('c=internal&a=showAssistantTab&context=&context_i d='). This provides shared access to decision trees functionality for a specific context.
  • [Virtual Assistants/Events/Plugins] Implemented the 'Notification Received By Owner' event (Event_NotificationReceivedByOwner).
  • [Virtual Assistants/Events/Plugins] Implemented the 'Mail Received By Owner' event (Event_MailReceivedByOwner).
  • [Virtual Assistants/Events/Plugins] Implemented the 'Mail Received By Group' event (Event_MailReceivedByGroup).
  • [Virtual Assistants/Groups/Manage] Added a 'Virtual Assistant' tab to Group Setup.
  • [Virtual Assistants/Preferences/Worker] Added a 'Virtual Assistant' tab to My Settings for each worker.
  • [Virtual Assistants/SDK/Plugins] Added an 'example.event.condition' sample plugin to the SDK for demonstrating how to add new conditions to decision trees.
  • [Virtual Assistants/SDK/Plugins] Added an 'example.event.action' sample plugin to the SDK for demonstrating how to add new actions to decision trees.
  • [Watchers/Attendants/Plugin] Removed the 'Watchers' plugin from the official project. It will be moved to the third-party plugin repository on GitHub. This functionality has been replaced by Virtual Attendants.
  • [Virtual Attendant/Groups/Conditions] Added new conditions to the 'Mail Received by Group' event: sender is worker, message is first, ticket spam score, ticket spam training, ticket status
  • [Virtual Attendant/Groups/Actions] Added new actions to the 'Mail Received by Group' event: set spam training, set status, move to bucket
  • [Virtual Attendant/Groups/Actions] Added a "Don't save a copy of this message to the conversation history" option to the 'Send email to requesters' action of the 'Mail Received By Group' event.
  • [Events/Notifications/Virtual Attendants/Plugins] Phased out the old 'ticket.reply.inbound' and 'ticket.reply.outbound' events in favor of the new Virtual Assistant functionality. This means that previously built-in notifications are now customizable, expandable, and may be disabled according to each worker's needs. This should also help in situations where users have complained that the notifications are too generic (e.g. "Someone replied to a ticket assigned to you"), since dynamic placeholders from snippets can now be used for these event actions.
  • [Devblocks/Plugins/Logging] Added 'getLogLevel()' and 'setLogLevel()' methods to the logging service at DevblocksPlatform::getConsoleLog(). This allows developers to retrieve log output on arbitrary UI actions.
  • [Devblocks/Plugins/Ajax] The Devblocks Javascript/jQuery convenience functions for 'genericAjaxGet' and 'genericAjaxPost' can now accept DOM IDs or jQuery objects for the 'div' and 'form' arguments. This makes it easier to deal with relative references in scripts that are loaded through Ajax.
  • [Virtual Attendants/Groups/Setup] The group options for open ticket auto-reply, close ticket auto-reply, and spam quarantine have been moved into the new Virtual Attendant tab. This allows much more flexibility over the automated behavior in these events. For example, auto-replies can now consider time of day, day of week, language of sender, SLAs, etc. Close auto-replies can now consider factors like the current bucket, custom field values, and idleness duration. Additionally, more criteria, actions, and email template tokens are now available. Existing settings will be automatically migrated during the 5.4 update.
  • [Virtual Attendants/Groups/Events] Previously, group routing rules could only be applied to the inbox. Now you can set up behavior in a group's Virtual Attendant for moves to any bucket. For example, when tickets are dropped into an 'Unsubscribe' bucket you could run custom behavior that performs several actions and then closes the ticket automatically.
  • [Virtual Attendants/Events] Added a new 'Event_MailClosedInGroup' event for Virtual Attendants. This allows custom behavior when tickets are closed in a group.
  • [Virtual Attendants/Events] Added a new 'Event_MailMovedToGroup' event for Virtual Attendants. This allows custom behavior when tickets are moved to or within a group.
  • [Virtual Attendants/Plugins] Added a reusable method (c=internal&a=testDecisionEventSnippets) for testing snippet token use in arbitrary Virtual Attendant actions.
  • [Devblocks/Cache/Memcached] If memcached is enabled for caching, bit the host:port settings are incorrect and the connection times out, Devblocks will now properly fall back to using a disk-based cache rather than rebuilding the cache on every request.
  • [Virtual Attendants/Plugins] Conditions and actions now have access to the full trigger object. This is often useful when something needs to adapt to the trigger's context (like a group's showing only its own buckets).
  • [Virtual Attendants/Conditions] Added a reusable 'ticket group bucket' condition which shows a list of buckets for the current group and allows multiple choices and negation.
  • [Mail/Watchers/Terminology] 'Take' and 'Surrender' are now known as 'Follow' and 'Unfollow'. These terms are much more well known and widely understood.
  • [Contexts/Terminology] 'Owners' are now 'Watchers' on all records.
  • [Worklists/Aesthetics/Usability] Worklist rows that are selected will now show a residual highlight style that will make it much easier to visually separate selected rows (rather than only having the checkbox as a visual aid). This also works with 'check all' and 'check none'.
  • [Worklists/Aesthetics/Usability] Added a 'pointer' cursor to worklist rows to make it more obvious they are clickable. Clicking them is a shortcut for toggling the row's checkbox.
  • [Worklists/Aesthetics/Usability] Added much more contrast to the worklist row highlight style.
  • [Aesthetics/Usability] Softened the borders on the global style for BUTTON. Added a .red and .green variation for BUTTON for better visual aids.
  • [Worklists/Performance/Watchers] Improved the performance of the worklist per-page watchers/owners lookup. This should make worklists faster in general. Previously this was inefficiently doing a lookup per row rather than per page (which meant larger worklist pages like search results took longer than they needed to).
  • [UI/UX] Aesthetic UI improvements. Migrated some more standalone gradient images to CSS styles (more design flexibility). Highlighted save and delete buttons as green/red.
  • [Worklists/Watchers/Contexts] Added a reusable watcher button to worklists that allows workers to follow or unfollow any piece of content in the application in a single click. By following (or 'watching') content you can receive notifications when it's updated -- such as when a customer replies to a conversation you're watching, or when a task you're watching is completed by another worker. This replaces the concept of 'owners' in earlier versions; ownership will no longer hide content.
  • [Mail/Workflow/Worklists] Mail in 'Workflow' is no longer hidden when someone is watching it. Since the concept of 'owners' has been improved into 'watchers', this makes it much easier to notice when other workers are watching particular mail conversations. When mail is hidden, it makes it difficult for other workers to step in and help customers if the primary worker is away -- and this is one of the primary functions of a helpdesk. You can still filter conversations to those which have zero watchers to emulate the old behavior. You can also add a 'worker' custom field to tickets if you want to enforce individual assignments (and you can use that custom field to hide mail with an assignee). You have options, we're just not going to hide mail as a default going forward.
  • [Worklists/Peek/Aesthetics/Usability] The peek button is now hidden in worklists until you hover over a particular row. This makes lists less noisy.
  • [Worklists/Aesthetics/Usability] Removed the checkboxes in worklists since row selected is better communicated by the row remaining highlighted. This frees up horizontal list space for more important column data, and it also reduces the number of visual elements on the screen.
  • [Workspaces/Performance] Reduced memory usage when rendering long groups of worklists on workspace tabs.
  • [Peeks/Watchers] You can add or remove yourself as a watcher from most peek popups. The ability to add other workers as 'owners' has been removed, since watchers work best when they're voluntary and explicit (i.e. trusted).
  • [Peeks/Comments/Watchers/Notifications] The comment 'notify' list on peeks will always notify watchers, and a notification will not be sent to the worker authoring the comment.
  • [Peeks/Comments/Usability/UI] The comment 'notify' options will now only be displayed if there is content in the comment textarea. This helps to reduce visual clutter in the UI.
  • [Groups/Worklists/Profiles] The group worklist now provides links to group profiles for each row.
  • [Mail/Workflow/Subtotals/Usability] The subtotal counts on Mail/Workflow are now aligned to the right, making them much easier to read and compare.
  • [UI/Aesthetics] Improved the default style of the tabs. There's now a border beneath inactive tabs, which gives a better contrast to the currently selected tab. The colors have been muted and smoothed. Added a better hover effect.
  • [UI/Opera/Aesthetics] Added Opera 11.10 compatible gradients using CSS3. This was already supported by Chrome, Firefox, and Safari.
  • [Worklists/Usability/Filters] By default, worklists now show a minimized summary of the filters applied to them rather than the entire 'Filter' widget. This saves a lot of screen space and reduces complexity. It also allows filters to be introduced to other highly-requested locations, such as the 'Links' tab and Workspaces (where filtering had to be done inefficiently through worklist 'customize'). It's now much easier to tell if one of your worklists is constrained by filters, especially if the only way of knowing previously was by clicking 'customize'.
  • [Worklists/Filters/Usability] Worklist filters can be quickly removed from the new filter summary at the top of each list.
  • [Worklists/Filters/Usability] The Filters widget will now automatically remember if it is expanded or not for each worklist.
  • [Performance] Split classes from larger source source code files into smaller files. Further separated commonly used classes from rarely used ones. This should help reduce memory usage on systems that aren't taking advantage of an opcode cache like XCache.
  • [Context Links/Connections/Performance] Improved the memory efficiency of large content link lists (including worker profile watchlists).
  • [Profiles/Workers/Watchers] The number of watched objects is now shown on the 'Watching' tab for a given worker profile.
  • [Performance/Devblocks/Swift] Swiftmailer will now lazy load. This saves some cycles and memory when doing quick requests (e.g. Ajax).
  • [Workspaces/Performance/Usability] Implemented a 'lazy loading' system for viewing a large number of worklists on a single workspace. In the past the workspace tab would sit blankly while waiting for all the worklists to output before you would have any indication of what was going on. Now each worklist will load individually in a queue. Worklists that are off the screen to the bottom of the browser will not be loaded until you scroll down (and even then, only the visible ones will be loaded as you scroll and read). This generates much less traffic to the server, and it returns results *muchfaster. You should put your most frequently-used worklists at the top of your workspace to take advantage of this new functionality.
  • [Connections/Context Links/Performance/Usability] Implemented the 'lazy loading' system from Workspaces on Connections/links and worker profile watcher lists.
  • [Worklists/Usability] You can now click anywhere in a worklist column header to sort the rows. Previously you had to click directly on the link, which required more precision than was necessary.
  • [Worklists/Usability/Performance] Fixed an issue where worklists could remain sorted by a column that is no longer visible. Simplistically, this may be confusing. More insidiously, sorting by a custom field that is not displayed degrades performance needlessly.
  • [Custom Fields/Maintenance] There was an issue where some checkbox custom fields may have multiple values in the database. The patcher will clean these up when updating to version 5.4.
  • [Worklists/Views/Usability] It's now possible to persist a blank list of parameters on a worklist without it resetting itself back to defaults.
  • [Search/Platform/Plugins] Implemented a new DevblocksSearchCriteria::OPER_TRUE search operator. It will always return true and is useful for ensuring that a JOIN occurs in a search without otherwise filtering the results. This is used by subtotals to provide counts of all the possible values in a JOIN, whether other operators would require an explicit IS NULL or IS NOT NULL, returning only part of the results.
  • [Worklists/Subtotals/Usability] Clickable subtotal sidebars are now available on _EVERY_ worklist. Subtotals are now a service of Devblocks making it incredibly simple for third-party developers to add subtotals functionality to worklists of custom objects.
  • [Worklists/Subtotals/Usability] Previously the subtotal options on ticket worklists were hardcoded, making it seem strange if certain subtotals were available if their search filter wasn't (e.g. "status" on Workflow). Subtotals now automatically follow the behavior of their parent worklist and they'll automatically hide choices when they aren't useful.
  • [Worklists/Subtotals/Usability] Worklists will now persist your preferred subtotal field even if you disable subtotals for a worklist and re-enable them later. Your preferences are remembered per-instance -- meaning each workspace can retain its own unique perspective. This is incredibly useful.
  • [Worklists/Subtotals/Custom Fields] The following custom field types are automatically available to subtotals functionality for all worklists (including those from plugins): checkbox, picklist, multi-checkbox, multi-picklist, text, and worker.
  • [Worklists/Subtotals/Plugins] Subtotals functionality can automatically handle record fields that are text strings, booleans, and watcher lists. This makes it much quicker to add more kinds of data to subtotal.
  • [Worklists/Subtotals/Plugins] Any worklist can extend and override the subtotal functionality per field. For example, ticket worklists have an implementation for 'status' and 'group' subtotals that provide specialized behavior (e.g. buckets subtotaled per group).
  • [Worklists/Filters/Summary] When hovering over the filter summary bubbles above a worklist they will now all show their delete button. This requires less pixel-perfect mouse finessing, and it also makes it more obvious that you can delete filters this way (since the hover effect also happens when you're near the 'Filters:' link).
  • [Worklists/Subtotals/Tickets] Implemented the new subtotals functionality on Ticket worklists.
  • [Worklists/Subtotals/Address Book] Implemented the new subtotals functionality on Address worklists.
  • [Worklists/Subtotals/CRM] Implemented the new subtotals functionality on CRM Opportunity worklists.
  • [Worklists/Subtotals/Task] Implemented the new subtotals functionality on Task worklists.
  • [Worklists/Subtotals/Address Book] Implemented the new subtotals functionality on Organization worklists.
  • [Worklists/Subtotals/Call Logging] Implemented the new subtotals functionality on Call Logging worklists.
  • [Platform/Devblocks/jQuery] Updated the jQuery library from 1.4.4 to 1.5.2
  • [Worklists/Subtotals/Time Tracking] Implemented the new subtotals functionality on Time Tracking worklists.
  • [Worklists/Subtotals/Feedback] Implemented the new subtotals functionality on Feedback worklists.
  • [Worklists/Subtotals/Feed Reader] Implemented the new subtotals functionality on Feed Headline worklists.
  • [Worklists/Subtotals/Mail] Implemented the new subtotals functionality on Message worklists.
  • [Worklists/Subtotals/Address Book] Implemented the new subtotals functionality on Contact Person worklists.
  • [Worklists/Subtotals/Knowledgebase] Implemented the new subtotals functionality on Knowledgebase article worklists.
  • [Knowledgebase/Custom Fields/Search] Implemented custom fields in the knowledgebase search filters.
  • [Worklists/Subtotals/Datacenter] Implemented the new subtotals functionality on Server worklists.
  • [Worklists/Subtotals/Datacenter] Implemented the new subtotals functionality on Domain worklists.
  • [Worklists/Subtotals/Mail/Snippets] Implemented the new subtotals functionality on Snippets worklists.
  • [Worklists/Subtotals/Notifications] Implemented the new subtotals functionality on Notification worklists.
  • [Notifications/Subtotals] You can now use the new subtotals feature on a notifications worklist to find duplicate URLs and batch 'mark read' them. For convenience, subtotals will strip the base URL of your helpdesk to make it easier to read the useful part of the link (e.g. display/ABC-12345-678).
  • [Notifications/Filters] The 'is read' filter is now available on the Notifications tab on a worker's profile.
  • [Worklists/Subtotals/Workers] Implemented the new subtotals functionality on Worker worklists.
  • [Worklists/Subtotals/Groups] Implemented the new subtotals functionality on Group worklists.
  • [Groups/Custom Fields] Implemented custom fields on Group worklists and search filters.
  • [Worklists/Subtotals/Translation Editor] Implemented the new subtotals functionality on Translation worklists.
  • [Worklists/Subtotals/SDK] Implemented the new subtotals functionality in the SDK 'example.object' worklist.
  • [Worklists/Subtotals/Mail] Implemented the new subtotals functionality on Mail Drafts/Queue worklists.
  • [Platform/jQuery UI] Upgraded jQuery UI dependency from 1.8.7 to 1.8.11
  • [Worklists/Mail/Custom Fields/Orgs] Ticket worklists can now also use sender organization custom fields as columns, filters, and subtotals. This makes far more interesting workflows possible, such as sorting tickets by organization service level agreement (SLA). It also removes the need for filters to copy organization custom fields to ticket custom fields when new mail is received.
  • [Virtual Attendants/Conditions] Added more operators to string conditions: matches (*) wildcards, doesn't match wildcards, matches regular expression, doesn't match regular expression.
  • [Address Book/Worklists/Custom Fields] Email address worklists can now also use organization custom fields as columns, filters, and subtotals. This makes far more interesting workflows possible, such as sorting contacts by organization service level agreement (SLA) or industry.
  • [CRM/Opportunities/Worklists/Custom Fields] CRM opportunity worklists can now also use address and organization custom fields as columns, filters, and subtotals. This provides a far more complete picture of each opportunity. If an opportunity is from an address that is associated with an organization, and that org is marked as having purchased particular products (using a custom field), you can quickly filter your opportunity lists. Additionally, if you track 'do not contact' status as a custom field on email address records, you can use that field as a filter on opportunity lists as well. The possibilities are endless.
  • [Virtual Attendants/Decision Trees] You can now create outcomes where 'any' condition being true is sufficient. This is useful if a decision needs to be made based on a list of valid options where the action taken would be the same.
  • [Virtual Attendants/Decision Trees] Added a 'message header' condition for mail-based events. This allows several operators: is, is not, contains phrase, does not contain phrase, matches wildcard, does not match wildcard, matches regexp, doesn't match regexp. This should provide much more flexibility for events like mail routing.
  • [Virtual Attendants/Actions] Added a 'move to group' action to mail-based events.
  • [Virtual Attendants/Actions] Added a reusable 'Add Watchers' action. This allows Virtual Attendant behavior to add watchers to any kind of content from any type of event. For example, a group manager can automatically add watchers to new conversations that match particular criteria.
  • [Application/Usability/jQuery/Plugins] Added a new jQuery plugin -- .elastic() -- to allow boundless textboxes that grow as more text is entered. This is far more user-friendly than tiny textboxes with scrollbars.
  • [UI/UX/Aesthetics] Improved the default style on autocomplete results and popup menus.
  • [Virtual Attendants/Actions/Custom Fields] Virtual Attendant behavior can now set all custom field types as actions.
  • [Custom Fields] The 'multi-picklist' custom field type has been removed, since in almost every way the implemented was the same as multi-checkbox, and checkboxes are more user friendly than CMD/CTRL combinations for multiple selection. All multi-picklist custom fields will be automatically converted to multi-checkbox by the upgrade script.
  • [Virtual Attendants/Conditions] Added the ability to create multiple groups of conditions on a single outcome. Each group can use an 'any' or 'all' strategy. For example, a single outcome could check that a sender email address is 'any' of a number of conditions (each with its own operator and value; e.g. matches wildcard, but doesn't contain these words) and that additionally 'all' of another group of conditions are met. This reduces the complexity of Virtual Attendant behavior by removing the requirement to 'nest' outcomes when mixing any/all.
  • [Virtual Attendants/Conditions/Usability] Improved the usability of the Add Condition functionality when creating Outcomes by implementing a menu with a search filter. Now when you add a condition you can type a few letters and quickly select the desired criteria without scrolling in a long list. After making a selection the menu will remain open and re-focus the search box. This allows you to quickly add several conditions with fewer clicks compared to the previous dropdown.
  • [Virtual Attendants/Conditions/Usability] You can now drag/drop conditions when creating an Outcome. You can drag conditions between 'any/all' groups.
  • [Groups/Manage/Inbox Filters] Group Inbox Filters have been removed and replaced with Virtual Attendants. Attendants are far more flexible, allow for far more conditions and actions, are expandable with plugins, can have rules based on more than just inbox delivery, can have branched logic, support and/any, etc. Any group inbox filters that were set up will be automatically converted to Virtual Attendant behavior by the 5.4 update.
  • [Worklists/Mail/Subtotals] Added 'subject' as a subtotal field for ticket worklists.
  • [Devblocks/jQuery] Added the 'hoverIntent' jQuery plugin by Brian Cherne . This improves the UI hover events by watching if the mouse slows down near a target before triggering a hover. Otherwise hover events can be quite annoying if they're instantaneous and trigger when the mouse quickly moves past them on the way to something else.
  • [Abstract Views] Fixed a bug where new views were loading with no columns rather than using View_defaults.
  • [Mail/Open Ticket] Creating a ticket on behalf of the requesters will now use the provided message content as the original message from the customer. Previously the message content was appended as a worker reply. The main reason for this change is to support the new Attendant behaviors which were confounded when there was an instant worker reply that changed the 'last' properties (sender/etc) for these messages.
  • [Plugins/Contexts] Contexts no longer need to provide translations for 'assigned' and 'commented' events. This is now handled automatically by the new Activity Log service.
  • [Plugins/Devblocks] Moved the string utilities (strToPermalink, strToHyperlinks, strPrettyBytes, strPrettyTime) from TemplateManager into DevblocksPlatform. This makes them reusable outside Smarty templates.
  • [Activity Log/Watchers/Notifications/Plugins] Implemented a new Activity Log service which can automatically track activity happening to any record type (e.g. tasks, tickets, addresses, opps). Copies of this activity automatically generate notifications which are sent to any watchers. The primary concepts in the activity log are 'actors' (the subject) and 'targets' (the object), although there is no requirement to follow this pattern. This provides a very simple and efficient way for watchers to follow changes to records of interest without requiring them to set up Attendant behavior or other complicated filters. These notifications can still be configured to send email/SMS/IM/etc. This replaces the previously built-in notifications for new assignments and comments.
  • [Activity Log] Activity log entries can be output in various formats: HTML (markup and hyperlinks), Markdown, email (most important link appended to plaintext), or plaintext (no hyperlinks or markup). This is very useful, as plaintext can be used to generate the summary text of notifications from the activity log, while HTML can be used to provide richer semantic information in the web interface.
  • [Activity Log/Plugins] An 'Activity Log' tab can be added to any page (including those provided by plugins) in a single line with no custom implementation code. This tab can display the activity log from the actor or target perspective. The actor perspective is used on profiles to show everything a particular actor has affected, while the target perspective is down on object records to show all the actors that affected them.
  • [Activity Log/Plugins] The Activity Log provides automatic actor-detection if no actor is provided when logging new activity. This involves detecting whether a change is happening as the result of Attendant behavior, or the current worker session. Activity that is the result of automated behavior is tagged as such to make it easier to find misbehaving business automatic logic. This also means that the '{{actor}}' token can be used in any log entry without needing to provide a variable or URL for it.
  • [Activity Log/Plugins] Activity Log entries can provide any number of hyperlinked tokens in the message. For example, in the log entry "Jeff Standen moved ticket '[ABC-12345-678] Help me' to group 'Support'", hyperlinks can be added to 'Jeff Standen', 'ABC-12345-678' and 'Support' that direct the reader to the worker profile, the ticket profile, and the group profile.
  • [Activity Log/Localization] Activity Log entries can now be provided by the translation system, but care must be take that the {{tokens}} are not translated.
  • [Activity Log/Usability] The Activity Log improves usability contextually from the 'target' perspective by hiding the target token and hyperlink in all log entries. For example, a log entry that says "Jeff Standen commented on task 'This is something we need to do': This is my comment" will display as "Jeff Standen commented on task: This is my comment" when viewed from the task itself. This removes a lot of unnecessary noise (i.e. a link doesn't need to be provided from the record you are currently viewing). When viewing the same log entry from the worker profile it will show the task name and link as well.
  • [Activity Log/Comments] Adding a comment to any record will now automatically generate an Activity Log entry. As often requested prior to 5.4, the content of the comment will be shown in the notification visible to watchers.
  • [Activity Log/Mail] Changing the status of a ticket will now automatically generate an activity log entry that will send a notification to watchers.
  • [Activity Log/Connections/Watchers] Linking two records will now automatically generate an activity log entry that will send a notification to watchers. This is done for both sides of the link.
  • [Activity Log/Watchers] A watching following or unfollowing a record will now automatically generate an activity log entry that will send a notification to other watchers.
  • [Activity Log/Mail] A worker replying to a ticket will now automatically generate an activity log entry that will send a notification to watchers.
  • [Activity Log/Mail] A contact replying to a ticket will now automatically generate an activity log entry that will send a notification to watchers.
  • [Activity Log] Added an 'Activity Log' tab to the display page for: calls, contacts, domains, feed items, opportunities, organizations, servers, tasks, tickets, and time tracking.
  • [Activity Log/Profiles/Worker] Added an 'Activity Log' tab to worker profiles. This shows from 'actor' perspective, so it will be all the activity for that worker across all record types.
  • [Activity Log/Watchers/Notifications] The Activity Log will now send automatic notifications to watchers of either the actor -or- the target. This means if you're watching an address and they send in a new message (as an actor) you will get a notification automatically.
  • [Address Book/Addresses/Profiles] Added a profile page for individual email addresses. This provides a workspace for viewing the activity log, reading/writing comments, and adding links to other records.
  • [Audit Log/Plugins] The 'Audit Log' plugin has been moved out of the official release and into the optional plugin repository. It has been superseded by the Activity Log.
  • [Activity Log/Tasks/Watchers] Watchers are now notified when tasks are completed.
  • [Events/Tasks/Plugins] A new 'dao.task.update' event point can be used by plugins to monitor changes to tasks.
  • [Activity Log/Opportunities/Watchers] Watchers are now notified when the status of opportunities changes: open, closed/won, closed/lost.
  • [Events/Opportunities/Plugins] A new 'dao.crm_opportunity.update' event point can be used by plugins to monitor changes to CRM opportunities.
  • [Address Book/Profiles] Added quick search and a watchers button to the address profile page.
  • [Tasks/Profiles] Added a watchers button to the tasks profile page. Also implemented a menu for quick actions like marking the task completed.
  • [Explorer] The Explorer frame can now show a message as the hyperlink instead of just a URL. This is useful for exploring things like Notifications where the content of the notification isn't represented anywhere in the link for each item.
  • [UI/Usability] The 'signed on as Worker' text in the top right is now a link with a menu. The menu provides shortcuts to: my profile, settings, notifications, virtual attendant, watchlist, history, and sign out. It also saves a lot of screen space in the top right.
  • [Worklists/Subtotals/Usability] Added a hover highlight effect to subtotal options, and you can now click anywhere in a subtotal row without having to click directly on the link.
  • [Worklists/Usability/Filters] You can now quickly reset the list of filters or switch to any preset in a single click from the filter summary above each worklist.
  • [Activity Log/Address Book/Orgs] The Activity Log will now record organization merge events.
  • [Activity Log/Mail] The Activity Log will now record ticket merge events.
  • [Activity Log/Watchers] The Activity Log will now use distinct events if someone else assigns/unassigns a watcher instead of that person following/unfollowing a record on their own. This becomes the first notification that someone sees when they are assigned something by an Attendant, a manager, etc.
  • [Workspaces/Custom Worklists] You can now set 'required' filters on custom worklists from the 'customize' menu. This will create a baseline using filters that are not affected by subtotals and editable filters. Editable filters can be used to sub-filter the worklist, but hitting 'reset' will restore your worklist's baseline rather than clearing all your filters. For example, if you set a required filter of "status=open" on a ticket worklist from the customize menu then there is no way using subtotals or filters to see anything but open tickets. When you 'reset' the editable filters you will see a list of "status=open" tickets with no visible filters applied.
  • [Activity Log/Plugins/Localization] Activity Points can now be defined in the plugin.xml manifest. This allows the localization of the log entry messages and the label for the activity (e.g. Ticket Closed).
  • [Simulator] The simulator can now create sample organizations and tasks in addition to tickets.
  • [Activity Log/Usability] Arbitrary Activity Log worklists now have their own ID and are flagged as ephemeral. This means multiple activity log worklists for the same worker on different browsers or tabs won't interfere with each other. Additionally, they're cleaned up between sessions.
  • [Activity Log/Watchers/Preferences] Each worker can now choose which activities they want to be notified about on watched objects. This can be configured from 'My Settings->Watcher Notifications'. For example, it may not be useful to be notified when other watchers start/stop watching something you're currently watching, or when someone adds/removes links, or when tickets are marked open or 'waiting for reply' (as that happens for every reply, and replies have their own activity log entries).
  • [Database/Installer] Added support for MySQL's InnoDB storage engine in the installer. This is now our preferred choice.
  • [Database/Installer] Added support for PHP's 'mysqli' driver (in addition to the legacy 'mysql' driver).
  • [Tour/Assist Mode] Drastically improved the style and content of the interactive Assist Mode tour that is displayed to new workers. Callouts are now done with jQuery and can be targeted to very specific elements on the page. Added a 'show all' option to display all the callouts for a page at once (if they overlap, hover over one to focus it).
  • [Tour/Assist Mode/Plugins] Any plugin can add content and callouts to the interactive assist mode. Added very flexible options: selectors, tooltip and target corners, and x+y offset for precise but effortless positioning.
  • [Mail/Workflow/Usability] Implemented advanced keyboard shortcuts for the Workflow worklist: (a) select all/none; (*) reset filters; (-) undo last filter; (~) subtotals menu; (`) focus subtotals. By focusing subtotals you can quickly use TAB and ENTER to modify the worklist without using the mouse.
  • [Virtual Attendants/Decision Trees/Usability] You can now have multiple popups open when editing a decision tree on an Attendant. This makes it much easier to condense duplicate outcomes/actions.
  • [Virtual Attendants/Decision Trees/Usability] When you save changes to decision tree nodes, the tree will reload via Ajax without reloading the page or closing any other popups you have have open. This makes it much easier to work with complex behavior.
  • [Performance] Drastically reduced the number of database queries per request by keeping track of which templates are capable of being overridden. Generally this is just the Support Center and other community portals, and none of the internal templates.
  • [Knowledgebase/UI/Aesthetics] Improved the knowledgebase stylesheet.
  • [Knowledgebase/Support Center/Aesthetics] Improved the default stylesheet on Support Center knowledgebase article content.
  • [CHD-2232] [Autocomplete/Choosers/Workers] Disabled workers will no longer show up in autocomplete results for choosers.
  • [CHD-2226] [Time Tracking/Setup] You can create blank time tracking 'activities' in Setup which then become impossible to edit.
  • [CHD-2221] [Choosers/Workers/Autocomplete] Autocomplete will no longer break on worker searches when you enter a space.
  • [Worklists/Usability] Added the workflow keyboard shortcuts to most other single worklists (ticket search, activity, addy book, kb, datacenter, but not workspaces): (a) select all; (*) reset filters; (-) undo last filter; (~) change subtotals; (`) focus subtotals.
  • [Feedback/Watchers] Added watcher filters and subtotals to feedback worklists.
  • [Opportunities/Watchers/Subtotals] Added watcher subtotals to opportunity worklists.
  • [Tasks/Worklists/Subtotals] Added watcher subtotals to task worklists.
  • [Address Book/Addresses/Subtotals/Watchers] Added watcher filters and subtotals to address worklists.
  • [Address Book/Contacts/Subtotals/Watchers] Added watcher filters and subtotals to contact worklists.
  • [Datacenter/Servers/Watchers] Added watchers filter and subtotals to datacenter server worklists.
  • [Datacenter/Domains/Watchers] Added watchers filter and subtotals to datacenter domain worklists.
  • [Knowledgebase/Watchers/Worklists] Added watchers filter and subtotals to knowledgebase article worklists.
  • [Knowledgebase/Usability] Added friendly URLs to the knowledgebase, both for workers and the Support Center. Topics, categories, and article titles will be shown in the URL. For example: /kb/article/52-Archiving_content_in_Amazon_S3_with_the_Storage_se rvice
  • [Activity Log/Plugins] Added the ability to override the 'actor' for the activity log functionality in a more global fashion. This is useful for functionality like the email relay, where each reply may be coming from a different worker, and the activities performed by those replies needs to be recorded as if each individual worker was the actor. This needs to happen whether a session exists, or mail is being downloaded from the /cron.
  • [Attendants/Watchers/Email Relay/Parser] [CHD-985] [CHD-839] You can configure Attendants to relay mail to external worker email addresses. This allows workers to take advantage of many helpdesk features through a standard email client; which is especially useful on mobile phones. This works for new messages in groups (configured by a group manager) as well as new messages on watched conversations (configured by a worker). This replaces the old email gateway functionality, and it can be expanded to work with all object types, not just tickets (e.g. replying to a notification about a task can add a comment and set a due date). A large number of 'tags' are supported that can be inserted into the reply, giving instructions to the helpdesk, which are unseen by the requesters who receive the final message.
  • [Attendants/Watchers/Email Relay/Parser] Implemented several new tags for giving instructions to the helpdesk through a regular email client: #watch (start watching), #unwatch (stop watching), #sig (insert signature), #status (change status), #reopen (set reopen date), #comment (add comment), #noreply (don't broadcast to requesters), #cut (don't relay below this line). See the full details with examples at: http://wiki.cerb5.com/wiki/Email_Relay
  • [Attendants/Watchers/Email Relay/Parser] Workers can now configure custom watcher email notifications. For example, the default watcher email template now sends a direct URL to the ticket; but any other snippet content can also be used. Lines that begin with '##' will be stripped from a reply by the worker from their external email client. It's suggested that you prefix anything with '##' that you wouldn't want a customer to accidentally read (like your helpdesk URL).
  • [Mail/Drafts] [CHD-2183] If you click 'Reply' multiple times on the same ticket, you'll create multiple draft auto-save timers. Additionally, if you 'discard' it won't clear the auto-save timer.
  • [Mail/Reply/Usability] [CHD-694] Added a pop-up warning if navigating away in the middle of writing an email reply on a ticket.
  • [Mail/Quick Compose] [CHD-2233] The quick compose popup now allows you to specify a reopen date for the new conversation.
  • [Mail/Compose/Usability] Added the ability to pass the destination address to the compose form: /tickets/[email protected]
  • [Knowledgebase/Web-API] Attempting to retrieve a KB article via the RestAPI does not work.
  • [Mail/Snippets/Usability] [CHD-2184] When using the snippet tester while replying to a ticket it should use the values from the current ticket.
  • [Snippets/Usability] Made the names of snippet fields more friendly.
  • [Snippets/Group] [CHD-2178] Group custom fields can now be used in snippets.
  • [Virtual Attendants/Group] Group custom fields can now be used in Virtual Attendants.
  • [Snippets/Usability] Added a quick 'insert placeholder' menu to the add snippet popup. This replaces the long dropdown which only allows you to use keyboard shortcuts matching the beginning of the placeholder. You can now do searches that match any part of the placeholder token, and the menu will remain open to make it easier to continue adding tokens with fewer keystrokes.
  • [Knowledgebase/Search] [CHD-2257] Knowledgebase articles will now be instantly search indexed upon creation. This resolves the issue you may add a new article while replying to a ticket and then you're unable to find it using a keyboard search until the search index scheduled job runs.
  • [Mail/Snippets/Compose] [CHD-2228] Added the snippets toolbar to the compose mail page.
  • [Mail/Snippets/Open Ticket] [CHD-2228] Added the snippets toolbar to the Open Ticket page.
  • [Watchers/Virtual Attendants/Relay] The Virtual Attendant will now relay mail copies with the Reply-To header as the proper group or bucket. This is something that the watchers functionality prior to 5.4 never did properly.
  • [Web-API/Feedback] You can now delete feedback entries through the Web-API.
  • [Web-API/Feedback] You can now properly update and search using 'quote_mood' on Feedback entries through the Web-API.
  • [Web-API/Orgs] Implemented delete for organizations through the Web-API.
  • [Web-API/Orgs] Added the rest of the organization fields to search functionality through the Web-API.
  • [Web-API/Tickets/Custom Fields] You can now display and search ticket custom fields with the Web-API.
  • [Web-API/Tasks/Custom Fields] You can now display and search task custom fields with the Web-API.
  • [Web-API/Tasks] Implemented the ability to delete tasks through the Web-API.
  • [Web-API/Addresses/Custom Fields] You can now display and search address custom fields with the Web-API.
  • [Web-API/Comments] Comments are now accessible through the Web-API.
  • [Web-API/Custom Fields] Custom fields are now accessible through the Web-API.
  • [Web-API/Messages] You can now delete individual messages from tickets through the Web-API.
  • [Web-API/Knowledgebase] You can now delete knowledgebase articles through the Web-API.
  • [Web-API/Knowledgebase/Custom Fields] You can now modify and search custom fields on knowledgebase articles through the Web-API.
  • [Web-API/Knowledgebase] You can now manage knowledgebase categories through the Web-API.
  • [Opportunities] [CHD-2273] Creating an opportunity from a profile (e.g. ticket) should auto-link it.
  • [Platform/Plugins/Localization] Provided a "Unidecode" implementation in Devblocks on DevblocksPlatform::strUnidecode(). This takes text in non-Latin-based character sets (e.g. Han, Nihongo, Cyrillic, Greek) and "Romanizes" them. This doesn't affect the actual in messages or articles, it just makes it easier to work with them on functionality like fulltext search indexing and anti-spam decision making.
  • [Mail/Localization/i18n] Email subjects that aren't quoted-printable should now be properly converted to UTF-8 based on the Content-type of the message body.
  • [Mail/Anti-Spam/Localization] Previously, anti-spam decisions were made after removing accents (é : e) and stripping all text that wasn't English alphanumeric (a-z, 0-9). While this handled many Latin-based languages like German, Spanish, Italian, and French, it completely ignored content from languages like Chinese, Japanese, Greek, and Russian. We're now using a much more sophisticated process where we "Unidecode" non-Latin languages into Romanized phonetics. For example, native Russian/Cyrillic characters may be converted into the form "zakhoditie na nash sait" for anti-spam purposes. This doesn't affect the readable content of email messages, it just changes how the software detects patterns between messages.
  • [Search/Localization] [CHD-1980] Previously, search functionality indexed content by removing accents (é : e) and stripping all text that wasn't English alphanumeric (a-z, 0-9). While this handled many Latin-based languages like German, Spanish, Italian, and French, it completely ignored content from languages like Chinese, Japanese, Greek, and Russian. We're now using a much more sophisticated process where we "Unidecode" non-Latin languages into Romanized phonetics. For example, native Chinese/Han characters may be converted into the form "shen zhen" for search purposes. This doesn't affect the readable content of email messages. You may now fulltext search interchangeably using either native characters or the Romanized version, and you'll get results in either format. Note: You will probably need to reindex your search content to take advantage of these improvements.

New in Cerberus Helpdesk 5.3.3 (Mar 8, 2011)

  • [Time Tracking/Web-API] [CHD-2089] The Web-API time tracking interface currently doesn't return the activity_id.
  • [Mail/Messages/Search] [CHD-2110] Ability to search content from Messages tab.
  • [Mail] [CHD-2003] The "When would you like to resume this conversation?" option is missing from the peek popup of tickets.
  • [Platform/Devblocks] Upgraded the Smarty template engine dependency from 3.0rc1 to 3.0rc4
  • [Platform/Devblocks] Upgraded jQuery dependency from 1.4.2 to 1.4.4
  • [Platform/Devblocks] Upgraded jQuery UI dependency from 1.8.2 to 1.8.7 (this should fix IE9 issues when not running in compatibility mode).
  • [Autocomplete/Contexts/UI] Added a context-aware 'autocomplete' service that can be used by any UI functionality.
  • [Choosers/Contexts] [CHD-2002] [CHD-2092] The 'chooser' widget now has the option to provide an autocomplete box before the button. You can enter a couple characters from your desired record (e.g. worker, address, org) to add it to the list, which saves a lot of needless clicks compared to opening the chooser search popup (especially when you already know what you're looking for).
  • [Choosers/Workers] All 'worker' choosers now provide an autocomplete box in addition to the search popup (e.g. owners).
  • [Choosers] All address, organization, and group choosers now provide an autocomplete box in addition to the search popup.
  • [Call Logging/Plugins] [CHD-806] Added a new 'Call Logging' plugin. This can be used to track incoming phone calls, associate them to registered contacts or organizations, and assign them to the appropriate worker for a return call. This plugin can also be used to capture outgoing calls for recording contact with opportunities across multiple channels (improving the efficiency and accountability of sales processes). Call records have all the functionality you've come to expect from Cerb: views, worklists, custom fields, peek, context links, comments, etc.
  • [Security] Implemented auto-escaping for all template variables. This ensures that any user-provided content will always be displayed as markup text instead of being rendered as HTML. This is superior to the previous solution of expecting official and third-party developers to explicitly use the 'escape' modifier in Smarty for every variable; e.g. {$var|escape}. If there are situations where your plugin functionality depends on rendering HTML from template variables, use the 'nofilter' flag; e.g. {$var nofilter}.
  • [Attachments/Contexts/Plugins/Platform] Refactored existing attachments functionality. Attachments can now be added to any context (e.g. messages, comments). Any plugin-provided objects can provide attachment functionality with very little implementation work. The same attachment can be linked to multiple records, which is more efficient in terms of storage. Browsing attachments from Setup will display links (filecontext). When an attachment has no links pointing to it, and its older than 24 hours, it will be removed by the maintenance scheduled task.
  • [Contexts/ACL] Contexts now have a formal way to specify access control for viewing particular objects. For example, the 'ticket' or 'opportunity' contexts can decide if a worker is allowed to view a particular record based on group memberships, etc.
  • [Choosers/Attachments] Added a new 'file' chooser which can be used to upload files through Ajax (without leaving the current page) even when displaying 'peek' popups.
  • [Comments/Attachments] Added attachment functionality to comments since they are already ubiquitous, which allows files to be attached to orgs/opps/etc.
  • [Attachments/Comments] [CHD-464] Allow attachments on comments
  • [Attachments/Address Book] [CHD-594] Allow attachments on organizations
  • [Bulk Update/Autocomplete] Added autocomplete choosers for the 'Owner' add/remove field on the appropriate bulk update popups.
  • [Address Book/Orgs/Owners] Owners can be assigned to Organization records.
  • [Mail/Display] [CHD-2108] When there are pending drafts on a ticket, a nasty error will be displayed (if display_errors is on)
  • [Address Book] [CHD-1767] Working with Contacts/Companies: Add notes to contacts and attachments to organizations.
  • [Worklists/Customize] [CHD-1267] When customizing a worklist you can now drag/drop columns to reorder them rather than having to clear and re-enter everything.
  • [Mail] [CHD-287] The ability to delete individual messages on a ticket.
  • [Time Tracking] [CHD-2078] Add 'status' to the bulk update popup for Time Tracking entries.
  • [Worklists/UI/Usability] [CHD-1048] Dates in worklist columns will now be displayed in full format (e.g. "5 months"), and dates in the past will be prefixed with a minus sign ("-") rather than the trailing word "ago" (e.g. "-90 days"). This consistency demonstrates how relative dates should be entered into date text boxes (i.e. "-5mo" doesn't work when entered as a relative date).
  • [Mail/Display] [CHD-1472] Show the 'From:' header in the reply box for spot checking.
  • [Tasks] [CHD-2042] Add a quick 'Completed' button to the task display page.
  • [Mail/Localization] The text in the ticket peek popup is now translated.
  • [Mail/Peek] [CHD-948] Add next/prev links to peek to navigate other messages within a previewed ticket.
  • [Search/Presets] [CHD-2056] Search presets should remember sort column and order (ascending/descending).
  • [Snippets/Custom Fields] [CHD-2046] Added custom fields to snippets for easier categorization.
  • [Reports] Updated jqPlot dependency to 0.9.7r635
  • [Platform/Snippets] Updated Twig dependency from 0.9.6 to 1.0-beta1
  • [Platform] Updated Smarty Template Engine dependency from 3.0-rc4 to 3.0.6-release.
  • [Platform/Maint] [CHD-2114] Orphaned extension properties are not being cleaned up from the database when deleting a plugin.
  • [Platform/Plugins] DevblocksPlatform::parseRss() will now properly use the 'updated' field as the pubDate when dealing with Atom feeds.
  • [Extras/Translations/i18n] The available language packs have been added to the /install/extras/translations/ directory (previously they were hidden in another GitHub repository).
  • [Feed Reader/Plugins] [CHD-805] Added a Feed Reader plugin capable of subscribing to RSS/Atom feeds and importing items. Items can be managed with all the familiar Cerb5 tools: custom fields, owners, worklists, presets, bulk update, peek, context links, comments, etc. This plugin can be used for various processes through RSS: vendor announcements, moderating corporate blog comments, scanning Twitter for keyword mentions, auditing wiki changes, reviewing new bug reports, reading new forum posts, scanning Google Blog search for keyword mentions, etc.
  • [Knowledgebase] [CHD-450] Allow attachments in knowledgebase articles.
  • [Workspaces] Workspaces are now a formal database object. Previously they were just unique 'tags' on worklists.
  • [Workspaces] You can now drag worklists around to reorder them when editing a workspace.
  • [Workspaces/Contexts/Plugins] Contexts are now used to add worklists to workspaces. You no longer need to create a workspace 'source' plugin.
  • [Workspaces] Workspaces are no longer confined to 'Home' -- they can now be added to the tab lists on any page: home, mail, activity, address book, datacenter, kb, preferences, setup, etc. This allows you to move your workspaces closer to the appropriate data. A single workspace can be displayed in multiple locations. To add a new workspace to your current page, click the '+' tab.
  • [Workspaces/Usability] You can now add multiple new worklists directly from an active workspace.
  • [Workspaces] [CHD-1866] You can now customize the order of workspace tabs.
  • [Mail/Messages/Workspaces] [CHD-2128] Add 'copy' to message worklists (e.g. for the ability to create a 'Sent' tab).
  • [Address Book/Workspaces] Added 'copy' to contact person worklists.
  • [Mail/Snippets/Workspaces] Added 'copy' to snippet worklists.
  • [Datacenter/Workspaces] Added 'copy' to domain worklists.
  • [Datacenter/Workspaces] Added 'copy' to server worklists.
  • [Knowledgebase/Workspaces] Added 'copy' to knowledgebase article worklists.
  • [Activity] [CHD-2118] Activity will now properly remember the previously selected tab when returning to the page, including plugin-provided tabs and workspaces.
  • [Home] Home will now properly remember the previously selected tab when returning to the page, including plugin-provided tabs and workspaces.
  • [Mail] Mail will now properly remember the previously selected tab when returning to the page, including plugin-provided tabs and workspaces.
  • [Address Book] Address Book will now properly remember the previously selected tab when returning to the page, including plugin-provided tabs and workspaces.
  • [Plugins/Address Book] Added the 'cerberusweb.contacts.tab' extension point for adding new tabs to the Address Book through plugins.
  • [Datacenter] Datacenter will now properly remember the previously selected tab when returning to the page, including plugin-provided tabs and workspaces.
  • [Knowledgebase] Knowledgebase will now properly remember the previously selected tab when returning to the page, including plugin-provided tabs and workspaces.
  • [My Account] My Account will now properly remember the previously selected tab when returning to the page, including plugin-provided tabs and workspaces.
  • [Setup] Setup will now properly remember the previously selected tab when returning to the page, including plugin-provided tabs and workspaces.
  • [Autocomplete/Usability] [CHD-2092] The autocomplete input boxes should automatically highlight the first option in the dropdown menu as you type so you can hit ENTER to quickly continue typing. This also makes it more clear that you can use the arrow keys for navigation (compared to hitting the down arrow key to start things off).
  • [Translations/Dutch] Updated the Dutch translation (Much thanks to Niek @ Oxilion.nl!)
  • [Explorer] Explore URLs now require the recipient to be logged in instead of giving vague errors. If not logged in, the worker will be forwarded to the URL after completing the login process.
  • [Feed Reader/Explorer] The peek popup for feed items can now be displayed while in 'explore' mode. This allows you to comment, change properties, and add owners while viewing external URLs (e.g. wiki, forums, issue tracking).
  • [Feed Reader/Explorer] Added a quick Close/Reopen button to the feed reader 'explore' toolbar.
  • [Worklists/Explore] Moved the 'Explore' button to a more obvious location, from the top-right of the blue bar to the view toolbar below the results. Added a 'play' icon which gives a better sense of the slideshow nature of Explore mode.
  • [Performance/Explore] Made improvements to the performance of Explore mode.
  • [Plugins/Contexts] Implemented Extension_DevblocksContext::getAll($as_instances=f alse) to make it easier to pull a list of possible contexts for various functionality. The method accepts one argument: whether or not to return the results as extension instances (true) or manifests (default/false).
  • [Setup/Settings] [CHD-1777] [CHD-2136] [CHD-2137] Fixed an issue where the default settings for 'Authorized IPs', 'Allow Attachments', and 'Max Attachment Size' were not being displayed when editing settings in Setup for the first time.
  • [CHD-2113] [Mail/Group] An auto-close response is always being sent if there is content even when the option is disabled for a Group.
  • [Setup/Support Center] [CHD-2140] All the new templates are now available for editing with the Custom Templates feature of the Support Center.
  • [Feed Reader] [CHD-1106] Managed feed URLs can now use the 'feed://' scheme.
  • [Choosers/Search/Usability] The worker and group choosers will now display an autocomplete box when used inside search filters (and worklist customize).
  • [Security/Custom Fields] [CHD-687] Ticket worklist 'customize' can display custom field values from non-authorized groups.
  • [Platform/Smarty/URLs] [CHD-2111] Improved the 'devblocks_hyperlinks' Smarty template modifier so that it doesn't include common trailing punctuation in the hyperlink (e.g. http://example.com/.). The new pattern matching should be less strict, as long as an http/https scheme prefixes the URL in plaintext.
  • [Mail/Messages/Search] [CHD-2139] An error is displayed if you search message content before you've indexed it with /cron/cron.search
  • [Plugins/Contexts/Notifications] [CHD-2145] Added Context_Notification
  • [Worklists/Usability] When using 'copy' on a worklist the page will no longer be redirected to a different location. This allows you to copy multiple worklists from the same page with less back-and-forth hassle.
  • [Plugins/Audit Log] [CHD-1419] Allow plugins to provide translation strings for audit log events.
  • [Address Book/Worklists/Explore] Implemented 'explore' mode for registered contact worklists.
  • [Datacenter/Worklists/Explore] Implemented 'explore' mode for server and domain worklists.
  • [Mail/Worklists/Explore] Implemented 'explore' mode for message worklists.
  • [Plugins/CRM/Opps] Added an extension point for creating new tabs on opportunity records.
  • [Drafts] [CHD-1865] Resuming a draft doesn't restore the 'To:' line if it was never edited from defaults.
  • [Mail/Usability] Added a keyboard shortcut (e) for 'explore' to Mail:Workflow and Mail:Search.
  • [Plugins/Events/Comments] [CHD-1999] Added a new event point for 'comment.create', to process events when new comments are created on any record.
  • [RSS Reader/Explore] [CHD-942] Allow tasks to be added while viewing feed items in explore mode.
  • [Feedback/Autocomplete] Added autocomplete 'address' entry to the feedback popup.
  • [RSS Reader/Feedback/Explore] [CHD-943] Allow feedback to be captured while viewing items in the RSS Reader plugin using explore mode.
  • [Mail/Workflow/Usability] [CHD-2065] "worker" and "status" should not be options in the Workflow subtotals sidebar.
  • [Mail/Workflow/Usability] When focused inside a group in Workflow, an "all groups" link will now appear to reset the filter in the sidebar without having to manually change the filters.
  • [Mail/Workflow/Usability] When clicking on a bucket in Workflow the subtotals sidebar will now focus on that group and all its buckets, rather than displaying just a single bucket. This will save a lot of extraneous clicks.
  • [Plugins/Comments] Added DAO_Comment::triggerCommentNotifications() to make it easier to fire context-driven notifications about new comments using the 'notify workers' pattern.
  • [Call Logging/Comments] Workers can now be notified when leaving new comments from call logging popups.
  • [Feed Reader/Comments] Workers can now be notified when leaving new comments from feed reader popups.
  • [CRM/Opportunities/Comments] Comments can now be added to existing opportunities from peek. Workers can now be notified when leaving new comments from peek popups.
  • [Tasks/Comments] Comments can now be added to existing tasks from peek. Workers can now be notified when leaving new comments from task popups.
  • [Time Tracking/Comments] Comments can be added to existing time slips from peek. Workers can be notified when leaving new comments from time tracking popups.
  • [Tickets/Comments] Comments can now be viewed and added to tickets from peek. Workers can now be notified when leaving new comments from ticket popups.
  • [Address Book/Organizations/Comments] Comments can now be viewed and added on organizations from peek. Workers can now be notified when leaving new comments from org popups.
  • [Home/Notifications/My Work] The 'home' page has been disbanded, as the recent improvements have made it unnecessary. 'Notifications' and 'My Work' have moved to the 'Preferences' page as a temporary placeholder until the addition of worker profiles in a future update. The workspaces previously shown on 'Home' can be moved to any other page -- any of which would likely be more appropriate.
  • [Comments/Notifications] [CHD-2103] The comment popup will no longer list the current worker as one of the defaults on the 'notify these workers' list. This saves the extra click of removing yourself each time you comment.

New in Cerberus Helpdesk 5.3.2 (Jan 27, 2011)

  • This maintenance release includes nine minor fixes and usability tweaks from community feedback.
  • Snippets can be inserted into a reply using an auto-complete rather than having to open the chooser.
  • New snippets can be created while replying to a ticket without leaving the page.
  • A couple of bugs in the Support Center related to the Knowledgebase were fixed.
  • A user-friendly 404 'Not Found' page is now displayed when requesting invalid URLs.

New in Cerberus Helpdesk 5.3.1 (Jan 24, 2011)

  • This maintenance release includes 14 fixes and usability tweaks.

New in Cerberus Helpdesk 5.3.0 (Jan 18, 2011)

  • Workspaces are no longer confined to 'Home' -- they can now be added to the tab lists on any page: home, mail, activity, address book, datacenter, kb, preferences, setup, etc. This allows you to move your workspaces closer to the appropriate data. A single workspace can be displayed in multiple locations. To add a new workspace to your current page, click the '+' tab.
  • [CHD-1866] You can now customize the order of workspace tabs.
  • [CHD-1267] When customizing a worklist you can now drag/drop columns to reorder them rather than having to clear and re-enter everything.
  • [CHD-1048] Dates in worklist columns will now be displayed in full format (e.g. "5 months"), and dates in the past will be suffixed with the word "ago" (e.g. "90 days ago"). This consistency demonstrates how relative dates should be entered into date text boxes (i.e. "5mo" doesn't work when entered as a relative date).
  • [CHD-2056] Search presets should remember sort column and order (ascending/descending).
  • Added autocomplete choosers for the 'Owner' add/remove field on the appropriate bulk update popups.
  • You can now add multiple new worklists directly from an active workspace.
  • [CHD-2128] Added 'copy' to worklists that were missing it: messages, registered contacts, snippets, domains, servers, and knowledgebase articles.
  • Moved the 'Explore' button to a more obvious location, from the top-right of the blue bar to the view toolbar below the results. Added a 'play' icon which gives a better sense of the slideshow nature of Explore mode.
  • Made improvements to the performance of Explore mode.
  • When using 'copy' on a worklist the page will no longer be redirected to a different location. This allows you to copy multiple worklists from the same page with less back-and-forth hassle.
  • Implemented 'explore' mode for more worklists: messages, contacts, servers, domains, and opportunities.
  • The 'home' page has been disbanded, as the recent improvements have made it unnecessary. 'Notifications' and 'My Work' have moved to the 'Preferences' page as a temporary placeholder until the addition of worker profiles in a future update. The workspaces previously shown on 'Home' can be moved to any other page -- any of which would likely be more appropriate.
  • [CHD-806] Added a new 'Call Logging' plugin. This can be used to track incoming phone calls, associate them to registered contacts or organizations, and assign them to the appropriate worker for a return call. This plugin can also be used to capture outgoing calls for recording contact with opportunities across multiple channels (improving the efficiency and accountability of sales processes). Call records have all the functionality you've come to expect from Cerb: views, worklists, custom fields, peek, context links, comments, etc.
  • Workers can now be notified when leaving new comments from call logging popups.
  • [CHD-805] Added a Feed Reader plugin capable of subscribing to RSS/Atom feeds and importing items. Items can be managed with all the familiar Cerb5 tools: custom fields, owners, worklists, presets, bulk update, peek, context links, comments, etc. This plugin can be used for various processes through RSS: vendor announcements, moderating corporate blog comments, scanning Twitter for keyword mentions, auditing wiki changes, reviewing new bug reports, reading new forum posts, scanning Google Blog search for keyword mentions, etc.
  • The peek popup for feed items can now be displayed while in 'explore' mode. This allows you to comment, change properties, and add owners while viewing external URLs (e.g. wiki, forums, issue tracking).
  • Added a quick Close/Reopen button to the feed reader 'explore' toolbar.
  • [CHD-942] Allow tasks to be added while viewing feed items in explore mode.
  • [CHD-943] Allow feedback to be captured while viewing items in the RSS Reader plugin using explore mode.
  • Workers can now be notified when leaving new comments from feed reader popups.
  • * [CHD-2002] [CHD-2092] The 'chooser' widget now has the option to provide an autocomplete box before the button. You can enter a couple characters from your desired record (e.g. worker, address, org) to add it to the list, which saves a lot of needless clicks compared to opening the chooser search popup (especially when you already know what you're looking for).
  • All 'worker' choosers now provide an autocomplete box in addition to the search popup (e.g. owners).
  • All address, organization, and group choosers now provide an autocomplete box in addition to the search popup.
  • Added a new 'file' chooser which can be used to upload files through Ajax (without leaving the current page) even when displaying 'peek' popups.
  • The worker and group choosers will now display an autocomplete box when used inside search filters (and worklist customize).
  • [CHD-464] Added attachment functionality to comments since they are already ubiquitous, which allows files to be attached to orgs/opps/etc.
  • [CHD-594] Allow attachments on organizations
  • [CHD-2065] "worker" and "status" should not be options in the Workflow subtotals sidebar.
  • When focused inside a group in Workflow, an "all groups" link will now appear to reset the filter in the sidebar without having to manually change the filters.
  • When clicking on a bucket in Workflow the subtotals sidebar will now focus on that group and all its buckets, rather than displaying just a single bucket. This will save a lot of extraneous clicks.
  • [CHD-948] Add next/prev links to peek to navigate other messages within a previewed ticket.
  • [CHD-287] The ability to delete individual messages on a ticket.
  • [CHD-2110] Ability to search content from Messages tab.
  • [CHD-2003] The "When would you like to resume this conversation?" option is missing from the peek popup of tickets.
  • [CHD-1472] Show the 'From:' header in the reply box for spot checking.
  • [CHD-2108] When there are pending drafts on a ticket, a nasty error will be displayed (if display_errors is on)
  • The text in the ticket peek popup is now translated.
  • Comments can now be viewed and added to tickets from peek. Workers can now be notified when leaving new comments from ticket popups.
  • [Usability] [CHD-2078] Add 'status' to the bulk update popup for Time Tracking entries.
  • [Web-API] [CHD-2089] The Web-API time tracking interface currently doesn't return the activity_id.
  • Comments can be added to existing time slips from peek. Workers can be notified when leaving new comments from time tracking popups.
  • [CHD-2042] Add a quick 'Completed' button to the task display page.
  • Comments can now be added to existing tasks from peek. Workers can now be notified when leaving new comments from task popups.
  • Comments can now be added to existing opportunities from peek. Workers can now be notified when leaving new comments from peek popups.
  • Owners can be assigned to Organization records.
  • [CHD-1767] Working with Contacts/Companies: Add notes to contacts and attachments to organizations.
  • Comments can now be viewed and added on organizations from peek. Workers can now be notified when leaving new comments from org popups.
  • [CHD-450] Allow attachments in knowledgebase articles, both in the worker GUI and the Support Center.
  • [CHD-2046] Added custom fields to snippets for easier categorization.
  • [CHD-2140] All the new templates are now available for editing with the Custom Templates feature of the Support Center.
  • [Platform/Tabs] [CHD-2118] All tab lists will now properly remember the previously selected tab when returning to the page, including plugin-provided tabs and workspaces. This functionality was revamped on: activity, home, mail, address book, datacenter, knowledgebase, my account, and setup.
  • [Autocomplete/Usability] [CHD-2092] The autocomplete input boxes should automatically highlight the first option in the dropdown menu as you type so you can hit ENTER to quickly continue typing. This also makes it more clear that you can use the arrow keys for navigation (compared to hitting the down arrow key to start things off).
  • [Drafts] [CHD-1865] Resuming a draft doesn't restore the 'To:' line if it was never edited from defaults.
  • [Mail/Usability] Added a keyboard shortcut (e) for 'explore' to Mail:Workflow and Mail:Search.
  • [Comments/Notifications] [CHD-2103] The comment popup will no longer list the current worker as one of the defaults on the 'notify these workers' list. This saves the extra click of removing yourself each time you comment.
  • Implemented auto-escaping for all template variables. This ensures that any user-provided content will always be displayed as markup text instead of being rendered as HTML. This is superior to the previous solution of expecting official and third-party developers to explicitly use the 'escape' modifier in Smarty for every variable; e.g. {$var|escape}. If there are situations where your plugin functionality depends on rendering HTML from template variables, use the 'nofilter' flag; e.g. {$var nofilter}.
  • [CHD-687] Ticket worklist 'customize' can display custom field values from non-authorized groups.
  • [Extras/Translations/i18n] The available language packs have been added to the /install/extras/translations/ directory (previously they were hidden in another GitHub repository).
  • [Translations/Dutch] Updated the Dutch translation (Much thanks to Niek @ Oxilion.nl!)
  • [Translations/German] Updated the German translation (Much thanks to yaqwer on the Cerb5 forums)
  • Upgraded Smarty Template Engine dependency from 3.0-rc1 to 3.0.6-release.
  • Upgraded jQuery dependency from 1.4.2 to 1.4.4
  • Upgraded jQuery UI dependency from 1.8.2 to 1.8.7 (this should fix IE9 issues when not running in compatibility mode).
  • Upgraded jqPlot dependency to 0.9.7r635
  • Upgraded Twig dependency from 0.9.6 to 1.0-beta1
  • [Contexts/Autocomplete] Added a context-aware 'autocomplete' service that can be used by any UI functionality.
  • [Contexts/ACL] Contexts now have a formal way to specify access control for viewing particular objects. For example, the 'ticket' or 'opportunity' contexts can decide if a worker is allowed to view a particular record based on group memberships, etc.
  • [Contexts/Attachments] Refactored existing attachments functionality. Attachments can now be added to any context (e.g. messages, comments). Any plugin-provided objects can provide attachment functionality with very little implementation work. The same attachment can be linked to multiple records, which is more efficient in terms of storage. Browsing attachments from Setup will display links (filecontext). When an attachment has no links pointing to it, and it's older than 24 hours, it will be removed by the maintenance scheduled task.
  • [Plugins/Address Book] Added the 'cerberusweb.contacts.tab' extension point for adding new tabs to the Address Book through plugins.
  • [Workspaces] Workspaces are now a formal database object. Previously they were just unique 'tags' on worklists.
  • [Contexts/Workspaces] Contexts are now used to add worklists to workspaces. You no longer need to create a workspace 'source' plugin.
  • [Plugins/Contexts] Implemented Extension_DevblocksContext::getAll($as_instances=false) to make it easier to pull a list of possible contexts for various functionality. The method accepts one argument: whether or not to return the results as extension instances (true) or manifests (default/false).
  • [Platform/Smarty/URLs] [CHD-2111] Improved the 'devblocks_hyperlinks' Smarty template modifier so that it doesn't include common trailing punctuation in the hyperlink (e.g. http://example.com/.). The new pattern matching should be less strict, as long as an http/https scheme prefixes the URL in plaintext.
  • [Plugins/Contexts/Notifications] [CHD-2145] Added Context_Notification
  • [Plugins/Events/Comments] [CHD-1999] Added a new event point for 'comment.create', to process events when new comments are created on any record.
  • [Plugins/Comments] Added DAO_Comment::triggerCommentNotifications() to make it easier to fire context-driven notifications about new comments using the 'notify workers' pattern.

New in Cerberus Helpdesk 5.2.1 (Dec 8, 2010)

  • [Gravatar] [CHD-2079] Warnings in SSL mode about unsecure images.
  • [Devblocks/Smarty] [CHD-2081] Smarty in IIS attempts to write cache filenames with the ':' template delimeter. We'll submit our patch to the Smarty team.
  • [OpenID] [CHD-2080] CURLOPT_FOLLOWLOCATION error when PHP is in safe_mode or using open_basedir
  • [Installer] [CHD-2086] Add autocomplete=off to Installer password form, too
  • [Address Book] [CHD-2084] Hid the 'Add' button on the Registered Contacts tab in the Address Book. Contacts can be added through the Support Center.
  • [Address Book] [CHD-2077] Hid the 'bulk update' button on Registered Contact worklists. This will be displayed against when it's fully implemented.
  • [Choosers] [CHD-2087] Clicking directly on the text in a chooser row will now properly mark/unmark the checkbox.
  • [Mail/Display] [CHD-2090] Using the 'o' shortcut to create comments from Display Ticket should no longer inject an 'o' into the comment textbox in browsers where this behavior was happening.
  • [Ticket/Audit Log] [CHD-2095] Added translatable text to the Audit Log for the O/R/W 'last action' values. These are 'Ticket opened', 'Recipient replied', and 'Worker replied' respectively.
  • [Platform] [CHD-2044] Converting HTML messages into plaintext will now properly handle and syntax from XHTML.
  • [UI/UX/Internet Explorer] Interface fixes for Internet Explorer 7/8/9. Added an IE-specific stylesheet for overrides.
  • [Datacenter] [CHD-2053] Adding a comment notification on servers or domains leads to a blank notification.

New in Cerberus Helpdesk 5.2.0 (Nov 10, 2010)

  • [Datacenter] Added an optional 'Datacenter' plugin which provides the ability to manage 'server' objects as a special form of asset tracking. You can add custom fields to track business-specific information per server (datacenter, monthly cost, OS, hostname, etc). While this has some value alone, the real benefit comes from the plugins that can extend the server concept: service monitoring, website management, SaaS management, etc. This plugin adds a 'datacenter' option to the global navigation menu.
  • [Datacenter/Domains] Added an optional 'Datacenter: Domains' plugin which adds the ability to create website records and relate them to server objects. This plugin can be used to manage corporate sites and properties, or it can provide an easy way for webhosts and SaaS providers to manage deployed sites. Custom fields can be used to track any kind of information on these records. Multiple customer contacts can be associated with a single site. Broadcast can be used on any list of sites; for example: you can easily let a list of affected customers know about maintenance, or you can pitch upsell services to the right segments of your customer base. Broadcast has access to all the fields set on customers, sites, servers, etc. This plugin adds a 'Sites' tab to the Datacenter page, and it also provides a 'Sites' tab on each server display page. It also adds a display page for each site where you can associate links and add comments. This provides a good extension point for automation, and it also brings more information in that you may want to expose to the Support Center portal.
  • [SDK] Added an SDK to /install/extras/sdk. This includes full examples of most extension points in Cerb5 (e.g. tabs, pages, scheduled tasks, custom fields, etc) that you can copy into your new plugins as needed. There's also a template for plugin.xml and strings.xml which should make creating new plugins easier. You'll also find devblocks-dao.php, which automatically generates the DAO_*/Model_*/SearchFields_*/View_classes for your plugins -- significantly reducing the development time for new ideas.
  • [Devblocks/Platform/OpenID] Added the LightOpenID library to Devblocks to simplify future OpenID integration.
  • [Datacenter/Sites/Domains] Renamed the Sites plugin and context to Domains to remove confusion with 'sites' also meaning 'locations'.
  • [Devblocks/Platform/OpenID] Removed LightOpenID and implemented DevblocksPlatform::getOpenIDService(), our own implementation.
  • [Support Center] Spun the Support Center off into its own plugin (cerberusweb.support_center) to make room for alternative community portals.
  • [Style/UI/UX] Added CSS styles for FIELDSET/LEGEND tags, which organize form content in a more aesthetically pleasing manner.
  • [Platform] Improved the OpenID consumer implementation in Devblocks: max redirects; detection of XRDS redirect to itself; multiple HTTP header blocks; provider delegation from custom domains; normalized URLs; AX/SREG attribute extension support.
  • [OpenID/Plugins] Added a new OpenID plugin that allows workers to associate OpenID identities with their account and then log in using them. OpenID is very interesting because it provides a viable challenge to the tired username/password authentication scheme for web applications; and instead you're able to choose from decentralized providers to maintain a single identity (and credentials) across multiple applications. OpenID Providers (OP) can use multiple factor authentication (infocards, biometrics, client certificates, phone-to-verify, one-time-password (OTP) devices, etc). As a bonus, if you have an account at several large companies (e.g. Google, Yahoo, AOL) then you already have an OpenID; however, more specialized providers offer more options -- (e.g. Verisign PIP, MyOpenID, etc).
  • [Update] Fixed a potential bug in the /update process where a patch can clear the flag that marks that the patcher is current.
  • [Preferences/UI/UX] Improved the look & feel of the My Account pages.
  • [UI/UX] Improved the look & feel throughout the interface.
  • [Login/Platform] Added a 'switcher' feature to the login form which allows each login extension to render a link (OpenID, LDAP, password, etc). The preference is saved in a long-term cookie.
  • [Style/UI/UX] Added 'input icons' to the Cerb5 stylesheet. These render a friendly icon inside text input boxes to give users a hint of the expected data. These can simply be added as classes: input_color, input_date, input_location, input_email, input_money, input_number, input_openid, input_password, input_percent, input_phone, input_search, input_tags, input_url.
  • [UI/UX/Bulk Update] Improved usability on all the bulk update popups.
  • [Platform/Views/Plugins] Views are now capable of providing a random sample of worklist rows to any functionality that requests it. This will allow for a lot of interesting functionality: A/B testing with Broadcast, distributed assignment of work, etc.
  • [Platform/SDK] Updated extras/sdk/devblocks-dao.php to generate View::getDataSample() and DAO::getSearchQueryComponents().
  • [Platform/Plugins] Converted all the 'file:' template paths to 'devblocks:example.plugin::' paths. This makes plugins templates a lot more flexible, and allows plugins to safely share templates when renderering each others content (especially from cerberusweb.core) without being concerned about the filesystem paths changing.
  • [UI/UX/Style] Improved the style for page submenus. Improved the knowledgebase article display page (no more IFRAME scrollbars when displaying articles), and the organization display page.
  • [Portals/Support Center] Improved the Community Portal 'index.php' proxy to parse headers before displaying content, and redirect properly in the event of a 'Location:' header. This allows various functionality for community portals -- like the OpenID authentication handshake.
  • [Support Center/Address Book] Added a Contact/Person context to the address book. A contact is an individual with a list of verified email addresses (and each address may be associated with a different organization). Contacts are now also the accounts linked to the Support Center, meaning that a single public login can now be associated with multiple email addresses; this removes the annoying requirement of a new account per email address. Addresses that have previously registered with the Support Center will be automatically migrated to a contact record with their existing password.
  • [Support Center/Security] Support Center account passwords are now properly 'salted' in the database.
  • [UI/UX/CSS] Improved the look and feel of the global navigation menu.
  • [Platform/Plugins/Custom Fields/Contexts] Refactored the custom fields functionality to use 'contexts' rather than 'custom field source' extensions. This makes it easier for any plugin-contributed objects to automatically benefit from custom field functionality. An update patch will migrate any existing custom fields + values to the new format.
  • [Address Book/Orgs] Removed the redundant 'Properties' tab from Org->Display since all the same fields can be modified through the 'edit' peek popup.
  • [Support Center] Improved the look & feel aesthetics of the Support Center. Modules navigation is now presented as tabs across the top of the page, rather than forcing use of the left sidebar 'main menu'. This removes the need for each module to provide an icon, and it allows the full width to be used by each extension. There is a new login page (also moved out of the sidebar) that can accommodate more interesting authentication processes like OpenID. The Ticket History search feature has moved into its sidebar so it's accessible from related functionality (e.g. display ticket, search results). Added a 'user_styles.css.tpl' template which allows easier CSS overrides without modifying a theme's stylesheet directly. Changed the 'Open Ticket' label to 'Contact us'.
  • [Support Center] Contacts may have multiple email addresses associated. The fields and custom fields of each address/org can now be modified from My Account.
  • [Support Center/Account] Added a sidebar to the 'My Account' module which partitions the various settings for better usability and extensibility.
  • [Support Center/OpenID] OpenID is now an available login extension for Support Center portals.
  • [Support Center] Account registration and recovery is now handled by the enabled login extension per portal. This provides much more flexibility when integrating Support Centers with user account data from another datastore -- such as billing, forums, LDAP, single signon, etc. Previously, registration was handled by its own module, which forced the email/password paradigm. Now a custom login extension could automatically create an SC account using external data, without end-user intervention. Account recovery (i.e. "forgot password") can now be handled appropriately depending on the authorization credentials; for example, the OpenID login extension doesn't involve account passwords at all, so account recovery involves changing the OpenID associated with the account. When user data is being pulled from a source like forums/wiki/billing, account recovery link can simply involve redirecting the user to the appropriate 'forgot password' URL for an external app.
  • [Platform/Confirmation] Added a reusable confirmation service that allows various functionality to generate a confirmation code that is later redeemed (such as verifying an email address during account registration or recovery). Arbitrary data can be stored along with the pending confirmation to be restored on redemption; for example, in the Support Center, confirmations include the contact's email address so it can be compared along with the code before continuing.
  • [OpenID/Contacts] Multiple OpenIDs can be associated to Contact Persons.
  • [Support Center/Account] Added the ability for contacts to delete their own Support Center account. This releases assigned email addresses and OpenIDs, making it easier to combine multiple fragmented accounts that were previously created for individual email addresses.
  • [Support Center/History] The open/closed ticket history in the Support Center has been combined into a single list. The last sender is now displayed as a column, and icons have been added to clarify 'waiting for reply', 'needs reply', and 'closed'.
  • [Support Center/History] The ticket history now displays conversations based on requesters rather than the initial sender -- so the same ticket may show up in the portal for each requester.
  • [Support Center] Implemented advanced view functionality: editable, required, default, and hidden filters. This makes it possible to expose user-level filters in the UI without security concerns. Using required filters you can sandbox a particular view; such as restricting a list of tickets to only rows where the logged in contact is a requester.
  • [Support Center] Added a reusable filters template for Support Center views. This functions the same as worklist filters in the worker GUI, allowing user-driven and comprehensive search functionality to be added to any list with minimal effort.
  • [Support Center/My Account] You can now use multiple advanced fiters to search ticket history, including: recipient, status, created, updated, mask, subject, and message content.
  • [Address Book/Contacts] Registered contacts can now be browsed from the address book. These are community members that have registered with one of your Community Portals like the Support Center. Displaying a registered contacts shows their verified addresses and entire ticket history. For each record you can leave comments or establish context links to other content.
  • [Platform] The 'pretty timestamps' provided by Devblocks will now show in months (3mo) or years (5yr) when the number of days gets high enough. Both measurements are approximate, but likely far more user-friendly than '500d' or '3857d' labels.
  • [Support Center] Each Support Center portal can now have multiple login extensions (e.g. password, OpenID, LDAP) enabled simultaneously. This allows savvy community members to use OpenID without replacing the email+password default option entirely. This also allows admins to disable logins, or force a particular login method (such as a private SSO provider).
  • [Support Center/History] Contacts can now choose from their list of verified email addresses when replying to tickets through the Support Center.
  • [Support Center/Contact] The 'contact us' form in the Support Center will now provide a dropdown of verified email addresses to use for 'From' when the visitor is logged in.
  • [Support Center/Sharing] [CHD-614] Support Center (SC) contacts can now share the email history for any of their verified addresses with other registered accounts. This allows companies to create a manager account in a vendor/provider's Support Center that can view the history for all linked addresses from individual team members. From 'My Account' in the SC you can show/hide addresses that are shared with you, and control you can see the history for each of your addresses. Hiding shared addresses will remove them from your history, but it won't remove the sharing link (i.e. you can always re-enable it). This has been a long-time requested feature in Cerb, but it was delayed while we thought about a solution that didn't require helpdesk workers to be responsible for verifying who should have manager access to customer data. The control of access to a contact's private data is best done by each contact themselves -- as this is much less susceptible to social engineering.

New in Cerberus Helpdesk 5.1.2 (Oct 28, 2010)

  • This maintenance version includes 9 minor fixes and usability tweaks from community feedback.
  • It fixes a bug that was preventing new comments from being added in some environments.
  • All comments are now included in the destination ticket when merging multiple conversations. When a worker is attempting to log in and your helpdesk is at its seat limit, the single most idle session will now be cleared to free up a seat rather than invalidating all idle sessions.
  • The last step of the installation process will no longer prompt you to immediately update.

New in Cerberus Helpdesk 5.1.1 (Sep 21, 2010)

  • This maintenance release includes a dozen minor tweaks and fixes from community feedback.
  • Search presets can be modified by saving over them with new filters.
  • The installer will no longer require a patch immediately after finishing.
  • Organizations are automatically linked to time tracking entries when created from tickets.
  • Owners can be bulk added or removed from tasks, opportunities, organizations, and time tracking.
  • Bulk update support was added to Notifications for marking a list of events as read.
  • Fixes were included to better support Nginx and IIS Web servers.

New in Cerberus Helpdesk 4.3 Build 942 (Sep 29, 2009)

  • This release includes over 68 improvements from community feedback.
  • All views/lists will now remember their worker-level customizations (columns, sorting, length) between logins.
  • "Open Ticket" will now generate a placeholder message from the first requester, so the sender and organization links properly point back to a client.
  • Support Center modules and plugins can have their visibility set to: anybody, logged in, or nobody.
  • Support Center membership can now be managed from the Address Book.
  • The Time Tracking timer has been made thinner so it no longer blocks any menu options.

New in Cerberus Helpdesk 4.2.1 Build 914 (Jun 10, 2009)

  • [Fetch & Retrieve] Added back Fetch & Retrieve (F&R) as an optional plugin. It adds a Configuration tab for creating topics and resources. It adds a Research tab for searching resources. It adds a Support Center module for allowing website visitors to search topics you specify in your Support Center profile. When enabled in the SC, you can also send customers to URLs like /support/resources/search?q=search+terms. If you had F&R enabled previously then your existing settings will be used.
  • [Support Center] Fixed a bug that prevented plugins from providing their own custom icons for the Support Center menu items.
  • [Notifications] Added DAO_WorkerEvent::getUnreadCountByWorker() to make it easier for plugins to display the number of unread notifications (assigned tickets/tasks, flagged comments/notes) for any worker.
  • [Translations] [CHD-1232] Recent builds will not change language
  • [Workspaces] [CHD-1243] Upgrade to 4.2 breaks existing group filter
  • [Mail] [CHD-947] Increase the custom ticket mask max length from 16 to 32+ characters
  • [Keyboard Shortcuts] [CHD-1240] Add shortcut support for the Mail->Search tab
  • [E-mail Notifications] [CHD-1253] Spam tickets are being forwarded
  • [Research] [CHD-1197] A default tab is not selected upon clicking the 'research' menu
  • [Support Center] Fixed an issue where it's possible to get an error message on the Support Center by enabling a module from a plugin and disabling the plugin without disabling the module.

New in Cerberus Helpdesk 4.2 Build 910 (Jun 3, 2009)

  • Did a major restructuring of the core files to reduce memory and increase performance.
  • Plugin manifests can now contribute to classloading and URI routing, which improves performance by allowing more lazy-loading.
  • Moved the address book pages (Orgs, Addresses, Import) into tabs and made the address book tabs an extension point.
  • Added the ability to import values from CSV files directly into custom fields for Organizations and Addresses.
  • dded a new 'Research' top-level page to group together knowledge resources
  • Moved the Knowledgebase and Fetch & Retrieve functionality into plugins.
  • Added a new research plugin for 'Google Custom Search Engines'.
  • Added Date/Time criteria in filters. This allows functionality dependent on the day of week (Sat+Sun) or time of day (8AM-5PM).
  • Added message content criteria to filters w/ regular expression support.
  • Revamped the Mail Routing area in Configuration. Now rather than being restricted to routing incoming mail only by To/Cc to group inboxes you can use the full range of filter functionality available
  • Added more filter functionality to pre-parser filters: sticky, date/time criteria, multiple 'To/Cc:' patterns, message body scanning.
  • You can now use sender address and organization custom fields as criteria on Pre-Parser filters.
  • Inbox Filters can now use the current Date/Time as a criteria.
  • Inbox Filters can now scan the message content using regular expressions as a criteria.

New in Cerberus Helpdesk 4.0 Build 877 (Feb 23, 2009)

  • This update provides over 147 improvements from community feedback.
  • lds set on senders and use that information to write custom fields on new mail (such as priority or due date).
  • Workspaces can contain lists of anything; worklists can now be populated by custom field filters and show custom field data as list columns.
  • Groups can prioritize email buckets and flag if their contents are assignable.
  • An itemized permission system for workers has been added.
  • Auto-refresh for workspaces has been implemented.

New in Cerberus Helpdesk 4.0 Build 809 (Nov 26, 2008)

  • A new global notification system provides a reusable service that functionality and plugins can use to get a worker's attention.
  • Workers can now immediately notify any number of people when leaving a comment or note on mail.
  • An attachments cleaner reclaims wasted disk space.
  • Also included are over 60 fixes and improvements from community feedback.

New in Cerberus Helpdesk 4.0 Build 781 (Oct 31, 2008)

  • UTF-8 is now supported application-wide and a Translation Editor plugin is provided to create new localizations.
  • A new Time Tracking plugin is available to log time spent on clients and activities.
  • A new Feedback Tracking plugin allows capturing and sharing of the feedback uncovered in daily conversations.
  • A new Spam Analysis plugin gives insight into how the anti-spam system is making filtering decisions.
  • The anti-spam engine will "unaccent" email content to counter common spam tricks.
  • Two new pages, "home" and "activity", better organize new plugin-contributed functionality.