spud_core 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/images/spud/admin/spud_logo.png +0 -0
- data/app/assets/images/spud/admin/spud_logo@2x.png +0 -0
- data/app/assets/javascripts/spud/admin/application.js +9 -2
- data/app/assets/javascripts/spud/admin/dashboard.js +80 -0
- data/app/assets/stylesheets/spud/admin/application.css +80 -14
- data/app/controllers/spud/admin/dashboard_controller.rb +29 -1
- data/app/controllers/spud/application_controller.rb +20 -1
- data/app/controllers/spud/users_controller.rb +18 -0
- data/app/helpers/spud/admin/application_helper.rb +19 -0
- data/app/models/spud_user.rb +1 -0
- data/app/models/spud_user_setting.rb +6 -0
- data/app/views/layouts/spud/admin/application.html.erb +21 -4
- data/app/views/spud/admin/dashboard/index.html.erb +11 -4
- data/app/views/spud/admin/users/index.html.erb +2 -2
- data/config/routes.rb +2 -0
- data/db/migrate/20120328235431_add_scope_to_spud_admin_permissions.rb +6 -0
- data/db/migrate/20120329174000_create_spud_user_settings.rb +11 -0
- data/lib/spud_core/configuration.rb +12 -1
- data/lib/spud_core/engine.rb +4 -0
- data/lib/spud_core/version.rb +1 -1
- data/test/fixtures/spud_user_settings.yml +11 -0
- data/test/unit/spud_user_settings_test.rb +7 -0
- metadata +38 -28
Binary file
|
Binary file
|
@@ -6,6 +6,10 @@
|
|
6
6
|
//= require bootstrap/js/bootstrap
|
7
7
|
//= require_self
|
8
8
|
//= require_tree .
|
9
|
+
|
10
|
+
Spud = (typeof(Spud) == 'undefined') ? {} : Spud;
|
11
|
+
Spud.Admin = (typeof(Spud.Admin) == 'undefined') ? {} : Spud.Admin;
|
12
|
+
|
9
13
|
$(document).ready(function() {
|
10
14
|
$('#user_table').dataTable({
|
11
15
|
"bJQueryUI": true,
|
@@ -47,8 +51,11 @@ $(document).ready(function() {
|
|
47
51
|
|
48
52
|
$('input[type=submit].btn').click(function() {$(this).button('loading')});
|
49
53
|
|
50
|
-
|
51
|
-
|
54
|
+
$('#multisite_switcher select').change(function() {
|
55
|
+
$(this).parent().submit();
|
56
|
+
// alert('test');
|
57
|
+
});
|
58
|
+
initFormTabs();
|
52
59
|
} );
|
53
60
|
|
54
61
|
|
@@ -0,0 +1,80 @@
|
|
1
|
+
Spud = (typeof(Spud) == 'undefined') ? {} : Spud;
|
2
|
+
Spud.Admin = (typeof(Spud.Admin) == 'undefined') ? {} : Spud.Admin;
|
3
|
+
|
4
|
+
Spud.Admin.Dashboard = new function() {
|
5
|
+
var self=this;
|
6
|
+
|
7
|
+
self.editMode = false;
|
8
|
+
self.mouseIsDown = false;
|
9
|
+
self.init = function() {
|
10
|
+
// $('.admin_application').effect('shake',{},100,self.shakeLoop)
|
11
|
+
$('.admin_application').bind('mousedown',self.mouseDown);
|
12
|
+
$('.admin_application').bind('mouseup',self.mouseUp);
|
13
|
+
|
14
|
+
$('.admin_application').bind('click',self.mouseClick);
|
15
|
+
$('#dashboard-editsave').click(self.saveDashboard);
|
16
|
+
$('#dashboard-editcancel').click(self.cancelDashboard);
|
17
|
+
$('.sortable').sortable({disabled:true});
|
18
|
+
// $('.admin_application').addClass('jiggly')
|
19
|
+
// $('.admin_application').draggable();
|
20
|
+
}
|
21
|
+
self.mouseDown = function() {
|
22
|
+
self.mouseIsDown = true;
|
23
|
+
if(self.editMode == false)
|
24
|
+
{
|
25
|
+
setTimeout(function() {
|
26
|
+
if(self.mouseIsDown)
|
27
|
+
{
|
28
|
+
self.enableEditMode();
|
29
|
+
}
|
30
|
+
},1000);
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
|
+
self.mouseClick = function(evt) {
|
35
|
+
if(self.editMode)
|
36
|
+
{
|
37
|
+
evt.stopPropagation();
|
38
|
+
return false;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
self.mouseUp = function() {
|
42
|
+
self.mouseIsDown = false;
|
43
|
+
}
|
44
|
+
self.enableEditMode = function() {
|
45
|
+
self.editMode = true;
|
46
|
+
$('.admin_application').addClass('jiggly');
|
47
|
+
|
48
|
+
$('.sortable').sortable("enable");
|
49
|
+
$('#dashboard-editmode').show();
|
50
|
+
}
|
51
|
+
self.saveDashboard = function() {
|
52
|
+
self.saveOrder();
|
53
|
+
self.disableEditMode();
|
54
|
+
}
|
55
|
+
self.cancelDashboard = function() {
|
56
|
+
$('.sortable').sortable("cancel");
|
57
|
+
self.disableEditMode();
|
58
|
+
}
|
59
|
+
self.disableEditMode = function() {
|
60
|
+
self.editMode = false;
|
61
|
+
$('#dashboard-editmode').hide();
|
62
|
+
$('.admin_application').removeClass('jiggly');
|
63
|
+
$('.sortable').sortable("disable");
|
64
|
+
}
|
65
|
+
|
66
|
+
|
67
|
+
self.saveOrder = function() {
|
68
|
+
var appOrder = $('.sortable').sortable("toArray");
|
69
|
+
for(var appCounter=0;appCounter < appOrder.length;appCounter++)
|
70
|
+
{
|
71
|
+
appOrder[appCounter] = appOrder[appCounter].replace('application_name_',"");
|
72
|
+
|
73
|
+
}
|
74
|
+
var keyvalue = appOrder.join(",")
|
75
|
+
console.log(keyvalue);
|
76
|
+
jQuery.ajax('/spud/save_key?key=app_order&value=' + keyvalue);
|
77
|
+
}
|
78
|
+
|
79
|
+
|
80
|
+
}
|
@@ -25,22 +25,22 @@ a:hover .ui-button-text {
|
|
25
25
|
}
|
26
26
|
#header {
|
27
27
|
height:100px;
|
28
|
-
background
|
29
|
-
background-image: linear-gradient(top,
|
30
|
-
background-image: -o-linear-gradient(top,
|
31
|
-
background-image: -moz-linear-gradient(top,
|
32
|
-
background-image: -webkit-linear-gradient(top,
|
33
|
-
background-image: -ms-linear-gradient(top,
|
28
|
+
background:#fc862a;
|
29
|
+
background-image: linear-gradient(top, #fc862a 5%, #f56a0e 53%);
|
30
|
+
background-image: -o-linear-gradient(top, #fc862a 5%, #f56a0e 53%);
|
31
|
+
background-image: -moz-linear-gradient(top, #fc862a 5%, #f56a0e 53%);
|
32
|
+
background-image: -webkit-linear-gradient(top, #fc862a 5%, #f56a0e 53%);
|
33
|
+
background-image: -ms-linear-gradient(top, #fc862a 5%, #f56a0e 53%);
|
34
34
|
|
35
35
|
background-image: -webkit-gradient(
|
36
36
|
linear,
|
37
37
|
left top,
|
38
38
|
left bottom,
|
39
|
-
color-stop(0.05,
|
40
|
-
color-stop(0.53,
|
39
|
+
color-stop(0.05, #fc862a),
|
40
|
+
color-stop(0.53, #f56a0e)
|
41
41
|
);
|
42
42
|
|
43
|
-
|
43
|
+
|
44
44
|
color:#fff;
|
45
45
|
}
|
46
46
|
#header a,
|
@@ -49,7 +49,7 @@ a:hover .ui-button-text {
|
|
49
49
|
font-weight:normal;
|
50
50
|
}
|
51
51
|
.greeting {
|
52
|
-
color:#
|
52
|
+
color:#fff;
|
53
53
|
}
|
54
54
|
|
55
55
|
#header #user_meta {
|
@@ -61,18 +61,32 @@ a:hover .ui-button-text {
|
|
61
61
|
#header h1 {
|
62
62
|
float:left;
|
63
63
|
color:#fff;
|
64
|
+
margin:0 5px;
|
65
|
+
|
66
|
+
line-height:100px;
|
67
|
+
width:200px;
|
68
|
+
height:100px;
|
69
|
+
text-indent:-10000px;
|
70
|
+
background: url('/assets/spud/admin/spud_logo.png') center left no-repeat;
|
71
|
+
background-size:200px 90px;
|
72
|
+
}
|
73
|
+
#header h1 .site_name {
|
74
|
+
color:#CCC;
|
75
|
+
font-size:.7em;
|
76
|
+
}
|
77
|
+
#header #multisite_switcher
|
78
|
+
{
|
64
79
|
margin:0 15px;
|
65
80
|
line-height:100px;
|
66
81
|
}
|
67
|
-
|
68
82
|
#breadcrumbs {
|
69
83
|
background:#fff;
|
70
84
|
height:25px;
|
71
|
-
border-top:1px solid rgb(200,148,72)
|
85
|
+
/*border-top:1px solid rgb(200,148,72);*/
|
72
86
|
border-bottom:1px solid #999;
|
73
87
|
line-height:25px;
|
74
88
|
padding:5px 15px;
|
75
|
-
box-shadow: 0px 0px 10px #888
|
89
|
+
/*box-shadow: 0px 0px 10px #888;*/
|
76
90
|
|
77
91
|
}
|
78
92
|
#breadcrumbs a,
|
@@ -104,6 +118,12 @@ div.admin_application {
|
|
104
118
|
border:1px solid transparent;
|
105
119
|
border-radius:10px;
|
106
120
|
margin: 0 10px 20px 10px;
|
121
|
+
-webkit-touch-callout: none;
|
122
|
+
-webkit-user-select: none;
|
123
|
+
-khtml-user-select: none;
|
124
|
+
-moz-user-select: none;
|
125
|
+
-ms-user-select: none;
|
126
|
+
user-select: none;
|
107
127
|
}
|
108
128
|
div.admin_application:hover {
|
109
129
|
background:#fff;
|
@@ -237,7 +257,7 @@ div.field_with_errors label {
|
|
237
257
|
border-collapse:collapse;
|
238
258
|
}
|
239
259
|
.admin-table thead tr{
|
240
|
-
background
|
260
|
+
background:#fc862a;
|
241
261
|
color:#fff;
|
242
262
|
|
243
263
|
border-radius:10px 10px 0 0;
|
@@ -356,3 +376,49 @@ form input.full-width {
|
|
356
376
|
.spud_admin_pagination .pagination{
|
357
377
|
float: right;
|
358
378
|
}
|
379
|
+
|
380
|
+
#dashboard-editmode {
|
381
|
+
clear:both;
|
382
|
+
background:#ccc;
|
383
|
+
padding:10px;
|
384
|
+
text-align:center;
|
385
|
+
display:none;
|
386
|
+
}
|
387
|
+
/*Jiggle Animation*/
|
388
|
+
.jiggly {
|
389
|
+
-webkit-animation: jiggle 0.2s infinite;
|
390
|
+
-moz-animation-duration: 0.2s;
|
391
|
+
-moz-animation-name: jiggle;
|
392
|
+
-moz-animation-iteration-count: infinite;
|
393
|
+
-webkit-transform: rotate(-1deg);
|
394
|
+
-moz-transform: rotate(-1deg);
|
395
|
+
}
|
396
|
+
|
397
|
+
@-moz-keyframes jiggle {
|
398
|
+
0% {
|
399
|
+
-moz-transform: rotate(-1deg);
|
400
|
+
}
|
401
|
+
50% {
|
402
|
+
-moz-transform: rotate(1deg);
|
403
|
+
}
|
404
|
+
}
|
405
|
+
|
406
|
+
@-webkit-keyframes jiggle {
|
407
|
+
0% {
|
408
|
+
-webkit-transform: rotate(-1deg);
|
409
|
+
}
|
410
|
+
50% {
|
411
|
+
-webkit-transform: rotate(1deg);
|
412
|
+
}
|
413
|
+
}
|
414
|
+
|
415
|
+
|
416
|
+
/*Retina CSS*/
|
417
|
+
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
|
418
|
+
only screen and (-o-min-device-pixel-ratio: 3/2),
|
419
|
+
only screen and (min--moz-device-pixel-ratio: 1.5),
|
420
|
+
only screen and (min-device-pixel-ratio: 1.5) {
|
421
|
+
#header h1 {
|
422
|
+
background: url('/assets/spud/admin/spud_logo@2x.png') top left no-repeat;
|
423
|
+
}
|
424
|
+
}
|
@@ -2,6 +2,34 @@ class Spud::Admin::DashboardController < Spud::Admin::ApplicationController
|
|
2
2
|
|
3
3
|
def index
|
4
4
|
permission_set = current_user_permissions.collect{|p| p.name}
|
5
|
-
@
|
5
|
+
@unsorted_applications = Spud::Core.admin_applications.select{|app| @current_user.super_admin || permission_set.include?(app[:name])}.sort_by{|obj| obj[:order]}
|
6
|
+
@admin_applications = []
|
7
|
+
|
8
|
+
@app_order = @current_user.spud_user_settings.where(:key => "app_order").first
|
9
|
+
if !@app_order.blank?
|
10
|
+
names = @app_order.value.split(",")
|
11
|
+
names.each do |name|
|
12
|
+
@app = @unsorted_applications.select{|app| app[:name] == name}
|
13
|
+
@unsorted_applications = @unsorted_applications.reject{|app| app[:name] == name}
|
14
|
+
@admin_applications += @app
|
15
|
+
end
|
16
|
+
@admin_applications += @unsorted_applications
|
17
|
+
else
|
18
|
+
@admin_applications = @unsorted_applications
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def switch
|
23
|
+
if params[:multisite_select].blank?
|
24
|
+
# flash[:error] = "Site variable does not exist."
|
25
|
+
session[:admin_site] = nil
|
26
|
+
redirect_to request.referer and return
|
27
|
+
end
|
28
|
+
if Spud::Core.multisite_config.select{|p| p[:site_id].to_i == params[:multisite_select].to_i}.blank? == false
|
29
|
+
session[:admin_site] = params[:multisite_select].to_i
|
30
|
+
else
|
31
|
+
flash[:error] = "Site does not exist."
|
32
|
+
end
|
33
|
+
redirect_to request.referer and return
|
6
34
|
end
|
7
35
|
end
|
@@ -3,7 +3,7 @@ class Spud::ApplicationController < ActionController::Base
|
|
3
3
|
protect_from_forgery
|
4
4
|
helper_method :current_user_session, :current_user
|
5
5
|
around_filter :set_time_zone
|
6
|
-
|
6
|
+
around_filter :multisite_caching
|
7
7
|
private
|
8
8
|
def current_user_session
|
9
9
|
return @current_user_session if defined?(@current_user_session)
|
@@ -53,4 +53,23 @@ class Spud::ApplicationController < ActionController::Base
|
|
53
53
|
ensure
|
54
54
|
Time.zone = old_time_zone
|
55
55
|
end
|
56
|
+
|
57
|
+
def multisite_caching
|
58
|
+
yield and return if !Spud::Core.multisite_mode_enabled
|
59
|
+
old_cache_directory = Rails.application.config.action_controller.page_cache_directory
|
60
|
+
if(old_cache_directory.blank?)
|
61
|
+
old_cache_directory = Rails.application.config.action_controller.page_cache_directory = File.join(Rails.root,'public')
|
62
|
+
end
|
63
|
+
site_config = Spud::Core.site_config_for_host request.host_with_port
|
64
|
+
if !site_config.blank?
|
65
|
+
Rails.application.config.action_controller.page_cache_directory = File.join(old_cache_directory.to_s,site_config[:short_name].to_s)
|
66
|
+
else
|
67
|
+
Rails.application.config.action_controller.page_cache_directory = File.join(old_cache_directory.to_s,"main")
|
68
|
+
end
|
69
|
+
yield
|
70
|
+
|
71
|
+
ensure
|
72
|
+
Rails.application.config.action_controller.page_cache_directory = old_cache_directory
|
73
|
+
|
74
|
+
end
|
56
75
|
end
|
@@ -21,4 +21,22 @@ class Spud::UsersController < Spud::ApplicationController
|
|
21
21
|
render :action => "settings"
|
22
22
|
end
|
23
23
|
end
|
24
|
+
|
25
|
+
|
26
|
+
def save_setting
|
27
|
+
if params[:key].blank?
|
28
|
+
render :status => 500,:text => nil and return
|
29
|
+
end
|
30
|
+
|
31
|
+
setting = @current_user.spud_user_settings.where(:key => params[:key]).first
|
32
|
+
if setting.blank?
|
33
|
+
setting = @current_user.spud_user_settings.new(:key => params[:key])
|
34
|
+
end
|
35
|
+
setting.value = params[:value]
|
36
|
+
if setting.save
|
37
|
+
render :status => 200,:text => nil and return
|
38
|
+
else
|
39
|
+
render :status => 500,:text => nil and return
|
40
|
+
end
|
41
|
+
end
|
24
42
|
end
|
@@ -4,6 +4,25 @@ module Spud::Admin::ApplicationHelper
|
|
4
4
|
return Time.now() - timedate > 604800 ? timedate.strftime("%B %d") + ' at ' + timedate.strftime("%I:%M %p") : time_ago_in_words(timedate) + ' ago'
|
5
5
|
end
|
6
6
|
|
7
|
+
def current_site_name
|
8
|
+
return Spud::Core.site_name if !Spud::Core.multisite_mode_enabled || session[:admin_site].blank?
|
9
|
+
|
10
|
+
config = Spud::Core.multisite_config.select{|p| p[:site_id].to_i == session[:admin_site].to_i}
|
11
|
+
return Spud::Core.site_name if config.blank?
|
12
|
+
|
13
|
+
return config[0][:site_name]
|
14
|
+
|
15
|
+
end
|
16
|
+
def header_style
|
17
|
+
if !Spud::Core.multisite_mode_enabled
|
18
|
+
return ''
|
19
|
+
end
|
20
|
+
config = Spud::Core.multisite_config.select{|p| p[:site_id].to_i == session[:admin_site].to_i}
|
21
|
+
return '' if config.blank?
|
22
|
+
|
23
|
+
return config[0][:header_style]
|
24
|
+
end
|
25
|
+
|
7
26
|
def link_to_remove_fields(name, f)
|
8
27
|
f.hidden_field(:_destroy) + link_to_function(name, "remove_fields(this)",:class => "btn btn-danger")
|
9
28
|
end
|
data/app/models/spud_user.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
class SpudUser < ActiveRecord::Base
|
2
2
|
has_many :spud_admin_permissions,:foreign_key => :user_id
|
3
|
+
has_many :spud_user_settings
|
3
4
|
accepts_nested_attributes_for :spud_admin_permissions, :allow_destroy => true
|
4
5
|
|
5
6
|
attr_accessible :login,:email,:first_name,:last_name,:password,:password_confirmation,:password_salt,:last_login_at,:last_request_at,:last_login_ip,:failed_login_count,:current_login_at,:login_count,:persistence_token,:perishable_token,:single_access_token,:crypted_password, :current_login_ip, :created_at, :updated_at,:spud_admin_permissions_attributes,:time_zone
|
@@ -8,24 +8,41 @@
|
|
8
8
|
<%=yield :head%>
|
9
9
|
</head>
|
10
10
|
<body>
|
11
|
-
<div id="header">
|
11
|
+
<div id="header" style="<%=header_style%>">
|
12
12
|
<h1>Spud Admin</h1>
|
13
|
+
|
13
14
|
<div id="user_meta">
|
14
15
|
<span class="greeting">Hello <%=@current_user.login%></span> | <%=link_to "Settings", spud_settings_path%> | <%=link_to "Logout",spud_user_session_url,:method => :delete%></a>
|
15
16
|
</div>
|
17
|
+
<%if Spud::Core.multisite_mode_enabled == true%>
|
18
|
+
<div id="multisite_switcher" class="right_floated">
|
19
|
+
<%=form_tag spud_admin_switch_url do%>
|
20
|
+
<%=select_tag :multisite_select,options_for_select([[Spud::Core.site_name,nil]] + Spud::Core.multisite_config.collect{|c| [c[:site_name],c[:site_id]]},session[:admin_site])%>
|
21
|
+
<%end%>
|
22
|
+
</div>
|
23
|
+
<%end%>
|
16
24
|
</div>
|
17
25
|
<div id="breadcrumbs">
|
18
26
|
<%= render_breadcrumbs :separator => ' / ' %>
|
19
27
|
</div>
|
20
28
|
<div id="content">
|
21
29
|
<% if flash[:notice] %>
|
22
|
-
<div class="
|
30
|
+
<div class="alert alert-success">
|
31
|
+
<a class="close" data-dismiss="alert">×</a>
|
32
|
+
<%= flash[:notice] %>
|
33
|
+
</div>
|
23
34
|
<% end %>
|
24
35
|
<% if flash[:warning] %>
|
25
|
-
|
36
|
+
|
37
|
+
<div class="alert alert-warning">
|
38
|
+
<a class="close" data-dismiss="alert">×</a>
|
39
|
+
<%= flash[:warning] %>
|
40
|
+
</div>
|
26
41
|
<% end %>
|
27
42
|
<% if flash[:error]%>
|
28
|
-
|
43
|
+
|
44
|
+
<div class="alert alert-error">
|
45
|
+
<a class="close" data-dismiss="alert">×</a>
|
29
46
|
<%= flash[:error] %>
|
30
47
|
</div>
|
31
48
|
<%-end%>
|
@@ -1,11 +1,18 @@
|
|
1
1
|
|
2
|
+
<div class="sortable">
|
3
|
+
<%@admin_applications.each do |admin_application|%>
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
-
<div class="admin_application"><a href="<%=admin_application[:url]%>">
|
5
|
+
<div class="admin_application" id="application_name_<%=admin_application[:name]%>"><a href="<%=admin_application[:url]%>">
|
6
6
|
<div class="image_wrapper"><%=image_tag(admin_application[:thumbnail])%></div>
|
7
7
|
<span class="application_name"><%=admin_application[:name]%></span>
|
8
8
|
</a>
|
9
9
|
</div>
|
10
10
|
|
11
|
-
<%end%>
|
11
|
+
<%end%>
|
12
|
+
</div>
|
13
|
+
<div id="dashboard-editmode">
|
14
|
+
<a href="#" class="btn btn-primary" id="dashboard-editsave">Done Editing</a> <a id="dashboard-editcancel" href="#" class="btn">Cancel</a>
|
15
|
+
</div>
|
16
|
+
<script type="text/javascript">
|
17
|
+
$(document).ready(Spud.Admin.Dashboard.init);
|
18
|
+
</script>
|
@@ -19,13 +19,13 @@
|
|
19
19
|
<%@users.each do |user|%>
|
20
20
|
<tr id="row_user_<%=user.id%>">
|
21
21
|
|
22
|
-
<td><%=link_to user.login,
|
22
|
+
<td><%=link_to user.login,edit_spud_admin_user_path(:id => user.id),:class => "ajax"%></td>
|
23
23
|
<td><%=user.email%></td>
|
24
24
|
<td><%=user.first_name%> <%=user.last_name%></td>
|
25
25
|
|
26
26
|
<td><%=timestamp user.last_login_at%></td>
|
27
27
|
<td><%=timestamp user.created_at%></td>
|
28
|
-
<td align="right"><%=link_to "
|
28
|
+
<td align="right"><%=link_to "Remove",spud_admin_user_path(:id => user.id),:method => :delete,:remote => true,:confirm => "Are you sure you want to remove this user?",:class => "btn btn-danger"%></td>
|
29
29
|
</tr>
|
30
30
|
<%end%>
|
31
31
|
</tbody>
|
data/config/routes.rb
CHANGED
@@ -3,9 +3,11 @@ Rails.application.routes.draw do
|
|
3
3
|
resource :user_session
|
4
4
|
resource :user
|
5
5
|
match 'settings' => "users#settings"
|
6
|
+
match 'save_key' => "users#save_setting"
|
6
7
|
namespace :admin do
|
7
8
|
root :to => "dashboard#index"
|
8
9
|
resources :users
|
10
|
+
match 'switch' => "dashboard#switch"
|
9
11
|
end
|
10
12
|
resource :sitemap,:only => [:show]
|
11
13
|
match 'setup' => 'setup#index'
|
@@ -1,9 +1,20 @@
|
|
1
1
|
module Spud
|
2
2
|
module Core
|
3
3
|
include ActiveSupport::Configurable
|
4
|
-
config_accessor :site_name,:admin_applications,:sitemap_urls
|
4
|
+
config_accessor :site_name,:admin_applications,:sitemap_urls,:multisite_mode_enabled,:multisite_config
|
5
5
|
self.admin_applications = [{:name => "Users",:thumbnail => "spud/admin/users_thumb.png",:url => "/spud/admin/users",:order => 100}]
|
6
6
|
self.site_name = "Company Name"
|
7
7
|
self.sitemap_urls = []
|
8
|
+
self.multisite_mode_enabled = false
|
9
|
+
self.multisite_config = []
|
10
|
+
|
11
|
+
def self.site_config_for_host(host)
|
12
|
+
configs = Spud::Core.multisite_config.select{|p| p[:hosts].include?(host)}
|
13
|
+
if configs.blank?
|
14
|
+
return nil
|
15
|
+
else
|
16
|
+
return configs[0]
|
17
|
+
end
|
18
|
+
end
|
8
19
|
end
|
9
20
|
end
|
data/lib/spud_core/engine.rb
CHANGED
data/lib/spud_core/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spud_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-03-
|
12
|
+
date: 2012-03-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &70317239775300 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.2.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70317239775300
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: authlogic
|
27
|
-
requirement: &
|
27
|
+
requirement: &70317239771800 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70317239771800
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: jquery-rails
|
38
|
-
requirement: &
|
38
|
+
requirement: &70317239769540 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70317239769540
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: breadcrumbs_on_rails
|
49
|
-
requirement: &
|
49
|
+
requirement: &70317239768840 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70317239768840
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: will_paginate
|
60
|
-
requirement: &
|
60
|
+
requirement: &70317239783960 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70317239783960
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bootstrap-will_paginate
|
71
|
-
requirement: &
|
71
|
+
requirement: &70317239782100 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70317239782100
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: mysql2
|
82
|
-
requirement: &
|
82
|
+
requirement: &70317239781240 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70317239781240
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rspec
|
93
|
-
requirement: &
|
93
|
+
requirement: &70317239780600 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70317239780600
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: rspec-rails
|
104
|
-
requirement: &
|
104
|
+
requirement: &70317239779080 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70317239779080
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: factory_girl
|
115
|
-
requirement: &
|
115
|
+
requirement: &70317239777020 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - =
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: 2.5.0
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *70317239777020
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: mocha
|
126
|
-
requirement: &
|
126
|
+
requirement: &70317239797900 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - =
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: 0.10.3
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *70317239797900
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: database_cleaner
|
137
|
-
requirement: &
|
137
|
+
requirement: &70317239825720 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - =
|
@@ -142,7 +142,7 @@ dependencies:
|
|
142
142
|
version: 0.7.1
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *70317239825720
|
146
146
|
description: Spud Core Engine
|
147
147
|
email:
|
148
148
|
- destes@redwindsw.com
|
@@ -173,8 +173,11 @@ files:
|
|
173
173
|
- app/assets/images/spud/admin/flick/ui-icons_666666_256x240.png
|
174
174
|
- app/assets/images/spud/admin/flick/ui-icons_ff0084_256x240.png
|
175
175
|
- app/assets/images/spud/admin/flick/ui-icons_ffffff_256x240.png
|
176
|
+
- app/assets/images/spud/admin/spud_logo.png
|
177
|
+
- app/assets/images/spud/admin/spud_logo@2x.png
|
176
178
|
- app/assets/images/spud/admin/users_thumb.png
|
177
179
|
- app/assets/javascripts/spud/admin/application.js
|
180
|
+
- app/assets/javascripts/spud/admin/dashboard.js
|
178
181
|
- app/assets/javascripts/spud/admin/jquery.dataTables.min.js
|
179
182
|
- app/assets/libs/bootstrap/css/bootstrap-responsive.css
|
180
183
|
- app/assets/libs/bootstrap/css/bootstrap-responsive.min.css
|
@@ -461,6 +464,7 @@ files:
|
|
461
464
|
- app/models/spud_admin_permission.rb
|
462
465
|
- app/models/spud_user.rb
|
463
466
|
- app/models/spud_user_session.rb
|
467
|
+
- app/models/spud_user_setting.rb
|
464
468
|
- app/views/layouts/spud/admin/application.html.erb
|
465
469
|
- app/views/layouts/spud/admin/detail.html.erb
|
466
470
|
- app/views/layouts/spud/login/application.html.erb
|
@@ -482,6 +486,8 @@ files:
|
|
482
486
|
- db/migrate/20111214161011_create_spud_admin_permissions.rb
|
483
487
|
- db/migrate/20111214161146_create_spud_users.rb
|
484
488
|
- db/migrate/20120327124229_add_time_zone_to_spud_user.rb
|
489
|
+
- db/migrate/20120328235431_add_scope_to_spud_admin_permissions.rb
|
490
|
+
- db/migrate/20120329174000_create_spud_user_settings.rb
|
485
491
|
- lib/spud_core/belongs_to_app.rb
|
486
492
|
- lib/spud_core/configuration.rb
|
487
493
|
- lib/spud_core/engine.rb
|
@@ -526,6 +532,8 @@ files:
|
|
526
532
|
- test/dummy/Rakefile
|
527
533
|
- test/dummy/README.rdoc
|
528
534
|
- test/dummy/script/rails
|
535
|
+
- test/fixtures/spud_user_settings.yml
|
536
|
+
- test/unit/spud_user_settings_test.rb
|
529
537
|
homepage: http://github.com/davydotcom/spud_core_admin
|
530
538
|
licenses: []
|
531
539
|
post_install_message:
|
@@ -540,7 +548,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
540
548
|
version: '0'
|
541
549
|
segments:
|
542
550
|
- 0
|
543
|
-
hash: -
|
551
|
+
hash: -1745941500780882783
|
544
552
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
545
553
|
none: false
|
546
554
|
requirements:
|
@@ -549,7 +557,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
549
557
|
version: '0'
|
550
558
|
segments:
|
551
559
|
- 0
|
552
|
-
hash: -
|
560
|
+
hash: -1745941500780882783
|
553
561
|
requirements: []
|
554
562
|
rubyforge_project:
|
555
563
|
rubygems_version: 1.8.15
|
@@ -590,3 +598,5 @@ test_files:
|
|
590
598
|
- test/dummy/Rakefile
|
591
599
|
- test/dummy/README.rdoc
|
592
600
|
- test/dummy/script/rails
|
601
|
+
- test/fixtures/spud_user_settings.yml
|
602
|
+
- test/unit/spud_user_settings_test.rb
|