Sto utilizzando SuiteCRM 7.4.3 e devo includere due file (un file PHP e un file JS) nell'intera istanza di progetto. Quali sono le migliori pratiche in questa situazione? Dove devo copiare i file sorgente e dove li includo?Includi file PHP e JS in SuiteCRM
risposta
SuiteCRM utilizza la propria classe TimeDate che dal suo aspetto sarà necessario estendere per creare il proprio (questo JalaliDate). Onestamente, non so come si possa implementare ciò senza intaccare il nucleo SuiteCRM in maniera massiccia.
Tuttavia, i file che sarà necessario esaminare sono include/TimeDate.php (che è la classe Suite utilizza per tutta la sua formattazione temporale). Ti consigliamo sempre di provare a fare tutto all'aggiornamento sicuro, tutto è all'interno della cartella personalizzata, tuttavia dall'aspetto non lo sarà.
Ma, quello che faccio di solito quando includo l'SDK di altre applicazioni lo inserisco in custom/include/e quindi ogni volta che ne ho bisogno lo linko da lì.
Grazie. Proverò a lavorare nella cartella personalizzata e ti farò sapere il risultato. –
Se è necessario utilizzare un file javascript SuiteCRM, è possibile utilizzare creare una visualizzazione personalizzata che sputa i "tag di script".
class CustomModuleViewSomething extends ViewEdit
{
function display(){
$this->ev->process();
$scripts = array();
$scripts[] = '<script src="javascript1.js"></script>';
$scripts[] = '<script src="javascript2.js"></script>';
$scripts[] = '<script src="javascript3.js"></script>';
echo $this->ev->display($this->showTitle) . implode($scripts);
}
}
Ho un gist che dipende da moment.js per elaborare le date in JS. questo è utile quando hai bisogno di date di processo nelle date lato client.
/**
* returns js Date() from a date that is in the users format
* @depends momentjs library
* @param datestr
* @returns {*|Date}
*/
function toDate(datestr) {
var $format = "", $splitformat = ["","",""], $dbformat = ["","",""];
// Get user preferences date format
$format = cal_date_format
$format = $format.toUpperCase();
$format = $format.replace('%D', 'DD')
$format = $format.replace('%M', 'MM')
$format = $format.replace('%Y', 'YYYY')
// return js date
return moment(datestr, $format).toDate()
}
Il modo migliore per gestire le date è quello di creare un'azione in un customController:
class CustomModuleController extends SugarController {
function action_save() {
global $timedate;
$field = "date_entered";
$timedate->fromString($this->bean->$field);
$this->bean->save(!empty($this->bean->notify_on_save));
}
}
Quale sarebbe il motivo per l'aggiunta di questi file? Stai estendendo la funzionalità, ad esempio aggiungendo logic_hooks o semplicemente includendo il JS nell'istanza complessiva di SuiteCRM? – MissAran
@MissAran Desidero utilizzare questo [JalaliDate] (https://github.com/sallar/jDateTime) per la lingua persiana. –
Utilizzare il compositore per php e bower/npm per la libreria JS. – k0pernikus