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
{{context}}
: contexte actuellement affiché (ou premier contexte lorsque plusieurs sont affichés)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 :
action_insert_update()
du contrôleur Nos\Media\Controller_Admin_Media
;$_GET['context']
qui permet de pré-sélectionner le contexte actif ;L’action edit :
nosTabs
, la valeur par défaut open
sera
utilisée : elle donnera le focus à l’onglet existant s’il est déjà ouvert, ou en créera un nouveau le cas échéant) ;action_insert_update( $id )
du contrôleur Nos\Media\Controller_Admin_Media
;id
passé à la méthode ;L’action delete :
action_delete( $id )
du contrôleur Nos\Media\Controller_Admin_Media
;id
passé à la méthode ; <?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();
},
),
);