lato_blog 2.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/MIT-LICENSE +20 -0
- data/README.md +27 -0
- data/Rakefile +5 -0
- data/app/assets/config/lato_blog_manifest.js +2 -0
- data/app/assets/javascripts/lato_blog/application.js +19 -0
- data/app/assets/javascripts/lato_blog/initializers/Fields.js +56 -0
- data/app/assets/javascripts/lato_blog/initializers/Posts.js +54 -0
- data/app/assets/stylesheets/lato_blog/_helpers.scss +37 -0
- data/app/assets/stylesheets/lato_blog/application.scss +20 -0
- data/app/assets/stylesheets/lato_blog/fields/_composed.scss +7 -0
- data/app/assets/stylesheets/lato_blog/fields/_datetime.scss +0 -0
- data/app/assets/stylesheets/lato_blog/fields/_editor.scss +3 -0
- data/app/assets/stylesheets/lato_blog/fields/_fields.scss +8 -0
- data/app/assets/stylesheets/lato_blog/fields/_general.scss +9 -0
- data/app/assets/stylesheets/lato_blog/fields/_geolocalization.scss +3 -0
- data/app/assets/stylesheets/lato_blog/fields/_image.scss +3 -0
- data/app/assets/stylesheets/lato_blog/fields/_relay.scss +121 -0
- data/app/assets/stylesheets/lato_blog/fields/_text.scss +3 -0
- data/app/assets/stylesheets/lato_blog/pages/_categories.scss +18 -0
- data/app/assets/stylesheets/lato_blog/pages/_pages.scss +2 -0
- data/app/assets/stylesheets/lato_blog/pages/_posts.scss +25 -0
- data/app/assets/stylesheets/lato_blog/theme.scss.erb +12 -0
- data/app/assets/stylesheets/lato_blog/widgets/_switchlang.scss +3 -0
- data/app/assets/stylesheets/lato_blog/widgets/_widgets.scss +1 -0
- data/app/controllers/lato_blog/api/api_controller.rb +5 -0
- data/app/controllers/lato_blog/api/categories_controller.rb +51 -0
- data/app/controllers/lato_blog/api/posts_controller.rb +93 -0
- data/app/controllers/lato_blog/application_controller.rb +13 -0
- data/app/controllers/lato_blog/back/back_controller.rb +45 -0
- data/app/controllers/lato_blog/back/categories_controller.rb +141 -0
- data/app/controllers/lato_blog/back/post_fields_controller.rb +86 -0
- data/app/controllers/lato_blog/back/posts_controller.rb +340 -0
- data/app/controllers/lato_blog/doc/doc_controller.rb +16 -0
- data/app/controllers/lato_blog/doc/fields_controller.rb +19 -0
- data/app/controllers/lato_blog/doc/general_controller.rb +11 -0
- data/app/helpers/lato_blog/application_helper.rb +13 -0
- data/app/helpers/lato_blog/fields_helper.rb +100 -0
- data/app/jobs/lato_blog/application_job.rb +4 -0
- data/app/mailers/lato_blog/application_mailer.rb +6 -0
- data/app/models/lato_blog/application_record.rb +5 -0
- data/app/models/lato_blog/category.rb +119 -0
- data/app/models/lato_blog/category/entity_helpers.rb +55 -0
- data/app/models/lato_blog/category/serializer_helpers.rb +66 -0
- data/app/models/lato_blog/category_parent.rb +9 -0
- data/app/models/lato_blog/category_post.rb +35 -0
- data/app/models/lato_blog/post.rb +112 -0
- data/app/models/lato_blog/post/entity_helpers.rb +42 -0
- data/app/models/lato_blog/post/serializer_helpers.rb +85 -0
- data/app/models/lato_blog/post_field.rb +50 -0
- data/app/models/lato_blog/post_field/entity_helpers.rb +5 -0
- data/app/models/lato_blog/post_field/serializer_helpers.rb +127 -0
- data/app/models/lato_blog/post_parent.rb +20 -0
- data/app/views/lato_blog/back/back/switch_current_language.js +2 -0
- data/app/views/lato_blog/back/categories/edit.html.erb +44 -0
- data/app/views/lato_blog/back/categories/index.html.erb +18 -0
- data/app/views/lato_blog/back/categories/new.html.erb +40 -0
- data/app/views/lato_blog/back/categories/shared/_form.html.erb +38 -0
- data/app/views/lato_blog/back/categories/shared/edit/_edit_child_tree.html.erb +23 -0
- data/app/views/lato_blog/back/categories/shared/edit/_edit_child_tree_level.html.erb +7 -0
- data/app/views/lato_blog/back/categories/shared/edit/_edit_informations.html.erb +24 -0
- data/app/views/lato_blog/back/categories/shared/edit/_edit_languages.html.erb +38 -0
- data/app/views/lato_blog/back/categories/shared/new/_new_informations.html.erb +21 -0
- data/app/views/lato_blog/back/post_fields/create_relay_field.js.erb +14 -0
- data/app/views/lato_blog/back/post_fields/destroy_relay_field.js.erb +14 -0
- data/app/views/lato_blog/back/post_fields/fields/_composed.html.erb +24 -0
- data/app/views/lato_blog/back/post_fields/fields/_datetime.html.erb +17 -0
- data/app/views/lato_blog/back/post_fields/fields/_editor.html.erb +17 -0
- data/app/views/lato_blog/back/post_fields/fields/_geolocalization.html.erb +22 -0
- data/app/views/lato_blog/back/post_fields/fields/_image.html.erb +18 -0
- data/app/views/lato_blog/back/post_fields/fields/_relay.html.erb +39 -0
- data/app/views/lato_blog/back/post_fields/fields/_text.html.erb +17 -0
- data/app/views/lato_blog/back/post_fields/index.html.erb +28 -0
- data/app/views/lato_blog/back/posts/edit.html.erb +48 -0
- data/app/views/lato_blog/back/posts/index.html.erb +38 -0
- data/app/views/lato_blog/back/posts/new.html.erb +40 -0
- data/app/views/lato_blog/back/posts/shared/_fields.html.erb +13 -0
- data/app/views/lato_blog/back/posts/shared/_form.html.erb +69 -0
- data/app/views/lato_blog/back/posts/shared/edit/_edit_categories.html.erb +36 -0
- data/app/views/lato_blog/back/posts/shared/edit/_edit_informations.html.erb +26 -0
- data/app/views/lato_blog/back/posts/shared/edit/_edit_languages.html.erb +40 -0
- data/app/views/lato_blog/back/posts/shared/edit/_edit_pubblication_datetime.html.erb +24 -0
- data/app/views/lato_blog/back/posts/shared/edit/_edit_status_switch.html.erb +27 -0
- data/app/views/lato_blog/back/posts/shared/index/_index.html.erb +28 -0
- data/app/views/lato_blog/back/posts/shared/index/_index_informations.html.erb +37 -0
- data/app/views/lato_blog/back/posts/shared/index/_index_status_switch.html.erb +29 -0
- data/app/views/lato_blog/back/posts/shared/new/_new_informations.html.erb +21 -0
- data/app/views/lato_blog/doc/doc/index.html.erb +83 -0
- data/app/views/lato_blog/doc/fields/composed.html.erb +87 -0
- data/app/views/lato_blog/doc/fields/datetime.html.erb +0 -0
- data/app/views/lato_blog/doc/fields/editor.html.erb +1 -0
- data/app/views/lato_blog/doc/fields/geolocalization.html.erb +1 -0
- data/app/views/lato_blog/doc/fields/image.html.erb +70 -0
- data/app/views/lato_blog/doc/fields/relay.html.erb +87 -0
- data/app/views/lato_blog/doc/fields/text.html.erb +70 -0
- data/app/views/lato_blog/doc/general/api.html.erb +0 -0
- data/app/views/lato_blog/doc/general/installation.html.erb +49 -0
- data/app/views/lato_blog/doc/general/personalization.html.erb +0 -0
- data/app/views/lato_blog/partials/_relay_destroy_button.html.erb +5 -0
- data/app/views/lato_blog/widgets/_switchlang.html.erb +20 -0
- data/config/configs.yml +109 -0
- data/config/initializers/assets.rb +4 -0
- data/config/initializers/init_system.rb +22 -0
- data/config/languages/default.yml +87 -0
- data/config/languages/it.yml +87 -0
- data/config/routes.rb +16 -0
- data/config/routes/api.rb +11 -0
- data/config/routes/back.rb +17 -0
- data/config/routes/doc.rb +19 -0
- data/db/migrate/20170504222008_create_lato_blog_posts.rb +19 -0
- data/db/migrate/20170504223521_create_lato_blog_post_parents.rb +9 -0
- data/db/migrate/20170516063317_create_lato_blog_categories.rb +16 -0
- data/db/migrate/20170516063320_create_lato_blog_category_parents.rb +9 -0
- data/db/migrate/20170516063330_create_lato_blog_category_posts.rb +10 -0
- data/db/migrate/20170516063330_create_lato_blog_post_fields.rb +18 -0
- data/lib/lato_blog.rb +6 -0
- data/lib/lato_blog/engine.rb +15 -0
- data/lib/lato_blog/interface.rb +17 -0
- data/lib/lato_blog/interfaces/categories.rb +34 -0
- data/lib/lato_blog/interfaces/fields.rb +195 -0
- data/lib/lato_blog/interfaces/languages.rb +15 -0
- data/lib/lato_blog/interfaces/posts.rb +13 -0
- data/lib/lato_blog/version.rb +3 -0
- data/lib/tasks/lato_blog_tasks.rake +4 -0
- metadata +223 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
include LatoBlog::Interface
|
|
2
|
+
|
|
3
|
+
# set languages identifier.
|
|
4
|
+
BLOG_LANGUAGES_IDENTIFIER = blog__get_languages_identifier
|
|
5
|
+
|
|
6
|
+
# set posts possible status.
|
|
7
|
+
BLOG_POSTS_STATUS = {
|
|
8
|
+
deleted: 'deleted',
|
|
9
|
+
drafted: 'drafted',
|
|
10
|
+
published: 'published'
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
# create default category.
|
|
14
|
+
if ActiveRecord::Base.connection.table_exists?('lato_blog_category_parents') &&
|
|
15
|
+
ActiveRecord::Base.connection.table_exists?('lato_blog_categories')
|
|
16
|
+
blog__create_default_category
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# sync config fields with primary fields.
|
|
20
|
+
if ActiveRecord::Base.connection.table_exists?('lato_blog_post_fields')
|
|
21
|
+
blog__sync_config_post_fields_with_db_post_fields
|
|
22
|
+
end
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
menu:
|
|
2
|
+
posts: Articles
|
|
3
|
+
posts_new: Add new
|
|
4
|
+
posts_index: Show all
|
|
5
|
+
posts_categories: Categories
|
|
6
|
+
post_fields: Fields
|
|
7
|
+
documentation: Doc. Blog
|
|
8
|
+
|
|
9
|
+
pages:
|
|
10
|
+
posts: Articles
|
|
11
|
+
posts_new: New article
|
|
12
|
+
posts_edit: Edit article
|
|
13
|
+
post_fields: Fields
|
|
14
|
+
categories: Categories
|
|
15
|
+
categories_new: New category
|
|
16
|
+
categories_edit: Edit category
|
|
17
|
+
documentation: Documentation
|
|
18
|
+
|
|
19
|
+
flashes:
|
|
20
|
+
post_create_success: The Article was created successfully
|
|
21
|
+
post_not_found: Article not found
|
|
22
|
+
deleted_posts_not_found: There are not deleted articles
|
|
23
|
+
deleted_posts_destroy_success: All deleted posts are destroyed
|
|
24
|
+
post_update_success: The Article was updated successfully
|
|
25
|
+
post_status_not_accepted: The status selected can not be accepted for the article.
|
|
26
|
+
post_publication_datetime_not_accepted: The date for the article can not be accepted.
|
|
27
|
+
post_destroy_success: The Article was destroied successfully
|
|
28
|
+
category_create_success: The Category was created successfully
|
|
29
|
+
category_not_found: Category not found
|
|
30
|
+
category_update_success: The Category was updated successfully
|
|
31
|
+
category_destroy_success: The Category was destroied successfully
|
|
32
|
+
post_categories_not_accepted: There are not categories selected
|
|
33
|
+
post_update_fields_warning: The post is updated but we have some problems with fields
|
|
34
|
+
post_field_not_found: Field not found
|
|
35
|
+
post_field_destroy_success: The Field was destroied successfully
|
|
36
|
+
|
|
37
|
+
forms:
|
|
38
|
+
id: Id
|
|
39
|
+
title: Title
|
|
40
|
+
subtitle: Subtitle
|
|
41
|
+
language: Language
|
|
42
|
+
content: Content
|
|
43
|
+
excerpt: Excerpt
|
|
44
|
+
publication: Publication
|
|
45
|
+
category_father: Category father
|
|
46
|
+
permalink: Permalink
|
|
47
|
+
|
|
48
|
+
mixed:
|
|
49
|
+
languages: Languages
|
|
50
|
+
no_languages: There are not languages on the system
|
|
51
|
+
published_posts: Public articles
|
|
52
|
+
drafted_posts: Drafted articles
|
|
53
|
+
deleted_posts: Deleted articles
|
|
54
|
+
switch_status: Switch status
|
|
55
|
+
update: Update
|
|
56
|
+
save: Save
|
|
57
|
+
create: Create
|
|
58
|
+
show: Show
|
|
59
|
+
cancel: Cancel
|
|
60
|
+
info: Informations
|
|
61
|
+
new_post: New article
|
|
62
|
+
empty_trash: Empty trash
|
|
63
|
+
empty_trash_message: Are you sure to continue? All the deleted articles will be completely destroyed.
|
|
64
|
+
empty_trash_positive: Yes, I'm sure
|
|
65
|
+
empty_trash_negative: No, I don't want
|
|
66
|
+
current_language: Current language
|
|
67
|
+
current_status: Current status
|
|
68
|
+
publication_date: Date of pubblication
|
|
69
|
+
creation_date: Date of creation
|
|
70
|
+
update_date: Date of update
|
|
71
|
+
superuser_creator: Superuser creator
|
|
72
|
+
status: Status
|
|
73
|
+
change_publication_datetime: Change publication date
|
|
74
|
+
child_tree: Child tree
|
|
75
|
+
change_categories: Change categories
|
|
76
|
+
number_of_posts: Number of posts
|
|
77
|
+
key: Key
|
|
78
|
+
typology: Typology
|
|
79
|
+
visibility: Visibility
|
|
80
|
+
post_fields_warning: 'WARNING: Deleting fields could lead to the complete loss of some item data!'
|
|
81
|
+
post_id: Post id
|
|
82
|
+
post_field_id: Post field id
|
|
83
|
+
|
|
84
|
+
posts_status:
|
|
85
|
+
published: Published
|
|
86
|
+
drafted: Drafted
|
|
87
|
+
deleted: Deleted
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
menu:
|
|
2
|
+
posts: Articoli
|
|
3
|
+
posts_new: Aggiungi nuovo
|
|
4
|
+
posts_index: Visualizza tutti
|
|
5
|
+
posts_categories: Categorie
|
|
6
|
+
post_fields: Campi
|
|
7
|
+
documentation: Doc. Blog
|
|
8
|
+
|
|
9
|
+
pages:
|
|
10
|
+
posts: Articoli
|
|
11
|
+
posts_new: Nuovo articolo
|
|
12
|
+
posts_edit: Modifica articolo
|
|
13
|
+
post_fields: Campi
|
|
14
|
+
categories: Categorie
|
|
15
|
+
categories_new: Nuova categoria
|
|
16
|
+
categories_edit: Modifica categoria
|
|
17
|
+
documentation: Documentazione
|
|
18
|
+
|
|
19
|
+
flashes:
|
|
20
|
+
post_create_success: Articolo creato con successo
|
|
21
|
+
post_not_found: Articolo non trovato
|
|
22
|
+
deleted_posts_not_found: Non ci sono articoli nel cestino
|
|
23
|
+
deleted_posts_destroy_success: Tutti gli articoli del cestino sono stati eliminati
|
|
24
|
+
post_update_success: Articolo aggiornato con successo
|
|
25
|
+
post_status_not_accepted: Lo stato selezionato non può essere accettato per l'articolo.
|
|
26
|
+
post_publication_datetime_not_accepted: La data selezionata non può essere accettata per l'articolo.
|
|
27
|
+
post_destroy_success: Articolo eliminato con successo
|
|
28
|
+
category_create_success: Categoria creata con successo
|
|
29
|
+
category_not_found: Categoria non trovata
|
|
30
|
+
category_update_success: Categoria aggiornata con successo
|
|
31
|
+
category_destroy_success: Categoria eliminata con successo
|
|
32
|
+
post_categories_not_accepted: Non ci sono categorie selezionate
|
|
33
|
+
post_update_fields_warning: L'articolo è stato aggiornato ma ci sono state problematiche con il salvataggio dei campi
|
|
34
|
+
post_field_not_found: Campo non trovato
|
|
35
|
+
post_field_destroy_success: Campo eliminato con successo
|
|
36
|
+
|
|
37
|
+
forms:
|
|
38
|
+
id: Id
|
|
39
|
+
title: Titolo
|
|
40
|
+
subtitle: Sottotitolo
|
|
41
|
+
language: Lingua
|
|
42
|
+
content: Contenuto
|
|
43
|
+
excerpt: Riassunto
|
|
44
|
+
publication: Pubblicazione
|
|
45
|
+
category_father: Categoria padre
|
|
46
|
+
permalink: Permalink
|
|
47
|
+
|
|
48
|
+
mixed:
|
|
49
|
+
languages: Lingue
|
|
50
|
+
no_languages: Non ci sono lingue nel sistema
|
|
51
|
+
published_posts: Articoli pubblici
|
|
52
|
+
drafted_posts: Articoli in bozza
|
|
53
|
+
deleted_posts: Articoli nel cestino
|
|
54
|
+
switch_status: Aggiorna stato
|
|
55
|
+
update: Aggiorna
|
|
56
|
+
save: Salva
|
|
57
|
+
create: Crea
|
|
58
|
+
show: Visualizza
|
|
59
|
+
cancel: Cancella
|
|
60
|
+
info: Informazioni
|
|
61
|
+
new_post: Nuovo articolo
|
|
62
|
+
empty_trash: Svuota cestino
|
|
63
|
+
empty_trash_message: Sicuro di continuare? Tutti gli articoli nel cestino verranno rimossi definitivamente.
|
|
64
|
+
empty_trash_positive: Conferma
|
|
65
|
+
empty_trash_negative: Annulla
|
|
66
|
+
current_language: Lingua corrente
|
|
67
|
+
current_status: Stato corrente
|
|
68
|
+
publication_date: Data di pubblicazione
|
|
69
|
+
creation_date: Data di creazione
|
|
70
|
+
update_date: Data di aggioranmento
|
|
71
|
+
superuser_creator: Creato da
|
|
72
|
+
status: Stato
|
|
73
|
+
change_publication_datetime: Aggiorna data di pubblicazione
|
|
74
|
+
child_tree: Albero dei figli
|
|
75
|
+
change_categories: Aggiorna categorie
|
|
76
|
+
number_of_posts: Numero di articoli
|
|
77
|
+
key: Chiave
|
|
78
|
+
typology: Tipologia
|
|
79
|
+
visibility: Visibilità
|
|
80
|
+
post_fields_warning: 'ATTENZIONE: L'eliminazione dei campi può causare la perdita definitiva di alcuni dati degli articoli!'
|
|
81
|
+
post_id: Id articolo
|
|
82
|
+
post_field_id: Id campo
|
|
83
|
+
|
|
84
|
+
posts_status:
|
|
85
|
+
published: Pubblico
|
|
86
|
+
drafted: Bozza
|
|
87
|
+
deleted: Cestinato
|
data/config/routes.rb
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
LatoBlog::Engine.routes.draw do
|
|
2
|
+
|
|
3
|
+
# load custom routes files
|
|
4
|
+
def draw(routes_name)
|
|
5
|
+
instance_eval(File.read(LatoBlog::Engine.root.join("config/routes/#{routes_name}.rb")))
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
# set root path
|
|
9
|
+
root 'application#index'
|
|
10
|
+
|
|
11
|
+
# import routes
|
|
12
|
+
draw :api
|
|
13
|
+
draw :back
|
|
14
|
+
draw :doc
|
|
15
|
+
|
|
16
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
namespace :api do
|
|
2
|
+
|
|
3
|
+
# posts
|
|
4
|
+
get 'posts', to: 'posts#index', as: 'posts_index'
|
|
5
|
+
get 'post', to: 'posts#show', as: 'posts_show'
|
|
6
|
+
|
|
7
|
+
# categories
|
|
8
|
+
get 'categories', to: 'categories#index', as: 'categories_index'
|
|
9
|
+
get 'category', to: 'categories#show', as: 'categories_show'
|
|
10
|
+
|
|
11
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# main routes
|
|
2
|
+
get 'switch_current_language', to: 'back/back#switch_current_language', as: 'switch_current_language'
|
|
3
|
+
|
|
4
|
+
# posts
|
|
5
|
+
resources :posts, module: 'back'
|
|
6
|
+
post 'posts_extra/update_status', to: 'back/posts#update_status', as: 'posts_update_status'
|
|
7
|
+
post 'posts_extra/update_publication_datetime', to: 'back/posts#update_publication_datetime', as: 'posts_update_publication_datetime'
|
|
8
|
+
post 'posts_extra/update_categories', to: 'back/posts#update_categories', as: 'posts_update_categories'
|
|
9
|
+
get 'posts_extra/destroy_all_deleted', to: 'back/posts#destroy_all_deleted', as: 'posts_destroy_all_deleted'
|
|
10
|
+
|
|
11
|
+
# post fields
|
|
12
|
+
resources :post_fields, module: 'back', only: [:index, :destroy]
|
|
13
|
+
post 'post_fields_extra/create_relay_field', to: 'back/post_fields#create_relay_field', as: 'post_fields_create_relay_field'
|
|
14
|
+
post 'post_fields_extra/destroy_relay_field', to: 'back/post_fields#destroy_relay_field', as: 'post_fields_destroy_relay_field'
|
|
15
|
+
|
|
16
|
+
# categories
|
|
17
|
+
resources :categories, module: 'back'
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
namespace :doc do
|
|
2
|
+
|
|
3
|
+
root 'doc#index'
|
|
4
|
+
|
|
5
|
+
# general
|
|
6
|
+
get 'general_installation', to: 'general#installation', as: 'general_installation'
|
|
7
|
+
get 'general_personalization', to: 'general#personalization', as: 'general_personalization'
|
|
8
|
+
get 'general_api', to: 'general#api', as: 'general_api'
|
|
9
|
+
|
|
10
|
+
# fields
|
|
11
|
+
get 'fields_text', to: 'fields#text', as: 'fields_text'
|
|
12
|
+
get 'fields_datetime', to: 'fields#datetime', as: 'fields_datetime'
|
|
13
|
+
get 'fields_editor', to: 'fields#editor', as: 'fields_editor'
|
|
14
|
+
get 'fields_geolocalization', to: 'fields#geolocalization', as: 'fields_geolocalization'
|
|
15
|
+
get 'fields_image', to: 'fields#image', as: 'fields_image'
|
|
16
|
+
get 'fields_composed', to: 'fields#composed', as: 'fields_composed'
|
|
17
|
+
get 'fields_relay', to: 'fields#relay', as: 'fields_relay'
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
class CreateLatoBlogPosts < ActiveRecord::Migration[5.1]
|
|
2
|
+
def change
|
|
3
|
+
create_table :lato_blog_posts do |t|
|
|
4
|
+
t.string :title
|
|
5
|
+
t.string :subtitle
|
|
6
|
+
t.text :excerpt
|
|
7
|
+
t.text :content
|
|
8
|
+
|
|
9
|
+
t.string :meta_permalink
|
|
10
|
+
t.string :meta_status
|
|
11
|
+
t.string :meta_language
|
|
12
|
+
|
|
13
|
+
t.integer :lato_core_superuser_creator_id
|
|
14
|
+
t.integer :lato_blog_post_parent_id
|
|
15
|
+
|
|
16
|
+
t.timestamps
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class CreateLatoBlogCategories < ActiveRecord::Migration[5.1]
|
|
2
|
+
def change
|
|
3
|
+
create_table :lato_blog_categories do |t|
|
|
4
|
+
t.string :title
|
|
5
|
+
|
|
6
|
+
t.string :meta_permalink
|
|
7
|
+
t.string :meta_language
|
|
8
|
+
|
|
9
|
+
t.integer :lato_core_superuser_creator_id
|
|
10
|
+
t.integer :lato_blog_category_parent_id
|
|
11
|
+
t.integer :lato_blog_category_id
|
|
12
|
+
|
|
13
|
+
t.timestamps
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class CreateLatoBlogPostFields < ActiveRecord::Migration[5.1]
|
|
2
|
+
def change
|
|
3
|
+
create_table :lato_blog_post_fields do |t|
|
|
4
|
+
t.integer :lato_blog_post_id
|
|
5
|
+
t.string :key
|
|
6
|
+
t.string :typology
|
|
7
|
+
t.integer :position
|
|
8
|
+
t.text :value
|
|
9
|
+
|
|
10
|
+
t.text :meta_datas
|
|
11
|
+
t.boolean :meta_visible
|
|
12
|
+
|
|
13
|
+
t.integer :lato_blog_post_field_id
|
|
14
|
+
|
|
15
|
+
t.timestamps
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
data/lib/lato_blog.rb
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module LatoBlog
|
|
2
|
+
class Engine < ::Rails::Engine
|
|
3
|
+
isolate_namespace LatoBlog
|
|
4
|
+
|
|
5
|
+
require 'rubygems'
|
|
6
|
+
|
|
7
|
+
# add routes support
|
|
8
|
+
initializer 'Add gem routes to application', before: :load_config_initializers do
|
|
9
|
+
Rails.application.routes.append do
|
|
10
|
+
mount LatoBlog::Engine, at: '/lato/blog'
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module LatoBlog
|
|
2
|
+
module Interface
|
|
3
|
+
|
|
4
|
+
require 'lato_blog/interfaces/languages'
|
|
5
|
+
include LatoBlog::Interface::Languages
|
|
6
|
+
|
|
7
|
+
require 'lato_blog/interfaces/posts'
|
|
8
|
+
include LatoBlog::Interface::Posts
|
|
9
|
+
|
|
10
|
+
require 'lato_blog/interfaces/categories'
|
|
11
|
+
include LatoBlog::Interface::Categories
|
|
12
|
+
|
|
13
|
+
require 'lato_blog/interfaces/fields'
|
|
14
|
+
include LatoBlog::Interface::Fields
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module LatoBlog
|
|
2
|
+
|
|
3
|
+
# This module contains a list of functions used to manage categories for the blog.
|
|
4
|
+
module Interface::Categories
|
|
5
|
+
|
|
6
|
+
# This function create the default category if it not exists.
|
|
7
|
+
def blog__create_default_category
|
|
8
|
+
category_parent = LatoBlog::CategoryParent.find_by(meta_default: true)
|
|
9
|
+
return if category_parent
|
|
10
|
+
|
|
11
|
+
category_parent = LatoBlog::CategoryParent.new(meta_default: true)
|
|
12
|
+
throw 'Impossible to create default category parent' unless category_parent.save
|
|
13
|
+
|
|
14
|
+
languages = blog__get_languages_identifier
|
|
15
|
+
languages.each do |language|
|
|
16
|
+
category = LatoBlog::Category.new(
|
|
17
|
+
title: 'Default',
|
|
18
|
+
meta_permalink: "default_#{language}",
|
|
19
|
+
meta_language: language,
|
|
20
|
+
lato_core_superuser_creator_id: 1,
|
|
21
|
+
lato_blog_category_parent_id: category_parent.id
|
|
22
|
+
)
|
|
23
|
+
throw 'Impossible to create default category' unless category.save
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# This function cleans all old category parents without any child.
|
|
28
|
+
def blog__clean_category_parents
|
|
29
|
+
category_parents = LatoBlog::CategoryParent.all
|
|
30
|
+
category_parents.map { |cp| cp.destroy if cp.categories.empty? }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
end
|