Compare commits
6 Commits
a905079abc
...
v1.8.3
| Author | SHA1 | Date | |
|---|---|---|---|
| 8057272b9c | |||
| dc22739647 | |||
| 2d3c716852 | |||
| 269964d4cc | |||
| ac8e3b9544 | |||
| 717095848b |
@@ -1,11 +1,13 @@
|
||||
/*
|
||||
* OrganonTweaks -- clicking a task title opens the edit modal instead of the read-only card view,
|
||||
* reusing Kanboard's own modal opener (KB.modal.open). Board part: the title is a link, and a hidden
|
||||
* marker rendered next to it (only when the user may edit) carries the server-generated edit URL.
|
||||
* reusing Kanboard's own modal opener (KB.modal.open).
|
||||
* - Board: the title is a link, and a hidden marker rendered next to it (only when the user may
|
||||
* edit) carries the server-generated edit URL.
|
||||
* - Card view: the title (#task-summary > h2) opens the same modal via #task-view's data-edit-url,
|
||||
* but only when the user may edit -- detected by the presence of the sidebar "Edit" action.
|
||||
*
|
||||
* A capture-phase delegated click is used so it (a) runs before Kanboard's own bubble-phase handlers,
|
||||
* (b) survives the board's AJAX re-renders without re-binding, and (c) stops both the link navigation
|
||||
* and the card's own click.
|
||||
* A capture-phase delegated click runs before Kanboard's own handlers, survives the board's AJAX
|
||||
* re-renders, and stops both the link navigation and the card's own click.
|
||||
*/
|
||||
(function () {
|
||||
"use strict";
|
||||
@@ -16,6 +18,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
// The sidebar "Edit the task" action (fa-edit) only renders when the current user may edit.
|
||||
function canEdit() {
|
||||
return !!document.querySelector(".sidebar a i.fa-edit");
|
||||
}
|
||||
|
||||
document.addEventListener("click", function (e) {
|
||||
if (!e.target || !e.target.closest) {
|
||||
return;
|
||||
@@ -31,6 +38,30 @@
|
||||
e.stopPropagation();
|
||||
openEdit(marker.getAttribute("data-url"));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Card-view title -> open the same edit modal (#task-view carries the edit URL).
|
||||
var title = e.target.closest("#task-summary > h2");
|
||||
if (title && canEdit()) {
|
||||
var taskView = document.querySelector("#task-view");
|
||||
if (taskView && taskView.getAttribute("data-edit-url")) {
|
||||
openEdit(taskView.getAttribute("data-edit-url"));
|
||||
}
|
||||
}
|
||||
}, true);
|
||||
|
||||
// Make the card-view title look clickable (the board title is already a link).
|
||||
function markTitle() {
|
||||
var title = document.querySelector("#task-summary > h2");
|
||||
if (title && canEdit()) {
|
||||
title.style.cursor = "pointer";
|
||||
}
|
||||
}
|
||||
|
||||
if (document.readyState !== "loading") {
|
||||
markTitle();
|
||||
} else {
|
||||
document.addEventListener("DOMContentLoaded", markTitle);
|
||||
}
|
||||
})();
|
||||
|
||||
@@ -128,7 +128,7 @@ class Plugin extends Base
|
||||
|
||||
public function getPluginVersion()
|
||||
{
|
||||
return '1.7.2';
|
||||
return '1.8.3';
|
||||
}
|
||||
|
||||
public function getPluginHomepage()
|
||||
|
||||
51
README.md
51
README.md
@@ -52,12 +52,37 @@ board stays where you were.
|
||||
Dropping a card sometimes leaks a trailing "click" that opens the card -- an unwanted side
|
||||
effect of the drag. A real click is a quick press-release; a drag is a press held much
|
||||
longer. So `Asset/js/click-guard.js` times the press on a card (`mousedown`/`touchstart` to
|
||||
the following `click`) and, if it was held longer than **100 ms**, swallows the click in the
|
||||
the following `click`) and, if it was held longer than **120 ms**, swallows the click in the
|
||||
capture phase before Kanboard's open handler -- so a drag never opens the card. Normal
|
||||
clicks (well under 100 ms) still open cards as usual. The 100 ms threshold is fixed.
|
||||
clicks (well under 120 ms) still open cards as usual. The 120 ms threshold is fixed.
|
||||
|
||||
- **On by default.** Toggle it under "Settings -> Organon Tweaks".
|
||||
|
||||
### Show keyboard shortcuts on the task menu
|
||||
|
||||
Kanboard already binds handy keys on the task view (`e` = edit, `s` = new sub-task, `c` = new
|
||||
comment, `l` = new internal link) but never shows them, so they go undiscovered. This tweak adds a
|
||||
small key hint next to each of those items in the task **Actions** sidebar. It is **display only**:
|
||||
it adds no new bindings, it just surfaces the ones Kanboard already has.
|
||||
|
||||
- Implemented in `Asset/js/shortcut-labels.js`, matching the menu items by their FontAwesome icon
|
||||
class, so it is independent of the URL format and the interface language.
|
||||
- **On by default.** Toggle it under "Settings -> Organon Tweaks".
|
||||
|
||||
### Click a title to edit
|
||||
|
||||
By default, clicking a card title (on the board) or the title on the card view lands you on the
|
||||
read-only card view. With this tweak on, clicking the title opens the **edit** form directly,
|
||||
reusing Kanboard's own modal -- so from the board you edit and, on Save, come straight back to the
|
||||
board. It applies only where you may edit (a read-only viewer keeps the normal title), and
|
||||
shared/public boards are untouched.
|
||||
|
||||
- Implemented in `Asset/js/title-click-edit.js` -- a capture-phase click that reuses `KB.modal.open`.
|
||||
On the board, a hidden marker (`Template/board/title_edit.php`, rendered by
|
||||
`template:board:private:task:before-title` only when the user may edit) carries the
|
||||
server-generated edit URL; on the card view the title reuses `#task-view`'s `data-edit-url`.
|
||||
- **On by default.** Toggle it under "Settings -> Organon Tweaks".
|
||||
|
||||
### Enhance the recurrence dialog
|
||||
|
||||
Kanboard's native "Edit recurrence" dialog is a plain form. This makes two small usability
|
||||
@@ -73,11 +98,29 @@ edits when it opens (there is no template hook, so it is done in JS,
|
||||
|
||||
## Settings
|
||||
|
||||
Global (per Kanboard instance) and admin-only, under "Settings -> Organon Tweaks":
|
||||
Global (per Kanboard instance) and admin-only, under "Settings -> Organon Tweaks", grouped as on
|
||||
the page:
|
||||
|
||||
**Board card readability**
|
||||
|
||||
- **Always show the comment icon on board cards** -- default on.
|
||||
- **Keep the board scroll position across refreshes** -- default on.
|
||||
- **Emphasize due date by default** -- default off (overridable per board under Settings -> Integrations).
|
||||
|
||||
**Board filters** (shared custom filters added to every board)
|
||||
|
||||
- **Add a "Show all tasks" filter to every board** -- default on.
|
||||
- **Add month filters to every board** -- default on.
|
||||
- **Add recurring filters to every board** -- default on.
|
||||
|
||||
**Card interaction**
|
||||
|
||||
- **Open a card only on a quick click** -- default on.
|
||||
- **Show keyboard shortcuts on the task menu** -- default on.
|
||||
- **Clicking a task title opens the edit form** -- default on.
|
||||
|
||||
Standalone:
|
||||
|
||||
- **Keep the board scroll position across refreshes** -- default on.
|
||||
- **Enhance the recurrence dialog** -- default on.
|
||||
|
||||
## Requirements
|
||||
|
||||
@@ -22,13 +22,6 @@
|
||||
</p>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<?= $this->form->checkbox('organon_tweaks_quick_click_only', t('Open a card only on a quick click'), 1, isset($values['organon_tweaks_quick_click_only']) && $values['organon_tweaks_quick_click_only'] == 1) ?>
|
||||
<p class="form-help">
|
||||
<?= t('A press held longer than 120 ms is treated as a drag, so releasing it does not open the card. Fixes a drag sometimes opening the card on release.') ?>
|
||||
</p>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<?= $this->form->checkbox('organon_tweaks_enhance_recurrence', t('Enhance the native recurrence dialog'), 1, isset($values['organon_tweaks_enhance_recurrence']) && $values['organon_tweaks_enhance_recurrence'] == 1) ?>
|
||||
<p class="form-help">
|
||||
@@ -52,6 +45,9 @@
|
||||
<fieldset>
|
||||
<legend><?= t('Card interaction') ?></legend>
|
||||
|
||||
<?= $this->form->checkbox('organon_tweaks_quick_click_only', t('Open a card only on a quick click'), 1, isset($values['organon_tweaks_quick_click_only']) && $values['organon_tweaks_quick_click_only'] == 1) ?>
|
||||
<p class="form-help"><?= t('A press held longer than 120 ms is treated as a drag, so releasing it does not open the card. Fixes a drag sometimes opening the card on release.') ?></p>
|
||||
|
||||
<?= $this->form->checkbox('organon_tweaks_shortcut_labels', t('Show keyboard shortcuts on the task menu'), 1, isset($values['organon_tweaks_shortcut_labels']) && $values['organon_tweaks_shortcut_labels'] == 1) ?>
|
||||
<p class="form-help"><?= t('Adds the existing key hints (e, s, c, l) next to the task Actions items.') ?></p>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user