From ac8e3b954471be14ee29d8e3e238bc0bd9f8c60b Mon Sep 17 00:00:00 2001 From: Ruben Carlo Benante Date: Fri, 10 Jul 2026 18:13:19 -0300 Subject: [PATCH] add Save & Close button on the task edit form v1.8 --- Controller/ConfigController.php | 3 +++ Plugin.php | 13 ++++++++++++- Template/config/show.php | 3 +++ VERSION | 2 +- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Controller/ConfigController.php b/Controller/ConfigController.php index 7ca854e..876f31d 100644 --- a/Controller/ConfigController.php +++ b/Controller/ConfigController.php @@ -24,6 +24,7 @@ class ConfigController extends BaseController 'organon_tweaks_recurring_filters' => (int) $this->configModel->get('organon_tweaks_recurring_filters', 1), 'organon_tweaks_shortcut_labels' => (int) $this->configModel->get('organon_tweaks_shortcut_labels', 1), 'organon_tweaks_title_click_edit' => (int) $this->configModel->get('organon_tweaks_title_click_edit', 1), + 'organon_tweaks_save_close_button' => (int) $this->configModel->get('organon_tweaks_save_close_button', 1), ), 'errors' => array(), ))); @@ -43,6 +44,7 @@ class ConfigController extends BaseController $recurringFilters = isset($values['organon_tweaks_recurring_filters']) ? 1 : 0; $shortcutLabels = isset($values['organon_tweaks_shortcut_labels']) ? 1 : 0; $titleClickEdit = isset($values['organon_tweaks_title_click_edit']) ? 1 : 0; + $saveCloseButton = isset($values['organon_tweaks_save_close_button']) ? 1 : 0; if ($this->configModel->save(array( 'organon_tweaks_always_comment_icon' => $alwaysCommentIcon, @@ -55,6 +57,7 @@ class ConfigController extends BaseController 'organon_tweaks_recurring_filters' => $recurringFilters, 'organon_tweaks_shortcut_labels' => $shortcutLabels, 'organon_tweaks_title_click_edit' => $titleClickEdit, + 'organon_tweaks_save_close_button' => $saveCloseButton, ))) { $this->flash->success(t('Settings saved successfully.')); } else { diff --git a/Plugin.php b/Plugin.php index c5e752b..ac94715 100644 --- a/Plugin.php +++ b/Plugin.php @@ -77,6 +77,17 @@ class Plugin extends Base $this->template->hook->attach('template:board:private:task:before-title', 'organonTweaks:board/title_edit'); } + // Tweak: a "Save & Close" button on the task edit form that saves and returns to the board + // (core only reopens the card view). The button posts to a small plugin controller that + // reuses core's update and changes only the redirect; the JS repoints the form action, so + // Kanboard's modal still owns the submit, CSRF, and error re-render. + if ((int) $this->configModel->get('organon_tweaks_save_close_button', 1) === 1) { + $this->template->hook->attach('template:task:form:bottom-before-buttons', 'organonTweaks:task_form/save_close_button'); + $this->hook->on('template:layout:js', array( + 'template' => 'plugins/OrganonTweaks/Asset/js/save-close.js', + )); + } + // Auto-managed shared custom filters (v1.5 "Show all tasks", v1.6 month filters, v1.7 // recurring filters). Ensured lazily whenever a project header renders (covers old + new // boards); each group is gated by its own config toggle inside @@ -128,7 +139,7 @@ class Plugin extends Base public function getPluginVersion() { - return '1.7.2'; + return '1.8.0'; } public function getPluginHomepage() diff --git a/Template/config/show.php b/Template/config/show.php index 0dd89d6..5e66f55 100644 --- a/Template/config/show.php +++ b/Template/config/show.php @@ -57,6 +57,9 @@ form->checkbox('organon_tweaks_title_click_edit', t('Clicking a task title opens the edit form'), 1, isset($values['organon_tweaks_title_click_edit']) && $values['organon_tweaks_title_click_edit'] == 1) ?>

+ + form->checkbox('organon_tweaks_save_close_button', t('Add a "Save & Close" button to the task edit form'), 1, isset($values['organon_tweaks_save_close_button']) && $values['organon_tweaks_save_close_button'] == 1) ?> +

diff --git a/VERSION b/VERSION index 90d5b09..1439ad4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -OrganonTweaks v1.7.2 +OrganonTweaks v1.8