Skip to content

Funzionalità

Francesco Malatesta edited this page Jun 22, 2016 · 4 revisions

Dopo aver visto cosa è stato tenuto fuori e cosa no in questa ultima versione di Laravel-Italia, tocca analizzare un po' nel dettaglio le varie funzionalità implementate. Prima di differenziare però il sito dal suo pannello di controllo (le due macro aree), analizziamo i due atomi fondamentali, alla base di tutto.

L'Utente

Fino ad oggi, in Laravel-Italia per "utente" si consideravano due figure:

  • l'utente "amministratore", che scriveva e pubblicava articoli;
  • l'utente "del forum", cioè che scriveva sul forum e partecipava alla vita dei vari topic;

Delegando a Discourse la gestione del forum, le cose ovviamente sono cambiate. Gli utenti del forum saranno infatti gestiti da Discourse stesso, e saranno separati da quelli del sito. Identificheremo come utente esclusivamente chi ha accesso al pannello di controllo, per scrivere articoli ed effettuare altre operazioni riservate.

C'è da dire però che è rimasta una differenziazione di ruoli. Infatti, un utente potrà essere:

  • Amministratore, avendo il completo controllo dell'applicazione;
  • Editor, avendo la possibilità di scrivere degli articoli (ma non mandarli in pubblicazione) e caricare dei media;

Insomma, l'Editor sarà una sorta di amministratore con un set di permessi ristretti.

Inoltre, dal pannello di controllo stesso sarà possibile invitare un nuovo editor a partecipare specificando il suo nome ed indirizzo email. Il resto verrà gestito automaticamente, attraverso l'invio di una mail con le istruzioni riguardanti la procedura di completamento dell'iscrizione e conferma dell'account.

Gli Articoli

Un utente (admin o editor che sia) potrà scrivere un nuovo articolo e salvarlo. Automaticamente, dopo il salvataggio questo verrà messo in una specifica coda di articoli "da revisionare" e da mandare in pubblicazione. Sarà proprio l'amministratore a scegliere quando pubblicarlo.

La pubblicazione ovviamente potrà essere anche dilazionata nel tempo: non necessariamente bisognerà marcare manualmente l'articolo come pubblicato esattamente nel momento in cui si vorrà pubblicarlo. Basterà specificare una data, e via.

Esattamente come avveniva per la versione precedente, ogni articolo dovrà essere correlato ad almeno una categoria, e potrà opzionalmente far parte di una serie. Gli articoli saranno tutti visibili nella pagina /articoli, mentre le serie saranno disponibili in /serie.

Il Sito

Gli utenti e gli articoli sono quindi le unità fondamentali di tutto il lavoro. Partendo da questa base adesso posso passare a delinare quelle che sono le funzionalità del sito, prima ancora di quelle del pannello di amministrazione.

Uno "scorcio" della nuova homepage.

Il lettore potrà accedere a diverse pagine:

  • Home Page: che non penso abbia bisogno di spiegazioni. Qui viene mostrato un jumbotron con alcune informazioni di base, e subito dopo si passa agli ultimi articoli pubblicati;
  • Articoli: la pagina degli articoli, raggiungibile su /articoli. Qui verranno elencati tutti gli articoli, paginati, dal più recente al meno recente. Sarà possibile filtrarli per categoria.
  • Singolo Articolo: la pagina di lettura dell'articolo nella sua interezza.
  • Serie: l'elenco di tutte le serie pubblicate sul sito. Cliccando su una singola serie si verrà automaticamente rimandati al primo articolo di quella serie;

Nota: nel caso in cui un articolo faccia parte di una serie, nella pagina di lettura verrà mostrato il menu contenente la descrizione della serie e l'indice dei vari articoli che la compongono.

Nota 2: rispetto alla vecchia versione del sito sono state rimosse alcune pagine mai usate, come ad esempio l'elenco degli articoli di un certo autore.

Infine, sono state predisposte delle pagine personalizzate per l'errore 404 (pagina non trovata) e per l'eventuale stato di manutenzione del sito. Le view sono rispettivamente resources/views/front/404.blade.php e resources/views/errors/503.blade.php.

Tutta la logica del front del sito è compresa in un solo controller, app/Http/Controllers/FrontController.php, vista la semplicità delle operazioni che implementa. Dal file app/Http/routes.php:

Route::get('articoli/{slug}', 'FrontController@getArticle');
Route::get('articoli', 'FrontController@getArticles');
Route::get('serie/{slug}', 'FrontController@getSeriesFirstArticle');
Route::get('serie', 'FrontController@getSeries');
Route::get('/', 'FrontController@getIndex');

Il Pannello di Amministrazione

Il pannello di amministrazione del sito, raggiungibile da /admin, è il centro di comando da cui gli amministratori e gli editor lavorano. Da qui si scrivono infatti gli articoli, si caricano i media e si gestiscono gli altri utenti.

La pagina dell'elenco degli articoli, nel pannello di amministrazione.

Più nello specifico, ecco quali sono le funzionalità implementate al momento:

  • Accesso / Recupero Credenziali: tramite le proprie credenziali si può accedere al pannello di controllo. Nel caso in cui sia stata dimenticata la password, è stato predisposto un form per resettarla;
  • Gestione Articoli: sarà possibile scrivere, salvare, eliminare, modificare e pubblicare gli articoli prodotti dagli autori, editor o amministratori che siano. La pubblicazione, come detto prima, sarà riservata ai soli amministratori;
  • Gestione Media: sarà possibile caricare nuovi file sul sito, in modo tale da poter essere usati velocemente negli articoli. Funzionalità utile per caricare delle immagini per un articolo. Tale funzionalità è aperta anche agli editor;
  • Gestione Categorie / Serie: sempre da pannello di controllo sarà possibile definire nuove serie e categorie, oltre a modificare quelle già esistenti. Il controllo di queste due "aree", tuttavia, sarà esclusivo degli amministratori e negato agli editor;
  • Gestione Utenti: da qui sarà possibile gestire gli amministratori e gli editor già presenti, oppure invitarne di nuovi tramite l'apposito pulsante "Invita Editor". Sarà possibile, inoltre, promuovere un editor ad amministratore e viceversa;

In questo caso, i controller appartenenti al pannello di controllo sono più di uno. Dal file app/Http/routes.php si capisce facilmente:

Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function () {
    Route::controller('categories', 'CategoryController');
    Route::controller('articles', 'ArticleController');
    Route::controller('series', 'SeriesController');
    Route::controller('media', 'MediaController');

    Route::controller('users', 'UserController');
    Route::controller('/', 'MainController');
});