decidim-plans 0.16.4 → 0.16.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/decidim/plans/proposal_picker.js.es6 +2 -2
- data/app/cells/decidim/plans/plan_cell.rb +1 -1
- data/app/cells/decidim/plans/plan_m_cell.rb +4 -0
- data/app/commands/decidim/plans/admin/export_plans_to_budgets.rb +12 -11
- data/app/controllers/decidim/plans/plans_controller.rb +0 -16
- data/app/helpers/decidim/plans/application_helper.rb +1 -0
- data/app/helpers/decidim/plans/links_helper.rb +45 -0
- data/app/presenters/concerns/decidim/plans/rich_presenter.rb +14 -0
- data/app/presenters/decidim/plans/content_presenter.rb +3 -2
- data/app/presenters/decidim/plans/plan_presenter.rb +5 -4
- data/app/views/decidim/plans/admin/plans/_form.html.erb +6 -2
- data/app/views/decidim/plans/plans/_contents.html.erb +1 -1
- data/app/views/decidim/plans/plans/_form.html.erb +5 -2
- data/app/views/decidim/plans/plans/show.html.erb +8 -10
- data/app/views/decidim/plans/shared/_attachment_fields.html.erb +6 -0
- data/config/locales/en.yml +23 -21
- data/config/locales/fi.yml +21 -21
- data/config/locales/sv.yml +260 -260
- data/lib/decidim/plans/component.rb +2 -0
- data/lib/decidim/plans/engine.rb +0 -1
- data/lib/decidim/plans/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '08d56d238a66eca983dbe996717bb9387525e974336ce65ab9f8943e1e3afe5e'
|
4
|
+
data.tar.gz: fe1204b85350bdea566562b75956c7eed3e989b793669b35b25be08b85cabe07
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8ac917fa65cc0f67ae41541ee8d9af242ecff01ed3b3936bba4f1dfe3b6de3d771dc830a6b9522596ab57a73d378b0ffe2be76454e9b96f530a3eb947144ed4
|
7
|
+
data.tar.gz: 17df9cff118e3dc9be17afb6408a247e600da2018cef3220078bf5885a0ebbc3da04780e14fe074935e4cbfc4966f379f4e37a6c035b65986002b1e5a4428a1a
|
@@ -28,9 +28,9 @@ $(function() {
|
|
28
28
|
renderItem: function (item, search) {
|
29
29
|
let sanitizedSearch = search.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&");
|
30
30
|
let re = new RegExp(`(${sanitizedSearch.split(" ").join("|")})`, "gi");
|
31
|
-
let title = item[0];
|
31
|
+
let title = item[0].replace(/"/g, """);
|
32
32
|
let modelId = item[1];
|
33
|
-
return `<div class="autocomplete-suggestion" data-model-id="${modelId}" data-val
|
33
|
+
return `<div class="autocomplete-suggestion" data-model-id="${modelId}" data-val="${title}">${title.replace(re, "<b>$1</b>")}</div>`;
|
34
34
|
},
|
35
35
|
onSelect: function(event, term, item) {
|
36
36
|
let choose = $("#proposal-picker-choose");
|
@@ -6,6 +6,8 @@ module Decidim
|
|
6
6
|
# A command with all the business logic when an admin exports plans to a
|
7
7
|
# single budget component.
|
8
8
|
class ExportPlansToBudgets < Rectify::Command
|
9
|
+
include ActionView::Helpers::TextHelper
|
10
|
+
|
9
11
|
# Public: Initializes the command.
|
10
12
|
#
|
11
13
|
# form - A form object with the params.
|
@@ -35,7 +37,7 @@ module Decidim
|
|
35
37
|
next if plan_already_copied?(original_plan, target_component)
|
36
38
|
|
37
39
|
project = Decidim::Budgets::Project.new
|
38
|
-
project.title = original_plan.title
|
40
|
+
project.title = sanitize_localized(original_plan.title)
|
39
41
|
project.description = project_description(original_plan)
|
40
42
|
project.budget = form.default_budget
|
41
43
|
project.category = original_plan.category
|
@@ -83,20 +85,13 @@ module Decidim
|
|
83
85
|
original_plan.sections.each do |section|
|
84
86
|
content = original_plan.contents.find_by(section: section)
|
85
87
|
content.body.each do |locale, body_text|
|
86
|
-
title = section.body[locale]
|
88
|
+
title = sanitize(section.body[locale])
|
87
89
|
pr_desc[locale] ||= ""
|
88
90
|
pr_desc[locale] += "<h3>#{title}</h3>\n"
|
89
91
|
|
90
|
-
# In case the text is already HTML, append as is.
|
91
92
|
# Wrap non-HTML strings within a <p> tag and replace newlines with
|
92
|
-
# <br>.
|
93
|
-
pr_desc[locale] += (
|
94
|
-
if body_text =~ %r{<\/?[^>]*>}
|
95
|
-
"#{body_text}\n"
|
96
|
-
else
|
97
|
-
"<p>#{body_text.gsub(/\n/, "<br>")}</p>\n"
|
98
|
-
end
|
99
|
-
)
|
93
|
+
# <br>. This also takes care of sanitization.
|
94
|
+
pr_desc[locale] += simple_format(body_text)
|
100
95
|
end
|
101
96
|
end
|
102
97
|
|
@@ -105,6 +100,12 @@ module Decidim
|
|
105
100
|
|
106
101
|
pr_desc
|
107
102
|
end
|
103
|
+
|
104
|
+
def sanitize_localized(hash)
|
105
|
+
hash.each do |locale, value|
|
106
|
+
hash[locale] = sanitize(value)
|
107
|
+
end
|
108
|
+
end
|
108
109
|
end
|
109
110
|
end
|
110
111
|
end
|
@@ -160,22 +160,6 @@ module Decidim
|
|
160
160
|
end
|
161
161
|
end
|
162
162
|
|
163
|
-
def reopen
|
164
|
-
enforce_permission_to :close, :plan, plan: @plan
|
165
|
-
|
166
|
-
ReopenPlan.call(@plan, current_user) do
|
167
|
-
on(:ok) do |plan|
|
168
|
-
flash[:notice] = I18n.t("reopen.success", scope: "decidim.plans.plans.plan")
|
169
|
-
redirect_to Decidim::ResourceLocatorPresenter.new(plan).path
|
170
|
-
end
|
171
|
-
|
172
|
-
on(:invalid) do
|
173
|
-
flash.now[:alert] = t("reopen.error", scope: "decidim.plans.plans.plan")
|
174
|
-
redirect_to Decidim::ResourceLocatorPresenter.new(@plan).path
|
175
|
-
end
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
163
|
private
|
180
164
|
|
181
165
|
def check_draft
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Plans
|
5
|
+
module LinksHelper
|
6
|
+
# This is for generating the links so that they maintain the search status
|
7
|
+
def request_params(extra_params={}, exclude_params=[])
|
8
|
+
@request_params ||= request.params.except(
|
9
|
+
*(exclude_params + [
|
10
|
+
:action,
|
11
|
+
:component_id,
|
12
|
+
:controller,
|
13
|
+
:assembly_slug,
|
14
|
+
:participatory_process_slug,
|
15
|
+
:id
|
16
|
+
])
|
17
|
+
).merge(prepare_extra_params(extra_params))
|
18
|
+
end
|
19
|
+
|
20
|
+
def request_params_query(extra_params={}, exclude_params=[])
|
21
|
+
return "" unless request_params(extra_params, exclude_params).any?
|
22
|
+
|
23
|
+
"?#{request_params.to_query}"
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
# Adds the random seed to the extra parameters to maintain the ordering
|
29
|
+
# correctly across the requests.
|
30
|
+
def prepare_extra_params(extra_params)
|
31
|
+
return extra_params unless controller
|
32
|
+
return extra_params unless controller.respond_to?(:order, true)
|
33
|
+
return extra_params unless controller.respond_to?(:random_seed, true)
|
34
|
+
|
35
|
+
order = controller.send(:order)
|
36
|
+
return extra_params unless order == "random"
|
37
|
+
|
38
|
+
seed = controller.send(:random_seed)
|
39
|
+
return extra_params unless seed
|
40
|
+
|
41
|
+
extra_params.merge(random_seed: seed)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Plans
|
5
|
+
module RichPresenter
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
include ActionView::Helpers::TextHelper
|
8
|
+
|
9
|
+
def rich_content(content)
|
10
|
+
simple_format(content, wrapper_tag: nil)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -8,17 +8,18 @@ module Decidim
|
|
8
8
|
class ContentPresenter < SimpleDelegator
|
9
9
|
include Rails.application.routes.mounted_helpers
|
10
10
|
include TranslatableAttributes
|
11
|
+
include Plans::RichPresenter
|
11
12
|
|
12
13
|
def content
|
13
14
|
__getobj__
|
14
15
|
end
|
15
16
|
|
16
17
|
def title
|
17
|
-
translated_attribute(content.title)
|
18
|
+
sanitize(translated_attribute(content.title))
|
18
19
|
end
|
19
20
|
|
20
21
|
def body
|
21
|
-
translated_attribute(content.body)
|
22
|
+
rich_content(translated_attribute(content.body))
|
22
23
|
end
|
23
24
|
end
|
24
25
|
end
|
@@ -9,6 +9,7 @@ module Decidim
|
|
9
9
|
include Rails.application.routes.mounted_helpers
|
10
10
|
include ActionView::Helpers::UrlHelper
|
11
11
|
include TranslatableAttributes
|
12
|
+
include Plans::RichPresenter
|
12
13
|
|
13
14
|
def author
|
14
15
|
coauthorship = coauthorships.first
|
@@ -28,7 +29,7 @@ module Decidim
|
|
28
29
|
end
|
29
30
|
|
30
31
|
def title
|
31
|
-
translated_attribute(plan.title)
|
32
|
+
sanitize(translated_attribute(plan.title))
|
32
33
|
end
|
33
34
|
|
34
35
|
def body
|
@@ -36,9 +37,9 @@ module Decidim
|
|
36
37
|
content = plan.contents.find_by(section: section)
|
37
38
|
next if content.nil?
|
38
39
|
|
39
|
-
|
40
|
-
|
41
|
-
"<dt>#{
|
40
|
+
section_title = sanitize(translated_attribute(content.title))
|
41
|
+
section_body = sanitize(translated_attribute(content.body))
|
42
|
+
"<dt>#{section_title}</dt> <dd>#{section_body}</dd>"
|
42
43
|
end
|
43
44
|
|
44
45
|
"<dl>#{fields.join("\n")}</dl>".html_safe
|
@@ -23,12 +23,16 @@ form.multipart = true
|
|
23
23
|
<div class="row column">
|
24
24
|
<%= remaining_characters("plans_title", component_settings.plan_title_length) do |opts| %>
|
25
25
|
<% if component_settings.multilingual_answers? %>
|
26
|
-
<%= form.translated :text_field, :title, opts.merge(
|
26
|
+
<%= form.translated :text_field, :title, opts.merge(
|
27
|
+
tabs_id: "title-tabs",
|
28
|
+
help_text: translated_attribute(component_settings.title_help)
|
29
|
+
) %>
|
27
30
|
<% else %>
|
28
31
|
<%= form.text_field(
|
29
32
|
"title_#{current_locale}".to_sym,
|
30
33
|
{
|
31
|
-
label: form.label_for(:title)
|
34
|
+
label: form.label_for(:title),
|
35
|
+
help_text: translated_attribute(component_settings.title_help)
|
32
36
|
}.merge(opts)
|
33
37
|
) %>
|
34
38
|
<% end %>
|
@@ -23,12 +23,15 @@ form.multipart = true
|
|
23
23
|
<div class="field">
|
24
24
|
<%= remaining_characters("plans_title", component_settings.plan_title_length) do |opts| %>
|
25
25
|
<% if component_settings.multilingual_answers? %>
|
26
|
-
<%= form.translated :text_field, :title, opts
|
26
|
+
<%= form.translated :text_field, :title, opts.merge(
|
27
|
+
help_text: translated_attribute(component_settings.title_help)
|
28
|
+
) %>
|
27
29
|
<% else %>
|
28
30
|
<%= form.text_field(
|
29
31
|
"title_#{current_locale}".to_sym,
|
30
32
|
{
|
31
|
-
label: form.label_for(:title)
|
33
|
+
label: form.label_for(:title),
|
34
|
+
help_text: translated_attribute(component_settings.title_help)
|
32
35
|
}.merge(opts)
|
33
36
|
) %>
|
34
37
|
<% end %>
|
@@ -12,10 +12,12 @@
|
|
12
12
|
<% end %>
|
13
13
|
|
14
14
|
<div class="row column view-header">
|
15
|
-
|
16
|
-
<%=
|
17
|
-
|
18
|
-
|
15
|
+
<p class="h5">
|
16
|
+
<%= link_to plans_path(request_params) do %>
|
17
|
+
<%= icon "chevron-left", class: "icon--small" %>
|
18
|
+
<%= t(".back") %>
|
19
|
+
<% end %>
|
20
|
+
</p>
|
19
21
|
|
20
22
|
<h2 class="heading2">
|
21
23
|
<%= present(@plan).title %>
|
@@ -45,12 +47,8 @@
|
|
45
47
|
<% if allowed_to?(:edit, :plan, plan: @plan) %>
|
46
48
|
<%= link_to t("edit", scope:"decidim.plans.plans.show"), edit_plan_path(@plan), class: "button secondary hollow expanded button--sc mt-s", id: "plan_edit" %>
|
47
49
|
<% end %>
|
48
|
-
<% if allowed_to?(:close, :plan, plan: @plan) %>
|
49
|
-
|
50
|
-
<%= link_to t("reopen", scope:"decidim.plans.plans.show"), reopen_plan_path(@plan), method: :post, class: "button secondary hollow expanded button--sc mt-s", id: "plan_reopen", data: { confirm: t("reopen_confirm", scope:"decidim.plans.plans.show") } %>
|
51
|
-
<% else %>
|
52
|
-
<%= link_to t("close", scope:"decidim.plans.plans.show"), close_plan_path(@plan), method: :post, class: "button secondary hollow expanded button--sc mt-s", id: "plan_close", data: { confirm: t("close_confirm", scope:"decidim.plans.plans.show") } %>
|
53
|
-
<% end %>
|
50
|
+
<% if allowed_to?(:close, :plan, plan: @plan) && !@plan.closed? %>
|
51
|
+
<%= link_to t("close", scope:"decidim.plans.plans.show"), close_plan_path(@plan), method: :post, class: "button secondary hollow expanded button--sc mt-s", id: "plan_close", data: { confirm: t("close_confirm", scope:"decidim.plans.plans.show") } %>
|
54
52
|
<% end %>
|
55
53
|
|
56
54
|
<%= render "request_access_form" %>
|
@@ -1,3 +1,5 @@
|
|
1
|
+
<% help_text = translated_attribute(component_settings.attachment_help).strip %>
|
2
|
+
|
1
3
|
<div class="card multifield-field" id="<%= id %>-field">
|
2
4
|
<div class="card-divider multifield-field-divider">
|
3
5
|
<h3 class="heading6 card-title">
|
@@ -21,6 +23,10 @@
|
|
21
23
|
|
22
24
|
<div class="card-section">
|
23
25
|
<div class="row column">
|
26
|
+
<% if help_text && help_text.length > 0 %>
|
27
|
+
<p class="help-text"><%= help_text %></p>
|
28
|
+
<% end %>
|
29
|
+
|
24
30
|
<div class="field">
|
25
31
|
<% if form.send(:attribute_required?, :title) %>
|
26
32
|
<%= form.text_field :title %>
|
data/config/locales/en.yml
CHANGED
@@ -34,6 +34,7 @@ en:
|
|
34
34
|
global:
|
35
35
|
announcement: Announcement
|
36
36
|
attachments_allowed: Attachments allowed
|
37
|
+
attachment_help: Attachment help text
|
37
38
|
categories_enabled: Categories enabled
|
38
39
|
comments_enabled: Comments enabled
|
39
40
|
multilingual_answers: Multilingual answers
|
@@ -41,6 +42,7 @@ en:
|
|
41
42
|
plan_title_length: Title length
|
42
43
|
proposal_linking_enabled: Proposal linking enabled
|
43
44
|
scopes_enabled: Scopes enabled
|
45
|
+
title_help: Title help text
|
44
46
|
step:
|
45
47
|
announcement: Announcement
|
46
48
|
comments_blocked: Comments blocked
|
@@ -330,57 +332,57 @@ en:
|
|
330
332
|
events:
|
331
333
|
plans:
|
332
334
|
plan_access_accepted:
|
333
|
-
email_intro: '%{requester_name} has been accepted to access as a contributor of <a href="%{
|
334
|
-
email_outro: You have received this notification because you are a collaborator of <a href="%{
|
335
|
+
email_intro: '%{requester_name} has been accepted to access as a contributor of <a href="%{resource_url}">%{resource_title}</a>.'
|
336
|
+
email_outro: You have received this notification because you are a collaborator of <a href="%{resource_url}">%{resource_title}</a>.
|
335
337
|
email_subject: "%{requester_name} has been accepted to access as a contributor of %{resource_title}."
|
336
|
-
notification_title: <a href="%{requester_path}">%{requester_name} %{requester_nickname}</a> has been <strong>accepted to access as a contributor</strong> of <a href="%{
|
338
|
+
notification_title: <a href="%{requester_path}">%{requester_name} %{requester_nickname}</a> has been <strong>accepted to access as a contributor</strong> of <a href="%{resource_url}">%{resource_title}</a>.
|
337
339
|
plan_access_rejected:
|
338
|
-
email_intro: '%{requester_name} has been rejected to access as a contributor of <a href="%{
|
339
|
-
email_outro: You have received this notification because you are a collaborator of <a href="%{
|
340
|
+
email_intro: '%{requester_name} has been rejected to access as a contributor of <a href="%{resource_url}">%{resource_title}</a>.'
|
341
|
+
email_outro: You have received this notification because you are a collaborator of <a href="%{resource_url}">%{resource_title}</a>.
|
340
342
|
email_subject: "%{requester_name} has been rejected to access as a contributor of %{resource_title}."
|
341
|
-
notification_title: <a href="%{requester_path}">%{requester_name} %{requester_nickname}</a> has been <strong>rejected to access as a contributor</strong> of <a href="%{
|
343
|
+
notification_title: <a href="%{requester_path}">%{requester_name} %{requester_nickname}</a> has been <strong>rejected to access as a contributor</strong> of <a href="%{resource_url}">%{resource_title}</a>.
|
342
344
|
plan_access_requested:
|
343
|
-
email_intro: '%{requester_name} requested access as a contributor. You can <strong>accept or reject the request</strong> from the <a href="%{
|
344
|
-
email_outro: You have received this notification because you are a collaborator of <a href="%{
|
345
|
+
email_intro: '%{requester_name} requested access as a contributor. You can <strong>accept or reject the request</strong> from the <a href="%{resource_url}">%{resource_title}</a> page.'
|
346
|
+
email_outro: You have received this notification because you are a collaborator of <a href="%{resource_url}">%{resource_title}</a>.
|
345
347
|
email_subject: "%{requester_name} requested access to contribute to %{resource_title}."
|
346
|
-
notification_title: <a href="%{requester_path}">%{requester_name} %{requester_nickname}</a> requested access to contribute to <a href="%{
|
348
|
+
notification_title: <a href="%{requester_path}">%{requester_name} %{requester_nickname}</a> requested access to contribute to <a href="%{resource_url}">%{resource_title}</a>. Please <strong>accept or reject the request</strong>.
|
347
349
|
plan_access_requester_accepted:
|
348
|
-
email_intro: You have been accepted to access as a contributor of <a href="%{
|
349
|
-
email_outro: You have received this notification because you requested to become a collaborator of <a href="%{
|
350
|
+
email_intro: You have been accepted to access as a contributor of <a href="%{resource_url}">%{resource_title}</a>.
|
351
|
+
email_outro: You have received this notification because you requested to become a collaborator of <a href="%{resource_url}">%{resource_title}</a>.
|
350
352
|
email_subject: You have been accepted as a contributor of %{resource_title}.
|
351
|
-
notification_title: You have been <strong>accepted to access as a contributor</strong> of <a href="%{
|
353
|
+
notification_title: You have been <strong>accepted to access as a contributor</strong> of <a href="%{resource_url}">%{resource_title}</a>.
|
352
354
|
plan_access_requester_rejected:
|
353
|
-
email_intro: You have been rejected to access as a contributor of <a href="%{
|
354
|
-
email_outro: You have received this notification because you requested to become a collaborator of <a href="%{
|
355
|
+
email_intro: You have been rejected to access as a contributor of <a href="%{resource_url}">%{resource_title}</a>.
|
356
|
+
email_outro: You have received this notification because you requested to become a collaborator of <a href="%{resource_url}">%{resource_title}</a>.
|
355
357
|
email_subject: You have been rejected as a contributor of %{resource_title}.
|
356
|
-
notification_title: You have been <strong>rejected to access as a contributor</strong> of <a href="%{
|
358
|
+
notification_title: You have been <strong>rejected to access as a contributor</strong> of <a href="%{resource_url}">%{resource_title}</a>.
|
357
359
|
plan_accepted:
|
358
360
|
email_intro: '"%{resource_title}" has been accepted. You can read the answer in this page:'
|
359
361
|
email_outro: You have received this notification because you are following "%{resource_title}". You can unfollow it from the previous link.
|
360
362
|
email_subject: A resource you're following has been accepted
|
361
|
-
notification_title: <a href="%{
|
363
|
+
notification_title: <a href="%{resource_url}">%{resource_title}</a> has been accepted.
|
362
364
|
plan_evaluating:
|
363
365
|
email_intro: '"%{resource_title}" is currently being evaluated. You can check for an answer in this page:'
|
364
366
|
email_outro: You have received this notification because you are following "%{resource_title}". You can unfollow it from the previous link.
|
365
367
|
email_subject: A resource you're following is being evaluated
|
366
|
-
notification_title: <a href="%{
|
368
|
+
notification_title: <a href="%{resource_url}">%{resource_title}</a> is being evaluated.
|
367
369
|
plan_published:
|
368
370
|
email_intro: '"%{resource_title}" has been published. You can see it here:'
|
369
371
|
email_outro: You have received this notification because you are following the author of "%{resource_title}". You can unfollow it from the previous link.
|
370
372
|
email_subject: A user you're following has published a resource
|
371
|
-
notification_title: <a href="%{
|
373
|
+
notification_title: <a href="%{resource_url}">%{resource_title}</a> has been published.
|
372
374
|
plan_published_for_proposals:
|
373
375
|
email_intro: 'A proposal you have authored has been linked to "%{resource_title}". You can see it here:'
|
374
376
|
email_outro: You have received this notification because you are following "%{resource_title}" through the authored proposals. You can unfollow it from the previous link.
|
375
377
|
email_subject: A proposal you have authored has been linked to new content
|
376
|
-
notification_title: A proposal you have authored has been linked to <a href="%{
|
378
|
+
notification_title: A proposal you have authored has been linked to <a href="%{resource_url}">%{resource_title}</a>.
|
377
379
|
plan_published_for_space:
|
378
380
|
email_intro: '"%{resource_title}" has been published. You can see it here:'
|
379
381
|
email_outro: You have received this notification because you are following "%{resource_title}". You can unfollow it from the previous link.
|
380
382
|
email_subject: A resource you're following has been published
|
381
|
-
notification_title: <a href="%{
|
383
|
+
notification_title: <a href="%{resource_url}">%{resource_title}</a> has been published.
|
382
384
|
plan_rejected:
|
383
385
|
email_intro: '"%{resource_title}" has been rejected. You can read the answer in this page:'
|
384
386
|
email_outro: You have received this notification because you are following "%{resource_title}". You can unfollow it from the previous link.
|
385
387
|
email_subject: A resource you're following has been rejected
|
386
|
-
notification_title: <a href="%{
|
388
|
+
notification_title: <a href="%{resource_url}">%{resource_title}</a> has been rejected.
|
data/config/locales/fi.yml
CHANGED
@@ -323,57 +323,57 @@ fi:
|
|
323
323
|
events:
|
324
324
|
plans:
|
325
325
|
plan_access_accepted:
|
326
|
-
email_intro: '%{requester_name} on annettu oikeus muokata sisältöä <a href="%{
|
327
|
-
email_outro: Tämä ilmoitus on lähetetty sinulle, koska olet osallistunut sisällön <a href="%{
|
326
|
+
email_intro: '%{requester_name} on annettu oikeus muokata sisältöä <a href="%{resource_url}">%{resource_title}</a> osallistujana.'
|
327
|
+
email_outro: Tämä ilmoitus on lähetetty sinulle, koska olet osallistunut sisällön <a href="%{resource_url}">%{resource_title}</a> muokkaukseen.
|
328
328
|
email_subject: "%{requester_name} on hyväksytty muokkaajaksi sisältöön %{resource_title}."
|
329
|
-
notification_title: <a href="%{requester_path}">%{requester_name} %{requester_nickname}</a> on <strong>hyväksytty muokkaajaksi</strong> sisältöön <a href="%{
|
329
|
+
notification_title: <a href="%{requester_path}">%{requester_name} %{requester_nickname}</a> on <strong>hyväksytty muokkaajaksi</strong> sisältöön <a href="%{resource_url}">%{resource_title}</a>.
|
330
330
|
plan_access_rejected:
|
331
|
-
email_intro: 'Käyttäjän %{requester_name} muokkausoikeudet sisältöön <a href="%{
|
332
|
-
email_outro: Tämä ilmoitus on lähetetty sinulle, koska olet osallistunut sisällön <a href="%{
|
331
|
+
email_intro: 'Käyttäjän %{requester_name} muokkausoikeudet sisältöön <a href="%{resource_url}">%{resource_title} </a> on estetty.'
|
332
|
+
email_outro: Tämä ilmoitus on lähetetty sinulle, koska olet osallistunut sisällön <a href="%{resource_url}">%{resource_title}</a> muokkaukseen.
|
333
333
|
email_subject: "%{requester_name} hakemus osallistua kohteen %{resource_title} muokkaukseen on hylätty."
|
334
|
-
notification_title: <a href="%{requester_path}">%{requester_name} %{requester_nickname}</a> <strong>pyyntö muokata sisältöä on hylätty</strong> kohteelle <a href="%{
|
334
|
+
notification_title: <a href="%{requester_path}">%{requester_name} %{requester_nickname}</a> <strong>pyyntö muokata sisältöä on hylätty</strong> kohteelle <a href="%{resource_url}">%{resource_title}</a>.
|
335
335
|
plan_access_requested:
|
336
|
-
email_intro: '%{requester_name} pyysi pääsyä osallistujaksi. Voit <strong>hyväksyä tai hylätä pyynnön</strong> sivulla <a href="%{
|
337
|
-
email_outro: Tämä ilmoitus on lähetetty sinulle, koska olet osallistuja kohteessa <a href="%{
|
336
|
+
email_intro: '%{requester_name} pyysi pääsyä osallistujaksi. Voit <strong>hyväksyä tai hylätä pyynnön</strong> sivulla <a href="%{resource_url}">%{resource_title}</a>.'
|
337
|
+
email_outro: Tämä ilmoitus on lähetetty sinulle, koska olet osallistuja kohteessa <a href="%{resource_url}">%{resource_title}</a>.
|
338
338
|
email_subject: "%{requester_name} pyysi osallistumisoikeutta kohteeseen %{resource_title}."
|
339
|
-
notification_title: <a href="%{requester_path}">%{requester_name} %{requester_nickname}</a> pyysi saada muokata sisältöä <a href="%{
|
339
|
+
notification_title: <a href="%{requester_path}">%{requester_name} %{requester_nickname}</a> pyysi saada muokata sisältöä <a href="%{resource_url}">%{resource_title}</a>. <strong>Hyväksy tai hylkää pyyntö</strong>.
|
340
340
|
plan_access_requester_accepted:
|
341
|
-
email_intro: Sinut on hyväksytty osallistujaksi sisältöön <a href="%{
|
342
|
-
email_outro: Tämä ilmoitus on lähetetty sinulle, koska olet hakenut muokkausoikeuksia sisältöön <a href="%{
|
341
|
+
email_intro: Sinut on hyväksytty osallistujaksi sisältöön <a href="%{resource_url}">%{resource_title}</a>.
|
342
|
+
email_outro: Tämä ilmoitus on lähetetty sinulle, koska olet hakenut muokkausoikeuksia sisältöön <a href="%{resource_url}">%{resource_title}</a>.
|
343
343
|
email_subject: Sinut on hyväksytty osallistujaksi sisältöön %{resource_title}.
|
344
|
-
notification_title: Sinut on <strong>hyväksytty osallistujaksi </strong> sisältöön <a href="%{
|
344
|
+
notification_title: Sinut on <strong>hyväksytty osallistujaksi </strong> sisältöön <a href="%{resource_url}">%{resource_title}</a>.
|
345
345
|
plan_access_requester_rejected:
|
346
|
-
email_intro: Sinua ei ole hyväksytty osallistujaksi sisältöön <a href="%{
|
347
|
-
email_outro: Tämä ilmoitus on lähetetty sinulle, koska olet pyytänyt pääsyä osallistujaksi sisältöön <a href="%{
|
346
|
+
email_intro: Sinua ei ole hyväksytty osallistujaksi sisältöön <a href="%{resource_url}">%{resource_title}</a>.
|
347
|
+
email_outro: Tämä ilmoitus on lähetetty sinulle, koska olet pyytänyt pääsyä osallistujaksi sisältöön <a href="%{resource_url}">%{resource_title}</a>.
|
348
348
|
email_subject: Sinua ei ole hyväksytty osallistujaksi sisältöön %{resource_title}.
|
349
|
-
notification_title: Sinua <strong>ei ole hyväksytty osallistujaksi</strong> sisältöön <a href="%{
|
349
|
+
notification_title: Sinua <strong>ei ole hyväksytty osallistujaksi</strong> sisältöön <a href="%{resource_url}">%{resource_title}</a>.
|
350
350
|
plan_accepted:
|
351
351
|
email_intro: '"%{resource_title}" on hyväksytty. Voit lukea vastauksen täältä:'
|
352
352
|
email_outro: Tämä ilmoitus on lähetetty sinulle, koska seuraat kohdetta "%{resource_title}". Voit lopettaa sen seuraamisen edellä esitetyn linkin kautta.
|
353
353
|
email_subject: Seuraamasi kohde on hyväksytty
|
354
|
-
notification_title: <a href="%{
|
354
|
+
notification_title: <a href="%{resource_url}">%{resource_title}</a> on hyväksytty.
|
355
355
|
plan_evaluating:
|
356
356
|
email_intro: '"%{resource_title}" arvioidaan parhaillaan. Voit tarkistaa vastauksen tältä sivulla:'
|
357
357
|
email_outro: Tämä ilmoitus on lähetetty sinulle, koska seuraat kohdetta "%{resource_title}". Voit lopettaa seuraamisen edellä esitetyn linkin kautta.
|
358
358
|
email_subject: Seuraamasi kohde on arvioitavana
|
359
|
-
notification_title: <a href="%{
|
359
|
+
notification_title: <a href="%{resource_url}">%{resource_title}</a> on arvioitavana.
|
360
360
|
plan_published:
|
361
361
|
email_intro: '"%{resource_title}" on julkaistu. Näet sen täältä:'
|
362
362
|
email_outro: Tämä ilmoitus on lähetetty sinulle, koska seuraat kohteen "%{resource_title}" laatijaa. Voit lopettaa sen seuraamisen edellä esitetyn linkin kautta.
|
363
363
|
email_subject: Seuraamasi käyttäjä on julkaissut uutta sisältöä
|
364
|
-
notification_title: <a href="%{
|
364
|
+
notification_title: <a href="%{resource_url}">%{resource_title}</a> on julkaistu.
|
365
365
|
plan_published_for_proposals:
|
366
366
|
email_intro: 'Laatimasi ehdotus on linkitetty kohteeseen "%{resource_title}". Näet sen täältä:'
|
367
367
|
email_outro: Tämä ilmoitus on lähetetty sinulle, koska seuraat kohdetta "%{resource_title}" laatimisesi ehdotusten kautta. Voit lopettaa seuraamisen edellä esitetyn linkin kautta.
|
368
368
|
email_subject: Laatimasi ehdotus on linkitetty uuteen sisältöön
|
369
|
-
notification_title: Laatimasi ehdotus on linkitetty kohteeseen <a href="%{
|
369
|
+
notification_title: Laatimasi ehdotus on linkitetty kohteeseen <a href="%{resource_url}">%{resource_title}</a>.
|
370
370
|
plan_published_for_space:
|
371
371
|
email_intro: '"%{resource_title}" on julkaistu. Näet sen täältä:'
|
372
372
|
email_outro: Tämä ilmoitus on lähetetty sinulle, koska seuraat kohdetta "%{resource_title}". Voit lopettaa sen seuraamisen edellä esitetyn linkin kautta.
|
373
373
|
email_subject: Seuraamasi kohde on julkaistu
|
374
|
-
notification_title: <a href="%{
|
374
|
+
notification_title: <a href="%{resource_url}">%{resource_title}</a> on julkaistu.
|
375
375
|
plan_rejected:
|
376
376
|
email_intro: '"%{resource_title}" on hylätty. Voit lukea vastauksen tällä sivulla:'
|
377
377
|
email_outro: Tämä ilmoitus on lähetetty sinulle, koska seuraat kohdetta "%{resource_title}". Voit lopettaa sen seuraamisen edellä esitetyn linkin kautta.
|
378
378
|
email_subject: Seuraamasi kohde on hylätty
|
379
|
-
notification_title: <a href="%{
|
379
|
+
notification_title: <a href="%{resource_url}">%{resource_title}</a> on hylätty.
|