Les actions sont définies dans le fichier config/common/{model}.config.php.
Le meilleur moyen est de s’inspirer des actions par défaut qui existent dans Novius OS.
La configuration des actions contient des {{placeholders}}.
Sont remplacés en PHP :
- {{model_label}} : le nom du modèle
- {{controller_base_url}} : l’URL du contrôleur associé au modèle
Tous les autes placeholders sont remplacés par les données de l’item : {{_id}} et {{_title}} dans ce cas, mais égalements n’importe quel champ définit dans le data_mapping.
Il y a 3 cibles possibles pour les actions :
L’action add :
L’action edit :
L’action delete :
<?php
return array(
// Acion par défaut ADD
'add' => array(
'label' => __('Add {{model_label}}'),
'primary' => true,
// Le clic ouvrira un nouvel onglet
'action' => array(
'action' => 'nosTabs',
'method' => 'add',
'tab' => array(
'url' => '{{controller_base_url}}insert_update?context={{context}}',
),
),
// L'action sera affichée uniquement dans la barre d'outils de l'App Desk
'targets' => array(
'toolbar-grid' => true,
),
),
// Action par défaut EDIT
'edit' => array(
'label' => __('Edit'),
'primary' => true,
'icon' => 'pencil',
// Le clic ouvrira (ou rendra le focus) l'item
'action' => array(
'action' => 'nosTabs',
'tab' => array(
'url' => "{{controller_base_url}}insert_update/{{_id}}",
'label' => '{{_title}}',
),
),
// L'action s'affiche uniquement dans la grille principale
'targets' => array(
'grid' => true,
),
),
// Action par défaut DELETE
'delete' => array(
'label' => __('Delete'),
'primary' => true,
'icon' => 'trash',
'red' => true,
// Le clic ouvrira une popup de confirmation
'action' => array(
'action' => 'confirmationDialog',
'dialog' => array(
'contentUrl' => '{{controller_base_url}}delete/{{_id}}',
'title' => strtr($config['i18n']['deleting item title'], array(
'{{title}}' => '{{_title}}',
)),
),
),
// L'action s'affiche à la fois dans la grille principale et sur le formulaire d'édition...
'targets' => array(
'grid' => true,
'toolbar-edit' => true,
),
// ...mais pas pour les nouveaux items !
'visible' => function($params) {
return !isset($params['item']) || !$params['item']->is_new();
},
),
);