decidim-decidim_awesome 0.6.6 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (245) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +93 -36
  3. data/Rakefile +11 -12
  4. data/app/cells/decidim/decidim_awesome/content_blocks/map/error.erb +11 -0
  5. data/app/cells/decidim/decidim_awesome/content_blocks/map/show.erb +14 -0
  6. data/app/cells/decidim/decidim_awesome/content_blocks/map_cell.rb +65 -0
  7. data/app/cells/decidim/decidim_awesome/content_blocks/map_form/show.erb +65 -0
  8. data/app/cells/decidim/decidim_awesome/content_blocks/map_form_cell.rb +19 -0
  9. data/app/commands/concerns/decidim/decidim_awesome/admin/needs_constraint_helpers.rb +32 -0
  10. data/app/commands/decidim/decidim_awesome/admin/create_custom_redirect.rb +51 -0
  11. data/app/commands/decidim/decidim_awesome/admin/create_proposal_custom_field.rb +45 -0
  12. data/app/commands/decidim/decidim_awesome/admin/create_scoped_admin.rb +38 -0
  13. data/app/commands/decidim/decidim_awesome/admin/destroy_constraint.rb +4 -0
  14. data/app/commands/decidim/decidim_awesome/admin/destroy_custom_redirect.rb +47 -0
  15. data/app/commands/decidim/decidim_awesome/admin/destroy_proposal_custom_field.rb +40 -0
  16. data/app/commands/decidim/decidim_awesome/admin/destroy_scoped_admin.rb +40 -0
  17. data/app/commands/decidim/decidim_awesome/admin/destroy_scoped_style.rb +1 -1
  18. data/app/commands/decidim/decidim_awesome/admin/rename_scope_label.rb +58 -0
  19. data/app/commands/decidim/decidim_awesome/admin/update_config.rb +5 -1
  20. data/app/commands/decidim/decidim_awesome/admin/update_custom_redirect.rb +49 -0
  21. data/app/commands/decidim/decidim_awesome/create_editor_image.rb +12 -5
  22. data/app/controllers/concerns/decidim/decidim_awesome/not_found_redirect.rb +58 -0
  23. data/app/controllers/decidim/decidim_awesome/admin/checks_controller.rb +15 -22
  24. data/app/controllers/decidim/decidim_awesome/admin/config_controller.rb +41 -20
  25. data/app/controllers/decidim/decidim_awesome/admin/constraints_controller.rb +4 -0
  26. data/app/controllers/decidim/decidim_awesome/admin/custom_redirects_controller.rb +91 -0
  27. data/app/controllers/decidim/decidim_awesome/admin/menu_hacks_controller.rb +7 -10
  28. data/app/controllers/decidim/decidim_awesome/admin/proposal_custom_fields_controller.rb +38 -0
  29. data/app/controllers/decidim/decidim_awesome/admin/scoped_admins_controller.rb +38 -0
  30. data/app/controllers/decidim/decidim_awesome/admin/scoped_styles_controller.rb +38 -0
  31. data/app/controllers/decidim/decidim_awesome/blank_component_controller.rb +19 -0
  32. data/app/controllers/decidim/decidim_awesome/editor_images_controller.rb +2 -3
  33. data/app/controllers/decidim/decidim_awesome/iframe_component/iframe_controller.rb +1 -1
  34. data/app/controllers/decidim/decidim_awesome/map_component/map_controller.rb +2 -9
  35. data/app/forms/decidim/decidim_awesome/admin/config_form.rb +52 -0
  36. data/app/forms/decidim/decidim_awesome/admin/constraint_form.rb +3 -1
  37. data/app/forms/decidim/decidim_awesome/admin/custom_redirect_form.rb +45 -0
  38. data/app/forms/decidim/decidim_awesome/editor_image_form.rb +3 -2
  39. data/app/forms/decidim/decidim_awesome/proposals/proposal_wizard_create_step_form_override.rb +38 -0
  40. data/app/helpers/decidim/decidim_awesome/admin/config_constraints_helpers.rb +32 -15
  41. data/app/helpers/decidim/decidim_awesome/admin/system_checker_helpers.rb +36 -0
  42. data/app/helpers/decidim/decidim_awesome/amendments_helper_override.rb +48 -0
  43. data/app/helpers/decidim/decidim_awesome/map_helper.rb +76 -57
  44. data/app/helpers/decidim/decidim_awesome/proposals/application_helper_override.rb +78 -0
  45. data/app/jobs/decidim/decidim_awesome/migrate_legacy_images_job.rb +106 -0
  46. data/app/middleware/decidim/decidim_awesome/current_config.rb +182 -0
  47. data/app/models/decidim/decidim_awesome/awesome_config.rb +15 -0
  48. data/app/models/decidim/decidim_awesome/editor_image.rb +4 -9
  49. data/app/models/decidim/decidim_awesome/user_override.rb +25 -0
  50. data/app/packs/entrypoints/decidim_admin_decidim_awesome.js +5 -0
  51. data/app/packs/entrypoints/decidim_admin_decidim_awesome.scss +1 -0
  52. data/app/packs/entrypoints/decidim_admin_decidim_awesome_custom_fields.js +2 -0
  53. data/app/packs/entrypoints/decidim_decidim_awesome.js +9 -0
  54. data/app/packs/entrypoints/decidim_decidim_awesome.scss +1 -0
  55. data/app/packs/entrypoints/decidim_decidim_awesome_admin_form_exit_warn.js +1 -0
  56. data/app/packs/entrypoints/decidim_decidim_awesome_custom_fields.js +1 -0
  57. data/app/packs/entrypoints/decidim_decidim_awesome_iframe.scss +1 -0
  58. data/app/packs/entrypoints/decidim_decidim_awesome_map.js +5 -0
  59. data/app/packs/entrypoints/decidim_decidim_awesome_map.scss +1 -0
  60. data/app/{assets → packs}/images/decidim/decidim_awesome/platoniq-logo.png +0 -0
  61. data/app/packs/src/decidim/decidim_awesome/admin/auto_edit.js +82 -0
  62. data/app/packs/src/decidim/decidim_awesome/admin/check_redirections.js +48 -0
  63. data/app/packs/src/decidim/decidim_awesome/admin/codemirror.js +14 -0
  64. data/app/packs/src/decidim/decidim_awesome/admin/constraints.js +55 -0
  65. data/app/packs/src/decidim/decidim_awesome/admin/custom_fields_builder.js +77 -0
  66. data/app/{assets/javascripts/decidim/decidim_awesome/admin/form_exit_warn.js.es6 → packs/src/decidim/decidim_awesome/admin/form_exit_warn.js} +0 -2
  67. data/app/packs/src/decidim/decidim_awesome/admin/user_picker.js +24 -0
  68. data/app/packs/src/decidim/decidim_awesome/awesome_admin.js +23 -0
  69. data/app/packs/src/decidim/decidim_awesome/awesome_application.js +17 -0
  70. data/app/{assets/javascripts/decidim/decidim_awesome/awesome_map/api_fetcher.js.es6 → packs/src/decidim/decidim_awesome/awesome_map/api/api_fetcher.js} +1 -15
  71. data/app/packs/src/decidim/decidim_awesome/awesome_map/api/fetcher.js +131 -0
  72. data/app/packs/src/decidim/decidim_awesome/awesome_map/api/meetings_fetcher.js +59 -0
  73. data/app/packs/src/decidim/decidim_awesome/awesome_map/api/proposals_fetcher.js +52 -0
  74. data/app/packs/src/decidim/decidim_awesome/awesome_map/awesome_map.js +130 -0
  75. data/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/controller.js +112 -0
  76. data/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/meetings_controller.js +31 -0
  77. data/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/proposals_controller.js +88 -0
  78. data/app/packs/src/decidim/decidim_awesome/awesome_map/controls_ui.js +221 -0
  79. data/app/packs/src/decidim/decidim_awesome/awesome_map/load_map.js +51 -0
  80. data/app/packs/src/decidim/decidim_awesome/editors/editor.js +190 -0
  81. data/app/packs/src/decidim/decidim_awesome/editors/tabs_focus.js +22 -0
  82. data/app/{assets/javascripts/decidim/decidim_awesome/forms/autosave.js.es6 → packs/src/decidim/decidim_awesome/forms/autosave.js} +20 -17
  83. data/app/packs/src/decidim/decidim_awesome/forms/custom_fields_renderer.js +207 -0
  84. data/app/packs/src/decidim/decidim_awesome/forms/rich_text_plugin.js +107 -0
  85. data/app/packs/src/decidim/decidim_awesome/proposals/custom_fields.js +22 -0
  86. data/app/packs/src/decidim/decidim_awesome/proposals/images.js +25 -0
  87. data/{vendor/assets/javascripts → app/packs/src/vendor}/image-resize.min.js +0 -0
  88. data/{vendor/assets/javascripts → app/packs/src/vendor}/image-upload.min.js +0 -0
  89. data/app/packs/src/vendor/jquery.truncate.js +105 -0
  90. data/app/packs/src/vendor/leaflet.featuregroup.subgroup.js +184 -0
  91. data/app/packs/stylesheets/decidim/decidim_awesome/admin/auto_edits.scss +16 -0
  92. data/app/packs/stylesheets/decidim/decidim_awesome/admin/check_redirections.scss +28 -0
  93. data/app/packs/stylesheets/decidim/decidim_awesome/admin/codemirror.scss +29 -0
  94. data/app/{assets → packs}/stylesheets/decidim/decidim_awesome/admin/constraints.scss +21 -9
  95. data/app/packs/stylesheets/decidim/decidim_awesome/admin/custom_fields.scss +93 -0
  96. data/app/packs/stylesheets/decidim/decidim_awesome/admin/user_picker.scss +41 -0
  97. data/app/packs/stylesheets/decidim/decidim_awesome/awesome_admin.scss +71 -0
  98. data/app/packs/stylesheets/decidim/decidim_awesome/awesome_application.scss +19 -0
  99. data/app/{assets → packs}/stylesheets/decidim/decidim_awesome/awesome_iframe/iframe.scss +3 -3
  100. data/app/packs/stylesheets/decidim/decidim_awesome/awesome_map/map.scss +176 -0
  101. data/app/{assets → packs}/stylesheets/decidim/decidim_awesome/editors/markdown_editor.scss +6 -4
  102. data/app/packs/stylesheets/decidim/decidim_awesome/editors/quill_editor.scss +58 -0
  103. data/app/{assets → packs}/stylesheets/decidim/decidim_awesome/forms/autosave.scss +2 -2
  104. data/app/packs/stylesheets/vendor/select2-foundation-theme.scss +348 -0
  105. data/app/permissions/decidim/decidim_awesome/admin/permissions.rb +2 -0
  106. data/app/presenters/decidim/decidim_awesome/menu_item_presenter_override.rb +25 -0
  107. data/app/presenters/decidim/decidim_awesome/menu_presenter_override.rb +23 -0
  108. data/app/uploaders/decidim/cw/decidim_awesome/image_uploader.rb +26 -0
  109. data/app/uploaders/decidim/decidim_awesome/image_uploader.rb +4 -21
  110. data/app/views/decidim/decidim_awesome/admin/checks/index.html.erb +28 -22
  111. data/app/views/decidim/decidim_awesome/admin/config/_autoedit_box_label.html.erb +7 -0
  112. data/app/views/decidim/decidim_awesome/admin/config/_constraints.html.erb +3 -3
  113. data/app/views/decidim/decidim_awesome/admin/config/_form_admins.html.erb +21 -0
  114. data/app/views/decidim/decidim_awesome/admin/config/_form_editors.html.erb +1 -3
  115. data/app/views/decidim/decidim_awesome/admin/config/_form_proposal_custom_fields.html.erb +25 -0
  116. data/app/views/decidim/decidim_awesome/admin/config/_form_proposals.html.erb +0 -2
  117. data/app/views/decidim/decidim_awesome/admin/config/_form_styles.html.erb +11 -12
  118. data/app/views/decidim/decidim_awesome/admin/config/_modal.html.erb +1 -1
  119. data/app/views/decidim/decidim_awesome/admin/config/show.html.erb +3 -4
  120. data/app/views/decidim/decidim_awesome/admin/constraints/new.html.erb +1 -1
  121. data/app/views/decidim/decidim_awesome/admin/custom_redirects/_form.html.erb +6 -0
  122. data/app/views/decidim/decidim_awesome/admin/custom_redirects/edit.html.erb +13 -0
  123. data/app/views/decidim/decidim_awesome/admin/custom_redirects/index.html.erb +37 -0
  124. data/app/views/decidim/decidim_awesome/admin/custom_redirects/new.html.erb +13 -0
  125. data/app/views/decidim/decidim_awesome/admin/menu_hacks/edit.html.erb +1 -1
  126. data/app/views/decidim/decidim_awesome/admin/menu_hacks/new.html.erb +1 -1
  127. data/app/views/decidim/decidim_awesome/admin/proposals/_editor.html.erb +6 -0
  128. data/app/views/decidim/decidim_awesome/custom_fields/_form_render.html.erb +6 -0
  129. data/app/views/decidim/decidim_awesome/iframe_component/iframe/show.html.erb +1 -1
  130. data/app/views/decidim/decidim_awesome/map_component/map/_api_ready.html.erb +3 -0
  131. data/app/views/decidim/decidim_awesome/map_component/map/_map_template.html.erb +68 -0
  132. data/app/views/decidim/decidim_awesome/map_component/map/{error.erb → error.html.erb} +2 -0
  133. data/app/views/decidim/decidim_awesome/map_component/map/show.html.erb +3 -96
  134. data/app/views/decidim/proposals/admin/proposals/_form.html.erb +101 -0
  135. data/app/views/decidim/proposals/collaborative_drafts/_edit_form_fields.html.erb +83 -0
  136. data/app/views/decidim/proposals/collaborative_drafts/show.html.erb +1 -0
  137. data/app/views/layouts/decidim/admin/decidim_awesome.html.erb +34 -16
  138. data/app/views/layouts/decidim/decidim_awesome/_awesome_config.html.erb +6 -1
  139. data/app/views/layouts/decidim/decidim_awesome/_custom_styles.html.erb +1 -1
  140. data/app/views/v0.25/decidim/proposals/collaborative_drafts/_show.html.erb +128 -0
  141. data/app/views/{v0.23 → v0.25}/layouts/decidim/_head.html.erb +12 -10
  142. data/app/views/v0.25/layouts/decidim/admin/_header.html.erb +11 -0
  143. data/app/views/v0.26/decidim/proposals/collaborative_drafts/_show.html.erb +128 -0
  144. data/app/views/{v0.22 → v0.26}/layouts/decidim/_head.html.erb +18 -10
  145. data/app/views/v0.26/layouts/decidim/admin/_header.html.erb +11 -0
  146. data/config/assets.rb +46 -0
  147. data/config/i18n-tasks.yml +6 -0
  148. data/config/locales/ca.yml +147 -13
  149. data/config/locales/cs.yml +137 -3
  150. data/config/locales/en.yml +170 -11
  151. data/config/locales/es.yml +136 -2
  152. data/config/locales/eu.yml +1 -161
  153. data/config/locales/fr.yml +276 -142
  154. data/config/locales/it.yml +346 -0
  155. data/config/locales/ja.yml +345 -0
  156. data/config/locales/nl.yml +167 -136
  157. data/config/locales/pt-BR.yml +346 -0
  158. data/config/locales/pt-PT.yml +7 -0
  159. data/config/locales/pt.yml +7 -0
  160. data/config/locales/sv.yml +109 -152
  161. data/db/migrate/20210628150825_change_awesome_config_var_type.rb +12 -0
  162. data/lib/decidim/decidim_awesome/admin_engine.rb +19 -12
  163. data/lib/decidim/decidim_awesome/awesome.rb +214 -0
  164. data/lib/decidim/decidim_awesome/awesome_helpers.rb +17 -17
  165. data/lib/decidim/decidim_awesome/checksums.yml +23 -16
  166. data/lib/decidim/decidim_awesome/config.rb +55 -9
  167. data/lib/decidim/decidim_awesome/content_parsers/editor_images_parser.rb +39 -0
  168. data/lib/decidim/decidim_awesome/context_analyzers/request_analyzer.rb +27 -21
  169. data/lib/decidim/decidim_awesome/custom_fields.rb +94 -0
  170. data/lib/decidim/decidim_awesome/engine.rb +42 -14
  171. data/lib/decidim/decidim_awesome/iframe_component/admin_engine.rb +23 -0
  172. data/lib/decidim/decidim_awesome/iframe_component/component.rb +6 -6
  173. data/lib/decidim/decidim_awesome/map_component/admin_engine.rb +23 -0
  174. data/lib/decidim/decidim_awesome/map_component/component.rb +13 -6
  175. data/lib/decidim/decidim_awesome/map_component/engine.rb +34 -0
  176. data/lib/decidim/decidim_awesome/menu_hacker.rb +2 -1
  177. data/lib/decidim/decidim_awesome/system_checker.rb +1 -1
  178. data/lib/decidim/decidim_awesome/test/factories.rb +2 -2
  179. data/lib/decidim/decidim_awesome/test/initializer.rb +25 -0
  180. data/lib/decidim/decidim_awesome/test/layouts/decidim/_head.html.erb +30 -2
  181. data/lib/decidim/decidim_awesome/test/layouts/decidim/admin/_header.html.erb +7 -2
  182. data/lib/decidim/decidim_awesome/test/shared_examples/box_label_editor.rb +116 -0
  183. data/lib/decidim/decidim_awesome/test/shared_examples/config_examples.rb +18 -0
  184. data/lib/decidim/decidim_awesome/test/shared_examples/controller_examples.rb +13 -0
  185. data/lib/decidim/decidim_awesome/test/shared_examples/current_config_examples.rb +143 -0
  186. data/lib/decidim/decidim_awesome/test/shared_examples/custom_redirects_contexts.rb +47 -0
  187. data/lib/decidim/decidim_awesome/test/shared_examples/editor_examples.rb +4 -0
  188. data/lib/decidim/decidim_awesome/test/shared_examples/menu_hack_contexts.rb +0 -17
  189. data/lib/decidim/decidim_awesome/test/shared_examples/scoped_admins_examples.rb +420 -0
  190. data/lib/decidim/decidim_awesome/test/shared_examples/summary_examples.rb +202 -0
  191. data/lib/decidim/decidim_awesome/version.rb +2 -2
  192. data/lib/decidim/decidim_awesome.rb +4 -119
  193. data/lib/tasks/decidim_awesome_active_storage_migrations_tasks.rake +37 -0
  194. data/lib/tasks/decidim_awesome_webpacker_tasks.rake +62 -0
  195. metadata +148 -83
  196. data/app/assets/config/decidim_admin_decidim_awesome_manifest.css +0 -3
  197. data/app/assets/config/decidim_admin_decidim_awesome_manifest.js +0 -2
  198. data/app/assets/config/decidim_decidim_awesome_manifest.css +0 -5
  199. data/app/assets/config/decidim_decidim_awesome_manifest.js +0 -3
  200. data/app/assets/images/decidim/decidim_awesome/loading.gif +0 -0
  201. data/app/assets/javascripts/decidim/decidim_awesome/admin/constraints.js.es6 +0 -54
  202. data/app/assets/javascripts/decidim/decidim_awesome/admin.js +0 -2
  203. data/app/assets/javascripts/decidim/decidim_awesome/application.js +0 -4
  204. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/categories.js.es6 +0 -25
  205. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/legacy_map.js.es6 +0 -225
  206. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/legacy_proposals.js.es6 +0 -82
  207. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/map.js.es6 +0 -215
  208. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/meetings.js.es6 +0 -131
  209. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/proposals.js.es6 +0 -94
  210. data/app/assets/javascripts/decidim/decidim_awesome/editors/markdown_view.js.es6 +0 -12
  211. data/app/assets/javascripts/decidim/decidim_awesome/editors/quill_editor.js.es6 +0 -160
  212. data/app/assets/javascripts/decidim/decidim_awesome/proposals/images.js.es6 +0 -25
  213. data/app/assets/stylesheets/decidim/decidim_awesome/admin.scss +0 -49
  214. data/app/assets/stylesheets/decidim/decidim_awesome/application.scss +0 -8
  215. data/app/assets/stylesheets/decidim/decidim_awesome/awesome_map/leaflet.scss.erb +0 -9
  216. data/app/assets/stylesheets/decidim/decidim_awesome/awesome_map/map.scss +0 -66
  217. data/app/assets/stylesheets/decidim/decidim_awesome/editors/markdown_view.scss +0 -27
  218. data/app/assets/stylesheets/decidim/decidim_awesome/editors/quill_editor.scss +0 -7
  219. data/app/awesome_overrides/presenters/decidim/menu_presenter_override.rb +0 -39
  220. data/app/awesome_overrides/presenters/decidim/proposals/proposal_presenter_override.rb +0 -64
  221. data/app/controllers/decidim/decidim_awesome/iframe_component/application_controller.rb +0 -15
  222. data/app/controllers/decidim/decidim_awesome/map_component/application_controller.rb +0 -15
  223. data/app/views/v0.22/layouts/decidim/admin/_header.html.erb +0 -11
  224. data/app/views/v0.23/layouts/decidim/admin/_header.html.erb +0 -12
  225. data/lib/decidim/decidim_awesome/content_renderers/markdown_renderer.rb +0 -18
  226. data/lib/decidim/decidim_awesome/content_renderers.rb +0 -9
  227. data/lib/decidim/decidim_awesome/test/themes/css.lvh.me.css +0 -3
  228. data/lib/decidim/decidim_awesome/test/themes/erb.lvh.me.scss.erb +0 -2
  229. data/lib/decidim/decidim_awesome/test/themes/scss.lvh.me.scss +0 -1
  230. data/lib/decidim/decidim_awesome/test/themes/test-theme/body.scss +0 -4
  231. data/vendor/assets/images/layers-2x.png +0 -0
  232. data/vendor/assets/images/layers.png +0 -0
  233. data/vendor/assets/images/marker-icon.png +0 -0
  234. data/vendor/assets/javascripts/codemirror-4.inline-attachment.js +0 -89
  235. data/vendor/assets/javascripts/form-storage.js +0 -824
  236. data/vendor/assets/javascripts/highlight.min.js +0 -44
  237. data/vendor/assets/javascripts/inline-attachment.js +0 -399
  238. data/vendor/assets/javascripts/inscrybmde.min.js +0 -7
  239. data/vendor/assets/javascripts/jquery.inline-attachment.js +0 -66
  240. data/vendor/assets/javascripts/jsrender.min.js +0 -4
  241. data/vendor/assets/javascripts/leaflet.featuregroup.subgroup.js +0 -6
  242. data/vendor/assets/stylesheets/default.min.css +0 -1
  243. data/vendor/assets/stylesheets/foundation.min.css +0 -1
  244. data/vendor/assets/stylesheets/github.min.css +0 -2
  245. data/vendor/assets/stylesheets/inscrybmde.min.css +0 -8
@@ -0,0 +1,105 @@
1
+ // From https://github.com/pathable/truncate/
2
+
3
+ (function($) {
4
+
5
+ // Matches trailing non-space characters.
6
+ var chop = /(\s*\S+|\s)$/;
7
+
8
+ // Matches the first word in the string.
9
+ var start = /^(\S*)/;
10
+
11
+ // Return a truncated html string. Delegates to $.fn.truncate.
12
+ $.truncate = function(html, options) {
13
+ return $('<div></div>').append(html).truncate(options).html();
14
+ };
15
+
16
+ // Truncate the contents of an element in place.
17
+ $.fn.truncate = function(options) {
18
+ if ($.isNumeric(options)) options = { length: options };
19
+ var o = $.extend({}, $.truncate.defaults, options);
20
+
21
+ return this.each(function() {
22
+ var self = $(this);
23
+
24
+ if (o.noBreaks) self.find('br').replaceWith(' ');
25
+
26
+ var text = self.text();
27
+ var excess = text.length - o.length;
28
+
29
+ if (o.stripTags) self.text(text);
30
+
31
+ // Chop off any partial words if appropriate.
32
+ if (o.words && excess > 0) {
33
+ var truncated = text.slice(0, o.length).replace(chop, '').length;
34
+
35
+ if (o.keepFirstWord && truncated === 0) {
36
+ excess = text.length - start.exec(text)[0].length - 1;
37
+ } else {
38
+ excess = text.length - truncated - 1;
39
+ }
40
+ }
41
+
42
+ if (excess < 0 || !excess && !o.truncated) return;
43
+
44
+ // Iterate over each child node in reverse, removing excess text.
45
+ $.each(self.contents().get().reverse(), function(i, el) {
46
+ var $el = $(el);
47
+ var text = $el.text();
48
+ var length = text.length;
49
+
50
+ // If the text is longer than the excess, remove the node and continue.
51
+ if (length <= excess) {
52
+ o.truncated = true;
53
+ excess -= length;
54
+ $el.remove();
55
+ return;
56
+ }
57
+
58
+ // Remove the excess text and append the ellipsis.
59
+ if (el.nodeType === 3) {
60
+ // should we finish the block anyway?
61
+ if (o.finishBlock) {
62
+ $(el.splitText(length)).replaceWith(o.ellipsis);
63
+ } else {
64
+ $(el.splitText(length - excess - 1)).replaceWith(o.ellipsis);
65
+ }
66
+ return false;
67
+ }
68
+
69
+ // Recursively truncate child nodes.
70
+ $el.truncate($.extend(o, { length: length - excess }));
71
+ return false;
72
+ });
73
+ });
74
+ };
75
+
76
+ $.truncate.defaults = {
77
+
78
+ // Strip all html elements, leaving only plain text.
79
+ stripTags: false,
80
+
81
+ // Only truncate at word boundaries.
82
+ words: false,
83
+
84
+ // When 'words' is active, keeps the first word in the string
85
+ // even if it's longer than a target length.
86
+ keepFirstWord: false,
87
+
88
+ // Replace instances of <br> with a single space.
89
+ noBreaks: false,
90
+
91
+ // if true always truncate the content at the end of the block.
92
+ finishBlock: false,
93
+
94
+ // The maximum length of the truncated html.
95
+ length: Infinity,
96
+
97
+ // The character to use as the ellipsis. The word joiner (U+2060) can be
98
+ // used to prevent a hanging ellipsis, but displays incorrectly in Chrome
99
+ // on Windows 7.
100
+ // http://code.google.com/p/chromium/issues/detail?id=68323
101
+ ellipsis: '\u2026' // '\u2060\u2026'
102
+
103
+ };
104
+
105
+ })(jQuery);
@@ -0,0 +1,184 @@
1
+ L.FeatureGroup.SubGroup = L.FeatureGroup.extend({
2
+
3
+ /**
4
+ * Instantiates a SubGroup.
5
+ * @param parentGroup (L.LayerGroup) (optional)
6
+ * @param layersArray (L.Layer[]) (optional)
7
+ */
8
+ initialize: function (parentGroup, layersArray) {
9
+ L.FeatureGroup.prototype.initialize.call(this, layersArray);
10
+
11
+ this.setParentGroup(parentGroup);
12
+ },
13
+
14
+ /**
15
+ * Changes the parent group into which child markers are added to /
16
+ * removed from.
17
+ * @param parentGroup (L.LayerGroup)
18
+ * @returns {SubGroup} this
19
+ */
20
+ setParentGroup: function (parentGroup) {
21
+ var pgInstanceOfLG = parentGroup instanceof L.LayerGroup;
22
+
23
+ this._parentGroup = parentGroup;
24
+
25
+ // onAdd
26
+ this.onAdd =
27
+ pgInstanceOfLG ?
28
+ (
29
+ typeof parentGroup.addLayers === "function" ?
30
+ this._onAddToGroupBatch :
31
+ this._onAddToGroup
32
+ ) :
33
+ this._onAddToMap;
34
+
35
+ // onRemove
36
+ this.onRemove =
37
+ pgInstanceOfLG ?
38
+ (
39
+ typeof parentGroup.removeLayers === "function" ?
40
+ this._onRemoveFromGroupBatch :
41
+ this._onRemoveFromGroup
42
+ ) :
43
+ this._onRemoveFromMap;
44
+
45
+ // addLayer
46
+ this.addLayer = pgInstanceOfLG ?
47
+ this._addLayerToGroup :
48
+ this._addLayerToMap;
49
+
50
+ // removeLayer
51
+ this.removeLayer = pgInstanceOfLG ?
52
+ this._removeLayerFromGroup :
53
+ this._removeLayerFromMap;
54
+
55
+ return this;
56
+ },
57
+
58
+ /**
59
+ * Removes the current sub-group from map before changing the parent
60
+ * group. Re-adds the sub-group to map if it was before changing.
61
+ * @param parentGroup (L.LayerGroup)
62
+ * @returns {SubGroup} this
63
+ */
64
+ setParentGroupSafe: function (parentGroup) {
65
+ var map = this._map;
66
+
67
+ if (map) {
68
+ map.removeLayer(this);
69
+ }
70
+
71
+ this.setParentGroup(parentGroup);
72
+
73
+ if (map) {
74
+ map.addLayer(this);
75
+ }
76
+
77
+ return this;
78
+ },
79
+
80
+ /**
81
+ * Returns the current parent group.
82
+ * @returns {*}
83
+ */
84
+ getParentGroup: function () {
85
+ return this._parentGroup;
86
+ },
87
+
88
+
89
+ // For parent groups with batch methods (addLayers and removeLayers)
90
+ // like MarkerCluster.
91
+ _onAddToGroupBatch: function (map) {
92
+ var layersArray = this.getLayers();
93
+
94
+ this._map = map;
95
+ this._parentGroup.addLayers(layersArray);
96
+ },
97
+
98
+ _onRemoveFromGroupBatch: function () {
99
+ var layersArray = this.getLayers();
100
+
101
+ this._parentGroup.removeLayers(layersArray);
102
+ this._map = null;
103
+ },
104
+
105
+
106
+ // For other parent layer groups.
107
+ _onAddToGroup: function (map) {
108
+ var parentGroup = this._parentGroup;
109
+
110
+ this._map = map;
111
+ this.eachLayer(parentGroup.addLayer, parentGroup);
112
+ },
113
+
114
+ _onRemoveFromGroup: function () {
115
+ var parentGroup = this._parentGroup;
116
+
117
+ this.eachLayer(parentGroup.removeLayer, parentGroup);
118
+ this._map = null;
119
+ },
120
+
121
+
122
+ // Defaults to standard FeatureGroup behaviour when parent group is not
123
+ // specified or is not a type of LayerGroup.
124
+ _onAddToMap: L.FeatureGroup.prototype.onAdd,
125
+ _onRemoveFromMap: L.FeatureGroup.prototype.onRemove,
126
+
127
+
128
+ _addLayerToGroup: function (layer) {
129
+ if (this.hasLayer(layer)) {
130
+ return this;
131
+ }
132
+
133
+ layer.addEventParent(this);
134
+
135
+ var id = this.getLayerId(layer);
136
+ console.log("adtogroup id",id,"layer",layer,"this",this)
137
+ this._layers[id] = layer;
138
+
139
+ if (this._map) {
140
+ // Add to parent group instead of directly to map.
141
+ this._parentGroup.addLayer(layer);
142
+ }
143
+
144
+ return this.fire("layeradd", {layer: layer});
145
+ },
146
+
147
+ _removeLayerFromGroup: function (layer) {
148
+ // If unknown layer, skip.
149
+ if (!this.hasLayer(layer)) {
150
+ return this;
151
+ }
152
+
153
+ // Retrieve the layer id.
154
+ var id = layer in this._layers ? layer : this.getLayerId(layer);
155
+
156
+ // Retrieve the layer from this._layer.
157
+ layer = this._layers[id];
158
+
159
+ // Unregister from events parent.
160
+ layer.removeEventParent(this);
161
+
162
+ if (this._map && layer) {
163
+ // Remove from parent group instead of directly from map.
164
+ this._parentGroup.removeLayer(layer);
165
+ }
166
+
167
+ delete this._layers[id];
168
+
169
+ return this.fire("layerremove", {layer: layer});
170
+ },
171
+
172
+ // Defaults to standard FeatureGroup behaviour when parent group is not
173
+ // specified or is not a type of LayerGroup.
174
+ _addLayerToMap: L.FeatureGroup.prototype.addLayer,
175
+ _removeLayerFromMap: L.FeatureGroup.prototype.removeLayer
176
+
177
+ });
178
+
179
+
180
+
181
+ // Supply with a factory for consistency with Leaflet.
182
+ L.featureGroup.subGroup = function (parentGroup, options) {
183
+ return new L.FeatureGroup.SubGroup(parentGroup, options);
184
+ };
@@ -0,0 +1,16 @@
1
+ input.awesome-auto-edit {
2
+ display: inline-block;
3
+ width: auto;
4
+ margin: 0 2px;
5
+ padding: 1px;
6
+ line-height: 0;
7
+ height: auto;
8
+ }
9
+
10
+ span.awesome-auto-edit {
11
+ padding: 0 4px;
12
+ background-color: #f0f0f0;
13
+ border-radius: 5px;
14
+ margin: 0;
15
+ font-weight: 600;
16
+ }
@@ -0,0 +1,28 @@
1
+ .custom-redirections-table {
2
+ th,
3
+ td {
4
+ text-align: left !important;
5
+ }
6
+
7
+ td.redirect-status {
8
+ font-family: monospace;
9
+
10
+ &.success {
11
+ &::before {
12
+ content: "OK! ";
13
+ }
14
+ }
15
+
16
+ &.alert {
17
+ &::before {
18
+ content: "ERR ";
19
+ }
20
+ }
21
+
22
+ &.muted {
23
+ &::before {
24
+ content: "N/A ";
25
+ }
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,29 @@
1
+ @import "codemirror/lib/codemirror.css";
2
+
3
+ .awesome-edit-config {
4
+ .scoped_styles_container,
5
+ .proposal_custom_fields_container {
6
+ .form-error {
7
+ margin: 0;
8
+ }
9
+
10
+ >.CodeMirror {
11
+ border-top-left-radius: 5px;
12
+ border-top-right-radius: 5px;
13
+ border-top: .5em solid #e0e0e0;
14
+ border-right: .5em solid #e0e0e0;
15
+ border-bottom: .5em solid #e0e0e0;
16
+ min-height: 6em;
17
+ height: auto;
18
+ max-height: 40em;
19
+ resize: vertical;
20
+ overflow: vertical !important;
21
+
22
+ >.CodeMirror-scroll {
23
+ >.CodeMirror-gutters {
24
+ background: #e0e0e0;
25
+ }
26
+ }
27
+ }
28
+ }
29
+ }
@@ -1,37 +1,49 @@
1
- .constraints-editor{
1
+ .constraints-editor {
2
2
  background: #f6f6f6;
3
3
  padding: 1rem;
4
4
  margin: -.5rem 0 2rem;
5
5
  border-radius: 5px;
6
6
 
7
- .constraints-list{
7
+ .constraints-list {
8
8
  padding: 0;
9
9
  // margin:0 0 1em 0 ;
10
- li{
10
+ li {
11
11
  margin: 0 1em 0 0;
12
12
  padding: 0;
13
13
  }
14
14
 
15
- .label{
16
- &.participatory_space_manifest{
15
+ .label {
16
+ &.participatory_space_manifest {
17
17
  background-color: #f7b230;
18
18
  }
19
19
 
20
- &.participatory_space_slug{
20
+ &.participatory_space_slug {
21
21
  background-color: #19b380;
22
22
  }
23
23
 
24
- &.component_manifest{
24
+ &.component_manifest {
25
25
  background-color: #b31919;
26
26
  }
27
27
 
28
- &.component_id{
28
+ &.component_id {
29
29
  background-color: #ee449c;
30
30
  }
31
+
32
+ &.constraint {
33
+ &-none {
34
+ background-color: #ff3000;
35
+ }
36
+ }
31
37
  }
32
38
 
33
- a{
39
+ a {
34
40
  margin-left: 1rem;
35
41
  }
42
+
43
+ &.inactive {
44
+ .label:not(.constraint-none) {
45
+ filter: saturate(10%);
46
+ }
47
+ }
36
48
  }
37
49
  }
@@ -0,0 +1,93 @@
1
+ // hide custom-fields inside tabs, an extra (unique) container is used instead
2
+ .color-box {
3
+ display: inline-block;
4
+ height: 1em;
5
+ width: 1em;
6
+ margin-left: 1em;
7
+ vertical-align: middle;
8
+
9
+ &:first-child {
10
+ margin-left: 0;
11
+ }
12
+ $colors: (
13
+ "primary": #{$primary},
14
+ "secondary": #{$secondary},
15
+ "success": #{$success},
16
+ "warning": #{$warning},
17
+ "alert": #{$alert},
18
+ "highlight": #{$highlight},
19
+ "highlight_alternative": #{$highlight_alternative}
20
+ );
21
+
22
+ @each $name, $color in $colors {
23
+ &.#{$name} {
24
+ background-color: #{$color};
25
+ }
26
+ }
27
+ }
28
+
29
+ .tabs-content {
30
+ .proposal_custom_field {
31
+ display: none;
32
+ }
33
+ }
34
+
35
+ .proposal_custom_fields {
36
+ &_editor {
37
+ background-color: #e0e0e0;
38
+ padding: .5em .5em 1em;
39
+ border-top-left-radius: 5px;
40
+ border-top-right-radius: 5px;
41
+
42
+ label {
43
+ display: inline-block;
44
+ max-width: 100%;
45
+ font-weight: 600 !important;
46
+ }
47
+
48
+ li[type] {
49
+ display: inherit;
50
+ width: 100%;
51
+ height: inherit;
52
+ margin: inherit;
53
+ border: inherit;
54
+ box-shadow: inherit;
55
+ font-size: inherit;
56
+ font-weight: inherit;
57
+ line-height: inherit;
58
+ color: inherit;
59
+ }
60
+
61
+ .form-group {
62
+ background-color: inherit;
63
+ margin: 0;
64
+ padding: 0;
65
+ }
66
+
67
+ .form-wrap.form-builder .form-group {
68
+ margin-bottom: 10px !important;
69
+ }
70
+
71
+ .form-control {
72
+ color: #555;
73
+ background-color: #fff;
74
+ border: 1px solid #ccc;
75
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
76
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
77
+ margin: 0;
78
+ padding: 6px 12px;
79
+ }
80
+ }
81
+
82
+ &_container {
83
+ .constraints-editor {
84
+ border-top-left-radius: 0;
85
+ border-top-right-radius: 0;
86
+ }
87
+ }
88
+ }
89
+
90
+ // Custom fields tunning
91
+ .rendered-form .form-control.ql-container {
92
+ height: auto !important;
93
+ }
@@ -0,0 +1,41 @@
1
+ @import "select2/dist/css/select2.css";
2
+ @import "stylesheets/vendor/select2-foundation-theme";
3
+
4
+ .multiusers-select-container {
5
+ form label {
6
+ margin-bottom: 1rem;
7
+ }
8
+
9
+ .switch-paddle {
10
+ display: inline-block;
11
+ vertical-align: middle;
12
+ margin-right: 1em;
13
+ }
14
+ }
15
+
16
+ .select2-container--foundation .select2-selection--multiple {
17
+ .select2-selection__choice {
18
+ display: inline-block;
19
+ float: none;
20
+ font-weight: normal;
21
+
22
+ .is-admin {
23
+ &::before {
24
+ content: '⛔';
25
+ display: inline-block;
26
+ margin-right: .3em;
27
+ }
28
+
29
+ text-decoration: line-through;
30
+ color: #bbb;
31
+ }
32
+ }
33
+
34
+ textarea.select2-search__field {
35
+ resize: none;
36
+ }
37
+ }
38
+
39
+ .form-conversations-submit {
40
+ margin-top: 2rem;
41
+ }
@@ -0,0 +1,71 @@
1
+ @import "entrypoints/decidim_admin";
2
+ @import "stylesheets/decidim/decidim_awesome/admin/constraints";
3
+ @import "stylesheets/decidim/decidim_awesome/admin/custom_fields";
4
+ @import "stylesheets/decidim/decidim_awesome/admin/auto_edits";
5
+ @import "stylesheets/decidim/decidim_awesome/admin/check_redirections";
6
+ @import "stylesheets/decidim/decidim_awesome/editors/markdown_editor";
7
+ @import "stylesheets/decidim/decidim_awesome/editors/quill_editor";
8
+
9
+ .platoniq-credits {
10
+ position: absolute;
11
+ bottom: 0;
12
+ right: 0;
13
+ margin: 1em;
14
+ font-size: .8em;
15
+ }
16
+
17
+ .decidim_awesome {
18
+ &.modal {
19
+ .spinner {
20
+ @include spinner(25px, #aaa, var(--secondary), 800ms);
21
+
22
+ vertical-align: middle;
23
+ display: none;
24
+ }
25
+
26
+ &.loading {
27
+ .spinner {
28
+ display: inline-block;
29
+ }
30
+ }
31
+ }
32
+
33
+ &-form {
34
+ margin-bottom: 2em;
35
+ border-bottom: 1px solid #999;
36
+ padding-bottom: 1.5em;
37
+
38
+ .help-text {
39
+ white-space: pre-line;
40
+ }
41
+ }
42
+
43
+ &-form:last-child {
44
+ border-bottom: none;
45
+ padding-bottom: 0;
46
+ }
47
+ }
48
+
49
+ // Some global fixes
50
+ .form label {
51
+ .help-text {
52
+ display: block;
53
+ margin-top: -1.5em;
54
+ font-weight: normal;
55
+ margin-bottom: 1.5em;
56
+ }
57
+ }
58
+
59
+ .form-input-extra-before ~ .form-error {
60
+ margin-top: -2.5rem;
61
+ }
62
+
63
+ tbody tr.menu_hack-addition {
64
+ background: rgb(255, 248, 222);
65
+ }
66
+
67
+ .secondary-nav {
68
+ li .icon {
69
+ margin-right: .5rem;
70
+ }
71
+ }
@@ -0,0 +1,19 @@
1
+ @import "codemirror/lib/codemirror"; // used by inscribemde
2
+ @import "stylesheets/decidim/decidim_awesome/editors/markdown_editor";
3
+ @import "stylesheets/decidim/decidim_awesome/editors/quill_editor";
4
+ @import "stylesheets/decidim/decidim_awesome/forms/autosave";
5
+
6
+ .decidim_awesome-custom_fields {
7
+ dd {
8
+ >div:last-child {
9
+ margin-bottom: 1rem;
10
+ }
11
+
12
+ &[name="textarea"] {
13
+ >div > p {
14
+ margin-top: 1rem;
15
+ margin-bottom: 0;
16
+ }
17
+ }
18
+ }
19
+ }
@@ -1,8 +1,8 @@
1
- .wrapper{
2
- .awesome-iframe{
1
+ .wrapper {
2
+ .awesome-iframe {
3
3
  margin: 0 auto;
4
4
 
5
- iframe{
5
+ iframe {
6
6
  display: block;
7
7
  margin: auto;
8
8
  }