decidim-collaborative_texts 0.31.0.rc1
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/README.md +24 -0
- data/Rakefile +3 -0
- data/app/cells/decidim/collaborative_texts/document_cell.rb +23 -0
- data/app/cells/decidim/collaborative_texts/document_l_cell.rb +15 -0
- data/app/commands/decidim/collaborative_texts/admin/create_document.rb +25 -0
- data/app/commands/decidim/collaborative_texts/admin/publish_document.rb +52 -0
- data/app/commands/decidim/collaborative_texts/admin/unpublish_document.rb +44 -0
- data/app/commands/decidim/collaborative_texts/admin/update_document.rb +101 -0
- data/app/commands/decidim/collaborative_texts/admin/update_document_settings.rb +13 -0
- data/app/commands/decidim/collaborative_texts/create_suggestion.rb +28 -0
- data/app/commands/decidim/collaborative_texts/rollout.rb +50 -0
- data/app/controllers/concerns/decidim/collaborative_texts/admin/filterable.rb +23 -0
- data/app/controllers/decidim/collaborative_texts/admin/application_controller.rb +15 -0
- data/app/controllers/decidim/collaborative_texts/admin/documents_controller.rb +142 -0
- data/app/controllers/decidim/collaborative_texts/application_controller.rb +14 -0
- data/app/controllers/decidim/collaborative_texts/documents_controller.rb +57 -0
- data/app/controllers/decidim/collaborative_texts/suggestions_controller.rb +55 -0
- data/app/events/decidim/collaborative_texts/suggestion_accepted_event.rb +6 -0
- data/app/forms/decidim/collaborative_texts/admin/document_form.rb +29 -0
- data/app/forms/decidim/collaborative_texts/rollout_form.rb +26 -0
- data/app/forms/decidim/collaborative_texts/suggestion_form.rb +42 -0
- data/app/helpers/decidim/collaborative_texts/application_helper.rb +20 -0
- data/app/models/decidim/collaborative_texts/application_record.rb +10 -0
- data/app/models/decidim/collaborative_texts/document.rb +78 -0
- data/app/models/decidim/collaborative_texts/suggestion.rb +36 -0
- data/app/models/decidim/collaborative_texts/version.rb +35 -0
- data/app/packs/entrypoints/decidim_collaborative_texts.js +7 -0
- data/app/packs/images/decidim/collaborative_texts/decidim_collaborative_texts.svg +1 -0
- data/app/packs/src/decidim/collaborative_texts/document.js +168 -0
- data/app/packs/src/decidim/collaborative_texts/editor.js +80 -0
- data/app/packs/src/decidim/collaborative_texts/init_documents.js +27 -0
- data/app/packs/src/decidim/collaborative_texts/manager.js +106 -0
- data/app/packs/src/decidim/collaborative_texts/selection.js +106 -0
- data/app/packs/src/decidim/collaborative_texts/suggestion.js +243 -0
- data/app/packs/src/decidim/collaborative_texts/suggestions_list.js +103 -0
- data/app/packs/src/decidim/collaborative_texts/test/document.test.js +83 -0
- data/app/packs/src/decidim/collaborative_texts/test/manager.test.js +149 -0
- data/app/packs/src/decidim/collaborative_texts/test/selection.test.js +125 -0
- data/app/packs/src/decidim/collaborative_texts/test/suggestions.test.js +233 -0
- data/app/packs/src/decidim/collaborative_texts/test/toc.test.js +70 -0
- data/app/packs/src/decidim/collaborative_texts/toc.js +48 -0
- data/app/packs/stylesheets/decidim/collaborative_texts/collaborative_texts.scss +287 -0
- data/app/permissions/decidim/collaborative_texts/admin/permissions.rb +28 -0
- data/app/permissions/decidim/collaborative_texts/permissions.rb +36 -0
- data/app/presenters/decidim/collaborative_texts/admin_log/document_presenter.rb +54 -0
- data/app/presenters/decidim/collaborative_texts/admin_log/suggestion_presenter.rb +62 -0
- data/app/presenters/decidim/collaborative_texts/admin_log/suggestion_resource_presenter.rb +20 -0
- data/app/presenters/decidim/collaborative_texts/admin_log/version_presenter.rb +53 -0
- data/app/presenters/decidim/collaborative_texts/official_author_presenter.rb +11 -0
- data/app/presenters/decidim/collaborative_texts/suggestion_presenter.rb +57 -0
- data/app/views/decidim/collaborative_texts/admin/documents/_actions.html.erb +82 -0
- data/app/views/decidim/collaborative_texts/admin/documents/_document-tr.html.erb +15 -0
- data/app/views/decidim/collaborative_texts/admin/documents/_documents-thead.html.erb +7 -0
- data/app/views/decidim/collaborative_texts/admin/documents/_draft_options.html.erb +6 -0
- data/app/views/decidim/collaborative_texts/admin/documents/_form.html.erb +16 -0
- data/app/views/decidim/collaborative_texts/admin/documents/_non_draft_options.html.erb +9 -0
- data/app/views/decidim/collaborative_texts/admin/documents/_versions.html.erb +18 -0
- data/app/views/decidim/collaborative_texts/admin/documents/edit.html.erb +33 -0
- data/app/views/decidim/collaborative_texts/admin/documents/edit_settings.html.erb +18 -0
- data/app/views/decidim/collaborative_texts/admin/documents/index.html.erb +32 -0
- data/app/views/decidim/collaborative_texts/admin/documents/manage_trash.html.erb +19 -0
- data/app/views/decidim/collaborative_texts/admin/documents/new.html.erb +18 -0
- data/app/views/decidim/collaborative_texts/admin/settings/_form.html.erb +9 -0
- data/app/views/decidim/collaborative_texts/documents/_editor_template.html.erb +15 -0
- data/app/views/decidim/collaborative_texts/documents/_manager.html.erb +9 -0
- data/app/views/decidim/collaborative_texts/documents/_suggestions_box_item_template.html.erb +33 -0
- data/app/views/decidim/collaborative_texts/documents/_suggestions_box_template.html.erb +20 -0
- data/app/views/decidim/collaborative_texts/documents/index.html.erb +29 -0
- data/app/views/decidim/collaborative_texts/documents/show.html.erb +70 -0
- data/config/assets.rb +8 -0
- data/config/locales/am-ET.yml +1 -0
- data/config/locales/ar.yml +1 -0
- data/config/locales/bg.yml +1 -0
- data/config/locales/bn-BD.yml +1 -0
- data/config/locales/bs-BA.yml +1 -0
- data/config/locales/ca-IT.yml +154 -0
- data/config/locales/ca.yml +154 -0
- data/config/locales/cs.yml +122 -0
- data/config/locales/da.yml +1 -0
- data/config/locales/de.yml +154 -0
- data/config/locales/el.yml +1 -0
- data/config/locales/en.yml +154 -0
- data/config/locales/eo.yml +1 -0
- data/config/locales/es-MX.yml +154 -0
- data/config/locales/es-PY.yml +154 -0
- data/config/locales/es.yml +154 -0
- data/config/locales/et.yml +1 -0
- data/config/locales/eu.yml +154 -0
- data/config/locales/fa-IR.yml +1 -0
- data/config/locales/fi-plain.yml +154 -0
- data/config/locales/fi.yml +154 -0
- data/config/locales/fr-CA.yml +125 -0
- data/config/locales/fr.yml +125 -0
- data/config/locales/ga-IE.yml +1 -0
- data/config/locales/gl.yml +1 -0
- data/config/locales/gn-PY.yml +1 -0
- data/config/locales/he-IL.yml +1 -0
- data/config/locales/hr.yml +1 -0
- data/config/locales/hu.yml +1 -0
- data/config/locales/id-ID.yml +1 -0
- data/config/locales/is-IS.yml +1 -0
- data/config/locales/it.yml +1 -0
- data/config/locales/ja.yml +153 -0
- data/config/locales/ka-GE.yml +1 -0
- data/config/locales/kaa.yml +1 -0
- data/config/locales/ko.yml +1 -0
- data/config/locales/lb.yml +1 -0
- data/config/locales/lo-LA.yml +1 -0
- data/config/locales/lt.yml +1 -0
- data/config/locales/lv.yml +1 -0
- data/config/locales/mt.yml +1 -0
- data/config/locales/nl.yml +1 -0
- data/config/locales/no.yml +6 -0
- data/config/locales/oc-FR.yml +1 -0
- data/config/locales/om-ET.yml +1 -0
- data/config/locales/pl.yml +1 -0
- data/config/locales/pt-BR.yml +1 -0
- data/config/locales/pt.yml +1 -0
- data/config/locales/ro-RO.yml +89 -0
- data/config/locales/ru.yml +1 -0
- data/config/locales/si-LK.yml +1 -0
- data/config/locales/sk.yml +1 -0
- data/config/locales/sl.yml +1 -0
- data/config/locales/so-SO.yml +1 -0
- data/config/locales/sq-AL.yml +1 -0
- data/config/locales/sr-CS.yml +1 -0
- data/config/locales/sv.yml +117 -0
- data/config/locales/sw-KE.yml +1 -0
- data/config/locales/th-TH.yml +1 -0
- data/config/locales/ti-ER.yml +1 -0
- data/config/locales/tr-TR.yml +69 -0
- data/config/locales/uk.yml +1 -0
- data/config/locales/val-ES.yml +1 -0
- data/config/locales/vi.yml +1 -0
- data/config/locales/zh-CN.yml +1 -0
- data/config/locales/zh-TW.yml +1 -0
- data/db/migrate/20250205215038_create_decidim_collaborative_texts_documents.rb +16 -0
- data/db/migrate/20250213113536_create_collaborative_texts_versions.rb +13 -0
- data/db/migrate/20250227204839_create_collaborative_texts_suggestions.rb +13 -0
- data/db/migrate/20250312140133_add_counter_caches_to_collaborative_texts_documents.rb +13 -0
- data/db/migrate/20250408205231_add_counter_caches_to_collaborative_text_versions.rb +8 -0
- data/decidim-collaborative_texts.gemspec +36 -0
- data/lib/decidim/api/document_input_filter.rb +29 -0
- data/lib/decidim/api/document_input_sort.rb +14 -0
- data/lib/decidim/api/document_type.rb +31 -0
- data/lib/decidim/api/documents_type.rb +39 -0
- data/lib/decidim/api/suggestion_type.rb +18 -0
- data/lib/decidim/api/version_type.rb +21 -0
- data/lib/decidim/collaborative_texts/admin.rb +10 -0
- data/lib/decidim/collaborative_texts/admin_engine.rb +34 -0
- data/lib/decidim/collaborative_texts/api.rb +12 -0
- data/lib/decidim/collaborative_texts/component.rb +54 -0
- data/lib/decidim/collaborative_texts/engine.rb +28 -0
- data/lib/decidim/collaborative_texts/seeds.rb +117 -0
- data/lib/decidim/collaborative_texts/test/factories.rb +80 -0
- data/lib/decidim/collaborative_texts/version.rb +9 -0
- data/lib/decidim/collaborative_texts.rb +13 -0
- metadata +233 -0
@@ -0,0 +1,15 @@
|
|
1
|
+
<tr>
|
2
|
+
<td data-label="<%= t("models.collaborative_text.fields.title", scope: "decidim.collaborative_texts") %>">
|
3
|
+
<% if allowed_to? :update, :collaborative_text, document: document %>
|
4
|
+
<%= link_to translated_attribute(document.title), edit_document_path(document) %><br>
|
5
|
+
<% else %>
|
6
|
+
<%= translated_attribute(document.title) %><br>
|
7
|
+
<% end %>
|
8
|
+
</td>
|
9
|
+
<td data-label="<%= t("models.collaborative_text.fields.suggestions", scope: "decidim.collaborative_texts") %>">
|
10
|
+
<%= t("booleans.#{document.accepting_suggestions}") %>
|
11
|
+
</td>
|
12
|
+
<td class="table-list__actions" data-label="<%= t("actions.title", scope: "decidim.collaborative_texts") %>">
|
13
|
+
<%= render partial: "decidim/collaborative_texts/admin/documents/actions", locals: { document:, view: } %>
|
14
|
+
</td>
|
15
|
+
</tr>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<thead>
|
2
|
+
<tr>
|
3
|
+
<th><%= t("models.collaborative_text.fields.title", scope: "decidim.collaborative_texts") %></th>
|
4
|
+
<th><%= t("models.collaborative_text.fields.suggestions", scope: "decidim.collaborative_texts") %></th>
|
5
|
+
<th><%= t("actions.title", scope: "decidim.collaborative_texts") %></th>
|
6
|
+
</tr>
|
7
|
+
</thead>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<div class="row column">
|
2
|
+
<%= form.check_box :draft, help_text: t(".draft_help_html"), label: t(".draft") %>
|
3
|
+
</div>
|
4
|
+
<div class="row column">
|
5
|
+
<%= form.check_box :accepting_suggestions, help_text: t(".accepting_suggestions_help"), label: t(".accepting_suggestions") %>
|
6
|
+
</div>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<div class="form__wrapper">
|
2
|
+
<div class="card">
|
3
|
+
<div class="card-section">
|
4
|
+
<div class="row column">
|
5
|
+
<%= form.text_field :title, autofocus: true, aria: { label: :title } %>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<div class="row column">
|
9
|
+
<% if local_assigns[:has_suggestions] %>
|
10
|
+
<%= cell("decidim/announcement", t("decidim.collaborative_texts.admin.documents.edit.document_has_suggestions_html", url: resource_locator(document).path), callout_class: "warning") %>
|
11
|
+
<% end %>
|
12
|
+
<%= form.editor :body, lines: 40, aria: { label: :body }, disabled: local_assigns[:has_suggestions] %>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
</div>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<% if document.has_suggestions? %>
|
2
|
+
<div class="row column">
|
3
|
+
<%= form.check_box :draft, help_text: t(".draft_help_html"), label: t(".create_draft") %>
|
4
|
+
</div>
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
<div class="row column">
|
8
|
+
<%= form.check_box :accepting_suggestions, help_text: t(".enable_suggestions_help"), label: t(".enable_suggestions") %>
|
9
|
+
</div>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<h4 class="h4 mb-4"><%= t("decidim.collaborative_texts.admin.documents.edit.previous_versions") %></h4>
|
2
|
+
<ul class="previous-versions">
|
3
|
+
<% document.document_versions.each do |version| %>
|
4
|
+
<% next unless version && version.id %>
|
5
|
+
<li class="<%= "underline" if version == document.current_version %>">
|
6
|
+
<%= t("decidim.collaborative_texts.admin.documents.edit.version", version_number: version.version_number,
|
7
|
+
created_at: l(version.created_at,
|
8
|
+
format: :decidim_short),
|
9
|
+
suggestions_count: version.suggestions.count) %>
|
10
|
+
<% if version == document.consolidated_version %>
|
11
|
+
(<%= t("decidim.collaborative_texts.admin.documents.edit.public_version") %>)
|
12
|
+
<% end %>
|
13
|
+
<% if version.draft? %>
|
14
|
+
(<%= t("decidim.collaborative_texts.admin.documents.edit.draft") %>)
|
15
|
+
<% end %>
|
16
|
+
</li>
|
17
|
+
<% end %>
|
18
|
+
</ul>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<% add_decidim_page_title(t(".title")) %>
|
2
|
+
<div class="item_show__header">
|
3
|
+
<h1 class="item_show__header-title">
|
4
|
+
<%= t(".title") %>
|
5
|
+
</h1>
|
6
|
+
</div>
|
7
|
+
<div class="item__edit item__edit-1col">
|
8
|
+
<div class="item__edit-form">
|
9
|
+
<%= decidim_form_for(@form, url: document_path(document), html: { class: "form-defaults form edit_document" }) do |f| %>
|
10
|
+
<%= render partial: "form", object: f, locals: { has_suggestions: document.has_suggestions? } %>
|
11
|
+
|
12
|
+
<div class="form__wrapper">
|
13
|
+
<div class="card">
|
14
|
+
<div class="card-section">
|
15
|
+
<% if document.draft? %>
|
16
|
+
<%= render "draft_options", form: f %>
|
17
|
+
<% else %>
|
18
|
+
<%= render "non_draft_options", form: f %>
|
19
|
+
<% end %>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<%= render partial: "versions" %>
|
25
|
+
|
26
|
+
<div class="item__edit-sticky">
|
27
|
+
<div class="item__edit-sticky-container">
|
28
|
+
<%= f.submit t(".update"), class: "button button__sm button__secondary" %>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
<% end %>
|
32
|
+
</div>
|
33
|
+
</div>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<% add_decidim_page_title(t(".title")) %>
|
2
|
+
<div class="item_show__header">
|
3
|
+
<h1 class="item_show__header-title">
|
4
|
+
<%= t(".title") %>
|
5
|
+
</h1>
|
6
|
+
</div>
|
7
|
+
<div class="item__edit item__edit-1col">
|
8
|
+
<div class="item__edit-form">
|
9
|
+
<%= decidim_form_for(@form, url: update_settings_document_path(document), html: { class: "form-defaults form edit_document" }) do |f| %>
|
10
|
+
<%= render partial: "decidim/collaborative_texts/admin/settings/form", object: f %>
|
11
|
+
<div class="item__edit-sticky">s
|
12
|
+
<div class="item__edit-sticky-container">
|
13
|
+
<%= f.submit t(".update"), class: "button button__sm button__secondary" %>
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
<% end %>
|
17
|
+
</div>
|
18
|
+
</div>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<% add_decidim_page_title(t(".title")) %>
|
2
|
+
<div class="card">
|
3
|
+
<div class="item_show__header">
|
4
|
+
<h1 class="item_show__header-title">
|
5
|
+
<%= t(".title") %>
|
6
|
+
<%= link_to t("actions.new", scope: "decidim.collaborative_texts"), new_document_path, class: "button button__sm button__secondary" %>
|
7
|
+
<%= render partial: "decidim/admin/components/resource_action" %>
|
8
|
+
</h1>
|
9
|
+
</div>
|
10
|
+
<div class="table-stacked">
|
11
|
+
<table class="table-list">
|
12
|
+
<%= render partial: "documents-thead" %>
|
13
|
+
<tbody>
|
14
|
+
<%= render partial: "decidim/collaborative_texts/admin/documents/document-tr",
|
15
|
+
collection: documents,
|
16
|
+
as: :document,
|
17
|
+
locals: { view: :index } %>
|
18
|
+
</tbody>
|
19
|
+
</table>
|
20
|
+
</div>
|
21
|
+
<% if allowed_to? :manage_trash, :collaborative_text, participatory_space: current_participatory_space %>
|
22
|
+
<div class="card mt-4">
|
23
|
+
<%= link_to manage_trash_documents_path, class: "flex items-center text-secondary" do %>
|
24
|
+
<%= icon "delete-bin-2-line", class: "mr-2 fill-current text-secondary", role: "img" %>
|
25
|
+
<%= t("actions.view_deleted_documents", scope: "decidim.collaborative_texts") %>
|
26
|
+
<span class="ml-2">
|
27
|
+
<%= icon_with_tooltip("information-line", t("actions.deleted_document_info", scope: "decidim.collaborative_texts")) %>
|
28
|
+
</span>
|
29
|
+
<% end %>
|
30
|
+
</div>
|
31
|
+
<% end %>
|
32
|
+
</div>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<% add_decidim_page_title(t(".title")) %>
|
2
|
+
<div class="card">
|
3
|
+
<div class="item_show__header">
|
4
|
+
<h1 class="item_show__header-title">
|
5
|
+
<%= t(".title") %>
|
6
|
+
</h1>
|
7
|
+
</div>
|
8
|
+
<div class="table-stacked">
|
9
|
+
<table class="table-list">
|
10
|
+
<%= render partial: "documents-thead" %>
|
11
|
+
<tbody>
|
12
|
+
<%= render partial: "decidim/collaborative_texts/admin/documents/document-tr",
|
13
|
+
collection: trashable_deleted_collection,
|
14
|
+
as: :document,
|
15
|
+
locals: { view: :deleted } %>
|
16
|
+
</tbody>
|
17
|
+
</table>
|
18
|
+
</div>
|
19
|
+
</div>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<% add_decidim_page_title(t(".title")) %>
|
2
|
+
<div class="item_show__header">
|
3
|
+
<h1 class="item_show__header-title">
|
4
|
+
<%= t(".title") %>
|
5
|
+
</h1>
|
6
|
+
</div>
|
7
|
+
<div class="item__edit item__edit-1col">
|
8
|
+
<div class="item__edit-form">
|
9
|
+
<%= decidim_form_for(@form, url: documents_path, method: :post, html: { class: "form form-defaults new_document" }) do |f| %>
|
10
|
+
<%= render partial: "form", object: f, locals: { title: t(".title") } %>
|
11
|
+
<div class="item__edit-sticky">
|
12
|
+
<div class="item__edit-sticky-container">
|
13
|
+
<%= f.submit(t(".create"), class: "button button__sm button__secondary") %>
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
<% end %>
|
17
|
+
</div>
|
18
|
+
</div>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<div class="collaborative-texts-editor-header">
|
2
|
+
<%= icon("edit-line") %>
|
3
|
+
<button class="collaborative-texts-button-cancel" aria-label="<%= t("decidim.collaborative_texts.document.cancel") %>" type="button">
|
4
|
+
<span aria-hidden="true">×</span>
|
5
|
+
</button>
|
6
|
+
</div>
|
7
|
+
<div class="collaborative-texts-editor-profile">
|
8
|
+
<%= cell("decidim/author", current_user.presenter) if user_signed_in? %>
|
9
|
+
</div>
|
10
|
+
<div class="collaborative-texts-editor-container"></div>
|
11
|
+
<div class="collaborative-texts-editor-menu">
|
12
|
+
<%= action_authorized_button_to(:suggest, "#suggest", disabled: true, class: "collaborative-texts-button-save button button__primary button__sm") do %>
|
13
|
+
<%= t("decidim.collaborative_texts.document.save") %>
|
14
|
+
<% end %>
|
15
|
+
</div>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<div>
|
2
|
+
<%= button_tag(t("decidim.collaborative_texts.document.rollout.new"), class:"button button__lg button__primary", data: { collaborative_texts_manager_rollout: true }) %>
|
3
|
+
<%= button_tag(t("decidim.collaborative_texts.document.consolidate.new"), class:"button button__lg button__transparent-primary", data: { collaborative_texts_manager_consolidate: true }) %>
|
4
|
+
<%= button_tag(t("decidim.collaborative_texts.document.cancel"), class:"button button__lg button__transparent-primary", data: { collaborative_texts_manager_cancel: true }) %>
|
5
|
+
</div>
|
6
|
+
<% %w(draft_counter consolidate_counter).each do |key| %>
|
7
|
+
<p class="help-text"><%= t("decidim.collaborative_texts.document.#{key}", applied: '<span class="collaborative-texts-manager-applied"></span>',
|
8
|
+
pending: '<span class="collaborative-texts-manager-pending"></span>' ).html_safe %></p>
|
9
|
+
<% end %>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<div class="collaborative-texts-suggestions-box-item-header">
|
2
|
+
<div>{{PROFILE}}</div>
|
3
|
+
<div class="relative z-1">
|
4
|
+
<button class="collaborative-texts-suggestions-box-item-dropdown"
|
5
|
+
id="dropdown-trigger-{{ID}}"
|
6
|
+
data-controller="dropdown"
|
7
|
+
data-target="dropdown-menu-{{ID}}"
|
8
|
+
data-auto-close="true"
|
9
|
+
aria-label="<%= t("decidim.collaborative_texts.document.controls_label") %>">
|
10
|
+
<span class="sr-only"><%= t("decidim.collaborative_texts.document.controls_label") %></span>
|
11
|
+
<%# NOTE: having two times the icon call is intentional, as that is how the `dropdown` CSS code is done %>
|
12
|
+
<%= icon "more-fill" %>
|
13
|
+
<%= icon "more-fill" %>
|
14
|
+
</button>
|
15
|
+
|
16
|
+
<div class="collaborative-texts-suggestions-box-header-menu" id="dropdown-menu-{{ID}}" role="menu" aria-labelledby="dropdown-trigger-{{ID}}" tabindex="-1" aria-hidden="true">
|
17
|
+
<ul class="dropdown dropdown__bottom divide-y divide-gray-3 pt-1 pb-0" role="menu">
|
18
|
+
<li role="menuitem" class="dropdown__item">
|
19
|
+
<button class="button-apply dropdown__button">
|
20
|
+
<%= icon "checkbox-circle-line" %>
|
21
|
+
<%= t("decidim.collaborative_texts.document.apply") %>
|
22
|
+
</button>
|
23
|
+
<button class="button-restore dropdown__button">
|
24
|
+
<%= icon "arrow-go-back-line" %>
|
25
|
+
<%= t("decidim.collaborative_texts.document.restore") %>
|
26
|
+
</button>
|
27
|
+
</li>
|
28
|
+
</ul>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div class="collaborative-texts-suggestions-box-item-text"></div>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<div data-controller="accordion" id="collaborative-texts-box-{{ID}}">
|
2
|
+
<button class="button button__sm button__text-secondary mt-2 mb-4 px-2" data-controls="panel-box-{{ID}}" aria-label="<%= t("decidim.collaborative_texts.document.toggle") %>" aria-expanded="false">
|
3
|
+
<span>
|
4
|
+
<%= icon("award-line", class: "icon icon-pending") %>
|
5
|
+
<%= icon("check-line", class: "icon icon-hover") %>
|
6
|
+
<%= icon("check-double-fill", class: "icon icon-applied") %>
|
7
|
+
|
8
|
+
<%= counter = t("decidim.collaborative_texts.document.suggestions_count", count: '<span class="collaborative-texts-suggestions-box-items-count"></span>').html_safe %>
|
9
|
+
</span>
|
10
|
+
<%= icon "arrow-down-s-line" %>
|
11
|
+
<span>
|
12
|
+
<%= icon("award-line", class: "icon icon-pending") %>
|
13
|
+
<%= icon("check-line", class: "icon icon-hover") %>
|
14
|
+
<%= icon("check-double-fill", class: "icon icon-applied") %>
|
15
|
+
<%= counter %>
|
16
|
+
</span>
|
17
|
+
<%= icon "arrow-up-s-line" %>
|
18
|
+
</button>
|
19
|
+
<div class="collaborative-texts-suggestions-box-items" id="panel-box-{{ID}}" aria-hidden="true"></div>
|
20
|
+
</div>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<% add_decidim_meta_tags(
|
2
|
+
description: translated_attribute(current_component.participatory_space.try(:description)),
|
3
|
+
title: component_name,
|
4
|
+
url: documents_url,
|
5
|
+
resource: current_component) %>
|
6
|
+
|
7
|
+
<% content_for :aside do %>
|
8
|
+
<h1 class="title-decorator"><%= component_name %></h1>
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
<%= render layout: "layouts/decidim/shared/layout_two_col" do %>
|
12
|
+
|
13
|
+
<%= render partial: "decidim/shared/component_announcement" %>
|
14
|
+
|
15
|
+
<section id="collaborative_texts" class="layout-main__section layout-main__heading">
|
16
|
+
<% if paginate_documents.empty? %>
|
17
|
+
<%= cell("decidim/announcement", t("empty", scope: "decidim.collaborative_texts.documents.index")) %>
|
18
|
+
<% else %>
|
19
|
+
<h2 class="h5 md:h3 decorator"><%= t("count", scope: "decidim.collaborative_texts.documents.index", count: documents.length) %></h2>
|
20
|
+
<% end %>
|
21
|
+
|
22
|
+
<% paginate_documents.each do |document| %>
|
23
|
+
<%= card_for document, size: :l %>
|
24
|
+
<% end %>
|
25
|
+
|
26
|
+
<%= decidim_paginate paginate_documents %>
|
27
|
+
</section>
|
28
|
+
|
29
|
+
<% end %>
|
@@ -0,0 +1,70 @@
|
|
1
|
+
<% provide(:title, document.title) %>
|
2
|
+
|
3
|
+
<% add_decidim_meta_tags(
|
4
|
+
title: document.title,
|
5
|
+
url: document_url(document.id),
|
6
|
+
resource: document) %>
|
7
|
+
|
8
|
+
<%
|
9
|
+
edit_link(
|
10
|
+
resource_locator(document).edit,
|
11
|
+
:update,
|
12
|
+
:collaborative_text,
|
13
|
+
document:
|
14
|
+
)
|
15
|
+
%>
|
16
|
+
|
17
|
+
<% content_for :aside do %>
|
18
|
+
<div class="collaborative-texts-toc" data-collaborative-texts-toc="collaborative-text-<%= document.id %>">
|
19
|
+
<h4 class="h4 mb-4"><%= t("decidim.collaborative_texts.document.index") %></h4>
|
20
|
+
<ul class="spinner-container"></ul>
|
21
|
+
</div>
|
22
|
+
<% end %>
|
23
|
+
|
24
|
+
<%= render layout: "layouts/decidim/shared/layout_two_col", locals: { columns: 10, large: true } do %>
|
25
|
+
<%= render partial: "decidim/shared/component_announcement" %>
|
26
|
+
|
27
|
+
<section class="layout-main__section">
|
28
|
+
<div class="flex justify-center">
|
29
|
+
<h1 class="title-decorator my-12"><%= document.title %></h1>
|
30
|
+
</div>
|
31
|
+
|
32
|
+
<%= cell("decidim/announcement", translated_attribute(document.announcement)) if strip_tags(document.announcement&.values&.join)&.strip.present? %>
|
33
|
+
<%= cell("decidim/announcement", t("decidim.collaborative_texts.document.status.draft"), callout_class: "warning") if document.draft? %>
|
34
|
+
<%= cell("decidim/announcement", t("decidim.collaborative_texts.document.status.accepting_suggestions")) if document.suggestions_enabled? %>
|
35
|
+
<%= cell("decidim/announcement", t("decidim.collaborative_texts.document.status.not_accepting_suggestions")) unless document.suggestions_enabled? || document.draft? %>
|
36
|
+
|
37
|
+
<div class="collaborative-texts-manager hidden"><%= render "manager" %></div>
|
38
|
+
|
39
|
+
<div class="collaborative-texts-alert hidden">
|
40
|
+
<div></div>
|
41
|
+
</div>
|
42
|
+
|
43
|
+
<script type="text/template" class="decidim-template" id="collaborative-texts-editor-template"><%= render "editor_template" %></script>
|
44
|
+
<script type="text/template" class="decidim-template" id="collaborative-texts-suggestions-box-template"><%= render "suggestions_box_template" %></script>
|
45
|
+
<script type="text/template" class="decidim-template" id="collaborative-texts-suggestions-box-item-template"><%= render "suggestions_box_item_template" %></script>
|
46
|
+
|
47
|
+
<div id="collaborative-text-<%= document.id %>" data-collaborative-texts-document="<%= document.suggestions_enabled? %>"
|
48
|
+
data-collaborative-texts-i18n="<%= document_i18n.to_json %>"
|
49
|
+
data-collaborative-texts-suggestions-editor-template="#collaborative-texts-editor-template"
|
50
|
+
data-collaborative-texts-suggestions-box-template="#collaborative-texts-suggestions-box-template"
|
51
|
+
data-collaborative-texts-suggestions-box-item-template="#collaborative-texts-suggestions-box-item-template"
|
52
|
+
data-collaborative-texts-suggestions-url="<%= document_suggestions_path(document) %>"
|
53
|
+
data-collaborative-texts-rollout-url="<%= document_path(document) if allowed_to?(:rollout, :collaborative_text, document:) %>"
|
54
|
+
class="collaborative-texts-container editor-content">
|
55
|
+
<%= decidim_sanitize decidim_rich_text(document.consolidated_body), { scrubber: Decidim::AdminInputScrubber.new } %>
|
56
|
+
</div>
|
57
|
+
|
58
|
+
<hr class="text-gray-6 my-12">
|
59
|
+
|
60
|
+
<% if document.coauthorships.any? %>
|
61
|
+
<div class="my-12">
|
62
|
+
<h5 class="h5 my-4"><%= t("decidim.collaborative_texts.documents.show.contributors") %></h5>
|
63
|
+
<%= cell "decidim/coauthorships", document, context_actions: [:date] %>
|
64
|
+
</div>
|
65
|
+
<% end %>
|
66
|
+
</section>
|
67
|
+
<% end %>
|
68
|
+
|
69
|
+
<% append_javascript_pack_tag("decidim_collaborative_texts") %>
|
70
|
+
<% append_stylesheet_pack_tag("decidim_collaborative_texts") %>
|
data/config/assets.rb
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
base_path = File.expand_path("..", __dir__)
|
4
|
+
|
5
|
+
Decidim::Shakapacker.register_path("#{base_path}/app/packs")
|
6
|
+
Decidim::Shakapacker.register_entrypoints(
|
7
|
+
decidim_collaborative_texts: "#{base_path}/app/packs/entrypoints/decidim_collaborative_texts.js"
|
8
|
+
)
|
@@ -0,0 +1 @@
|
|
1
|
+
am:
|
@@ -0,0 +1 @@
|
|
1
|
+
ar:
|
@@ -0,0 +1 @@
|
|
1
|
+
bg:
|
@@ -0,0 +1 @@
|
|
1
|
+
bn:
|
@@ -0,0 +1 @@
|
|
1
|
+
bs:
|
@@ -0,0 +1,154 @@
|
|
1
|
+
---
|
2
|
+
ca-IT:
|
3
|
+
activemodel:
|
4
|
+
attributes:
|
5
|
+
collaborative_texts:
|
6
|
+
document:
|
7
|
+
body: Cos del text
|
8
|
+
draft: Esborrany
|
9
|
+
title: Títol
|
10
|
+
version_number: Número de versió
|
11
|
+
suggestion:
|
12
|
+
nodes: Nodes DOM
|
13
|
+
original: Text original
|
14
|
+
replace: Substitució
|
15
|
+
version:
|
16
|
+
body: Cos del text
|
17
|
+
draft: Esborrany
|
18
|
+
version_number: Número de versió
|
19
|
+
decidim:
|
20
|
+
admin:
|
21
|
+
tooltips:
|
22
|
+
deleted_collaborative_texts_info: No es pot esborrar aquest document
|
23
|
+
collaborative_texts:
|
24
|
+
actions:
|
25
|
+
confirm_delete_document: Segur que vols esborrar aquest document?
|
26
|
+
deleted_document_info: Els documents eliminats es poden restaurar des de la paperera.
|
27
|
+
edit: Editar
|
28
|
+
manage: Configurar
|
29
|
+
new: Nou text
|
30
|
+
title: Accions
|
31
|
+
view_deleted_documents: Veure els documents eliminats
|
32
|
+
admin:
|
33
|
+
documents:
|
34
|
+
create:
|
35
|
+
invalid: S'ha produït un error en crear el comentari.
|
36
|
+
success: Document creat correctament.
|
37
|
+
draft_options:
|
38
|
+
accepting_suggestions: Habilitar suggeriments a la pròxima versió
|
39
|
+
accepting_suggestions_help: Habilitar els suggeriments iniciarà una nova ronda de suggeriments per a aquest document. Els suggeriments existents no seran visibles a la nova versió.
|
40
|
+
draft: Versió de l'esborrany
|
41
|
+
draft_help_html: 'Una versió esborrany no és pública i les administradores poden editar-la. Per fer publica la versió d''aquest contingut: suprimeix l''estat d''esborrany. <strong>Tingues en compte que mentre la versió esborrany estigui activa, les participants veuran la versió anterior i no podran fer suggeriments.</strong>'
|
42
|
+
edit:
|
43
|
+
document_has_suggestions_html: <a href="%{url}">Aquest document té suggeriments</a> i no es pot editar directament. Si us plau, accepta o rebutja els suggeriments per generar una nova versió d'esborrany que es pugui editar.
|
44
|
+
draft: Versió de l'esborrany
|
45
|
+
previous_versions: Versions prèvies
|
46
|
+
public_version: Versió pública
|
47
|
+
title: Editar el text col·laboratiu
|
48
|
+
update: Actualitzar
|
49
|
+
version: Versió %{version_number}, creada a %{created_at} ha rebut suggeriments %{suggestions_count}.
|
50
|
+
edit_settings:
|
51
|
+
title: Configurar els textos col·laboratius
|
52
|
+
update: Actualitzar
|
53
|
+
index:
|
54
|
+
title: Textos col·laboratius
|
55
|
+
manage_trash:
|
56
|
+
title: Documents esborrats
|
57
|
+
new:
|
58
|
+
create: Crear
|
59
|
+
title: Crea textos col·laboratius
|
60
|
+
non_draft_options:
|
61
|
+
create_draft: Descartar suggeriments i crear una nova versió d'esborrany
|
62
|
+
draft_help_html: 'Una versió esborrany no és pública i les administradores poden editar-la. Per fer publica la versió d''aquest contingut: suprimeix l''estat d''esborrany. <strong>Tingues en compte que mentre la versió esborrany estigui activa, les participants veuran la versió anterior i no podran fer suggeriments.</strong>'
|
63
|
+
enable_suggestions: Activa els suggeriments
|
64
|
+
enable_suggestions_help: Habilitar els suggeriments permetrà a les participants fer suggeriments sobre aquesta versió.
|
65
|
+
publish:
|
66
|
+
invalid: S'ha produït un error en publicar aquest document.
|
67
|
+
success: Document publicat amb èxit.
|
68
|
+
unpublish:
|
69
|
+
invalid: Hi ha hagut un problema en despublicar aquest document.
|
70
|
+
success: El document s'ha despublicat correctament.
|
71
|
+
update:
|
72
|
+
invalid: S'ha produït un error en actualitzar el document.
|
73
|
+
success: Document actualitzat correctament.
|
74
|
+
update_settings:
|
75
|
+
invalid: S'ha produït un error en actualitzar el document.
|
76
|
+
success: Document actualitzat correctament.
|
77
|
+
admin_log:
|
78
|
+
document:
|
79
|
+
create: "%{user_name} ha creat el text col·laboratiu \"%{resource_name}\" a %{space_name}"
|
80
|
+
delete: "%{user_name} ha eliminat el text col·laboratiu \"%{resource_name}\" a %{space_name}"
|
81
|
+
publish: "%{user_name} ha publicat el text col·laboratiu \"%{resource_name}\" a %{space_name}"
|
82
|
+
restore: "%{user_name} ha restaurat el text col·laboratiu \"%{resource_name}\" a %{space_name}"
|
83
|
+
soft_delete: "%{user_name} ha mogut a la paperera el text col·laboratiu \"%{resource_name}\" a %{space_name}"
|
84
|
+
unpublish: "%{user_name} ha despublicat el text col·laboratiu \"%{resource_name}\" a %{space_name}"
|
85
|
+
update: "%{user_name} ha actualitzat el text col·laboratiu \"%{resource_name}\" a %{space_name}"
|
86
|
+
suggestion:
|
87
|
+
create: "%{user_name} va suggerir canvis al text col·laboratiu: \"%{resource_name}\" a %{space_name}"
|
88
|
+
version:
|
89
|
+
delete: "%{user_name} ha eliminat el text col·laboratiu \"%{resource_name}\" a %{space_name}"
|
90
|
+
update: "%{user_name} ha actualitzat el text col·laboratiu \"%{resource_name}\" a %{space_name}"
|
91
|
+
document:
|
92
|
+
apply: Aplicar
|
93
|
+
cancel: Cancel·lar
|
94
|
+
consolidate:
|
95
|
+
confirm: Aquesta acció consolidarà tots els suggeriments acceptats en una nova versió del document. Els suggeriments no acceptats seran transferits a la nova versió per a la posterior revisió. Aquesta acció mantindrà els suggeriments habilitats.
|
96
|
+
new: Consolidar suggeriments acceptats
|
97
|
+
consolidate_counter: En consolidar es combinaran els %{applied} suggeriments aplicats i es mouran els %{pending} suggeriments pendents a la nova versió.
|
98
|
+
controls_label: Controls dels suggeriments
|
99
|
+
draft_counter: L'esborrany combinarà els suggeriments aplicats a %{applied} i descartarà els suggeriments pendents a %{pending}.
|
100
|
+
index: Índex
|
101
|
+
restore: Restaurar
|
102
|
+
rollout:
|
103
|
+
confirm: Aquesta acció crearà una nova versió d'esborrany del document i se us redirigirà a la pàgina d'edició per als refinaments finals. La versió actual continuarà sent pública i es desactivaran els suggeriments.
|
104
|
+
invalid: Hi ha hagut un problema en crear una nova versió del document (%{errors}).
|
105
|
+
new: Esborrany d'una nova versió
|
106
|
+
save: Suggerir canvis
|
107
|
+
status:
|
108
|
+
accepting_suggestions: Per suggerir canvis, selecciona o fes doble clic al text que vols editar, després fes clic al botó 'Suggerir canvis'.
|
109
|
+
draft: Actualment, aquest document està sent revisat per les administradores. No es poden fer suggeriments en aquest moment, però pots veure suggeriments fets per altres participants.
|
110
|
+
not_accepting_suggestions: Els suggeriments no estan permesos en aquest moment.
|
111
|
+
selection_active: Una selecció és activa. Si us plau, cancel·leu la selecció actual per crear-ne una de nova.
|
112
|
+
suggestions_count: "%{count} suggeriments"
|
113
|
+
toggle: Mostrar o amagar els suggeriments
|
114
|
+
documents:
|
115
|
+
index:
|
116
|
+
count:
|
117
|
+
one: "%{count} text col·laboratiu"
|
118
|
+
other: "%{count} textos col·laboratius"
|
119
|
+
empty: Encara no hi ha cap text col·laboratiu.
|
120
|
+
show:
|
121
|
+
contributors: Contribuïdores
|
122
|
+
models:
|
123
|
+
collaborative_text:
|
124
|
+
fields:
|
125
|
+
suggestions: Accepta el(s) suggeriment(s)
|
126
|
+
title: Títol
|
127
|
+
suggestion:
|
128
|
+
add_html: <span class="type">Afegir:</span> <span class="text">%{text}</span>
|
129
|
+
remove_html: <span class="type">Eliminar:</span> <span class="text">%{text}</span>
|
130
|
+
replace_html: <span class="type">Reemplaçar:</span> <span class="text">%{text}</span>
|
131
|
+
suggestions:
|
132
|
+
create:
|
133
|
+
invalid: S'ha produït un error en crear aquest suggeriment.
|
134
|
+
success: Suggeriment creat amb èxit.
|
135
|
+
errors:
|
136
|
+
blank_changeset: El conjunt de canvis no poden estar en blanc.
|
137
|
+
invalid_nodes: Nodes seleccionats invàlids.
|
138
|
+
components:
|
139
|
+
collaborative_texts:
|
140
|
+
actions:
|
141
|
+
create: Crear
|
142
|
+
destroy: Destruir
|
143
|
+
update: Actualitzar
|
144
|
+
name: Textos col·laboratius
|
145
|
+
settings:
|
146
|
+
global:
|
147
|
+
announcement: Avís
|
148
|
+
comments_blocked: Comentaris bloquejats
|
149
|
+
step:
|
150
|
+
announcement: Avís
|
151
|
+
statistics:
|
152
|
+
all_collaborative_texts_count: Tots els textos col·laboratius
|
153
|
+
collaborative_texts_count: Textos col·laboratius
|
154
|
+
collaborative_texts_count_tooltip: El número textos col·laboratius
|