Skip to content
christefanoPublic

About

NotifyMe is a Kanboard plugin that sends email and Notifications menu notifications for your own actions (by default, Kanboard only notifies you about actions that others make). It also adds a vacation mode, notifies users of failed login attempts, and gives admins control of how many notifications are shown in the Notifications menu.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

NotifyMe

NotifyMe is a Kanboard plugin that sends email and Notifications menu notifications for your own actions (by default, Kanboard only notifies you about actions that others make). It also adds a vacation mode, notifies users of failed login attempts, and gives admins control of how many notifications are shown in the Notifications menu.

Screenshot

Settings -> Application settings -> NotifyMe sets how many Notifications menu entries are kept per user.

NotifyMe section of Kanboard's Application settings page

Quick start

  1. Extract the release zip to /path/to/kanboard/plugins/NotifyMe/.
  2. Restart PHP-FPM or your web server if Kanboard's plugin cache doesn't pick up the new files.
  3. Do something in a project like adding a comment. An email will arrive a moment later.

Enable the plugin and everyone gets their own notifications. Disable it and they stop.

INSTALL.md covers the requirements and compatibility.

What NotifyMe sends notifications for

Email and Notifications menu entries:

  • Task created, updated, closed, opened, or moved to a different column or swimlane
  • Task assignee changed (including self-assignment)
  • Subtask created, updated, or deleted
  • Comment added, updated, or deleted
  • File attached to or deleted from a task
  • Task link created, updated, or deleted

Email only:

  • File attached to or deleted from a project
  • Failed login attempt using your username if your account is active (at most one email per hour to prevent email bombing)
  • Wiki page created, updated, or deleted

Failed logins

When someone fails to log in with an active account's username, that account's owner gets an email about it with their username and a prompt to change the password if it wasn't them. At most one goes out per account per hour to prevent email bombing. Kanboard's own lockout still limits the login attempts.

Notifications menu limit

NotifyMe adds a "Notifications menu entries kept per user" setting to Settings -> Application settings -> NotifyMe with options for 100, 500, 1000, and Unlimited.

Kanboard doesn't trim a user's Notifications menu, and a busy account can collect thousands of unread entries until the notifications menu page runs out of memory and refuses to open. Select Unlimited to turn trimming off, or select 100, 500, or 1000 and click "Save" to trim older entries.

The default is the 1,000 most recent entries, so installing NotifyMe fixes a Notifications menu page that won't open.

Vacation mode

Vacation mode pauses many (but not all) Kanboard emails to a user, which is especially helpful for users who have an out-of-office autoresponder when Mailmagik is installed. Paused email types are tasks, subtasks, comments, file and link events, mentions, and overdue digests.

Failed login attempts, password resets, invitations, and NotifyMe's own Vacation mode on / off emails do get sent.

Vacation mode is controlled three ways:

  1. A user turns it on for each project they belong to from their profile (in "Vacation mode" on their profile's sidebar) and a "Vacation mode is on" message is displayed.
  2. A project manager turns it on for a member in their project (in "Vacation mode" on the project's sidebar) and a "Vacation mode is on" message is displayed.
  3. Any login or browser visit with an already logged in browser turns Vacation mode off, shows a "Vacation mode turned off" message, and sends an email to the user and to each project manager who set vacation mode for them in a project. A project flag set before NotifyMe kept who set it emails the user only.

Email notifications are paused, but notifications in the Notifications menu still accumulate so the user sees what happened when they get back. Flags are stored in user metadata (notifyme_vacation, notifyme_vacation_project_<id>, and notifyme_vacation_setter_<id>, which holds the ID of the project manager who set that project's flag).

Vacation mode covers email notifications from Kanboard and other plugins (core, Mailmagik, or TagAlong) since NotifyMe replaces Kanboard's userNotificationModel and skips only the email type.

If Mailmagik is installed, out-of-office messages can create an endless loop: a user receives an email notification, an out-of-office message is sent back, Kanboard / Mailmagik gets an email notification about being out of the office, Kanboard sends an email notification about that, and so on. NotifyMe vacation mode fixes that.

Kanboard labels its emails Auto-Submitted: auto-generated, so compliant autoresponders should skip them.

Limitations

  • Notifications menu entries require that notifications have a title or target, so email-only events don't appear in the Notifications menu.
  • Kanboard core doesn't have events for project create, update, and remove, category add and remove, and time-tracking entries, so none of these are currently supported.
  • NotifyMe is currently English-only. Contributions are welcome! Please fork NotifyMe on GitHub and create a pull request.

Wiki plugin

If the Wiki plugin is installed, NotifyMe also emails you when you create, update, or delete a wiki page.

Email footers

Every email NotifyMe sends has a "This is an automated notification from Kanboard." footer. If NotKanboard is installed, NotifyMe uses NotKanboard's footer_name and product_url settings. Otherwise edit plugins/NotifyMe/config.php, for example:

return array(
    'product_name' => 'NotKanboard',
    'product_url'  => 'https://notkanboard.org',
);

product_url is optional but requires http or https. Deleting or commenting out a key falls back to "Kanboard" with no link.

Reinstalling or updating the plugin can replace config.php. To keep your custom values through an update, put them in NotifyMe.config.json in Kanboard's data/ directory (copy NotifyMe.config.json from the plugin folder), for example:

{"product_name": "NotKanboard", "product_url": "https://notkanboard.org"}

Working with other plugins

Before each task email is sent, NotifyMe runs the notifyme:email:subject hook with an array holding subject, task_id, project_name, task_title, event_name, and action (the untranslated label, such as "New comment"). A listener can change subject. The TagAlong plugin uses it to apply its email subject format and append a reply-by-email token. With no listener the subject is unchanged, and a listener that throws is logged and skipped.

Before each email is sent, NotifyMe also runs notifyme:email:reply_to with a string a listener can set to a Reply-To address. TagAlong uses it so replies reach the reply-by-email mailbox. With no listener Reply-To is unchanged, and login alerts never run the hook.

Register a listener from any plugin's initialize():

$this->hook->on('notifyme:email:subject', function (&$data) {
    $data['subject'] .= ' [tag]';
});

What it overrides

NotifyMe doesn't change any Kanboard core files or any other plugin's files, and it doesn't override any templates. It replaces or extends these at runtime:

Part Owner How
userNotificationModel service Kanboard Subclass that skips the email type for a user in vacation mode and trims the Notifications menu after each notification. It skips whichever email type is registered, so it also covers Mailmagik's and TagAlong's
Settings, Application settings form Kanboard Adds the NotifyMe fieldset through the template:config:application hook
User and project sidebars Kanboard Add the Vacation mode links through template:user:sidebar:actions and template:project:sidebar
Footer name NotKanboard, when installed Reads its footer_name and product_url

It also listens to Kanboard's task, subtask, comment, file, task link, project file, and login events, and to the Wiki plugin's wikipage.* events. Listening doesn't change what Kanboard or the other plugin does.

Compatibility

  • Kanboard >= 1.2.20
  • NotifyMe doesn't make any schema changes. User metadata holds the failed login limit (notifyme_auth_failure_at) and the vacation flags (notifyme_vacation, notifyme_vacation_project_<id>, and notifyme_vacation_setter_<id>). The settings table holds notifyme_max_unread.

Other plugins

NotifyMe works with other plugins from the same author:

  • BusyBee adds one-click questions about your projects and tasks, such as "What is late?" and "What is blocked?", to the top of Kanboard's My dashboard pages. If SortaFolders is installed, the same questions also show at the top of its My folders page.
  • CommentTater lets you update a task's fields while posting a comment. Changes made to the task from the comment are shown on the posted comment and are included in Kanboard email notifications, too.
  • NotKanboard helps whitelabel Kanboard and replaces "Kanboard" in page titles, outgoing emails, and a few other places with your own product name.
  • SortaFolders sorts projects into folders. Kanboard doesn't let you group projects together or classify a project by putting it in another project, so SortaFolders adds nestable folders up to 5 levels deep and a dedicated My folders page on your dashboard that lists your projects by folder.
  • TagAlong supercharges Kanboard email support by filtering autoreplies, email signatures, and quoted text from incoming mail, points Reply-To to the reply-by-email address, and adds a reply token to email subjects, so replies become task comments through Mailmagik.

License

GNU General Public License v2. See LICENSE for details.

About

NotifyMe is a Kanboard plugin that sends email and Notifications menu notifications for your own actions (by default, Kanboard only notifies you about actions that others make). It also adds a vacation mode, notifies users of failed login attempts, and gives admins control of how many notifications are shown in the Notifications menu.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages