Bulk Move Tasks done v0.2

This commit is contained in:
2026-06-28 17:31:42 -03:00
parent 4c4f4157d3
commit c0464ddd95
11 changed files with 33 additions and 73 deletions

View File

@@ -1 +0,0 @@
/* Skeleton plugin styles -- add CSS here. Loaded via template:layout:css. */

View File

@@ -1 +0,0 @@
// Skeleton plugin script -- add JS here. Loaded via template:layout:js.

View File

View File

View File

View File

@@ -1,6 +1,6 @@
<?php
namespace Kanboard\Plugin\Skeleton;
namespace Kanboard\Plugin\BulkMoveTasks;
use Kanboard\Core\Plugin\Base;
@@ -8,28 +8,19 @@ class Plugin extends Base
{
public function initialize()
{
// 1. Render a visible word at the top of every page (the demo output).
$this->template->hook->attach('template:layout:top', 'skeleton:layout/header');
// 2. Load the plugin stylesheet (currently empty -- proves the CSS hook fires).
$this->hook->on('template:layout:css', array(
'template' => 'plugins/Skeleton/Asset/css/skeleton.css',
));
// 3. Load the plugin script (currently empty -- proves the JS hook fires).
$this->hook->on('template:layout:js', array(
'template' => 'plugins/Skeleton/Asset/js/skeleton.js',
));
// Add a "Move all tasks to another column" entry to the board column
// header dropdown. The hook passes the current $column and $swimlane.
$this->template->hook->attach('template:board:column:dropdown', 'bulkMoveTasks:board/column_dropdown');
}
public function getPluginName()
{
return 'Skeleton';
return 'BulkMoveTasks';
}
public function getPluginDescription()
{
return t('Reusable skeleton/template for building Kanboard plugins.');
return t('Move all tasks from one board column to another in a single action.');
}
public function getPluginAuthor()
@@ -39,12 +30,12 @@ class Plugin extends Base
public function getPluginVersion()
{
return '0.1.0';
return '0.2.0';
}
public function getPluginHomepage()
{
return 'https://code.beco.cc/beco/kanboard-plugin-skeleton';
return 'https://code.beco.cc/beco/BulkMoveTasks';
}
public function getCompatibleVersion()

View File

@@ -1,19 +1,27 @@
# Skeleton -- a Kanboard plugin template
# BulkMoveTasks -- move a whole column of tasks at once
A minimal, working Kanboard plugin that you copy and rename as the starting point for a
real plugin. By itself it does only one trivial thing: it renders the word "Skeleton" at
the top of every page. It changes no data and runs no database migration.
A Kanboard plugin that adds a "Move all tasks to another column" action to the board
column header menu. It moves every task of that column (within the swimlane you clicked)
to a destination column you pick, in one step, instead of dragging cards one by one.
## What it demonstrates
## What it does
- A complete `Plugin.php` registration class with all the metadata Kanboard shows in
Settings -> Plugins (name, description, author, version, homepage, compatible version).
- A template hook (`template:layout:top`) that injects a template into the page.
- Asset hooks (`template:layout:css` and `template:layout:js`) that load a stylesheet and
a script. They are empty for now but prove the injection path works -- handy when a real
plugin needs custom CSS or JS.
- The standard plugin directory layout, with stub folders (`Controller/`, `Model/`,
`Schema/`, `Locale/`, `Test/`) ready to grow into.
In the board, open a column's title dropdown. When the column has tasks you will see
**Move all tasks to another column**. It opens a small dialog listing the other columns of
the project; choose one and confirm. All open tasks of the source column and swimlane are
appended, in their existing order, to the end of the destination column.
Each task is moved with Kanboard's normal move logic, so positions are recalculated and
the usual move events fire (activity stream, automatic actions, etc.) just as if you had
dragged the cards yourself.
## Scope of a move
- Acts on one swimlane at a time -- the swimlane of the column header you used. On a board
with several swimlanes, repeat per swimlane.
- Moves the open (active) tasks shown on the board. Closed tasks are not affected.
- Only users who can modify tasks in the project see the action, and the server re-checks
that permission before moving anything.
## Requirements
@@ -21,45 +29,9 @@ the top of every page. It changes no data and runs no database migration.
## Installation
No build step and no dependencies.
1. Copy this folder into your Kanboard installation as `plugins/Skeleton/`.
2. Reload any page. The word "Skeleton" appears at the top.
3. Confirm it under Settings -> Plugins.
To uninstall, delete `plugins/Skeleton/`. Nothing else is left behind.
## Directory layout
```
Skeleton/
Plugin.php Registration and hook wiring (the only required file).
README.md
LICENSE AGPL-3.0.
Template/
layout/header.php The visible "Skeleton" word.
Asset/
css/skeleton.css Loaded via template:layout:css.
js/skeleton.js Loaded via template:layout:js.
Controller/ Stub for future request handlers.
Model/ Stub for future business logic / DB access.
Schema/ Stub for future database migrations.
Locale/ Stub for future translations (e.g. pt_BR/, fr_FR/).
Test/ Stub for future unit tests.
```
## How to fork this into a new plugin
1. Copy the folder and rename it, e.g. `plugins/MyPlugin/`. The folder name must match the
namespace and start with a capital letter.
2. In `Plugin.php`, change the namespace from `Kanboard\Plugin\Skeleton` to
`Kanboard\Plugin\MyPlugin`.
3. Update the metadata methods (`getPluginName`, `getPluginDescription`, `getPluginAuthor`,
`getPluginVersion`, `getPluginHomepage`, `getCompatibleVersion`).
4. Update the hook target paths: the lowercase prefix in `'skeleton:layout/header'` and the
`plugins/Skeleton/Asset/...` asset paths must match the new plugin name.
5. Replace `Template/layout/header.php` with your real template, or attach to a different
hook. See the Kanboard plugin hooks documentation for the full list of hook points.
Copy this folder into your Kanboard installation as `plugins/BulkMoveTasks/`. The
directory name must be exactly `BulkMoveTasks` (Kanboard derives the plugin namespace from
the folder name). No build step and no database migration.
## License

View File

View File

@@ -1 +0,0 @@
<div class="skeleton-plugin-marker">Skeleton</div>

View File

View File

@@ -1 +1 @@
BulkMoveTasks v0.1
BulkMoveTasks v0.2