Skip to content

Commit

Permalink
release(2.5.0): review code
Browse files Browse the repository at this point in the history
  • Loading branch information
arturu committed May 10, 2024
1 parent 984c200 commit 1e3fb7b
Show file tree
Hide file tree
Showing 24 changed files with 114 additions and 647 deletions.
91 changes: 59 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
![NPM Downloads](https://img.shields.io/npm/dt/%40ouitoulia%2Fskenografia?style=for-the-badge&label=NPM%20DOWNLOADS&logo=npm)


Skenografia è un sub-theme drupal, basato su [bootstrap_italia](https://drupal.org/project/bootstrap_italia), progettato per implementare il design delle scuole.
Skenografia è un sub-theme drupal, basato su [bootstrap_italia](https://drupal.org/project/bootstrap_italia), progettato
per implementare il design delle scuole.

## Architettura dei contenuti
Skenografia rappresenta il frontend dell'[architettura dei contenuti delle scuole v1](https://designers.italia.it/modelli/scuole/adotta-il-modello-di-sito-scolastico/definisci-architettura-e-contenuti/)
Expand All @@ -21,29 +22,33 @@ mentre il backend è gestito dal modulo [ouitoulia/themethla](https://github.com
L'interfaccia grafica è basata sui [I template HTML](https://designers.italia.it/modelli/scuole/adotta-il-modello-di-sito-scolastico/realizza-l-interfaccia-del-sito-scolastico/)
sviluppati da Designer Italia.

Skenografia aggiorna i Template HTML dalla versione 1.6 di Bootstrap Italia alla versione 2,
rendendo il tema compatibile con Bootstrap 5.2.
Skenografia aggiorna i Template HTML dalla versione 1.6 di Bootstrap Italia alla
versione 2, rendendo il tema compatibile con Bootstrap 5.2.

### Componenti
Rispetto al repository [Design scuola pagine statiche](https://github.com/italia/design-scuole-pagine-statiche)
il tema usa componenti - menu, card, header, footer, ecc. - conformi a ![Libraries.io dependency status for latest release](https://img.shields.io/github/package-json/dependency-version/ouitoulia/skenografia/bootstrap-italia?style=flat&logo=github)
il tema usa componenti - menu, card, header, footer, ecc. - conformi a
![Libraries.io dependency status for latest release](https://img.shields.io/github/package-json/dependency-version/ouitoulia/skenografia/bootstrap-italia?style=flat&logo=github)
al posto di `bootstrap-italia:1.6`.

### Librerie CSS/JS
Rispetto al repository [Design scuola pagine statiche](https://github.com/italia/design-scuole-pagine-statiche)
gli stili CSS e i componenti JavaScript sono stati riscritti per essere conformi a ![Libraries.io dependency status for latest release](https://img.shields.io/github/package-json/dependency-version/ouitoulia/skenografia/bootstrap-italia?style=flat&logo=github)
gli stili CSS e i componenti JavaScript sono stati riscritti per essere conformi
a ![Libraries.io dependency status for latest release](https://img.shields.io/github/package-json/dependency-version/ouitoulia/skenografia/bootstrap-italia?style=flat&logo=github)
al posto di `bootstrap-italia:1.6`.

La differenza più rilevante rispetto agli assets pubblicati nel repo [Design scuola pagine statiche](https://github.com/italia/design-scuole-pagine-statiche),
oltre alla compatibilità alla versione 2 di bootstrap-italia, riguarda il design del software.
Dal punto di vista del design, è stato abbandonato l'approccio della sovrascrittura
degli stili (noto come "override" e/o "on top") in favore di un'implementazione
più efficiente e scalabile.
La differenza più rilevante rispetto agli assets pubblicati nel repo
[Design scuola pagine statiche](https://github.com/italia/design-scuole-pagine-statiche),
oltre alla compatibilità alla versione 2 di bootstrap-italia, riguarda il design
del software. Dal punto di vista del design, è stato abbandonato l'approccio
della sovrascrittura degli stili (noto come "override" e/o "on top") in favore
di un'implementazione più efficiente e scalabile.
Skenografia adotta un sistema di build dinamico, il processo di sviluppo si basa
sulla modifica delle variabili di bootstrap-italia per poi compilare la variante di
bootstrap-italia con il design delle scuole.
Questo approccio non solo migliora le prestazioni, ma anche la manutenibilità del codice,
consentendo al progetto un'espansione più fluida, gestibile e riusabile.
sulla modifica delle variabili di bootstrap-italia per poi compilare la variante
di bootstrap-italia con il design delle scuole.
Questo approccio non solo migliora le prestazioni, ma anche la manutenibilità
del codice, consentendo al progetto un'espansione più fluida,
gestibile e riusabile.

### Distribuzione

Expand All @@ -52,37 +57,48 @@ consentendo al progetto un'espansione più fluida, gestibile e riusabile.
![Packagist Downloads](https://img.shields.io/packagist/dt/ouitoulia/skenografia?label=Composer%20downloads)
![NPM Downloads](https://img.shields.io/npm/dt/%40ouitoulia%2Fskenografia?label=NPM%20downloads&logo=npm)

I sorgenti SCSS e JavaScript vengono caricati automaticamente su npm per agevolare il
riutilizzo e la personalizzazione da parte degli sviluppatori. Inoltre attraverso l'uso delle
GitHub Actions, le librerie vengono automaticamente compilate e distribuite su diverse CDN
I sorgenti SCSS e JavaScript vengono caricati automaticamente
su npm per agevolare il riutilizzo e la personalizzazione
da parte degli sviluppatori. Inoltre attraverso l'uso delle GitHub Actions,
le librerie vengono automaticamente compilate e distribuite su diverse CDN
in modo che siano già pronte per la produzione.

- https://github.com/ouitoulia/skenografia/releases/latest (build produzione e sorgenti tema)
- https://www.npmjs.com/package/@ouitoulia/skenografia (sorgenti scss e js)
- https://www.jsdelivr.com/package/npm/@ouitoulia/skenografia (build produzione)
- https://classic.yarnpkg.com/en/package/@ouitoulia/skenografia (build produzione)
- https://unpkg.com/browse/@ouitoulia/[email protected]/ (sorgenti scss e js e build produzione)
- https://github.com/ouitoulia/skenografia/releases/latest
(build produzione e sorgenti tema)
- https://www.npmjs.com/package/@ouitoulia/skenografia
(sorgenti scss e js)
- https://www.jsdelivr.com/package/npm/@ouitoulia/skenografia
(build produzione)
- https://classic.yarnpkg.com/en/package/@ouitoulia/skenografia
(build produzione)
- https://unpkg.com/browse/@ouitoulia/[email protected]/
(sorgenti scss e js e build produzione)

## Issue
Le issue vengono gestite nel repository principale del progetto:
https://github.com/ouitoulia/diagraphe/issues

## Contributori, dipendenze e altre informazioni
Per contribuire al progetto effettua un Fork, aggiungi le tue modifiche e poi fai una Pull Request.
Per contribuire al progetto effettua un Fork, aggiungi le tue modifiche
e poi fai una Pull Request.

- [Contributori di Skenografia](https://github.com/ouitoulia/skenografia/graphs/contributors)
- [Elenco delle dipendenze di Skenografia](https://github.com/ouitoulia/skenografia/network/dependencies)

## Licenze software dei componenti di terze parti
### Componenti distribuiti con Skenografia

Vengono di seguito elencate le licenze dei componenti distribuiti (fonte: [package.json/dependencies](package.json))
- [Bootstrap Italia 2](https://italia.github.io/bootstrap-italia/) © Team per la Trasformazione Digitale, licenza BSD
- [Design scuole pagine statiche](https://github.com/italia/design-scuole-pagine-statiche) © Team per la Trasformazione Digitale, licenza BSD
Vengono di seguito elencate le licenze dei componenti distribuiti
(fonte: [package.json/dependencies](package.json))
- [Bootstrap Italia 2](https://italia.github.io/bootstrap-italia/) © Team per la Trasformazione Digitale,
licenza BSD
- [Design scuole pagine statiche](https://github.com/italia/design-scuole-pagine-statiche) © Team per la
Trasformazione Digitale, licenza BSD
- [Hamburgers](https://jonsuh.com/hamburgers/) © Jonathan Suh, licenza MIT

### Principali dipendenze per la fase di compilazione e sviluppo
Vengono di seguito elencate le licenze dei componenti usati per lo sviluppo (fonte: [package.json/devDependencies](package.json))
Vengono di seguito elencate le licenze dei componenti usati per
lo sviluppo (fonte: [package.json/devDependencies](package.json))
- [clean-webpack-plugin](https://github.com/johnagan/clean-webpack-plugin) © PonteLabs, licenza MIT
- [copy-webpack-plugin](https://github.com/webpack-contrib/copy-webpack-plugin) © webpack-contrib, licenza MIT
- [cross-env](https://github.com/kentcdodds/cross-env) © Kent C. Dodds, licenza MIT
Expand All @@ -106,12 +122,23 @@ Vengono di seguito elencate le licenze dei componenti usati per lo sviluppo (fon

Copyright (C) 2023/2024 https://github.com/ouitoulia

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License version 3
as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.

Questo è un software libero: puoi ridistribuirlo e/o modificarlo secondo i termini della GNU General Public License versione 3 pubblicata dalla Free Software Foundation.
Questo è un software libero: puoi ridistribuirlo e/o modificarlo secondo
i termini della GNU General Public License versione 3 pubblicata dalla
Free Software Foundation.

Questo programma è distribuito nella speranza che possa essere utile, ma SENZA ALCUNA GARANZIA; senza nemmeno la garanzia implicita di COMMERCIABILITÀ o IDONEITÀ PER UNO SCOPO PARTICOLARE. Vedere la GNU General Public License per maggiori dettagli.
Questo programma è distribuito nella speranza che possa essere utile,
ma SENZA ALCUNA GARANZIA; senza nemmeno la garanzia implicita di
COMMERCIABILITÀ o IDONEITÀ PER UNO SCOPO PARTICOLARE.
Vedere la GNU General Public License per maggiori dettagli.

Questo software è distribuito sotto i termini della GNU Affero General Public License versione 3 (AGPL-3.0)
Questo software è distribuito sotto i termini della GNU Affero General Public
License versione 3 (AGPL-3.0)
4 changes: 2 additions & 2 deletions includes/form.inc
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
use Drupal\Core\Form\FormStateInterface;

/**
* Implements hook_form_alter()
* Implements hook_form_alter().
*/
function skenografia_form_alter(&$form, FormStateInterface &$form_state,$form_id) {
function skenografia_form_alter(&$form, FormStateInterface &$form_state, $form_id):void {
if (isset($form['#id']) && $form['#id'] == 'views-exposed-form-secondo-livello-servizi-personale-scolastico') {
$tmp_array = [];
$tmp_array[1202] = $form['field_tipologia_servizio_target_id']['#options'][1202];
Expand Down
2 changes: 1 addition & 1 deletion includes/preprocess-block.inc
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ function skenografia_preprocess_block(array &$variables): void {
try {
$variables = array_merge_recursive($variables, Helper::getLocality());
}
catch (InvalidPluginDefinitionException|PluginNotFoundException $e) {
catch (InvalidPluginDefinitionException | PluginNotFoundException $e) {
}
}
}
4 changes: 1 addition & 3 deletions includes/preprocess-breadcrumb.inc
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@
* Preprocess breadcrumb.
*/

use Drupal\Core\Template\Attribute;

/**
* Implements hook_preprocess_HOOK() for breadcrumb.html.twig.
*/
Expand All @@ -25,7 +23,7 @@ function skenografia_preprocess_breadcrumb(array &$variables): void {

// Fix cache.
$variables['#cache']['contexts'][] = 'url';
$variables['breadcrumb'][ array_key_last($variables['breadcrumb']) ]["text"] = $page_title_sanitized;
$variables['breadcrumb'][array_key_last($variables['breadcrumb'])]["text"] = $page_title_sanitized;
}
}
}
12 changes: 8 additions & 4 deletions includes/preprocess-region.inc
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,26 @@
*/

use Drupal\bootstrap_italia\Helper\Helper;
use Drupal\skenografia\Helper\Helper as SHelper;
use Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException;
use Drupal\Component\Plugin\Exception\PluginNotFoundException;
use Drupal\skenografia\Helper\Helper as SHelper;

/**
* Implements hook_preprocess_region().
*/
function skenografia_preprocess_region(array &$variables): void {

if ($variables['region'] == 'header_nav') {
// Branding
// Branding.
$variables['site_logo'] = Drupal::theme()->getActiveTheme()->getLogo();
$variables['site_name'] = Drupal::config('system.site')->get('name');
$variables['site_slogan'] = Drupal::config('system.site')->get('slogan');
try {$variables = array_merge_recursive($variables, SHelper::getLocality());}
catch (InvalidPluginDefinitionException|PluginNotFoundException $e) {}
try {
$variables = array_merge_recursive($variables, SHelper::getLocality());
}
catch (InvalidPluginDefinitionException | PluginNotFoundException $e) {

}

// Social.
// NB queste due linee potrebbero sembrare duplicate ma non lo sono.
Expand Down
1 change: 0 additions & 1 deletion includes/preprocess-views.inc
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,3 @@
* @file
* Hook THEME_preprocess_views_view_HOOK().
*/

41 changes: 24 additions & 17 deletions includes/preprocess.inc
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,25 @@
* Hook THEME_preprocess.
*/

use Drupal\skenografia\Helper\Helper as SHelper;
use Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException;
use Drupal\Component\Plugin\Exception\PluginNotFoundException;
use Drupal\skenografia\Helper\Helper as SHelper;
use Drupal\user\Entity\User;

/**
* Implements hook_preprocess_HOOK() for all templates.
*/
function skenografia_preprocess(&$variables): void {
// @todo: Ricordarsi di fare UI per permettere la modifica della variabile
// @todo Ricordarsi di fare UI per permettere la modifica della variabile
$variables['skenografia_libraries_path'] = '/libraries/ouitoulia-skenografia';

// Restituisco l'anno scolastico corrente
// Restituisco l'anno scolastico corrente.
$data_di_cambio_anno_scolastico = ((int) date('n') * 100) + (int) date('j');
if ($data_di_cambio_anno_scolastico > 831) {
$variables['anno_scolastico_corrente'] = date('Y') . '/' . (int) date('Y') + 1;
}
else {
$variables['anno_scolastico_corrente'] = (int) date('Y') - 1 . '/' . date('Y');
$variables['anno_scolastico_corrente'] = (int) date('Y') - 1 . '/' . date('Y');
}
}

Expand All @@ -31,47 +32,53 @@ function skenografia_preprocess(&$variables): void {
*/
function skenografia_preprocess_node(&$variables): void {
// Recupero le informazioni sull'autore nel caso siano presenti in
// un contenuto di tipo Persona
// un contenuto di tipo Persona.
if (
isset($variables['node']) &&
$variables['node']->hasField('field_persona_responsabile')
) {
/** @var \Drupal\node\Entity\Node $node */
$node = $variables['node'];

// Get node submitter
// Get node submitter.
$uid = $node->getOwner()->id();

// Load submitter account
$account = \Drupal\user\Entity\User::load($uid);
// Load submitter account.
$account = User::load($uid);

if ($account->field_codice_fiscale->getValue()) {
// get codice fiscale from submitter account
// Get codice fiscale from submitter account.
$cf = $account->field_codice_fiscale->getValue()[0]['value'];

// load profile (Persona), if exists return id else null
// Load profile (Persona), if exists return id else null
// https://www.drupal.org/docs/drupal-apis/entity-api/working-with-the-entity-api#s-load-an-entity-from-the-database
$nids = \Drupal::entityTypeManager()
->getStorage('node')
->loadByProperties([
'field_codice_fiscale' => $cf,
]);
// nid or null
// Nid or null.
$variables['author_profile_nid'] = array_key_first($nids);
} else {
}
else {
$variables['author_profile_nid'] = NULL;
}
} else {
}
else {
$variables['author_profile_nid'] = NULL;
}

// Variabili necessarie nel nodo "/scuola"
// Variabili necessarie nel nodo "/scuola".
if ($variables['url'] == '/scuola') {
$variables['site_logo'] = Drupal::theme()->getActiveTheme()->getLogo();
$variables['site_name'] = Drupal::config('system.site')->get('name');
$variables['site_slogan'] = Drupal::config('system.site')->get('slogan');
try {$variables = array_merge_recursive($variables, SHelper::getLocality());}
catch (InvalidPluginDefinitionException|PluginNotFoundException $e) {}
try {
$variables = array_merge_recursive($variables, SHelper::getLocality());
}
catch (InvalidPluginDefinitionException | PluginNotFoundException $e) {

}
}

}
Expand All @@ -81,7 +88,7 @@ function skenografia_preprocess_node(&$variables): void {
*/
function skenografia_preprocess_oembed_lazyload(&$variables): void {
$variables['privacy_path'] =
null !== theme_get_setting('privacy_policy') ?
NULL !== theme_get_setting('privacy_policy') ?
Drupal::service('path_alias.manager')->getAliasByPath('/node/' . theme_get_setting('privacy_policy')[0]['target_id']) : '#';
}

Expand Down
8 changes: 7 additions & 1 deletion includes/suggestions.inc
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ function skenografia_theme_suggestions_page_alter(array &$suggestions, array &$v
}

/**
* Implements hook_theme_suggestions_node_alter().
* Implements hook_theme_suggestions_HOOK_alter().
*/
function skenografia_theme_suggestions_node_alter(array &$suggestions, array $variables): void {
if (in_array('node__type_page__view_mode_full', $suggestions, TRUE)) {
Expand All @@ -27,6 +27,9 @@ function skenografia_theme_suggestions_node_alter(array &$suggestions, array $va
}
}

/**
* Implements hook_theme_suggestions_HOOK_alter().
*/
function skenografia_theme_suggestions_views_view_fields_alter(array &$suggestions, array &$variables): void {
if (isset($variables['view'])) {
$view = $variables['view'];
Expand All @@ -36,6 +39,9 @@ function skenografia_theme_suggestions_views_view_fields_alter(array &$suggestio
}
}

/**
* Implements hook_theme_suggestions_HOOK_alter().
*/
function skenografia_theme_suggestions_views_view_field_alter(array &$suggestions, array &$variables): void {
if (isset($variables['field']) && isset($variables['view'])) {
$field = $variables['field'];
Expand Down
6 changes: 3 additions & 3 deletions includes/theme-settings.inc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
* @file
* Theme settings.
*/

use Drupal\Core\Form\FormStateInterface;
use Drupal\node\Entity\Node;

Expand Down Expand Up @@ -42,8 +43,8 @@ function skenografia_form_system_theme_settings_alter(array &$form, FormStateInt
'#tags' => TRUE,
'#selection_handler' => 'default',
'#default_value' =>
null !== theme_get_setting('privacy_policy') ?
Node::load(theme_get_setting('privacy_policy')[0]['target_id']) : 0,
NULL !== theme_get_setting('privacy_policy') ?
Node::load(theme_get_setting('privacy_policy')[0]['target_id']) : 0,
];

$form['#validate'][] = 'skenografia_form_system_theme_settings_validate';
Expand Down Expand Up @@ -75,4 +76,3 @@ function skenografia_form_system_theme_settings_validate(array &$form, FormState
}
}
}

13 changes: 0 additions & 13 deletions modules/bi_calendar/bi_calendar.info.yml

This file was deleted.

Loading

0 comments on commit 1e3fb7b

Please sign in to comment.