decidim-core 0.0.7 → 0.0.8.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 +4 -4
- data/app/assets/config/decidim_core_manifest.js +3 -0
- data/app/assets/javascripts/decidim.js.es6 +8 -0
- data/app/assets/javascripts/decidim/widget.js.es6 +14 -0
- data/app/assets/stylesheets/decidim/extras/_embed.scss +11 -0
- data/app/assets/stylesheets/decidim/modules/_datepicker.scss +224 -0
- data/app/assets/stylesheets/decidim/modules/_modules.scss +1 -0
- data/app/assets/stylesheets/decidim/modules/_share.scss +1 -1
- data/app/assets/stylesheets/decidim/widget.scss.erb +25 -0
- data/app/controllers/decidim/participatory_process_widgets_controller.rb +17 -0
- data/app/controllers/decidim/participatory_processes_controller.rb +1 -0
- data/app/controllers/decidim/widgets_controller.rb +30 -0
- data/app/helpers/decidim/widget_urls_helper.rb +10 -0
- data/app/views/decidim/participatory_process_widgets/show.html.erb +28 -0
- data/app/views/decidim/participatory_processes/show.html.erb +1 -0
- data/app/views/decidim/shared/_embed_modal.html.erb +19 -0
- data/app/views/decidim/widgets/show.js.erb +22 -0
- data/app/views/layouts/decidim/_application.html.erb +1 -1
- data/app/views/layouts/decidim/widget.html.erb +17 -0
- data/config/locales/ca.yml +9 -1
- data/config/locales/en.yml +9 -1
- data/config/locales/es.yml +9 -1
- data/config/locales/eu.yml +0 -2
- data/config/locales/fi.yml +0 -2
- data/config/locales/fr.yml +9 -0
- data/config/locales/nl.yml +373 -0
- data/config/routes.rb +1 -0
- data/db/migrate/20170404132616_change_steps_end_and_start_date_to_date.rb +6 -0
- data/lib/decidim/core/version.rb +2 -2
- data/lib/decidim/form_builder.rb +33 -0
- data/lib/decidim/has_reference.rb +3 -2
- data/lib/tasks/decidim_tasks.rake +0 -5
- data/vendor/assets/javascripts/datepicker-locales/foundation-datepicker.ca.js +17 -0
- data/vendor/assets/javascripts/datepicker-locales/foundation-datepicker.es.js +14 -0
- data/vendor/assets/javascripts/datepicker-locales/foundation-datepicker.eu.js +15 -0
- data/vendor/assets/javascripts/datepicker-locales/foundation-datepicker.fi.js +14 -0
- data/vendor/assets/javascripts/form_datepicker.js.es6 +30 -0
- data/vendor/assets/javascripts/foundation-datepicker.js +1417 -0
- metadata +32 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3668d75cf2fd8dbfe3c88982c0a7aa8593a75cb4
|
4
|
+
data.tar.gz: acc926a4029093ffe432873e2098a147873dc478
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a06d36ae7005c0e40ead54624635638e0c5f21a07049a68ab35f050d79fe96dc4be797c18065cc6abef48422feb397aa745549a0bb2c9d5964b3a1cd1d85a43
|
7
|
+
data.tar.gz: 75ebe0193d06c570996545553101d291d77727e4c53bd5944d8845214cd7f68f66a9907e83c1ffe9961ae2d65c9722e0c062cb37c9b9c13da1655230cd99bf74
|
@@ -2,13 +2,21 @@
|
|
2
2
|
// = require modernizr
|
3
3
|
// = require svg4everybody.min
|
4
4
|
// = require morphdom
|
5
|
+
// = require moment.min
|
6
|
+
// = require foundation-datepicker
|
7
|
+
// = require form_datepicker
|
5
8
|
// = require decidim/history
|
6
9
|
// = require decidim/append_elements
|
7
10
|
// = require decidim/user_registrations
|
8
11
|
|
9
12
|
/* globals svg4everybody */
|
10
13
|
|
14
|
+
window.Decidim = window.Decidim || {};
|
15
|
+
|
11
16
|
$(() => {
|
12
17
|
$(document).foundation();
|
13
18
|
svg4everybody();
|
19
|
+
if (window.Decidim.formDatePicker) {
|
20
|
+
window.Decidim.formDatePicker();
|
21
|
+
}
|
14
22
|
});
|
@@ -0,0 +1,14 @@
|
|
1
|
+
window.addEventListener("message", (event) => {
|
2
|
+
if (event.data.type === "GET_HEIGHT") {
|
3
|
+
const body = document.body;
|
4
|
+
const html = document.documentElement;
|
5
|
+
const height = Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);
|
6
|
+
|
7
|
+
parent.postMessage({ type: "SET_HEIGHT", height: height }, "*");
|
8
|
+
}
|
9
|
+
});
|
10
|
+
|
11
|
+
$(() => {
|
12
|
+
// Set target blank for all widget links.
|
13
|
+
$('a').attr('target', '_blank');
|
14
|
+
});
|
@@ -0,0 +1,224 @@
|
|
1
|
+
$calendar-bg-color: $white;
|
2
|
+
$calendar-border: 1px solid rgba(0, 0, 0, 0.1);
|
3
|
+
$calendar-border-color: rgba(0, 0, 0, 0.1);
|
4
|
+
$calendar-active-color: $primary-color;
|
5
|
+
$calendar-bg-hover: $light-gray;
|
6
|
+
$calendar-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
7
|
+
$calendar-color-old: $medium-gray;
|
8
|
+
$calendar-color-disabled: $light-gray;
|
9
|
+
$calendar-radius: $global-radius;
|
10
|
+
$calendar-font-size: $global-font-size * .9;
|
11
|
+
|
12
|
+
.datepicker {
|
13
|
+
display: none;
|
14
|
+
position: absolute;
|
15
|
+
padding: 4px;
|
16
|
+
margin-top: 1px;
|
17
|
+
direction: ltr;
|
18
|
+
}
|
19
|
+
|
20
|
+
.datepicker.dropdown-menu {
|
21
|
+
position: absolute;
|
22
|
+
top: 100%;
|
23
|
+
left: 0;
|
24
|
+
z-index: 1000;
|
25
|
+
float: left;
|
26
|
+
display: none;
|
27
|
+
min-width: 160px;
|
28
|
+
list-style: none;
|
29
|
+
background-color: $calendar-bg-color;
|
30
|
+
border: $calendar-border;
|
31
|
+
border-radius: $calendar-radius;
|
32
|
+
box-shadow: $calendar-shadow;
|
33
|
+
background-clip: padding-box;
|
34
|
+
font-size: $calendar-font-size;
|
35
|
+
line-height: 18px;
|
36
|
+
}
|
37
|
+
|
38
|
+
.datepicker.dropdown-menu th {
|
39
|
+
padding: 4px 5px;
|
40
|
+
}
|
41
|
+
|
42
|
+
.datepicker.dropdown-menu td {
|
43
|
+
padding: 6px 9px;
|
44
|
+
}
|
45
|
+
|
46
|
+
.datepicker table {
|
47
|
+
border: 0;
|
48
|
+
margin: 0;
|
49
|
+
width: auto;
|
50
|
+
}
|
51
|
+
|
52
|
+
.datepicker table tr td span {
|
53
|
+
display: block;
|
54
|
+
width: 23%;
|
55
|
+
height: 54px;
|
56
|
+
line-height: 54px;
|
57
|
+
float: left;
|
58
|
+
margin: 1%;
|
59
|
+
cursor: pointer;
|
60
|
+
}
|
61
|
+
|
62
|
+
.datepicker td {
|
63
|
+
text-align: center;
|
64
|
+
width: 20px;
|
65
|
+
height: 20px;
|
66
|
+
border: 0;
|
67
|
+
font-size: $calendar-font-size;
|
68
|
+
padding: 4px 8px;
|
69
|
+
background: $calendar-bg-color;
|
70
|
+
cursor: pointer;
|
71
|
+
}
|
72
|
+
|
73
|
+
.datepicker td.active.day,
|
74
|
+
.datepicker td.active.year {
|
75
|
+
background: $calendar-active-color;
|
76
|
+
}
|
77
|
+
|
78
|
+
.datepicker .day:hover,
|
79
|
+
.datepicker .date-switch:hover,
|
80
|
+
.datepicker .prev:hover,
|
81
|
+
.datepicker .next:hover,
|
82
|
+
.datepicker .month:hover,
|
83
|
+
.datepicker .year:hover{
|
84
|
+
background-color: $calendar-bg-hover;
|
85
|
+
&.active{
|
86
|
+
background: $calendar-active-color;
|
87
|
+
}
|
88
|
+
}
|
89
|
+
|
90
|
+
|
91
|
+
.datepicker td.new,
|
92
|
+
.datepicker td.old {
|
93
|
+
color: $calendar-color-old;
|
94
|
+
}
|
95
|
+
|
96
|
+
.datepicker td span.active {
|
97
|
+
background: $calendar-active-color;
|
98
|
+
}
|
99
|
+
|
100
|
+
.datepicker td.day.disabled {
|
101
|
+
color: $calendar-color-disabled;
|
102
|
+
}
|
103
|
+
|
104
|
+
.datepicker td span.month.disabled,
|
105
|
+
.datepicker td span.year.disabled {
|
106
|
+
color: $calendar-color-disabled;
|
107
|
+
}
|
108
|
+
|
109
|
+
.datepicker th {
|
110
|
+
text-align: center;
|
111
|
+
width: 20px;
|
112
|
+
height: 20px;
|
113
|
+
border: 0;
|
114
|
+
font-size: $calendar-font-size;
|
115
|
+
padding: 4px 8px;
|
116
|
+
background: $calendar-bg-color;
|
117
|
+
cursor: pointer;
|
118
|
+
}
|
119
|
+
|
120
|
+
.datepicker th.active.day,
|
121
|
+
.datepicker th.active.year {
|
122
|
+
background: $calendar-active-color;
|
123
|
+
}
|
124
|
+
|
125
|
+
.datepicker th.date-switch {
|
126
|
+
width: 145px;
|
127
|
+
}
|
128
|
+
|
129
|
+
.datepicker th span.active {
|
130
|
+
background: $calendar-active-color;
|
131
|
+
}
|
132
|
+
|
133
|
+
.datepicker .cw {
|
134
|
+
font-size: 10px;
|
135
|
+
width: 12px;
|
136
|
+
padding: 0 2px 0 5px;
|
137
|
+
vertical-align: middle;
|
138
|
+
}
|
139
|
+
|
140
|
+
.datepicker.days div.datepicker-days {
|
141
|
+
display: block;
|
142
|
+
}
|
143
|
+
|
144
|
+
.datepicker.months div.datepicker-months {
|
145
|
+
display: block;
|
146
|
+
}
|
147
|
+
|
148
|
+
.datepicker.years div.datepicker-years {
|
149
|
+
display: block;
|
150
|
+
}
|
151
|
+
|
152
|
+
.datepicker thead tr:first-child th {
|
153
|
+
cursor: pointer;
|
154
|
+
}
|
155
|
+
|
156
|
+
.datepicker thead tr:first-child th.cw {
|
157
|
+
cursor: default;
|
158
|
+
background-color: transparent;
|
159
|
+
}
|
160
|
+
|
161
|
+
.datepicker tfoot tr:first-child th {
|
162
|
+
cursor: pointer;
|
163
|
+
}
|
164
|
+
|
165
|
+
.datepicker-inline {
|
166
|
+
width: 220px;
|
167
|
+
}
|
168
|
+
|
169
|
+
.datepicker-rtl {
|
170
|
+
direction: rtl;
|
171
|
+
}
|
172
|
+
|
173
|
+
.datepicker-rtl table tr td span {
|
174
|
+
float: right;
|
175
|
+
}
|
176
|
+
|
177
|
+
.datepicker-dropdown {
|
178
|
+
top: 0;
|
179
|
+
left: 0;
|
180
|
+
}
|
181
|
+
|
182
|
+
.datepicker-dropdown:before {
|
183
|
+
content: '';
|
184
|
+
display: inline-block;
|
185
|
+
border-left: 7px solid transparent;
|
186
|
+
border-right: 7px solid transparent;
|
187
|
+
border-bottom: 7px solid #ccc;
|
188
|
+
border-bottom-color: $calendar-border-color;
|
189
|
+
position: absolute;
|
190
|
+
top: -7px;
|
191
|
+
left: 6px;
|
192
|
+
}
|
193
|
+
|
194
|
+
.datepicker-dropdown:after {
|
195
|
+
content: '';
|
196
|
+
display: inline-block;
|
197
|
+
border-left: 6px solid transparent;
|
198
|
+
border-right: 6px solid transparent;
|
199
|
+
border-bottom: 6px solid $calendar-bg-color;
|
200
|
+
position: absolute;
|
201
|
+
top: -6px;
|
202
|
+
left: 7px;
|
203
|
+
}
|
204
|
+
|
205
|
+
.datepicker > div,
|
206
|
+
.datepicker-dropdown::after,
|
207
|
+
.datepicker-dropdown::before {
|
208
|
+
display: none;
|
209
|
+
}
|
210
|
+
|
211
|
+
.datepicker-close {
|
212
|
+
position: absolute;
|
213
|
+
top: -30px;
|
214
|
+
right: 0;
|
215
|
+
width: 15px;
|
216
|
+
height: 30px;
|
217
|
+
padding: 0;
|
218
|
+
display: none;
|
219
|
+
}
|
220
|
+
|
221
|
+
.table-striped .datepicker table tr td,
|
222
|
+
.table-striped .datepicker table tr th {
|
223
|
+
background-color: transparent;
|
224
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
@import "variables";
|
2
|
+
@import "utils/*";
|
3
|
+
|
4
|
+
@import "foundation";
|
5
|
+
@include foundation-everything;
|
6
|
+
|
7
|
+
@import "modules/typography";
|
8
|
+
@import "modules/cards";
|
9
|
+
@import "modules/author-avatar";
|
10
|
+
@import "modules/tags";
|
11
|
+
|
12
|
+
<% Decidim.feature_manifests.map(&:stylesheet).compact.each do |stylesheet| %>
|
13
|
+
@import "<%= stylesheet %>";
|
14
|
+
<% end %>
|
15
|
+
|
16
|
+
body, .column, .card {
|
17
|
+
padding: 0;
|
18
|
+
margin: 0;
|
19
|
+
}
|
20
|
+
|
21
|
+
.organization {
|
22
|
+
margin: 15px 5px 0 5px;
|
23
|
+
text-align: right;
|
24
|
+
}
|
25
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
class ParticipatoryProcessWidgetsController < Decidim::WidgetsController
|
5
|
+
helper_method :model
|
6
|
+
|
7
|
+
private
|
8
|
+
|
9
|
+
def model
|
10
|
+
@model ||= ParticipatoryProcess.find(params[:participatory_process_id])
|
11
|
+
end
|
12
|
+
|
13
|
+
def iframe_url
|
14
|
+
@iframe_url ||= participatory_process_participatory_process_widget_url(model)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
class WidgetsController < Decidim::ApplicationController
|
5
|
+
skip_authorization_check only: :show
|
6
|
+
skip_before_filter :verify_authenticity_token
|
7
|
+
after_action :allow_iframe, only: :show
|
8
|
+
|
9
|
+
layout 'decidim/widget'
|
10
|
+
|
11
|
+
helper_method :iframe_url
|
12
|
+
|
13
|
+
def show
|
14
|
+
respond_to do |format|
|
15
|
+
format.js { render "decidim/widgets/show" }
|
16
|
+
format.html
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def iframe_url
|
23
|
+
raise NotImplementedError
|
24
|
+
end
|
25
|
+
|
26
|
+
def allow_iframe
|
27
|
+
response.headers.delete "X-Frame-Options"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Decidim
|
3
|
+
module WidgetUrlsHelper
|
4
|
+
def embed_modal_for(url)
|
5
|
+
js_embed_code = "#{content_tag(:script, '', src: url)}"
|
6
|
+
embed_code = "#{content_tag(:noscript, content_tag(:iframe, '', src: url.gsub(".js", ".html"), frameborder: 0, scrolling: "vertical"))}"
|
7
|
+
render partial: "decidim/shared/embed_modal", locals: { js_embed_code: js_embed_code, embed_code: embed_code }
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<div class="column">
|
2
|
+
<article class="card card--process">
|
3
|
+
<%= link_to participatory_process_path(model), class: "card__link" do %>
|
4
|
+
<div class="card__image-top"
|
5
|
+
style="background-image:url(<%= model.hero_image.url %>)"></div>
|
6
|
+
<% end %>
|
7
|
+
<div class="card__content">
|
8
|
+
<%= link_to participatory_process_path(model), class: "card__link" do %>
|
9
|
+
<h4 class="card__title"><%= translated_attribute model.title %></h4>
|
10
|
+
<% end %>
|
11
|
+
<p class="card__desc"><%== html_truncate(translated_attribute(model.short_description), length: 630, separator: '...') %></p>
|
12
|
+
</div>
|
13
|
+
<div class="card__footer">
|
14
|
+
<div class="card__support">
|
15
|
+
<% if model.active_step %>
|
16
|
+
<span class="card--process__small">
|
17
|
+
<%= t(".active_step", scope: "layouts") %>
|
18
|
+
<strong><%= translated_attribute model.active_step.title %></strong>
|
19
|
+
</span>
|
20
|
+
<% end %>
|
21
|
+
<span class="card--process__small"></span>
|
22
|
+
<%= link_to participatory_process_path(model), class: "card__button button small" do %>
|
23
|
+
<%= t(".take_part", scope: "layouts") %>
|
24
|
+
<% end %>
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
</article>
|
28
|
+
</div>
|
@@ -73,6 +73,7 @@
|
|
73
73
|
<div class="row">
|
74
74
|
<div class="columns section view-side mediumlarge-4 mediumlarge-push-8 large-3 large-push-9">
|
75
75
|
<%= render partial: "decidim/shared/share_modal" %>
|
76
|
+
<%= embed_modal_for participatory_process_participatory_process_widget_url(current_participatory_process, format: :js) %>
|
76
77
|
</div>
|
77
78
|
</div>
|
78
79
|
|