L’ordinamento di default dei sottopannelli può essere realittazo con un po’ di pazienza e alcune righe di codice.
In questo articolo vediamo come impostare un ordinamento di default per i sottopannelli dei moduli.
SuiteCRM nel creare i sottopannelli imposta a tutti lo stesso ordine con valore “100”.
La tecnica che sfrutteremo è upgrade safe e sfrutta le classi delle viste dei files “.views.php” per reimpostare l’ordinamento dei sottopannelli in modo esplicito.
Come prima cosa dobbiamo individuare i sottopannelli. Il file indicato sotto, ne contiene la definizione per ogni modulo:
/custom/modules/<NOME_MODULO>/Ext/Layoutdefs/layoutdefs.ext.php
Se a qualcuno venisse voglia di modificare direttamente questo file, sappia che è un file autogenerato e ogni modifica sarà sovrascritta.
Individuati i riferimenti ai pannelli possiamo estendere le classi viste view.detail.php dei moduli per i quali vogliamo ordinare i sottopannelli e definire l’ordinamento voluto.
Creiamo il file custom e la logica per l’ordinamento:
/custom/modules/<NOME_MODULO>/views/view.detail.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<?php if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point'); require_once('include/MVC/View/views/view.detail.php'); require_once ('include/SubPanel/SubPanelTiles.php'); class Custom<NOME_MODULO>ViewDetail extends <NOME_MODULO>ViewDetail { /** * metodo per inserire l'ordinamento dei sottopannelli */ function _displaySubPanels() { require_once ('include/SubPanel/SubPanelTiles.php'); $subpanel = new SubPanelTiles($this->bean, $this->module); $this->order_subpanels($subpanel->subpanel_definitions->layout_defs['subpanel_setup']); echo $subpanel->display(); } function order_subpanels(&$subpanel_setup) { $subpanel_setup['<NOME_SOTTOPANNELLO_1>']['order'] = 1; $subpanel_setup['<NOME_SOTTOPANNELLO_2>']['order'] = 2; $subpanel_setup['<NOME_SOTTOPANNELLO_3>']['order'] = 3; $subpanel_setup['<NOME_SOTTOPANNELLO_4>']['order'] = 4; } } |
Se la classe viste view.detail.php non esistesse per il modulo sul quale vogliamo intervenire, estenderemo la classe generica di vista dettaglio, come mostrato sotto
1 2 3 4 5 6 7 8 |
require_once('include/MVC/View/views/view.detail.php'); require_once ('include/SubPanel/SubPanelTiles.php'); class <NOME_MODULO>ViewDetail extends ViewDetail { .... .... |
In questo modo possiamo intervenire su ogni singolo modulo ed esplicitare l’ordinamento di default dei sottopannelli per tutti gli utenti.