diff --git a/couscous.yml b/couscous.yml index 5b1cb275a..0dacef4f1 100644 --- a/couscous.yml +++ b/couscous.yml @@ -15,7 +15,7 @@ github: title: OpenSTAManager subTitle: Il software gestionale open-source per l'assistenza tecnica e la fatturazione fontAwesomeIcon: fa fa-cog -footerText: 'Progettato e sviluppato da DevCode.' +footerText: 'Progettato e sviluppato da DevCode.' googleAnalyticsCode: UA-42808312-1 scripts: @@ -37,43 +37,49 @@ menu: aggiornamento: text: Aggiornamento relativeUrl: aggiornamento.html - api: - text: API - relativeUrl: api.html contribuire: text: Contribuire relativeUrl: contributing.html structure: - name: Approfondimenti + name: Strutture items: - struttura: - text: Struttura - relativeUrl: struttura.html moduli: text: Moduli - relativeUrl: moduli.html - upload: - text: Gestione degli upload - relativeUrl: upload.html - widget: + relativeUrl: structure/moduli.html + plugin: text: Plugin - relativeUrl: widget.html + relativeUrl: structure/plugin.html stampe: text: Stampe - relativeUrl: stampe.html + relativeUrl: structure/stampe.html widget: text: Widget - relativeUrl: widget.html - custom: + relativeUrl: structure/widget.html + more: + name: Approfondimenti + items: + nucleo: + text: Nucleo + relativeUrl: more/nucleo.html + upload: + text: Upload + relativeUrl: more/upload.html + extra: + text: Extra + relativeUrl: more/extra.html + api: + text: API + relativeUrl: more/api.html + base: name: Personalizzazione items: framework: text: Framework - relativeUrl: framework.html + relativeUrl: base/framework.html assets: text: Assets - relativeUrl: assets.html - more: + relativeUrl: base/assets.html + links: name: Link utili items: docs: diff --git a/docs/Aggiornamento.md b/docs/Aggiornamento.md index 9cc962557..d8cd350f7 100644 --- a/docs/Aggiornamento.md +++ b/docs/Aggiornamento.md @@ -85,5 +85,5 @@ Per reimpostare la password di un account amministrativo è possibile procedere - Se esiste un altro account amministrativo, seguire la procedura precedente per gli account comuni; - Accedere al database ed eseguire la seguente query: ```sql - UPDATE `zz_utenti` SET password = MD5('nuova_password') WHERE username = 'admin'; + UPDATE `zz_users` SET `password` = MD5('nuova_password') WHERE `username` = 'admin'; ``` diff --git a/docs/Assets.md b/docs/base/Assets.md similarity index 100% rename from docs/Assets.md rename to docs/base/Assets.md diff --git a/docs/Framework.md b/docs/base/Framework.md similarity index 100% rename from docs/Framework.md rename to docs/base/Framework.md diff --git a/docs/API.md b/docs/more/API.md similarity index 100% rename from docs/API.md rename to docs/more/API.md diff --git a/docs/more/Extra.md b/docs/more/Extra.md new file mode 100644 index 000000000..1ad419ac8 --- /dev/null +++ b/docs/more/Extra.md @@ -0,0 +1,29 @@ +--- +currentMenu: extra +--- + +# Extra + + + +- [Campi personalizzati](#campi-personalizzati) +- [Messaggi personalizzati](#messaggi-personalizzati) + + + +## Campi personalizzati + +A partire dalla versione 2.4 è possibile sfruttare dei campi personalizzati per aggiungere informazioni ai moduli principali in modo dinamico. + +Questi campi sono gestiti a livello di database attarverso le tabelle `zz_fields` e `zz_field_record`, che si occupano riespettivamente della gestione generale dei campi e del salvataggio dei record personalizzati. +Le procedure automatiche di gestione di questi campi sono integrate nei file `actions.php`, `editor.php` e `add.php`. + +E' eventualmente disponibile il modulo **Campi personalizzati**, da abilitare, per la gestione dinamica di queste informazioni. + +## Messaggi personalizzati + +A partire dalla versione 2.4.2 è stato reso possibile inserire dei messaggi, specifici per l'installazione in utilizzo, presenti in ogni pagina del gestionale. + +E' possibile procedere alla personalizzazione di questi contenuti attraverso i seguenti file (da creare secondo necessità): + - `include/custom/extra/login.php`, dedicato ai messaggi da mostrare all'accesso + - `include/custom/extra/extra.php`, per i messaggi da mostrare una volta che l'utente si è autenticato diff --git a/docs/Struttura.md b/docs/more/Nucleo.md similarity index 83% rename from docs/Struttura.md rename to docs/more/Nucleo.md index 073988559..e718c3347 100644 --- a/docs/Struttura.md +++ b/docs/more/Nucleo.md @@ -1,21 +1,17 @@ --- -currentMenu: struttura +currentMenu: nucleo --- # Struttura -- [Caratteristiche](#caratteristiche) - - [open-source](#open-source) - - [Modulare e personalizzabile](#modulare-e-personalizzabile) - - [Multipiattaforma e user friendly](#multipiattaforma-e-user-friendly) - [Struttura](#struttura) - [Root](#root) - [add.php](#addphp) - - [ajax_complete.php](#ajax_completephp) - - [ajax_dataload.php](#ajax_dataloadphp) - - [ajax_select.php](#ajax_selectphp) + - [ajax_complete.php](#ajaxcompletephp) + - [ajax_dataload.php](#ajaxdataloadphp) + - [ajax_select.php](#ajaxselectphp) - [bug.php](#bugphp) - [core.php](#corephp) - [config.inc.php](#configincphp) @@ -42,34 +38,13 @@ currentMenu: struttura - [Cartella modules](#cartella-modules) - [Cartella templates](#cartella-templates) - [Cartella update](#cartella-update) - - [create_updates.sql](#create_updatessql) + - [create_updates.sql](#createupdatessql) - [VERSIONE.sql](#versionesql) - [VERSIONE.php](#versionephp) - [Cartella vendor](#cartella-vendor) -## 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). - ## Struttura Scaricando la versione GIT del progetto dovreste trovare una struttura di base molto simile a quella seguente. diff --git a/docs/Upload.md b/docs/more/Upload.md similarity index 100% rename from docs/Upload.md rename to docs/more/Upload.md diff --git a/docs/Moduli.md b/docs/structure/Moduli.md similarity index 100% rename from docs/Moduli.md rename to docs/structure/Moduli.md diff --git a/docs/Plugin.md b/docs/structure/Plugin.md similarity index 100% rename from docs/Plugin.md rename to docs/structure/Plugin.md diff --git a/docs/Stampe.md b/docs/structure/Stampe.md similarity index 100% rename from docs/Stampe.md rename to docs/structure/Stampe.md diff --git a/docs/Widget.md b/docs/structure/Widget.md similarity index 100% rename from docs/Widget.md rename to docs/structure/Widget.md diff --git a/gulpfile.js b/gulpfile.js index 60887259a..1a8335796 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -300,11 +300,13 @@ gulp.task('release', function () { 'files/**', 'logs/**', 'config.inc.php', - '*.lock', - '*.phar', + '**/*.lock', + '**/*.phar', '**/*.log', '**/*.zip', '**/*.bak', + '**/*.jar', + '**/*.txt', '**/~*', ] }); diff --git a/lib/util.php b/lib/util.php index 6e1dd260e..679d39609 100644 --- a/lib/util.php +++ b/lib/util.php @@ -99,6 +99,34 @@ if (!function_exists('str_contains')) { } } +if (!function_exists('str_to_lower')) { + /** + * Converts a string in the lower-case version. + * + * @param string $string + * + * @return bool + */ + function str_to_lower($string) + { + return S::create($string)->toLowerCase(); + } +} + +if (!function_exists('str_to_upper')) { + /** + * Converts a string in the upper-case version. + * + * @param string $string + * + * @return bool + */ + function str_to_upper($string) + { + return S::create($string)->toUpperCase(); + } +} + if (!function_exists('random_string')) { /** * Generates a string of random characters. diff --git a/modules/articoli/import.php b/modules/articoli/import.php index 6117a66c9..b0510e0ea 100644 --- a/modules/articoli/import.php +++ b/modules/articoli/import.php @@ -123,8 +123,6 @@ return [ 'names' => [ 'Unità di misura', 'Unità misura', - 'unità misura', - 'unità di misura', 'Unit` di misura', 'um', ], @@ -132,18 +130,10 @@ return [ [ 'field' => 'prezzo_acquisto', 'label' => 'Prezzo acquisto', - 'names' => [ - 'Prezzo Acquisto', - 'prezzo acquisto', - ], ], [ 'field' => 'prezzo_vendita', 'label' => 'Prezzo vendita', - 'names' => [ - 'Prezzo Vendita', - 'prezzo vendita', - ], ], [ 'field' => 'peso_lordo', @@ -158,7 +148,7 @@ return [ 'label' => 'Volume (M3)', 'names' => [ 'Volume (M3)', - 'volume', + 'Volume', ], ], [ @@ -168,7 +158,6 @@ return [ 'Categoria', 'id_categoria', 'idcategoria', - 'categoria', ], ], [ diff --git a/modules/custom_fields/actions.php b/modules/custom_fields/actions.php new file mode 100644 index 000000000..a214b82a6 --- /dev/null +++ b/modules/custom_fields/actions.php @@ -0,0 +1,46 @@ +update('zz_fields', [ + 'id_module' => $module, + 'id_plugin' => $plugin, + 'name' => post('name'), + 'html_name' => post('html_name'), + 'content' => post('content'), + 'on_add' => post('on_add'), + 'top' => post('top'), + ], ['id' => $id_record]); + + $_SESSION['infos'][] = tr('Salvataggio completato!'); + + break; + + case 'add': + $plugin = post('plugin_id') ?: null; + $module = $plugin ? null : post('module_id'); + + $dbo->insert('zz_fields', [ + 'id_module' => $module, + 'id_plugin' => $plugin, + 'name' => post('name'), + 'content' => post('content'), + 'html_name' => secure_random_string(8), + ]); + $id_record = $dbo->lastInsertedID(); + + $_SESSION['infos'][] = tr('Nuovo campo personalizzato creato!'); + + break; + + case 'delete': + $dbo->delete('zz_fields', ['id' => $id_record]); + $dbo->delete('zz_field_record', ['id_field' => $id_record]); + + break; +} diff --git a/modules/custom_fields/add.php b/modules/custom_fields/add.php new file mode 100644 index 000000000..a47fa486c --- /dev/null +++ b/modules/custom_fields/add.php @@ -0,0 +1,37 @@ +
diff --git a/modules/custom_fields/edit.php b/modules/custom_fields/edit.php new file mode 100644 index 000000000..6b2e90d74 --- /dev/null +++ b/modules/custom_fields/edit.php @@ -0,0 +1,87 @@ + + + + +:
+|'.$key.'|
',
+ '_FIELD_' => $value,
+ ]).'|value|
',
+ ]).''.tr("Puoi utilizzare le seguenti variabili nell'oggetto e nel corpo della mail").':
-'.tr("Puoi utilizzare le seguenti sequenze di testo nell'oggetto e nel corpo della mail").':
+{'.$variable.'}
'.tr('Non sono state definite variabili da utilizzare nel template').'.
'; } +echo ' +:
+#### .
+foreach ($list as $key => $value) { + echo ' +'.$key.'
',
+ '_FIELD_' => $value,
+ ]).'YYYY 'yy', - ]); ?>.
- -'####', - '_YYYY_' => 'YYYY', - ]); ?>.
- -.
+