decidim-sortitions 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE-AGPLv3.txt +661 -0
  3. data/README.md +31 -0
  4. data/Rakefile +3 -0
  5. data/app/assets/config/decidim_sortitions_manifest.css +1 -0
  6. data/app/assets/config/decidim_sortitions_manifest.js +1 -0
  7. data/app/assets/images/decidim/sortitions/icon.svg +4 -0
  8. data/app/assets/javascripts/decidim/sortitions/admin/sortitions.js +2 -0
  9. data/app/assets/javascripts/decidim/sortitions/social_share.js +2 -0
  10. data/app/assets/stylesheets/decidim/sortitions/_sortitions.scss +45 -0
  11. data/app/assets/stylesheets/decidim/sortitions/social_share.css.scss +18 -0
  12. data/app/commands/decidim/sortitions/admin/create_sortition.rb +81 -0
  13. data/app/commands/decidim/sortitions/admin/destroy_sortition.rb +45 -0
  14. data/app/commands/decidim/sortitions/admin/update_sortition.rb +45 -0
  15. data/app/controllers/concerns/decidim/sortitions/orderable.rb +50 -0
  16. data/app/controllers/decidim/sortitions/admin/application_controller.rb +28 -0
  17. data/app/controllers/decidim/sortitions/admin/sortitions_controller.rb +104 -0
  18. data/app/controllers/decidim/sortitions/application_controller.rb +13 -0
  19. data/app/controllers/decidim/sortitions/sortition_widgets_controller.rb +20 -0
  20. data/app/controllers/decidim/sortitions/sortitions_controller.rb +45 -0
  21. data/app/events/decidim/sortitions/create_sortition_event.rb +8 -0
  22. data/app/forms/decidim/sortitions/admin/destroy_sortition_form.rb +20 -0
  23. data/app/forms/decidim/sortitions/admin/edit_sortition_form.rb +22 -0
  24. data/app/forms/decidim/sortitions/admin/sortition_form.rb +44 -0
  25. data/app/helpers/decidim/sortitions/admin/sortitions_helper.rb +24 -0
  26. data/app/helpers/decidim/sortitions/sortitions_helper.rb +38 -0
  27. data/app/models/decidim/sortitions/abilities/admin/admin_ability.rb +23 -0
  28. data/app/models/decidim/sortitions/abilities/admin/process_admin_ability.rb +46 -0
  29. data/app/models/decidim/sortitions/application_record.rb +9 -0
  30. data/app/models/decidim/sortitions/sortition.rb +81 -0
  31. data/app/queries/decidim/sortitions/admin/participatory_space_proposal_features.rb +29 -0
  32. data/app/queries/decidim/sortitions/admin/participatory_space_proposals.rb +49 -0
  33. data/app/queries/decidim/sortitions/filtered_sortitions.rb +37 -0
  34. data/app/services/decidim/sortitions/admin/draw.rb +31 -0
  35. data/app/services/decidim/sortitions/sortition_search.rb +47 -0
  36. data/app/views/decidim/sortitions/admin/sortitions/_form.html.erb +41 -0
  37. data/app/views/decidim/sortitions/admin/sortitions/confirm_destroy.html.erb +21 -0
  38. data/app/views/decidim/sortitions/admin/sortitions/edit.html.erb +27 -0
  39. data/app/views/decidim/sortitions/admin/sortitions/index.html.erb +57 -0
  40. data/app/views/decidim/sortitions/admin/sortitions/new.html.erb +11 -0
  41. data/app/views/decidim/sortitions/admin/sortitions/show.html.erb +55 -0
  42. data/app/views/decidim/sortitions/sortition_widgets/show.html.erb +4 -0
  43. data/app/views/decidim/sortitions/sortitions/_count.html.erb +1 -0
  44. data/app/views/decidim/sortitions/sortitions/_filters.html.erb +31 -0
  45. data/app/views/decidim/sortitions/sortitions/_filters_small_view.html.erb +18 -0
  46. data/app/views/decidim/sortitions/sortitions/_filters_small_view0.html.erb +18 -0
  47. data/app/views/decidim/sortitions/sortitions/_linked_sortitions.html.erb +29 -0
  48. data/app/views/decidim/sortitions/sortitions/_proposal.html.erb +24 -0
  49. data/app/views/decidim/sortitions/sortitions/_proposal_badge.html.erb +3 -0
  50. data/app/views/decidim/sortitions/sortitions/_results_count.html.erb +8 -0
  51. data/app/views/decidim/sortitions/sortitions/_sortition.html.erb +25 -0
  52. data/app/views/decidim/sortitions/sortitions/_sortition_author.html.erb +17 -0
  53. data/app/views/decidim/sortitions/sortitions/_sortition_cancel_author.html.erb +17 -0
  54. data/app/views/decidim/sortitions/sortitions/_sortitions.html.erb +14 -0
  55. data/app/views/decidim/sortitions/sortitions/_sortitions_count.html.erb +1 -0
  56. data/app/views/decidim/sortitions/sortitions/_tags.html.erb +16 -0
  57. data/app/views/decidim/sortitions/sortitions/index.html.erb +21 -0
  58. data/app/views/decidim/sortitions/sortitions/index.js.erb +10 -0
  59. data/app/views/decidim/sortitions/sortitions/show.html.erb +134 -0
  60. data/config/initializers/social_share_button.rb +5 -0
  61. data/config/locales/ca.yml +155 -0
  62. data/config/locales/en.yml +154 -0
  63. data/config/locales/es.yml +155 -0
  64. data/db/migrate/20171215161358_create_decidim_module_sortitions_sortitions.rb +23 -0
  65. data/db/migrate/20171220164658_add_witnesses_to_sortitions.rb +7 -0
  66. data/db/migrate/20171220164744_add_additional_info_to_sortitions.rb +7 -0
  67. data/db/migrate/20180102100101_add_author_to_sortitions.rb +7 -0
  68. data/db/migrate/20180102101128_add_reference_to_sortitions.rb +8 -0
  69. data/db/migrate/20180103082645_add_title_to_sortition.rb +7 -0
  70. data/db/migrate/20180103123055_drop_decidim_category_id_from_sortitions.rb +13 -0
  71. data/db/migrate/20180103160301_add_cancel_data_to_sortition.rb +9 -0
  72. data/db/migrate/20180104143054_make_sortition_reference_nullable.rb +7 -0
  73. data/db/migrate/20180104145344_add_candidate_proposals_to_sortitions.rb +7 -0
  74. data/db/migrate/20180108132729_rename_sortitions_table.rb +7 -0
  75. data/lib/decidim/sortitions.rb +24 -0
  76. data/lib/decidim/sortitions/admin.rb +10 -0
  77. data/lib/decidim/sortitions/admin_engine.rb +35 -0
  78. data/lib/decidim/sortitions/engine.rb +26 -0
  79. data/lib/decidim/sortitions/feature.rb +43 -0
  80. data/lib/decidim/sortitions/test/factories.rb +37 -0
  81. data/lib/decidim/sortitions/version.rb +7 -0
  82. metadata +208 -0
@@ -0,0 +1,18 @@
1
+ <div class="filters-controls hide-for-mediumlarge">
2
+ <button data-open="filter-box" class="filters-controls__trigger">
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>
9
+ <div class="reveal__header">
10
+ <h3 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">&times;</span>
13
+ </button>
14
+ </div>
15
+ <div class="filters">
16
+ <%= render partial: "filters" %>
17
+ </div>
18
+ </div>
@@ -0,0 +1,29 @@
1
+ <div class="card card--action card--list">
2
+ <% resources.each do |sortition| %>
3
+ <div class="card--list__item">
4
+ <div class="card--list__text">
5
+ <%= link_to resource_locator(sortition).path do %>
6
+ <%= icon "proposals", class: "card--list__icon", remove_icon_class: true %>
7
+ <% end %>
8
+ <div>
9
+ <%= link_to resource_locator(sortition).path, class: "card__link" do %>
10
+ <h5 class="card--list__heading"><%= translated_attribute sortition.title %></h5>
11
+ <% end %>
12
+ <div class="author">
13
+ <span class="author__avatar">
14
+ <%= image_tag sortition.author.avatar_url %>
15
+ </span>
16
+ <span class="author__name">
17
+ <%= sortition.author.name %>
18
+ </span>
19
+ </div>
20
+ </div>
21
+ </div>
22
+ <div class="card--list__data">
23
+ <span class="card--list__data__number">
24
+ <%= sortition.selected_proposals.size %>
25
+ </span> <%= t(".selected_proposals", count: proposal.selected_proposals.size) %>
26
+ </div>
27
+ </div>
28
+ <% end %>
29
+ </div>
@@ -0,0 +1,24 @@
1
+ <div class="column">
2
+ <article class="card card--proposal">
3
+ <div class="card__content">
4
+ <div class="card__header">
5
+ <%= link_to proposal_path(proposal) do %>
6
+ <h5 class="card__title"><%= proposal.title %></h5>
7
+ <% end %>
8
+ <div class="card__author author-data author-data--small">
9
+ <%= render partial: "decidim/shared/author_reference", locals: { author: present(proposal).author } %>
10
+ </div>
11
+ <%= feature_reference(proposal, class: "reference--text-left") %>
12
+ </div>
13
+ <%= render partial: "proposal_badge", locals: { proposal: proposal } %>
14
+ <p><%= truncate(proposal.body, length: 100) %></p>
15
+ <%= render partial: "decidim/shared/tags", locals: { resource: proposal, tags_class_extra: "tags--proposal" } %>
16
+ </div>
17
+ <div class="card__footer">
18
+ <div class="card__support">
19
+ <div class="card__support__data"></div>
20
+ <%= link_to t(".view_proposal"), proposal_path(proposal), class: "card__button button small secondary" %>
21
+ </div>
22
+ </div>
23
+ </article>
24
+ </div>
@@ -0,0 +1,3 @@
1
+ <% if proposal.answered? %>
2
+ <span class="<%= proposal_state_badge_css_class(proposal.state) %> label proposal-status"><%= humanize_proposal_state proposal.state %></span>
3
+ <% end %>
@@ -0,0 +1,8 @@
1
+ <div id="sortition-<%= sortition.id %>-results-count" class="card__support__data">
2
+ <span class="extra__suport-number">
3
+ <%= sortition.selected_proposals.count %>
4
+ </span>
5
+ <span class="extra__suport-text">
6
+ <%= t('.count', count: sortition.selected_proposals.count) %>
7
+ </span>
8
+ </div>
@@ -0,0 +1,25 @@
1
+ <div class="column">
2
+ <article class="card card--sortition">
3
+ <div class="card__content">
4
+ <div class="card__header">
5
+ <%= link_to sortition do%>
6
+ <h5 class="card__title"><%= translated_attribute sortition.title %></h5>
7
+ <% end %>
8
+ <div class="card__author author-data author-data--small">
9
+ <%= render partial: "sortition_author", locals: { sortition: sortition } %>
10
+ </div>
11
+ <%= feature_reference(sortition, class: "reference--text-left") %>
12
+ </div>
13
+ <p class="card__desc">
14
+ <%= decidim_sanitize html_truncate(translated_attribute(sortition.additional_info), length: 100, separator: '...') %>
15
+ </p>
16
+ <%= render partial: "tags", locals: { sortition: sortition } %>
17
+ </div>
18
+ <div class="card__footer">
19
+ <div class="card__support">
20
+ <div class="card__support__data"><%=t '.selected_proposals', count: sortition.selected_proposals.count %></div>
21
+ <%= link_to t(".view_sortition"), sortition, class: "card__button button small secondary" %>
22
+ </div>
23
+ </div>
24
+ </article>
25
+ </div>
@@ -0,0 +1,17 @@
1
+ <div class="author-data__main">
2
+ <div class="author author--inline">
3
+ <span class="author__avatar author__avatar--small">
4
+ <%= image_tag sortition.author.avatar_url %>
5
+ </span>
6
+ <span class="author__name">
7
+ <% if sortition.author&.deleted? %>
8
+ <span class="label label--small label--basic">
9
+ <%= t('.deleted') %>
10
+ </span>
11
+ <% else %>
12
+ <%= sortition.author.name %>
13
+ <% end %>
14
+ </span>
15
+ <%= l sortition.created_at, format: :decidim_short %>
16
+ </div>
17
+ </div>
@@ -0,0 +1,17 @@
1
+ <div class="author-data__main">
2
+ <div class="author author--inline">
3
+ <span class="author__avatar author__avatar--small">
4
+ <%= image_tag sortition.cancelled_by_user.avatar_url %>
5
+ </span>
6
+ <span class="author__name">
7
+ <% if sortition.cancelled_by_user&.deleted? %>
8
+ <span class="label label--small label--basic">
9
+ <%= t('.deleted') %>
10
+ </span>
11
+ <% else %>
12
+ <%= sortition.cancelled_by_user.name %>
13
+ <% end %>
14
+ </span>
15
+ <%= l sortition.cancelled_on, format: :decidim_short %>
16
+ </div>
17
+ </div>
@@ -0,0 +1,14 @@
1
+ <div class="collection-sort-controls row small-up-1 medium-up-3 card-grid">
2
+ <div class="column">
3
+ <%= order_selector available_orders, i18n_scope: "decidim.sortitions.sortitions.orders" %>
4
+ </div>
5
+
6
+ <div class="column">
7
+ <%= render partial: "decidim/shared/results_per_page" %>
8
+ </div>
9
+ </div>
10
+
11
+ <div class="row small-up-1 medium-up-2 card-grid">
12
+ <%= render @sortitions %>
13
+ </div>
14
+ <%= decidim_paginate @sortitions, random_seed: random_seed %>
@@ -0,0 +1 @@
1
+ <%= t(".count", count: @sortitions.total_count) %>
@@ -0,0 +1,16 @@
1
+
2
+ <ul class="tags tags--sortition" >
3
+ <li>
4
+ <%= link_to t("filters.active", scope: "decidim.sortitions.sortitions"),
5
+ sortitions_path(filter: { state: "active" }) unless sortition.cancelled? %>
6
+
7
+ <%= link_to t("filters.cancelled", scope: "decidim.sortitions.sortitions"),
8
+ sortitions_path(filter: { state: "cancelled" }) if sortition.cancelled? %>
9
+ </li>
10
+
11
+ <% if sortition.category.present? %>
12
+ <li>
13
+ <%= link_to translated_attribute(sortition.category.name), sortitions_path(filter: { category_id: [sortition.category.id] }) %>
14
+ </li>
15
+ <% end %>
16
+ </ul>
@@ -0,0 +1,21 @@
1
+ <div class="row columns">
2
+ <div class="title-action">
3
+ <h2 id="sortitions-count" class="title-action__title section-heading">
4
+ <%= render partial: "sortitions_count" %>
5
+ </h2>
6
+ </div>
7
+ </div>
8
+ <div class="row">
9
+ <div class="columns mediumlarge-4 large-3">
10
+ <%= render partial: "filters_small_view" %>
11
+ <div class="card card--secondary show-for-mediumlarge" >
12
+ <%= render partial: "filters" %>
13
+ </div>
14
+ </div>
15
+ <div id="sortitions" class="columns mediumlarge-8 large-9">
16
+ <%= render partial: "sortitions" %>
17
+ </div>
18
+ </div>
19
+
20
+ <%= javascript_include_tag("decidim/filters") %>
21
+ <%= javascript_include_tag "decidim/orders" %>
@@ -0,0 +1,10 @@
1
+ var $sortitions = $('#sortitions');
2
+ var $sortitionsCount = $('#sortitions-count');
3
+ var $orderFilterInput = $('.order_filter');
4
+
5
+ $sortitions.html('<%= j(render partial: "sortitions").strip.html_safe %>');
6
+ $sortitionsCount.html('<%= j(render partial: "sortitions_count").strip.html_safe %>');
7
+ $orderFilterInput.val('<%= order %>');
8
+
9
+ var $dropdownMenu = $('.dropdown.menu', $sortitions);
10
+ $dropdownMenu.foundation();
@@ -0,0 +1,134 @@
1
+ <% add_decidim_meta_tags({
2
+ description: sanitize(translated_attribute(sortition.additional_info)),
3
+ title: translated_attribute(sortition.title),
4
+ url: sortition_url(sortition.to_param)
5
+ }) %>
6
+
7
+ <div class="row column">
8
+ <div class="callout success">
9
+ <p><%=t ".introduction", reference: sortition.id, target_items: sortition.target_items %></p>
10
+ </div>
11
+ </div>
12
+
13
+ <div class="row column view-header">
14
+ <h2 class="heading2"><%= translated_attribute sortition.title %></h2>
15
+ <div class="author-data">
16
+ <%= render partial: "sortition_author", locals: { sortition: sortition } %>
17
+ </div>
18
+ </div>
19
+
20
+ <div class="row">
21
+ <div class="columns section view-side mediumlarge-4 mediumlarge-push-8 large-3 large-push-9">
22
+ <div class="card extra">
23
+ <div class="card__content">
24
+ <%= render partial: "results_count", locals: { sortition: sortition } %>
25
+ </div>
26
+ </div>
27
+ <%= feature_reference(sortition) %>
28
+ <%= render partial: "decidim/shared/share_modal" %>
29
+ <%= embed_modal_for sortition_sortition_widget_url(sortition, format: :js) %>
30
+ </div>
31
+
32
+ <div class="columns mediumlarge-8 mediumlarge-pull-4">
33
+ <div class="section">
34
+ <%= sanitize translated_attribute sortition.additional_info %>
35
+ </div>
36
+ </div>
37
+ </div>
38
+
39
+ <% if sortition.cancelled? %>
40
+ <div class="row column">
41
+ <div class="title-action">
42
+ <h2 class="title-action__title section-heading"><%=t ".cancelled" %></h2>
43
+ </div>
44
+ <div class=section>
45
+ <div class="author-data">
46
+ <%= render partial: "sortition_cancel_author", locals: { sortition: sortition } %>
47
+ </div>
48
+ </div>
49
+ <div class=section>
50
+ <%= sanitize translated_attribute sortition.cancel_reason %>
51
+ </div>
52
+ </div>
53
+ <% end %>
54
+
55
+ <div class="row column">
56
+ <div class="title-action">
57
+ <h2 class="title-action__title section-heading"><%=t ".witnesses" %></h2>
58
+ </div>
59
+ <div class="section">
60
+ <%= sanitize translated_attribute sortition.witnesses %>
61
+ </div>
62
+ </div>
63
+
64
+ <% if sortition&.proposals %>
65
+ <div class="row columns">
66
+ <div class="title-action">
67
+ <h2 id="proposals-count" class="title-action__title section-heading">
68
+ <%=t ".proposals_selected_by_sortition" %>
69
+ </h2>
70
+ </div>
71
+ <div class="row">
72
+ <div id="proposals" class="columns mediumlarge-12 large-12">
73
+ <div class="row small-up-1 medium-up-2 card-grid">
74
+ <%= render partial: "proposal", collection: sortition.proposals %>
75
+ </div>
76
+ </div>
77
+ </div>
78
+ </div>
79
+ <% end %>
80
+
81
+ <div class="row column">
82
+ <section class="extended" id="sortition-details">
83
+ <div class="row column">
84
+ <h4 class="section-heading"><%=t ".sortition_reproducibility_details" %></h4>
85
+ </div>
86
+ <div class=row>
87
+ <div class="columns small-centered mediumlarge-12 large-12 sortition-details">
88
+ <div class="sortition-details-item">
89
+ <span class="sortition-details-title sortition-details-text"><%=t ".dice_result" %></span>
90
+ <span class=sortition-details-text><%= sortition.dice %></span>
91
+ </div>
92
+
93
+ <div class="sortition-details-item">
94
+ <span class="sortition-details-title sortition-details-text"><%=t ".time_seed" %></span>
95
+ <span class=sortition-details-text><%= sortition.request_timestamp.to_i %></span>
96
+ </div>
97
+
98
+ <div class="sortition-details-item">
99
+ <span class="sortition-details-title sortition-details-text"><%=t ".mathematical_result" %></span>
100
+ <span class=sortition-details-text><%= sortition.seed %></span>
101
+ </div>
102
+
103
+ <div class="sortition-details-item">
104
+ <span class="sortition-details-title sortition-details-text"><%=t ".algorithm" %></span><br>
105
+ <span class=sortition-details-text>
106
+ <%= link_to Decidim::Sortitions.sortition_algorithm,
107
+ Decidim::Sortitions.sortition_algorithm,
108
+ target: "_blank",
109
+ title: t(".algorithm") %>
110
+ </span>
111
+ </div>
112
+ </div>
113
+ </div>
114
+ </section>
115
+
116
+ <section class=extended>
117
+ <div class="row column">
118
+ <h4 class="section-heading"><%=t ".candidate_proposal_ids" %></h4>
119
+ </div>
120
+ <div class="row columns">
121
+ <%=t ".candidate_proposals_info", category_label: sortition_category_label(sortition) %>:
122
+ </div>
123
+ <div class=row>
124
+ <div class="columns small-centered mediumlarge-12 large-12">
125
+ <%= sortition_proposal_candidate_ids sortition %>
126
+ </div>
127
+ </div>
128
+ </section>
129
+ </div>
130
+
131
+ <%= comments_for sortition %>
132
+
133
+ <%= javascript_include_tag "decidim/sortitions/social_share" %>
134
+ <%= stylesheet_link_tag "decidim/sortitions/social_share" %>
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ SocialShareButton.configure do |config|
4
+ config.allow_sites = %w(twitter facebook google_plus)
5
+ end
@@ -0,0 +1,155 @@
1
+ ---
2
+ ca:
3
+ activemodel:
4
+ attributes:
5
+ sortition:
6
+ title: Títol
7
+ dice: Resultat de la tirada de dau (tira un dau de 6 cares (o busca una altra manera aleatòria de generar un número de l'1 al 6) i introdueix aquí, davant de testimoni el nombre resultant, això contribueix a la qualitat i garanties de l'aleatorietat del resultat
8
+ target_items: Nombre de propostes a seleccionar (indica el nombre de propostes que vols que siguin seleccionades mitjançant sorteig del conjunt de propostes que has escollit prèviament)
9
+ decidim_category_id: Categories del conjunt de propostes en les que vols aplicar el sorteig
10
+ decidim_proposals_feature_id: Conjunt de propostes
11
+ witnesses: Testimonis
12
+ additional_info: Informació adicional
13
+ pages:
14
+ home:
15
+ statistics:
16
+ sortitions_count: Sortejos
17
+ decidim:
18
+ events:
19
+ sortitions:
20
+ sortition_created:
21
+ email_intro: "S'ha afegit el sorteig \"%{resource_title}\" a \"%{participatory_space_title}\" que estàs seguint."
22
+ email_outro: "Has rebut aquesta notificació perquè estàs seguint \"%{participatory_space_title}\". Pots deixar de seguir-ho seguint l'enllaç anterior."
23
+ email_subject: Nou sorteig afegit a %{participatory_space_title}
24
+ notification_title: "S'ha afegit el sorteig <a href=\"%{resource_path}\">%{resource_title}</a> a %{participatory_space_title}"
25
+ participatory_processes:
26
+ statistics:
27
+ sortitions_count: Sortejos
28
+ features:
29
+ sortitions:
30
+ name: Sortejos
31
+ settings:
32
+ global:
33
+ comments_enabled: Comentaris habilitats
34
+ sortitions:
35
+ admin:
36
+ actions:
37
+ new: Nou
38
+ edit: Edita
39
+ show: Detalls del sorteig
40
+ destroy: Cancela el sorteig
41
+ models:
42
+ sortition:
43
+ name:
44
+ one: Sorteig
45
+ other: Sortejos
46
+ fields:
47
+ id: Identificador
48
+ title: Títol
49
+ reference: Referència
50
+ dice: Dau
51
+ request_timestamp: Hora del sorteig
52
+ target_items: Elements a seleccionar
53
+ seed: Llavor
54
+ category: Categoria
55
+ decidim_proposals_feature: Funcionalitat de propostes
56
+ similar_count: Sortejos similars
57
+ created_at: Data de creació
58
+ sortitions:
59
+ index:
60
+ title: Sortejos
61
+ linked_sortitions:
62
+ selected_proposals:
63
+ one: proposta seleccionada
64
+ other: propostes seleccionades
65
+ new:
66
+ title: Nou sorteig
67
+ create: Crea
68
+ confirm: En prémer el botó Decidim gravarà el la data i hora (amb precisió de segons) i juntament amb la tirada de daus, aquesta informació servirà per generar una selecció aleatòria. L'acció serà irreversible, un cop premut el botó el resultat d'aquest sorteig es publicarà, juntament les dades introduïdes en aquest formulari i no es podran modificar, si us plau revisa a consciència el contingut
69
+ edit:
70
+ title: Actualitza la informació sobre el
71
+ update: Actualitzar
72
+ form:
73
+ title: Nou sorteig de propostes
74
+ all_categories: Totes les categories
75
+ select_proposal_feature: Selecciona el conjunt de propostes
76
+ create:
77
+ success: Sorteig creat correctament.
78
+ error: S'ha produït un error creant el sorteig.
79
+ update:
80
+ success: Sorteig actualitzat correctament.
81
+ error: S'ha produït un error al actualitzar el sorteig.
82
+ show:
83
+ selected_proposals: Propostes seleccionades per sorteig
84
+ confirm_destroy:
85
+ title: Cancelació del sorteig
86
+ confirm_destroy: Segur que vols cancelar aquest sorteig?
87
+ destroy: Cancela el sorteig
88
+ destroy:
89
+ success: El sorteig s'ha cancel·lat correctament
90
+ error: No s'ha pogut cancel·lar el sorteig
91
+ sortitions:
92
+ count:
93
+ proposals_count:
94
+ one: 1 proposta
95
+ other: "%{count} propostes"
96
+ author:
97
+ deleted: Usuari eliminat
98
+ verified_user_group: Organització verificada
99
+ proposal:
100
+ view_proposal: Veure proposta
101
+ sortitions_count:
102
+ count:
103
+ one: 1 sorteig
104
+ other: "%{count} sortejos"
105
+ results_count:
106
+ count:
107
+ one: proposta seleccionada
108
+ other: propostes seleccionades
109
+ show:
110
+ witnesses: Testimonis
111
+ cancelled: Sorteig cancel·lat
112
+ sortition_reproducibility_details: Detalls de reproducibilitat del sorteig
113
+ proposals_selected_by_sortition: Propostes sel·leccionades per sorteig
114
+ introduction: >
115
+ Aquesta pàgina conté els resultats del sorteig %{reference}. Per mitjà d'aquest sorteig,
116
+ %{target_items} propostes s'han seleccionat a l'atzar i amb la mateixa distribució de
117
+ probabilitat del conjunt de propostes que es mostren a continuació. Juntament amb els resultats,
118
+ La informació que es mostra en aquesta pàgina proporciona tota la informació requerida per maximitzar les
119
+ garanties i reproduir els resultats. La clau per a la qualitat d'aquesta classificació és la doble
120
+ aleatorietat proporcionada pel llançament d'un dau (verificat per testimonis) i el temps exacte de
121
+ la classificació que proporciona l'entrada per a un algorisme que genera una selecció aleatòria.
122
+ La sembra de temps per a la classificació és tan precisa (segons) que és impossible de controlar pels
123
+ humans proporcionant així una doble entrada "incontrolable" per garantir un resultat just.
124
+ dice_result: (1) Resultat del dau
125
+ time_seed: (2) Llavor temporal
126
+ mathematical_result: Resultat (1) x (2)
127
+ algorithm: Codi de l'algoritme del sorteig
128
+ candidate_proposal_ids: Ordre de propostes del sorteig i identificadors
129
+ candidate_proposals_info: >
130
+ El sorteig es va dur a terme entre les següents propostes (%{category_label}), amb els següents
131
+ identificadors (en negreta les propostes seleccionades)
132
+ any_category: de totes les categories
133
+ category: De la categoria %{category}
134
+ filters:
135
+ search: Cerca
136
+ category: Categoria
137
+ category_prompt: Selecciona una categoria
138
+ state: Estat
139
+ all: Tots
140
+ active: Actius
141
+ cancelled: Cancelats
142
+ filters_small_view:
143
+ close_modal: Tancar finestra
144
+ filter: Filtra
145
+ filter_by: Filtrar per
146
+ unfold: Desplegar
147
+ orders:
148
+ label: 'Ordenar sortejos per:'
149
+ random: Aleatori
150
+ recent: Recent
151
+ sortition:
152
+ selected_proposals:
153
+ one: 1 proposta seleccionada.
154
+ other: "%{count} propostes seleccionades"
155
+ view_sortition: Vore sorteig