decidim-transparent_trash 0.0.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/LICENSE-AGPLv3.txt +661 -0
- data/README.md +62 -0
- data/Rakefile +9 -0
- data/app/cells/decidim/initiatives/initiative_m_cell.rb +91 -0
- data/app/commands/decidim/initiatives/admin/illegal_initiative.rb +45 -0
- data/app/commands/decidim/initiatives/admin/invalidate_initiative.rb +45 -0
- data/app/controllers/decidim/transparent_trash/admin/application_controller.rb +26 -0
- data/app/controllers/decidim/transparent_trash/application_controller.rb +13 -0
- data/app/helpers/decidim/transparent_trash/application_helper.rb +10 -0
- data/app/models/decidim/initiative.rb +576 -0
- data/app/models/decidim/transparent_trash/application_record.rb +10 -0
- data/app/overrides/decidim/initiatives/initiatives/index/overriden.html.erb.deface +9 -0
- data/app/packs/entrypoints/decidim_transparent_trash.js +2 -0
- data/app/packs/images/decidim/transparent_trash/icon.svg +1 -0
- data/app/packs/stylesheets/decidim/transparent_trash/transparent_trash.scss +9 -0
- data/app/permissions/decidim/transparent_trash/admin/permissions.rb +37 -0
- data/app/views/decidim/initiatives/admin/initiatives/edit.html.erb +77 -0
- data/app/views/decidim/initiatives/initiatives/_count.html.erb +1 -0
- data/app/views/decidim/initiatives/initiatives/show.html.erb +102 -0
- data/app/views/decidim/transparent_trash/initiatives/_filters.html.erb +15 -0
- data/app/views/decidim/transparent_trash/initiatives/_filters_small_view.html.erb +18 -0
- data/app/views/decidim/transparent_trash/initiatives/_index_header.html.erb +8 -0
- data/app/views/decidim/transparent_trash/initiatives/index.html.erb +29 -0
- data/app/views/decidim/transparent_trash/initiatives/index.js.erb +10 -0
- data/app/views/layouts/decidim/_initiative_header.html.erb +51 -0
- data/config/assets.rb +9 -0
- data/config/i18n-tasks.yml +10 -0
- data/config/locales/en.yml +48 -0
- data/config/locales/fr.yml +48 -0
- data/lib/decidim/transparent_trash/admin.rb +10 -0
- data/lib/decidim/transparent_trash/admin_engine.rb +38 -0
- data/lib/decidim/transparent_trash/component.rb +40 -0
- data/lib/decidim/transparent_trash/engine.rb +38 -0
- data/lib/decidim/transparent_trash/extends/comments_seed.rb +52 -0
- data/lib/decidim/transparent_trash/extends/initiative_presenter.rb +32 -0
- data/lib/decidim/transparent_trash/extends/initiatives_admin_controller.rb +52 -0
- data/lib/decidim/transparent_trash/extends/initiatives_admin_permissions.rb +53 -0
- data/lib/decidim/transparent_trash/extends/initiatives_controller.rb +84 -0
- data/lib/decidim/transparent_trash/extends/initiatives_permissions.rb +31 -0
- data/lib/decidim/transparent_trash/extends/unpublish_initiative.rb +37 -0
- data/lib/decidim/transparent_trash/test/factories.rb +13 -0
- data/lib/decidim/transparent_trash/version.rb +13 -0
- data/lib/decidim/transparent_trash.rb +21 -0
- metadata +92 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<%= decidim_form_for @form, html: { class: "form edit_initiative" } do |f| %>
|
|
2
|
+
<%= render partial: "form", object: f %>
|
|
3
|
+
<div class="button--double form-general-submit">
|
|
4
|
+
<%= f.submit t(".update"), class: "button" if allowed_to? :update, :initiative, initiative: current_initiative %>
|
|
5
|
+
|
|
6
|
+
<% if allowed_to? :send_to_technical_validation, :initiative, initiative: current_initiative %>
|
|
7
|
+
<%= link_to t(".send_to_technical_validation"),
|
|
8
|
+
send_to_technical_validation_initiative_path(current_initiative),
|
|
9
|
+
class: "button muted",
|
|
10
|
+
data: { confirm: t(".confirm_send_to_technical_validation") } %>
|
|
11
|
+
<% elsif current_initiative.created? %>
|
|
12
|
+
<%= link_to t(".send_to_technical_validation"), "#", class: "button muted disabled" %>
|
|
13
|
+
<% end %>
|
|
14
|
+
|
|
15
|
+
<% if allowed_to? :publish, :initiative, initiative: current_initiative %>
|
|
16
|
+
<%= link_to t("actions.publish", scope: "decidim.admin"),
|
|
17
|
+
publish_initiative_path(current_initiative),
|
|
18
|
+
method: :post,
|
|
19
|
+
class: "button hollow",
|
|
20
|
+
data: { confirm: t(".confirm") } %>
|
|
21
|
+
<% end %>
|
|
22
|
+
|
|
23
|
+
<% if allowed_to? :unpublish, :initiative, initiative: current_initiative %>
|
|
24
|
+
<%= link_to t("actions.unpublish", scope: "decidim.admin"),
|
|
25
|
+
unpublish_initiative_path(current_initiative),
|
|
26
|
+
method: :delete,
|
|
27
|
+
class: "button alert",
|
|
28
|
+
data: { confirm: t(".confirm") } %>
|
|
29
|
+
<% end %>
|
|
30
|
+
|
|
31
|
+
<% if allowed_to? :accept, :initiative, initiative: current_initiative %>
|
|
32
|
+
<%= link_to t(".accept"),
|
|
33
|
+
accept_initiative_path(current_initiative),
|
|
34
|
+
method: :post,
|
|
35
|
+
class: "button hollow",
|
|
36
|
+
data: { confirm: t(".confirm") } %>
|
|
37
|
+
<% end %>
|
|
38
|
+
|
|
39
|
+
<% if allowed_to? :reject, :initiative, initiative: current_initiative %>
|
|
40
|
+
<%= link_to t(".reject"),
|
|
41
|
+
reject_initiative_path(current_initiative),
|
|
42
|
+
method: :delete,
|
|
43
|
+
class: "button alert",
|
|
44
|
+
data: { confirm: t(".confirm") } %>
|
|
45
|
+
<% end %>
|
|
46
|
+
|
|
47
|
+
<% if allowed_to? :invalidate, :initiative, initiative: current_initiative %>
|
|
48
|
+
<%= link_to t(".invalidate"),
|
|
49
|
+
invalidate_initiative_path(current_initiative),
|
|
50
|
+
method: :delete,
|
|
51
|
+
class: "button alert",
|
|
52
|
+
data: { confirm: t(".confirm") } %>
|
|
53
|
+
<% end %>
|
|
54
|
+
|
|
55
|
+
<% if allowed_to? :illegal, :initiative, initiative: current_initiative %>
|
|
56
|
+
<%= link_to t(".illegal"),
|
|
57
|
+
illegal_initiative_path(current_initiative),
|
|
58
|
+
method: :delete,
|
|
59
|
+
class: "button alert",
|
|
60
|
+
data: { confirm: t(".confirm") } %>
|
|
61
|
+
<% end %>
|
|
62
|
+
|
|
63
|
+
<% if allowed_to? :export_votes, :initiative, initiative: current_initiative %>
|
|
64
|
+
<%= link_to t(".export_votes"),
|
|
65
|
+
export_votes_initiative_path(current_initiative, format: :csv),
|
|
66
|
+
class: "button alert",
|
|
67
|
+
data: { confirm: t(".confirm") } %>
|
|
68
|
+
<% end %>
|
|
69
|
+
|
|
70
|
+
<% if allowed_to? :export_pdf_signatures, :initiative, initiative: current_initiative %>
|
|
71
|
+
<%= link_to t(".export_pdf_signatures"),
|
|
72
|
+
export_pdf_signatures_initiative_path(current_initiative, format: :pdf),
|
|
73
|
+
class: "button alert",
|
|
74
|
+
data: { confirm: t(".confirm") } %>
|
|
75
|
+
<% end %>
|
|
76
|
+
</div>
|
|
77
|
+
<% end %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= t(".title", count: initiatives.total_count) %>
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
<% title = current_initiative.illegal? ? t(".illegal.title") : translated_attribute(current_initiative.title) %>
|
|
2
|
+
<% description = current_initiative.illegal? ? t(".illegal.description") : translated_attribute(current_initiative.description) %>
|
|
3
|
+
|
|
4
|
+
<% add_decidim_meta_tags({
|
|
5
|
+
image_url: current_initiative.type.attached_uploader(:banner_image).path,
|
|
6
|
+
description: description,
|
|
7
|
+
title: title,
|
|
8
|
+
url: initiative_url(current_initiative.id),
|
|
9
|
+
twitter_handler: current_organization.twitter_handler
|
|
10
|
+
}) %>
|
|
11
|
+
|
|
12
|
+
<%
|
|
13
|
+
edit_link(
|
|
14
|
+
resource_locator(current_participatory_space).edit,
|
|
15
|
+
:read,
|
|
16
|
+
:initiative
|
|
17
|
+
)
|
|
18
|
+
%>
|
|
19
|
+
|
|
20
|
+
<%= participatory_space_floating_help %>
|
|
21
|
+
|
|
22
|
+
<% add_decidim_page_title(title) %>
|
|
23
|
+
<% provide :meta_image_url, current_initiative.type.attached_uploader(:banner_image).path %>
|
|
24
|
+
<div class="row">
|
|
25
|
+
<% unless current_initiative.online_signature_type? %>
|
|
26
|
+
<div class="column">
|
|
27
|
+
<div class="callout secondary">
|
|
28
|
+
<p>
|
|
29
|
+
<%= t ".any_vote_method" if current_initiative.any_signature_type? %>
|
|
30
|
+
<%= t ".offline_method" if current_initiative.offline_signature_type? %>
|
|
31
|
+
</p>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
<% end %>
|
|
35
|
+
|
|
36
|
+
<div class="columns section view-side mediumlarge-4 mediumlarge-push-8 large-3 large-push-9">
|
|
37
|
+
<% if !current_initiative.invalidated? && !current_initiative.illegal? %>
|
|
38
|
+
<div class="card text-center">
|
|
39
|
+
<div class="card__content">
|
|
40
|
+
<% if current_initiative.published? || current_initiative.rejected? || current_initiative.accepted? %>
|
|
41
|
+
<%= render partial: "progress_bar" %>
|
|
42
|
+
<% if current_initiative.votes_enabled? %>
|
|
43
|
+
<div id="initiative-<%= current_initiative.id %>-vote-cabin">
|
|
44
|
+
<%= render partial: "vote_cabin", locals: { initiative: current_initiative } %>
|
|
45
|
+
</div>
|
|
46
|
+
<% end %>
|
|
47
|
+
<% if current_initiative.commentable? %>
|
|
48
|
+
<%= render partial: "interactions" %>
|
|
49
|
+
<% end %>
|
|
50
|
+
<% else %>
|
|
51
|
+
<%= link_to t(".edit"),
|
|
52
|
+
edit_initiative_path(current_initiative),
|
|
53
|
+
class: "button expanded" %>
|
|
54
|
+
<%= render partial: "send_to_technical_validation", locals: {
|
|
55
|
+
title: t(".send_to_technical_validation"),
|
|
56
|
+
confirm: t(".confirm")
|
|
57
|
+
} %>
|
|
58
|
+
<%= link_to t(".print"), print_initiative_path(current_initiative), class: "link action-print" %>
|
|
59
|
+
<% end %>
|
|
60
|
+
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
<% end %>
|
|
64
|
+
|
|
65
|
+
<% if current_user && !current_initiative.illegal? %>
|
|
66
|
+
<div class="card text-center">
|
|
67
|
+
<div class="card__content">
|
|
68
|
+
<%= cell "decidim/follow_button", current_participatory_space, inline: false, large: true %>
|
|
69
|
+
<small><%= t(".follow_description") %></small>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
<% end %>
|
|
73
|
+
<%= render partial: "decidim/shared/share_modal" %>
|
|
74
|
+
<%= embed_modal_for initiative_widget_url(current_initiative, format: :js) %>
|
|
75
|
+
<%= resource_reference(current_initiative) %>
|
|
76
|
+
<%= resource_version(current_initiative, versions_path: initiative_versions_path(current_initiative)) %>
|
|
77
|
+
</div>
|
|
78
|
+
|
|
79
|
+
<div class="columns mediumlarge-8 mediumlarge-pull-4">
|
|
80
|
+
<div class="section">
|
|
81
|
+
<div class="row column">
|
|
82
|
+
<h2 class="heading2">
|
|
83
|
+
<%= title %>
|
|
84
|
+
</h2>
|
|
85
|
+
<%= render partial: "author", locals: { initiative: current_initiative } %>
|
|
86
|
+
</div>
|
|
87
|
+
<br>
|
|
88
|
+
<div class="row column">
|
|
89
|
+
<%= render partial: "initiative_badge", locals: { initiative: current_initiative } %>
|
|
90
|
+
<%= description %>
|
|
91
|
+
|
|
92
|
+
<%= render partial: "tags", locals: { resource: current_initiative } %>
|
|
93
|
+
</div>
|
|
94
|
+
|
|
95
|
+
<%= render partial: "result", locals: { initiative: current_initiative } %>
|
|
96
|
+
</div>
|
|
97
|
+
|
|
98
|
+
<%= attachments_for current_initiative %>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
<%= comments_for current_initiative if current_initiative.commentable? && current_initiative.published? %>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<%= initiatives_filter_form_for filter do |form| %>
|
|
2
|
+
<div class="filters__section">
|
|
3
|
+
<div class="filters__search">
|
|
4
|
+
<div class="input-group">
|
|
5
|
+
<%= form.hidden_field :visibility, value: "transparent" %>
|
|
6
|
+
<%= form.search_field :search_text_cont, label: false, class: "input-group-field", placeholder: t(".search"), title: t(".search"), "aria-label": t(".search") %>
|
|
7
|
+
<div class="input-group-button">
|
|
8
|
+
<button type="submit" class="button">
|
|
9
|
+
<%= icon "magnifying-glass", aria_label: t(".search"), role: "img" %>
|
|
10
|
+
</button>
|
|
11
|
+
</div>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
<% end %>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<div class="filters-controls hide-for-mediumlarge">
|
|
2
|
+
<button data-open="filter-box" class="filters-controls__trigger" aria-controls="filter-box" aria-haspopup="dialog">
|
|
3
|
+
<%= t ".filter" %>
|
|
4
|
+
<%= icon "caret-bottom", class: "icon--small float-right", aria_label: t(".unfold"), role: "img" %>
|
|
5
|
+
</button>
|
|
6
|
+
</div>
|
|
7
|
+
|
|
8
|
+
<div class="reveal" id="filter-box" data-reveal role="dialog" aria-modal="true" aria-labelledby="filter-box-label">
|
|
9
|
+
<div class="reveal__header">
|
|
10
|
+
<h3 id="filter-box-label" class="reveal__title"><%= t ".filter_by" %>:</h3>
|
|
11
|
+
<button class="close-button" data-close aria-label="<%= t(".close_modal") %>" type="button">
|
|
12
|
+
<span aria-hidden="true">×</span>
|
|
13
|
+
</button>
|
|
14
|
+
</div>
|
|
15
|
+
<div class="filters">
|
|
16
|
+
<%= render partial: "decidim/transparent_trash/initiatives/filters", locals: { type: :small } %>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<div class="row collapse">
|
|
2
|
+
<h1 id="initiatives-count" class="title-action__title section-heading">
|
|
3
|
+
<%= render partial: "count" %>
|
|
4
|
+
</h1>
|
|
5
|
+
<%= link_to initiatives_path, class: "title-action__action button small" do %>
|
|
6
|
+
<%= t(".go_back") %>
|
|
7
|
+
<% end %>
|
|
8
|
+
</div>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<%
|
|
2
|
+
edit_link(
|
|
3
|
+
decidim_admin_initiatives.initiatives_path,
|
|
4
|
+
:read,
|
|
5
|
+
:initiative
|
|
6
|
+
)
|
|
7
|
+
%>
|
|
8
|
+
|
|
9
|
+
<% provide :meta_title, t("initiatives.index.title", scope: "decidim") %>
|
|
10
|
+
|
|
11
|
+
<%= participatory_space_wrapper do %>
|
|
12
|
+
<div class="row columns">
|
|
13
|
+
<div class="title-action">
|
|
14
|
+
<%= render partial: "decidim/transparent_trash/initiatives/index_header" %>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<div class="row">
|
|
19
|
+
<div class="columns mediumlarge-4 large-3">
|
|
20
|
+
<%= render partial: "decidim/transparent_trash/initiatives/filters_small_view" %>
|
|
21
|
+
<div class="card card--secondary show-for-mediumlarge">
|
|
22
|
+
<%= render partial: "decidim/transparent_trash/initiatives/filters" %>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
<div id="initiatives" class="columns mediumlarge-8 large-9">
|
|
26
|
+
<%= render partial: "initiatives" %>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
<% end %>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
var $initiatives = $('#initiatives');
|
|
2
|
+
var $initiativesCount = $('#initiatives-count');
|
|
3
|
+
var $orderFilterInput = $('.order_filter');
|
|
4
|
+
|
|
5
|
+
$initiatives.html('<%= j(render partial: "initiatives") %>');
|
|
6
|
+
$initiativesCount.html('<%= j(render partial: "count") %>');
|
|
7
|
+
$orderFilterInput.val('<%= order %>');
|
|
8
|
+
|
|
9
|
+
var $dropdownMenu = $('.dropdown.menu', $initiatives);
|
|
10
|
+
$dropdownMenu.foundation();
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<div class="process-header">
|
|
2
|
+
<div class="process-header__inner">
|
|
3
|
+
<div class="row column process-header__main"
|
|
4
|
+
style="background-image:url('<%= current_participatory_space.type.attached_uploader(:banner_image).path %>');">
|
|
5
|
+
</div>
|
|
6
|
+
<div class="process-header__container row collapse column">
|
|
7
|
+
<div class="columns mediumlarge-8 process-header__info">
|
|
8
|
+
<div>
|
|
9
|
+
<h1 class="text-highlight heading2">
|
|
10
|
+
<% if current_participatory_space.respond_to?(:illegal?) && current_participatory_space.illegal? %>
|
|
11
|
+
<%= t("decidim.initiatives.initiatives.show.illegal.title") %>
|
|
12
|
+
<% else %>
|
|
13
|
+
<%= participatory_space_helpers.translated_attribute(current_participatory_space.title) %>
|
|
14
|
+
<% end %>
|
|
15
|
+
</h1>
|
|
16
|
+
</div>
|
|
17
|
+
<div>
|
|
18
|
+
<p class="text-highlight heading-small">
|
|
19
|
+
<% if current_participatory_space.hashtag.present? %>
|
|
20
|
+
<span class="process-header__hashtag">
|
|
21
|
+
<%= link_to "##{current_participatory_space.hashtag}", twitter_hashtag_url(current_participatory_space.hashtag), target: "_blank" %>
|
|
22
|
+
</span>
|
|
23
|
+
<% end %>
|
|
24
|
+
<%= strip_tags participatory_space_helpers.translated_attribute(current_participatory_space.type.title) %>
|
|
25
|
+
</p>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
<%= render partial: "layouts/decidim/initiative_header_steps", locals: { initiative: current_participatory_space } %>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
<%
|
|
32
|
+
components = current_participatory_space.components.published.or(Decidim::Component.where(id: self.try(:current_component)))
|
|
33
|
+
%>
|
|
34
|
+
|
|
35
|
+
<%=
|
|
36
|
+
extended_navigation_bar([
|
|
37
|
+
{
|
|
38
|
+
name: t(".initiative_menu_item"),
|
|
39
|
+
url: decidim_initiatives.initiative_path(current_participatory_space),
|
|
40
|
+
active: is_active_link?(decidim_initiatives.initiative_path(current_participatory_space), :exclusive) ||
|
|
41
|
+
is_active_link?(decidim_initiatives.initiative_versions_path(current_participatory_space), :inclusive)
|
|
42
|
+
}
|
|
43
|
+
] + components.map do |component|
|
|
44
|
+
{
|
|
45
|
+
name: translated_attribute(component.name),
|
|
46
|
+
url: main_component_path(component),
|
|
47
|
+
active: is_active_link?(main_component_path(component), :inclusive)
|
|
48
|
+
}
|
|
49
|
+
end)
|
|
50
|
+
%>
|
|
51
|
+
</div>
|
data/config/assets.rb
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
base_path = File.expand_path("..", __dir__)
|
|
4
|
+
|
|
5
|
+
Decidim::Webpacker.register_path("#{base_path}/app/packs")
|
|
6
|
+
Decidim::Webpacker.register_entrypoints(
|
|
7
|
+
decidim_transparent_trash: "#{base_path}/app/packs/entrypoints/decidim_transparent_trash.js"
|
|
8
|
+
)
|
|
9
|
+
Decidim::Webpacker.register_stylesheet_import("stylesheets/decidim/transparent_trash/transparent_trash")
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
en:
|
|
3
|
+
decidim:
|
|
4
|
+
admin:
|
|
5
|
+
filters:
|
|
6
|
+
initiatives:
|
|
7
|
+
state_eq:
|
|
8
|
+
values:
|
|
9
|
+
illegal: Illegal
|
|
10
|
+
invalidated: Invalidated
|
|
11
|
+
transparent_trash:
|
|
12
|
+
initiatives:
|
|
13
|
+
filters_small_view:
|
|
14
|
+
close_modal: Close modal
|
|
15
|
+
filter_by: Search
|
|
16
|
+
unfold: Unfold
|
|
17
|
+
filter: Filter
|
|
18
|
+
index_header:
|
|
19
|
+
go_back: Go back to initiatives list
|
|
20
|
+
filters:
|
|
21
|
+
search: Search
|
|
22
|
+
initiatives:
|
|
23
|
+
initiatives:
|
|
24
|
+
show:
|
|
25
|
+
illegal:
|
|
26
|
+
description: Description content moderated
|
|
27
|
+
title: Title content moderated
|
|
28
|
+
admin_log:
|
|
29
|
+
initiative:
|
|
30
|
+
invalidate: "%{user_name} published the %{resource_name} initiative as 'Invalidated'"
|
|
31
|
+
illegal: "%{user_name} published the %{resource_name} initiative as 'Illegal'"
|
|
32
|
+
show:
|
|
33
|
+
badge_name:
|
|
34
|
+
illegal: Illegal
|
|
35
|
+
invalidated: Invalidated
|
|
36
|
+
admin_states:
|
|
37
|
+
illegal: Illegal
|
|
38
|
+
invalidated: Invalidated
|
|
39
|
+
admin:
|
|
40
|
+
initiatives:
|
|
41
|
+
edit:
|
|
42
|
+
illegal: Illegal
|
|
43
|
+
invalidate: Invalidate
|
|
44
|
+
index:
|
|
45
|
+
transparent_trash: Access transparent trash
|
|
46
|
+
components:
|
|
47
|
+
transparent_trash:
|
|
48
|
+
name: TransparentTrash
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
fr:
|
|
3
|
+
decidim:
|
|
4
|
+
admin:
|
|
5
|
+
filters:
|
|
6
|
+
initiatives:
|
|
7
|
+
state_eq:
|
|
8
|
+
values:
|
|
9
|
+
illegal: Illégale
|
|
10
|
+
invalidated: Invalide
|
|
11
|
+
transparent_trash:
|
|
12
|
+
initiatives:
|
|
13
|
+
filters_small_view:
|
|
14
|
+
close_modal: Fermer la fenêtre
|
|
15
|
+
filter_by: Rechercher
|
|
16
|
+
unfold: Voir la suite
|
|
17
|
+
filter: Filtrer
|
|
18
|
+
index_header:
|
|
19
|
+
go_back: Retour à la liste des pétitions
|
|
20
|
+
filters:
|
|
21
|
+
search: Rechercher
|
|
22
|
+
initiatives:
|
|
23
|
+
initiatives:
|
|
24
|
+
show:
|
|
25
|
+
illegal:
|
|
26
|
+
description: Contenu de la description modéré
|
|
27
|
+
title: Contenu du titre modéré
|
|
28
|
+
admin_log:
|
|
29
|
+
initiative:
|
|
30
|
+
invalidate: "%{user_name} a publié la pétition %{resource_name} comme 'Invalidée'"
|
|
31
|
+
illegal: "%{user_name} a publié la pétition %{resource_name} comme 'Illégale'"
|
|
32
|
+
show:
|
|
33
|
+
badge_name:
|
|
34
|
+
illegal: Illégale
|
|
35
|
+
invalidated: Invalide
|
|
36
|
+
admin_states:
|
|
37
|
+
illegal: Illégale
|
|
38
|
+
invalidated: Invalide
|
|
39
|
+
admin:
|
|
40
|
+
initiatives:
|
|
41
|
+
edit:
|
|
42
|
+
illegal: Illégale
|
|
43
|
+
invalidate: Invalide
|
|
44
|
+
index:
|
|
45
|
+
transparent_trash: Accéder à la corbeille ouverte
|
|
46
|
+
components:
|
|
47
|
+
transparent_trash:
|
|
48
|
+
name: TransparentTrash
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Decidim
|
|
4
|
+
module TransparentTrash
|
|
5
|
+
# This is the engine that runs on the public interface of `TransparentTrash`.
|
|
6
|
+
class AdminEngine < ::Rails::Engine
|
|
7
|
+
isolate_namespace Decidim::TransparentTrash::Admin
|
|
8
|
+
|
|
9
|
+
paths["db/migrate"] = nil
|
|
10
|
+
paths["lib/tasks"] = nil
|
|
11
|
+
|
|
12
|
+
routes do
|
|
13
|
+
# Add admin engine routes here
|
|
14
|
+
# resources :transparent_trash do
|
|
15
|
+
# collection do
|
|
16
|
+
# resources :exports, only: [:create]
|
|
17
|
+
# end
|
|
18
|
+
# end
|
|
19
|
+
# root to: "transparent_trash#index"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
initializer "decidim_transparent_trash.admin_mount_routes" do
|
|
23
|
+
Decidim::Initiatives::AdminEngine.routes do
|
|
24
|
+
resources :initiatives, only: [:index, :edit, :update], param: :slug do
|
|
25
|
+
member do
|
|
26
|
+
delete :invalidate
|
|
27
|
+
delete :illegal
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def load_seed
|
|
34
|
+
nil
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "decidim/components/namer"
|
|
4
|
+
|
|
5
|
+
Decidim.register_component(:transparent_trash) do |component|
|
|
6
|
+
component.engine = Decidim::TransparentTrash::Engine
|
|
7
|
+
component.admin_engine = Decidim::TransparentTrash::AdminEngine
|
|
8
|
+
component.icon = "decidim/transparent_trash/icon.svg"
|
|
9
|
+
|
|
10
|
+
# component.on(:before_destroy) do |instance|
|
|
11
|
+
# # Code executed before removing the component
|
|
12
|
+
# end
|
|
13
|
+
|
|
14
|
+
# These actions permissions can be configured in the admin panel
|
|
15
|
+
# component.actions = %w()
|
|
16
|
+
|
|
17
|
+
# component.settings(:global) do |settings|
|
|
18
|
+
# # Add your global settings
|
|
19
|
+
# # Available types: :integer, :boolean
|
|
20
|
+
# # settings.attribute :vote_limit, type: :integer, default: 0
|
|
21
|
+
# end
|
|
22
|
+
|
|
23
|
+
# component.settings(:step) do |settings|
|
|
24
|
+
# # Add your settings per step
|
|
25
|
+
# end
|
|
26
|
+
|
|
27
|
+
# component.register_resource(:some_resource) do |resource|
|
|
28
|
+
# # Register a optional resource that can be references from other resources.
|
|
29
|
+
# resource.model_class_name = "Decidim::TransparentTrash::SomeResource"
|
|
30
|
+
# resource.template = "decidim/transparent_trash/some_resources/linked_some_resources"
|
|
31
|
+
# end
|
|
32
|
+
|
|
33
|
+
# component.register_stat :some_stat do |context, start_at, end_at|
|
|
34
|
+
# # Register some stat number to the application
|
|
35
|
+
# end
|
|
36
|
+
|
|
37
|
+
# component.seeds do |participatory_space|
|
|
38
|
+
# # Add some seeds for this component
|
|
39
|
+
# end
|
|
40
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rails"
|
|
4
|
+
require "decidim/core"
|
|
5
|
+
|
|
6
|
+
module Decidim
|
|
7
|
+
module TransparentTrash
|
|
8
|
+
# This is the engine that runs on the public interface of transparent_trash.
|
|
9
|
+
class Engine < ::Rails::Engine
|
|
10
|
+
isolate_namespace Decidim::TransparentTrash
|
|
11
|
+
|
|
12
|
+
routes do
|
|
13
|
+
# Add engine routes here
|
|
14
|
+
# resources :transparent_trash
|
|
15
|
+
# root to: "transparent_trash#index"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
initializer "TransparentTrash.webpacker.assets_path" do
|
|
19
|
+
Decidim.register_assets_path File.expand_path("app/packs", root)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
config.to_prepare do
|
|
23
|
+
# Commands
|
|
24
|
+
Decidim::Initiatives::Admin::UnpublishInitiative.include Decidim::TransparentTrash::Extends::UnpublishInitiative
|
|
25
|
+
# Permissions
|
|
26
|
+
Decidim::Initiatives::Permissions.include Decidim::TransparentTrash::Extends::InitiativesPermissions
|
|
27
|
+
Decidim::Initiatives::Admin::Permissions.include Decidim::TransparentTrash::Extends::InitiativesAdminPermissions
|
|
28
|
+
# Controllers
|
|
29
|
+
Decidim::Initiatives::InitiativesController.include Decidim::TransparentTrash::Extends::InitiativesController
|
|
30
|
+
Decidim::Initiatives::Admin::InitiativesController.include Decidim::TransparentTrash::Extends::InitiativesAdminController
|
|
31
|
+
# Models
|
|
32
|
+
Decidim::Comments::Seed.include Decidim::TransparentTrash::Extends::CommentsSeed
|
|
33
|
+
# Presenters
|
|
34
|
+
Decidim::Initiatives::AdminLog::InitiativePresenter.include Decidim::TransparentTrash::Extends::InitiativePresenter
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "active_support/concern"
|
|
4
|
+
|
|
5
|
+
module Decidim
|
|
6
|
+
module TransparentTrash
|
|
7
|
+
module Extends
|
|
8
|
+
# module: decidim-comments
|
|
9
|
+
# path: decidim-comments/app/models/decidim/comments/seed.rb
|
|
10
|
+
module CommentsSeed
|
|
11
|
+
extend ActiveSupport::Concern
|
|
12
|
+
|
|
13
|
+
included do
|
|
14
|
+
# Public: adds a random amount of comments for a given resource.
|
|
15
|
+
#
|
|
16
|
+
# resource - the resource to add the coments to.
|
|
17
|
+
# returns nil if resource is Decidim::Initiative and initiative is invalidated or illegal
|
|
18
|
+
#
|
|
19
|
+
# Returns nothing.
|
|
20
|
+
def self.comments_for(resource)
|
|
21
|
+
return unless resource.accepts_new_comments?
|
|
22
|
+
return if resource.is_a?(Decidim::Initiative) && (resource.invalidated? || resource.illegal?)
|
|
23
|
+
|
|
24
|
+
Decidim::Comments::Comment.reset_column_information
|
|
25
|
+
|
|
26
|
+
organization = resource.organization
|
|
27
|
+
|
|
28
|
+
2.times do
|
|
29
|
+
author = Decidim::User.where(organization: organization).all.sample
|
|
30
|
+
user_group = [true, false].sample ? Decidim::UserGroups::ManageableUserGroups.for(author).verified.sample : nil
|
|
31
|
+
|
|
32
|
+
params = {
|
|
33
|
+
commentable: resource,
|
|
34
|
+
root_commentable: resource,
|
|
35
|
+
body: { en: ::Faker::Lorem.sentence(word_count: 50) },
|
|
36
|
+
author: author,
|
|
37
|
+
user_group: user_group
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
Decidim.traceability.create!(
|
|
41
|
+
Decidim::Comments::Comment,
|
|
42
|
+
author,
|
|
43
|
+
params,
|
|
44
|
+
visibility: "public-only"
|
|
45
|
+
)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "active_support/concern"
|
|
4
|
+
|
|
5
|
+
module Decidim
|
|
6
|
+
module TransparentTrash
|
|
7
|
+
module Extends
|
|
8
|
+
# module: decidim-initiatives
|
|
9
|
+
# path: decidim-initiatives/app/presenters/decidim/initiatives/admin_log/initiative_presenter.rb
|
|
10
|
+
module InitiativePresenter
|
|
11
|
+
extend ActiveSupport::Concern
|
|
12
|
+
|
|
13
|
+
included do
|
|
14
|
+
private
|
|
15
|
+
|
|
16
|
+
def action_string
|
|
17
|
+
case action
|
|
18
|
+
when "publish", "unpublish", "update", "send_to_technical_validation", "invalidate", "illegal"
|
|
19
|
+
"decidim.initiatives.admin_log.initiative.#{action}"
|
|
20
|
+
else
|
|
21
|
+
super
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def diff_actions
|
|
26
|
+
super + %w(publish unpublish send_to_technical_validation invalidate illegal)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|