decidim-blogs 0.11.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +30 -0
- data/Rakefile +3 -0
- data/app/assets/images/decidim/blogs/icon.svg +3 -0
- data/app/commands/decidim/blogs/admin/create_post.rb +50 -0
- data/app/commands/decidim/blogs/admin/update_post.rb +44 -0
- data/app/controllers/decidim/blogs/admin/application_controller.rb +22 -0
- data/app/controllers/decidim/blogs/admin/posts_controller.rb +64 -0
- data/app/controllers/decidim/blogs/application_controller.rb +14 -0
- data/app/controllers/decidim/blogs/posts_controller.rb +35 -0
- data/app/events/decidim/blogs/create_post_event.rb +8 -0
- data/app/forms/decidim/blogs/admin/post_form.rb +18 -0
- data/app/helpers/decidim/blogs/admin/posts_helper.rb +25 -0
- data/app/helpers/decidim/blogs/application_helper.rb +13 -0
- data/app/helpers/decidim/blogs/posts_helper.rb +25 -0
- data/app/models/decidim/blogs/application_record.rb +10 -0
- data/app/models/decidim/blogs/post.rb +44 -0
- data/app/presenters/decidim/module/blogs/post_presenter.rb +14 -0
- data/app/views/decidim/blogs/admin/posts/_form.html.erb +13 -0
- data/app/views/decidim/blogs/admin/posts/edit.html.erb +7 -0
- data/app/views/decidim/blogs/admin/posts/index.html.erb +53 -0
- data/app/views/decidim/blogs/admin/posts/new.html.erb +7 -0
- data/app/views/decidim/blogs/posts/_author_data.html.erb +7 -0
- data/app/views/decidim/blogs/posts/_datetime.html.erb +1 -0
- data/app/views/decidim/blogs/posts/_posts.html.erb +20 -0
- data/app/views/decidim/blogs/posts/_sidebar_blog.html.erb +21 -0
- data/app/views/decidim/blogs/posts/index.html.erb +10 -0
- data/app/views/decidim/blogs/posts/show.html.erb +23 -0
- data/config/locales/ca.yml +69 -0
- data/config/locales/en.yml +70 -0
- data/config/locales/es.yml +69 -0
- data/config/locales/eu.yml +69 -0
- data/config/locales/fi.yml +69 -0
- data/config/locales/fr.yml +69 -0
- data/config/locales/gl.yml +69 -0
- data/config/locales/it.yml +69 -0
- data/config/locales/nl.yml +69 -0
- data/config/locales/pl.yml +69 -0
- data/config/locales/pt-BR.yml +69 -0
- data/config/locales/pt.yml +69 -0
- data/config/locales/ru.yml +5 -0
- data/config/locales/sv.yml +69 -0
- data/config/locales/uk.yml +6 -0
- data/db/migrate/20171129131353_create_decidim_blogs_posts.rb +12 -0
- data/db/migrate/20171211084630_add_author_to_decidim_blogs_posts.rb +7 -0
- data/lib/decidim/blogs.rb +13 -0
- data/lib/decidim/blogs/admin.rb +10 -0
- data/lib/decidim/blogs/admin_engine.rb +22 -0
- data/lib/decidim/blogs/component.rb +65 -0
- data/lib/decidim/blogs/engine.rb +24 -0
- data/lib/decidim/blogs/test/factories.rb +20 -0
- data/lib/decidim/blogs/version.rb +10 -0
- metadata +235 -0
@@ -0,0 +1,13 @@
|
|
1
|
+
<div class="card">
|
2
|
+
<div class="card-divider">
|
3
|
+
<h2 class="card-title"><%= title %></h2>
|
4
|
+
</div>
|
5
|
+
<div class="card-section">
|
6
|
+
<div class="row column">
|
7
|
+
<%= form.translated :text_field, :title, autofocus: true %>
|
8
|
+
</div>
|
9
|
+
<div class="row column">
|
10
|
+
<%= form.translated :editor, :body, toolbar: :full, lines: 30, label: t("models.components.body", scope: "decidim.blogs.admin") %>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
</div>
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<div class="card">
|
2
|
+
<div class="card-divider">
|
3
|
+
<h2 class="card-title">
|
4
|
+
<%= t(".title") %>
|
5
|
+
<%= link_to t("actions.new", scope: "decidim.blogs", name: t("models.post.name", scope: "decidim.blogs.admin")), new_post_path, class: "button tiny button--title" if can? :manage, current_component %>
|
6
|
+
</h2>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div class="card-section">
|
10
|
+
<div class="table-scroll">
|
11
|
+
<table class="table-list">
|
12
|
+
<thead>
|
13
|
+
<tr>
|
14
|
+
<th><%= t("models.post.fields.title", scope: "decidim.blogs") %></th>
|
15
|
+
<th><%= t("models.post.fields.body", scope: "decidim.blogs") %></th>
|
16
|
+
<th><%= t("models.post.fields.author", scope: "decidim.blogs") %></th>
|
17
|
+
<th><%= t("models.post.fields.created_at", scope: "decidim.blogs") %></th>
|
18
|
+
<th class="actions"><%= t("actions.title", scope: "decidim.blogs") %></th>
|
19
|
+
</tr>
|
20
|
+
</thead>
|
21
|
+
<tbody>
|
22
|
+
<% posts.created_at_desc.each do |post| %>
|
23
|
+
|
24
|
+
<tr data-id="<%= post.id %>">
|
25
|
+
<td>
|
26
|
+
<%= translated_attribute(post.title) %><br />
|
27
|
+
</td>
|
28
|
+
<td>
|
29
|
+
<%= sanitize post_description_admin(post) %>
|
30
|
+
</td>
|
31
|
+
<td>
|
32
|
+
<%= post.try(:author).try(:name) %>
|
33
|
+
</td>
|
34
|
+
<td>
|
35
|
+
<%= l post.created_at, format: "%d/%m/%Y - %H:%M" %>
|
36
|
+
</td>
|
37
|
+
<td class="table-list__actions">
|
38
|
+
<% if can? :update, current_component %>
|
39
|
+
<%= icon_link_to "pencil", edit_post_path(post), t("actions.edit", scope: "decidim.blogs"), class: "action-icon--edit" %>
|
40
|
+
<% end %>
|
41
|
+
|
42
|
+
<% if can? :destroy, current_component %>
|
43
|
+
<%= icon_link_to "circle-x", post_path(post), t("actions.destroy", scope: "decidim.blogs"), method: :delete, class: "action-icon--remove", data: { confirm: t("actions.confirm_destroy", scope: "decidim.blogs") } %>
|
44
|
+
<% end %>
|
45
|
+
</td>
|
46
|
+
</tr>
|
47
|
+
<% end %>
|
48
|
+
</tbody>
|
49
|
+
</table>
|
50
|
+
<%= paginate posts, theme: "decidim" %>
|
51
|
+
</div>
|
52
|
+
</div>
|
53
|
+
<div>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<%= cell "decidim/author_box", present(post.author), extra: (capture do %>
|
2
|
+
<%= render partial: "datetime", locals: { post: post } %> ·
|
3
|
+
<%= link_to "#{post_path(post)}#comments", title: t(".comments") do %>
|
4
|
+
<%= icon "comment-square", class: "icon--small", aria_label: "#{t(".comments")}", role: "img" %>
|
5
|
+
<%= post.comments.count %> <%= t(".comments") %>
|
6
|
+
<% end %>
|
7
|
+
<% end) %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= l post.created_at, format: "%d/%m/%Y" %>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<div class="row small-12">
|
2
|
+
<% paginate_posts.each do |post| %>
|
3
|
+
<article class="card card--post">
|
4
|
+
<div class="card__content">
|
5
|
+
<div class="card__header">
|
6
|
+
<%= link_to post, class: "card__link" do %>
|
7
|
+
<h5 class="card__title card__title--strong">
|
8
|
+
<%= translated_attribute post.title %>
|
9
|
+
</h5>
|
10
|
+
<% end %>
|
11
|
+
<div class="card__author">
|
12
|
+
<%= render partial: "author_data", locals: { post: post } %>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
<%= sanitize post_description(post) %>
|
16
|
+
</div>
|
17
|
+
</article>
|
18
|
+
<% end %>
|
19
|
+
</div>
|
20
|
+
<%= decidim_paginate paginate_posts %>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<% if posts.any? %>
|
2
|
+
<div class="section">
|
3
|
+
<div class="section-heading">
|
4
|
+
<%= t(".most_commented_posts") %>
|
5
|
+
</div>
|
6
|
+
<% posts.each do |post| %>
|
7
|
+
<div class="m-bottom">
|
8
|
+
<strong><%= link_to translated_attribute(post.title), post %></strong>
|
9
|
+
<div class="author-data author-data--nopadding">
|
10
|
+
<%= render partial: "datetime", locals: { post: post } %> ·
|
11
|
+
<%= link_to "#{post_path(post)}#comments", title: t(".comments") do %>
|
12
|
+
<%= icon "comment-square", class: "icon--small", aria_label: "#{t(".comments")}", role: "img" %>
|
13
|
+
<%= post.comments.count %>
|
14
|
+
<%= t(".comments") %>
|
15
|
+
<% end %>
|
16
|
+
<a href="#comments" title="<%= t(".comments") %>"></a>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
<% end %>
|
20
|
+
</div>
|
21
|
+
<% end %>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<%= render partial: "decidim/shared/component_announcement" %>
|
2
|
+
|
3
|
+
<div class="row column">
|
4
|
+
<div id="blogs" class="columns medium-7 mediumlarge-8">
|
5
|
+
<%= render partial: "posts" %>
|
6
|
+
</div>
|
7
|
+
<div id="most-commented" class="columns medium-5 mediumlarge-4 large-4">
|
8
|
+
<%= render partial: "sidebar_blog", locals: {posts: posts_most_commented} %>
|
9
|
+
</div>
|
10
|
+
</div>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<% provide(:title, translated_attribute(post.title)) %>
|
2
|
+
|
3
|
+
<% add_decidim_meta_tags({
|
4
|
+
title: translated_attribute(post.title),
|
5
|
+
description: translated_attribute(post.body),
|
6
|
+
url: post_url(post.id)
|
7
|
+
}) %>
|
8
|
+
<div class="row">
|
9
|
+
<div class="columns medium-7 mediumlarge-8">
|
10
|
+
<div class="row column view-header">
|
11
|
+
<h2 class="heading2"><%= translated_attribute post.title %></h2>
|
12
|
+
<%= render partial: "author_data", locals: { post: post } %>
|
13
|
+
</div>
|
14
|
+
<div class="section">
|
15
|
+
<p><%= sanitize translated_attribute post.body %></p>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
<div id="most-commented" class="columns medium-5 mediumlarge-4 large-4">
|
19
|
+
<%= render partial: "sidebar_blog", locals: {posts: posts_most_commented} %>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
|
23
|
+
<%= comments_for post %>
|
@@ -0,0 +1,69 @@
|
|
1
|
+
ca:
|
2
|
+
decidim:
|
3
|
+
blogs:
|
4
|
+
actions:
|
5
|
+
confirm_destroy: Estàs segur que vols eliminar aquesta publicació?
|
6
|
+
destroy: Suprimeix
|
7
|
+
edit: Edita
|
8
|
+
new: Nou
|
9
|
+
title: Accions
|
10
|
+
admin:
|
11
|
+
models:
|
12
|
+
components:
|
13
|
+
body: Cos
|
14
|
+
post:
|
15
|
+
name: Publicació
|
16
|
+
posts:
|
17
|
+
create:
|
18
|
+
invalid: S'ha produït un problema en crear aquesta publicació
|
19
|
+
success: S'ha creat correctament la publicació
|
20
|
+
destroy:
|
21
|
+
success: La publicació s'ha eliminat correctament
|
22
|
+
edit:
|
23
|
+
save: Actualitza
|
24
|
+
index:
|
25
|
+
title: Publicacions
|
26
|
+
new:
|
27
|
+
create: Crear
|
28
|
+
title: Crea una publicació
|
29
|
+
update:
|
30
|
+
invalid: Hi ha hagut errors en desar la publicació.
|
31
|
+
success: La publicació s'ha desat correctament
|
32
|
+
models:
|
33
|
+
post:
|
34
|
+
fields:
|
35
|
+
author: Autor
|
36
|
+
body: Cos
|
37
|
+
created_at: Creat el
|
38
|
+
title: títol
|
39
|
+
posts:
|
40
|
+
author_data:
|
41
|
+
comments: comentaris
|
42
|
+
sidebar_blog:
|
43
|
+
comments: comentaris
|
44
|
+
most_commented_posts: Publicacions més comentades
|
45
|
+
read_more: Llegeix més
|
46
|
+
components:
|
47
|
+
blogs:
|
48
|
+
name: Blog
|
49
|
+
settings:
|
50
|
+
global:
|
51
|
+
announcement: Anunci
|
52
|
+
comments_enabled: Comentaris habilitats
|
53
|
+
step:
|
54
|
+
announcement: Anunci
|
55
|
+
comments_blocked: Comentaris bloquejats
|
56
|
+
events:
|
57
|
+
blogs:
|
58
|
+
post_created:
|
59
|
+
email_intro: La publicació "%{resource_title}" s'ha publicat al "%{participatory_space_title}", que segueixes.
|
60
|
+
email_outro: Has rebut aquesta notificació perquè estàs seguint "%{participatory_space_title}". Pots deixar de seguir-lo des de l'enllaç anterior.
|
61
|
+
email_subject: Nova publicació publicada a %{participatory_space_title}
|
62
|
+
notification_title: La publicació <a href="%{resource_path}">%{resource_title}</a> ha estat publicada a %{participatory_space_title}
|
63
|
+
participatory_processes:
|
64
|
+
statistics:
|
65
|
+
posts_count: Publicacions
|
66
|
+
pages:
|
67
|
+
home:
|
68
|
+
statistics:
|
69
|
+
posts_count: Publicacions
|
@@ -0,0 +1,70 @@
|
|
1
|
+
---
|
2
|
+
en:
|
3
|
+
decidim:
|
4
|
+
blogs:
|
5
|
+
actions:
|
6
|
+
confirm_destroy: Are you sure you want to delete this post?
|
7
|
+
destroy: Delete
|
8
|
+
edit: Edit
|
9
|
+
new: New
|
10
|
+
title: Actions
|
11
|
+
admin:
|
12
|
+
models:
|
13
|
+
components:
|
14
|
+
body: Body
|
15
|
+
post:
|
16
|
+
name: Post
|
17
|
+
posts:
|
18
|
+
create:
|
19
|
+
invalid: There's been a problem creating this post
|
20
|
+
success: Post successfully created
|
21
|
+
destroy:
|
22
|
+
success: Post successfully deleted
|
23
|
+
edit:
|
24
|
+
save: Update
|
25
|
+
index:
|
26
|
+
title: Posts
|
27
|
+
new:
|
28
|
+
create: Create
|
29
|
+
title: Create post
|
30
|
+
update:
|
31
|
+
invalid: There's been errors when saving the post.
|
32
|
+
success: Post saved successfully
|
33
|
+
models:
|
34
|
+
post:
|
35
|
+
fields:
|
36
|
+
author: Author
|
37
|
+
body: Body
|
38
|
+
created_at: Created at
|
39
|
+
title: title
|
40
|
+
posts:
|
41
|
+
author_data:
|
42
|
+
comments: comments
|
43
|
+
sidebar_blog:
|
44
|
+
comments: comments
|
45
|
+
most_commented_posts: Most commented posts
|
46
|
+
read_more: Read more
|
47
|
+
components:
|
48
|
+
blogs:
|
49
|
+
name: Blog
|
50
|
+
settings:
|
51
|
+
global:
|
52
|
+
announcement: Announcement
|
53
|
+
comments_enabled: Comments Enabled
|
54
|
+
step:
|
55
|
+
announcement: Announcement
|
56
|
+
comments_blocked: Comments Blocked
|
57
|
+
events:
|
58
|
+
blogs:
|
59
|
+
post_created:
|
60
|
+
email_intro: The post "%{resource_title}" has been published in "%{participatory_space_title}" that you are following.
|
61
|
+
email_outro: You have received this notification because you are following "%{participatory_space_title}". You can unfollow it from the previous link.
|
62
|
+
email_subject: New post published in %{participatory_space_title}
|
63
|
+
notification_title: The post <a href="%{resource_path}">%{resource_title}</a> has been published in %{participatory_space_title}
|
64
|
+
participatory_processes:
|
65
|
+
statistics:
|
66
|
+
posts_count: Posts
|
67
|
+
pages:
|
68
|
+
home:
|
69
|
+
statistics:
|
70
|
+
posts_count: Posts
|
@@ -0,0 +1,69 @@
|
|
1
|
+
es:
|
2
|
+
decidim:
|
3
|
+
blogs:
|
4
|
+
actions:
|
5
|
+
confirm_destroy: '¿Seguro que quieres eliminar esta publicación?'
|
6
|
+
destroy: Borrar
|
7
|
+
edit: Editar
|
8
|
+
new: Nuevo
|
9
|
+
title: Comportamiento
|
10
|
+
admin:
|
11
|
+
models:
|
12
|
+
components:
|
13
|
+
body: Cuerpo
|
14
|
+
post:
|
15
|
+
name: Enviar
|
16
|
+
posts:
|
17
|
+
create:
|
18
|
+
invalid: Ha habido un problema al crear esta publicación
|
19
|
+
success: Publicación creada con éxito
|
20
|
+
destroy:
|
21
|
+
success: Publicación eliminada con éxito
|
22
|
+
edit:
|
23
|
+
save: Actualizar
|
24
|
+
index:
|
25
|
+
title: Publicaciones
|
26
|
+
new:
|
27
|
+
create: Crear
|
28
|
+
title: Crear publicación
|
29
|
+
update:
|
30
|
+
invalid: Ha habido errores al guardar la publicación.
|
31
|
+
success: Publicación guardada con éxito
|
32
|
+
models:
|
33
|
+
post:
|
34
|
+
fields:
|
35
|
+
author: Autoría
|
36
|
+
body: Cuerpo
|
37
|
+
created_at: Creado en
|
38
|
+
title: título
|
39
|
+
posts:
|
40
|
+
author_data:
|
41
|
+
comments: comentarios
|
42
|
+
sidebar_blog:
|
43
|
+
comments: comentarios
|
44
|
+
most_commented_posts: Publicaciones más comentadas
|
45
|
+
read_more: Leer más
|
46
|
+
components:
|
47
|
+
blogs:
|
48
|
+
name: Blog
|
49
|
+
settings:
|
50
|
+
global:
|
51
|
+
announcement: Anuncio
|
52
|
+
comments_enabled: Comentarios habilitados
|
53
|
+
step:
|
54
|
+
announcement: Anuncio
|
55
|
+
comments_blocked: Comentarios bloqueados
|
56
|
+
events:
|
57
|
+
blogs:
|
58
|
+
post_created:
|
59
|
+
email_intro: La publicación "%{resource_title}" se publicó en "%{participatory_space_title}" que estás siguiendo.
|
60
|
+
email_outro: Recibió esta notificación porque está siguiendo "%{participatory_space_title}". Puedes dejar de seguirlo desde el enlace anterior.
|
61
|
+
email_subject: Nueva publicación publicada en %{participatory_space_title}
|
62
|
+
notification_title: La publicación <a href="%{resource_path}">%{resource_title}</a> se publicó en %{participatory_space_title}.
|
63
|
+
participatory_processes:
|
64
|
+
statistics:
|
65
|
+
posts_count: Publicaciones
|
66
|
+
pages:
|
67
|
+
home:
|
68
|
+
statistics:
|
69
|
+
posts_count: Publicaciones
|
@@ -0,0 +1,69 @@
|
|
1
|
+
eu:
|
2
|
+
decidim:
|
3
|
+
blogs:
|
4
|
+
actions:
|
5
|
+
confirm_destroy: Ziur mezua ezabatu nahi duzula?
|
6
|
+
destroy: ezabatu
|
7
|
+
edit: Editatu
|
8
|
+
new: New
|
9
|
+
title: Ekintzak
|
10
|
+
admin:
|
11
|
+
models:
|
12
|
+
components:
|
13
|
+
body: Gorputzeko
|
14
|
+
post:
|
15
|
+
name: Post
|
16
|
+
posts:
|
17
|
+
create:
|
18
|
+
invalid: Arazo bat izan da post hau sortzeko
|
19
|
+
success: Mezua ondo sortu da
|
20
|
+
destroy:
|
21
|
+
success: Mezua ondo ezabatu da
|
22
|
+
edit:
|
23
|
+
save: eguneratzearen
|
24
|
+
index:
|
25
|
+
title: Mezuak
|
26
|
+
new:
|
27
|
+
create: Sortu
|
28
|
+
title: Sortu mezua
|
29
|
+
update:
|
30
|
+
invalid: Erroreak gertatu dira mezua gordetzean.
|
31
|
+
success: Mezua ondo gorde da
|
32
|
+
models:
|
33
|
+
post:
|
34
|
+
fields:
|
35
|
+
author: Egilea
|
36
|
+
body: Gorputzeko
|
37
|
+
created_at: Sortutako at
|
38
|
+
title: Izenburua
|
39
|
+
posts:
|
40
|
+
author_data:
|
41
|
+
comments: iruzkinak
|
42
|
+
sidebar_blog:
|
43
|
+
comments: iruzkinak
|
44
|
+
most_commented_posts: Gehien iruzkinatutako mezu
|
45
|
+
read_more: Irakurri gehiago
|
46
|
+
components:
|
47
|
+
blogs:
|
48
|
+
name: Bloga
|
49
|
+
settings:
|
50
|
+
global:
|
51
|
+
announcement: Anuntzio
|
52
|
+
comments_enabled: Iruzkinak gaituta
|
53
|
+
step:
|
54
|
+
announcement: Anuntzio
|
55
|
+
comments_blocked: Iruzkinak blokeatuta
|
56
|
+
events:
|
57
|
+
blogs:
|
58
|
+
post_created:
|
59
|
+
email_intro: '"%{resource_title}" mezua "%{participatory_space_title}" argitaratzen ari zarela jarraitzen ari zara.'
|
60
|
+
email_outro: Jakinarazpena jaso duzu "%{participatory_space_title}" jarraitzen ari zarenagatik. Aurreko esteka estekan jarrai dezakezu.
|
61
|
+
email_subject: '%{participatory_space_title} urtean argitaratutako mezu berria'
|
62
|
+
notification_title: <a href="%{resource_path}">%{resource_title}</a> post %{participatory_space_title} argitaratu da
|
63
|
+
participatory_processes:
|
64
|
+
statistics:
|
65
|
+
posts_count: Mezuak
|
66
|
+
pages:
|
67
|
+
home:
|
68
|
+
statistics:
|
69
|
+
posts_count: Mezuak
|