The plugin allows to keep TODO-style notes on every KB project and as standalone lists. The notes that may appear unsuitable for creating board tasks are totally fine for a custom TODO list. They are easy and fast to create, change and rearrange, with convenient visual aids and multiple useful features.
This is an alternative way to organize data and tasks. It does not interfere with nor covers the whole complexity and functionality of KB tasks, but rather is aimed to be fast, lightweight and simplistic for managing smaller personal tasks in the form of TODO-lists.
Regardless of the types of note lists that you would use, your notes are ONLY available to you to view, edit and manage. You can, of course, consider sharing any of them with other users with explicit View or Edit permissions per user, and also remove those permissions at any time later.
[β Bottom] [β Top]
While I believe that the most of the features and functionality of the plugin are quite simple straightforward and intuitive, and even though there are self explanatory hints and hover helpers in most places to aid the users => it is still better to have all the features thoroughly described in one place, so to avoid inconsistencies and possible confusion.
Might you excuse my custom dark theme and the rainbow colored categories in the screenshots provided throughout this section, yet those demonstrate very well the visuals of the plugin β¨π
Also, pls beware, that the screenshots of editing and viewing MD areas, utilize the WysiwygMDEditor plugin, thus may not look in the same way at your side!
All features are accessible via the Project View
or the Dashboard View
of KB.
[β Bottom] [β Top]
Project Board View
For each KB project there are two ways to reach the TodoNotes:
Project Notes View
This is the corresponding view of the associated project notes. You can perform all manipulations for the notes in this project directly from here.
Dashboard Notes View
However, accessing notes list through the Dashboard > My notes
, gives you the full functionality of the plugin.
You can see and manage from there all the lists that are available to you.
[β Bottom] [β Top]
Create a Note
Suppose we have a new empty list.
- Creating a note is as simple as typing something and pressing ENTER. (Attention: for mobile you will still have to click the Save Note button!)
- Optionally, you can press TAB or the Toggle Details button, to input note category and details. If you don't, you can still change those later.
- Finally, to save everything either press the Save button or simply TAB from the editing details area.
View Note Details
In a similar fashion, to view/hide note details:
- click the Toggle Details button
- or double-click / double-tap in on the empty area of the note
- clicking the category label or date icon in collapsed view will also open the detailed view
Edit Note Details
To change any of the note's elements just click on:
- (1) the title label - change title, press ENTER
- (2) the category dropdown - simply select another category
- (3) the Edit Note Details button - change details, press TAB
- (4) the Status button - clicking toggles between Open / In Progress / Done states
Manually Reorder Notes
You can also rearrange multiple notes in a list by simple drag-n-drop, while any note can be collapsed or expanded at your wish.
Attention, for mobile there is an explicit button in the note's toolbar to serve as a reorder handle
=> use it specifically for dragging the note, as the generic behavior of drag is to swipe the page contents!
Note Toolbar Actions
On the next picture, the note toolbar buttons are listed from left to right as follows:
- Get Link to Note - copy a link to this note to the clipboard
- Move Note to Project - transfers this note to any other of the available lists
- Create Task from Note - apparently, it is only available for notes in Regular lists, creates a task on the corresponding KB project with specific Category, Column, Swimlane
- Delete Note - permanently remove the note from the list!
- Move Note to Archive - archives the note (in separate DB table)
- Save Note - store all note changes to the DB
[β Bottom] [β Top]
Types of Lists
These are the list types that you can have:
- Regular - this is an automatic list that is available for every KB project that you participate in. Beware that if you lose your access to the KB project you will also lose access to the corresponding Notes List even though all the notes will remain intact. There might be multiple users that are members of the KB project and each of them will have this list, but they cannot see each others notes unless they explicitly share them.
- Custom - these lists are standalone, they can be only created accessed and manipulated through the
Dashboard > My notes
interface of the TodoNotes plugin. They are highly flexible and customizable to match various purposes.- Global - those lists are globally accessible for all users, and much like the Regular lists
every user can see and manage just his own notes. The specific is that Global Custom lists can be managed by Admin only
(create/rename/delete/reorder), and the users can manipulate their own notes and consider sharing them.
The plugin initially pre-creates
Global Notes
andGlobal TODO
global lists, you can leave them or remove them at wish. - Private - as the name suggests those are the personal user lists. Everyone can create and manage any number of private lists as he needs. They are visible only to the owner (unless shared). Those would be the most expendable lists as they would come and go on demand.
- Shared - those are other users' private list that have been shared with you. You can access them with the corresponding Vew/Edit permissions. Apparently, with View permission you see a readonly list, and with Edit permission you can touch the notes on user's behalf.
- Global - those lists are globally accessible for all users, and much like the Regular lists
every user can see and manage just his own notes. The specific is that Global Custom lists can be managed by Admin only
(create/rename/delete/reorder), and the users can manipulate their own notes and consider sharing them.
The plugin initially pre-creates
Manage Custom Lists
As numbered on the above picture, these are the manipulations to list that you can do:
- (1) Create custom note list - if you have Admin privileges, you can create Global lists, otherwise only Private
- (2) Rename/Delete custom global note list! - Admin only
- (3) Sharing Permissions - if button is highlighted there are existing permissions for this list. Sharing permission to a specific user will only give him access to your notes, other users' notes in the global list are theirs to share.
- (4) Rename/Delete custom private note list - mangle them as you like it, the list panel will adjust its width
- (5) Sharing Permissions - if button is highlighted there are existing permissions for this list.
Since the Private list contains your notes only, a sharing permission actually exposes the entire list to another user,
and he will see it as a standalone list in his
Shared Custom List
group in the tabs panel. - (6) Reorder Private list by dragging. Same thing applies for Global lists too, it just requires Admin privileges.
Attention, for mobile there is an explicit
reoder handle
to drag the lists around! - (7) The Regular list being bound to actual KB projects are not really manipulatable, you can just go to their Board or Task List views.
- (8) Sharing Permissions - works as for Global list.
- (9) Collapse/Expand the list groups - as expected, click on the arrows, or double-click the group title. The collapse/expand state of each group is remembered and the visuals will remain as you set them.
Share Notes with other Users
To share your notes from a Global/Regular list or to share a whole Private list click the corresponding Sharing Permissions button (1) and it will bring up a page that lists users and permissions.
For each user of interest select the desired permission (2) and press the Set button (3).
When the list is longer, please scroll to find desired users. Operate them one by one.
If you want to remove the sharing permissions, simply select the [none]
option.
[β Bottom] [β Top]
Overview Mode
When you open the Dashboard > My notes
by default you land on the All Lists
item
which effectively represents the Overview Mode. Its idea is to be able
to quickly browse and review all available notes from all available owned lists (according to the set filters, of course).
The order of lists in the overview follows their order from the tabs pane on the left.
You can surely expand and collapse notes' details, but you are only allowed to change note Status and Alert and to reorder notes within a list.
As numbered on the picture the following actions regard the lists:
- (1) collapse / expand specific list
- (2) double-click on the empty area to collapse / expand specific list
- (3) click to go to specific list (same as clicking on its tab in the left pane)
And the rest of them regard the notes:
- (4) double-click empty area of note to expand / collapse note details
- (5) drag note to reorder within the specific list
- (6) toggle note Status
- (7) set note Alert
Archive Mode
There is a special filter in the List Toolbar > Filters (1)
that is called Archive View
(2).
It effectively switches the entire list view mode as it shows the archived notes for this list
(which are technically being kept in a separate DB table form the active ones).
When notes are archived they lose their status and become unmanageable in any way. You can browse and review their data, but the only actions (3) you can perform with them are:
- delete them permanently
- or restore them as active notes
Archive Overview Mode
Well, since the Archive View
filter is also available in Overview Mode
this allows to have an overview of all archived notes from all available lists.
Yet, you can only browse and review them. If you want to manipulate the archived notes
you have to select a specific list and turn on its Archive View
from filter settings.
[β Bottom] [β Top]
Toggle Lists Stats
By using the Show Stats button you can toggle ON / OFF the visibility of the statistics widgets for all lists. They show the number of Open / In Progress / Done notes for each list, and a total on top.
Attention, if you are viewing someone else's Shared notes for a specific list, the shown stats will be grayed out to denote that those are not the counts of your notes and that they don't contribute to the total!
Dynamic Update of Stats
You can see the counts updating immediately as you change the Status of notes.
When the In Progress
count for a list is 0
then the widget icon would stop spinning to avoid drawing unnecessary attention.
[β Bottom] [β Top]
Users
The User menu (1) shows the currently selected user whose note are being viewed. The default user (2) is always on the top of the menu, the icon on his right (3) shows its role or permissions.
- The Sharing Permissions section of the menu appears for Global/Regular lists. It will hold users that have shared their notes for this list with you (4) along with their corresponding permissions.
- For the Private/Shared lists there is always a single user - the list OWNER - you or the sharer.
When there are multiple users in this menu to select from, the selected user is highlighted in RED. Switching users will switch the set of notes, and the list may become readonly depending on the permissions.
Filters
The Filter menu (1) contains options to show/hide notes by Status. You can toggle multiple options, highlighted in RED. On the example picture, the Done notes are excluded (2).
The last item in the menu is Archive View
(3). It will actually switch the list to Archive Mode
which allows browsing and managing its archived notes (if any). Toggling Archive View
OFF again, will bring you back
to the normal view.
Sorting
The Sort menu (1) contains options to order the notes in the list. The selected option is highlighted in RED.
The Manual Order
option (2) is a special one, it does NOT sort anything but rather allows you to manually reorder notes by dragging.
If any other option is selected, like in the example Sort by Status
(3), the notes will get sorted along the selected condition
and the list will not allow dragging the notes.
Some options are context dependent (e.g. Overview, Archive, etc).
On the example picture the item Sort by Date Restored
(4) will disappear in Archive Mode
and will be replaced by Sort by Date Archived
.
View Options
The View menu (1) presents some visual options. When an option is turned ON it is highlighted in RED.
- the
Colorize by Category
(2) switches on/off the category colors in notes - the
Use Standard Status Marks
(3) switches between two sets of marks for the Status buttons
Actions
On the Actions (1) from top to bottom are:
- Expand all Notes - expands all notes' details, desktop shortcut key [+]
- Collapse all Notes - collapses all notes' details, desktop shortcut key [-]
- Note Stats - shows a pie chart of the notes counts
- Create Report - generates a flat expanded non-editable view of the note list, can filter by specific category
- Archive ALL Done Notes! - moves in bulk all Done notes to Archive
- ! Delete ALL Done Notes! - permanently removes in bulk all Done notes
- View README - view this README document online
Keeping the Settings
All the settings from the above menus are attempted to be remembered for each list separately, thus providing maximum customization to the user in every single client. The persistence mechanism uses the SESSION variable while the user is online and COOKIES to store the settings in the client browser between the sessions.
If you have disabled cookies for the KB domain, then every time you start a new session the settings for all lists will be default, and whatever you set during the session will be lost when you disconnect or close the client.
[β Bottom] [β Top]
Simultaneous Editing and Watching
Different scenarios might occur, in which simultaneous editing from multiple parties, or simultaneous editing from one party and watching from other parties, will concern the same data - a note or a whole list.
- I might view/edit the same note/list both in my desktop and mobile browser on different devices.
- I might have shared a note list for view/edit, and me and the other user are trying to view/edit some note at the same time.
- Or even I just have a dedicated screen that is permanently open to some list in order to continuously keep track of tasks.
In all the cases, a mechanism is needed to keep the data up to date, and propagate any remote changes to all watcher/editor clients.
Smart Minimal Refresh
Normally you would only see this icon blink for a moment in the bottom right corner, it is auto refresh.
Every 15 seconds the client would ask the server if there is any change since the last time the page was updated. It would then receive a collection of timestamps to denote last changes in several aspects, to drive partial or full refresh if necessary, and to update the page timestamp to the latest.
If the page is not visible or not in focus, the 15 seconds cycle is suspended and the AutoRefresh waits until focus is gained again, thus sparing unnecessary request to the server.
Attention, this is NOT a collision resolving mechanism. It ONLY ensures that if there was a nearly simultaneous change of the same data from multiple parties, they all will receive and see the final change in a quite short interval. That is just meant to prevent continuous and large data desync.
Downside of AutoRefresh
You might be doing some changes when AutoRefresh happens, and you will lose them as you get interrupted. But then, again, the AutoRefresh initially happened because the data you are editing was changed while you are still doing it. And as a matter of precedence, whichever the first change submitted it triggers the refresh to get itself propagated and keep a consistent state of the data.
[β Bottom] [β Top]
Alerts per Note
The plugin allows you to configure an alert for each separate note.
You can open the notification setup dialog either by clicking the Notifications
label (1)
in the detailed note view or by directly clicking the alert button on the toolbar (2) while note is collapsed.
As you may notice, the alert icon indicates the state of the alert:
- slashed white bell - no alert configured
- white bell - configured alert, pending
- slashed grayed bell - no alert configured, disabled due Done state
- grayed bell - configured alert, disabled due Done state
- red bell - configured alert, overdue
Setup Alert
On the above picture, in the dialog, you can select the Date/Time in two ways:
- either by explicitly using the calendar control (3)
- or by clicking the
Postpone
checkbox (4) and using an offset to the currently set date (in order to use the calendar again you must explicitly uncheckPostpone
)
The Alert Options
determine how to execute the notifications.
You must first select the type of the notification (5).
If you choose none => then no notification will be triggered,
this could be useful when you need to just temporarily stop the notification trigger without resetting its parameters.
- eMail - uses the KB backend to send mails
- WebPN - the plugin provides means to push browser notifications on multiple clients subscribed
- you can check both of them, of course
The Remind
options allow for additional notifications, respectively:
- Remind before (6) - a single reminder prior to the alert date
- Remind after (7) - infinite repetitive reminders after the alert date
And finally, use Set button (8) to apply all the changes. Or you can Reset (9) the entire alert, which will remove all settings and will disable the notification trigger.
Allowing EMails and WebPNs
To be able to use eMail notifications you need two things:
- a valid email configured in your KB profile
- the plugin utilizes the KB backend for sending mails - so, you need to have the KB server settings properly configured to allow this
For the WebPNs to work you must enable in your browser(s) the push notifications for the KB domain that you use. Check how to do this for your specific browser, then just load any page that shows a TodoNotes list, and you will be automatically subscribed.
- You may subscribe in several browsers on different devices (including mobile), and when the alert is due you will get notified on all of them.
- If you wish to stop receiving WebPNs on a specific device, simply disable the notifications for the KB domain in the browser of use on that specific device.
Heartbeat to Schedule Alerts
Finally, for any notification to be triggered, we need a scheduler that will periodically check which of the alerts are due. KB provides a mechanism to schedule jobs (e.g. the βDaily background job for tasksβ) through cronjob configuration.
The cron file for the daily event usually looks something like this:
0 8 * * * cd /var/www/app && ./cli cronjob >/dev/null 2>&1
Unfortunately, a trigger once a day is quite far from what we want for notifications. Hence, the plugin provides a specific command to trigger a heartbeat for notifications. It would look like this in the cron file:
*/15 * * * * cd /var/www/app && ./cli TodoNotes:NotificationsHeartbeat
As you can see, the notifications will be triggered in chunks depending on the interval and NOT on the exact note alarm time. A fair interval to set is 15 minutes.
- The smaller the value (e.g. 1 min) => the more precise the alert trigger, but more burden on the server.
- The lager the value (e.g. 30 mins) => more relaxed on the server, but greater delay for notifications.
Additional delays in delivering the WebPNs might take place depending on the specific platform, client, and the media transport.
If you don't have access to the system beneath KB, or if you are uncomfortable to mangle it - the plugin provides one more way to receive a heartbeat. Yet it is NOT recommended unless absolutely no other options.
- The ServiceWorker on the client that handles the push notifications from the server sends back a periodic emulated heartbeat.
- Thus, having clients performing requests to the server in a way provides soft heartbeat, but sporadic in nature as the clients connect and disconnect.
- In order to emulate a stable soft heartbeat, you need to keep alive a dedicated browser client on some device, and a page with TodoNotes list opened in it, for the SW to be active.
The heartbeat defined through the cron command has higher priority anyway. So even if there are multiple clients generating a soft heartbeat, this won't burden the server, you can safely have the both.
[β Bottom] [β Top]
Installation
- Install via the Kanboard Plugin Directory or see Plugin Installation
- Read the full Changelog to see the latest updates
Compatibility
- Requires Kanboard β₯
1.2.33
- Other Plugins & Action Plugins
- No known issues
- Core Files & Templates
0
Template overrides5
New database tables to serve the purposes of the TodoNotes plugin
Translations
- Translation for
en_US
is the default, currently there are no other translation packs.
[β Bottom] [β Top]
- Im[F(x)] - Author
- Contributors welcome for translations !
[β Bottom] [β Top]
This project was initially forked from the BoardNotes plugin and I tried contributing to it for a while. Eventually, things grew much bigger, this repo was split, and its current code has nothing in common with the original. Yet, the following credits are mentioned out of courtesy:
[β Bottom] [β Top]
- This project is distributed under the MIT License
[β Top]