lato_core 1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Rakefile +38 -0
- data/app/controllers/lato_core/api/v1/api_controller.rb +9 -0
- data/app/controllers/lato_core/application_controller.rb +6 -0
- data/app/controllers/lato_core/back/authentication_controller.rb +114 -0
- data/app/controllers/lato_core/back/back_controller.rb +28 -0
- data/app/controllers/lato_core/back/superusers_controller.rb +172 -0
- data/app/mailers/lato_core/application_mailer.rb +10 -0
- data/app/mailers/lato_core/superusers_mailer.rb +29 -0
- data/app/models/lato_core/superuser.rb +43 -0
- data/app/views/lato_core/back/authentication/login.html.erb +42 -0
- data/app/views/lato_core/back/authentication/password_edit.html.erb +50 -0
- data/app/views/lato_core/back/authentication/password_forget.html.erb +37 -0
- data/app/views/lato_core/back/back/home.html.erb +20 -0
- data/app/views/lato_core/back/superusers/edit.html.erb +12 -0
- data/app/views/lato_core/back/superusers/index.html.erb +25 -0
- data/app/views/lato_core/back/superusers/new.html.erb +12 -0
- data/app/views/lato_core/back/superusers/shared/_form.html.erb +71 -0
- data/app/views/lato_core/back/superusers/show.html.erb +1 -0
- data/app/views/lato_core/mailers/layouts/mailer.html.erb +9 -0
- data/app/views/lato_core/mailers/layouts/mailer.text.erb +1 -0
- data/app/views/lato_core/mailers/superusers/notify.html.erb +2 -0
- data/app/views/lato_core/mailers/superusers/recover_password.html.erb +4 -0
- data/config/config.yml +8 -0
- data/config/example.yml +66 -0
- data/config/initializers/init.rb +16 -0
- data/config/initializers/ram.rb +50 -0
- data/config/routes.rb +20 -0
- data/db/migrate/20160224181217_create_lato_core_superusers.rb +15 -0
- data/lib/lato_core.rb +11 -0
- data/lib/lato_core/engine.rb +26 -0
- data/lib/lato_core/interface.rb +29 -0
- data/lib/lato_core/interface/authentication.rb +34 -0
- data/lib/lato_core/interface/cache.rb +29 -0
- data/lib/lato_core/interface/communication.rb +104 -0
- data/lib/lato_core/interface/languages.rb +60 -0
- data/lib/lato_core/interface/navigation.rb +109 -0
- data/lib/lato_core/interface/session.rb +71 -0
- data/lib/lato_core/interface/superusers.rb +143 -0
- data/lib/tasks/lato_core_tasks.rake +11 -0
- data/test/controllers/lato_core/api/v1/api_controller_test.rb +9 -0
- data/test/controllers/lato_core/application_controller_test.rb +9 -0
- data/test/controllers/lato_core/back/authentication_controller_test.rb +13 -0
- data/test/controllers/lato_core/back/back_controller_test.rb +9 -0
- data/test/controllers/lato_core/back/session_controller_test.rb +13 -0
- data/test/controllers/lato_core/back/superusers_controller_test.rb +13 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +29 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +25 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +41 -0
- data/test/dummy/config/environments/production.rb +79 -0
- data/test/dummy/config/environments/test.rb +42 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/log/test.log +0 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/fixtures/lato_core/superusers.yml +11 -0
- data/test/integration/navigation_test.rb +8 -0
- data/test/lato_core_test.rb +7 -0
- data/test/mailers/lato_core/lato_core_mailer_test.rb +9 -0
- data/test/mailers/previews/lato_core/lato_core_mailer_preview.rb +6 -0
- data/test/models/lato_core/superuser_test.rb +9 -0
- data/test/test_helper.rb +21 -0
- metadata +207 -0
data/config/routes.rb
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
LatoCore::Engine.routes.draw do
|
|
2
|
+
root 'back/back#home'
|
|
3
|
+
|
|
4
|
+
# Authentication
|
|
5
|
+
get 'login', to: 'back/authentication#login', as: 'login'
|
|
6
|
+
post 'exec_login', to: 'back/authentication#exec_login', as: 'exec_login'
|
|
7
|
+
delete 'exec_logout', to: 'back/authentication#exec_logout', as: 'exec_logout'
|
|
8
|
+
|
|
9
|
+
# view richiesta email
|
|
10
|
+
get 'password_forget', to: 'back/authentication#password_forget', as: 'password_forget'
|
|
11
|
+
# invio email recupero psw
|
|
12
|
+
post 'password_recover', to: 'back/authentication#password_recover', as: 'password_recover'
|
|
13
|
+
# view inserimento nuova psw
|
|
14
|
+
get 'password_edit/:token', to: 'back/authentication#password_edit', as: 'password_edit'
|
|
15
|
+
# aggiornamento password
|
|
16
|
+
post 'password_update', to: 'back/authentication#password_update', as: 'password_update'
|
|
17
|
+
# Users
|
|
18
|
+
resources :superusers, module: 'back'
|
|
19
|
+
|
|
20
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class CreateLatoCoreSuperusers < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
|
|
4
|
+
create_table :lato_core_superusers do |t|
|
|
5
|
+
t.string :name
|
|
6
|
+
t.string :username
|
|
7
|
+
t.string :email
|
|
8
|
+
t.integer :permission
|
|
9
|
+
t.string :session_code
|
|
10
|
+
t.string :password_digest
|
|
11
|
+
|
|
12
|
+
t.timestamps null: false
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
data/lib/lato_core.rb
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Lato Core e' una gemma che si occupa di generare un pannello di amministrazione
|
|
2
|
+
# con gestione delle utenze da utilizzare nello sviluppo di cms e gestionali.
|
|
3
|
+
# Lato Core e' stato sviluppato per supportare l'integrazione con altri moduli
|
|
4
|
+
# e necessita della gemma 'lato_view' per funzionare in modo corretto.
|
|
5
|
+
module LatoCore
|
|
6
|
+
|
|
7
|
+
# Includo interface e engine
|
|
8
|
+
require "lato_core/engine"
|
|
9
|
+
require "lato_core/interface"
|
|
10
|
+
|
|
11
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module LatoCore
|
|
2
|
+
# Classe che gestisce l'inizializzazione del modulo.
|
|
3
|
+
# Principalmente si occupa di rendere obbligatorie le migrazioni nell'app
|
|
4
|
+
# principale e di inserire nel Rails.application.routes le routes del modulo.
|
|
5
|
+
class Engine < ::Rails::Engine
|
|
6
|
+
isolate_namespace LatoCore
|
|
7
|
+
|
|
8
|
+
# Aggiunta del supporto alle migrazioni
|
|
9
|
+
initializer 'Add migration support' do |app|
|
|
10
|
+
unless app.root.to_s.match root.to_s
|
|
11
|
+
config.paths['db/migrate'].expanded.each do |expanded_path|
|
|
12
|
+
app.config.paths['db/migrate'] << expanded_path
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Aggiunta del supporto ai routes
|
|
18
|
+
initializer 'Add gem routes to application',
|
|
19
|
+
before: :load_config_initializers do
|
|
20
|
+
Rails.application.routes.append do
|
|
21
|
+
# modificare '/lato/starter' con l'url di base dei routes del modulo
|
|
22
|
+
mount LatoCore::Engine, at: '/lato/core'
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module LatoCore
|
|
2
|
+
# L'interfaccia contiene un insieme di funzioni utilizzabili in maniera
|
|
3
|
+
# universale dall'applicazione principale o da alti moduli
|
|
4
|
+
module Interface
|
|
5
|
+
|
|
6
|
+
# Azioni principali per la gestione della cache
|
|
7
|
+
require 'lato_core/interface/cache'
|
|
8
|
+
include LatoCore::Interface::Cache
|
|
9
|
+
# Azioni principali per la gestione delle comunicazioni
|
|
10
|
+
require 'lato_core/interface/communication'
|
|
11
|
+
include LatoCore::Interface::Communication
|
|
12
|
+
# Azioni principali per la gestione delle sessioni
|
|
13
|
+
require 'lato_core/interface/session'
|
|
14
|
+
include LatoCore::Interface::Session
|
|
15
|
+
# Azioni principali per la gestione della navigazione
|
|
16
|
+
require 'lato_core/interface/navigation'
|
|
17
|
+
include LatoCore::Interface::Navigation
|
|
18
|
+
# Azioni principali per il controllo dell'autenticazione
|
|
19
|
+
require 'lato_core/interface/authentication'
|
|
20
|
+
include LatoCore::Interface::Authentication
|
|
21
|
+
# Azioni principali per la gestione delle lingue
|
|
22
|
+
require 'lato_core/interface/languages'
|
|
23
|
+
include LatoCore::Interface::Languages
|
|
24
|
+
# Azioni principali per la gestione delle impostazioni superusers
|
|
25
|
+
require 'lato_core/interface/superusers'
|
|
26
|
+
include LatoCore::Interface::Superusers
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module LatoCore
|
|
2
|
+
module Interface
|
|
3
|
+
# Insieme di funzioni che permettono di gestire l'autenticazione degli
|
|
4
|
+
# utenti che vogliono accedere al backoffice
|
|
5
|
+
module Authentication
|
|
6
|
+
|
|
7
|
+
# Funzione che controlla se l'utente ha i permessi di accedere al
|
|
8
|
+
# backoffice. Se l'utente non ha i permessi viene rimandato alla pagina di login.
|
|
9
|
+
def core_controlUser
|
|
10
|
+
redirect_to lato_core.login_path unless core_controlSession
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Funzione che ritorna l'oggetto utente loggato.
|
|
14
|
+
# * *Returns* :
|
|
15
|
+
# - user_id se la sessione dell'utente risulta valida
|
|
16
|
+
# - false se la sessione non esiste o non e' valida
|
|
17
|
+
def core_getCurrentUser
|
|
18
|
+
user = LatoCore::Superuser.find(session[:user])
|
|
19
|
+
return user if session[:user] && session[:session_code] && user
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Funzione che controlla se i permessi dell'utente sono superiori al
|
|
23
|
+
# livello ricevuto come parametro
|
|
24
|
+
# * *Returns* :
|
|
25
|
+
# - true se la sessione dell'utente ha permessi maggiori o uguali del parametro ricevuto
|
|
26
|
+
# - false se la sessione non esiste o non ha i permessi necessari
|
|
27
|
+
def core_controlPermission(permission)
|
|
28
|
+
user = core_getCurrentUser
|
|
29
|
+
user && user.permission >= permission
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module LatoCore
|
|
2
|
+
module Interface
|
|
3
|
+
# Insieme di funzioni che gestiscono la cache dei moduli sulla
|
|
4
|
+
# applicazione principale.
|
|
5
|
+
module Cache
|
|
6
|
+
|
|
7
|
+
# Funzione che ritorna il percorso alla directory di cache usata dai
|
|
8
|
+
# moduli lato per memorizzare informazioni sull'applicazione principale.
|
|
9
|
+
# La directory dell'app principale usata come cache si trova nel percorso
|
|
10
|
+
# #{Rails.root}/config/lato
|
|
11
|
+
def core_getCacheDirectory
|
|
12
|
+
# creo le directory per gli assets se non esistono
|
|
13
|
+
dirname = "#{Rails.root}/app/assets/images/lato"
|
|
14
|
+
FileUtils.mkdir_p(dirname) unless File.exist?(dirname)
|
|
15
|
+
dirname = "#{Rails.root}/app/assets/stylesheets/lato"
|
|
16
|
+
FileUtils.mkdir_p(dirname) unless File.exist?(dirname)
|
|
17
|
+
dirname = "#{Rails.root}/app/assets/javascripts/lato"
|
|
18
|
+
FileUtils.mkdir_p(dirname) unless File.exist?(dirname)
|
|
19
|
+
# creo la directory di cache se non esiste
|
|
20
|
+
dirname = "#{Rails.root}/config/lato"
|
|
21
|
+
FileUtils.mkdir_p(dirname) unless File.exist?(dirname)
|
|
22
|
+
# ritorno la directory di cache
|
|
23
|
+
return dirname
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
module LatoCore
|
|
2
|
+
module Interface
|
|
3
|
+
# Insieme di funzioni che permettono di ottenere informazioni sulla
|
|
4
|
+
# applicazione principale e sulle altre gemme che lavorano su di essa
|
|
5
|
+
module Communication
|
|
6
|
+
|
|
7
|
+
# Ritorna l'url relativo della directory a cui rimandare dopo
|
|
8
|
+
# aver effettuato il login in lato. Se tale valore non e' settato
|
|
9
|
+
# nel file di configurazione di lato allora ritorna semplicemente false.
|
|
10
|
+
def core_getApplicationLoginRoot
|
|
11
|
+
return CORE_APPLOGINROOT if defined? CORE_APPLOGINROOT
|
|
12
|
+
directory = core_getCacheDirectory
|
|
13
|
+
if File.exist? "#{directory}/config.yml"
|
|
14
|
+
config = YAML.load(
|
|
15
|
+
File.read(File.expand_path("#{directory}/config.yml", __FILE__))
|
|
16
|
+
)
|
|
17
|
+
return config['login_home'] if config && config['login_home']
|
|
18
|
+
else
|
|
19
|
+
return false
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Ritorna il nome dell'applicazione principale settato nel file
|
|
24
|
+
# config/lato/config.yml.
|
|
25
|
+
# Se l'applicazione principale non specifica nessun nome allora
|
|
26
|
+
# la funzione ritorna il valore 'Lato'
|
|
27
|
+
def core_getApplicationName
|
|
28
|
+
return CORE_APPNAME if defined? CORE_APPNAME
|
|
29
|
+
directory = core_getCacheDirectory
|
|
30
|
+
if File.exist? "#{directory}/config.yml"
|
|
31
|
+
config = YAML.load(
|
|
32
|
+
File.read(File.expand_path("#{directory}/config.yml", __FILE__))
|
|
33
|
+
)
|
|
34
|
+
if config && config['app_name']
|
|
35
|
+
return config['app_name']
|
|
36
|
+
else
|
|
37
|
+
return 'Lato'
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Legge il file di configurazione e verifica se e' stato impostato un root url
|
|
43
|
+
# per l'applicazione. Se non è stato impostato utilizza di default 'localhost'
|
|
44
|
+
def core_getApplicationURL
|
|
45
|
+
return CORE_APPURL if defined? CORE_APPURL
|
|
46
|
+
directory = core_getCacheDirectory
|
|
47
|
+
if File.exist? "#{directory}/config.yml"
|
|
48
|
+
config = YAML.load(
|
|
49
|
+
File.read(File.expand_path("#{directory}/config.yml", __FILE__))
|
|
50
|
+
)
|
|
51
|
+
if config && config['root_url']
|
|
52
|
+
return config['root_url']
|
|
53
|
+
else
|
|
54
|
+
return 'http://localhost:3000'
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Legge il file di configurazione e verifica se è stato impostato un indirizzo
|
|
60
|
+
# email di servizio. Se non e' stata impostata allora utilizza quella di
|
|
61
|
+
# default 'service@lato.com'
|
|
62
|
+
def core_getApplicationServiceEmail
|
|
63
|
+
return CORE_APPSERVICEMAIL if defined? CORE_APPSERVICEMAIL
|
|
64
|
+
directory = core_getCacheDirectory
|
|
65
|
+
if File.exist? "#{directory}/config.yml"
|
|
66
|
+
config = YAML.load(
|
|
67
|
+
File.read(File.expand_path("#{directory}/config.yml", __FILE__))
|
|
68
|
+
)
|
|
69
|
+
if config && config['service_email']
|
|
70
|
+
return config['service_email']
|
|
71
|
+
else
|
|
72
|
+
return 'service@lato.com'
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Esamina tutte le gemme della applicazione principale e ritorna
|
|
78
|
+
# solamente quelle appartenenti al progetto Lato.
|
|
79
|
+
# * *Returns* :
|
|
80
|
+
# - array di stringhe con i nomi delle gemme del progetto Lato usate dall'applicazione
|
|
81
|
+
def core_getLatoGems
|
|
82
|
+
gems = core_getGems
|
|
83
|
+
lato_gems = []
|
|
84
|
+
# controllo ogni gemma
|
|
85
|
+
gems.each do |name|
|
|
86
|
+
lato_gems.push(name) if name.start_with? 'lato'
|
|
87
|
+
end
|
|
88
|
+
# ritorno il risultato
|
|
89
|
+
lato_gems
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Ritorna la lista dei nomi delle gemme utilizzate dalla applicazione
|
|
93
|
+
# principale
|
|
94
|
+
# * *Returns* :
|
|
95
|
+
# - array di stringhe con i nomi delle gemme dell'applicazione
|
|
96
|
+
def core_getGems
|
|
97
|
+
require 'bundler'
|
|
98
|
+
Bundler.load.specs.map { |spec| spec.name }
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
end
|
|
104
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
module LatoCore
|
|
2
|
+
module Interface
|
|
3
|
+
# Insieme di funzioni che determinano e gestiscono le informazioni riguardo
|
|
4
|
+
# alle lingue dell'applicazione tra le sezioni offerte dai moduli lato
|
|
5
|
+
module Languages
|
|
6
|
+
|
|
7
|
+
# Funzione che ritorna true se l'applicazione ha piu' lingue, false se
|
|
8
|
+
# l'applicazione ha una singola lingua
|
|
9
|
+
def core_applicationHasLanguages
|
|
10
|
+
return (CORE_APPLANGUAGES.length > 1) if defined? CORE_APPLANGUAGES
|
|
11
|
+
languages = core_getApplicationLanguages
|
|
12
|
+
languages.length > 1
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Funzione che ritorna un array contenente le lingue gestite
|
|
16
|
+
# dall'applicazione
|
|
17
|
+
def core_getApplicationLanguages
|
|
18
|
+
return CORE_APPLANGUAGES if defined? CORE_APPLANGUAGES
|
|
19
|
+
# definisco variabile di ritorno
|
|
20
|
+
languages = false
|
|
21
|
+
if File.exist? "#{Rails.root}/config/lato/config.yml"
|
|
22
|
+
# accedo al config.yml
|
|
23
|
+
config = YAML.load(
|
|
24
|
+
File.read(File.expand_path("#{Rails.root}/config/lato/config.yml",
|
|
25
|
+
__FILE__))
|
|
26
|
+
)
|
|
27
|
+
if config['languages']
|
|
28
|
+
languages = config['languages'].split(',')
|
|
29
|
+
|
|
30
|
+
languages.each do |language|
|
|
31
|
+
language.downcase.delete(' ')
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
# ritorno il risultato
|
|
36
|
+
return languages
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Funzione che ritorna la lettura del file di lingua corretto per
|
|
40
|
+
# il modulo il cui nome e' ricevuto come parametro
|
|
41
|
+
def core_loadModuleLanguages(module_name)
|
|
42
|
+
module_root = module_name.camelize.constantize::Engine.root
|
|
43
|
+
application_lang = Rails.application.config.i18n.default_locale
|
|
44
|
+
if File.exist? "#{module_root}/lang/#{application_lang}.yml"
|
|
45
|
+
return YAML.load(
|
|
46
|
+
File.read(File.expand_path("#{module_root}/lang/#{application_lang}.yml",
|
|
47
|
+
__FILE__))
|
|
48
|
+
)
|
|
49
|
+
else
|
|
50
|
+
return YAML.load(
|
|
51
|
+
File.read(File.expand_path("#{module_root}/lang/default.yml",
|
|
52
|
+
__FILE__))
|
|
53
|
+
)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
module LatoCore
|
|
2
|
+
module Interface
|
|
3
|
+
# Insieme di funzioni che determinano e gestiscono le informazioni
|
|
4
|
+
# riguardo alla navigazione tra le sezioni offerte dai moduli lato
|
|
5
|
+
module Navigation
|
|
6
|
+
|
|
7
|
+
# Ritorna un array contenente le voci che andranno a formare il menu
|
|
8
|
+
# di navigazione del backoffice.
|
|
9
|
+
# * *Returns* :
|
|
10
|
+
# - array di hash contenenti i dati delle voci di menu
|
|
11
|
+
def core_getNavbarItems
|
|
12
|
+
return CORE_NAVIGATION if defined? CORE_NAVIGATION
|
|
13
|
+
getApplicationNavbarItems + getLatoNavbarItems
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Ritorna un array contenente le voci delle gemme lato che andranno
|
|
17
|
+
# a formare il menu di navigazione del backoffice.
|
|
18
|
+
# * *Returns* :
|
|
19
|
+
# - array di hash contenenti i dati delle voci di menu
|
|
20
|
+
private def getLatoNavbarItems
|
|
21
|
+
# inizializzo la lista delle voci della navbar
|
|
22
|
+
navbar_items = []
|
|
23
|
+
# identifico la lista di gemme del progetto Lato usate dalla
|
|
24
|
+
# applicazione
|
|
25
|
+
gems = core_getLatoGems
|
|
26
|
+
# per ogni gemma estraggo i dati necessari a riempire la navbar
|
|
27
|
+
gems.each do |name|
|
|
28
|
+
module_name = name.camelize
|
|
29
|
+
module_root = module_name.constantize::Engine.root
|
|
30
|
+
|
|
31
|
+
next unless File.exist? "#{module_root}/config/config.yml"
|
|
32
|
+
# accedo al config.yml
|
|
33
|
+
config = YAML.load(
|
|
34
|
+
File.read(File.expand_path("#{module_root}/config/config.yml",
|
|
35
|
+
__FILE__))
|
|
36
|
+
)
|
|
37
|
+
# estraggo i dati dallo yaml
|
|
38
|
+
data = getConfigNavbarData(config)
|
|
39
|
+
# aggiungo i dati nella risposta
|
|
40
|
+
data.each do |single_voice|
|
|
41
|
+
navbar_items.push(single_voice)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
# ritorno il risultato
|
|
45
|
+
navbar_items
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Ritorna un array contenente le voci della applicazione principale
|
|
49
|
+
# che andranno a formare il menu di navigazione del backoffice.
|
|
50
|
+
# * *Returns* :
|
|
51
|
+
# - array di hash contenenti i dati delle voci di menu
|
|
52
|
+
private def getApplicationNavbarItems
|
|
53
|
+
directory = core_getCacheDirectory
|
|
54
|
+
# inizializzo la lista delle voci della navbar
|
|
55
|
+
navbar_items = []
|
|
56
|
+
|
|
57
|
+
if File.exist? "#{directory}/config.yml"
|
|
58
|
+
# accedo al config.yml
|
|
59
|
+
directory = core_getCacheDirectory
|
|
60
|
+
config = YAML.load(
|
|
61
|
+
File.read(File.expand_path("#{directory}/config.yml", __FILE__))
|
|
62
|
+
)
|
|
63
|
+
# estraggo i dati dallo yaml
|
|
64
|
+
data = getConfigNavbarData(config)
|
|
65
|
+
# aggiungo i dati nella risposta
|
|
66
|
+
data.each do |single_voice|
|
|
67
|
+
navbar_items.push(single_voice)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
# ritorno il risultato
|
|
71
|
+
navbar_items
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Estrae i dati relativi alla navbar dal file config.yml di una
|
|
75
|
+
# applicazione controllando che la struttura del file sia corretta
|
|
76
|
+
private def getConfigNavbarData(config)
|
|
77
|
+
# inizializzo la lista di dati
|
|
78
|
+
results = []
|
|
79
|
+
# se il file e' formattato correttamente esamino ogni sua voce
|
|
80
|
+
if config and config['menu']
|
|
81
|
+
config['menu'].each do |voice|
|
|
82
|
+
# estraggo i dati
|
|
83
|
+
unique_name = voice[0]
|
|
84
|
+
name = voice[1]['name'].capitalize
|
|
85
|
+
url = voice[1]['url'].downcase
|
|
86
|
+
icon = voice[1]['icon'].downcase
|
|
87
|
+
position = voice[1]['position']
|
|
88
|
+
permission = voice[1]['permission']
|
|
89
|
+
# genero l'oggetto con le informazioni di output
|
|
90
|
+
output_voice = {
|
|
91
|
+
unique_name: unique_name,
|
|
92
|
+
name: name,
|
|
93
|
+
url: url,
|
|
94
|
+
icon: icon,
|
|
95
|
+
position: position,
|
|
96
|
+
permission: permission
|
|
97
|
+
}
|
|
98
|
+
# aggiungo la voce al risultato
|
|
99
|
+
results.push(output_voice)
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
# ritorno il risultato
|
|
103
|
+
results
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
end
|
|
109
|
+
end
|