diff --git a/couscous.yml b/couscous.yml index 007e9d655..7c75a7954 100644 --- a/couscous.yml +++ b/couscous.yml @@ -40,15 +40,18 @@ menu: assets: text: Assets relativeUrl: assets.html - moduli: - text: Moduli - relativeUrl: moduli.html - other: - name: Approfondimenti - items: api: text: API relativeUrl: api.html + other: + name: Approfondimenti + items: + struttura: + text: Struttura + relativeUrl: struttura.html + moduli: + text: Moduli + relativeUrl: moduli.html docs: text: Documentazione completa relativeUrl: docs/ diff --git a/docs/File.md b/docs/File.md index 9e3ec70fa..90b527654 100644 --- a/docs/File.md +++ b/docs/File.md @@ -4,33 +4,34 @@ currentMenu: file # File +La cartella `files` viene utilizzata dal progetto per gestire in modo unificato contenuti di vario tipo per i moduli installati. +In generale, questa cartella è dedicata alla memorizzazione dei file di cui viene fatto l'upload attraverso la funzione fornita in automatico dal getionale, ma sono presenti delle specifiche personalizzazioni necessarie per l'adeguato funzionamento di alcuni moduli. + -- [MyImpianti](#myimpianti) +- [Modulo MyImpianti](#modulo-myimpianti) -## MyImpianti +## Modulo MyImpianti -La cartella _files_ contiene file di vari tipologie, raggruppati in base al modulo di cui fanno parte: +Il modulo **MyImpianti** sfrutta la propria cartella all'interno di `files` per gestire, oltre alle proprie immagini, le impostazioni (`.ini`) dei componenti disponibili. -- Impostazione (`.ini`), utilizzate dai moduli abilitati in tal senso per ampliare l'offerta naturale degli stessi. -- File di cui viene effettuato l'upload all'interno dei vari moduli (riconosciuti dal gestionale tramite le funzioni interne al file `lib/modulebuilder.php`). - -I file \*.ini devono seguire il seguente standard. {} = facoltativo +I file `*.ini` devono seguire il seguente standard. {} = facoltativo ```ini -[Nome] +[Nome del campo] tipo = tag_HTML -valore ={ "Valore di default"} +valore = {"Valore di default"} {opzioni = "Opzione 1", "Opzione 2", "Opzione 3"} -[Nome] +[Nome del campo] tipo = tag_HTML -valore ={ "Valore di default"} +valore = {"Valore di default"} {opzioni = "Opzione 1", "Opzione 2", "Opzione 3"} ``` -Per tag_HTML si intendono tutti i tag HTML, con preferenza rivolata verso quelli di input (input, select, textarea, date, ...) sebbene il sistema accetti anche gli altri (span, p, ...). +La dicitura "tag_HTML" indica la possibilità di inserire all'interno del campo il nome di un qualsiasi tag HTML per l'utilizzo durante la modifica. +In particolare, il gestionale supporta la maggior parte dei campi HTML di input (input, select, textarea, date, ...); se necessario, è inoltre possibile (span, p, ...). -Attualmente questi file vengono utilizzati esclusivamente dal modulo **MyImpianti** per la gestione delle varie tipologie di _Componenti_. Il file `my_impianti/componente.ini` è un esempio di base di questa funzionalità, e un'ulteriore personalizzazione può essere trovata [nel forum](http://www.openstamanager.com/forum/viewtopic.php?f=5&t=93). +Il file `my_impianti/componente.ini` è un esempio di base di questa funzionalità, e un'ulteriore personalizzazione può essere trovata [nel forum](http://www.openstamanager.com/forum/viewtopic.php?f=5&t=93). diff --git a/docs/Framework.md b/docs/Framework.md index 87c3843d1..973ed3d82 100644 --- a/docs/Framework.md +++ b/docs/Framework.md @@ -54,14 +54,20 @@ Per ulteriori informazioni, consultare la [documentazione ufficiale di Composer] ## Framework predefiniti +- danielstjules/stringy - ezyang/htmlpurifier - filp/whoops +- ifsnop/mysqldump-php - intervention/image - ircmaxell/password-compat - maximebf/debugbar - monolog/monolog +- mpdf/mpdf +- paragonie/random_compat - phpmailer/phpmailer - spipu/html2pdf +- symfony/filesystem +- symfony/finder - symfony/translation _I nomi sono indicati secondo la notazione tipica dei progetti pubblici su Github._ diff --git a/docs/Struttura generale.md b/docs/Struttura.md similarity index 67% rename from docs/Struttura generale.md rename to docs/Struttura.md index e99a2434e..c61191591 100644 --- a/docs/Struttura generale.md +++ b/docs/Struttura.md @@ -2,7 +2,7 @@ currentMenu: struttura --- -# Struttura generale +# Struttura @@ -31,25 +31,20 @@ currentMenu: struttura - [Cartella docs](#cartella-docs) - [Cartella files](#cartella-files) - [Cartella include](#cartella-include) - - [bottom.php (CUSTOMIZABLE)](#bottomphp-customizable) - - [top.php (CUSTOMIZABLE)](#topphp-customizable) + - [bottom.php](#bottomphp) + - [top.php](#topphp) - [Cartella lib](#cartella-lib) - [deprecated.php](#deprecatedphp) - [functions.php](#functionsphp) - - [functionsjs.php (HTML)](#functionsjsphp-html) - - [init.js (HTML)](#initjs-html) - - [modulebuilder.php](#modulebuilderphp) - - [permissions_check.php](#permissions_checkphp) - - [user_check.php](#user_checkphp) - - [classes/Database.php](#classesdatabasephp) - - [classes/HTMLBuilder.php](#classeshtmlbuilderphp) + - [functionsjs.php](#functionsjsphp) + - [init.js](#initjs) - [Cartella locale](#cartella-locale) - [Cartella modules](#cartella-modules) - [Cartella templates](#cartella-templates) - [Cartella update](#cartella-update) - [create_updates.sql](#create_updatessql) - - [update_VERSIONE.sql (OPEN)](#update_versionesql-open) - - [update_VERSIONE.php](#update_versionephp) + - [VERSIONE.sql](#versionesql) + - [VERSIONE.php](#versionephp) - [Cartella vendor](#cartella-vendor) @@ -57,17 +52,21 @@ currentMenu: struttura ## Caratteristiche ### Open source + La natura open source (termine inglese che significa _sorgente aperta_) del progetto evidenzia lo spirito di collaborazione e condivisione che pervade l'attività di sviluppo del gestionale, di cui gli autori rendono pubblico il codice sorgente e ne favoriscono il libero studio, permettendo a programmatori indipendenti di apportarvi modifiche ed estensioni. Particolarmente espressiva in questo senso risulta essere la documentazione ufficiale del progetto: + > Il progetto è un software open source perché permette agli utilizzatori di studiarne il funzionamento ed adattarlo alle proprie esigenze; inoltre, in ambito commerciale, non obbliga l'utilizzatore ad essere legato allo stesso fornitore di assistenza. La licenza in utilizzo è la GNU General Public License 3.0 (GPL 3.0). ### Modulare e personalizzabile + OpenSTAManager possiede una struttura fortemente modulare, che ne permette la rapida espandibilità e, nello specifico, la realizzazione di funzionalità _ad hoc_, personalizzate nel modo più completo secondo le richieste del cliente. ### Multipiattaforma e user friendly + Il progetto risulta compatibile con numerose piattaforme, necessitando esclusivamente un browser moderno da parte dei suoi utilizzatori per sfruttare appieno le sue potenzialità. L'interfaccia di interazione con l'utente finale risulta inoltre estremamente semplificata e _user friendly_, oltre che _responsive_, presentando caratteristiche completamente compatibili con tutti i dispositivi mobili (in particolare, tablet e smartphone). @@ -91,26 +90,28 @@ Scaricando la versione GIT del progetto dovreste trovare una struttura di base m └── vendor Analizzeremo ora in dettaglio la funzione delle diverse cartelle e dei relativi contenuti. -Si avverte che il gestionale è fortemente basato sulla correttezza contemporanea di molti file: siete pertanto pregati di astenervi da modifiche o, se queste dovessero rivelarsi necessarie, procedere alla creazione di un relativo file custom nella cartella del file. E' comunque consigliabile richiedere l'assistenza ufficiale. +Si avverte che il gestionale è fortemente basato sulla correttezza contemporanea di molti file: siete pertanto pregati di astenervi da modifiche o, se queste dovessero rivelarsi necessarie, procedere alla creazione di un relativo file custom nella cartella del file. +E' comunque consigliabile richiedere l'assistenza ufficiale. -Per maggiori informazioni riguardanti il procedimento di personalizzazione, rivolgersi alla sezione [Personalizzazione]. +Per maggiori informazioni riguardanti la procedura di personalizzazione, rivolgersi alle specifiche sezioni di ogni settore. ## Root -I contenuti della cartella _root_, indicata nella struttura precedente dal punto inziale, sono estremamente importante per il progetto, in quanto sono generalmente dedicati a garantire il funzionamento dell'intero gestionale. +I contenuti della cartella _root_ sono estremamente importanti per il progetto, in quanto sono generalmente dedicati a garantire il corretto funzionamento dell'intero gestionale. Questa centralizzazione permette al software di essere estremamente scalabile e personalizzabile, soprattutto in relazione ai moduli. -Per maggiori informazioni riguardanti lo sviluppo di un modulo, consultare la sezione [Moduli]. +Per maggiori informazioni riguardanti lo sviluppo di un modulo, consultare la sezione [Moduli](Moduli.md). ### add.php Il file `add.php` è dedicato alla gestione dei form di creazione nuovi elementi all'interno dei vari moduli. -In particolare si occupa parallelamente della funzionalità di aggiunta al volo, visibile in azione nei modulo **Attività**, **Articoli** e in alcuni altri punti del software. + +In particolare si occupa parallelamente della funzionalità di aggiunta al volo, visibile in azione nei modulo **Interventi**, **Articoli** e in alcuni altri punti del software. ### ajax_autocomplete.php -Il file `ajax_dataload.php` gestisce il caricamento dinamico dei dati in varie sezioni del sito, relativamente alle operazioni di auto-completamento dei form. +Il file `ajax_dataload.php` gestisce il caricamento dinamico dei dati in varie sezioni del sito, relativamente alle operazioni di auto-completamento dei form e della ricerca globale. -**Attenzione**: questo sistema è ormai quasi deprecato e, tranne in rari casi, completamente sostituito dall'utilizzo del file `ajax_select.php` e dal plugin [Select2](https://select2.github.io/). +**Attenzione**: questo sistema è ormai deprecato e, tranne in rari casi, completamente sostituito dall'utilizzo del file `ajax_select.php` e dal plugin [Select2](https://select2.github.io/). ### ajax_dataload.php @@ -123,6 +124,7 @@ Il file `ajax_select.php` gestisce il caricamento dinamico dei dati nei diversi ### bug.php Il file `bug.php` si occupa della segnalazione dei bug, fornendo un sistema integrato di invio email dopo la configurazione di pochi parametri iniziali. + Le opzioni relative alle informazioni da allegare sono: - Allegare il file di log (fondamentale nel caso si stia effettuando una segnalazione) @@ -131,26 +133,29 @@ Le opzioni relative alle informazioni da allegare sono: ### core.php -Il _core_, come si può discernere dal nome, è il nucleo dell'intero gestionale: si occupa delle operazioni di inizializzazione fondamentali, compresa l'inclusione del file di configurazione `config.inc.php` e la creazione dell'elenco degli assets da includere. -Si occupa inoltre del controllo dei permessi, tramite l'inclusione di `lib/permissions.php`, e dell'individuazione delle informazioni di base relative al modulo aperto. +Il _core_ contiene il nucleo dell'intero gestionale: si occupa delle operazioni di inizializzazione fondamentali, compresa l'inclusione del file di configurazione `config.inc.php` e la creazione dell'elenco degli assets da includere. +Si occupa inoltre del controllo dei permessi, tramite il richiamo alla specifica classe `Permissions`, e dell'individuazione delle informazioni di base relative al modulo in utilizzo. ### config.inc.php Il file `config.inc.php` contiene tutte le informazioni per accedere correttamente al database e per determinare il tema utilizzato dal gestionale. **Attenzione**: questo file non è presente di default poiché obbligatoriamente da personalizzare tramite la procedura di installazione. +La struttura di base può essere comunque osservata all'interno del file `config.example.php`. ### controller.php -Il file `controller.php` si occupa di gestire l'accesso generico ai moduli, caricando le informazioni e i widget del modulo in oggetto. Permette inoltre la visualizzazione, in base ai permessi accordati all'utente, del pulsante di creazione nuovi elementi. +Il file `controller.php` si occupa di gestire l'accesso generico ai moduli, caricando le informazioni e i widget del modulo in oggetto. +Permette inoltre la visualizzazione, in base ai permessi accordati all'utente, del pulsante di creazione nuovi elementi. ### editor.php -Il file `editor.php` si occupa di gestire l'accesso specifico ai dati di un singolo elemento di un modulo, caricando al tempo stesso l'insieme di plugin (e, in casi più rari, di widget) legati alla visualizzazione dell'elemento in oggetto. Permette inoltre, in base ai permessi accordati all'utente, la modifica dei dati inseriti e l'interazione con altri moduli. +Il file `editor.php` si occupa di gestire l'accesso specifico ai dati di un singolo elemento di un modulo, caricando al tempo stesso l'insieme di plugin (e, in casi più rari, di widget) legati alla visualizzazione dell'elemento in oggetto. +Permette inoltre, in base ai permessi accordati all'utente, la modifica dei dati inseriti e l'interazione con altri moduli. ### index.php -Il file `index.php` si occupa delle operazioni di autenticazione (login e logout), oltre che effettuare un controllo sulla disponibilità di aggiornamenti (tramite l'inclusione di `update/update_checker.php`) e a garantire il redirect iniziale al primo modulo su cui l'utente possiede i permessi di accesso. +Il file `index.php` si occupa delle operazioni di accesso e scollegamento al gestionale, oltre che effettuare un controllo sulla disponibilità di aggiornamenti (tramite l'inclusione di `include/update.php`) e a garantire il redirect iniziale al primo modulo su cui l'utente possiede i permessi di accesso. ### info.php @@ -158,21 +163,21 @@ Il file `info.php` contiene la sezione informativa relativa al progetto, indican ### log.php -Il file `log.php` permette di visualizzare le informazioni relative agli ultimi 100 accessi, comprendenti eventuali tentativi falliti ed errori. +Il file `log.php` permette di visualizzare le informazioni relative agli ultimi 100 tentativi di accesso. -**Attenzione**: nel caso in cui l'utente sia un amministratore, le informazioni accessibili sono relative a _tutti_ i tentativi di accesso (al contrario, un utente normale può visualizzare esclusivamente i propri tentativi). +**Attenzione**: nel caso in cui l'utente sia un amministratore, le informazioni accessibili sono relative a **tutti** gli utenti (al contrario, un utente normale può visualizzare esclusivamente i propri tentativi). ### composer.json, gulpfile.js, package.json -Per maggiori informazioni questi file, consultare le sezioni [Framework] e [Assets]. +Per maggiori informazioni questi file, consultare le sezioni [Framework](Framework.md) e [Assets](Assets.md). ## Cartella api -Per maggiori informazioni riguardanti la cartella `api` e i suoi contenuti, rivolgersi alla sezione [API]. +Per maggiori informazioni riguardanti la cartella `api` e i suoi contenuti, rivolgersi alla sezione [API](API.md). ## Cartella assets -Per maggiori informazioni riguardanti la cartella `assets` e i suoi contenuti, rivolgersi alla sezione [Assets (CSS, JS e immagini)]. +Per maggiori informazioni riguardanti la cartella `assets` e i suoi contenuti, rivolgersi alla sezione [Assets](Assets.md). ## Cartella backup @@ -184,23 +189,28 @@ La cartella `docs`, come si può intuire, contiene la documentazione di sviluppo ## Cartella files -Per maggiori informazioni riguardanti la cartella `files` e i suoi contenuti, rivolgersi alla sezione [Moduli]. +Per maggiori informazioni riguardanti la cartella `files` e i suoi contenuti, rivolgersi alla sezione [Moduli](Moduli.md). ## Cartella include -### bottom.php (CUSTOMIZABLE) +### bottom.php Il file `bottom.php` si occupa delle operazioni di chiusura della pagina HTML, garantendo inoltre l'eliminazione dei log temporanei della sessione. -### top.php (CUSTOMIZABLE) +Si ricorda che è possibile creare una personalizzazione di questa pagina nella cartella `custom`. + +### top.php Il file `top.php` gestisce la creazione del layout di base del gestionale, comprendente la barra di navigazione e la sidebar. +Si ricorda che è possibile creare una personalizzazione di questa pagina nella cartella `custom`. + ## Cartella lib La cartella `lib` contiene le librerie personalizzate e le funzioni utilizzate dall'intero gestionale nei diversi moduli. -**Attenzione**: sono qui presenti solo i metodi generali e comunemente riutilizzati. Per maggiori informazioni riguardanti la locazione delle funzioni specifiche di un modulo, visitare la sezione [Moduli]. +**Attenzione**: sono qui presenti solo i metodi generali e comunemente riutilizzati. +Per maggiori informazioni riguardanti la locazione delle funzioni specifiche di un modulo, visitare la sezione [Moduli](Moduli.md). ### deprecated.php @@ -210,53 +220,27 @@ Il file `deprecated.php` contiente l'insieme di funzioni deprecate nella version Il file `functions.php` contiene tutte le funzioni comunemente utilizzate nel progetto. -### functionsjs.php (HTML) +### functionsjs.php Il file `functionsjs.php` contiene tutte le funzioni JavaScript comunemente utilizzate nel progetto. -### init.js (HTML) +### init.js Il file `init.js` contiene le funzioni JavaScript comunemente richiamate al caricamento di parti indipendenti del progetto. -### modulebuilder.php - -Il file `modulebuilder.php` contiene le funzioni (e le sezioni HTML) atte all'upload di file e all'individuazione degli stessi, oltre che alla loro gestione, nei vari moduli. - -### permissions_check.php - -Il file `permissions_check.php` si occupa dei controlli relativi ai permessi di accesso di un utente ad un determinato modulo. - -**Attenzione**: questo file è ora sostituito dalla classe Permissions. - -### user_check.php - -Il file `user_check.php` si occupa di controllare se è stato effettuato l'accesso. - -**Attenzione**: questo file è ora sostituito dalla classe Permissions. - -### classes/Database.php - -La classe Database gestisce la connessione con il database, rendendo disponibile un insieme di funzioni utili ad elaborare i risulti delle diverse query. - -### classes/HTMLBuilder.php - -La classe HTMLBuilder contiene i metodi responsabili della creazione di contenuto HTML partendo dal template interno del progetto. - -Per maggiori informazioni le caratteristiche del template utilizzato dal gestionale, rivolgersi alla sezione [Template]. - ## Cartella locale La cartella `locale` contiene tutte le traduzioni del progetto, nei formati tipici di Gettext (`.po` e `.mo`). ## Cartella modules -Per maggiori informazioni riguardanti la cartella `modules` e i suoi contenuti, rivolgersi alla sezione [Moduli]. +Per maggiori informazioni riguardanti la cartella `modules` e i suoi contenuti, rivolgersi alla sezione [Moduli](Moduli.md). Si ricorda che per tutti i contenuti del modulo è possibile creare una personalizzazione nella cartella `custom`. ## Cartella templates La cartella `templates` contiene tutti i file relativi alla visualizzazione in PDF dei dati dei vari moduli. -Per maggiori informazioni riguardanti la cartella `templates` e i suoi contenuti, rivolgersi alla sezione [Stampe]. +Per maggiori informazioni riguardanti la cartella `templates` e i suoi contenuti, rivolgersi alla sezione [Stampe](Stampe.md). ## Cartella update @@ -264,14 +248,14 @@ Per maggiori informazioni riguardanti la cartella `templates` e i suoi contenuti Il file `create_updates.sql` contiene la query SQL per la creazione della tabella di gestione degli aggiornamenti e delle installazioni del gestionale. -### update_VERSIONE.sql (OPEN) +### VERSIONE.sql I file `VERSIONE.sql` contengono l'insieme di query SQL necessarie per l'aggiornamento del gestionale alla versione _VERSIONE_. -### update_VERSIONE.php +### VERSIONE.php I file `VERSIONE.php` contengono l'insieme di operazioni PHP (e, talvolta, SQL) necessarie per l'aggiornamento del gestionale alla versione _VERSIONE_. ## Cartella vendor -Per maggiori informazioni riguardanti la cartella `vendor` e i suoi contenuti, rivolgersi alla sezione [Framework]. +Per maggiori informazioni riguardanti la cartella `vendor` e i suoi contenuti, rivolgersi alla sezione [Framework](Framework.md). diff --git a/templates/ddt/init.php b/templates/ddt/init.php index fd15143e2..d42aa881d 100644 --- a/templates/ddt/init.php +++ b/templates/ddt/init.php @@ -8,8 +8,8 @@ $rs = $dbo->fetchArray($q); $module_name = ($rs[0]['dir'] == 'entrata') ? 'Ddt di vendita' : 'Ddt di acquisto'; -$idcliente = $rs[0]['idanagrafica']; -$idsede = $rs[0]['idsede']; +$id_cliente = $rs[0]['idanagrafica']; +$id_sede = $rs[0]['idsede']; $numero = !empty($rs[0]['numero_esterno']) ? $rs[0]['numero_esterno'] : $rs[0]['numero']; diff --git a/templates/fatture/init.php b/templates/fatture/init.php index 9da4b3cd7..3b5f9a441 100644 --- a/templates/fatture/init.php +++ b/templates/fatture/init.php @@ -12,8 +12,8 @@ FROM co_documenti WHERE id='.prepare($iddocumento)); $module_name = ($rs[0]['dir'] == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto'; -$idcliente = $rs[0]['idanagrafica']; -$idsede = $rs[0]['idsede']; +$id_cliente = $rs[0]['idanagrafica']; +$id_sede = $rs[0]['idsede']; $tipo_doc = $rs[0]['tipo_doc']; if ($rs[0]['stato_doc'] != 'Bozza') { diff --git a/templates/info.php b/templates/info.php index 059c9215d..bdfa5e53b 100644 --- a/templates/info.php +++ b/templates/info.php @@ -36,13 +36,14 @@ $rsc = $dbo->fetchArray($queryc); // Lettura dati aziendali $rsf = $dbo->fetchArray("SELECT * FROM an_anagrafiche WHERE idanagrafica = (SELECT valore FROM zz_settings WHERE nome='Azienda predefinita')"); -$id_azienda = $rsd[0]['id']; +// Prefissi e contenuti del replace $replace = [ 'c_' => $rsc[0], 'f_' => $rsf[0], ]; +// Rinominazione di particolari campi all'interno delle informazioni su anagrafica e azienda $rename = [ 'capitale_sociale' => 'capsoc', 'ragione_sociale' => 'ragionesociale', @@ -51,13 +52,15 @@ $rename = [ $keys = []; +// Predisposizione delle informazioni delle anagrafiche per la sostituzione automatica foreach ($replace as $prefix => $values) { + // Individuazione dei campi minimi $values = (array) $values; if ($prefix == 'c_') { $keys = array_keys($values); } - // Azienda predefinita non impostata + // Se l'azienda predefinita non è impostata if (empty($values) && $prefix == 'f_') { $values = []; foreach ($keys as $key) { @@ -65,17 +68,19 @@ foreach ($replace as $prefix => $values) { } } + // Rinominazione dei campi foreach ($rename as $key => $value) { $values[$value] = $values[$key]; unset($values[$key]); } + // Salvataggio dei campi come variabili PHP foreach ($values as $key => $value) { ${$prefix.$key} = $value; } + // Eventuali estensioni dei contenuti $citta = ''; - if (!empty($values['cap'])) { $citta .= $values['cap']; } @@ -88,10 +93,12 @@ foreach ($replace as $prefix => $values) { $values['citta_full'] = $citta; + // Completamento dei campi minimi if ($key == 'c_') { $keys = array_unique(array_merge($keys, array_keys($values))); } + // Aggiunta delle informazioni per la sostituzione automatica foreach ($values as $key => $value) { $replaces[$prefix.$key] = $value; } diff --git a/templates/pdfgen_variables.php b/templates/pdfgen_variables.php index 79a4cb4d9..e0780c61a 100644 --- a/templates/pdfgen_variables.php +++ b/templates/pdfgen_variables.php @@ -2,6 +2,7 @@ include_once __DIR__.'/info.php'; +// Retrocompatibilità con le stampe gestite da HTML2PDF $replaces['pagination'] = str_replace(['{PAGENO}', '{nb}'], ['[[page_cu]]', '[[page_nb]]'], $replaces['pagination']); $prefixes = [