rocket_cms 0.18.1 → 0.18.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/README.md +19 -7
  4. data/app/assets/javascripts/rocket_cms.js.coffee +0 -7
  5. data/app/assets/stylesheets/rocket_cms.css.sass +0 -6
  6. data/app/views/blocks/_footer.slim +2 -0
  7. data/app/views/blocks/_header.slim +2 -0
  8. data/app/views/layouts/application.html.slim +16 -10
  9. data/lib/generators/rocket_cms/templates/.babelrc +5 -0
  10. data/lib/generators/rocket_cms/templates/package.json +43 -0
  11. data/lib/generators/rocket_cms/templates/webpack.config.js +144 -0
  12. data/lib/generators/rocket_cms/templates/webpack/application.es6 +16 -0
  13. data/lib/generators/rocket_cms/templates/webpack/application.sass +6 -0
  14. data/lib/generators/rocket_cms/templates/webpack/errors/errors.handlebars +9 -0
  15. data/lib/generators/rocket_cms/templates/webpack/errors/index.es6 +30 -0
  16. data/lib/generators/rocket_cms/templates/webpack/errors/index.sass +49 -0
  17. data/lib/generators/rocket_cms/templates/webpack/flash/index.es6 +12 -0
  18. data/{app/assets/stylesheets/rocket_cms/flash.css.sass → lib/generators/rocket_cms/templates/webpack/flash/index.sass} +6 -7
  19. data/lib/generators/rocket_cms/webpack_generator.rb +30 -0
  20. data/lib/rocket_cms/version.rb +1 -1
  21. data/template.rb +26 -242
  22. metadata +14 -9
  23. data/app/assets/javascripts/head.load.js +0 -707
  24. data/app/assets/javascripts/jquery.placeholder.js +0 -157
  25. data/app/assets/javascripts/rocket_cms/flash.js.coffee +0 -3
  26. data/app/assets/javascripts/rocket_cms/map.js.coffee +0 -22
  27. data/app/assets/stylesheets/rocket_cms/normalize.css.scss +0 -461
  28. data/app/views/blocks/_footer.html.haml +0 -1
  29. data/app/views/layouts/application.html.haml +0 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 996722169fbbf791a12b6483d6e2853916c06827
4
- data.tar.gz: 55f62c4dbafac606514ce7202f631bc026682f26
3
+ metadata.gz: c86a852924655f2f7c4ec11a1c876a96d7933291
4
+ data.tar.gz: 5c11727b7db6866cd1d3c83eaf28b20cdc7c7b24
5
5
  SHA512:
6
- metadata.gz: ed077d4fd1bab074b52ed1ebea4dbe50e89f680cc0cb086185b8ae743ce659cf770db5ba45d455319b3fe02a226c2ee3e5f53450ce95fdf3d93c7db6608c8be4
7
- data.tar.gz: 288e7caf4dec5cf4694698c7759711fa56ea6aacbb3da1f6e74ab20460ad16d54c4347ae32f4739dae6efa032a2d020b8bd88c61b15d4a24527ca64420d830d3
6
+ metadata.gz: 788a1142273b99e2f097046bb8723ea9e9a6e4fe9bdd0852da3900c0c3b0e1def3d5d4cf3031d691a766f48eb9cac7821a63d040f01967b445017d475fbb4b5c
7
+ data.tar.gz: 296b53fcd66a432a9f89b18115d13c412148041d67277d064a26096219e7e8c74d7e6a61d2024b31510540274fc7a7462055f36096cc5db3495bbdc1b76dd497
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rocket_cms (0.18.1)
4
+ rocket_cms (0.18.2)
5
5
  addressable
6
6
  coffee-rails
7
7
  jquery-rails
data/README.md CHANGED
@@ -1,10 +1,23 @@
1
1
  # RocketCMS
2
2
 
3
- Rails + RailsAdmin + Mongoid/PostgreSQL + Elasticsearch/pg_search (optional)
3
+ What's in the box when you generate a new app:
4
4
 
5
- **Before 1.0 API and class names should be considered unstable and can change at any time!**
5
+ - Rails 5.1
6
+ - ActiveRecord + PostgreSQL or Mongoid 6
7
+ - Elasticsearch (optional)
8
+ - RailsAdmin
9
+ - Webpack via webpack-rails with fully customizeable webpack.config.js
10
+ - JS packages via package.json
11
+ - Capistrano deploy (including puma and webpack)
12
+ - Puma in production and in development
13
+ - Windows support
14
+ - Basic CMS models and controllers (Pages + SEO, News, Contact form with mailer, menu)
15
+ - Menu via SimpleNavigation
16
+ - Ckeditor with image upload support
17
+ - L10n and i18n support
6
18
 
7
- ## Installation
19
+
20
+ ## Installation (existing app)
8
21
 
9
22
  Add this line to your application's Gemfile:
10
23
 
@@ -35,9 +48,8 @@ For activerecord, generate migrations and run them
35
48
  rails g rocket_cms:migration
36
49
  rake db:migrate
37
50
 
38
- ## Usage
39
51
 
40
- ### Using app generator
52
+ ### Generating a new app
41
53
 
42
54
  Make sure you have rails 4.1/4.2/5.0 installed
43
55
 
@@ -50,11 +62,11 @@ If not, uninstall rails and install again
50
62
 
51
63
  Then, for mongoid:
52
64
 
53
- rails new my_app -T -O -m https://raw.githubusercontent.com/rs-pro/rocket_cms/master/template.rb
65
+ rails new my_app -T -O -m https://raw.githubusercontent.com/rs-pro/rocket_cms/master/template.rb --yarn
54
66
 
55
67
  for ActiveRecord:
56
68
 
57
- rails new my_app -T --database=postgresql -m https://raw.githubusercontent.com/rs-pro/rocket_cms/master/template.rb
69
+ rails new my_app -T --database=postgresql -m https://raw.githubusercontent.com/rs-pro/rocket_cms/master/template.rb --yarn
58
70
 
59
71
  generator creates a new RVM gemset, so after cd'ing to app dir, you should run `bundle install` again if you use rvm.
60
72
 
@@ -1,7 +0,0 @@
1
- #= require jquery
2
- #= require jquery_ujs
3
- #= require turbolinks
4
- #= require head.load.js
5
- #= require rocket_cms/map
6
- #= require rocket_cms/flash
7
-
@@ -1,6 +0,0 @@
1
- @import rocket_cms/*
2
-
3
- html
4
- -moz-font-smoothing: antialiased
5
- -webkit-font-smoothing: antialiased
6
-
@@ -0,0 +1,2 @@
1
+ footer
2
+ | (c) 2014 etc
@@ -0,0 +1,2 @@
1
+ header
2
+ = render_navigation &navigation(:main)
@@ -7,16 +7,22 @@ html lang="ru"
7
7
  = yield :meta
8
8
  = csrf_meta_tags
9
9
  = favicon_link_tag '/favicon.ico'
10
- = stylesheet_link_tag "application", media: "all"
11
- = javascript_include_tag "application"
12
- body
13
- #root
14
- = render 'shared/messages'
15
- #sidebar
16
- = render_navigation &navigation(:main)
17
- #content
18
- = yield
19
- #root_footer
10
+ = stylesheet_link_tag *webpack_asset_paths('vendor', extension: 'css')
11
+ = stylesheet_link_tag *webpack_asset_paths('application', extension: 'css')
12
+ = javascript_include_tag *webpack_asset_paths('vendor', extension: 'js')
13
+ = javascript_include_tag *webpack_asset_paths('application', extension: 'js')
14
+
15
+ body.no-js
16
+ = render 'blocks/header'
17
+ script.no-js-script
18
+ | document.body.classList.remove('no-js');
19
+ .no-js-error.alert.alert-error
20
+ | К сожалению, в вашем браузере отключен JavaScript
21
+ span Включите его, чтобы зайти на сайт
22
+ a class="btn-transparent" target="_blank" href="https://yandex.ru/support/common/browsers-settings/browsers-java-js-settings.xml" Включить JavaScript
23
+
24
+ .container
25
+ = yield
20
26
  #footer
21
27
  = render 'blocks/footer'
22
28
 
@@ -0,0 +1,5 @@
1
+ {
2
+ "presets": ["es2015", "stage-0"],
3
+ "plugins": []
4
+ }
5
+
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "<%= app_name.camelize %>",
3
+ "version": "0.0.1",
4
+ "license": "UNLICENSED",
5
+ "private": true,
6
+ "repository": "git@rscz.ru:rocket-science/<%= app_name.downcase %>.git",
7
+ "dependencies": {
8
+ "autoprefixer": "^6.5.3",
9
+ "axios": "^0.16.1",
10
+ "babel-cli": "^6.18.0",
11
+ "babel-core": "^6.18.2",
12
+ "babel-loader": "^7.0.0",
13
+ "babel-plugin-lodash": "^3.2.9",
14
+ "babel-plugin-transform-runtime": "^6.15.0",
15
+ "babel-preset-es2015": "^6.18.0",
16
+ "babel-preset-stage-0": "^6.16.0",
17
+ "babel-runtime": "^6.20.0",
18
+ "bootstrap": "4.0.0-alpha.6",
19
+ "compression-webpack-plugin": "^0.4.0",
20
+ "css-loader": "^0.28.0",
21
+ "extract-text-webpack-plugin": "^2.0.0-rc.3",
22
+ "file-loader": "^0.11.1",
23
+ "font-awesome": "^4.7.0",
24
+ "handlebars": "^4.0.6",
25
+ "handlebars-loader": "^1.4.0",
26
+ "html-loader": "^0.4.4",
27
+ "jquery": "^3.1.1",
28
+ "jquery-ujs": "^1.2.2",
29
+ "js-cookie": "^2.1.3",
30
+ "node-sass": "^4.0.0",
31
+ "postcss-functions": "^2.1.0",
32
+ "postcss-loader": "^1.3.0",
33
+ "sass-loader": "^6.0.0",
34
+ "stats-webpack-plugin": "^0.6.0",
35
+ "style-loader": "^0.16.1",
36
+ "turbolinks": "^5.0.0",
37
+ "url-loader": "^0.5.7",
38
+ "webpack": "^2.2.1",
39
+ "webpack-dev-server": "^2.3.0",
40
+ "webpack-hot-middleware": "^2.7.1"
41
+ }
42
+ }
43
+
@@ -0,0 +1,144 @@
1
+ 'use strict';
2
+
3
+ var path = require('path');
4
+ var webpack = require('webpack');
5
+ var functions = require('postcss-functions');
6
+ var StatsPlugin = require('stats-webpack-plugin');
7
+
8
+ var ExtractTextPlugin = require("extract-text-webpack-plugin");
9
+
10
+ var autoprefixer = require('autoprefixer');
11
+ var CompressionPlugin = require("compression-webpack-plugin");
12
+
13
+ var host = process.env.HOST || 'localhost'
14
+ var devServerPort = 3808;
15
+
16
+ var production = process.env.NODE_ENV === 'production';
17
+
18
+ const extractSass = new ExtractTextPlugin({
19
+ filename: "[name].[contenthash].css",
20
+ disable: !production
21
+ });
22
+
23
+ //console.log("dir:", __dirname)
24
+
25
+ var sassExtractor = () => {
26
+ return extractSass.extract({
27
+ use: [{
28
+ loader: "style-loader"
29
+ }, {
30
+ loader: "css-loader",
31
+ options: {
32
+ sourceMap: true
33
+ }
34
+ }, {
35
+ loader: "sass-loader",
36
+ options: {
37
+ sourceMap: true
38
+ }
39
+ }],
40
+ fallback: "style-loader"
41
+ })
42
+ }
43
+
44
+ var config = {
45
+ entry: {
46
+ // Sources are expected to live in $app_root/webpack
47
+ vendor: [
48
+ 'babel-polyfill',
49
+ 'axios',
50
+ 'jquery',
51
+ 'lodash',
52
+ ],
53
+ application: 'application.es6'
54
+ },
55
+
56
+ module: {
57
+ rules: [
58
+ { test: /\.es6/, use: "babel-loader" },
59
+ { test: /\.handlebars$/, use: "handlebars-loader" },
60
+ { test: /\.(jpe?g|png|gif)$/i, use: "file-loader" },
61
+ {
62
+ test: /\.woff($|\?)|\.woff2($|\?)|\.ttf($|\?)|\.eot($|\?)|\.svg($|\?)/,
63
+ use: production ? 'file-loader' : 'url-loader'
64
+ },
65
+ { test: /\.sass$/, use: sassExtractor() },
66
+ { test: /\.scss$/, use: sassExtractor() },
67
+ { test: /\.css$/, use: sassExtractor() }
68
+ ]
69
+ },
70
+
71
+ output: {
72
+ // Build assets directly in to public/webpack/, let webpack know
73
+ // that all webpacked assets start with webpack/
74
+
75
+ // must match config.webpack.output_dir
76
+ path: path.join(__dirname, '..', 'public', 'webpack'),
77
+ publicPath: '/webpack/',
78
+
79
+ filename: production ? '[name]-[chunkhash].js' : '[name].js'
80
+ },
81
+
82
+ resolve: {
83
+ modules: [path.resolve(__dirname, "..", "webpack"), path.resolve(__dirname, "..", "node_modules")],
84
+ extensions: [".js", ".es6", ".css", ".sass", ".scss"],
85
+ },
86
+
87
+ plugins: [
88
+ extractSass,
89
+ new StatsPlugin('manifest.json', {
90
+ chunkModules: false,
91
+ source: false,
92
+ chunks: false,
93
+ modules: false,
94
+ assets: true
95
+ }),
96
+ new webpack.ProvidePlugin({
97
+ $: "jquery/dist/jquery",
98
+ jQuery: "jquery/dist/jquery",
99
+ "window.jQuery": "jquery/dist/jquery",
100
+ //Tether: "tether",
101
+ //"window.Tether": "tether",
102
+ "_": "lodash",
103
+ "window._": "lodash",
104
+ //Alert: "exports-loader?Alert!bootstrap/js/dist/alert",
105
+ //Button: "exports-loader?Button!bootstrap/js/dist/button",
106
+ })
107
+ ]
108
+ };
109
+
110
+ if (production) {
111
+ config.plugins.push(
112
+ new webpack.optimize.CommonsChunkPlugin({name: 'vendor', filename: 'vendor-[chunkhash].js'}),
113
+ new webpack.optimize.UglifyJsPlugin({
114
+ compressor: { warnings: false },
115
+ sourceMap: false
116
+ }),
117
+ new webpack.DefinePlugin({ // <--key to reduce React's size
118
+ 'process.env': { NODE_ENV: JSON.stringify('production') }
119
+ }),
120
+ new CompressionPlugin({
121
+ asset: "[path].gz",
122
+ algorithm: "gzip",
123
+ test: /\.js$|\.css$/,
124
+ threshold: 4096,
125
+ minRatio: 0.8
126
+ })
127
+ );
128
+ } else {
129
+ config.plugins.push(
130
+ new webpack.optimize.CommonsChunkPlugin({name: 'vendor', filename: 'vendor.js'}),
131
+ new webpack.NamedModulesPlugin()
132
+ )
133
+
134
+ config.devServer = {
135
+ port: devServerPort,
136
+ headers: { 'Access-Control-Allow-Origin': '*' },
137
+ };
138
+ config.output.publicPath = 'http://' + host + ':' + devServerPort + '/webpack/';
139
+ config.devtool = 'source-map';
140
+ }
141
+
142
+ module.exports = config;
143
+
144
+
@@ -0,0 +1,16 @@
1
+ //import 'font-awesome/css/font-awesome.css';
2
+ import 'application.sass';
3
+ import Errors from 'errors';
4
+ import 'flash';
5
+ //import 'bootstrap';
6
+
7
+ window.A = {}
8
+ A.errors = new Errors()
9
+ A.errors.checkCookie();
10
+
11
+ import Turbolinks from "turbolinks";
12
+ Turbolinks.start()
13
+
14
+ document.addEventListener("turbolinks:load", function() {
15
+ })
16
+
@@ -0,0 +1,6 @@
1
+ html
2
+ font-family: Tahoma, Geneva, sans-serif
3
+ font-size: 14px
4
+ text-rendering: optimizeLegibility
5
+ -webkit-font-smoothing: antialiased
6
+ -moz-osx-font-smoothing: grayscale
@@ -0,0 +1,9 @@
1
+ <div class="errors">
2
+ <a class="logo-ta" target="_blank" href="http://travelask.ru"></a>
3
+ <a class="logo-toyota" target="_blank" href="https://www.toyota.ru"></a>
4
+ <div class="errors-inner">
5
+ <h3>{{title}}</h3>
6
+ <a target="_blank" href="{{link}}">{{anchor}}</a>, {{message}}
7
+ </div>
8
+ </div>
9
+
@@ -0,0 +1,30 @@
1
+ import './index.sass';
2
+ import Cookies from 'js-cookie';
3
+ import template from './errors.handlebars';
4
+
5
+ const COOKIE_ERROR = {
6
+ title: 'В вашем броузере отключены Cookies',
7
+ link: 'https://yandex.ru/support/common/browsers-settings/browsers-cookies.xml',
8
+ anchor: 'Включите их',
9
+ message: 'чтобы зайти на сайт'
10
+ }
11
+
12
+ class Errors {
13
+ show(error) {
14
+ $('body').prepend(template(error));
15
+ }
16
+
17
+ checkCookie() {
18
+ $(".no-js-error").remove()
19
+ $(".no-js-script").remove()
20
+ if (!Cookies.get('cookies_on')) {
21
+ this.show(COOKIE_ERROR);
22
+ console.error('cookies not supported');
23
+ } else {
24
+ //console.info('cookies supported');
25
+ }
26
+ }
27
+ }
28
+
29
+ export default Errors;
30
+
@@ -0,0 +1,49 @@
1
+ .errors
2
+ position: fixed
3
+ top: 0
4
+ left: 0
5
+ right: 0
6
+ bottom: 0
7
+ background: #b70f25 no-repeat 100% 100% / cover
8
+ color: #fff
9
+ z-index: 2000
10
+ .logo-ta
11
+ top: 55px
12
+
13
+ .errors-inner
14
+ display: table-cell
15
+ text-align: center
16
+ vertical-align: middle
17
+ width: 100vw
18
+ height: 100vh
19
+ a
20
+ color: #fff
21
+ h3
22
+ max-width: 720px
23
+ margin: 0 auto 20px
24
+ font-size: 44px
25
+ font-weight: 700
26
+ span
27
+ display: block
28
+ font-size: 34px
29
+ font-weight: 400
30
+ margin-bottom: 45px
31
+ margin-top: 20px
32
+
33
+ .btn-transparent
34
+ height: 66px
35
+ padding: 22px 25px
36
+ text-transform: uppercase
37
+ font-size: 17px
38
+ text-transform: none
39
+ &:hover
40
+ border-color: #fff
41
+ background: #fff
42
+ color: #ff0026
43
+
44
+ .no-js-error
45
+ display: none
46
+
47
+ body.no-js
48
+ .no-js-error
49
+ display: block