cambium 0.3.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/README.md +339 -15
- data/{lib/generators/cambium/templates/app/assets/javascripts/admin/admin.js.coffee → app/assets/javascripts/cambium/admin/application.js.coffee} +4 -10
- data/app/assets/javascripts/cambium/admin/routers/router.js.coffee +25 -0
- data/app/assets/javascripts/cambium/admin/users.js +2 -0
- data/app/assets/javascripts/cambium/admin/views/dropdown_menu.js.coffee +24 -0
- data/app/assets/javascripts/cambium/admin/views/pickadate.js.coffee +15 -0
- data/app/assets/stylesheets/cambium/admin/application.scss +27 -0
- data/{lib/generators/cambium/templates/app/assets/stylesheets → app/assets/stylesheets/cambium}/admin/bones/bones-config/_colors.scss +7 -7
- data/{lib/generators/cambium/templates/app/assets/stylesheets → app/assets/stylesheets/cambium}/admin/bones/bones.scss +18 -18
- data/app/assets/stylesheets/cambium/admin/partials/_globals.scss +21 -0
- data/app/assets/stylesheets/cambium/admin/partials/activity.scss +52 -0
- data/app/assets/stylesheets/cambium/admin/partials/components.scss +64 -0
- data/app/assets/stylesheets/cambium/admin/partials/dashboard.scss +48 -0
- data/app/assets/stylesheets/cambium/admin/partials/forms.scss +107 -0
- data/app/assets/stylesheets/cambium/admin/partials/header.scss +113 -0
- data/app/assets/stylesheets/cambium/admin/partials/page_title.scss +42 -0
- data/app/assets/stylesheets/cambium/admin/partials/sidebar.scss +41 -0
- data/app/assets/stylesheets/cambium/admin/partials/tables.scss +80 -0
- data/app/assets/stylesheets/cambium/admin/partials/typography.scss +5 -0
- data/app/assets/stylesheets/cambium/admin/partials/wireframe.scss +52 -0
- data/app/assets/stylesheets/cambium/admin/users.css +4 -0
- data/app/controllers/cambium/admin/dashboard_controller.rb +12 -0
- data/app/controllers/cambium/admin/search_controller.rb +9 -0
- data/app/controllers/cambium/admin/users_controller.rb +30 -0
- data/app/controllers/cambium/admin_controller.rb +90 -0
- data/app/helpers/cambium/cambium_helper.rb +205 -0
- data/app/presenters/cambium/admin_presenter.rb +127 -0
- data/app/views/cambium/admin/_activity.html.erb +6 -0
- data/app/views/cambium/admin/_header.html.erb +41 -0
- data/app/views/cambium/admin/_sidebar.html.erb +19 -0
- data/app/views/cambium/admin/_status.html.erb +5 -0
- data/app/views/cambium/admin/dashboard/show.html.erb +5 -0
- data/app/views/cambium/admin/edit.html.erb +7 -0
- data/app/views/cambium/admin/index.html.erb +7 -0
- data/app/views/cambium/admin/new.html.erb +7 -0
- data/app/views/cambium/admin/paper_trail/versions/_version.html.erb +20 -0
- data/app/views/cambium/admin/search/index.html.erb +38 -0
- data/app/views/layouts/admin.html.erb +25 -0
- data/bin/rails +12 -0
- data/cambium.gemspec +19 -15
- data/config/routes.rb +10 -0
- data/lib/cambium/configuration.rb +28 -0
- data/lib/cambium/engine.rb +2 -1
- data/lib/cambium/version.rb +1 -1
- data/lib/cambium.rb +12 -1
- data/lib/generators/cambium/admin_generator.rb +104 -0
- data/lib/generators/cambium/app_generator.rb +205 -0
- data/lib/generators/cambium/controller_generator.rb +81 -0
- data/lib/generators/cambium/gemfile_generator.rb +36 -0
- data/lib/generators/cambium/install_generator.rb +19 -0
- data/lib/generators/cambium/user_generator.rb +40 -0
- data/lib/generators/{cambium/helpers → helpers}/generators_helper.rb +32 -24
- data/lib/generators/templates/Gemfile.erb +79 -0
- data/lib/generators/{cambium/templates/app/assets/javascripts/backbone/app.js.coffee → templates/app/assets/javascripts/application.js.coffee} +9 -1
- data/lib/generators/templates/app/assets/javascripts/views/default_helpers.js.coffee +16 -0
- data/lib/generators/templates/app/assets/stylesheets/admin/admin.scss +3 -0
- data/lib/generators/templates/app/controllers/admin/controller.rb.erb +2 -0
- data/lib/generators/{cambium/templates → templates}/app/controllers/application_controller.rb +1 -5
- data/lib/generators/{cambium/templates → templates}/app/models/user.rb +4 -4
- data/lib/generators/templates/app/views/application/_status.html.erb +3 -0
- data/lib/generators/{cambium/templates → templates}/app/views/layouts/application.html.erb +1 -1
- data/lib/generators/templates/config/admin/controller.yml.erb +24 -0
- data/lib/generators/templates/config/admin/sidebar.yml +9 -0
- data/lib/generators/templates/config/admin/users.yml +31 -0
- data/lib/generators/{cambium/templates → templates}/config/application.rb +6 -4
- data/lib/generators/templates/config/initializers/_hash.rb +23 -0
- data/lib/generators/templates/config/initializers/_settings.rb +18 -0
- data/lib/generators/templates/config/initializers/assets.rb +1 -0
- data/lib/generators/templates/config/initializers/cambium.rb +16 -0
- data/lib/generators/templates/config/private.yml +16 -0
- data/lib/generators/templates/config/routes.rb +54 -0
- data/lib/generators/templates/config/settings.yml +16 -0
- data/lib/generators/{cambium/templates → templates}/gitignore +1 -1
- data/lib/help/cambium_prereqs.txt +13 -0
- data/lib/help/pg_search_post_install.txt +13 -0
- data/lib/{generators/cambium/templates/lib/tasks → tasks}/db.rake +2 -2
- data/lib/{generators/cambium/templates/lib/tasks → tasks}/rename.rake +1 -1
- data/test/controllers/cambium/admin/dashboard_controller_test.rb +9 -0
- data/test/controllers/cambium/admin/users_controller_test.rb +9 -0
- data/test/controllers/cambium/admin_controller_test.rb +9 -0
- metadata +192 -152
- data/bin/cambium +0 -16
- data/lib/generators/cambium/helpers/dependencies_helper.rb +0 -58
- data/lib/generators/cambium/install/admin_generator.rb +0 -110
- data/lib/generators/cambium/install/app_generator.rb +0 -162
- data/lib/generators/cambium/install/config_generator.rb +0 -182
- data/lib/generators/cambium/install/utilities_generator.rb +0 -57
- data/lib/generators/cambium/model/image_generator.rb +0 -67
- data/lib/generators/cambium/model/page_generator.rb +0 -131
- data/lib/generators/cambium/model/post_generator.rb +0 -71
- data/lib/generators/cambium/model/tag_generator.rb +0 -40
- data/lib/generators/cambium/model/user_generator.rb +0 -78
- data/lib/generators/cambium/templates/Gemfile +0 -43
- data/lib/generators/cambium/templates/Gemfile.erb +0 -40
- data/lib/generators/cambium/templates/_partials/pages/admin_icon.rb +0 -6
- data/lib/generators/cambium/templates/app/assets/javascripts/.DS_Store +0 -0
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/collections/.gitkeep +0 -0
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/models/.gitkeep +0 -0
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/models/image.js.coffee +0 -14
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/models/tag.js.coffee +0 -14
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/parser_rules/custom.js +0 -552
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/routers/router.js.coffee +0 -37
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/tag.jst.ejs +0 -7
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/templates/image.jst.ejs +0 -3
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/templates/paginator_controls.jst.ejs +0 -8
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/templates/paginator_nav.jst.ejs +0 -11
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/templates/post_tag.jst.ejs +0 -1
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/views/accordion.js.coffee +0 -33
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/views/counter.js.coffee +0 -25
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/views/dropdown_toggle.js.coffee +0 -16
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/views/image_upload.js.coffee +0 -28
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/views/init_counter.js.coffee +0 -13
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/views/paginator.js.coffee +0 -86
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/views/publishable.js.coffee +0 -12
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/views/tags.js.coffee +0 -158
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/views/wysiwyg.js.coffee +0 -87
- data/lib/generators/cambium/templates/app/assets/javascripts/admin/wysihtml5.js +0 -9521
- data/lib/generators/cambium/templates/app/assets/javascripts/application.js +0 -10
- data/lib/generators/cambium/templates/app/assets/javascripts/backbone/templates/.keep +0 -0
- data/lib/generators/cambium/templates/app/assets/stylesheets/admin/admin.scss +0 -14
- data/lib/generators/cambium/templates/app/assets/stylesheets/admin/partials/_content.scss +0 -88
- data/lib/generators/cambium/templates/app/assets/stylesheets/admin/partials/_form.scss +0 -470
- data/lib/generators/cambium/templates/app/assets/stylesheets/admin/partials/_globals.scss +0 -39
- data/lib/generators/cambium/templates/app/assets/stylesheets/admin/partials/_header.scss +0 -121
- data/lib/generators/cambium/templates/app/assets/stylesheets/admin/partials/_nav.scss +0 -45
- data/lib/generators/cambium/templates/app/assets/stylesheets/admin/partials/_wireframe.scss +0 -24
- data/lib/generators/cambium/templates/app/assets/stylesheets/admin/wysihtml5.css +0 -7
- data/lib/generators/cambium/templates/app/controllers/admin/images_controller.rb +0 -45
- data/lib/generators/cambium/templates/app/controllers/admin/pages_controller.rb +0 -42
- data/lib/generators/cambium/templates/app/controllers/admin/posts_controller.rb +0 -39
- data/lib/generators/cambium/templates/app/controllers/admin/taggings_controller.rb +0 -69
- data/lib/generators/cambium/templates/app/controllers/admin/tags_controller.rb +0 -11
- data/lib/generators/cambium/templates/app/controllers/admin/users_controller.rb +0 -13
- data/lib/generators/cambium/templates/app/controllers/admin_controller.rb +0 -97
- data/lib/generators/cambium/templates/app/controllers/images_controller.rb +0 -45
- data/lib/generators/cambium/templates/app/controllers/pages_controller.rb +0 -12
- data/lib/generators/cambium/templates/app/controllers/posts_controller.rb +0 -11
- data/lib/generators/cambium/templates/app/helpers/admin/pages_controller.rb +0 -47
- data/lib/generators/cambium/templates/app/helpers/admin_helper.rb +0 -121
- data/lib/generators/cambium/templates/app/models/concerns/name.rb +0 -7
- data/lib/generators/cambium/templates/app/models/concerns/title.rb +0 -7
- data/lib/generators/cambium/templates/app/models/image.rb +0 -43
- data/lib/generators/cambium/templates/app/models/page.rb +0 -81
- data/lib/generators/cambium/templates/app/models/post.rb +0 -45
- data/lib/generators/cambium/templates/app/models/tag.rb +0 -33
- data/lib/generators/cambium/templates/app/models/tagging.rb +0 -20
- data/lib/generators/cambium/templates/app/uploaders/image_uploader.rb +0 -91
- data/lib/generators/cambium/templates/app/views/admin/_buttons.html.erb +0 -5
- data/lib/generators/cambium/templates/app/views/admin/_form.html.erb +0 -11
- data/lib/generators/cambium/templates/app/views/admin/_title.html.erb +0 -1
- data/lib/generators/cambium/templates/app/views/admin/edit.html.erb +0 -2
- data/lib/generators/cambium/templates/app/views/admin/images/_image.html.erb +0 -1
- data/lib/generators/cambium/templates/app/views/admin/images/create.js.erb +0 -7
- data/lib/generators/cambium/templates/app/views/admin/images/index.json.jbuilder +0 -4
- data/lib/generators/cambium/templates/app/views/admin/index.html.erb +0 -50
- data/lib/generators/cambium/templates/app/views/admin/new.html.erb +0 -2
- data/lib/generators/cambium/templates/app/views/admin/pages/_form.html.erb +0 -26
- data/lib/generators/cambium/templates/app/views/admin/posts/_form.html.erb +0 -40
- data/lib/generators/cambium/templates/app/views/admin/shared/_footer.html.erb +0 -2
- data/lib/generators/cambium/templates/app/views/admin/shared/_header.html.erb +0 -2
- data/lib/generators/cambium/templates/app/views/admin/shared/_insert_image.html.erb +0 -12
- data/lib/generators/cambium/templates/app/views/admin/shared/_nav.html.erb +0 -12
- data/lib/generators/cambium/templates/app/views/admin/shared/_status.html.erb +0 -3
- data/lib/generators/cambium/templates/app/views/admin/shared/forms/_editor.html.erb +0 -54
- data/lib/generators/cambium/templates/app/views/admin/shared/forms/_form_column_left.html.erb +0 -9
- data/lib/generators/cambium/templates/app/views/admin/shared/forms/_form_column_right.html.erb +0 -9
- data/lib/generators/cambium/templates/app/views/admin/shared/forms/_form_page.html.erb +0 -22
- data/lib/generators/cambium/templates/app/views/admin/shared/forms/_form_section.html.erb +0 -8
- data/lib/generators/cambium/templates/app/views/admin/shared/forms/_publishable.html.erb +0 -33
- data/lib/generators/cambium/templates/app/views/admin/users/_form.html.erb +0 -11
- data/lib/generators/cambium/templates/app/views/application/_status.html.erb +0 -3
- data/lib/generators/cambium/templates/app/views/layouts/.DS_Store +0 -0
- data/lib/generators/cambium/templates/app/views/layouts/admin.html.erb +0 -44
- data/lib/generators/cambium/templates/app/views/page_templates/default.html.erb +0 -2
- data/lib/generators/cambium/templates/app/views/posts/_post.html.erb +0 -4
- data/lib/generators/cambium/templates/app/views/posts/index.html.erb +0 -1
- data/lib/generators/cambium/templates/app/views/posts/show.html.erb +0 -10
- data/lib/generators/cambium/templates/config/app_routes.rb +0 -77
- data/lib/generators/cambium/templates/config/database.mysql2.yml.erb +0 -15
- data/lib/generators/cambium/templates/config/database.pg.yml.erb +0 -14
- data/lib/generators/cambium/templates/config/database.sqlite3.yml.erb +0 -18
- data/lib/generators/cambium/templates/config/initializers/_settings.rb +0 -11
- data/lib/generators/cambium/templates/config/initializers/assets.rb +0 -1
- data/lib/generators/cambium/templates/config/routes.rb.erb +0 -42
- data/lib/generators/cambium/templates/config/settings.yml +0 -15
- data/lib/generators/cambium/templates/config/settings_private.sample.yml +0 -15
- data/lib/generators/cambium/templates/config/settings_private.yml +0 -13
- data/lib/generators/cambium/templates/db/migrate/create_pages.rb.erb +0 -24
- data/lib/generators/cambium/templates/db/migrate/create_posts.rb +0 -19
- data/lib/generators/cambium/templates/lib/.DS_Store +0 -0
- data/lib/help/cambium +0 -7
- /data/{lib/generators/cambium/templates/app/assets/javascripts/backbone/collections → app/assets/javascripts/cambium/admin/templates}/.keep +0 -0
- /data/{lib/generators/cambium/templates/app/assets/javascripts/backbone → app/assets/javascripts/cambium/admin}/views/default_helpers.js.coffee +0 -0
- /data/{lib/generators/cambium/templates/app/assets/stylesheets → app/assets/stylesheets/cambium}/admin/bones/bones-config/__default.scss +0 -0
- /data/{lib/generators/cambium/templates/app/assets/stylesheets → app/assets/stylesheets/cambium}/admin/bones/bones-config/_buttons.scss +0 -0
- /data/{lib/generators/cambium/templates/app/assets/stylesheets → app/assets/stylesheets/cambium}/admin/bones/bones-config/_components.scss +0 -0
- /data/{lib/generators/cambium/templates/app/assets/stylesheets → app/assets/stylesheets/cambium}/admin/bones/bones-config/_forms.scss +0 -0
- /data/{lib/generators/cambium/templates/app/assets/stylesheets → app/assets/stylesheets/cambium}/admin/bones/bones-config/_helpers.scss +0 -0
- /data/{lib/generators/cambium/templates/app/assets/stylesheets → app/assets/stylesheets/cambium}/admin/bones/bones-config/_images.scss +0 -0
- /data/{lib/generators/cambium/templates/app/assets/stylesheets → app/assets/stylesheets/cambium}/admin/bones/bones-config/_nav.scss +0 -0
- /data/{lib/generators/cambium/templates/app/assets/stylesheets → app/assets/stylesheets/cambium}/admin/bones/bones-config/_tables.scss +0 -0
- /data/{lib/generators/cambium/templates/app/assets/stylesheets → app/assets/stylesheets/cambium}/admin/bones/bones-config/_typography.scss +0 -0
- /data/{lib/generators/cambium/templates/app/assets/stylesheets → app/assets/stylesheets/cambium}/admin/bones/bones-config/_wireframe.scss +0 -0
- /data/{lib/generators/cambium/templates/app → app}/models/concerns/idx.rb +0 -0
- /data/{lib/generators/cambium/templates/app → app}/models/concerns/image_cropper.rb +0 -0
- /data/{lib/generators/cambium/templates/app → app}/models/concerns/publishable.rb +0 -0
- /data/{lib/generators/cambium/templates/app → app}/models/concerns/slug.rb +0 -0
- /data/{lib/generators/cambium/templates/app → app}/models/concerns/tags.rb +0 -0
- /data/lib/generators/{cambium/helpers → helpers}/_autoloader.rb +0 -0
- /data/lib/generators/{cambium/templates/app/assets/javascripts/backbone → templates/app/assets/javascripts}/routers/router.js.coffee +0 -0
- /data/lib/generators/{cambium/templates/app/assets/javascripts/backbone/models → templates/app/assets/javascripts/templates}/.keep +0 -0
- /data/lib/generators/{cambium/templates → templates}/app/assets/stylesheets/application.scss +0 -0
- /data/lib/generators/{cambium/templates → templates}/app/views/home/index.html.erb +0 -0
- /data/lib/generators/{cambium/templates → templates}/db/seeds.rb +0 -0
- /data/{lib/generators/cambium/templates/vendor → vendor}/assets/javascripts/modernizr.js +0 -0
- /data/{lib/generators/cambium/templates/vendor → vendor}/assets/stylesheets/normalize.scss +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 99887d04074970f7daa654f9fa7ff4eea5c3f0e7
|
4
|
+
data.tar.gz: 3933cd4cb15076a974d220c7331ad161fa563d33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db9cf246df9160103a22885bdca5dd61a01619ced628d36902913961190a75030f865b4902eb904b86b86b41b3efc6299a8fed04b711030dce2d8d4455eccb21
|
7
|
+
data.tar.gz: 162da5ef45897e73adeaa75e82dbd89076e41c3be2df3ea387dd1b676e6abf9f9fcccbf54f400e7d4fd6efb4c660c4f9389f96154fa8648b8310d92992661248
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,30 +1,354 @@
|
|
1
|
-
|
1
|
+
Cambium
|
2
|
+
==========
|
2
3
|
|
3
|
-
Cambium
|
4
|
-
worrying about repetitive tasks.
|
4
|
+
Cambium serves three main purposes in Ruby on Rails applications:
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
1. Bootstrap Rails' standard installation by performing additional setup
|
7
|
+
(things I find myself doing at the beginning of every project).
|
8
|
+
2. Facilitate development throughout the life of any project by abstracting
|
9
|
+
repeatable bits of code.
|
10
|
+
3. Provide a simple, but flexible CMS for those applications that require it.
|
8
11
|
|
9
|
-
|
12
|
+
For now, the documentation will be continued in the README. This will be moved
|
13
|
+
out over time.
|
10
14
|
|
11
|
-
|
15
|
+
App Setup
|
16
|
+
----------
|
12
17
|
|
13
|
-
|
18
|
+
Cambium lets you get up and running real fast. First, start you rails project
|
19
|
+
as you normally would.
|
14
20
|
|
15
|
-
|
21
|
+
```text
|
22
|
+
$ rails new my_app -d postgresql
|
23
|
+
```
|
16
24
|
|
17
|
-
|
25
|
+
> Note: Cambium only supports PostgreSQL. If you need to use another database,
|
26
|
+
> I suggest you add an option into Cambium and create a pull request. However,
|
27
|
+
> I strongly encourage you to give PostgreSQL a try.
|
18
28
|
|
19
|
-
|
29
|
+
Add Cambium to your Gemfile.
|
20
30
|
|
21
|
-
|
31
|
+
```ruby
|
32
|
+
gem 'cambium', '>= 1.0.0'
|
33
|
+
```
|
22
34
|
|
23
|
-
|
35
|
+
> I would probably commit at this time (so it's easy to rollback if you don't
|
36
|
+
> like something Cambium did).
|
24
37
|
|
25
|
-
|
38
|
+
Generate Cambium's (simple) configuration file.
|
26
39
|
|
27
|
-
|
40
|
+
```text
|
41
|
+
$ bundle exec rails g cambium:install
|
42
|
+
```
|
43
|
+
|
44
|
+
Edit the config (config/initializers/cambium.rb) to your liking.
|
45
|
+
|
46
|
+
Then, get your PostgreSQL database configured by editing `config/database.yml`
|
47
|
+
to your appropriate settings.
|
48
|
+
|
49
|
+
> **Make sure you do not commit between this step and finishing the setup
|
50
|
+
> process.** Cambium will ignore this database.yml file, which is good, as it
|
51
|
+
> may contain sensitive data.
|
52
|
+
|
53
|
+
Then, create your database:
|
54
|
+
|
55
|
+
```text
|
56
|
+
$ bundle exec rake db:create
|
57
|
+
```
|
58
|
+
|
59
|
+
Although optional, I suggest you at least start with the default `Gemfile`.
|
60
|
+
|
61
|
+
```text
|
62
|
+
$ bundle exec rails g cambium:gemfile
|
63
|
+
```
|
64
|
+
|
65
|
+
Remove the gems you don't want and then bundle.
|
66
|
+
|
67
|
+
```text
|
68
|
+
$ bundle install
|
69
|
+
```
|
70
|
+
|
71
|
+
And now you can run Cambium's auto-setup generator.
|
72
|
+
|
73
|
+
```text
|
74
|
+
$ bundle exec rails g cambium:app
|
75
|
+
```
|
76
|
+
|
77
|
+
When you're done, you can migrate (and annotate), and be on your way!
|
78
|
+
|
79
|
+
```text
|
80
|
+
$ bundle exec rake db:migrate
|
81
|
+
$ bundle exec annotate
|
82
|
+
```
|
83
|
+
|
84
|
+
Admin / CMS
|
85
|
+
----------
|
86
|
+
|
87
|
+
### Install CMS
|
88
|
+
|
89
|
+
If you want to also setup a CMS, it's as simple as running the generator.
|
90
|
+
|
91
|
+
```text
|
92
|
+
$ bundle exec rails g cambium:admin
|
93
|
+
```
|
94
|
+
|
95
|
+
Run the migrations Cambium created with the admin generator.
|
96
|
+
|
97
|
+
```text
|
98
|
+
$ bundle exec rake db:migrate
|
99
|
+
$ bundle exec annotate
|
100
|
+
```
|
101
|
+
|
102
|
+
Make sure Cambium's engine is mounted in your `config/routes.rb` file.
|
103
|
+
|
104
|
+
```ruby
|
105
|
+
mount Cambium::Engine => '/'
|
106
|
+
```
|
107
|
+
|
108
|
+
It's best to mount it at the root because Cambium automatically namespaces its
|
109
|
+
routes.
|
110
|
+
|
111
|
+
At this point, you should be able to go to `localhost:3000/admin` and be
|
112
|
+
redirected to the login page (if you are not signed in). Once you have an admin
|
113
|
+
user and sign in successfully, you will be redirected to the admin dashboard.
|
114
|
+
|
115
|
+
### Adding Users
|
116
|
+
|
117
|
+
We have a generator for creating a new user, which takes an `--admin` option if
|
118
|
+
you want the user to have admin access.
|
119
|
+
|
120
|
+
```text
|
121
|
+
$ bundle exec rails g cambium:user [username] [password] [--admin / --no-admin]
|
122
|
+
```
|
123
|
+
|
124
|
+
### Generating Admin Controllers
|
125
|
+
|
126
|
+
A big portion of Cambium's power lies in its ability to spin up feature-full
|
127
|
+
CMS controllers and views in a snap.
|
128
|
+
|
129
|
+
Before you generate an admin controller, you need to make sure you have a
|
130
|
+
working data model. It's best if the model already has the columns you know
|
131
|
+
you're going to need (it's easy to add or remove later, but quicker if you have
|
132
|
+
what you need at the beginning).
|
133
|
+
|
134
|
+
Then you can run the generator.
|
135
|
+
|
136
|
+
```text
|
137
|
+
$ bundle exec rails g cambium:controller [model]
|
138
|
+
```
|
139
|
+
|
140
|
+
**Be sure you are using the proper class name of the data model.**
|
141
|
+
|
142
|
+
For example, if I have a `Page` model, this would be the command:
|
143
|
+
|
144
|
+
```text
|
145
|
+
$ bundle exec rails g cambium:controller Page
|
146
|
+
```
|
147
|
+
|
148
|
+
> Note: I'm working on making Cambium more powerful all the time. At the
|
149
|
+
> moment, it works best with simple form-type data.
|
150
|
+
|
151
|
+
The generator does a few things:
|
152
|
+
|
153
|
+
* Uses the standard Rails generate to generate a template in the `admin`
|
154
|
+
namespace (using the example, your file would be at
|
155
|
+
`app/controllers/admin/pages_controller.rb`).
|
156
|
+
* Adds a namespaced route to your routes file (`config/routes.rb`).
|
157
|
+
* Adds the Cambium config file (at `config/admin/pages.yml` in this example).
|
158
|
+
* Adds a generic sidebar item for your controller at
|
159
|
+
`config/admin/sidebar.yml`.
|
160
|
+
|
161
|
+
See below for information on the sidebar and controller settings.
|
162
|
+
|
163
|
+
### Sidebar Settings
|
164
|
+
|
165
|
+
The sidebar in Cambium is driven by your `config/admin/sidebar.yml` settings
|
166
|
+
file. It's pretty semantic and simple.
|
167
|
+
|
168
|
+
The default sidebar is:
|
169
|
+
|
170
|
+
```yaml
|
171
|
+
dashboard:
|
172
|
+
label: Dashboard
|
173
|
+
route: cambium.admin_dashboard
|
174
|
+
icon: dashboard
|
175
|
+
users:
|
176
|
+
label: Users
|
177
|
+
route: cambium.admin_users
|
178
|
+
icon: users
|
179
|
+
controllers: ['users']
|
180
|
+
```
|
181
|
+
|
182
|
+
The important thing to remember is you have to define a unique key for each
|
183
|
+
item. For example, if you accidentally named `users` as `dashboard`, then only
|
184
|
+
the last `dashboard` item gets rendered.
|
185
|
+
|
186
|
+
The options are:
|
187
|
+
|
188
|
+
* `label`: Text within the sidebar link
|
189
|
+
* `route`: Route to apply to the link (for custom settings, replace `cambium`
|
190
|
+
with `main_app`)
|
191
|
+
* `icon`: The name of the icon to use, pulled from [IcoMoon's free
|
192
|
+
set](https://icomoon.io/#preview-free)
|
193
|
+
* `controllers`: An array of controllers which, if the current page is using
|
194
|
+
one of the controllers, the sidebar item will be highlighted (with an
|
195
|
+
`active` class)
|
196
|
+
|
197
|
+
### Controller Settings
|
198
|
+
|
199
|
+
The controller settings are what drive the behavior of Cambium. And it's why,
|
200
|
+
for simple models, you don't have to add any code to your controller and you
|
201
|
+
don't need any views.
|
202
|
+
|
203
|
+
Each controller's settings file is named for that controller, and can be found
|
204
|
+
in `config/admin`. For example, the users controller settings are at
|
205
|
+
`config/admin/users.yml`.
|
206
|
+
|
207
|
+
Here is the default set for the users controller:
|
208
|
+
|
209
|
+
```yaml
|
210
|
+
model: User
|
211
|
+
table:
|
212
|
+
title: Site Users
|
213
|
+
scope: all
|
214
|
+
columns:
|
215
|
+
email:
|
216
|
+
heading: Email
|
217
|
+
buttons:
|
218
|
+
new: New User
|
219
|
+
export:
|
220
|
+
button: Export Users
|
221
|
+
columns:
|
222
|
+
name:
|
223
|
+
label: Name
|
224
|
+
email:
|
225
|
+
label: Email
|
226
|
+
form:
|
227
|
+
new: &new
|
228
|
+
title: New User
|
229
|
+
fields:
|
230
|
+
name:
|
231
|
+
type: string
|
232
|
+
email:
|
233
|
+
type: string
|
234
|
+
password:
|
235
|
+
type: password
|
236
|
+
password_confirmation:
|
237
|
+
type: password
|
238
|
+
edit:
|
239
|
+
<<: *new
|
240
|
+
title: Edit User
|
241
|
+
```
|
242
|
+
|
243
|
+
Every setting plays a role. Let's step through each one.
|
244
|
+
|
245
|
+
* `model`: The name (with class case) of the model to be used for this
|
246
|
+
controller
|
247
|
+
* `table:title`: The title to show on the controller's index view.
|
248
|
+
* `table:scope`: The scope method to run on the model. Most of the time this
|
249
|
+
will be `all`, but maybe you need to order, limit, or filter your results.
|
250
|
+
You need to do this through an [ActiveRecord
|
251
|
+
Scope](http://guides.rubyonrails.org/active_record_querying.html)
|
252
|
+
* `table:columns:[column]`: Each column gets its own unique key, which
|
253
|
+
distinguishes it from others
|
254
|
+
* `table:columns:[column]:heading`: The label for the column in the data table.
|
255
|
+
* `table:buttons:new`: Label for the "New" button. If you don't want a
|
256
|
+
new button, remove this setting.
|
257
|
+
* `export`: This section handles an export option for your data table. Remove
|
258
|
+
it if you don't want to offer that.
|
259
|
+
* `export:button`: The label for the export button.
|
260
|
+
* `export:columns:[column]`: Each column in the exported file gets its own
|
261
|
+
unique key, which distinguishes it from others
|
262
|
+
* `export:columns:[column]:label`: The heading in the exported file for that
|
263
|
+
column.
|
264
|
+
* `export:columns:[column]:output`: An optional method you can pass to each
|
265
|
+
object to help with display.
|
266
|
+
* `form`: Settings for the form.
|
267
|
+
* `form:[new/edit]`: New is the defaut, and most of the time Edit will inherit
|
268
|
+
from new (the `<<: *new` is what handles that). But you can optionally
|
269
|
+
override new values for your edit form.
|
270
|
+
* `form:[new/edit]:title`: Title for the form page.
|
271
|
+
* `form:[new/edit]:fields:[field]`: Each form field gets its own unique key to
|
272
|
+
set it apart from the others.
|
273
|
+
* `form:[new/edit]:fields:[field]:type`: The type of the HTML field to render,
|
274
|
+
which uses [SimpleForm](https://github.com/plataformatec/simple_form).
|
275
|
+
|
276
|
+
> Note: Aside from the usual form field types, Cambium uses [Mark It
|
277
|
+
> Zero!](https://github.com/seancdavis/mark_it_zero) to render markdown
|
278
|
+
> editors. You can pass `markdown` as the `type` option and it will give you a
|
279
|
+
> markdown editor.
|
280
|
+
|
281
|
+
Model Options
|
282
|
+
----------
|
283
|
+
|
284
|
+
Cambium makes use of many gems, and uses the behavior of those gems to drive
|
285
|
+
much of its power. In many cases, this requires added options to your model.
|
286
|
+
|
287
|
+
### Searchable Models
|
288
|
+
|
289
|
+
To make items searchable (in the CMS and in the app), we use
|
290
|
+
[pg_search](https://github.com/Casecommons/pg_search). You need to include the
|
291
|
+
`PgSearch` module, and then call out the columns you want to search.
|
292
|
+
|
293
|
+
For example, if you have a `Page` model and you want `title` and `body` to be
|
294
|
+
searchable, you're model might look like this:
|
295
|
+
|
296
|
+
```ruby
|
297
|
+
class Page < ActiveRecord::Base
|
298
|
+
include PgSearch
|
299
|
+
multisearchable :against => [:title, :body]
|
300
|
+
end
|
301
|
+
```
|
302
|
+
|
303
|
+
### Activity Log
|
304
|
+
|
305
|
+
If you want to track the history of a model's records (which also means adding
|
306
|
+
it to the activity log in the CMS), you need to add `has_paper_trail` to your
|
307
|
+
model.
|
308
|
+
|
309
|
+
```ruby
|
310
|
+
class Page < ActiveRecord::Base
|
311
|
+
has_paper_trail
|
312
|
+
end
|
313
|
+
```
|
314
|
+
|
315
|
+
The activity log in particular makes use of the `to_s` method for the model. In
|
316
|
+
this way, we make no assumptions about the default attribute that describes a
|
317
|
+
model's record. Usually this is something like `title` or `name`. If it were
|
318
|
+
`title`, then your model (from above) is:
|
319
|
+
|
320
|
+
```ruby
|
321
|
+
class Page < ActiveRecord::Base
|
322
|
+
has_paper_trail
|
323
|
+
|
324
|
+
def to_s
|
325
|
+
title
|
326
|
+
end
|
327
|
+
end
|
328
|
+
```
|
329
|
+
|
330
|
+
### Markdown to HTML
|
331
|
+
|
332
|
+
As mentioned above, Cambium uses [Mark It
|
333
|
+
Zero!](https://github.com/seancdavis/mark_it_zero) to render markdown editors.
|
334
|
+
You, therefore, also have the option to store a markdown text attribute and
|
335
|
+
have it automatically converted to HTML using the `after_save` callback.
|
336
|
+
|
337
|
+
If, for our `Page` example, you have `body_markdown` and `body_html` fields,
|
338
|
+
you can add your `body_markdown` attribute to the form and then the following
|
339
|
+
to your model:
|
340
|
+
|
341
|
+
```ruby
|
342
|
+
class Page < ActiveRecord::Base
|
343
|
+
converts_markdown :body_markdown, :body_html
|
344
|
+
end
|
345
|
+
```
|
346
|
+
|
347
|
+
See [this section](https://github.com/seancdavis/mark_it_zero#converting-to-
|
348
|
+
html) of the Mark It Zero! docs for more information and options.
|
349
|
+
|
350
|
+
Contributing
|
351
|
+
----------
|
28
352
|
|
29
353
|
1. Fork it ( https://github.com/[my-github-username]/cambium/fork )
|
30
354
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
@@ -1,29 +1,23 @@
|
|
1
1
|
#= require jquery
|
2
2
|
#= require jquery_ujs
|
3
|
-
#= require
|
4
|
-
#= require jquery-fileupload/vendor/tmpl
|
3
|
+
#= require mark_it_zero/mark_it_zero
|
5
4
|
#= require pickadate/picker
|
6
5
|
#= require pickadate/picker.date
|
7
6
|
#= require pickadate/picker.time
|
8
|
-
#= require admin/wysihtml5
|
9
|
-
#= require admin/parser_rules/custom
|
10
7
|
#= require underscore
|
11
8
|
#= require backbone
|
12
9
|
#= require_self
|
13
10
|
#= require_tree ./templates
|
14
|
-
#= require_tree ./models
|
15
|
-
#= require_tree ./collections
|
16
11
|
#= require_tree ./views
|
17
12
|
#= require_tree ./routers
|
18
13
|
|
19
|
-
window.
|
20
|
-
Models: {}
|
14
|
+
window.App =
|
21
15
|
Collections: {}
|
22
16
|
Routers: {}
|
23
17
|
Views: {}
|
24
18
|
|
25
|
-
$
|
26
|
-
new
|
19
|
+
$ ->
|
20
|
+
new App.Routers.Router
|
27
21
|
|
28
22
|
# Enable pushState for compatible browsers
|
29
23
|
enablePushState = true
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class App.Routers.Router extends Backbone.Router
|
2
|
+
|
3
|
+
initialize: =>
|
4
|
+
@autoLoadClass()
|
5
|
+
|
6
|
+
autoLoadClass: =>
|
7
|
+
# This is a good place to automatically load classes that may be dependent
|
8
|
+
# on a page element, and not necessarily the route.
|
9
|
+
#
|
10
|
+
# For example:
|
11
|
+
#
|
12
|
+
# new App.Views.Nav if $('.main-nav').length > 0
|
13
|
+
#
|
14
|
+
# Or, perhaps you need to load a class on every page. Do that, here, too,
|
15
|
+
# like this:
|
16
|
+
#
|
17
|
+
new App.Views.DefaultHelpers
|
18
|
+
new App.Views.DropdownMenu if $('.dropdown-menu').length > 0
|
19
|
+
new App.Views.Pickadate
|
20
|
+
|
21
|
+
routes:
|
22
|
+
'': 'initHomePage'
|
23
|
+
|
24
|
+
initHomePage: ->
|
25
|
+
console.log "Welcome to this awesome site, built using Cambium!"
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class App.Views.DropdownMenu extends Backbone.View
|
2
|
+
|
3
|
+
el: 'body'
|
4
|
+
|
5
|
+
events:
|
6
|
+
'click .dropdown-trigger': 'showDropdown'
|
7
|
+
|
8
|
+
initialize: ->
|
9
|
+
$(document).click(@checkHideDropdown)
|
10
|
+
|
11
|
+
showDropdown: (e) ->
|
12
|
+
e.preventDefault()
|
13
|
+
$(e.target).closest('.dropdown-container').find('.dropdown-menu')
|
14
|
+
.toggleClass('active')
|
15
|
+
true
|
16
|
+
|
17
|
+
checkHideDropdown: (e) ->
|
18
|
+
if(
|
19
|
+
!$(e.target).is('.dropdown-menu') &&
|
20
|
+
!$(e.target).is('.dropdown-container') &&
|
21
|
+
$(e.target).parents('.dropdown-container').length == 0
|
22
|
+
)
|
23
|
+
$('.dropdown-menu').removeClass('active')
|
24
|
+
true
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class App.Views.Pickadate extends Backbone.View
|
2
|
+
|
3
|
+
el: 'body'
|
4
|
+
|
5
|
+
initialize: ->
|
6
|
+
$('input.pickadate').pickadate()
|
7
|
+
$('input.pickatime').pickatime()
|
8
|
+
if $('div.pickadatetime').length > 0
|
9
|
+
$('input.pickadatetime-date').pickadate()
|
10
|
+
$('input.pickadatetime-time').pickatime()
|
11
|
+
$('input.pickadatetime-date, input.pickadatetime-time').change (e) ->
|
12
|
+
parent = $(e.target).parents('div.pickadatetime').first()
|
13
|
+
val = parent.find('input.pickadatetime-date').val()
|
14
|
+
val = "#{val} #{parent.find('input.pickadatetime-time').val()}"
|
15
|
+
$(e.target).siblings('input.pickadatetime').first().val(val)
|
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
// ------------------------------------------ Vendor
|
3
|
+
|
4
|
+
@import 'bourbon';
|
5
|
+
@import 'cambium/admin/bones/bones';
|
6
|
+
@import 'pickadate/classic';
|
7
|
+
@import 'pickadate/classic.date';
|
8
|
+
@import 'pickadate/classic.time';
|
9
|
+
@import 'mark_it_zero/mark_it_zero';
|
10
|
+
|
11
|
+
// ------------------------------------------ Partials
|
12
|
+
|
13
|
+
@import 'cambium/admin/partials/globals';
|
14
|
+
@import 'cambium/admin/partials/typography';
|
15
|
+
@import 'cambium/admin/partials/wireframe';
|
16
|
+
@import 'cambium/admin/partials/components';
|
17
|
+
@import 'cambium/admin/partials/header';
|
18
|
+
@import 'cambium/admin/partials/page_title';
|
19
|
+
@import 'cambium/admin/partials/sidebar';
|
20
|
+
@import 'cambium/admin/partials/activity';
|
21
|
+
@import 'cambium/admin/partials/forms';
|
22
|
+
@import 'cambium/admin/partials/tables';
|
23
|
+
@import 'cambium/admin/partials/dashboard';
|
24
|
+
|
25
|
+
// ------------------------------------------ Optional Override
|
26
|
+
|
27
|
+
@import 'admin/admin';
|
@@ -1,12 +1,12 @@
|
|
1
1
|
/* Color Palette
|
2
2
|
============================ */
|
3
|
-
$color-1: #
|
4
|
-
$color-2: #
|
5
|
-
$color-3: #
|
6
|
-
$color-4: #
|
7
|
-
$color-5: #
|
8
|
-
$color-dark: #
|
9
|
-
$color-light: #
|
3
|
+
$color-1: #77D5D3;
|
4
|
+
$color-2: #FED96E;
|
5
|
+
$color-3: #9DC2DD;
|
6
|
+
$color-4: #DB5F7B;
|
7
|
+
$color-5: #24A9A7;
|
8
|
+
$color-dark: #293541; // designed to be a dark color
|
9
|
+
$color-light: #FFFFFF; // designed to be a light color
|
10
10
|
|
11
11
|
// used primarily for notifications:
|
12
12
|
$color-warning: #CCA300;
|
@@ -2,50 +2,50 @@
|
|
2
2
|
|
3
3
|
/*
|
4
4
|
* Welcome to Bones CSS Framework!
|
5
|
-
*
|
6
|
-
* This is the manifest file for Bones' CSS. It brings all files
|
5
|
+
*
|
6
|
+
* This is the manifest file for Bones' CSS. It brings all files
|
7
7
|
* together.
|
8
8
|
*
|
9
|
-
* To add or remove modules, simply comment or uncomment and then
|
9
|
+
* To add or remove modules, simply comment or uncomment and then
|
10
10
|
* use Compass to recompile and compress.
|
11
11
|
*
|
12
12
|
* Files are noted as recommended and required where applicable.
|
13
13
|
*
|
14
14
|
* Refer to the ../docs/ directory for more detailed instruction.
|
15
|
-
*
|
15
|
+
*
|
16
16
|
*/
|
17
17
|
|
18
18
|
/* Vendor
|
19
19
|
============================ */
|
20
20
|
@import 'bones/vendor/normalize'; // highly recommended for cross-browser consistency
|
21
|
-
|
21
|
+
|
22
22
|
/* Config
|
23
23
|
============================ */
|
24
24
|
/*
|
25
|
-
* These are your configuration files. You should always
|
25
|
+
* These are your configuration files. You should always
|
26
26
|
* load all of these files, as the variable values are
|
27
27
|
* resolved and do not contribute any size to the final
|
28
28
|
* bones.css file.
|
29
29
|
*
|
30
30
|
*/
|
31
|
-
@import 'admin/bones/bones-config/colors';
|
32
|
-
@import 'admin/bones/bones-config/_default';
|
33
|
-
@import 'admin/bones/bones-config/wireframe';
|
34
|
-
@import 'admin/bones/bones-config/typography';
|
35
|
-
@import 'admin/bones/bones-config/buttons';
|
36
|
-
@import 'admin/bones/bones-config/forms';
|
37
|
-
@import 'admin/bones/bones-config/tables';
|
38
|
-
@import 'admin/bones/bones-config/nav';
|
39
|
-
@import 'admin/bones/bones-config/images';
|
40
|
-
@import 'admin/bones/bones-config/components';
|
41
|
-
@import 'admin/bones/bones-config/helpers';
|
31
|
+
@import 'cambium/admin/bones/bones-config/colors';
|
32
|
+
@import 'cambium/admin/bones/bones-config/_default';
|
33
|
+
@import 'cambium/admin/bones/bones-config/wireframe';
|
34
|
+
@import 'cambium/admin/bones/bones-config/typography';
|
35
|
+
@import 'cambium/admin/bones/bones-config/buttons';
|
36
|
+
@import 'cambium/admin/bones/bones-config/forms';
|
37
|
+
@import 'cambium/admin/bones/bones-config/tables';
|
38
|
+
@import 'cambium/admin/bones/bones-config/nav';
|
39
|
+
@import 'cambium/admin/bones/bones-config/images';
|
40
|
+
@import 'cambium/admin/bones/bones-config/components';
|
41
|
+
@import 'cambium/admin/bones/bones-config/helpers';
|
42
42
|
|
43
43
|
/* Main Styles
|
44
44
|
============================ */
|
45
45
|
@import 'bones/styles/_default'; // required
|
46
46
|
@import 'bones/styles/wireframe';
|
47
47
|
@import 'bones/styles/typography';
|
48
|
-
@import 'bones/styles/icons';
|
48
|
+
@import 'bones/styles/icons';
|
49
49
|
@import 'bones/styles/buttons';
|
50
50
|
@import 'bones/styles/forms';
|
51
51
|
@import 'bones/styles/tables';
|
@@ -0,0 +1,21 @@
|
|
1
|
+
* {
|
2
|
+
font-family: 'Source Sans Pro', "Helvetica Neue", Helvetica, Arial, sans-serif;
|
3
|
+
}
|
4
|
+
|
5
|
+
@mixin transition-all {
|
6
|
+
@include transition(all 0.25s ease-in-out);
|
7
|
+
}
|
8
|
+
|
9
|
+
@mixin clear-list {
|
10
|
+
list-style-type: none;
|
11
|
+
margin: 0;
|
12
|
+
padding: 0;
|
13
|
+
li {
|
14
|
+
margin: 0;
|
15
|
+
padding: 0;
|
16
|
+
a {
|
17
|
+
margin: 0;
|
18
|
+
padding: 0;
|
19
|
+
}
|
20
|
+
}
|
21
|
+
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
aside#activity {
|
2
|
+
background: $color-light-dark;
|
3
|
+
border-left: 1px solid $color-light-darker;
|
4
|
+
padding: 25px 10px;
|
5
|
+
@include box-sizing(border-box);
|
6
|
+
article {
|
7
|
+
margin: 0 0 30px 0;
|
8
|
+
&:last-child {
|
9
|
+
margin-bottom: 0;
|
10
|
+
}
|
11
|
+
.avatar-container {
|
12
|
+
margin: 5px 10px 0 0;
|
13
|
+
border-color: $color-light-darker;
|
14
|
+
vertical-align: top;
|
15
|
+
width: 28px;
|
16
|
+
height: 28px;
|
17
|
+
}
|
18
|
+
.content {
|
19
|
+
display: inline-block;
|
20
|
+
width: 185px;
|
21
|
+
vertical-align: top;
|
22
|
+
p {
|
23
|
+
margin: 0;
|
24
|
+
font-size: 14px;
|
25
|
+
line-height: 18px;
|
26
|
+
&.action {
|
27
|
+
margin-top: 5px;
|
28
|
+
}
|
29
|
+
&.date {
|
30
|
+
color: darken($color-light-darkest, 15%);
|
31
|
+
font-weight: 400;
|
32
|
+
font-size: 12px;
|
33
|
+
line-height: 12px;
|
34
|
+
}
|
35
|
+
strong {
|
36
|
+
font-size: inherit;
|
37
|
+
line-height: inherit;
|
38
|
+
a {
|
39
|
+
font-size: inherit;
|
40
|
+
line-height: inherit;
|
41
|
+
font-weight: inherit;
|
42
|
+
color: inherit;
|
43
|
+
@include transition-all;
|
44
|
+
&:hover {
|
45
|
+
color: $color-dark-lightest;
|
46
|
+
}
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
50
|
+
}
|
51
|
+
}
|
52
|
+
}
|