Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
devel:documentation:bulk_actions:dev:bulk_actions [2020/02/06 15:35] husniko [How it works?] |
devel:documentation:bulk_actions:dev:bulk_actions [2020/10/15 05:38] (current) husniko [How can I add support for bulk action?] |
||
---|---|---|---|
Line 10: | Line 10: | ||
* **Individual item selection** - When user checks individual items in a table such items are chosen to be processed by bulk action. IDs of these items are sent to BE together with type of the selected bulk action. | * **Individual item selection** - When user checks individual items in a table such items are chosen to be processed by bulk action. IDs of these items are sent to BE together with type of the selected bulk action. | ||
- | * **Selection by items** - In case of using of the checkbox which marks all items as selected, selection is controlled by filter. Individual items may be unchecked by which they are added to the list of items excluded from processing. Such filter setting is sent to BE together with the list of excluded items. | + | * **All items selection** - In case of using the checkbox which marks all items as selected, selection is controlled by filter. Individual items may be unchecked by which they are added to the list of items excluded from processing. Such filter setting is sent to BE together with the list of excluded items. |
- | * **Applying action without item specification** - The last supported option is to apply bulk action to the whole agenda. This option is by default disabled and needs to by enabled in BE bulk action implementation by overloading method '' | + | * **Applying action without item specification** - The last supported option is to apply bulk action to the whole agenda |
+ | Every agenda is allowed to have more implemented bulk actions for different purposes. It is possible to combine all selection strategies. First two selection strategies are controlled by another method '' | ||
- | After controller reception a new bulk action request (rest post method) it transforms given map< | + | Available |
- | After processing entity | + | After that controller receives a new bulk action request |
- | It is necessary to check permission for every processed item and return exception (ForbiddenEntityException) or result model with NOT_EXECUTED state. This check is provided by abstract class method '' | + | After processing entity (regardless whether successful or not) a new log with result is created. These log items are saved into processed items in the same table as schedulable tasks are but without removing or checking that item exists. |
+ | It is necessary to check permission for every processed item and return exception (ForbiddenEntityException) or '' | ||
===== Prevalidate ===== | ===== Prevalidate ===== | ||
{{tag> bulk operation action prevalidation validation validate }} | {{tag> bulk operation action prevalidation validation validate }} | ||
- | In some cases, we need obtain additional | + | In some cases, we need to obtain additional |
- | Prevalidate feature was developed exactly for this case. Every bulk operations has method `prevalidate`, returns | + | Prevalidate feature was developed exactly for this purpose. Every bulk operation implements |
- | < | + | < |
<note tip> | <note tip> | ||
Line 81: | Line 83: | ||
</ | </ | ||
+ | |||
+ | ===== Configuration ===== | ||
+ | {{tag> configuration }} | ||
+ | |||
+ | @since 10.6.0 | ||
+ | |||
+ | Bulk action order, icon, level and other properties can be configured by [[..: | ||
+ | |||
+ | Available bulk action can be shown in bulk action agenda available from menu - Settings - Modules - Bulk actions | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | <note tip>All configurable properties (e.g. order) are shown in frontend agenda. Bulk Action can be disabled (or enabled) directly from this agenda (other configurable properties will be added in future).</ | ||
===== How can I add new bulk action? ===== | ===== How can I add new bulk action? ===== | ||
- | <note tip>Now is possible add new bulk action | + | === New bulk action |
+ | For easy start of creating a new bulk action you need just extend the abstract class '' | ||
- | For easy start with creating new bulk action | + | * **getName** - name of bulk action, it will be used as key in localization |
+ | * **getAuthoritiesForEntity** - required permissions for processing of entities | ||
+ | * **getOrder** - order in selectbox in agenda | ||
+ | * **getService** - the service, items of which are processed by bulk action | ||
+ | * **processEntities** - iterates over all selected items and is supposed to provide check of permissions and processing invocation | ||
+ | * **processDto** - is called by processEntities method and implements processing of every single item | ||
+ | * **getLevel** - level for bulk action button (success by default) | ||
+ | * **isDeleteAction** - false by default. Action deletes records (for FE only). Action will be in bottom menu section, | ||
+ | * **isQuickButton** - false by default. Render action as quick button (for FE only). The first available actions are rendered as buttons, if icon is defined. This configuration enforces rendering action as quick button (order is ignored). | ||
- | * **processIdentity** - process one identity, | ||
- | * **getName** - name of bulk action, this will be used for key in localization, | ||
- | * **getPermissionForIdentity** - required permission for process one identity, | ||
- | * **getOrder** - order in selecbox in identity agenda. | ||
- | * **getLevel** - level for bulk action button (success by default). | ||
- | If you want use some settings | + | If one wants to use some settings |
- | <note tip>For all bulk actions | + | <note tip>Bulk actions |
- | After you implement | + | After implementation of all BE parts enabling support of the required bulk action, it is also necessary |
+ | Form attribute localization parts are placed | ||
+ | |||
+ | < | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
===== How can I add support for bulk action? ===== | ===== How can I add support for bulk action? ===== | ||
- | When we need add new agenda that will be support bulk actions | + | In order to add support |
- | - implements two method' | + | - in BE controller |
- | * **getAvailableBulkActions** - return | + | * **getAvailableBulkActions** - returns |
- | * **bulkAction** - process | + | * **bulkAction** - processes |
- | * **prevalidateBulkAction** - prevalidate | + | * **prevalidateBulkAction** - invokes |
- | - into frontend | + | - in FE service |
- | * **supportsBulkAction**=true | + | * **supportsBulkAction** - has to return |
+ | * **showRowSelection** - this '' | ||
- | Now you can start use bulk actions. | + | Now you can start using bulk actions. |