tb_core 1.3.0.beta2 → 1.3.0
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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/admin/core/application.js +0 -3
- data/app/assets/stylesheets/admin/core/application.css.scss +6 -0
- data/app/controllers/admin/application_controller.rb +1 -32
- data/app/controllers/admin/dashboard_controller.rb +1 -17
- data/app/controllers/admin/password_resets_controller.rb +1 -1
- data/app/controllers/password_resets_controller.rb +1 -1
- data/app/controllers/spud/application_controller.rb +3 -21
- data/app/helpers/admin/application_helper.rb +0 -18
- data/app/helpers/spud/application_helper.rb +1 -13
- data/app/models/spud_user_session.rb +5 -0
- data/app/views/admin/dashboard/index.html.erb +1 -1
- data/app/views/admin/users/index.html.erb +3 -17
- data/app/views/layouts/admin/_search.html.erb +13 -0
- data/app/views/layouts/admin/application.html.erb +1 -1
- data/config/routes.rb +0 -4
- data/lib/generators/spud/module_generator.rb +5 -4
- data/lib/generators/spud/templates/views/admin/index.html.erb +2 -16
- data/lib/generators/spud/templates/views/admin/show.html.erb +1 -2
- data/lib/spud_core/configuration.rb +2 -27
- data/lib/spud_core/engine.rb +1 -1
- data/lib/spud_core/errors.rb +4 -2
- data/lib/spud_core/version.rb +1 -1
- data/lib/tb_core/form_builder.rb +3 -4
- data/spec/{support/authlogic_helper.rb → authlogic_helper.rb} +0 -0
- data/spec/controllers/admin/application_controller_spec.rb +8 -12
- data/spec/controllers/admin/dashboard_controller_spec.rb +13 -81
- data/spec/controllers/admin/password_reset_controller_spec.rb +28 -33
- data/spec/controllers/admin/settings_controller_spec.rb +7 -7
- data/spec/controllers/admin/setup_controller_spec.rb +10 -17
- data/spec/controllers/admin/user_sessions_controller_spec.rb +11 -11
- data/spec/controllers/admin/users_controller_spec.rb +40 -65
- data/spec/controllers/spud/application_controller_spec.rb +5 -5
- data/spec/dummy/app/assets/javascripts/admin/application.js +16 -0
- data/spec/dummy/app/assets/javascripts/application.js +16 -13
- data/spec/dummy/app/assets/stylesheets/admin/application.css.scss +3 -0
- data/spec/dummy/app/assets/stylesheets/application.css.scss +5 -0
- data/spec/dummy/app/controllers/application_controller.rb +1 -1
- data/spec/dummy/app/views/layouts/application.html.erb +22 -3
- data/spec/dummy/config/application.rb +5 -0
- data/spec/dummy/config/environments/production.rb +1 -1
- data/spec/dummy/config/environments/test.rb +1 -1
- data/spec/dummy/db/migrate/20141214200804_create_spud_admin_permissions.tb_core.rb +12 -0
- data/spec/dummy/db/migrate/20141214200805_create_spud_users.tb_core.rb +30 -0
- data/spec/dummy/db/migrate/20141214200806_add_time_zone_to_spud_user.tb_core.rb +7 -0
- data/spec/dummy/db/migrate/20141214200807_add_scope_to_spud_admin_permissions.tb_core.rb +7 -0
- data/spec/dummy/db/migrate/20141214200808_create_spud_user_settings.tb_core.rb +12 -0
- data/spec/dummy/db/migrate/20141214200809_create_spud_roles.tb_core.rb +11 -0
- data/spec/dummy/db/migrate/20141214200810_create_spud_permissions.tb_core.rb +11 -0
- data/spec/dummy/db/migrate/20141214200811_create_spud_role_permissions.tb_core.rb +12 -0
- data/spec/dummy/db/migrate/20141214200812_drop_spud_admin_permissions.tb_core.rb +16 -0
- data/spec/dummy/db/schema.rb +47 -47
- data/spec/factories/spud_admin_permission_factories.rb +10 -0
- data/spec/factories/spud_role_factories.rb +9 -0
- data/spec/factories/spud_user_factories.rb +31 -0
- data/spec/helpers/spud/admin/application_helper_spec.rb +11 -119
- data/spec/helpers/spud/application_helper_spec.rb +4 -59
- data/spec/lib/spud_core/configuration_spec.rb +1 -22
- data/spec/models/spud_role_spec.rb +8 -8
- data/spec/models/spud_user_spec.rb +8 -8
- data/spec/rails_helper.rb +72 -0
- data/spec/spec_helper.rb +78 -36
- metadata +93 -118
- data/app/controllers/sitemaps_controller.rb +0 -7
- data/app/views/sitemaps/show.xml.builder +0 -12
- data/spec/controllers/sitemap_controllers_spec.rb +0 -15
- data/spec/dummy/app/assets/stylesheets/application.css +0 -13
- data/spec/integration/admin_setup_spec.rb +0 -8
- data/spec/javascripts/date_picker_spec.js +0 -8
- data/spec/javascripts/support/jasmine.yml +0 -88
- data/spec/javascripts/support/jasmine_helper.rb +0 -11
- data/spec/views/layouts/admin/application.html.erb_spec.rb +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10dce243e38a7dda2ea1667da4ef47454d6c07c7
|
4
|
+
data.tar.gz: 21119a1481d42568af16b0afac0772b613b3eced
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52a4a4a753ce259fc37b70763755d83b886b366f77700f5ffbe479cb2ae91cba6b85ce02a77d3af4f4eec2dd45b1e25c037cc6c6161b5d486caffceb460b3ae6
|
7
|
+
data.tar.gz: 189b24c1e07af8ecd989bd9420e62d72976858ecb58274b5ff4db4f618a2bce452e1f5b34805df4f694613b35d15f269846c805ad884390d1c323c86565c2532
|
@@ -1,19 +1,9 @@
|
|
1
1
|
class Admin::ApplicationController < Spud::ApplicationController
|
2
2
|
|
3
3
|
before_action :require_admin_user
|
4
|
-
before_action :verify_site_mode
|
5
4
|
add_breadcrumb "Dashboard", :admin_root_path
|
6
5
|
layout 'admin/detail'
|
7
|
-
respond_to :html, :json
|
8
|
-
unloadable
|
9
|
-
|
10
|
-
def current_admin_site
|
11
|
-
if(session[:admin_site] == nil)
|
12
|
-
return 0
|
13
|
-
else
|
14
|
-
return session[:admin_site]
|
15
|
-
end
|
16
|
-
end
|
6
|
+
respond_to :html, :json
|
17
7
|
|
18
8
|
private
|
19
9
|
|
@@ -30,25 +20,4 @@ private
|
|
30
20
|
end
|
31
21
|
end
|
32
22
|
|
33
|
-
def verify_site_mode
|
34
|
-
if(session[:admin_site] == nil)
|
35
|
-
session[:admin_site] = 0
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def multisite_caching
|
40
|
-
if Spud::Core.multisite_mode_enabled
|
41
|
-
@old_cache_directory = Rails.application.config.action_controller.page_cache_directory
|
42
|
-
if(@old_cache_directory.blank?)
|
43
|
-
@old_cache_directory = Rails.application.config.action_controller.page_cache_directory = File.join(Rails.root,'public')
|
44
|
-
end
|
45
|
-
if session && session[:admin_site]
|
46
|
-
site_config = Spud::Core.site_config_for_id(session[:admin_site])
|
47
|
-
else
|
48
|
-
site_config = Spud::Core.site_config_for_host(request.host_with_port)
|
49
|
-
end
|
50
|
-
self.class.page_cache_directory = File.join(@old_cache_directory.to_s, site_config[:short_name].to_s.downcase)
|
51
|
-
logger.debug "Cache directory set to: #{Rails.application.config.action_controller.page_cache_directory}"
|
52
|
-
end
|
53
|
-
end
|
54
23
|
end
|
@@ -13,27 +13,11 @@ class Admin::DashboardController < Admin::ApplicationController
|
|
13
13
|
@admin_applications = Spud::Core.admin_applications.select do |admin_application|
|
14
14
|
if current_user.can_view_app?(admin_application)
|
15
15
|
if admin_application[:badge]
|
16
|
-
|
17
|
-
data << {:key => admin_application[:key], :badge_count => admin_application[:badge].call(current_user)}
|
18
|
-
rescue Exception => e
|
19
|
-
logger.error e
|
20
|
-
end
|
16
|
+
data << {:key => admin_application[:key], :badge_count => admin_application[:badge].call(current_user)}
|
21
17
|
end
|
22
18
|
end
|
23
19
|
end
|
24
20
|
render :json => {:data => data}
|
25
21
|
end
|
26
22
|
|
27
|
-
def switch
|
28
|
-
if !params[:multisite_select].blank?
|
29
|
-
if Spud::Core.multisite_config.select{|p| p[:site_id].to_i == params[:multisite_select].to_i}.blank? == false
|
30
|
-
session[:admin_site] = params[:multisite_select].to_i
|
31
|
-
else
|
32
|
-
flash[:error] = "Site does not exist."
|
33
|
-
end
|
34
|
-
else
|
35
|
-
session[:admin_site] = 0
|
36
|
-
end
|
37
|
-
redirect_to(back_or_default(!request.referer.blank? ? request.referer : admin_root_path)) and return
|
38
|
-
end
|
39
23
|
end
|
@@ -12,7 +12,7 @@ class Admin::PasswordResetsController < Admin::ApplicationController
|
|
12
12
|
@user = SpudUser.find_by_email(params[:email])
|
13
13
|
if @user
|
14
14
|
@user.reset_perishable_token!
|
15
|
-
CoreMailer.forgot_password_notification(@user, admin_password_reset_url(@user.perishable_token)).
|
15
|
+
CoreMailer.forgot_password_notification(@user, admin_password_reset_url(@user.perishable_token)).deliver_later
|
16
16
|
flash[:notice] = "Instructions to reset your password have been emailed to you. " +
|
17
17
|
"Please check your email."
|
18
18
|
redirect_to admin_login_path
|
@@ -13,7 +13,7 @@ class PasswordResetsController < ApplicationController
|
|
13
13
|
@user = SpudUser.find_by_email(params[:email])
|
14
14
|
if @user
|
15
15
|
@user.reset_perishable_token!
|
16
|
-
CoreMailer.forgot_password_notification(@user, password_reset_url(@user.perishable_token)).
|
16
|
+
CoreMailer.forgot_password_notification(@user, password_reset_url(@user.perishable_token)).deliver_later
|
17
17
|
flash[:notice] = "Password reset instructions have been sent to your email"
|
18
18
|
redirect_to login_path
|
19
19
|
else
|
@@ -6,14 +6,11 @@ class Spud::ApplicationController < ActionController::Base
|
|
6
6
|
helper_method :current_user_session, :current_user, :current_user_id
|
7
7
|
around_filter :set_time_zone
|
8
8
|
|
9
|
-
if Spud::Core.multisite_mode_enabled
|
10
|
-
before_action :multisite_caching
|
11
|
-
end
|
12
9
|
include Spud::ApplicationHelper
|
13
10
|
before_action :set_mailer_default_url
|
14
11
|
|
15
12
|
rescue_from Spud::RequestError, :with => :handle_request_error
|
16
|
-
rescue_from ActionController::UnknownFormat,
|
13
|
+
rescue_from ActionController::UnknownFormat, :with => :handle_unknown_format_error
|
17
14
|
|
18
15
|
def not_found
|
19
16
|
raise Spud::NotFoundError
|
@@ -82,19 +79,6 @@ private
|
|
82
79
|
Time.zone = old_time_zone
|
83
80
|
end
|
84
81
|
|
85
|
-
def multisite_caching
|
86
|
-
if Spud::Core.multisite_mode_enabled
|
87
|
-
@old_cache_directory = Rails.application.config.action_controller.page_cache_directory
|
88
|
-
if(@old_cache_directory.blank?)
|
89
|
-
@old_cache_directory = Rails.application.config.action_controller.page_cache_directory = File.join(Rails.root,'public')
|
90
|
-
end
|
91
|
-
site_config = Spud::Core.site_config_for_host request.host_with_port
|
92
|
-
|
93
|
-
self.class.page_cache_directory = File.join(@old_cache_directory.to_s,site_config[:short_name].to_s.downcase)
|
94
|
-
logger.debug "Cache directory set to: #{Rails.application.config.action_controller.page_cache_directory}"
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
82
|
def handle_request_error(error)
|
99
83
|
error.request_url = request.original_url
|
100
84
|
respond_to do |format|
|
@@ -108,10 +92,8 @@ private
|
|
108
92
|
end
|
109
93
|
|
110
94
|
def handle_unknown_format_error(error)
|
111
|
-
|
112
|
-
|
113
|
-
handle_request_error(error)
|
114
|
-
end
|
95
|
+
error = Spud::NotFoundError.new()
|
96
|
+
handle_request_error(error)
|
115
97
|
end
|
116
98
|
|
117
99
|
end
|
@@ -5,24 +5,6 @@ module Admin::ApplicationHelper
|
|
5
5
|
return Time.now() - timedate > 604800 ? timedate.strftime("%B %d") + ' at ' + timedate.strftime("%I:%M %p") : time_ago_in_words(timedate) + ' ago'
|
6
6
|
end
|
7
7
|
|
8
|
-
def current_admin_site_name
|
9
|
-
site_name = Spud::Core.site_name
|
10
|
-
if Spud::Core.multisite_mode_enabled && !session[:admin_site].blank?
|
11
|
-
config = Spud::Core.multisite_config.select{|p| p[:site_id].to_i == session[:admin_site].to_i}
|
12
|
-
site_name = config[0][:site_name] if !config.blank?
|
13
|
-
end
|
14
|
-
return site_name
|
15
|
-
end
|
16
|
-
|
17
|
-
def header_style
|
18
|
-
style_str = ''
|
19
|
-
if Spud::Core.multisite_mode_enabled
|
20
|
-
config = Spud::Core.multisite_config.select{|p| p[:site_id].to_i == session[:admin_site].to_i}
|
21
|
-
style_str = config[0][:header_style] if !config.blank? && config[0].has_key?(:header_style)
|
22
|
-
end
|
23
|
-
return style_str
|
24
|
-
end
|
25
|
-
|
26
8
|
def url_for_admin_dashboard_application(url)
|
27
9
|
if Rails.configuration.relative_url_root.blank?
|
28
10
|
return url
|
@@ -12,16 +12,7 @@ module Spud::ApplicationHelper
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def current_site_name
|
15
|
-
return Spud::Core.site_name
|
16
|
-
config = Spud::Core.site_config_for_host(request.host_with_port)
|
17
|
-
return Spud::Core.site_name if config.blank?
|
18
|
-
|
19
|
-
return config[:site_name]
|
20
|
-
end
|
21
|
-
|
22
|
-
def current_site_id
|
23
|
-
config = Spud::Core.site_config_for_host(request.host_with_port)
|
24
|
-
return config[:site_id] unless config.blank?
|
15
|
+
return Spud::Core.config.site_name
|
25
16
|
end
|
26
17
|
|
27
18
|
def cache_key_for_spud_collection(collection, key:'view', cache_params:[], for_user:false)
|
@@ -33,9 +24,6 @@ module Spud::ApplicationHelper
|
|
33
24
|
if cache_params.any?
|
34
25
|
cache_keys += cache_params.collect{ |cache_param| params[cache_param] || 'nil' }
|
35
26
|
end
|
36
|
-
if Spud::Core.multisite_mode_enabled
|
37
|
-
cache_keys.unshift(current_site_id)
|
38
|
-
end
|
39
27
|
cache_keys += collection.collect(&:id)
|
40
28
|
cache_key = cache_keys.join('/')
|
41
29
|
if cache_key.length > 250
|
@@ -1,4 +1,9 @@
|
|
1
1
|
class SpudUserSession < Authlogic::Session::Base
|
2
|
+
|
3
|
+
# Rails 4.2 fix. Possibly temporary?
|
4
|
+
# https://github.com/binarylogic/authlogic/issues/432#issuecomment-62506755
|
5
|
+
extend ActiveModel::Naming
|
6
|
+
|
2
7
|
generalize_credentials_error_messages true
|
3
8
|
|
4
9
|
# Dont update last_request_at timestamp on every page request
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<%= link_to url_for_admin_dashboard_application(admin_application[:url]) do %>
|
5
5
|
<%= image_tag(admin_application[:thumbnail]) %>
|
6
6
|
<span class="dash-icon-badge" ></span>
|
7
|
-
<span class="
|
7
|
+
<span class="application-name"><%= admin_application[:name] %></span>
|
8
8
|
<% end %>
|
9
9
|
</div>
|
10
10
|
<% end %>
|
@@ -1,21 +1,7 @@
|
|
1
1
|
<%= content_for :data_controls do %>
|
2
|
-
<%=
|
3
|
-
|
4
|
-
|
5
|
-
<div class="input-group-addon"><span class="glyphicon glyphicon-search"></span></div>
|
6
|
-
<%= search_field_tag :search, params[:search], :placeholder => 'Search', :class => 'form-control' %>
|
7
|
-
<% if params[:search] %>
|
8
|
-
<div class="input-group-addon">
|
9
|
-
<%= link_to raw('<span class="glyphicon glyphicon-remove"></span>'), admin_users_path %>
|
10
|
-
</div>
|
11
|
-
<% end %>
|
12
|
-
</div>
|
13
|
-
</div>
|
14
|
-
<div class="form-group">
|
15
|
-
<%= link_to 'Roles', admin_roles_path, :class => 'btn btn-default admin-role-btn' %>
|
16
|
-
<%= link_to "New User", new_admin_user_path, :class => "btn btn-primary admin-user-add-btn", :title => "New User" %>
|
17
|
-
</div>
|
18
|
-
<% end %>
|
2
|
+
<%= render :partial => '/layouts/admin/search', :locals => {:search_path => admin_users_path} %>
|
3
|
+
<%= link_to 'Roles', admin_roles_path, :class => 'btn btn-default admin-role-btn' %>
|
4
|
+
<%= link_to "New User", new_admin_user_path, :class => "btn btn-primary admin-user-add-btn", :title => "New User" %>
|
19
5
|
<% end %>
|
20
6
|
|
21
7
|
<%= content_for :detail do %>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%= form_tag search_path, :method => :get, :class => 'form-inline admin-search-form' do %>
|
2
|
+
<div class="form-group">
|
3
|
+
<div class="input-group">
|
4
|
+
<div class="input-group-addon"><span class="glyphicon glyphicon-search"></span></div>
|
5
|
+
<%= search_field_tag :search, params[:search], :placeholder => 'Search', :class => 'form-control' %>
|
6
|
+
<% if params[:search] %>
|
7
|
+
<div class="input-group-addon">
|
8
|
+
<%= link_to raw('<span class="glyphicon glyphicon-remove"></span>'), search_path %>
|
9
|
+
</div>
|
10
|
+
<% end %>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
<% end %>
|
@@ -15,7 +15,7 @@
|
|
15
15
|
<p><strong>Notice:</strong> This is a staging version of your website. To update your live website, please <%= link_to 'log in to production.', "http://#{Spud::Core.production_alert_domain}/admin" %></p>
|
16
16
|
</div>
|
17
17
|
<% end %>
|
18
|
-
<div id="header"
|
18
|
+
<div id="header">
|
19
19
|
<div class="container">
|
20
20
|
<%= link_to '/' do %>
|
21
21
|
<h1><%= Spud::Core.config.site_name %></h1>
|
data/config/routes.rb
CHANGED
@@ -15,13 +15,9 @@ Rails.application.routes.draw do
|
|
15
15
|
resources :users, :controller
|
16
16
|
resources :roles
|
17
17
|
|
18
|
-
match 'switch' => "dashboard#switch", :via => [:get, :post]
|
19
|
-
|
20
18
|
get 'setup' => 'setup#new'
|
21
19
|
post 'setup' => 'setup#create'
|
22
20
|
end
|
23
|
-
|
24
|
-
resource :sitemap, :only => [:show]
|
25
21
|
|
26
22
|
# Non-admin login paths
|
27
23
|
get 'login' => 'user_sessions#new', :as => 'login'
|
@@ -10,10 +10,10 @@ class Spud::ModuleGenerator < ::Rails::Generators::Base
|
|
10
10
|
def create_module
|
11
11
|
template "admin_controller.rb.erb", "app/controllers/admin/#{module_name_formatted}_controller.rb"
|
12
12
|
template "controller.rb.erb", "app/controllers/#{module_name_formatted}_controller.rb"
|
13
|
-
|
14
13
|
template "assets/module.js.erb", "app/assets/javascripts/#{module_name_formatted}.js"
|
15
14
|
template "assets/admin/module.js.erb", "app/assets/javascripts/admin/#{module_name_formatted}.js"
|
16
|
-
create_file "app/assets/stylesheets/admin/#{module_name_formatted}.css.scss", "// Place #{module_name}
|
15
|
+
create_file "app/assets/stylesheets/admin/#{module_name_formatted}.css.scss", "// Place #{module_name} admin styles here\n\n"
|
16
|
+
create_file "app/assets/stylesheets/#{module_name_formatted}.css.scss", "// Place #{module_name} styles here\n\n"
|
17
17
|
template "views/admin/index.html.erb", "app/views/admin/#{module_name_formatted}/index.html.erb"
|
18
18
|
template "views/admin/show.html.erb", "app/views/admin/#{module_name_formatted}/show.html.erb"
|
19
19
|
template "views/admin/new.html.erb", "app/views/admin/#{module_name_formatted}/new.html.erb"
|
@@ -23,8 +23,9 @@ class Spud::ModuleGenerator < ::Rails::Generators::Base
|
|
23
23
|
template "views/frontend/show.html.erb", "app/views/#{module_name_formatted}/show.html.erb"
|
24
24
|
environment("Spud::Core.config.admin_applications += [{:name => '#{module_name_formatted.humanize.titlecase}', :thumbnail => \"admin/module_icon.png\", :url => \"/admin/#{module_name_formatted}\"}]")
|
25
25
|
create_routes
|
26
|
-
invoke "model", [module_name_formatted.singularize] + attributes
|
27
|
-
|
26
|
+
Rails::Generators.invoke "model", [module_name_formatted.singularize] + attributes, :behavior => behavior
|
27
|
+
Rails::Generators.invoke 'helper', [module_name], :behavior => behavior
|
28
|
+
Rails::Generators.invoke 'helper', ["Admin/#{module_name}"], :behavior => behavior
|
28
29
|
if self.behavior == :invoke
|
29
30
|
create_model_scopes()
|
30
31
|
end
|
@@ -1,20 +1,6 @@
|
|
1
1
|
<%% content_for :data_controls do %>
|
2
|
-
<%%=
|
3
|
-
|
4
|
-
<div class="input-group">
|
5
|
-
<div class="input-group-addon"><span class="glyphicon glyphicon-search"></span></div>
|
6
|
-
<%%= text_field_tag 'search', params[:search], :placeholder => 'Search', :class => 'form-control' %>
|
7
|
-
<%% if params[:search] %>
|
8
|
-
<div class="input-group-addon">
|
9
|
-
<%%= link_to raw('<span class="glyphicon glyphicon-remove"></span>'), admin_<%= module_name_formatted %>_path %>
|
10
|
-
</div>
|
11
|
-
<%% end %>
|
12
|
-
</div>
|
13
|
-
</div>
|
14
|
-
<div class="form-group">
|
15
|
-
<%%= link_to "New <%=module_name_formatted.singularize.humanize.titlecase%>", new_admin_<%=module_name_formatted.singularize%>_path, :class => "btn btn-primary", :title => "New <%=module_name_formatted.singularize.humanize.titlecase%>" %>
|
16
|
-
</div>
|
17
|
-
<%% end %>
|
2
|
+
<%%= render :partial => '/layouts/admin/search', :locals => {:search_path => admin_<%= module_name_formatted %>_path } %>
|
3
|
+
<%%= link_to "New <%=module_name_formatted.singularize.humanize.titlecase%>", new_admin_<%=module_name_formatted.singularize%>_path, :class => "btn btn-primary", :title => "New <%=module_name_formatted.singularize.humanize.titlecase%>" %>
|
18
4
|
<%% end %>
|
19
5
|
|
20
6
|
<%% content_for :detail do %>
|
@@ -1,5 +1,6 @@
|
|
1
1
|
<%% content_for :data_controls do %>
|
2
2
|
<%%= link_to 'Edit', edit_admin_<%=module_name_formatted.singularize%>_path(@<%=module_name_formatted.singularize%>), :class => 'btn btn-default' %>
|
3
|
+
<%%= link_to "Back", admin_<%= module_name_formatted %>_path, :class => "btn btn-default" %>
|
3
4
|
<%% end %>
|
4
5
|
|
5
6
|
<dl class="dl-horizontal">
|
@@ -9,8 +10,6 @@
|
|
9
10
|
<%- end -%>
|
10
11
|
</dl>
|
11
12
|
|
12
|
-
<%%= link_to "Back", admin_<%= module_name_formatted %>_path, :class => "btn btn-default" %>
|
13
|
-
|
14
13
|
<script>
|
15
14
|
$(document).ready(app.admin.<%= module_name_formatted %>.show);
|
16
15
|
</script>
|
@@ -1,18 +1,15 @@
|
|
1
1
|
module Spud
|
2
2
|
module Core
|
3
3
|
include ActiveSupport::Configurable
|
4
|
-
config_accessor :site_name, :admin_applications, :
|
5
|
-
:
|
4
|
+
config_accessor :site_name, :admin_applications, :from_address, :site_id, :short_name,
|
5
|
+
:javascripts, :stylesheets, :admin_javascripts, :admin_stylesheets,
|
6
6
|
:permissions, :production_alert_domain, :use_email_as_login
|
7
7
|
self.admin_applications = []
|
8
8
|
self.site_name = "Company Name"
|
9
9
|
self.site_id = 0
|
10
10
|
self.short_name = 'default'
|
11
|
-
self.sitemap_urls = []
|
12
11
|
self.javascripts = []
|
13
12
|
self.stylesheets = []
|
14
|
-
self.multisite_mode_enabled = false
|
15
|
-
self.multisite_config = []
|
16
13
|
self.from_address = "no-reply@companyname.com"
|
17
14
|
self.permissions = []
|
18
15
|
self.admin_javascripts = ['admin/core/application', 'admin/application']
|
@@ -20,28 +17,6 @@ module Spud
|
|
20
17
|
self.production_alert_domain = nil
|
21
18
|
self.use_email_as_login = false
|
22
19
|
|
23
|
-
def self.site_config_for_host(host)
|
24
|
-
configs = Spud::Core.multisite_config.select{|p| p[:hosts].include?(host)}
|
25
|
-
if configs.blank?
|
26
|
-
return default_site_config
|
27
|
-
else
|
28
|
-
return configs[0]
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def self.site_config_for_id(id)
|
33
|
-
if(id == Spud::Core.config.site_id)
|
34
|
-
return self.default_site_config
|
35
|
-
else
|
36
|
-
matches = Spud::Core.config.multisite_config.select{ |site| site[:site_id] == id }
|
37
|
-
return matches[0] if matches.any?
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def self.default_site_config
|
42
|
-
return {:site_id => Spud::Core.config.site_id, :site_name => Spud::Core.config.site_name, :short_name => Spud::Core.config.short_name}
|
43
|
-
end
|
44
|
-
|
45
20
|
def self.append_admin_javascripts(*args)
|
46
21
|
if args[0].class == Array
|
47
22
|
Spud::Core.config.admin_javascripts += args[0]
|
data/lib/spud_core/engine.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'responders'
|
1
2
|
require 'jquery-rails'
|
2
3
|
require 'authlogic'
|
3
4
|
require 'bootstrap-sass'
|
@@ -21,7 +22,6 @@ module Spud
|
|
21
22
|
|
22
23
|
engine_name :tb_core
|
23
24
|
config.autoload_paths << "#{root}/lib"
|
24
|
-
#config.autoload_paths << File.expand_path("../lib", __FILE__)
|
25
25
|
|
26
26
|
initializer 'tb_core.controller_overrides' do |config|
|
27
27
|
ActionController::Base.class_eval do
|
data/lib/spud_core/errors.rb
CHANGED
@@ -14,7 +14,8 @@ class Spud::AccessDeniedError < Spud::RequestError
|
|
14
14
|
@template = opts[:template]
|
15
15
|
@code = 403
|
16
16
|
@title = "Access Denied"
|
17
|
-
|
17
|
+
message = opts[:message] || "You are not authorized to view the requested #{item.downcase}."
|
18
|
+
super(message)
|
18
19
|
end
|
19
20
|
end
|
20
21
|
|
@@ -24,6 +25,7 @@ class Spud::NotFoundError < Spud::RequestError
|
|
24
25
|
@template = opts[:template]
|
25
26
|
@code = 404
|
26
27
|
@title = "Not Found"
|
27
|
-
|
28
|
+
message = opts[:message] || "The #{item.downcase} you were looking for could not be found."
|
29
|
+
super(message)
|
28
30
|
end
|
29
31
|
end
|
data/lib/spud_core/version.rb
CHANGED
data/lib/tb_core/form_builder.rb
CHANGED
@@ -31,10 +31,9 @@ class TbCore::FormBuilder < ActionView::Helpers::FormBuilder
|
|
31
31
|
if block_given?
|
32
32
|
concat(yield(attribute))
|
33
33
|
else
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
))
|
34
|
+
options[:class] ||= 'form-control'
|
35
|
+
options[:placeholder] ||= @object.class.human_attribute_name(attribute)
|
36
|
+
concat send(input_type, attribute, objectify_options(options))
|
38
37
|
end
|
39
38
|
error_message = @object.errors[attribute].first
|
40
39
|
if error_message
|
File without changes
|
@@ -1,6 +1,6 @@
|
|
1
|
-
require '
|
1
|
+
require 'rails_helper'
|
2
2
|
|
3
|
-
describe Admin::ApplicationController do
|
3
|
+
RSpec.describe Admin::ApplicationController, :type => :controller do
|
4
4
|
|
5
5
|
before :each do
|
6
6
|
activate_authlogic
|
@@ -9,7 +9,7 @@ describe Admin::ApplicationController do
|
|
9
9
|
@session = SpudUserSession.create(@user)
|
10
10
|
end
|
11
11
|
|
12
|
-
describe
|
12
|
+
describe 'require_user' do
|
13
13
|
controller(Admin::ApplicationController) do
|
14
14
|
def index
|
15
15
|
render :nothing => true
|
@@ -18,8 +18,7 @@ describe Admin::ApplicationController do
|
|
18
18
|
it "should respond successfully if the current user is a super admin" do
|
19
19
|
@user.update_attribute(:super_admin, true)
|
20
20
|
get :index
|
21
|
-
|
22
|
-
response.should be_success
|
21
|
+
expect(response).to be_success
|
23
22
|
end
|
24
23
|
|
25
24
|
it "should respond successfully if the current user has admin permissions" do
|
@@ -28,15 +27,13 @@ describe Admin::ApplicationController do
|
|
28
27
|
@user.role = @role
|
29
28
|
@user.save()
|
30
29
|
get :index
|
31
|
-
|
32
|
-
response.should be_success
|
30
|
+
expect(response).to be_success
|
33
31
|
end
|
34
32
|
|
35
33
|
it "should redirect to the login if the current user is not logged in" do
|
36
34
|
@session.destroy
|
37
35
|
get :index
|
38
|
-
|
39
|
-
response.should redirect_to(admin_login_path)
|
36
|
+
expect(response).to redirect_to(admin_login_path(:return_to => '/admin/application'))
|
40
37
|
end
|
41
38
|
|
42
39
|
it "should redirect to the root for a user without administrative priviledges" do
|
@@ -44,9 +41,8 @@ describe Admin::ApplicationController do
|
|
44
41
|
@user.role = nil
|
45
42
|
@user.save
|
46
43
|
get :index
|
47
|
-
|
48
|
-
response.
|
49
|
-
response.should render_template('layouts/admin/error_page')
|
44
|
+
expect(response.code).to eq('403')
|
45
|
+
expect(response).to render_template('layouts/admin/error_page')
|
50
46
|
end
|
51
47
|
|
52
48
|
end
|