decidim-calendar 0.13.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (162) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE-AGPLv3.txt +661 -0
  3. data/README.md +9 -0
  4. data/Rakefile +43 -0
  5. data/app/assets/config/decidim_calendar_manifest.css +2 -0
  6. data/app/assets/config/decidim_calendar_manifest.js +2 -0
  7. data/app/assets/images/decidim/calendar/icon.svg +51 -0
  8. data/app/assets/javascripts/decidim/calendar/calendar.js.es6 +6 -0
  9. data/app/assets/javascripts/decidim/calendar/gantt.js.es6 +1 -0
  10. data/app/assets/stylesheets/decidim/calendar/calendar.scss +102 -0
  11. data/app/assets/stylesheets/decidim/calendar/gantt.scss +1 -0
  12. data/app/commands/decidim/calendar/admin/create_external_event.rb +38 -0
  13. data/app/commands/decidim/calendar/admin/destroy_external_event.rb +27 -0
  14. data/app/commands/decidim/calendar/admin/update_external_event.rb +43 -0
  15. data/app/controllers/decidim/calendar/admin/application_controller.rb +23 -0
  16. data/app/controllers/decidim/calendar/admin/external_events_controller.rb +84 -0
  17. data/app/controllers/decidim/calendar/application_controller.rb +21 -0
  18. data/app/controllers/decidim/calendar/calendar_controller.rb +33 -0
  19. data/app/forms/decidim/calendar/admin/external_event_form.rb +21 -0
  20. data/app/helpers/decidim/calendar/calendar_helper.rb +57 -0
  21. data/app/models/decidim/calendar/application_record.rb +9 -0
  22. data/app/models/decidim/calendar/event.rb +25 -0
  23. data/app/models/decidim/calendar/external_event.rb +18 -0
  24. data/app/permissions/decidim/calendar/admin/permissions.rb +22 -0
  25. data/app/presenters/decidim/calendar/event_presenter.rb +104 -0
  26. data/app/queries/decidim/calendar/organization_calendar.rb +15 -0
  27. data/app/services/decidim/calendar/event_to_ical.rb +27 -0
  28. data/app/services/decidim/calendar/general_calendar.rb +13 -0
  29. data/app/services/decidim/calendar/meeting_to_event.rb +8 -0
  30. data/app/services/decidim/meetings/calendar/base_calendar.rb +61 -0
  31. data/app/views/decidim/calendar/admin/external_events/_form.html.erb +22 -0
  32. data/app/views/decidim/calendar/admin/external_events/edit.html.erb +6 -0
  33. data/app/views/decidim/calendar/admin/external_events/index.html.erb +66 -0
  34. data/app/views/decidim/calendar/admin/external_events/new.html.erb +6 -0
  35. data/app/views/decidim/calendar/calendar/gantt.html.erb +22 -0
  36. data/app/views/decidim/calendar/calendar/index.html.erb +63 -0
  37. data/app/views/decidim/shared/_extended_navigation_bar.html.erb +51 -0
  38. data/app/views/layouts/_calendar_navigation.html.erb +18 -0
  39. data/app/views/layouts/calendar.html.erb +4 -0
  40. data/config/locales/ca.yml +38 -0
  41. data/config/locales/de.yml +38 -0
  42. data/config/locales/en.yml +48 -0
  43. data/config/locales/es.yml +38 -0
  44. data/config/locales/fi.yml +38 -0
  45. data/config/locales/fr.yml +38 -0
  46. data/config/locales/it.yml +38 -0
  47. data/config/locales/pl.yml +38 -0
  48. data/config/locales/pt.yml +38 -0
  49. data/config/locales/ro.yml +38 -0
  50. data/config/locales/ru.yml +38 -0
  51. data/config/locales/sv.yml +38 -0
  52. data/config/locales/tr.yml +38 -0
  53. data/config/locales/uk.yml +38 -0
  54. data/db/migrate/20190312132654_create_decidim_calendar_external_events.rb +18 -0
  55. data/lib/decidim/calendar.rb +11 -0
  56. data/lib/decidim/calendar/admin.rb +9 -0
  57. data/lib/decidim/calendar/admin_engine.rb +30 -0
  58. data/lib/decidim/calendar/engine.rb +34 -0
  59. data/lib/decidim/calendar/participatory_space.rb +20 -0
  60. data/lib/decidim/calendar/test/factories.rb +12 -0
  61. data/lib/decidim/calendar/version.rb +10 -0
  62. data/vendor/assets/javascripts/frappe-gantt/frappe-gantt.css +119 -0
  63. data/vendor/assets/javascripts/frappe-gantt/frappe-gantt.js +1883 -0
  64. data/vendor/assets/javascripts/fullcalendar/bootstrap/main.css +33 -0
  65. data/vendor/assets/javascripts/fullcalendar/bootstrap/main.js +90 -0
  66. data/vendor/assets/javascripts/fullcalendar/bootstrap/main.min.css +5 -0
  67. data/vendor/assets/javascripts/fullcalendar/bootstrap/main.min.js +20 -0
  68. data/vendor/assets/javascripts/fullcalendar/core/locales-all.js +1353 -0
  69. data/vendor/assets/javascripts/fullcalendar/core/locales-all.min.js +6 -0
  70. data/vendor/assets/javascripts/fullcalendar/core/locales/af.js +30 -0
  71. data/vendor/assets/javascripts/fullcalendar/core/locales/ar-dz.js +31 -0
  72. data/vendor/assets/javascripts/fullcalendar/core/locales/ar-kw.js +31 -0
  73. data/vendor/assets/javascripts/fullcalendar/core/locales/ar-ly.js +31 -0
  74. data/vendor/assets/javascripts/fullcalendar/core/locales/ar-ma.js +31 -0
  75. data/vendor/assets/javascripts/fullcalendar/core/locales/ar-sa.js +31 -0
  76. data/vendor/assets/javascripts/fullcalendar/core/locales/ar-tn.js +31 -0
  77. data/vendor/assets/javascripts/fullcalendar/core/locales/ar.js +31 -0
  78. data/vendor/assets/javascripts/fullcalendar/core/locales/bg.js +31 -0
  79. data/vendor/assets/javascripts/fullcalendar/core/locales/bs.js +32 -0
  80. data/vendor/assets/javascripts/fullcalendar/core/locales/ca.js +30 -0
  81. data/vendor/assets/javascripts/fullcalendar/core/locales/cs.js +32 -0
  82. data/vendor/assets/javascripts/fullcalendar/core/locales/da.js +30 -0
  83. data/vendor/assets/javascripts/fullcalendar/core/locales/de.js +33 -0
  84. data/vendor/assets/javascripts/fullcalendar/core/locales/el.js +30 -0
  85. data/vendor/assets/javascripts/fullcalendar/core/locales/en-au.js +17 -0
  86. data/vendor/assets/javascripts/fullcalendar/core/locales/en-gb.js +17 -0
  87. data/vendor/assets/javascripts/fullcalendar/core/locales/en-nz.js +17 -0
  88. data/vendor/assets/javascripts/fullcalendar/core/locales/es-us.js +30 -0
  89. data/vendor/assets/javascripts/fullcalendar/core/locales/es.js +30 -0
  90. data/vendor/assets/javascripts/fullcalendar/core/locales/et.js +32 -0
  91. data/vendor/assets/javascripts/fullcalendar/core/locales/eu.js +30 -0
  92. data/vendor/assets/javascripts/fullcalendar/core/locales/fa.js +33 -0
  93. data/vendor/assets/javascripts/fullcalendar/core/locales/fi.js +30 -0
  94. data/vendor/assets/javascripts/fullcalendar/core/locales/fr-ca.js +27 -0
  95. data/vendor/assets/javascripts/fullcalendar/core/locales/fr-ch.js +31 -0
  96. data/vendor/assets/javascripts/fullcalendar/core/locales/fr.js +31 -0
  97. data/vendor/assets/javascripts/fullcalendar/core/locales/gl.js +30 -0
  98. data/vendor/assets/javascripts/fullcalendar/core/locales/he.js +27 -0
  99. data/vendor/assets/javascripts/fullcalendar/core/locales/hi.js +32 -0
  100. data/vendor/assets/javascripts/fullcalendar/core/locales/hr.js +32 -0
  101. data/vendor/assets/javascripts/fullcalendar/core/locales/hu.js +30 -0
  102. data/vendor/assets/javascripts/fullcalendar/core/locales/id.js +30 -0
  103. data/vendor/assets/javascripts/fullcalendar/core/locales/is.js +30 -0
  104. data/vendor/assets/javascripts/fullcalendar/core/locales/it.js +32 -0
  105. data/vendor/assets/javascripts/fullcalendar/core/locales/ja.js +28 -0
  106. data/vendor/assets/javascripts/fullcalendar/core/locales/ka.js +32 -0
  107. data/vendor/assets/javascripts/fullcalendar/core/locales/kk.js +32 -0
  108. data/vendor/assets/javascripts/fullcalendar/core/locales/ko.js +26 -0
  109. data/vendor/assets/javascripts/fullcalendar/core/locales/lb.js +30 -0
  110. data/vendor/assets/javascripts/fullcalendar/core/locales/lt.js +30 -0
  111. data/vendor/assets/javascripts/fullcalendar/core/locales/lv.js +32 -0
  112. data/vendor/assets/javascripts/fullcalendar/core/locales/mk.js +28 -0
  113. data/vendor/assets/javascripts/fullcalendar/core/locales/ms.js +32 -0
  114. data/vendor/assets/javascripts/fullcalendar/core/locales/nb.js +30 -0
  115. data/vendor/assets/javascripts/fullcalendar/core/locales/nl.js +30 -0
  116. data/vendor/assets/javascripts/fullcalendar/core/locales/nn.js +30 -0
  117. data/vendor/assets/javascripts/fullcalendar/core/locales/pl.js +30 -0
  118. data/vendor/assets/javascripts/fullcalendar/core/locales/pt-br.js +28 -0
  119. data/vendor/assets/javascripts/fullcalendar/core/locales/pt.js +30 -0
  120. data/vendor/assets/javascripts/fullcalendar/core/locales/ro.js +32 -0
  121. data/vendor/assets/javascripts/fullcalendar/core/locales/ru.js +32 -0
  122. data/vendor/assets/javascripts/fullcalendar/core/locales/sk.js +32 -0
  123. data/vendor/assets/javascripts/fullcalendar/core/locales/sl.js +30 -0
  124. data/vendor/assets/javascripts/fullcalendar/core/locales/sq.js +32 -0
  125. data/vendor/assets/javascripts/fullcalendar/core/locales/sr-cyrl.js +32 -0
  126. data/vendor/assets/javascripts/fullcalendar/core/locales/sr.js +32 -0
  127. data/vendor/assets/javascripts/fullcalendar/core/locales/sv.js +30 -0
  128. data/vendor/assets/javascripts/fullcalendar/core/locales/th.js +25 -0
  129. data/vendor/assets/javascripts/fullcalendar/core/locales/tr.js +30 -0
  130. data/vendor/assets/javascripts/fullcalendar/core/locales/uk.js +32 -0
  131. data/vendor/assets/javascripts/fullcalendar/core/locales/vi.js +32 -0
  132. data/vendor/assets/javascripts/fullcalendar/core/locales/zh-cn.js +33 -0
  133. data/vendor/assets/javascripts/fullcalendar/core/locales/zh-tw.js +26 -0
  134. data/vendor/assets/javascripts/fullcalendar/core/main.css +900 -0
  135. data/vendor/assets/javascripts/fullcalendar/core/main.js +8791 -0
  136. data/vendor/assets/javascripts/fullcalendar/core/main.min.css +5 -0
  137. data/vendor/assets/javascripts/fullcalendar/core/main.min.js +9 -0
  138. data/vendor/assets/javascripts/fullcalendar/daygrid/main.css +69 -0
  139. data/vendor/assets/javascripts/fullcalendar/daygrid/main.js +1630 -0
  140. data/vendor/assets/javascripts/fullcalendar/daygrid/main.min.css +5 -0
  141. data/vendor/assets/javascripts/fullcalendar/daygrid/main.min.js +20 -0
  142. data/vendor/assets/javascripts/fullcalendar/google-calendar/main.js +169 -0
  143. data/vendor/assets/javascripts/fullcalendar/google-calendar/main.min.js +20 -0
  144. data/vendor/assets/javascripts/fullcalendar/interaction/main.js +2155 -0
  145. data/vendor/assets/javascripts/fullcalendar/interaction/main.min.js +21 -0
  146. data/vendor/assets/javascripts/fullcalendar/list/main.css +101 -0
  147. data/vendor/assets/javascripts/fullcalendar/list/main.js +341 -0
  148. data/vendor/assets/javascripts/fullcalendar/list/main.min.css +5 -0
  149. data/vendor/assets/javascripts/fullcalendar/list/main.min.js +20 -0
  150. data/vendor/assets/javascripts/fullcalendar/luxon/main.js +162 -0
  151. data/vendor/assets/javascripts/fullcalendar/luxon/main.min.js +20 -0
  152. data/vendor/assets/javascripts/fullcalendar/moment-timezone/main.js +64 -0
  153. data/vendor/assets/javascripts/fullcalendar/moment-timezone/main.min.js +20 -0
  154. data/vendor/assets/javascripts/fullcalendar/moment/main.js +103 -0
  155. data/vendor/assets/javascripts/fullcalendar/moment/main.min.js +6 -0
  156. data/vendor/assets/javascripts/fullcalendar/rrule/main.js +127 -0
  157. data/vendor/assets/javascripts/fullcalendar/rrule/main.min.js +20 -0
  158. data/vendor/assets/javascripts/fullcalendar/timegrid/main.css +266 -0
  159. data/vendor/assets/javascripts/fullcalendar/timegrid/main.js +1339 -0
  160. data/vendor/assets/javascripts/fullcalendar/timegrid/main.min.css +5 -0
  161. data/vendor/assets/javascripts/fullcalendar/timegrid/main.min.js +20 -0
  162. metadata +247 -0
@@ -0,0 +1,22 @@
1
+ <div class="card">
2
+ <div class="card-divider">
3
+ <h2 class="card-title"><%= t(".title") %></h2>
4
+ </div>
5
+ <div class="card-section">
6
+ <div class="row column">
7
+ <%= form.translated :text_field, :title, autofocus: true %>
8
+ </div>
9
+
10
+ <div class="row column">
11
+ <%= form.datetime_field :start_at %>
12
+ </div>
13
+
14
+ <div class="row column">
15
+ <%= form.datetime_field :end_at %>
16
+ </div>
17
+
18
+ <div class="row column">
19
+ <%= form.url_field :url %>
20
+ </div>
21
+ </div>
22
+ </div>
@@ -0,0 +1,6 @@
1
+ <%= decidim_form_for(@form, html: { class: "form edit_event" }) do |f| %>
2
+ <%= render partial: "form", object: f %>
3
+ <div class="button--double form-general-submit">
4
+ <%= f.submit t(".save") %>
5
+ </div>
6
+ <% end %>
@@ -0,0 +1,66 @@
1
+ <div id="events" class="card">
2
+ <div class="card-divider">
3
+ <h2 class="card-title flex--sbc">
4
+ <div>
5
+ <%= t(".title") %>
6
+ </div>
7
+
8
+ <div class="flex--cc flex-gap--1">
9
+ <div id="js-other-actions-wrapper">
10
+ <% if allowed_to? :create, :external_event %>
11
+ <%= link_to t("actions.new_external_event", scope: "decidim.calendar.admin"),
12
+ new_external_event_path, class: "button tiny button--simple" %>
13
+ <% end %>
14
+ </div>
15
+ </div>
16
+ </h2>
17
+ </div>
18
+ <div class="card-section">
19
+ <% if external_events.any? %>
20
+ <div class="table-scroll">
21
+ <table class="table-list">
22
+ <thead>
23
+ <tr>
24
+ <th><%= t("models.external_events.fields.title", scope: "decidim.calendar.admin") %></th>
25
+ <th><%= t("models.external_events.fields.start_at", scope: "decidim.calendar.admin") %></th>
26
+ <th><%= t("models.external_events.fields.end_at", scope: "decidim.calendar.admin") %></th>
27
+ <th><%= t("models.external_events.fields.url", scope: "decidim.calendar.admin") %></th>
28
+ <th></th>
29
+ </tr>
30
+ </thead>
31
+ <tbody>
32
+ <% external_events.each do |event| %>
33
+ <tr>
34
+ <td>
35
+ <%= translated_attribute(event.title) %>
36
+ </td>
37
+ <td>
38
+ <%= l event.start_at, format: :long %>
39
+ </td>
40
+ <td>
41
+ <%= l event.end_at, format: :long %>
42
+ </td>
43
+ <td>
44
+ <%= event.url %>
45
+ </td>
46
+ <td class="table-list__actions">
47
+ <% if allowed_to? :update, :external_events, external_event: event %>
48
+ <%= icon_link_to "pencil", edit_external_event_path(event), t("actions.edit", scope: "decidim.admin"), class: "action-icon--new" %>
49
+ <% end %>
50
+ <% if allowed_to? :update, :external_events, external_event: event %>
51
+ <%= icon_link_to "circle-x", external_event_path(event), t("actions.destroy", scope: "decidim.admin"), method: :delete, class: "action-icon--remove", data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
52
+ <% end %>
53
+ </td>
54
+ </tr>
55
+ <% end %>
56
+ </tbody>
57
+ </table>
58
+ </div>
59
+ <% else %>
60
+ <div class="text-center">
61
+ <%= t ".no_records_html", new_set_link: new_external_event_path, button_name: t("actions.new_external_event", scope: "decidim.calendar.admin") %>
62
+ </div>
63
+ </div>
64
+ <% end %>
65
+ </div>
66
+ </div>
@@ -0,0 +1,6 @@
1
+ <%= decidim_form_for(@form, html: { class: "form new_event" }) do |f| %>
2
+ <%= render partial: "form", object: f, locals: { title: t(".title") } %>
3
+ <div class="button--double form-general-submit">
4
+ <%= f.submit t(".create") %>
5
+ </div>
6
+ <% end %>
@@ -0,0 +1,22 @@
1
+ <% provide :meta_title, t("calendar.menu.gantt", scope: "decidim") %>
2
+ <%= participatory_space_wrapper do %>
3
+ <div class="row columns">
4
+ <div id="gantt"></div>
5
+ </div>
6
+ <% end %>
7
+ <%= javascript_include_tag "decidim/calendar/gantt" %>
8
+ <%= stylesheet_link_tag "decidim/calendar/gantt" %>
9
+
10
+ <script charset="utf-8">
11
+ var tasks = [
12
+ <% @events.each do |p| %>
13
+ <%= participatory_gantt(p).html_safe %>
14
+ <%= "," unless p == @events.last %>
15
+ <% end %>
16
+ ]
17
+ var gantt = new Gantt("#gantt", tasks, {
18
+ view_modes: ['Quarter Day', 'Half Day', 'Day', 'Week', 'Month'],
19
+ view_mode: 'Month',
20
+ custom_popup_html: null
21
+ });
22
+ </script>
@@ -0,0 +1,63 @@
1
+ <% provide :meta_title, t("calendar.index.title", scope: "decidim") %>
2
+ <%= participatory_space_wrapper do %>
3
+ <div class="row columns">
4
+ <div class="calendar-filters button-group">
5
+ <% @resources.each do |t| %>
6
+ <button class="button tiny cal-filter <%= t %>" id="<%= t %>"><%= I18n.t(t, scope: "decidim.calendar.index.filters") %></button>
7
+ <% end %>
8
+ </div>
9
+ <div id="calendar"></div>
10
+ </div>
11
+ <% end %>
12
+ <%= javascript_include_tag "decidim/calendar/calendar" %>
13
+ <%= stylesheet_link_tag "decidim/calendar/calendar" %>
14
+
15
+ <script>
16
+ let filters = ["consultation", "external_event", "meeting", "debate", "participatory_step"];
17
+
18
+ function removeFilter(filters, filter){
19
+ return filters.filter((element) => element !== filter)
20
+ }
21
+
22
+
23
+ const calendarEl = document.getElementById('calendar');
24
+ const calendar = new FullCalendar.Calendar(calendarEl, {
25
+ plugins: ["interaction", "timeGrid", "dayGrid"],
26
+ defaultView: "dayGridMonth",
27
+ locale: "es",
28
+ header: {
29
+ left: "prev,next today",
30
+ center: "title",
31
+ right: "dayGridMonth,dayGridWeek,dayGridDay"
32
+ },
33
+ eventTimeFormat: {
34
+ hour: "2-digit",
35
+ minute: "2-digit",
36
+ hour12: false,
37
+ omitZeroMinute: false
38
+ },
39
+ events: [
40
+ <% @events.each do |e| %>
41
+ <%= calendar_event(e).html_safe %>
42
+ <%= "," unless e == @events.last %>
43
+ <% end %>
44
+ ],
45
+ eventRender: function(info) {
46
+ return filters.includes(info.event.extendedProps.resourceId);
47
+ }
48
+ });
49
+ $(function() {
50
+ calendar.setOption('locale', "<%= I18n.locale %>");
51
+ calendar.render();
52
+ $(".cal-filter").on("click", function() {
53
+ $(this).toggleClass("hollow");
54
+ let filter = $(this).attr("id");
55
+ if (filters.includes(filter)) {
56
+ filters = removeFilter(filters, filter)
57
+ } else {
58
+ filters.push(filter)
59
+ }
60
+ calendar.rerenderEvents()
61
+ });
62
+ });
63
+ </script>
@@ -0,0 +1,51 @@
1
+ <div class="row expanded">
2
+ <div class="process-nav">
3
+ <div class="row">
4
+ <button class="process-nav__trigger hide-for-medium" data-toggle="process-nav-content">
5
+ <%= icon "caret-bottom", class: "icon--small process-nav__trigger__icon", aria_label: t(".unfold"), role: "img" %>
6
+ <% default_item = active_item || items.first %>
7
+ <div class="process-nav__link">
8
+ <%= default_item[:name] %>
9
+ </div>
10
+ </button>
11
+ <div class="row column process-nav__content" id="process-nav-content" data-toggler=".is-active">
12
+ <ul>
13
+ <% items.each_with_index do |item, index| %>
14
+ <li class="<%= "is-active" if item[:active] %> <%= "hide-for-medium" if index > max_items %>">
15
+ <%= link_to item[:url], class: "process-nav__link #{item[:active] ? 'active' : nil}" do %>
16
+ <%= item[:name] %>
17
+ <% end %>
18
+ </li>
19
+ <% end %>
20
+ </ul>
21
+
22
+ <% if extra_items.any? %>
23
+ <button class="button tiny process-nav__more show-for-medium" data-toggle="process-nav__hide-content">
24
+ <%= t ".more" %> <i></i><i></i><i></i>
25
+ </button>
26
+ <div class="dropdown-pane process-nav__hidden-content" id="process-nav__hide-content"
27
+ data-dropdown
28
+ data-hover="true"
29
+ data-hover-pane="true"
30
+ data-v-offset="-25"
31
+ data-position="bottom"
32
+ data-alignment="right">
33
+ <div class="process-nav__hidden-content__more">
34
+ <%= t ".more" %> <i></i><i></i><i></i>
35
+ </div>
36
+ <ul>
37
+ <% extra_items.each do |item| %>
38
+ <li class="<%= "is-active" if item[:active] %>">
39
+ <%= link_to item[:url], class: "process-nav__link #{item[:active] ? 'active' : nil}" do %>
40
+ <%= item[:name] %>
41
+ <% end %>
42
+ </li>
43
+ <% end %>
44
+ </ul>
45
+ </div>
46
+ <% end %>
47
+ </div>
48
+ </div>
49
+ </div>
50
+ </div>
51
+
@@ -0,0 +1,18 @@
1
+ <%=
2
+ extended_navigation_bar([
3
+ {
4
+ name: t("menu.calendar", scope: "decidim.calendar"),
5
+ url: calendar_index_path,
6
+ active: is_active_link?(calendar_index_path, :exclusive)
7
+ },
8
+ {
9
+ name: t("menu.gantt", scope: "decidim.calendar"),
10
+ url: calendar_gantt_path,
11
+ active: is_active_link?(calendar_gantt_path, :exclusive)
12
+ },
13
+ {
14
+ name: t("menu.ical", scope: "decidim.calendar"),
15
+ url: calendar_ical_path,
16
+ }
17
+ ], max_items: 1)
18
+ %>
@@ -0,0 +1,4 @@
1
+ <%= render "layouts/decidim/application" do %>
2
+ <%= render partial: "layouts/calendar_navigation" %>
3
+ <%= yield %>
4
+ <% end %>
@@ -0,0 +1,38 @@
1
+ ca:
2
+ decidim:
3
+ calendar:
4
+ admin:
5
+ actions:
6
+ new_external_event: Nou esdeveniment extern
7
+ external_events:
8
+ index:
9
+ title: Esdeveniments externs
10
+ no_records_html: <p>no té esdeveniments externs creada.</p> <p>Comenceu afegint un esdeveniment extern des del botó de "<a href="%{new_set_link}">%{button_name}</a>".</p>
11
+ create:
12
+ invalid: Esdeveniment extern no és vàlid
13
+ success: Esdeveniment extern creat amb èxit
14
+ destroy:
15
+ success: Esdeveniment extern esborrat correctament
16
+ edit:
17
+ save: Estalviar esdeveniment extern
18
+ form:
19
+ title: Esdeveniment extern
20
+ new:
21
+ title: Nou esdeveniment extern
22
+ create: Crear esdeveniment extern
23
+ update:
24
+ invalid: Esdeveniment extern actualització error
25
+ success: Esdeveniment extern actualitzat correctament
26
+ models:
27
+ external_events:
28
+ fields:
29
+ title: Títol
30
+ start_at: Començar a
31
+ end_at: Posar fi a
32
+ url: URL
33
+ index:
34
+ title: Calendari global
35
+ menu:
36
+ calendar: Calendari
37
+ gantt: Gràfic de Gantt
38
+ ical: Descarregui ICAL
@@ -0,0 +1,38 @@
1
+ de:
2
+ decidim:
3
+ calendar:
4
+ admin:
5
+ actions:
6
+ new_external_event: New external event
7
+ external_events:
8
+ index:
9
+ title: External events
10
+ no_records_html: <p>No external events created.</p> <p>Start by adding a external event from the "<a href="%{new_set_link}">%{button_name}</a>" button.</p>
11
+ create:
12
+ invalid: Invalid external event
13
+ success: External event created successfully
14
+ destroy:
15
+ success: External event deleted successfully
16
+ edit:
17
+ save: Save external event
18
+ form:
19
+ title: External event
20
+ new:
21
+ title: New external event
22
+ create: Create external event
23
+ update:
24
+ invalid: Error updating external event
25
+ success: External event updated successfully
26
+ models:
27
+ external_events:
28
+ fields:
29
+ title: Title
30
+ start_at: Start at
31
+ end_at: End at
32
+ url: URL
33
+ index:
34
+ title: Global Calendar
35
+ menu:
36
+ calendar: Calendar
37
+ gantt: Gantt Graph
38
+ ical: Download ICAL
@@ -0,0 +1,48 @@
1
+ en:
2
+ decidim:
3
+ calendar:
4
+ admin:
5
+ actions:
6
+ new_external_event: New external event
7
+ external_events:
8
+ index:
9
+ title: External events
10
+ no_records_html: <p>No external events created.</p> <p>Start by adding a external event from the "<a href="%{new_set_link}">%{button_name}</a>" button.</p>
11
+ create:
12
+ invalid: Invalid external event
13
+ success: External event created successfully
14
+ destroy:
15
+ success: External event deleted successfully
16
+ edit:
17
+ save: Save external event
18
+ form:
19
+ title: External event
20
+ new:
21
+ title: New external event
22
+ create: Create external event
23
+ update:
24
+ invalid: Error updating external event
25
+ success: External event updated successfully
26
+ models:
27
+ external_events:
28
+ fields:
29
+ title: Title
30
+ start_at: Start at
31
+ end_at: End at
32
+ url: URL
33
+ index:
34
+ title: Global Calendar
35
+ filters:
36
+ consultation: Consultations
37
+ debate: Debates
38
+ external_event: External Events
39
+ meeting: Meetings
40
+ participatory_step: Participatory Process
41
+ menu:
42
+ calendar: Calendar
43
+ gantt: Gantt Graph
44
+ ical: Download ICAL
45
+ shared:
46
+ extended_navigation_bar:
47
+ unfold: Unfold
48
+ more: More
@@ -0,0 +1,38 @@
1
+ es:
2
+ decidim:
3
+ calendar:
4
+ admin:
5
+ actions:
6
+ new_external_event: Nuevo evento externo
7
+ external_events:
8
+ index:
9
+ title: Eventos externos
10
+ no_records_html: <p>No se han creado eventos externos.</p> <p>Comienza añadiendo un evento externo del botón "<a href="%{new_set_link}">%{button_name}</a>".</p>
11
+ create:
12
+ invalid: Evento externo inválido
13
+ success: Evento externo creado con éxito
14
+ destroy:
15
+ success: Evento externo eliminado correctamente
16
+ edit:
17
+ save: Guardar evento externo
18
+ form:
19
+ title: Evento externo
20
+ new:
21
+ title: Nuevo evento externo
22
+ create: Crear evento externo
23
+ update:
24
+ invalid: Error al actualizar evento externo
25
+ success: Evento externo actualizado correctamente
26
+ models:
27
+ external_events:
28
+ fields:
29
+ title: Título
30
+ start_at: Iniciar en
31
+ end_at: Terminan en
32
+ url: URL
33
+ index:
34
+ title: Calendario global
35
+ menu:
36
+ calendar: Calendario
37
+ gantt: Gráfico de Gantt
38
+ ical: Descargar ICAL
@@ -0,0 +1,38 @@
1
+ fi:
2
+ decidim:
3
+ calendar:
4
+ admin:
5
+ actions:
6
+ new_external_event: New external event
7
+ external_events:
8
+ index:
9
+ title: External events
10
+ no_records_html: <p>No external events created.</p> <p>Start by adding a external event from the "<a href="%{new_set_link}">%{button_name}</a>" button.</p>
11
+ create:
12
+ invalid: Invalid external event
13
+ success: External event created successfully
14
+ destroy:
15
+ success: External event deleted successfully
16
+ edit:
17
+ save: Save external event
18
+ form:
19
+ title: External event
20
+ new:
21
+ title: New external event
22
+ create: Create external event
23
+ update:
24
+ invalid: Error updating external event
25
+ success: External event updated successfully
26
+ models:
27
+ external_events:
28
+ fields:
29
+ title: Title
30
+ start_at: Start at
31
+ end_at: End at
32
+ url: URL
33
+ index:
34
+ title: Global Calendar
35
+ menu:
36
+ calendar: Calendar
37
+ gantt: Gantt Graph
38
+ ical: Download ICAL