decidim-admin 0.0.3 → 0.0.5
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 +4 -4
- data/app/assets/javascripts/decidim/admin/sort_steps.js.es6 +3 -3
- data/app/assets/stylesheets/decidim/admin/_email_preview.scss +5 -0
- data/app/assets/stylesheets/decidim/admin/application.scss +1 -0
- data/app/commands/decidim/admin/create_newsletter.rb +30 -0
- data/app/commands/decidim/admin/create_participatory_process_admin.rb +3 -0
- data/app/commands/decidim/admin/deliver_newsletter.rb +29 -0
- data/app/commands/decidim/admin/destroy_participatory_process_step.rb +9 -0
- data/app/commands/decidim/admin/update_feature_permissions.rb +46 -0
- data/app/commands/decidim/admin/update_newsletter.rb +33 -0
- data/app/commands/decidim/admin/update_organization.rb +17 -2
- data/app/commands/decidim/admin/update_participatory_process.rb +4 -2
- data/app/constraints/decidim/admin/organization_dashboard_constraint.rb +1 -1
- data/app/controllers/decidim/admin/application_controller.rb +3 -0
- data/app/controllers/decidim/admin/feature_permissions_controller.rb +59 -0
- data/app/controllers/decidim/admin/features_controller.rb +20 -0
- data/app/controllers/decidim/admin/newsletters_controller.rb +115 -0
- data/app/controllers/decidim/admin/participatory_processes_controller.rb +4 -4
- data/app/controllers/decidim/admin/users_controller.rb +3 -1
- data/app/forms/decidim/admin/newsletter_form.rb +15 -0
- data/app/forms/decidim/admin/organization_form.rb +10 -0
- data/app/forms/decidim/admin/participatory_process_form.rb +8 -5
- data/app/forms/decidim/admin/permission_form.rb +31 -0
- data/app/forms/decidim/admin/permissions_form.rb +16 -0
- data/app/helpers/decidim/admin/application_helper.rb +1 -0
- data/app/jobs/decidim/admin/newsletter_delivery_job.rb +18 -0
- data/app/jobs/decidim/admin/newsletter_job.rb +32 -0
- data/app/models/decidim/admin/abilities/admin_user.rb +4 -0
- data/app/models/decidim/admin/abilities/base.rb +4 -0
- data/app/models/decidim/admin/abilities/collaborator_user.rb +19 -0
- data/app/models/decidim/admin/abilities/participatory_process_admin.rb +1 -1
- data/app/models/decidim/admin/participatory_process_user_role.rb +1 -1
- data/app/queries/decidim/admin/manageable_participatory_processes_for_user.rb +1 -1
- data/app/views/decidim/admin/attachments/edit.html.erb +1 -1
- data/app/views/decidim/admin/attachments/new.html.erb +1 -1
- data/app/views/decidim/admin/categories/edit.html.erb +1 -1
- data/app/views/decidim/admin/categories/new.html.erb +1 -1
- data/app/views/decidim/admin/dashboard/show.html.erb +1 -1
- data/app/views/decidim/admin/feature_permissions/edit.html.erb +27 -0
- data/app/views/decidim/admin/features/_feature.html.erb +10 -0
- data/app/views/decidim/admin/features/edit.html.erb +1 -1
- data/app/views/decidim/admin/features/new.html.erb +1 -1
- data/app/views/decidim/admin/newsletters/_form.html.erb +5 -0
- data/app/views/decidim/admin/newsletters/edit.html.erb +11 -0
- data/app/views/decidim/admin/newsletters/index.html.erb +47 -0
- data/app/views/decidim/admin/newsletters/new.html.erb +11 -0
- data/app/views/decidim/admin/newsletters/show.html.erb +14 -0
- data/app/views/decidim/admin/organization/_form.html.erb +34 -0
- data/app/views/decidim/admin/organization/edit.html.erb +2 -2
- data/app/views/decidim/admin/participatory_process_steps/_form.html.erb +1 -1
- data/app/views/decidim/admin/participatory_process_steps/edit.html.erb +1 -1
- data/app/views/decidim/admin/participatory_process_steps/new.html.erb +1 -1
- data/app/views/decidim/admin/participatory_process_user_roles/index.html.erb +1 -1
- data/app/views/decidim/admin/participatory_processes/_form.html.erb +18 -5
- data/app/views/decidim/admin/participatory_processes/edit.html.erb +1 -1
- data/app/views/decidim/admin/participatory_processes/index.html.erb +1 -1
- data/app/views/decidim/admin/participatory_processes/new.html.erb +2 -2
- data/app/views/decidim/admin/participatory_processes/show.html.erb +5 -2
- data/app/views/decidim/admin/scopes/edit.html.erb +2 -2
- data/app/views/decidim/admin/scopes/index.html.erb +1 -1
- data/app/views/decidim/admin/scopes/new.html.erb +2 -2
- data/app/views/decidim/admin/static_pages/_form.html.erb +1 -1
- data/app/views/decidim/admin/static_pages/edit.html.erb +2 -2
- data/app/views/decidim/admin/static_pages/index.html.erb +1 -1
- data/app/views/decidim/admin/static_pages/new.html.erb +2 -2
- data/app/views/decidim/admin/static_pages/show.html.erb +1 -1
- data/app/views/decidim/admin/user_groups/index.html.erb +1 -1
- data/app/views/decidim/admin/users/index.html.erb +1 -1
- data/app/views/decidim/admin/users/new.html.erb +2 -2
- data/app/views/layouts/decidim/admin/_sidebar.html.erb +1 -0
- data/app/views/layouts/decidim/admin/participatory_process.html.erb +1 -1
- data/config/i18n-tasks.yml +4 -3
- data/config/locales/ca.yml +60 -1
- data/config/locales/en.yml +59 -0
- data/config/locales/es.yml +59 -0
- data/config/locales/eu.yml +5 -0
- data/config/routes.rb +15 -1
- data/db/seeds.rb +3 -1
- data/lib/decidim/admin/engine.rb +1 -0
- data/lib/decidim/admin/features/base_controller.rb +5 -1
- metadata +26 -20
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<div id="newsletters">
|
|
2
|
+
<% provide :title do %>
|
|
3
|
+
<h2><%= t ".title" %></h2>
|
|
4
|
+
<% end %>
|
|
5
|
+
|
|
6
|
+
<div class="actions title">
|
|
7
|
+
<%= link_to t("actions.new", scope: "decidim.admin", name: t("models.newsletter.name", scope: "decidim.admin").downcase), ['new', 'newsletter'], class: 'new' %>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
<table class="stack newsletters">
|
|
12
|
+
<thead>
|
|
13
|
+
<tr>
|
|
14
|
+
<th><%= t("models.newsletter.fields.subject", scope: "decidim.admin") %></th>
|
|
15
|
+
<th><%= t("models.newsletter.fields.created_at", scope: "decidim.admin") %></th>
|
|
16
|
+
<th><%= t("models.newsletter.fields.sent_at", scope: "decidim.admin") %></th>
|
|
17
|
+
<th><%= t("models.newsletter.fields.progress", scope: "decidim.admin") %></th>
|
|
18
|
+
<th class="actions"><%= t("actions.title", scope: "decidim.admin") %></th>
|
|
19
|
+
</tr>
|
|
20
|
+
</thead>
|
|
21
|
+
<tbody>
|
|
22
|
+
<% @newsletters.each do |newsletter| %>
|
|
23
|
+
<tr data-newsletter-id="<%= newsletter.id %>">
|
|
24
|
+
<td><%= translated_attribute newsletter.subject %></td>
|
|
25
|
+
<td><%= l newsletter.created_at, format: :long if newsletter.created_at %></td>
|
|
26
|
+
<td><%= l newsletter.sent_at, format: :long if newsletter.sent_at %></td>
|
|
27
|
+
<td>
|
|
28
|
+
<% if newsletter.sent? %>
|
|
29
|
+
<%= "#{newsletter.total_deliveries} / #{newsletter.total_recipients}" %>
|
|
30
|
+
<% end %>
|
|
31
|
+
</td>
|
|
32
|
+
<td class="actions">
|
|
33
|
+
<%= link_to t("actions.preview", scope: "decidim.admin"), decidim_admin.newsletter_path(newsletter) %>
|
|
34
|
+
|
|
35
|
+
<% if can?(:update, newsletter) && !newsletter.sent? %>
|
|
36
|
+
<%= link_to t("actions.edit", scope: "decidim.admin"), decidim_admin.edit_newsletter_path(newsletter) %>
|
|
37
|
+
<% end %>
|
|
38
|
+
|
|
39
|
+
<% if can?(:destroy, newsletter) && !newsletter.sent? %>
|
|
40
|
+
<%= link_to t("actions.destroy", scope: "decidim.admin"), decidim_admin.newsletter_path(newsletter), method: :delete, class: "button", data: { confirm: t(".confirm_delete") } %>
|
|
41
|
+
<% end %>
|
|
42
|
+
</td>
|
|
43
|
+
</tr>
|
|
44
|
+
<% end %>
|
|
45
|
+
</tbody>
|
|
46
|
+
</table>
|
|
47
|
+
</div>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<h3><%= t ".preview" %></h3>
|
|
2
|
+
|
|
3
|
+
<dl>
|
|
4
|
+
<dt><%= t ".subject" %></dt>
|
|
5
|
+
<dd><%= @email.subject %></dd>
|
|
6
|
+
</dl>
|
|
7
|
+
|
|
8
|
+
<iframe src="<%= preview_newsletter_path(@newsletter) %>" class="email-preview">
|
|
9
|
+
</iframe>
|
|
10
|
+
|
|
11
|
+
<div class="actions">
|
|
12
|
+
<%= link_to t("actions.edit", scope: "decidim.admin"), ['edit', @newsletter] %>
|
|
13
|
+
<%= link_to t(".deliver"), deliver_newsletter_path(@newsletter), method: :post, class: "button", data: { confirm: t(".confirm_deliver") } %>
|
|
14
|
+
</div>
|
|
@@ -6,6 +6,22 @@
|
|
|
6
6
|
<%= form.text_field :twitter_handler %>
|
|
7
7
|
</div>
|
|
8
8
|
|
|
9
|
+
<div class="field">
|
|
10
|
+
<%= form.text_field :facebook_handler %>
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
<div class="field">
|
|
14
|
+
<%= form.text_field :instagram_handler %>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
<div class="field">
|
|
18
|
+
<%= form.text_field :youtube_handler %>
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
<div class="field">
|
|
22
|
+
<%= form.text_field :github_handler %>
|
|
23
|
+
</div>
|
|
24
|
+
|
|
9
25
|
<div class="field">
|
|
10
26
|
<%= form.translated :editor, :description %>
|
|
11
27
|
</div>
|
|
@@ -30,6 +46,24 @@
|
|
|
30
46
|
<%= form.file_field :favicon %>
|
|
31
47
|
</div>
|
|
32
48
|
|
|
49
|
+
<div class="field">
|
|
50
|
+
<%= form.text_field :official_url %>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
<div class="field">
|
|
54
|
+
<%= form.file_field :official_img_header %>
|
|
55
|
+
<% if current_organization.official_img_header? %>
|
|
56
|
+
<%= image_tag current_organization.official_img_header.url.to_s %>
|
|
57
|
+
<% end %>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<div class="field">
|
|
61
|
+
<%= form.file_field :official_img_footer %>
|
|
62
|
+
<% if current_organization.official_img_footer? %>
|
|
63
|
+
<%= image_tag current_organization.official_img_footer.url.to_s %>
|
|
64
|
+
<% end %>
|
|
65
|
+
</div>
|
|
66
|
+
|
|
33
67
|
<div class="field">
|
|
34
68
|
<%= form.check_box :show_statistics %>
|
|
35
69
|
</div>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
<%
|
|
1
|
+
<% provide :title do %>
|
|
2
2
|
<h2><%= t ".title" %></h2>
|
|
3
3
|
<% end %>
|
|
4
4
|
|
|
5
|
-
<%=
|
|
5
|
+
<%= decidim_form_for(@form, url: organization_path) do |f| %>
|
|
6
6
|
<%= render partial: 'form', object: f %>
|
|
7
7
|
|
|
8
8
|
<div class="actions">
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<h3><%= t ".title" %></h3>
|
|
2
2
|
|
|
3
|
-
<%=
|
|
3
|
+
<%= decidim_form_for(@form, url: participatory_process_step_path(@participatory_process_step.participatory_process, @participatory_process_step)) do |f| %>
|
|
4
4
|
<%= render partial: 'form', object: f %>
|
|
5
5
|
|
|
6
6
|
<div class="actions">
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<section id="process_admins">
|
|
2
2
|
<h3><%= t(".process_admins_title", scope: "decidim.admin") %></h3>
|
|
3
3
|
|
|
4
|
-
<%=
|
|
4
|
+
<%= decidim_form_for :participatory_process_user_role, url: participatory_process_user_roles_path(participatory_process) do |f| %>
|
|
5
5
|
<table class="stack">
|
|
6
6
|
<thead>
|
|
7
7
|
<tr>
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
</div>
|
|
20
20
|
|
|
21
21
|
<div class="field">
|
|
22
|
-
<%= form.translated :editor, :description, toolbar: :full, lines:
|
|
22
|
+
<%= form.translated :editor, :description, toolbar: :full, lines: 25 %>
|
|
23
23
|
</div>
|
|
24
24
|
|
|
25
25
|
<div class="field">
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
</div>
|
|
36
36
|
|
|
37
37
|
<div class="field">
|
|
38
|
-
<%= form.
|
|
38
|
+
<%= form.date_field :end_date %>
|
|
39
39
|
</div>
|
|
40
40
|
|
|
41
41
|
<div class="field">
|
|
@@ -43,9 +43,22 @@
|
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
<div class="field">
|
|
46
|
-
<%= form.text_field :developer_group %>
|
|
46
|
+
<%= form.translated :text_field, :developer_group %>
|
|
47
47
|
</div>
|
|
48
48
|
|
|
49
49
|
<div class="field">
|
|
50
|
-
<%= form.
|
|
51
|
-
</div>
|
|
50
|
+
<%= form.translated :text_field, :local_area %>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
<div class="field">
|
|
54
|
+
<%= form.translated :text_field, :target %>
|
|
55
|
+
</div>
|
|
56
|
+
|
|
57
|
+
<div class="field">
|
|
58
|
+
<%= form.translated :text_field, :participatory_scope %>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<div class="field">
|
|
62
|
+
<%= form.translated :text_field, :participatory_structure %>
|
|
63
|
+
</div>
|
|
64
|
+
|
|
@@ -7,8 +7,11 @@
|
|
|
7
7
|
:short_description,
|
|
8
8
|
:description,
|
|
9
9
|
:scope,
|
|
10
|
-
:
|
|
11
|
-
:
|
|
10
|
+
:developer_group,
|
|
11
|
+
:local_area,
|
|
12
|
+
:target,
|
|
13
|
+
:participatory_scope,
|
|
14
|
+
:participatory_structure
|
|
12
15
|
%>
|
|
13
16
|
|
|
14
17
|
<dt><%= display_label(participatory_process, :end_date) %></dt>
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
<%= active_link_to t("menu.scopes", scope: "decidim.admin"), decidim_admin.scopes_path, active: :inclusive if can? :read, Decidim::Scope %>
|
|
14
14
|
<%= active_link_to t("menu.users", scope: "decidim.admin"), decidim_admin.users_path, active: :inclusive if can? :read, :admin_users %>
|
|
15
15
|
<%= active_link_to t("menu.user_groups", scope: "decidim.admin"), decidim_admin.user_groups_path, active: :inclusive if can? :index, Decidim::UserGroup %>
|
|
16
|
+
<%= active_link_to t("menu.newsletters", scope: "decidim.admin"), decidim_admin.newsletters_path, active: :inclusive if can? :index, Decidim::Newsletter %>
|
|
16
17
|
<%= active_link_to t("menu.settings", scope: "decidim.admin"), decidim_admin.edit_organization_path, active: :inclusive if can? :read, current_organization %>
|
|
17
18
|
</nav>
|
|
18
19
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<%
|
|
1
|
+
<% provide :title do %>
|
|
2
2
|
<h2><%= link_to translated_attribute(participatory_process.title), decidim_admin.participatory_process_path(participatory_process) %></h2>
|
|
3
3
|
<h3 class="subheader"><%= translated_attribute(participatory_process.subtitle) %></h3>
|
|
4
4
|
<% end %>
|
data/config/i18n-tasks.yml
CHANGED
|
@@ -89,9 +89,10 @@ search:
|
|
|
89
89
|
|
|
90
90
|
## Consider these keys used:
|
|
91
91
|
ignore_unused:
|
|
92
|
-
- activerecord.attributes.*
|
|
93
|
-
- activemodel.attributes.*
|
|
94
|
-
- decidim.admin.participatory_process_steps.default_title
|
|
92
|
+
- activerecord.attributes.*
|
|
93
|
+
- activemodel.attributes.*
|
|
94
|
+
- decidim.admin.participatory_process_steps.default_title
|
|
95
|
+
- activemodel.errors.messages.*
|
|
95
96
|
# - '{devise,kaminari,will_paginate}.*'
|
|
96
97
|
# - 'simple_form.{yes,no}'
|
|
97
98
|
# - 'simple_form.{placeholders,hints,labels}.*'
|
data/config/locales/ca.yml
CHANGED
|
@@ -12,6 +12,9 @@ ca:
|
|
|
12
12
|
feature:
|
|
13
13
|
name: Nom
|
|
14
14
|
weight: Pes
|
|
15
|
+
newsletter:
|
|
16
|
+
body: Cos
|
|
17
|
+
subject: Assumpte
|
|
15
18
|
organization:
|
|
16
19
|
default_locale: Idioma per defecte
|
|
17
20
|
description: Descripció
|
|
@@ -24,9 +27,13 @@ ca:
|
|
|
24
27
|
participatory_process:
|
|
25
28
|
banner_image: Imatge de bandera
|
|
26
29
|
description: Descripció
|
|
30
|
+
developer_group: Grup promotor
|
|
31
|
+
domain: Àrees municipals
|
|
32
|
+
end_date: Data de finalització
|
|
27
33
|
hashtag: Etiqueta
|
|
28
34
|
hero_image: Imatge de portada
|
|
29
35
|
promoted: Promogut
|
|
36
|
+
scope: Àmbit
|
|
30
37
|
short_description: Descripció breu
|
|
31
38
|
slug: Nom curt d'URL
|
|
32
39
|
subtitle: Subtítol
|
|
@@ -47,6 +54,9 @@ ca:
|
|
|
47
54
|
organization: Organització
|
|
48
55
|
slug: Nom curt d'URL
|
|
49
56
|
title: Títol
|
|
57
|
+
errors:
|
|
58
|
+
messages:
|
|
59
|
+
invalid_json: JSON no vàlid
|
|
50
60
|
activerecord:
|
|
51
61
|
attributes:
|
|
52
62
|
decidim/participatory_process:
|
|
@@ -62,6 +72,7 @@ ca:
|
|
|
62
72
|
edit: Editar
|
|
63
73
|
manage: Gestionar
|
|
64
74
|
new: Nou %{name}
|
|
75
|
+
permissions: Permisos
|
|
65
76
|
preview: Previsualitzar
|
|
66
77
|
publish: Publicar
|
|
67
78
|
resend_invitation: Tornar a enviar invitació
|
|
@@ -114,13 +125,20 @@ ca:
|
|
|
114
125
|
participatory_process_user_roles:
|
|
115
126
|
index:
|
|
116
127
|
process_admins_title: Administradors del procés participatiu
|
|
128
|
+
feature_permissions:
|
|
129
|
+
edit:
|
|
130
|
+
everyone: Tothom
|
|
131
|
+
submit: Desar permisos
|
|
132
|
+
title: Permisos d'edició
|
|
133
|
+
update:
|
|
134
|
+
success: Permisos actualitzats correctament.
|
|
117
135
|
features:
|
|
118
136
|
create:
|
|
119
137
|
error: S'ha produït un error en afegir aquesta funcionalitat.
|
|
120
138
|
success: Funcionalitat creada correctament.
|
|
121
139
|
destroy:
|
|
122
140
|
error: S'ha produït un error destruir aquesta funcionalitat.
|
|
123
|
-
success:
|
|
141
|
+
success: Funcionalitat eliminada correctament.
|
|
124
142
|
edit:
|
|
125
143
|
title: Editar funcionalitat
|
|
126
144
|
update: Actualitza
|
|
@@ -136,12 +154,17 @@ ca:
|
|
|
136
154
|
new:
|
|
137
155
|
add: Afegir funcionalitat
|
|
138
156
|
title: 'Afegir funcionalitat: %{name}'
|
|
157
|
+
publish:
|
|
158
|
+
success: La funcionalitat s'ha publicat correctament.
|
|
139
159
|
title: Funcionalitats
|
|
160
|
+
unpublish:
|
|
161
|
+
success: La funcionalitat ha estat despublicada exitosament.
|
|
140
162
|
update:
|
|
141
163
|
error: S'ha produït un error en actualitzar aquesta funcionalitat.
|
|
142
164
|
success: La funcionalitat s'ha actualitzat correctament.
|
|
143
165
|
menu:
|
|
144
166
|
dashboard: Tauler de control
|
|
167
|
+
newsletters: Butlletins
|
|
145
168
|
participatory_processes: Processos participatius
|
|
146
169
|
participatory_processes_submenu:
|
|
147
170
|
attachments: Adjunts
|
|
@@ -166,6 +189,13 @@ ca:
|
|
|
166
189
|
fields:
|
|
167
190
|
name: Nom
|
|
168
191
|
name: Categoria
|
|
192
|
+
newsletter:
|
|
193
|
+
fields:
|
|
194
|
+
created_at: Data de creació
|
|
195
|
+
progress: Progrés
|
|
196
|
+
sent_at: Enviat el
|
|
197
|
+
subject: Assumpte
|
|
198
|
+
name: Butlletí
|
|
169
199
|
participatory_process:
|
|
170
200
|
fields:
|
|
171
201
|
created_at: Data de creació
|
|
@@ -209,6 +239,35 @@ ca:
|
|
|
209
239
|
name: Nom
|
|
210
240
|
phone: Telèfon
|
|
211
241
|
users_count: Número d'usuaris
|
|
242
|
+
newsletters:
|
|
243
|
+
create:
|
|
244
|
+
error: S'ha produït un error en crear aquest butlletí.
|
|
245
|
+
success: Butlletí creat amb èxit. Si us plau, revisa'l abans d'enviar.
|
|
246
|
+
deliver:
|
|
247
|
+
error: Hi ha hagut un error d'enviament d'aquest butlletí.
|
|
248
|
+
success: Butlletí enviat amb èxit.
|
|
249
|
+
destroy:
|
|
250
|
+
error_already_sent: 'No es pot destruir butlletí de notícies: Ja s''ha enviat.'
|
|
251
|
+
success: Butlletí destruït amb èxit.
|
|
252
|
+
edit:
|
|
253
|
+
save_and_preview: Desar i vista prèvia
|
|
254
|
+
title: Editar butlletí
|
|
255
|
+
form:
|
|
256
|
+
interpolations_hint: 'Consell: Podeu utilitzar "%{name}" en qualsevol part del cos o assumpte i serà reemplaçat pel nom del destinatari.'
|
|
257
|
+
index:
|
|
258
|
+
confirm_delete: Esteu segur que voleu suprimir aquest butlletí?
|
|
259
|
+
title: Butlletins
|
|
260
|
+
new:
|
|
261
|
+
save: Desar
|
|
262
|
+
title: Nou butlletí
|
|
263
|
+
show:
|
|
264
|
+
confirm_deliver: Estàs segur de que vols enviar aquest butlletí? Aquesta acció no es pot desfer.
|
|
265
|
+
deliver: Enviar butlletí
|
|
266
|
+
preview: Previsualitzar
|
|
267
|
+
subject: Assumpte
|
|
268
|
+
update:
|
|
269
|
+
error: S'ha produït un error en actualitzar aquest butlletí.
|
|
270
|
+
success: Butlletí actualitzat correctament. Si us plau, revisa'l abans d'enviar-lo.
|
|
212
271
|
organization:
|
|
213
272
|
edit:
|
|
214
273
|
title: Edita organització
|