comfortable_media_surfer 3.0.0 → 3.1.2

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.
Files changed (131) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +1 -0
  3. data/.github/dependabot.yml +7 -0
  4. data/.github/workflows/coveralls.yml +13 -1
  5. data/.github/workflows/rubyonrails.yml +15 -3
  6. data/.gitignore +4 -0
  7. data/.rubocop.yml +4 -1
  8. data/CHANGELOG.md +86 -0
  9. data/CONTRIBUTING.md +5 -2
  10. data/Gemfile +10 -6
  11. data/README.md +64 -27
  12. data/app/assets/builds/.keep +0 -0
  13. data/app/assets/config/manifest.js +1 -0
  14. data/app/assets/javascripts/comfy/admin/cms/application.js +21 -36
  15. data/app/assets/javascripts/comfy/admin/cms/base.js +6 -5
  16. data/app/assets/javascripts/comfy/admin/cms/codemirror.js +22 -10
  17. data/app/assets/javascripts/comfy/admin/cms/diff.js +7 -5
  18. data/app/assets/javascripts/comfy/admin/cms/file_link.js +17 -11
  19. data/app/assets/javascripts/comfy/admin/cms/file_upload.js +67 -41
  20. data/app/assets/javascripts/comfy/admin/cms/files_modal.js +20 -13
  21. data/app/assets/javascripts/comfy/admin/cms/sortable_list.js +28 -19
  22. data/app/assets/javascripts/comfy/admin/cms/timepicker.js +20 -12
  23. data/app/assets/javascripts/comfy/admin/cms/wysiwyg.js +39 -20
  24. data/app/assets/javascripts/comfy/vendor/diff/pretty_text_diff.js +30 -18
  25. data/app/assets/javascripts/comfy/vendor/redactor/definedlinks.js +31 -34
  26. data/app/assets/javascripts/comfy/vendor/redactor/filemanager.js +77 -62
  27. data/app/assets/javascripts/comfy/vendor/redactor/i18n/hr.js +78 -76
  28. data/app/assets/javascripts/comfy/vendor/redactor/i18n/nb.js +76 -74
  29. data/app/assets/javascripts/comfy/vendor/redactor/i18n/pl.js +77 -75
  30. data/app/assets/javascripts/comfy/vendor/redactor/imagemanager.js +66 -55
  31. data/app/assets/javascripts/comfy/vendor/redactor/table.js +346 -335
  32. data/app/assets/javascripts/comfy/vendor/redactor/video.js +69 -64
  33. data/app/assets/javascripts/comfy/vendor/redactor.js +2 -0
  34. data/app/assets/stylesheets/comfy/admin/cms/application.sass +2 -2
  35. data/app/assets/stylesheets/comfy/admin/cms/codemirror_overrides.sass +1 -1
  36. data/app/helpers/comfy/admin/cms_helper.rb +2 -2
  37. data/app/views/comfy/admin/cms/pages/toggle_branch.js.erb +14 -8
  38. data/comfortable_media_surfer.gemspec +8 -9
  39. data/config/application.rb +4 -1
  40. data/config/environments/development.rb +11 -10
  41. data/config/environments/production.rb +0 -6
  42. data/config/puma.rb +43 -0
  43. data/db/migrate/01_create_cms.rb +0 -1
  44. data/db/migrate/02_add_markdown_to_snippets.rb +5 -0
  45. data/gemfiles/7.1.gemfile +3 -2
  46. data/gemfiles/7.2.gemfile +3 -2
  47. data/gemfiles/{6.1.gemfile → 8.0.gemfile} +3 -2
  48. data/lib/comfortable_media_surfer/content/tags/audio.rb +1 -1
  49. data/lib/comfortable_media_surfer/content/tags/breadcrumbs.rb +1 -1
  50. data/lib/comfortable_media_surfer/content/tags/children.rb +1 -1
  51. data/lib/comfortable_media_surfer/content/tags/siblings.rb +1 -1
  52. data/lib/comfortable_media_surfer/engine.rb +3 -8
  53. data/lib/comfortable_media_surfer/extensions/has_revisions.rb +1 -1
  54. data/lib/comfortable_media_surfer/render_methods.rb +7 -7
  55. data/lib/comfortable_media_surfer/version.rb +1 -1
  56. data/lib/generators/comfy/cms/README +2 -9
  57. data/lib/generators/comfy/cms/cms_generator.rb +9 -7
  58. data/lib/generators/comfy/scaffold/scaffold_generator.rb +1 -1
  59. data/lib/tasks/cms_assets.rake +19 -0
  60. data/package-lock.json +379 -0
  61. data/package.json +23 -0
  62. data/rakelib/create_release.rake +17 -17
  63. metadata +24 -146
  64. data/app/assets/javascripts/comfy/vendor/Moxie.swf +0 -0
  65. data/app/assets/javascripts/comfy/vendor/Moxie.xap +0 -0
  66. data/app/assets/javascripts/comfy/vendor/bootstrap.bundle.min.js +0 -7
  67. data/app/assets/javascripts/comfy/vendor/bootstrap.bundle.min.js.map +0 -1
  68. data/app/assets/javascripts/comfy/vendor/codemirror/addon/edit/closetag.js +0 -169
  69. data/app/assets/javascripts/comfy/vendor/codemirror/mode/css/css.js +0 -832
  70. data/app/assets/javascripts/comfy/vendor/codemirror/mode/htmlmixed/htmlmixed.js +0 -152
  71. data/app/assets/javascripts/comfy/vendor/codemirror/mode/javascript/javascript.js +0 -875
  72. data/app/assets/javascripts/comfy/vendor/codemirror/mode/markdown/markdown.js +0 -861
  73. data/app/assets/javascripts/comfy/vendor/codemirror/mode/xml/xml.js +0 -394
  74. data/app/assets/javascripts/comfy/vendor/codemirror.js +0 -9653
  75. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ar.js +0 -52
  76. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/bg.js +0 -65
  77. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/bn.js +0 -65
  78. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ca.js +0 -83
  79. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/cs.js +0 -70
  80. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/cy.js +0 -92
  81. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/da.js +0 -71
  82. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/de.js +0 -70
  83. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/default.js +0 -80
  84. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/eo.js +0 -73
  85. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/es.js +0 -69
  86. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/et.js +0 -73
  87. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/fa.js +0 -68
  88. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/fi.js +0 -69
  89. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/fr.js +0 -75
  90. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/gr.js +0 -74
  91. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/he.js +0 -57
  92. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/hi.js +0 -65
  93. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/hr.js +0 -66
  94. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/hu.js +0 -72
  95. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/id.js +0 -61
  96. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/it.js +0 -70
  97. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ja.js +0 -57
  98. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ko.js +0 -60
  99. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/lt.js +0 -72
  100. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/lv.js +0 -67
  101. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/mk.js +0 -69
  102. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/mn.js +0 -67
  103. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ms.js +0 -68
  104. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/my.js +0 -69
  105. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/nl.js +0 -75
  106. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/no.js +0 -73
  107. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pa.js +0 -65
  108. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pl.js +0 -68
  109. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pt-BR.js +0 -66
  110. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pt.js +0 -66
  111. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ro.js +0 -69
  112. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ru.js +0 -66
  113. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/si.js +0 -65
  114. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sk.js +0 -70
  115. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sl.js +0 -70
  116. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sq.js +0 -65
  117. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sr.js +0 -69
  118. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sv.js +0 -70
  119. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/th.js +0 -72
  120. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/tr.js +0 -66
  121. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/uk.js +0 -66
  122. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/vn.js +0 -66
  123. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/zh-CN.js +0 -61
  124. data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/zh-TW.js +0 -61
  125. data/app/assets/javascripts/comfy/vendor/moxie.min.js +0 -16
  126. data/app/assets/javascripts/comfy/vendor/plupload.dev.js +0 -2497
  127. data/app/assets/javascripts/comfy/vendor/sortable.min.js +0 -5
  128. data/app/assets/stylesheets/comfy/vendor/codemirror.css +0 -346
  129. data/app/assets/stylesheets/comfy/vendor/flatpickr.min.css +0 -13
  130. data/config/initializers/assets.rb +0 -14
  131. data/gemfiles/7.0.gemfile +0 -31
@@ -1,169 +0,0 @@
1
- // CodeMirror, copyright (c) by Marijn Haverbeke and others
2
- // Distributed under an MIT license: http://codemirror.net/LICENSE
3
-
4
- /**
5
- * Tag-closer extension for CodeMirror.
6
- *
7
- * This extension adds an "autoCloseTags" option that can be set to
8
- * either true to get the default behavior, or an object to further
9
- * configure its behavior.
10
- *
11
- * These are supported options:
12
- *
13
- * `whenClosing` (default true)
14
- * Whether to autoclose when the '/' of a closing tag is typed.
15
- * `whenOpening` (default true)
16
- * Whether to autoclose the tag when the final '>' of an opening
17
- * tag is typed.
18
- * `dontCloseTags` (default is empty tags for HTML, none for XML)
19
- * An array of tag names that should not be autoclosed.
20
- * `indentTags` (default is block tags for HTML, none for XML)
21
- * An array of tag names that should, when opened, cause a
22
- * blank line to be added inside the tag, and the blank line and
23
- * closing line to be indented.
24
- *
25
- * See demos/closetag.html for a usage example.
26
- */
27
-
28
- (function(mod) {
29
- if (typeof exports == "object" && typeof module == "object") // CommonJS
30
- mod(require("../../lib/codemirror"), require("../fold/xml-fold"));
31
- else if (typeof define == "function" && define.amd) // AMD
32
- define(["../../lib/codemirror", "../fold/xml-fold"], mod);
33
- else // Plain browser env
34
- mod(CodeMirror);
35
- })(function(CodeMirror) {
36
- CodeMirror.defineOption("autoCloseTags", false, function(cm, val, old) {
37
- if (old != CodeMirror.Init && old)
38
- cm.removeKeyMap("autoCloseTags");
39
- if (!val) return;
40
- var map = {name: "autoCloseTags"};
41
- if (typeof val != "object" || val.whenClosing)
42
- map["'/'"] = function(cm) { return autoCloseSlash(cm); };
43
- if (typeof val != "object" || val.whenOpening)
44
- map["'>'"] = function(cm) { return autoCloseGT(cm); };
45
- cm.addKeyMap(map);
46
- });
47
-
48
- var htmlDontClose = ["area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param",
49
- "source", "track", "wbr"];
50
- var htmlIndent = ["applet", "blockquote", "body", "button", "div", "dl", "fieldset", "form", "frameset", "h1", "h2", "h3", "h4",
51
- "h5", "h6", "head", "html", "iframe", "layer", "legend", "object", "ol", "p", "select", "table", "ul"];
52
-
53
- function autoCloseGT(cm) {
54
- if (cm.getOption("disableInput")) return CodeMirror.Pass;
55
- var ranges = cm.listSelections(), replacements = [];
56
- for (var i = 0; i < ranges.length; i++) {
57
- if (!ranges[i].empty()) return CodeMirror.Pass;
58
- var pos = ranges[i].head, tok = cm.getTokenAt(pos);
59
- var inner = CodeMirror.innerMode(cm.getMode(), tok.state), state = inner.state;
60
- if (inner.mode.name != "xml" || !state.tagName) return CodeMirror.Pass;
61
-
62
- var opt = cm.getOption("autoCloseTags"), html = inner.mode.configuration == "html";
63
- var dontCloseTags = (typeof opt == "object" && opt.dontCloseTags) || (html && htmlDontClose);
64
- var indentTags = (typeof opt == "object" && opt.indentTags) || (html && htmlIndent);
65
-
66
- var tagName = state.tagName;
67
- if (tok.end > pos.ch) tagName = tagName.slice(0, tagName.length - tok.end + pos.ch);
68
- var lowerTagName = tagName.toLowerCase();
69
- // Don't process the '>' at the end of an end-tag or self-closing tag
70
- if (!tagName ||
71
- tok.type == "string" && (tok.end != pos.ch || !/[\"\']/.test(tok.string.charAt(tok.string.length - 1)) || tok.string.length == 1) ||
72
- tok.type == "tag" && state.type == "closeTag" ||
73
- tok.string.indexOf("/") == (tok.string.length - 1) || // match something like <someTagName />
74
- dontCloseTags && indexOf(dontCloseTags, lowerTagName) > -1 ||
75
- closingTagExists(cm, tagName, pos, state, true))
76
- return CodeMirror.Pass;
77
-
78
- var indent = indentTags && indexOf(indentTags, lowerTagName) > -1;
79
- replacements[i] = {indent: indent,
80
- text: ">" + (indent ? "\n\n" : "") + "</" + tagName + ">",
81
- newPos: indent ? CodeMirror.Pos(pos.line + 1, 0) : CodeMirror.Pos(pos.line, pos.ch + 1)};
82
- }
83
-
84
- for (var i = ranges.length - 1; i >= 0; i--) {
85
- var info = replacements[i];
86
- cm.replaceRange(info.text, ranges[i].head, ranges[i].anchor, "+insert");
87
- var sel = cm.listSelections().slice(0);
88
- sel[i] = {head: info.newPos, anchor: info.newPos};
89
- cm.setSelections(sel);
90
- if (info.indent) {
91
- cm.indentLine(info.newPos.line, null, true);
92
- cm.indentLine(info.newPos.line + 1, null, true);
93
- }
94
- }
95
- }
96
-
97
- function autoCloseCurrent(cm, typingSlash) {
98
- var ranges = cm.listSelections(), replacements = [];
99
- var head = typingSlash ? "/" : "</";
100
- for (var i = 0; i < ranges.length; i++) {
101
- if (!ranges[i].empty()) return CodeMirror.Pass;
102
- var pos = ranges[i].head, tok = cm.getTokenAt(pos);
103
- var inner = CodeMirror.innerMode(cm.getMode(), tok.state), state = inner.state;
104
- if (typingSlash && (tok.type == "string" || tok.string.charAt(0) != "<" ||
105
- tok.start != pos.ch - 1))
106
- return CodeMirror.Pass;
107
- // Kludge to get around the fact that we are not in XML mode
108
- // when completing in JS/CSS snippet in htmlmixed mode. Does not
109
- // work for other XML embedded languages (there is no general
110
- // way to go from a mixed mode to its current XML state).
111
- var replacement;
112
- if (inner.mode.name != "xml") {
113
- if (cm.getMode().name == "htmlmixed" && inner.mode.name == "javascript")
114
- replacement = head + "script";
115
- else if (cm.getMode().name == "htmlmixed" && inner.mode.name == "css")
116
- replacement = head + "style";
117
- else
118
- return CodeMirror.Pass;
119
- } else {
120
- if (!state.context || !state.context.tagName ||
121
- closingTagExists(cm, state.context.tagName, pos, state))
122
- return CodeMirror.Pass;
123
- replacement = head + state.context.tagName;
124
- }
125
- if (cm.getLine(pos.line).charAt(tok.end) != ">") replacement += ">";
126
- replacements[i] = replacement;
127
- }
128
- cm.replaceSelections(replacements);
129
- ranges = cm.listSelections();
130
- for (var i = 0; i < ranges.length; i++)
131
- if (i == ranges.length - 1 || ranges[i].head.line < ranges[i + 1].head.line)
132
- cm.indentLine(ranges[i].head.line);
133
- }
134
-
135
- function autoCloseSlash(cm) {
136
- if (cm.getOption("disableInput")) return CodeMirror.Pass;
137
- return autoCloseCurrent(cm, true);
138
- }
139
-
140
- CodeMirror.commands.closeTag = function(cm) { return autoCloseCurrent(cm); };
141
-
142
- function indexOf(collection, elt) {
143
- if (collection.indexOf) return collection.indexOf(elt);
144
- for (var i = 0, e = collection.length; i < e; ++i)
145
- if (collection[i] == elt) return i;
146
- return -1;
147
- }
148
-
149
- // If xml-fold is loaded, we use its functionality to try and verify
150
- // whether a given tag is actually unclosed.
151
- function closingTagExists(cm, tagName, pos, state, newTag) {
152
- if (!CodeMirror.scanForClosingTag) return false;
153
- var end = Math.min(cm.lastLine() + 1, pos.line + 500);
154
- var nextClose = CodeMirror.scanForClosingTag(cm, pos, null, end);
155
- if (!nextClose || nextClose.tag != tagName) return false;
156
- var cx = state.context;
157
- // If the immediate wrapping context contains onCx instances of
158
- // the same tag, a closing tag only exists if there are at least
159
- // that many closing tags of that type following.
160
- for (var onCx = newTag ? 1 : 0; cx && cx.tagName == tagName; cx = cx.prev) ++onCx;
161
- pos = nextClose.to;
162
- for (var i = 1; i < onCx; i++) {
163
- var next = CodeMirror.scanForClosingTag(cm, pos, null, end);
164
- if (!next || next.tag != tagName) return false;
165
- pos = next.to;
166
- }
167
- return true;
168
- }
169
- });