decidim-calendar 0.13.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE-AGPLv3.txt +661 -0
- data/README.md +9 -0
- data/Rakefile +43 -0
- data/app/assets/config/decidim_calendar_manifest.css +2 -0
- data/app/assets/config/decidim_calendar_manifest.js +2 -0
- data/app/assets/images/decidim/calendar/icon.svg +51 -0
- data/app/assets/javascripts/decidim/calendar/calendar.js.es6 +6 -0
- data/app/assets/javascripts/decidim/calendar/gantt.js.es6 +1 -0
- data/app/assets/stylesheets/decidim/calendar/calendar.scss +102 -0
- data/app/assets/stylesheets/decidim/calendar/gantt.scss +1 -0
- data/app/commands/decidim/calendar/admin/create_external_event.rb +38 -0
- data/app/commands/decidim/calendar/admin/destroy_external_event.rb +27 -0
- data/app/commands/decidim/calendar/admin/update_external_event.rb +43 -0
- data/app/controllers/decidim/calendar/admin/application_controller.rb +23 -0
- data/app/controllers/decidim/calendar/admin/external_events_controller.rb +84 -0
- data/app/controllers/decidim/calendar/application_controller.rb +21 -0
- data/app/controllers/decidim/calendar/calendar_controller.rb +33 -0
- data/app/forms/decidim/calendar/admin/external_event_form.rb +21 -0
- data/app/helpers/decidim/calendar/calendar_helper.rb +57 -0
- data/app/models/decidim/calendar/application_record.rb +9 -0
- data/app/models/decidim/calendar/event.rb +25 -0
- data/app/models/decidim/calendar/external_event.rb +18 -0
- data/app/permissions/decidim/calendar/admin/permissions.rb +22 -0
- data/app/presenters/decidim/calendar/event_presenter.rb +104 -0
- data/app/queries/decidim/calendar/organization_calendar.rb +15 -0
- data/app/services/decidim/calendar/event_to_ical.rb +27 -0
- data/app/services/decidim/calendar/general_calendar.rb +13 -0
- data/app/services/decidim/calendar/meeting_to_event.rb +8 -0
- data/app/services/decidim/meetings/calendar/base_calendar.rb +61 -0
- data/app/views/decidim/calendar/admin/external_events/_form.html.erb +22 -0
- data/app/views/decidim/calendar/admin/external_events/edit.html.erb +6 -0
- data/app/views/decidim/calendar/admin/external_events/index.html.erb +66 -0
- data/app/views/decidim/calendar/admin/external_events/new.html.erb +6 -0
- data/app/views/decidim/calendar/calendar/gantt.html.erb +22 -0
- data/app/views/decidim/calendar/calendar/index.html.erb +63 -0
- data/app/views/decidim/shared/_extended_navigation_bar.html.erb +51 -0
- data/app/views/layouts/_calendar_navigation.html.erb +18 -0
- data/app/views/layouts/calendar.html.erb +4 -0
- data/config/locales/ca.yml +38 -0
- data/config/locales/de.yml +38 -0
- data/config/locales/en.yml +48 -0
- data/config/locales/es.yml +38 -0
- data/config/locales/fi.yml +38 -0
- data/config/locales/fr.yml +38 -0
- data/config/locales/it.yml +38 -0
- data/config/locales/pl.yml +38 -0
- data/config/locales/pt.yml +38 -0
- data/config/locales/ro.yml +38 -0
- data/config/locales/ru.yml +38 -0
- data/config/locales/sv.yml +38 -0
- data/config/locales/tr.yml +38 -0
- data/config/locales/uk.yml +38 -0
- data/db/migrate/20190312132654_create_decidim_calendar_external_events.rb +18 -0
- data/lib/decidim/calendar.rb +11 -0
- data/lib/decidim/calendar/admin.rb +9 -0
- data/lib/decidim/calendar/admin_engine.rb +30 -0
- data/lib/decidim/calendar/engine.rb +34 -0
- data/lib/decidim/calendar/participatory_space.rb +20 -0
- data/lib/decidim/calendar/test/factories.rb +12 -0
- data/lib/decidim/calendar/version.rb +10 -0
- data/vendor/assets/javascripts/frappe-gantt/frappe-gantt.css +119 -0
- data/vendor/assets/javascripts/frappe-gantt/frappe-gantt.js +1883 -0
- data/vendor/assets/javascripts/fullcalendar/bootstrap/main.css +33 -0
- data/vendor/assets/javascripts/fullcalendar/bootstrap/main.js +90 -0
- data/vendor/assets/javascripts/fullcalendar/bootstrap/main.min.css +5 -0
- data/vendor/assets/javascripts/fullcalendar/bootstrap/main.min.js +20 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales-all.js +1353 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales-all.min.js +6 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/af.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/ar-dz.js +31 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/ar-kw.js +31 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/ar-ly.js +31 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/ar-ma.js +31 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/ar-sa.js +31 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/ar-tn.js +31 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/ar.js +31 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/bg.js +31 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/bs.js +32 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/ca.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/cs.js +32 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/da.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/de.js +33 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/el.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/en-au.js +17 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/en-gb.js +17 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/en-nz.js +17 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/es-us.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/es.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/et.js +32 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/eu.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/fa.js +33 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/fi.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/fr-ca.js +27 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/fr-ch.js +31 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/fr.js +31 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/gl.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/he.js +27 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/hi.js +32 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/hr.js +32 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/hu.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/id.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/is.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/it.js +32 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/ja.js +28 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/ka.js +32 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/kk.js +32 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/ko.js +26 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/lb.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/lt.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/lv.js +32 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/mk.js +28 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/ms.js +32 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/nb.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/nl.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/nn.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/pl.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/pt-br.js +28 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/pt.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/ro.js +32 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/ru.js +32 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/sk.js +32 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/sl.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/sq.js +32 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/sr-cyrl.js +32 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/sr.js +32 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/sv.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/th.js +25 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/tr.js +30 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/uk.js +32 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/vi.js +32 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/zh-cn.js +33 -0
- data/vendor/assets/javascripts/fullcalendar/core/locales/zh-tw.js +26 -0
- data/vendor/assets/javascripts/fullcalendar/core/main.css +900 -0
- data/vendor/assets/javascripts/fullcalendar/core/main.js +8791 -0
- data/vendor/assets/javascripts/fullcalendar/core/main.min.css +5 -0
- data/vendor/assets/javascripts/fullcalendar/core/main.min.js +9 -0
- data/vendor/assets/javascripts/fullcalendar/daygrid/main.css +69 -0
- data/vendor/assets/javascripts/fullcalendar/daygrid/main.js +1630 -0
- data/vendor/assets/javascripts/fullcalendar/daygrid/main.min.css +5 -0
- data/vendor/assets/javascripts/fullcalendar/daygrid/main.min.js +20 -0
- data/vendor/assets/javascripts/fullcalendar/google-calendar/main.js +169 -0
- data/vendor/assets/javascripts/fullcalendar/google-calendar/main.min.js +20 -0
- data/vendor/assets/javascripts/fullcalendar/interaction/main.js +2155 -0
- data/vendor/assets/javascripts/fullcalendar/interaction/main.min.js +21 -0
- data/vendor/assets/javascripts/fullcalendar/list/main.css +101 -0
- data/vendor/assets/javascripts/fullcalendar/list/main.js +341 -0
- data/vendor/assets/javascripts/fullcalendar/list/main.min.css +5 -0
- data/vendor/assets/javascripts/fullcalendar/list/main.min.js +20 -0
- data/vendor/assets/javascripts/fullcalendar/luxon/main.js +162 -0
- data/vendor/assets/javascripts/fullcalendar/luxon/main.min.js +20 -0
- data/vendor/assets/javascripts/fullcalendar/moment-timezone/main.js +64 -0
- data/vendor/assets/javascripts/fullcalendar/moment-timezone/main.min.js +20 -0
- data/vendor/assets/javascripts/fullcalendar/moment/main.js +103 -0
- data/vendor/assets/javascripts/fullcalendar/moment/main.min.js +6 -0
- data/vendor/assets/javascripts/fullcalendar/rrule/main.js +127 -0
- data/vendor/assets/javascripts/fullcalendar/rrule/main.min.js +20 -0
- data/vendor/assets/javascripts/fullcalendar/timegrid/main.css +266 -0
- data/vendor/assets/javascripts/fullcalendar/timegrid/main.js +1339 -0
- data/vendor/assets/javascripts/fullcalendar/timegrid/main.min.css +5 -0
- data/vendor/assets/javascripts/fullcalendar/timegrid/main.min.js +20 -0
- metadata +247 -0
data/README.md
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
# Decidim::Calendar
|
2
|
+
|
3
|
+
[![Build Status](https://img.shields.io/circleci/project/github/alabs/decidim-module-calendar/master.svg)](https://circleci.com/gh/alabs/decidim-module-calendar)
|
4
|
+
[![Maintainability](https://img.shields.io/codeclimate/maintainability/alabs/decidim-module-calendar.svg)](https://codeclimate.com/github/alabs/decidim-module-calendar/maintainability)
|
5
|
+
|
6
|
+
|
7
|
+
Decidim calendar is a module to generate a global participatory space calendar.
|
8
|
+
|
9
|
+
## This plugin is a work in progress
|
data/Rakefile
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "decidim/dev/common_rake"
|
4
|
+
|
5
|
+
def install_module(path)
|
6
|
+
Dir.chdir(path) do
|
7
|
+
system("bundle exec rake decidim_calendar:install:migrations")
|
8
|
+
system("bundle exec rake db:migrate")
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def seed_db(path)
|
13
|
+
Dir.chdir(path) do
|
14
|
+
system("bundle exec rake db:seed")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
desc "Generates a dummy app for testing"
|
19
|
+
task test_app: "decidim:generate_external_test_app" do
|
20
|
+
ENV["RAILS_ENV"] = "test"
|
21
|
+
install_module("spec/decidim_dummy_app")
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "Generates a development app"
|
25
|
+
task :development_app do
|
26
|
+
Bundler.with_original_env do
|
27
|
+
generate_decidim_app(
|
28
|
+
"development_app",
|
29
|
+
"--app_name",
|
30
|
+
"#{base_app_name}_development_app",
|
31
|
+
"--path",
|
32
|
+
"..",
|
33
|
+
"--recreate_db",
|
34
|
+
"--demo"
|
35
|
+
)
|
36
|
+
end
|
37
|
+
|
38
|
+
install_module("development_app")
|
39
|
+
seed_db("development_app")
|
40
|
+
end
|
41
|
+
|
42
|
+
# Run both by default
|
43
|
+
task default: [:spec]
|
@@ -0,0 +1,51 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<svg
|
3
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
4
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
5
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
6
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
7
|
+
xmlns="http://www.w3.org/2000/svg"
|
8
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
9
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
10
|
+
viewBox="0 0 34 34"
|
11
|
+
version="1.1"
|
12
|
+
id="svg4"
|
13
|
+
sodipodi:docname="icon.svg"
|
14
|
+
inkscape:version="0.92.4 5da689c313, 2019-01-14">
|
15
|
+
<metadata
|
16
|
+
id="metadata10">
|
17
|
+
<rdf:RDF>
|
18
|
+
<cc:Work
|
19
|
+
rdf:about="">
|
20
|
+
<dc:format>image/svg+xml</dc:format>
|
21
|
+
<dc:type
|
22
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
23
|
+
</cc:Work>
|
24
|
+
</rdf:RDF>
|
25
|
+
</metadata>
|
26
|
+
<defs
|
27
|
+
id="defs8" />
|
28
|
+
<sodipodi:namedview
|
29
|
+
pagecolor="#ffffff"
|
30
|
+
bordercolor="#666666"
|
31
|
+
borderopacity="1"
|
32
|
+
objecttolerance="10"
|
33
|
+
gridtolerance="10"
|
34
|
+
guidetolerance="10"
|
35
|
+
inkscape:pageopacity="0"
|
36
|
+
inkscape:pageshadow="2"
|
37
|
+
inkscape:window-width="1920"
|
38
|
+
inkscape:window-height="1052"
|
39
|
+
id="namedview6"
|
40
|
+
showgrid="false"
|
41
|
+
inkscape:zoom="13.882353"
|
42
|
+
inkscape:cx="19.027219"
|
43
|
+
inkscape:cy="20.490702"
|
44
|
+
inkscape:window-x="0"
|
45
|
+
inkscape:window-y="0"
|
46
|
+
inkscape:window-maximized="1"
|
47
|
+
inkscape:current-layer="svg4" />
|
48
|
+
<path
|
49
|
+
d="M 17 0 C 7.611 0 0 7.611 0 17 C 0 26.389 7.611 34 17 34 C 26.389 34 34 26.389 34 17 C 34 7.611 26.389 0 17 0 z M 17 1.8886719 C 25.346 1.8886719 32.111328 8.654 32.111328 17 C 32.111328 25.346 25.346 32.111328 17 32.111328 C 8.654 32.111328 1.8886719 25.346 1.8886719 17 C 1.8886719 8.654 8.654 1.8886719 17 1.8886719 z M 12.347656 6.8535156 C 11.934331 6.8815015 11.536929 6.9927662 11.210938 7.2695312 C 10.413062 7.8674067 10.562634 8.9010202 10.552734 9.7714844 L 9.4511719 9.7714844 C 8.6273438 9.6400193 7.7581435 10.21145 7.6953125 11.076172 C 7.6793525 15.953392 7.69206 20.831494 7.6875 25.708984 C 7.6741436 26.419214 8.2720209 27.071406 8.9765625 27.134766 C 14.166659 27.150666 19.35846 27.137978 24.548828 27.142578 C 25.372656 27.274043 26.241857 26.702613 26.304688 25.837891 C 26.320588 21.461754 26.308 17.083438 26.3125 12.707031 C 26.253771 11.944947 26.47721 11.111678 26.070312 10.421875 C 25.578516 9.6036585 24.577998 9.7891474 23.777344 9.7714844 C 23.277993 9.9256258 23.487716 9.3711628 23.447266 9.0664062 C 23.558677 8.168512 23.094223 7.1940266 22.177734 6.9335938 C 21.393694 6.8276904 20.458623 6.7160013 19.806641 7.2695312 C 19.008766 7.8674069 19.158337 8.9010204 19.148438 9.7714844 L 15.181641 9.7714844 C 14.68229 9.9256258 14.892012 9.3711628 14.851562 9.0664062 C 14.962974 8.168512 14.498521 7.1940259 13.582031 6.9335938 C 13.190011 6.8806421 12.760982 6.8255298 12.347656 6.8535156 z M 12.777344 8.3203125 C 13.020493 8.3247777 13.250887 8.3868867 13.394531 8.5546875 C 13.451161 9.3895936 13.401969 10.233903 13.417969 11.072266 C 13.357211 11.474552 13.581911 12.020983 13.203125 12.287109 C 12.795175 12.279985 12.084638 12.502237 11.986328 11.953125 C 11.98633 11.326793 11.986328 10.700551 11.986328 10.074219 C 12.030508 9.5316944 11.885859 8.9436187 12.083984 8.4375 C 12.278203 8.3698618 12.534194 8.3158473 12.777344 8.3203125 z M 21.373047 8.3203125 C 21.616197 8.3247775 21.846589 8.3868862 21.990234 8.5546875 C 22.046864 9.3895936 21.997672 10.233903 22.013672 11.072266 C 21.952914 11.474552 22.177614 12.020983 21.798828 12.287109 C 21.390878 12.279985 20.680341 12.502237 20.582031 11.953125 L 20.582031 10.074219 C 20.626211 9.5316944 20.481562 8.9436187 20.679688 8.4375 C 20.873907 8.3698623 21.129897 8.3158475 21.373047 8.3203125 z M 9.1210938 14.119141 L 24.878906 14.119141 L 24.878906 25.708984 L 9.1210938 25.708984 L 9.1210938 14.119141 z "
|
50
|
+
id="path2" />
|
51
|
+
</svg>
|
@@ -0,0 +1 @@
|
|
1
|
+
// = require frappe-gantt/frappe-gantt
|
@@ -0,0 +1,102 @@
|
|
1
|
+
// = require "fullcalendar/core/main"
|
2
|
+
// = require "fullcalendar/daygrid/main"
|
3
|
+
@import "foundation";
|
4
|
+
|
5
|
+
#calendar{
|
6
|
+
.fc-title{
|
7
|
+
margin-left: 5px;
|
8
|
+
}
|
9
|
+
|
10
|
+
.fc-scroller {
|
11
|
+
overflow-x: hidden !important;
|
12
|
+
overflow-y: hidden !important;
|
13
|
+
}
|
14
|
+
|
15
|
+
.fc-day-number{
|
16
|
+
display: block;
|
17
|
+
float: none;
|
18
|
+
text-align: center;
|
19
|
+
}
|
20
|
+
|
21
|
+
.fc-day-top{
|
22
|
+
background-color: #ededed;
|
23
|
+
}
|
24
|
+
|
25
|
+
.fc-today{
|
26
|
+
background-color: #fcf8e3 !important;
|
27
|
+
}
|
28
|
+
|
29
|
+
td{
|
30
|
+
border-color: #ccc !important;
|
31
|
+
}
|
32
|
+
|
33
|
+
.fc-today{
|
34
|
+
background-color: #F0F3B6;
|
35
|
+
}
|
36
|
+
|
37
|
+
.fc-content-skeleton td{
|
38
|
+
background-color: #fff;
|
39
|
+
}
|
40
|
+
|
41
|
+
}
|
42
|
+
// when "Decidim::ParticipatoryProcessStep"
|
43
|
+
// "#238ff7"
|
44
|
+
// when "Decidim::Meetings::Meeting"
|
45
|
+
// "#fabc6c"
|
46
|
+
// when "Decidim::Calendar::ExternalEvent"
|
47
|
+
// "#5fbd4c"
|
48
|
+
// when "Decidim::Debates::Debate"
|
49
|
+
// "#d87537"
|
50
|
+
// when "Decidim::Consultation"
|
51
|
+
// "#A854BD"
|
52
|
+
// end
|
53
|
+
|
54
|
+
$meeting: #fabc6c !default;
|
55
|
+
$debate: #d87537 !default;
|
56
|
+
$consultation: #A854BD !default;
|
57
|
+
$external_event: #5fbd4c !default;
|
58
|
+
$participatory_step: #238ff7 !default;
|
59
|
+
|
60
|
+
.calendar-filters{
|
61
|
+
.meeting{
|
62
|
+
@include button-style($meeting, $meeting, white);
|
63
|
+
&.hollow{
|
64
|
+
color: $meeting;
|
65
|
+
border-color: $meeting;
|
66
|
+
@include button-hollow;
|
67
|
+
}
|
68
|
+
}
|
69
|
+
.debate{
|
70
|
+
@include button-style($debate, $debate, white);
|
71
|
+
&.hollow{
|
72
|
+
color: $debate;
|
73
|
+
border-color: $debate;
|
74
|
+
@include button-hollow;
|
75
|
+
}
|
76
|
+
|
77
|
+
}
|
78
|
+
.consultation{
|
79
|
+
@include button-style($consultation, $consultation, white);
|
80
|
+
&.hollow{
|
81
|
+
color: $consultation;
|
82
|
+
border-color: $consultation;
|
83
|
+
@include button-hollow;
|
84
|
+
}
|
85
|
+
}
|
86
|
+
.external_event{
|
87
|
+
@include button-style($external_event, $external_event, white);
|
88
|
+
&.hollow{
|
89
|
+
color: $external_event;
|
90
|
+
border-color: $external_event;
|
91
|
+
@include button-hollow;
|
92
|
+
}
|
93
|
+
}
|
94
|
+
.participatory_step{
|
95
|
+
@include button-style($participatory_step, $participatory_step, white);
|
96
|
+
&.hollow{
|
97
|
+
color: $participatory_step;
|
98
|
+
border-color: $participatory_step;
|
99
|
+
@include button-hollow;
|
100
|
+
}
|
101
|
+
}
|
102
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
// = require frappe-gantt/frappe-gantt
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Calendar
|
5
|
+
module Admin
|
6
|
+
class CreateExternalEvent < Rectify::Command
|
7
|
+
def initialize(form)
|
8
|
+
@form = form
|
9
|
+
end
|
10
|
+
|
11
|
+
def call
|
12
|
+
return broadcast(:invalid) if form.invalid?
|
13
|
+
|
14
|
+
transaction do
|
15
|
+
create_event
|
16
|
+
end
|
17
|
+
|
18
|
+
broadcast(:ok, @event)
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
attr_reader :form
|
24
|
+
|
25
|
+
def create_event
|
26
|
+
@event = ExternalEvent.create(
|
27
|
+
organization: form.current_organization,
|
28
|
+
title: form.title,
|
29
|
+
start_at: form.start_at,
|
30
|
+
end_at: form.end_at,
|
31
|
+
url: form.url,
|
32
|
+
author: form.current_user
|
33
|
+
)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Calendar
|
5
|
+
module Admin
|
6
|
+
class DestroyExternalEvent < Rectify::Command
|
7
|
+
def initialize(event)
|
8
|
+
@event = event
|
9
|
+
end
|
10
|
+
|
11
|
+
def call
|
12
|
+
destroy_external_event
|
13
|
+
|
14
|
+
broadcast(:ok)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
attr_reader :event
|
20
|
+
|
21
|
+
def destroy_external_event
|
22
|
+
event.destroy!
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Calendar
|
5
|
+
module Admin
|
6
|
+
class UpdateExternalEvent < Rectify::Command
|
7
|
+
def initialize(external_event, form)
|
8
|
+
@external_event = external_event
|
9
|
+
@form = form
|
10
|
+
end
|
11
|
+
|
12
|
+
def call
|
13
|
+
return broadcast(:invalid) if form.invalid?
|
14
|
+
|
15
|
+
transaction do
|
16
|
+
update_external_event!
|
17
|
+
end
|
18
|
+
|
19
|
+
broadcast(:ok, @event)
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
attr_reader :external_event, :form
|
25
|
+
|
26
|
+
def update_external_event!
|
27
|
+
external_event.update! attributes
|
28
|
+
end
|
29
|
+
|
30
|
+
def attributes
|
31
|
+
{
|
32
|
+
title: form.title,
|
33
|
+
start_at: form.start_at,
|
34
|
+
end_at: form.end_at,
|
35
|
+
url: form.url,
|
36
|
+
organization: current_organization,
|
37
|
+
author: current_user
|
38
|
+
}
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Calendar
|
5
|
+
module Admin
|
6
|
+
class ApplicationController < Decidim::Admin::ApplicationController
|
7
|
+
helper_method :events, :event
|
8
|
+
|
9
|
+
def events
|
10
|
+
@events ||= Calendar::ExternalEvent.where(organization: current_organization).page(params[:page]).per(15)
|
11
|
+
end
|
12
|
+
|
13
|
+
def event
|
14
|
+
@event ||= events.find(params[:id])
|
15
|
+
end
|
16
|
+
|
17
|
+
def permission_class_chain
|
18
|
+
[Decidim::Calendar::Admin::Permissions] + super
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Calendar
|
5
|
+
module Admin
|
6
|
+
class ExternalEventsController < Admin::ApplicationController
|
7
|
+
helper_method :current_external_event, :external_events
|
8
|
+
|
9
|
+
def index
|
10
|
+
enforce_permission_to :read, :external_event
|
11
|
+
end
|
12
|
+
|
13
|
+
def new
|
14
|
+
enforce_permission_to :create, :external_event
|
15
|
+
@form = external_event_form.instance
|
16
|
+
end
|
17
|
+
|
18
|
+
def create
|
19
|
+
enforce_permission_to :create, :external_event
|
20
|
+
@form = external_event_form.from_params(params)
|
21
|
+
|
22
|
+
CreateExternalEvent.call(@form) do
|
23
|
+
on(:ok) do
|
24
|
+
flash[:notice] = I18n.t("create.success", scope: "decidim.calendar.admin.external_events")
|
25
|
+
redirect_to external_events_path
|
26
|
+
end
|
27
|
+
|
28
|
+
on(:invalid) do
|
29
|
+
flash.now[:alert] = I18n.t("create.invalid", scope: "decidim.calendar.admin.external_events")
|
30
|
+
render action: "new"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def edit
|
36
|
+
enforce_permission_to :update, :external_event, external_event: current_external_event
|
37
|
+
@form = external_event_form.from_model(current_external_event)
|
38
|
+
end
|
39
|
+
|
40
|
+
def update
|
41
|
+
enforce_permission_to :update, :external_event, external_event: current_external_event
|
42
|
+
@form = external_event_form
|
43
|
+
.from_params(params, external_event_id: current_external_event.id)
|
44
|
+
|
45
|
+
UpdateExternalEvent.call(current_external_event, @form) do
|
46
|
+
on(:ok) do
|
47
|
+
flash[:notice] = I18n.t("update.success", scope: "decidim.calendar.admin.external_events")
|
48
|
+
redirect_to external_events_path
|
49
|
+
end
|
50
|
+
|
51
|
+
on(:invalid) do
|
52
|
+
flash.now[:alert] = I18n.t("update.invalid", scope: "decidim.calendar.admin.external_events")
|
53
|
+
render :edit
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def destroy
|
59
|
+
enforce_permission_to :destroy, :external_event, external_event: current_external_event
|
60
|
+
DestroyExternalEvent.call(current_external_event) do
|
61
|
+
on(:ok) do
|
62
|
+
flash[:notice] = I18n.t("destroy.success", scope: "decidim.calendar.admin.external_events")
|
63
|
+
redirect_to external_events_path
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
private
|
69
|
+
|
70
|
+
def external_event_form
|
71
|
+
form(ExternalEventForm)
|
72
|
+
end
|
73
|
+
|
74
|
+
def external_events
|
75
|
+
@external_events ||= Calendar::ExternalEvent.where(organization: current_organization).page(params[:page]).per(15)
|
76
|
+
end
|
77
|
+
|
78
|
+
def current_external_event
|
79
|
+
@current_external_event ||= external_events.find(params[:id])
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|