chr 0.5.7 → 0.5.8

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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/.scss-style.yml +3 -3
  3. data/{LICENSE → LICENSE.md} +0 -0
  4. data/README.md +24 -10
  5. data/app/assets/javascripts/chr/list_tabs.coffee +1 -2
  6. data/app/assets/javascripts/chr/view_tabs.coffee +7 -6
  7. data/app/assets/stylesheets/chr/layout.scss +15 -2
  8. data/app/assets/stylesheets/chr/themes/basic.scss +8 -16
  9. data/chr.gemspec +33 -34
  10. data/lib/chr.rb +9 -12
  11. data/lib/chr/version.rb +1 -1
  12. metadata +8 -51
  13. data/app/assets/javascripts/vendor/slip.js +0 -804
  14. data/bin/chr +0 -13
  15. data/docs/bootstrap.md +0 -23
  16. data/docs/demo.png +0 -0
  17. data/docs/notes.md +0 -3
  18. data/docs/rails.md +0 -233
  19. data/lib/chr/app_builder.rb +0 -378
  20. data/lib/chr/generators/app_generator.rb +0 -211
  21. data/lib/generators/chr/controller_generator.rb +0 -18
  22. data/templates/Gemfile.erb +0 -41
  23. data/templates/Procfile +0 -1
  24. data/templates/README.md.erb +0 -45
  25. data/templates/_analytics.html.erb +0 -1
  26. data/templates/_flashes.html.erb +0 -7
  27. data/templates/_javascript.html.erb +0 -5
  28. data/templates/application.coffee +0 -2
  29. data/templates/application.scss +0 -1
  30. data/templates/application.yml +0 -6
  31. data/templates/application_gitignore +0 -15
  32. data/templates/application_layout.html.erb.erb +0 -17
  33. data/templates/bin_setup.erb +0 -35
  34. data/templates/body_class_helper.rb +0 -15
  35. data/templates/bundler_audit.rake +0 -12
  36. data/templates/carrierwave.rb +0 -21
  37. data/templates/character_admin.coffee.erb +0 -38
  38. data/templates/character_admin.scss +0 -14
  39. data/templates/character_admin_index.html.erb +0 -5
  40. data/templates/character_admin_layout.html.erb.erb +0 -21
  41. data/templates/character_base_controller.rb +0 -14
  42. data/templates/dev.rake +0 -12
  43. data/templates/devise_overrides_passwords_controller.rb +0 -11
  44. data/templates/devise_overrides_passwords_edit.html.erb +0 -31
  45. data/templates/devise_overrides_passwords_new.html.erb +0 -19
  46. data/templates/devise_overrides_sessions_controller.rb +0 -20
  47. data/templates/devise_overrides_sessions_new.html.erb +0 -29
  48. data/templates/errors.rb +0 -34
  49. data/templates/json_encoding.rb +0 -1
  50. data/templates/puma.rb +0 -18
  51. data/templates/routes.rb +0 -86
  52. data/templates/sample.env +0 -6
  53. data/templates/secrets.yml +0 -14
  54. data/templates/smtp.rb +0 -9
  55. data/templates/staging.rb +0 -5
@@ -1,21 +0,0 @@
1
- CarrierWave.configure do |config|
2
- config.storage = :file
3
- config.cache_dir = "#{Rails.root}/public/uploads/tmp"
4
-
5
- if Rails.env.test?
6
- config.cache_dir = "#{Rails.root}/public/uploads/tmp/test"
7
- config.enable_processing = false
8
- end
9
-
10
- if Rails.env.production? || Rails.env.staging?
11
- if ENV.has_key? "FOG_DIRECTORY"
12
- config.storage = :fog
13
- config.fog_directory = ENV.fetch("FOG_DIRECTORY")
14
- config.fog_credentials = {
15
- provider: "AWS",
16
- aws_access_key_id: ENV.fetch("AWS_ACCESS_KEY_ID"),
17
- aws_secret_access_key: ENV.fetch("AWS_SECRET_ACCESS_KEY"),
18
- }
19
- end
20
- end
21
- end
@@ -1,38 +0,0 @@
1
- #= require jquery
2
- #= require jquery_ujs
3
-
4
- #= require chr
5
- #= require loft
6
- #= require ants
7
- #= require journal
8
-
9
- @redirectToSignIn = ->
10
- signinPath = "/admin/sign_in"
11
- if window.location.hash
12
- returnTo = window.location.hash.substring(1)
13
- signinPath = "#{signinPath}?return_to=#{returnTo}"
14
- window.location = signinPath
15
-
16
- @addWebsiteLink = ->
17
- $link =$ """<a href='/' target='_blank'>
18
- <i class='fa fa-home fa-fw'></i> View Site
19
- </a>"""
20
- chr.$mainMenu.prepend $link
21
-
22
- $ ->
23
- $.get("/admin/bootstrap.json", (response) ->
24
- chr.start "<%= app_name %>",
25
- modules:
26
- posts: new JournalPosts()
27
- pages: new JournalPages()
28
- loft: new Loft()
29
- settings:
30
- menuIcon: "cog"
31
- items:
32
- categories: new JournalCategories()
33
- admins: new AntsAdminUsers()
34
- redirects: new AntsRedirects()
35
- new AntsProfile()
36
- ).fail (response) ->
37
- if response.status == 401
38
- redirectToSignIn(response)
@@ -1,14 +0,0 @@
1
- @import "chr";
2
- @import "loft";
3
- @import "ants";
4
- @import "journal";
5
- @import "font-awesome";
6
-
7
- /* Tablet ------------------------------------------------------------------ */
8
- @media #{$tablet} {
9
- .menu,
10
- .menu-posts,
11
- .menu-settings {
12
- margin-top: 1em;
13
- }
14
- }
@@ -1,5 +0,0 @@
1
- <%= javascript_include_tag :admin %>
2
-
3
- <% if admin_user_signed_in? %>
4
- <%= render partial: 'ants/profile' %>
5
- <% end %>
@@ -1,21 +0,0 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
6
-
7
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
8
- <meta name="apple-mobile-web-app-capable" content="yes">
9
- <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
10
-
11
- <%%= display_meta_tags site: "<%= app_name %>", title: "CMS" %>
12
-
13
- <%%= stylesheet_link_tag :admin, media: "all" %>
14
- <%%= csrf_meta_tags %>
15
- </head>
16
-
17
- <body class="<%%= body_class %>">
18
- <%%= yield %>
19
- </body>
20
-
21
- </html>
@@ -1,14 +0,0 @@
1
- module Admin
2
- class BaseController < ActionController::Base
3
- protect_from_forgery
4
- before_action :authenticate_admin_user!, except: %w(index)
5
-
6
- def index
7
- render '/admin/index', layout: 'admin'
8
- end
9
-
10
- def bootstrap_data
11
- render json: {}
12
- end
13
- end
14
- end
@@ -1,12 +0,0 @@
1
- if Rails.env.development? || Rails.env.test?
2
- require "factory_girl"
3
-
4
- namespace :dev do
5
- desc "Seed data for development environment"
6
- task prime: "db:setup" do
7
- include FactoryGirl::Syntax::Methods
8
- Mongoid.purge!
9
- AdminUser.create!(name: 'Admin', email: 'user@example.com', password: 'password')
10
- end
11
- end
12
- end
@@ -1,11 +0,0 @@
1
- module Admin
2
- class DeviseOverrides::PasswordsController < Devise::PasswordsController
3
- layout 'admin'
4
-
5
- protected
6
-
7
- def after_resetting_password_path_for(resource)
8
- admin_path
9
- end
10
- end
11
- end
@@ -1,31 +0,0 @@
1
- <% set_meta_tags title: "Change Password" %>
2
-
3
- <div class='signin-modal'>
4
- <h2>Change password</h2>
5
- <p class='notice'><%= notice %></p>
6
- <p class='alert'><%= alert %></p>
7
-
8
- <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| %>
9
- <%= f.hidden_field :reset_password_token %>
10
-
11
- <label for='admin_user_password' class='form-input input-required input-string'>
12
- <div class='label'>
13
- New password
14
- <% if @minimum_password_length %>
15
- <em>(<%= @minimum_password_length %> characters minimum)</em>
16
- <% end %>
17
- </div>
18
- <%= f.password_field :password, autocomplete: "off", tabindex: 1 %>
19
- </label>
20
-
21
- <label for='admin_user_password_confirmation' class='form-input input-required input-string'>
22
- <div class='label'>Confirm new password</div>
23
- <%= f.password_field :password_confirmation, autocomplete: "off", tabindex: 2 %>
24
- </label>
25
-
26
- <%= devise_error_messages! %>
27
-
28
- <%= f.submit "Change password", tabindex: 3 %>
29
- <%= link_to "Sign In", new_session_path(resource_name) %>
30
- <% end %>
31
- </div>
@@ -1,19 +0,0 @@
1
- <% set_meta_tags title: "Reset Password" %>
2
-
3
- <div class='signin-modal'>
4
- <h2>Forgot your password?</h2>
5
- <p class='notice'><%= notice %></p>
6
- <p class='alert'><%= alert %></p>
7
-
8
- <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %>
9
- <label for='admin_user_email' class='form-input input-required input-string'>
10
- <div class='label'>Email</div>
11
- <%= f.email_field :email, autofocus: true, tabindex: 1 %>
12
- </label>
13
-
14
- <%= devise_error_messages! %>
15
-
16
- <%= f.submit "Reset password", tabindex: 2 %>
17
- <%= link_to "Sign In", new_session_path(resource_name) %>
18
- <% end %>
19
- </div>
@@ -1,20 +0,0 @@
1
- module Admin
2
- class DeviseOverrides::SessionsController < Devise::SessionsController
3
- layout 'admin'
4
- before_filter :update_return_to, only: %w(new)
5
-
6
- def after_sign_in_path_for(resource)
7
- "#{admin_path}##{stored_location_for(resource)}"
8
- end
9
-
10
- def after_sign_out_path_for(resource)
11
- new_admin_user_session_path
12
- end
13
-
14
- private
15
-
16
- def update_return_to
17
- session["admin_user_return_to"] = params[:return_to]
18
- end
19
- end
20
- end
@@ -1,29 +0,0 @@
1
- <% set_meta_tags title: "Sing in" %>
2
-
3
- <div class='signin-modal'>
4
- <h2>Sign in</h2>
5
- <p class='notice'><%= notice %></p>
6
- <p class='alert'><%= alert %></p>
7
-
8
- <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
9
- <label for='admin_user_email' class='form-input input-required input-string'>
10
- <div class='label'>Email</div>
11
- <%= f.email_field :email, autofocus: true, tabindex: 1 %>
12
- </label>
13
-
14
- <label for='admin_user_password' class='form-input input-required input-string'>
15
- <div class='label'>Password <%= link_to 'Forgot?', new_password_path(resource_name) %></div>
16
- <%= f.password_field :password, autocomplete: "off", tabindex: 2 %>
17
- </label>
18
-
19
- <label for='admin_user_remember_me' class='form-input input-switch'>
20
- <div class='switch'>
21
- <%= f.check_box :remember_me, tabindex: 3 %>
22
- <div class='checkbox'></div>
23
- </div>
24
- <span class='label'>Remember me</span>
25
- </label>
26
-
27
- <%= f.submit "Sign in", tabindex: 4 %>
28
- <% end %>
29
- </div>
@@ -1,34 +0,0 @@
1
- require "net/http"
2
- require "net/smtp"
3
-
4
- # Example:
5
- # begin
6
- # some http call
7
- # rescue *HTTP_ERRORS => error
8
- # notify_hoptoad error
9
- # end
10
-
11
- HTTP_ERRORS = [
12
- EOFError,
13
- Errno::ECONNRESET,
14
- Errno::EINVAL,
15
- Net::HTTPBadResponse,
16
- Net::HTTPHeaderSyntaxError,
17
- Net::ProtocolError,
18
- Timeout::Error
19
- ]
20
-
21
- SMTP_SERVER_ERRORS = [
22
- IOError,
23
- Net::SMTPAuthenticationError,
24
- Net::SMTPServerBusy,
25
- Net::SMTPUnknownError,
26
- TimeoutError
27
- ]
28
-
29
- SMTP_CLIENT_ERRORS = [
30
- Net::SMTPFatalError,
31
- Net::SMTPSyntaxError
32
- ]
33
-
34
- SMTP_ERRORS = SMTP_SERVER_ERRORS + SMTP_CLIENT_ERRORS
@@ -1 +0,0 @@
1
- ActiveSupport::JSON::Encoding.time_precision = 0
@@ -1,18 +0,0 @@
1
- # https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server
2
-
3
- # The environment variable WEB_CONCURRENCY may be set to a default value based
4
- # on dyno size. To manually configure this value use heroku config:set
5
- # WEB_CONCURRENCY.
6
- workers Integer(ENV.fetch("WEB_CONCURRENCY", 2))
7
- threads_count = Integer(ENV.fetch("MAX_THREADS", 2))
8
- threads(threads_count, threads_count)
9
-
10
- preload_app!
11
-
12
- rackup DefaultRackup
13
- environment ENV.fetch("RACK_ENV", "development")
14
-
15
- on_worker_boot do
16
- # Worker specific setup for Rails 4.1+
17
- # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
18
- end
@@ -1,86 +0,0 @@
1
- Rails.application.routes.draw do
2
- #----------------------------------------------------------------------------
3
- # Admin
4
- #----------------------------------------------------------------------------
5
- devise_for :admin_users,
6
- path: "admin",
7
- controllers: {
8
- passwords: "admin/devise_overrides/passwords",
9
- sessions: "admin/devise_overrides/sessions"
10
- }
11
-
12
- namespace :admin do
13
- get "/" => "base#index"
14
- get "/bootstrap.json" => "base#bootstrap_data"
15
- mount_journal_posts_crud
16
- mount_journal_pages_crud
17
- mount_journal_categories_crud
18
- mount_loft_assets_crud
19
- mount_ants_admin_users_crud
20
- mount_ants_redirects_crud
21
- end
22
-
23
- #----------------------------------------------------------------------------
24
- # Application
25
- #----------------------------------------------------------------------------
26
- root "journal_posts#index"
27
- mount_journal_categories
28
- mount_journal_pages
29
- mount_journal_posts
30
- mount_ants_redirects
31
-
32
- # The priority is based upon order of creation: first created -> highest priority.
33
- # See how all your routes lay out with "rake routes".
34
-
35
- # You can have the root of your site routed with "root"
36
- # root 'welcome#index'
37
-
38
- # Example of regular route:
39
- # get 'products/:id' => 'catalog#view'
40
-
41
- # Example of named route that can be invoked with purchase_url(id: product.id)
42
- # get 'products/:id/purchase' => 'catalog#purchase', as: :purchase
43
-
44
- # Example resource route (maps HTTP verbs to controller actions automatically):
45
- # resources :products
46
-
47
- # Example resource route with options:
48
- # resources :products do
49
- # member do
50
- # get 'short'
51
- # post 'toggle'
52
- # end
53
- #
54
- # collection do
55
- # get 'sold'
56
- # end
57
- # end
58
-
59
- # Example resource route with sub-resources:
60
- # resources :products do
61
- # resources :comments, :sales
62
- # resource :seller
63
- # end
64
-
65
- # Example resource route with more complex sub-resources:
66
- # resources :products do
67
- # resources :comments
68
- # resources :sales do
69
- # get 'recent', on: :collection
70
- # end
71
- # end
72
-
73
- # Example resource route with concerns:
74
- # concern :toggleable do
75
- # post 'toggle'
76
- # end
77
- # resources :posts, concerns: :toggleable
78
- # resources :photos, concerns: :toggleable
79
-
80
- # Example resource route within a namespace:
81
- # namespace :admin do
82
- # # Directs /admin/products/* to Admin::ProductsController
83
- # # (app/controllers/admin/products_controller.rb)
84
- # resources :products
85
- # end
86
- end
@@ -1,6 +0,0 @@
1
- # http://ddollar.github.com/foreman/
2
- ASSET_HOST = localhost:3000
3
- APPLICATION_HOST = localhost:3000
4
- RACK_ENV = development
5
- SECRET_KEY_BASE = development_secret
6
- EXECJS_RUNTIME = Node
@@ -1,14 +0,0 @@
1
- default: &default
2
- secret_key_base: <%%= ENV.fetch('SECRET_KEY_BASE', 'development_secret') %>
3
-
4
- development:
5
- <<: *default
6
-
7
- test:
8
- <<: *default
9
-
10
- staging:
11
- <<: *default
12
-
13
- production:
14
- <<: *default
@@ -1,9 +0,0 @@
1
- SMTP_SETTINGS = {
2
- address: ENV.fetch("SMTP_ADDRESS"), # example: "smtp.sendgrid.net"
3
- authentication: :plain,
4
- domain: ENV.fetch("SMTP_DOMAIN"), # example: "heroku.com"
5
- enable_starttls_auto: true,
6
- password: ENV.fetch("SMTP_PASSWORD"),
7
- port: "587",
8
- user_name: ENV.fetch("SMTP_USERNAME")
9
- }
@@ -1,5 +0,0 @@
1
- require_relative "production"
2
-
3
- Mail.register_interceptor(
4
- RecipientInterceptor.new(ENV.fetch("EMAIL_RECIPIENTS"))
5
- )