alchemy_cms 7.1.0.pre.b1 → 7.1.0.pre.b2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +17 -0
  3. data/Gemfile +1 -1
  4. data/README.md +2 -2
  5. data/alchemy_cms.gemspec +1 -1
  6. data/app/assets/config/alchemy_manifest.js +3 -4
  7. data/app/assets/images/alchemy/missing-image.svg +1 -1
  8. data/app/assets/javascripts/alchemy/admin.js +0 -4
  9. data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +4 -4
  10. data/app/assets/javascripts/tinymce/icons/remixicons/icons.js +93 -0
  11. data/app/assets/javascripts/tinymce/plugins/alchemy_link/plugin.min.js +37 -18
  12. data/app/assets/stylesheets/alchemy/_variables.scss +11 -3
  13. data/app/assets/stylesheets/alchemy/archive.scss +5 -2
  14. data/app/assets/stylesheets/alchemy/buttons.scss +5 -4
  15. data/app/assets/stylesheets/alchemy/dialogs.scss +1 -1
  16. data/app/assets/stylesheets/alchemy/elements.scss +4 -5
  17. data/app/assets/stylesheets/tinymce/skins/content/alchemy/content.min.scss +69 -0
  18. data/app/assets/stylesheets/tinymce/skins/skintool.json +38 -0
  19. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.css +711 -0
  20. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.inline.css +705 -0
  21. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.inline.min.css +7 -0
  22. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.min.css +7 -0
  23. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.mobile.css +29 -0
  24. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.mobile.min.css +7 -0
  25. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/fonts/tinymce-mobile.woff +0 -0
  26. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/skin.min.scss +3798 -0
  27. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/skin.mobile.css +677 -0
  28. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/skin.mobile.min.css +7 -0
  29. data/app/controllers/alchemy/admin/pages_controller.rb +9 -4
  30. data/app/javascript/alchemy_admin/clipboard.js +16 -0
  31. data/app/javascript/alchemy_admin/components/tinymce.js +8 -20
  32. data/app/javascript/alchemy_admin/picture_editors.js +4 -2
  33. data/app/javascript/alchemy_admin/utils/debounce.js +10 -0
  34. data/app/javascript/alchemy_admin/utils/max.js +3 -0
  35. data/app/javascript/alchemy_admin.js +4 -10
  36. data/app/models/alchemy/page/page_naming.rb +7 -0
  37. data/app/models/alchemy/page.rb +2 -2
  38. data/app/models/alchemy/picture_variant.rb +11 -2
  39. data/app/models/concerns/alchemy/picture_thumbnails.rb +1 -1
  40. data/app/views/alchemy/admin/attachments/show.html.erb +2 -15
  41. data/app/views/alchemy/admin/pictures/_picture.html.erb +3 -5
  42. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +1 -1
  43. data/app/views/alchemy/admin/resources/_filter.html.erb +1 -1
  44. data/app/views/alchemy/admin/resources/_per_page_select.html.erb +1 -1
  45. data/app/views/alchemy/admin/tinymce/_setup.html.erb +1 -2
  46. data/app/views/alchemy/ingredients/shared/_picture_tools.html.erb +2 -2
  47. data/bundles/shoelace.js +10 -0
  48. data/bundles/tinymce.js +20 -0
  49. data/config/alchemy/config.yml +11 -10
  50. data/config/brakeman.ignore +0 -34
  51. data/config/importmap.rb +9 -14
  52. data/config/initializers/dragonfly.rb +1 -0
  53. data/config/locales/alchemy.en.yml +2 -0
  54. data/lib/alchemy/config.rb +24 -2
  55. data/lib/alchemy/engine.rb +2 -1
  56. data/lib/alchemy/test_support/having_picture_thumbnails_examples.rb +6 -6
  57. data/lib/alchemy/tinymce.rb +13 -2
  58. data/lib/alchemy/version.rb +1 -1
  59. data/package.json +18 -6
  60. data/rollup.config.mjs +65 -0
  61. data/vendor/assets/stylesheets/tinymce/skins/content/default/content.min.css +1 -0
  62. data/vendor/javascript/clipboard.min.js +7 -0
  63. data/vendor/javascript/flatpickr.min.js +1 -0
  64. data/vendor/javascript/keymaster.min.js +1 -0
  65. data/vendor/javascript/rails-ujs.min.js +1 -0
  66. data/vendor/javascript/shoelace.min.js +995 -0
  67. data/vendor/javascript/sortable.min.js +7 -0
  68. data/vendor/javascript/tinymce.min.js +1 -0
  69. data/vendor/javascript/ungap-custom-elements.min.js +3 -0
  70. metadata +30 -38
  71. data/.codeclimate.yml +0 -35
  72. data/.editorconfig +0 -23
  73. data/.github/FUNDING.yml +0 -4
  74. data/.github/ISSUE_TEMPLATE/Bug_report.md +0 -22
  75. data/.github/ISSUE_TEMPLATE/Feature_request.md +0 -17
  76. data/.github/PULL_REQUEST_TEMPLATE.md +0 -18
  77. data/.github/workflows/backport.yml +0 -36
  78. data/.github/workflows/brakeman-analysis.yml +0 -46
  79. data/.github/workflows/lint.yml +0 -37
  80. data/.github/workflows/stale.yml +0 -33
  81. data/.github/workflows/test.yml +0 -125
  82. data/.gitignore +0 -32
  83. data/.hound.yml +0 -9
  84. data/.localeapp/config.rb +0 -8
  85. data/.prettierrc +0 -6
  86. data/.rspec +0 -1
  87. data/.rubocop.yml +0 -7
  88. data/.standard.yml +0 -4
  89. data/.yardopts +0 -5
  90. data/app/assets/stylesheets/tinymce/skins/alchemy/content.min.css.scss +0 -94
  91. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.svg +0 -63
  92. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.ttf +0 -0
  93. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.woff +0 -0
  94. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.svg +0 -129
  95. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.ttf +0 -0
  96. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.woff +0 -0
  97. data/app/assets/stylesheets/tinymce/skins/alchemy/img/anchor.gif +0 -0
  98. data/app/assets/stylesheets/tinymce/skins/alchemy/img/loader.gif +0 -0
  99. data/app/assets/stylesheets/tinymce/skins/alchemy/img/object.gif +0 -0
  100. data/app/assets/stylesheets/tinymce/skins/alchemy/img/trans.gif +0 -0
  101. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +0 -2077
  102. data/vendor/assets/javascripts/clipboard.min.js +0 -7
  103. data/vendor/assets/javascripts/keymaster.js +0 -296
  104. data/vendor/assets/javascripts/requestAnimationFrame.js +0 -31
  105. data/vendor/assets/javascripts/tinymce/license.txt +0 -504
  106. data/vendor/assets/javascripts/tinymce/tinymce.min.js +0 -2
@@ -0,0 +1,3 @@
1
+ /*! (c) Andrea Giammarchi @webreflection ISC */
2
+ !function(){var e=function(e,t){var n=function(e){for(var t=0,n=e.length;t<n;t++)r(e[t]);},r=function(e){var t=e.target,n=e.attributeName,r=e.oldValue;t.attributeChangedCallback(n,r,t.getAttribute(n));};return function(o,a){var l=o.constructor.observedAttributes;return l&&e(a).then((function(){new t(n).observe(o,{attributes:!0,attributeOldValue:!0,attributeFilter:l});for(var e=0,a=l.length;e<a;e++)o.hasAttribute(l[e])&&r({target:o,attributeName:l[e],oldValue:null});})),o}};function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function n(e,n){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,n){if(e){if("string"==typeof e)return t(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return "Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){r&&(e=r);var o=0,a=function(){};return {s:a,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var l,i=!0,c=!1;return {s:function(){r=r.call(e);},n:function(){var e=r.next();return i=e.done,e},e:function(e){c=!0,l=e;},f:function(){try{i||null==r.return||r.return();}finally{if(c)throw l}}}}
3
+ /*! (c) Andrea Giammarchi - ISC */var r=!0,o=!1,a="querySelectorAll",l="querySelectorAll",i=self,c=i.document,u=i.Element,s=i.MutationObserver,f=i.Set,d=i.WeakMap,h=function(e){return l in e},v=[].filter,p=function(e){var t=new d,i=function(n,r){var o;if(r)for(var a,l=function(e){return e.matches||e.webkitMatchesSelector||e.msMatchesSelector}(n),i=0,c=y.length;i<c;i++)l.call(n,a=y[i])&&(t.has(n)||t.set(n,new f),(o=t.get(n)).has(a)||(o.add(a),e.handle(n,r,a)));else t.has(n)&&(o=t.get(n),t.delete(n),o.forEach((function(t){e.handle(n,r,t);})));},p=function(e){for(var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=0,r=e.length;n<r;n++)i(e[n],t);},y=e.query,g=e.root||c,m=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:MutationObserver,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:["*"],c=function t(o,l,i,c,u,s){var f,d=n(o);try{for(d.s();!(f=d.n()).done;){var h=f.value;(s||a in h)&&(u?i.has(h)||(i.add(h),c.delete(h),e(h,u)):c.has(h)||(c.add(h),i.delete(h),e(h,u)),s||t(h[a](l),l,i,c,u,r));}}catch(e){d.e(e);}finally{d.f();}},u=new l((function(e){if(i.length){var t,a=i.join(","),l=new Set,u=new Set,s=n(e);try{for(s.s();!(t=s.n()).done;){var f=t.value,d=f.addedNodes,h=f.removedNodes;c(h,a,l,u,o,o),c(d,a,l,u,r,o);}}catch(e){s.e(e);}finally{s.f();}}})),s=u.observe;return (u.observe=function(e){return s.call(u,e,{subtree:r,childList:r})})(t),u}(i,g,s,y),w=u.prototype.attachShadow;return w&&(u.prototype.attachShadow=function(e){var t=w.call(this,e);return m.observe(t),t}),y.length&&p(g[l](y)),{drop:function(e){for(var n=0,r=e.length;n<r;n++)t.delete(e[n]);},flush:function(){for(var e=m.takeRecords(),t=0,n=e.length;t<n;t++)p(v.call(e[t].removedNodes,h),!1),p(v.call(e[t].addedNodes,h),!0);},observer:m,parse:p}},y=self,g=y.document,m=y.Map,w=y.MutationObserver,b=y.Object,E=y.Set,S=y.WeakMap,A=y.Element,M=y.HTMLElement,O=y.Node,N=y.Error,C=y.TypeError,T=y.Reflect,q=b.defineProperty,D=b.keys,I=b.getOwnPropertyNames,P=b.setPrototypeOf,k=!self.customElements,L=function(e){for(var t=D(e),n=[],r=new E,o=t.length,a=0;a<o;a++){n[a]=e[t[a]];try{delete e[t[a]];}catch(e){r.add(a);}}return function(){for(var a=0;a<o;a++)r.has(a)||(e[t[a]]=n[a]);}};if(k){var x=function(){var e=this.constructor;if(!$.has(e))throw new C("Illegal constructor");var t=$.get(e);if(W)return F(W,t);var n=H.call(g,t);return F(P(n,e.prototype),t)},H=g.createElement,$=new m,_=new m,j=new m,R=new m,V=[],U=p({query:V,handle:function(e,t,n){var r=j.get(n);if(t&&!r.isPrototypeOf(e)){var o=L(e);W=P(e,r);try{new r.constructor;}finally{W=null,o();}}var a="".concat(t?"":"dis","connectedCallback");a in r&&e[a]();}}).parse,W=null,B=function(e){if(!_.has(e)){var t,n=new Promise((function(e){t=e;}));_.set(e,{$:n,_:t});}return _.get(e).$},F=e(B,w);self.customElements={define:function(e,t){if(R.has(e))throw new N('the name "'.concat(e,'" has already been used with this registry'));$.set(t,e),j.set(e,t.prototype),R.set(e,t),V.push(e),B(e).then((function(){U(g.querySelectorAll(e));})),_.get(e)._(t);},get:function(e){return R.get(e)},whenDefined:B},q(x.prototype=M.prototype,"constructor",{value:x}),self.HTMLElement=x,g.createElement=function(e,t){var n=t&&t.is,r=n?R.get(n):R.get(e);return r?new r:H.call(g,e)},"isConnected"in O.prototype||q(O.prototype,"isConnected",{configurable:!0,get:function(){return !(this.ownerDocument.compareDocumentPosition(this)&this.DOCUMENT_POSITION_DISCONNECTED)}});}else if(k=!self.customElements.get("extends-br"))try{var z=function e(){return self.Reflect.construct(HTMLBRElement,[],e)};z.prototype=HTMLLIElement.prototype;var G="extends-br";self.customElements.define("extends-br",z,{extends:"br"}),k=g.createElement("br",{is:G}).outerHTML.indexOf(G)<0;var J=self.customElements,K=J.get,Q=J.whenDefined;self.customElements.whenDefined=function(e){var t=this;return Q.call(this,e).then((function(n){return n||K.call(t,e)}))};}catch(e){}if(k){var X=function(e){var t=ae.get(e);ve(t.querySelectorAll(this),e.isConnected);},Y=self.customElements,Z=g.createElement,ee=Y.define,te=Y.get,ne=Y.upgrade,re=T||{construct:function(e){return e.call(this)}},oe=re.construct,ae=new S,le=new E,ie=new m,ce=new m,ue=new m,se=new m,fe=[],de=[],he=function(e){return se.get(e)||te.call(Y,e)},ve=p({query:de,handle:function(e,t,n){var r=ue.get(n);if(t&&!r.isPrototypeOf(e)){var o=L(e);we=P(e,r);try{new r.constructor;}finally{we=null,o();}}var a="".concat(t?"":"dis","connectedCallback");a in r&&e[a]();}}).parse,pe=p({query:fe,handle:function(e,t){ae.has(e)&&(t?le.add(e):le.delete(e),de.length&&X.call(de,e));}}).parse,ye=A.prototype.attachShadow;ye&&(A.prototype.attachShadow=function(e){var t=ye.call(this,e);return ae.set(this,t),t});var ge=function(e){if(!ce.has(e)){var t,n=new Promise((function(e){t=e;}));ce.set(e,{$:n,_:t});}return ce.get(e).$},me=e(ge,w),we=null;I(self).filter((function(e){return /^HTML.*Element$/.test(e)})).forEach((function(e){var t=self[e];function n(){var e=this.constructor;if(!ie.has(e))throw new C("Illegal constructor");var n=ie.get(e),r=n.is,o=n.tag;if(r){if(we)return me(we,r);var a=Z.call(g,o);return a.setAttribute("is",r),me(P(a,e.prototype),r)}return oe.call(this,t,[],e)}q(n.prototype=t.prototype,"constructor",{value:n}),q(self,e,{value:n});})),g.createElement=function(e,t){var n=t&&t.is;if(n){var r=se.get(n);if(r&&ie.get(r).tag===e)return new r}var o=Z.call(g,e);return n&&o.setAttribute("is",n),o},Y.get=he,Y.whenDefined=ge,Y.upgrade=function(e){var t=e.getAttribute("is");if(t){var n=se.get(t);if(n)return void me(P(e,n.prototype),t)}ne.call(Y,e);},Y.define=function(e,t,n){if(he(e))throw new N("'".concat(e,"' has already been defined as a custom element"));var r,o=n&&n.extends;ie.set(t,o?{is:e,tag:o}:{is:"",tag:e}),o?(r="".concat(o,'[is="').concat(e,'"]'),ue.set(r,t.prototype),se.set(e,t),de.push(r)):(ee.apply(Y,arguments),fe.push(r=e)),ge(e).then((function(){o?(ve(g.querySelectorAll(r)),le.forEach(X,[r])):pe(g.querySelectorAll(r));})),ce.get(e)._(t);};}}();
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alchemy_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.1.0.pre.b1
4
+ version: 7.1.0.pre.b2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas von Deyen
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2023-12-28 00:00:00.000000000 Z
16
+ date: 2024-01-09 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: actionmailer
@@ -718,25 +718,6 @@ executables: []
718
718
  extensions: []
719
719
  extra_rdoc_files: []
720
720
  files:
721
- - ".codeclimate.yml"
722
- - ".editorconfig"
723
- - ".github/FUNDING.yml"
724
- - ".github/ISSUE_TEMPLATE/Bug_report.md"
725
- - ".github/ISSUE_TEMPLATE/Feature_request.md"
726
- - ".github/PULL_REQUEST_TEMPLATE.md"
727
- - ".github/workflows/backport.yml"
728
- - ".github/workflows/brakeman-analysis.yml"
729
- - ".github/workflows/lint.yml"
730
- - ".github/workflows/stale.yml"
731
- - ".github/workflows/test.yml"
732
- - ".gitignore"
733
- - ".hound.yml"
734
- - ".localeapp/config.rb"
735
- - ".prettierrc"
736
- - ".rspec"
737
- - ".rubocop.yml"
738
- - ".standard.yml"
739
- - ".yardopts"
740
721
  - CHANGELOG.md
741
722
  - CODE_OF_CONDUCT.md
742
723
  - CONTRIBUTING.md
@@ -774,6 +755,7 @@ files:
774
755
  - app/assets/javascripts/alchemy/templates/node_folder.hbs
775
756
  - app/assets/javascripts/alchemy/templates/page.hbs
776
757
  - app/assets/javascripts/alchemy/templates/page_folder.hbs
758
+ - app/assets/javascripts/tinymce/icons/remixicons/icons.js
777
759
  - app/assets/javascripts/tinymce/plugins/alchemy_link/plugin.min.js
778
760
  - app/assets/stylesheets/alchemy/_custom-properties.scss
779
761
  - app/assets/stylesheets/alchemy/_defaults.scss
@@ -824,18 +806,18 @@ files:
824
806
  - app/assets/stylesheets/alchemy/typography.scss
825
807
  - app/assets/stylesheets/alchemy/upload.scss
826
808
  - app/assets/stylesheets/alchemy/welcome.sass
827
- - app/assets/stylesheets/tinymce/skins/alchemy/content.min.css.scss
828
- - app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.svg
829
- - app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.ttf
830
- - app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.woff
831
- - app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.svg
832
- - app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.ttf
833
- - app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.woff
834
- - app/assets/stylesheets/tinymce/skins/alchemy/img/anchor.gif
835
- - app/assets/stylesheets/tinymce/skins/alchemy/img/loader.gif
836
- - app/assets/stylesheets/tinymce/skins/alchemy/img/object.gif
837
- - app/assets/stylesheets/tinymce/skins/alchemy/img/trans.gif
838
- - app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss
809
+ - app/assets/stylesheets/tinymce/skins/content/alchemy/content.min.scss
810
+ - app/assets/stylesheets/tinymce/skins/skintool.json
811
+ - app/assets/stylesheets/tinymce/skins/ui/alchemy/content.css
812
+ - app/assets/stylesheets/tinymce/skins/ui/alchemy/content.inline.css
813
+ - app/assets/stylesheets/tinymce/skins/ui/alchemy/content.inline.min.css
814
+ - app/assets/stylesheets/tinymce/skins/ui/alchemy/content.min.css
815
+ - app/assets/stylesheets/tinymce/skins/ui/alchemy/content.mobile.css
816
+ - app/assets/stylesheets/tinymce/skins/ui/alchemy/content.mobile.min.css
817
+ - app/assets/stylesheets/tinymce/skins/ui/alchemy/fonts/tinymce-mobile.woff
818
+ - app/assets/stylesheets/tinymce/skins/ui/alchemy/skin.min.scss
819
+ - app/assets/stylesheets/tinymce/skins/ui/alchemy/skin.mobile.css
820
+ - app/assets/stylesheets/tinymce/skins/ui/alchemy/skin.mobile.min.css
839
821
  - app/components/alchemy/admin/node_select.rb
840
822
  - app/components/alchemy/admin/page_select.rb
841
823
  - app/components/alchemy/ingredients/audio_view.rb
@@ -902,6 +884,7 @@ files:
902
884
  - app/helpers/alchemy/pages_helper.rb
903
885
  - app/helpers/alchemy/url_helper.rb
904
886
  - app/javascript/alchemy_admin.js
887
+ - app/javascript/alchemy_admin/clipboard.js
905
888
  - app/javascript/alchemy_admin/components/alchemy_html_element.js
906
889
  - app/javascript/alchemy_admin/components/button.js
907
890
  - app/javascript/alchemy_admin/components/char_counter.js
@@ -943,9 +926,11 @@ files:
943
926
  - app/javascript/alchemy_admin/spinner.js
944
927
  - app/javascript/alchemy_admin/tags_autocomplete.js
945
928
  - app/javascript/alchemy_admin/utils/ajax.js
929
+ - app/javascript/alchemy_admin/utils/debounce.js
946
930
  - app/javascript/alchemy_admin/utils/dom_helpers.js
947
931
  - app/javascript/alchemy_admin/utils/events.js
948
932
  - app/javascript/alchemy_admin/utils/format.js
933
+ - app/javascript/alchemy_admin/utils/max.js
949
934
  - app/javascript/alchemy_admin/utils/string_conversions.js
950
935
  - app/javascript/menubar.js
951
936
  - app/jobs/alchemy/base_job.rb
@@ -1248,6 +1233,8 @@ files:
1248
1233
  - bin/rspec
1249
1234
  - bin/setup
1250
1235
  - bin/start
1236
+ - bundles/shoelace.js
1237
+ - bundles/tinymce.js
1251
1238
  - config/alchemy/config.yml
1252
1239
  - config/alchemy/modules.yml
1253
1240
  - config/brakeman.ignore
@@ -1388,22 +1375,27 @@ files:
1388
1375
  - lib/tasks/alchemy/upgrade.rake
1389
1376
  - lib/tasks/alchemy/usage.rake
1390
1377
  - package.json
1378
+ - rollup.config.mjs
1391
1379
  - vendor/assets/fonts/remixicon.eot
1392
1380
  - vendor/assets/fonts/remixicon.svg
1393
1381
  - vendor/assets/fonts/remixicon.ttf
1394
1382
  - vendor/assets/fonts/remixicon.woff
1395
1383
  - vendor/assets/fonts/remixicon.woff2
1396
1384
  - vendor/assets/images/Jcrop.gif
1397
- - vendor/assets/javascripts/clipboard.min.js
1398
1385
  - vendor/assets/javascripts/jquery_plugins/jquery.Jcrop.min.js
1399
1386
  - vendor/assets/javascripts/jquery_plugins/select2.js
1400
- - vendor/assets/javascripts/keymaster.js
1401
- - vendor/assets/javascripts/requestAnimationFrame.js
1402
- - vendor/assets/javascripts/tinymce/license.txt
1403
- - vendor/assets/javascripts/tinymce/tinymce.min.js
1404
1387
  - vendor/assets/stylesheets/alchemy_admin/select2.scss
1405
1388
  - vendor/assets/stylesheets/jquery.Jcrop.min.scss
1406
1389
  - vendor/assets/stylesheets/remixicon.scss
1390
+ - vendor/assets/stylesheets/tinymce/skins/content/default/content.min.css
1391
+ - vendor/javascript/clipboard.min.js
1392
+ - vendor/javascript/flatpickr.min.js
1393
+ - vendor/javascript/keymaster.min.js
1394
+ - vendor/javascript/rails-ujs.min.js
1395
+ - vendor/javascript/shoelace.min.js
1396
+ - vendor/javascript/sortable.min.js
1397
+ - vendor/javascript/tinymce.min.js
1398
+ - vendor/javascript/ungap-custom-elements.min.js
1407
1399
  homepage: https://alchemy-cms.com
1408
1400
  licenses:
1409
1401
  - BSD New
data/.codeclimate.yml DELETED
@@ -1,35 +0,0 @@
1
- ---
2
- engines:
3
- brakeman:
4
- enabled: true
5
- csslint:
6
- enabled: false
7
- coffeelint:
8
- enabled: false
9
- duplication:
10
- enabled: true
11
- exclude_paths:
12
- - "lib/alchemy/permissions.rb"
13
- - "lib/alchemy/tasks/tidy.rb"
14
- - "lib/tasks/alchemy/upgrade.rake"
15
- config:
16
- languages:
17
- - ruby
18
- eslint:
19
- enabled: false
20
- fixme:
21
- enabled: false
22
- rubocop:
23
- enabled: false
24
- ratings:
25
- paths:
26
- - Gemfile.lock
27
- - "**.erb"
28
- - "**.rb"
29
- exclude_paths:
30
- - "config/"
31
- - "db/"
32
- - "spec/"
33
- - "lib/alchemy/upgrader/"
34
- - "lib/rails/"
35
- - "vendor/assets/"
data/.editorconfig DELETED
@@ -1,23 +0,0 @@
1
- # EditorConfig is awesome: http://EditorConfig.org
2
-
3
- # top-most EditorConfig file
4
- root = true
5
-
6
- # Unix-style newlines with a newline ending every file
7
- [*]
8
- charset = utf-8
9
- end_of_line = lf
10
- indent_size = 2
11
- indent_style = space
12
- insert_final_newline = true
13
- trim_trailing_whitespace = true
14
- tab_width = 2
15
-
16
- [**.rb]
17
- max_line_length = 100
18
-
19
- [**.js, **.coffee]
20
- max_line_length = 100
21
-
22
- [*.md]
23
- trim_trailing_whitespace = false
data/.github/FUNDING.yml DELETED
@@ -1,4 +0,0 @@
1
- # These are supported funding model platforms
2
-
3
- patreon: alchemy_cms
4
- open_collective: alchemy_cms
@@ -1,22 +0,0 @@
1
- ---
2
- name: Bug report
3
- about: Create a report to help us improve
4
-
5
- ---
6
-
7
- ### Steps to reproduce
8
-
9
- How can we make this happen
10
-
11
- ### Expected behavior
12
-
13
- Tell us what should happen
14
-
15
- ### Actual behavior
16
-
17
- Tell us what happens instead
18
-
19
- ### System configuration
20
-
21
- - Alchemy Version:
22
- - Rails Version:
@@ -1,17 +0,0 @@
1
- ---
2
- name: Feature request
3
- about: Suggest an idea for this project
4
-
5
- ---
6
-
7
- **Is your feature request related to a problem? Please describe.**
8
- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
9
-
10
- **Describe the solution you'd like**
11
- A clear and concise description of what you want to happen.
12
-
13
- **Describe alternatives you've considered**
14
- A clear and concise description of any alternative solutions or features you've considered.
15
-
16
- **Additional context**
17
- Add any other context or screenshots about the feature request here.
@@ -1,18 +0,0 @@
1
- ## What is this pull request for?
2
-
3
- Describe you pull request here...
4
-
5
- Closes #<issue number> (Remove if not related to any issue)
6
-
7
- ### Notable changes (remove if none)
8
-
9
- Explain any changes (maybe breaking?) that have been made.
10
-
11
- ### Screenshots
12
-
13
- Remove if no visual changes have been made.
14
-
15
- ## Checklist
16
- - [ ] I have followed [Pull Request guidelines](https://github.com/AlchemyCMS/alchemy_cms/blob/main/CONTRIBUTING.md)
17
- - [ ] I have added a detailed description into each commit message
18
- - [ ] I have added tests to cover this change
@@ -1,36 +0,0 @@
1
- name: Backport
2
-
3
- on:
4
- pull_request_target:
5
- types:
6
- - closed
7
- - labeled
8
-
9
- jobs:
10
- backport:
11
- name: Backport
12
- runs-on: ubuntu-latest
13
- # Only react to merged PRs for security reasons.
14
- # See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target.
15
- if: >
16
- github.event.pull_request.merged
17
- && (
18
- github.event.action == 'closed'
19
- || (
20
- github.event.action == 'labeled'
21
- && contains(github.event.label.name, 'backport')
22
- )
23
- )
24
- steps:
25
- - name: Backport pull request
26
- uses: sqren/backport-github-action@v8.9.7
27
- with:
28
- github_token: ${{ secrets.ALCHEMY_CI_BOT_ACCESS_TOKEN }}
29
- auto_backport_label_prefix: backport-to-
30
- add_original_reviewers: true
31
- - name: Info log
32
- if: ${{ success() }}
33
- run: cat ~/.backport/backport.info.log
34
- - name: Debug log
35
- if: ${{ failure() }}
36
- run: cat ~/.backport/backport.debug.log
@@ -1,46 +0,0 @@
1
- # This workflow integrates Brakeman with GitHub's Code Scanning feature
2
- # Brakeman is a static analysis security vulnerability scanner for Ruby on Rails applications
3
-
4
- name: Brakeman Scan
5
-
6
- on:
7
- push:
8
- branches: [main]
9
- pull_request:
10
- # The branches below must be a subset of the branches above
11
- branches: [main]
12
- schedule:
13
- - cron: "40 4 * * 2"
14
-
15
- jobs:
16
- brakeman-scan:
17
- name: Brakeman Scan
18
- runs-on: ubuntu-latest
19
- steps:
20
- # Checkout the repository to the GitHub Actions runner
21
- - name: Checkout
22
- uses: actions/checkout@v3
23
-
24
- # Customize the ruby version depending on your needs
25
- - name: Set up Ruby
26
- uses: ruby/setup-ruby@v1
27
- with:
28
- ruby-version: "3.0"
29
-
30
- - name: Setup Brakeman
31
- env:
32
- BRAKEMAN_VERSION: "5.4" # SARIF support is provided in Brakeman version 4.10+
33
- run: |
34
- gem install brakeman --version $BRAKEMAN_VERSION
35
-
36
- # Execute Brakeman CLI and generate a SARIF output with the security issues identified during the analysis
37
- - name: Scan
38
- continue-on-error: true
39
- run: |
40
- brakeman -f sarif -o output.sarif.json .
41
-
42
- # Upload the SARIF file generated in the previous step
43
- - name: Upload SARIF
44
- uses: github/codeql-action/upload-sarif@v2
45
- with:
46
- sarif_file: output.sarif.json
@@ -1,37 +0,0 @@
1
- name: Lint
2
-
3
- on: [pull_request]
4
-
5
- jobs:
6
- Standard:
7
- runs-on: ubuntu-latest
8
- steps:
9
- - name: Checkout code
10
- uses: actions/checkout@v3
11
- - name: Install Ruby and gems
12
- uses: ruby/setup-ruby@v1
13
- with:
14
- ruby-version: "3.0"
15
- bundler-cache: true
16
- - name: Lint Ruby files
17
- run: bundle exec standardrb
18
- Prettier:
19
- runs-on: ubuntu-latest
20
- steps:
21
- - name: Checkout
22
- uses: actions/checkout@v3
23
- - name: Setup Node
24
- uses: actions/setup-node@v3
25
- with:
26
- node-version: "18"
27
- - name: Restore node_modules cache
28
- uses: actions/cache@v3
29
- with:
30
- path: node_modules
31
- key: ${{ runner.os }}-node-modules-${{ hashFiles('package.json') }}
32
- restore-keys: |
33
- ${{ runner.os }}-node-modules
34
- - name: Install dependencies
35
- run: yarn install
36
- - name: Lint code
37
- run: yarn lint
@@ -1,33 +0,0 @@
1
- name: Mark stale issues and pull requests
2
-
3
- on:
4
- schedule:
5
- - cron: "0 0 * * *"
6
-
7
- jobs:
8
- stale:
9
- runs-on: ubuntu-latest
10
-
11
- steps:
12
- - uses: actions/stale@v5
13
- with:
14
- repo-token: ${{ secrets.GITHUB_TOKEN }}
15
- days-before-issue-stale: 180
16
- days-before-close: 30
17
- stale-issue-message: |
18
- This issue has not seen any activity in a long time.
19
- Please create a pull request with a fix or ask someone of the community if they can help.
20
- This issue will be closed in 7 days if no further activity happens.
21
- close-issue-message: |
22
- This issue has not seen any activity in a long time.
23
- If the issue described still exists in recent versions of Alchemy,
24
- please open a new issue with. Thanks for reporting.
25
- stale-pr-message: |
26
- This pull request has not seen any activiy in a long time.
27
- Probably because of missing tests or a necessary rebase.
28
- This PR will be closed in 7 days if no further activity happens.
29
- close-pr-message: |
30
- This pull request has not seen any activiy in a long time.
31
- Probably because of missing tests or a necessary rebase.
32
- Please open a new PR to latest main if you want to continue working on this.
33
- Thanks for the contribution.
@@ -1,125 +0,0 @@
1
- name: Test
2
-
3
- on: [push, pull_request]
4
-
5
- jobs:
6
- RSpec:
7
- runs-on: ubuntu-latest
8
- strategy:
9
- fail-fast: false
10
- matrix:
11
- rails:
12
- - "7.0"
13
- - "7.1"
14
- ruby:
15
- - "3.0"
16
- - "3.1"
17
- - "3.2"
18
- - "3.3"
19
- database:
20
- - mysql
21
- - postgresql
22
- - mariadb
23
- env:
24
- DB: ${{ matrix.database }}
25
- DB_USER: alchemy_user
26
- DB_PASSWORD: password
27
- DB_HOST: "127.0.0.1"
28
- RAILS_ENV: test
29
- RAILS_VERSION: ${{ matrix.rails }}
30
- RUBY_YJIT_ENABLE: "1"
31
- services:
32
- postgres:
33
- image: postgres:11
34
- env:
35
- POSTGRES_USER: alchemy_user
36
- POSTGRES_PASSWORD: password
37
- POSTGRES_DB: alchemy_cms_dummy_test
38
- ports: ["5432:5432"]
39
- options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
40
- mysql:
41
- image: mysql:latest
42
- ports: ["3306:3306"]
43
- env:
44
- MYSQL_USER: alchemy_user
45
- MYSQL_PASSWORD: password
46
- MYSQL_DATABASE: alchemy_cms_dummy_test
47
- MYSQL_ROOT_PASSWORD: password
48
- options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=5
49
- mariadb:
50
- image: mariadb:latest
51
- ports: ["3307:3306"]
52
- env:
53
- MARIADB_USER: alchemy_user
54
- MARIADB_PASSWORD: password
55
- MARIADB_DATABASE: alchemy_cms_dummy_test
56
- MARIADB_ROOT_PASSWORD: password
57
- options: --health-cmd="mariadb-admin ping" --health-interval=10s --health-timeout=5s --health-retries=5
58
- steps:
59
- - uses: actions/checkout@v3
60
- - name: Set up Ruby
61
- uses: ruby/setup-ruby@v1
62
- with:
63
- ruby-version: ${{ matrix.ruby }}
64
- bundler-cache: true
65
- - name: Restore apt cache
66
- id: apt-cache
67
- uses: actions/cache@v3
68
- with:
69
- path: /home/runner/apt/cache
70
- key: ${{ runner.os }}-apt-${{ matrix.database }}
71
- restore-keys: |
72
- ${{ runner.os }}-apt-
73
- - name: Install Postgres headers
74
- if: matrix.database == 'postgresql'
75
- run: |
76
- mkdir -p /home/runner/apt/cache
77
- sudo apt update -qq
78
- sudo apt install -qq --fix-missing libpq-dev -o dir::cache::archives="/home/runner/apt/cache"
79
- sudo chown -R runner /home/runner/apt/cache
80
- - name: Install MySQL headers
81
- if: matrix.database == 'mysql' || matrix.database == 'mariadb'
82
- run: |
83
- mkdir -p /home/runner/apt/cache
84
- sudo apt update -qq
85
- sudo apt install -qq --fix-missing libmysqlclient-dev -o dir::cache::archives="/home/runner/apt/cache"
86
- sudo chown -R runner /home/runner/apt/cache
87
- - name: Restore node modules cache
88
- id: yarn-cache
89
- uses: actions/cache@v3
90
- with:
91
- path: spec/dummy/node_modules
92
- key: ${{ runner.os }}-yarn-dummy-${{ hashFiles('./package.json') }}
93
- restore-keys: |
94
- ${{ runner.os }}-yarn-dummy-
95
- - name: Prepare database
96
- run: |
97
- bundle exec rake alchemy:spec:prepare
98
- - name: Run tests & publish code coverage
99
- uses: paambaati/codeclimate-action@v3.2.0
100
- env:
101
- CC_TEST_REPORTER_ID: bca4349e32f97919210ac8a450b04904b90683fcdd57d65a22c0f5065482bc22
102
- with:
103
- coverageCommand: bundle exec rspec
104
- - uses: actions/upload-artifact@main
105
- if: failure()
106
- with:
107
- name: Screenshots
108
- path: spec/dummy/tmp/screenshots
109
- Jest:
110
- runs-on: ubuntu-latest
111
- env:
112
- NODE_ENV: test
113
- steps:
114
- - uses: actions/checkout@v3
115
- - name: Restore node modules cache
116
- uses: actions/cache@v3
117
- with:
118
- path: node_modules
119
- key: ${{ runner.os }}-yarn-${{ hashFiles('./package.json') }}
120
- restore-keys: |
121
- ${{ runner.os }}-yarn-
122
- - name: Install yarn
123
- run: yarn install
124
- - name: Run jest
125
- run: yarn jest --verbose
data/.gitignore DELETED
@@ -1,32 +0,0 @@
1
- .idea
2
- .yardoc
3
- .DS_Store
4
- .svn
5
- doc/
6
- rdoc/
7
- Gemfile.lock
8
- pkg
9
- tmp
10
- log
11
- .sass-cache
12
- spec/dummy/config/alchemy/config.yml
13
- spec/dummy/db/*.sqlite3*
14
- spec/dummy/postcss.config.js
15
- spec/dummy/public/assets/
16
- spec/dummy/uploads/
17
- .rvmrc
18
- /coverage/
19
- *.gem
20
- /index/
21
- /.bundle/
22
- .rbenv-version
23
- .ruby-gemset
24
- .ruby-version
25
- .env
26
- node_modules
27
- yarn-error.log
28
- yarn-debug.log*
29
- .yarn-integrity
30
- yarn.lock
31
- /spec/dummy/public/pictures
32
- .byebug_history
data/.hound.yml DELETED
@@ -1,9 +0,0 @@
1
- rubocop:
2
- enabled: false
3
- scss:
4
- enabled: false
5
- coffeescript:
6
- enabled: false
7
- javascript:
8
- enabled: false
9
- fail_on_violations: false
data/.localeapp/config.rb DELETED
@@ -1,8 +0,0 @@
1
- require 'dotenv/load'
2
-
3
- Localeapp.configure do |config|
4
- config.api_key = ENV['LOCALEAPP_API_KEY']
5
- config.translation_data_directory = 'config/locales'
6
- config.synchronization_data_file = '.localeapp/log.yml'
7
- config.daemon_pid_file = '.localeapp/localeapp.pid'
8
- end
data/.prettierrc DELETED
@@ -1,6 +0,0 @@
1
- {
2
- "semi": false,
3
- "trailingComma": "none",
4
- "vueIndentScriptAndStyle": true,
5
- "arrowParens": "always"
6
- }
data/.rspec DELETED
@@ -1 +0,0 @@
1
- --require spec_helper
data/.rubocop.yml DELETED
@@ -1,7 +0,0 @@
1
- require: standard
2
-
3
- AllCops:
4
- TargetRubyVersion: 3.0
5
-
6
- inherit_gem:
7
- standard: config/base.yml
data/.standard.yml DELETED
@@ -1,4 +0,0 @@
1
- parallel: true
2
- ruby_version: 3.0
3
- ignore:
4
- - "spec/dummy/**/*"
data/.yardopts DELETED
@@ -1,5 +0,0 @@
1
- --title "Alchemy CMS"
2
- app/**/*.rb
3
- config/**/*.yml
4
- lib/**/*.rb
5
- README.md