caboose-cms 0.3.50 → 0.3.51
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 +8 -8
- data/app/assets/javascripts/caboose/admin.js +1 -1
- data/app/assets/javascripts/caboose/application.js +4 -2
- data/app/assets/javascripts/caboose/jquery.detect.js +7 -0
- data/app/assets/javascripts/caboose/{placeholder.js → jquery.placeholder.js} +0 -0
- data/app/assets/javascripts/caboose/main.js +126 -0
- data/app/assets/javascripts/caboose/modal.js +3 -2
- data/app/assets/javascripts/caboose/testing.js +0 -0
- data/app/assets/stylesheets/caboose/application.css +10 -0
- data/app/assets/stylesheets/caboose/login.css +37 -14
- data/app/assets/stylesheets/caboose/modal.css +13 -0
- data/app/assets/templates/caboose/messages/error.jst.ejs +0 -0
- data/app/controllers/caboose/application_controller.rb +10 -6
- data/app/controllers/caboose/login_controller.rb +1 -1
- data/app/controllers/caboose/modal_controller.rb +5 -0
- data/app/models/caboose/page_bar_generator.rb +6 -1
- data/app/models/caboose/states.rb +57 -0
- data/app/views/caboose/login/index.html.erb +58 -48
- data/app/views/layouts/caboose/application.html.erb +8 -10
- data/app/views/layouts/caboose/modal.html.erb +1 -0
- data/config/routes.rb +2 -1
- data/lib/caboose.rb +6 -1
- data/lib/caboose/version.rb +1 -1
- metadata +35 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NjExYWU5YWM2ZWUzZTIxODI3ZmE5Mzg4ZTcyZGEzNjQxMzE3MGRkZg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YThhZDViODBjMzMxYWZjNWExNTBlNTNiMjg0ZmFjYmQ1ZWQ5OGI5YQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NzkxNGZiYWYyYTlhZDhmMTAyNTdhY2M3NDhkODM5ZTFlN2Q0OTBkYjRiZjJm
|
10
|
+
MzM1MWI3MDVjMmQwZDIyYjk0ZWM1MTdmM2FiM2U3MDJmY2NmNWQ1NTVhNWNm
|
11
|
+
N2Y2ZGFjYzdhNWNkNzUyNWI2NDBkMWQyNGZlMzFkZjNmZjNhNGM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZDgwNjM4ZjNjZDUzNGE5YmQyMmUzOTY3Zjc3OTk2YjliNDBhM2JjNGYxNmU4
|
14
|
+
YjhjZDk2NzY2MzEzMTY2NTUwMTQyNmIwYzBkZGU5MzMwY2YzMjJiY2MxZGUz
|
15
|
+
MjllMzAyNmRhYzRlMjI2MGZkNDExMzVkN2M3ODcxOGFjYmU5MGQ=
|
@@ -10,9 +10,11 @@
|
|
10
10
|
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
|
11
11
|
// GO AFTER THE REQUIRES BELOW.
|
12
12
|
//
|
13
|
+
//= require_tree ../../templates
|
13
14
|
//= require jquery
|
14
15
|
//= require jquery_ujs
|
15
16
|
//= require colorbox-rails
|
17
|
+
//= require caboose/jquery.detect
|
18
|
+
//= require caboose/jquery.placeholder
|
16
19
|
//= require caboose/modal_integration
|
17
|
-
//= require
|
18
|
-
//= require caboose/placeholder
|
20
|
+
//= require caboose/main
|
@@ -0,0 +1,7 @@
|
|
1
|
+
/**
|
2
|
+
* jQuery.browser.mobile (http://detectmobilebrowser.com/)
|
3
|
+
*
|
4
|
+
* jQuery.browser.mobile will be true if the browser is a mobile device
|
5
|
+
*
|
6
|
+
**/
|
7
|
+
(function(a){(jQuery.browser = jQuery.browser || {}).mobile = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))})(navigator.userAgent||navigator.vendor||window.opera);
|
File without changes
|
@@ -0,0 +1,126 @@
|
|
1
|
+
//
|
2
|
+
// Main
|
3
|
+
//
|
4
|
+
// :: Initialize
|
5
|
+
// :: Events
|
6
|
+
// :: Redirect
|
7
|
+
// :: Reload
|
8
|
+
// :: Login
|
9
|
+
// :: Logout
|
10
|
+
// :: Register
|
11
|
+
|
12
|
+
var Caboose = function() {
|
13
|
+
var self = this;
|
14
|
+
|
15
|
+
//
|
16
|
+
// Initialize
|
17
|
+
//
|
18
|
+
|
19
|
+
self.initialize = function() {
|
20
|
+
self.loggedIn = window.loggedIn || false;
|
21
|
+
|
22
|
+
$('a[href="/register"], [caboose=register]').click(function(event) {
|
23
|
+
event.preventDefault();
|
24
|
+
self.register( $(window).width() < 1024 );
|
25
|
+
});
|
26
|
+
|
27
|
+
$('a[href="/login"], [caboose=login]').click(function(event) {
|
28
|
+
event.preventDefault();
|
29
|
+
self.login( $(window).width() < 1024 );
|
30
|
+
});
|
31
|
+
|
32
|
+
$('a[href="/logout"], [caboose=logout]').click(function(event) {
|
33
|
+
event.preventDefault();
|
34
|
+
self.logout( $(window).width() < 1024 );
|
35
|
+
});
|
36
|
+
};
|
37
|
+
|
38
|
+
//
|
39
|
+
// Events
|
40
|
+
//
|
41
|
+
|
42
|
+
self.events = {};
|
43
|
+
|
44
|
+
self.events.trigger = function(event) {
|
45
|
+
$(Caboose.events).trigger(event);
|
46
|
+
};
|
47
|
+
|
48
|
+
self.events.on = function(event, callback) {
|
49
|
+
$(Caboose.events).on(event, callback);
|
50
|
+
};
|
51
|
+
|
52
|
+
//
|
53
|
+
// Redirect
|
54
|
+
//
|
55
|
+
|
56
|
+
self.redirect = function(url) {
|
57
|
+
if (!$.browser.mobile) {
|
58
|
+
window.location.href = url;
|
59
|
+
} else if ( (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) ) {
|
60
|
+
location.replace(url);
|
61
|
+
} else if ($.browser.mobile) {
|
62
|
+
document.location = url;
|
63
|
+
}
|
64
|
+
};
|
65
|
+
|
66
|
+
//
|
67
|
+
// Reload
|
68
|
+
//
|
69
|
+
|
70
|
+
self.reload = function() {
|
71
|
+
self.redirect(window.location.href);
|
72
|
+
};
|
73
|
+
|
74
|
+
//
|
75
|
+
// Login
|
76
|
+
//
|
77
|
+
|
78
|
+
self.login = function() {
|
79
|
+
if ($.browser.mobile) window.location.href = '/login?return_url=' + window.location.pathname;
|
80
|
+
|
81
|
+
$.colorbox({
|
82
|
+
href: '/login?return_url=' + window.location.pathname,
|
83
|
+
iframe: true,
|
84
|
+
innerWidth: 200,
|
85
|
+
innerHeight: 50,
|
86
|
+
scrolling: false,
|
87
|
+
transition: 'fade',
|
88
|
+
closeButton: false,
|
89
|
+
opacity: 0.50
|
90
|
+
});
|
91
|
+
};
|
92
|
+
|
93
|
+
//
|
94
|
+
// Logout
|
95
|
+
//
|
96
|
+
|
97
|
+
self.logout = function() {
|
98
|
+
window.location = '/logout';
|
99
|
+
};
|
100
|
+
|
101
|
+
//
|
102
|
+
// Register
|
103
|
+
//
|
104
|
+
|
105
|
+
self.register = function(callback) {
|
106
|
+
if ($.browser.mobile) window.location.href = '/register?return_url=' + window.location.pathname;
|
107
|
+
|
108
|
+
$.colorbox({
|
109
|
+
href: '/register?return_url=' + window.location.pathname,
|
110
|
+
iframe: true,
|
111
|
+
innerWidth: 200,
|
112
|
+
innerHeight: 50,
|
113
|
+
scrolling: false,
|
114
|
+
transition: 'fade',
|
115
|
+
closeButton: false,
|
116
|
+
opacity: 0.50
|
117
|
+
});
|
118
|
+
};
|
119
|
+
|
120
|
+
// Init and return
|
121
|
+
$(document).ready(self.initialize);
|
122
|
+
return self;
|
123
|
+
};
|
124
|
+
|
125
|
+
// There can only be one
|
126
|
+
var Caboose = new Caboose();
|
@@ -10,9 +10,10 @@
|
|
10
10
|
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
|
11
11
|
// GO AFTER THE REQUIRES BELOW.
|
12
12
|
//
|
13
|
+
//= require_tree ../../templates
|
13
14
|
//= require jquery
|
14
15
|
//= require jquery_ujs
|
15
16
|
//= require colorbox-rails
|
17
|
+
//= require caboose/jquery.placeholder
|
18
|
+
//= require caboose/jquery.detect
|
16
19
|
//= require caboose/modal_integration
|
17
|
-
//= require caboose/placeholder
|
18
|
-
|
File without changes
|
@@ -16,3 +16,13 @@
|
|
16
16
|
*/
|
17
17
|
|
18
18
|
#cboxLoadedContent { margin-bottom: 0; }
|
19
|
+
|
20
|
+
#cboxTopLeft,
|
21
|
+
#cboxTopRight,
|
22
|
+
#cboxBottomLeft,
|
23
|
+
#cboxBottomRight,
|
24
|
+
#cboxMiddleLeft,
|
25
|
+
#cboxMiddleRight,
|
26
|
+
#cboxTopCenter,
|
27
|
+
#cboxBottomCenter,
|
28
|
+
#cboxClose { background: #111 !important; }
|
@@ -1,23 +1,46 @@
|
|
1
|
+
/**
|
2
|
+
* Login
|
3
|
+
*/
|
1
4
|
|
2
|
-
#
|
3
|
-
|
4
|
-
|
5
|
-
|
5
|
+
#modal_content { margin: 0 auto; }
|
6
|
+
|
7
|
+
#login-form {
|
8
|
+
box-sizing: content-box;
|
9
|
+
max-width: 100%;
|
10
|
+
overflow: hidden;
|
11
|
+
padding: 12px 0;
|
12
|
+
position: relative;
|
13
|
+
width: 100%;
|
6
14
|
}
|
7
15
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
padding: 7px;
|
16
|
+
@media all and (max-width: 400px) {
|
17
|
+
#login-form {
|
18
|
+
width: 400px;
|
19
|
+
margin: 0 auto;
|
20
|
+
}
|
14
21
|
}
|
15
22
|
|
16
|
-
|
17
|
-
|
23
|
+
#login-form #login-options {
|
24
|
+
margin: 0;
|
25
|
+
padding: 0;
|
26
|
+
position: absolute;
|
27
|
+
top: 12px;
|
28
|
+
right: 0;
|
18
29
|
}
|
19
30
|
|
20
|
-
input#
|
21
|
-
|
31
|
+
#login-form input#username,
|
32
|
+
#login-form input#password {
|
33
|
+
font-size: 18px;
|
34
|
+
margin: 0 0 8px 0;
|
35
|
+
max-width: 100%;
|
36
|
+
padding: 7px;
|
37
|
+
width: 386px; /* 400 - 14:padding */
|
22
38
|
}
|
23
39
|
|
40
|
+
#login-form label {
|
41
|
+
cursor: pointer;
|
42
|
+
display: block;
|
43
|
+
}
|
44
|
+
|
45
|
+
#login-form input[type=checkbox] { top: 8px; }
|
46
|
+
#login-form .btn { font-size: 18px; }
|
@@ -13,6 +13,8 @@
|
|
13
13
|
*= require caboose/caboose
|
14
14
|
*/
|
15
15
|
|
16
|
+
html { width: 100%; }
|
17
|
+
|
16
18
|
body {
|
17
19
|
background: #111111;
|
18
20
|
margin: 0;
|
@@ -29,6 +31,7 @@ body {
|
|
29
31
|
|
30
32
|
#modal_content {
|
31
33
|
width: 100%;
|
34
|
+
max-width: 100%;
|
32
35
|
padding: 0;
|
33
36
|
}
|
34
37
|
|
@@ -317,6 +320,16 @@ Message boxes
|
|
317
320
|
color: #ffffff;
|
318
321
|
}
|
319
322
|
|
323
|
+
#cboxTopLeft,
|
324
|
+
#cboxTopRight,
|
325
|
+
#cboxBottomLeft,
|
326
|
+
#cboxBottomRight,
|
327
|
+
#cboxMiddleLeft,
|
328
|
+
#cboxMiddleRight,
|
329
|
+
#cboxTopCenter,
|
330
|
+
#cboxBottomCenter,
|
331
|
+
#cboxClose { background: #111 !important; }
|
332
|
+
|
320
333
|
/*******************************************************************************
|
321
334
|
Page Bar Generator
|
322
335
|
*******************************************************************************/
|
File without changes
|
@@ -3,13 +3,16 @@ module Caboose
|
|
3
3
|
|
4
4
|
protect_from_forgery
|
5
5
|
before_filter :before_before_action
|
6
|
+
helper_method :logged_in?
|
7
|
+
|
6
8
|
@find_page = true
|
7
9
|
|
8
10
|
def before_before_action
|
9
11
|
|
10
|
-
# Modify the built-in params array with URL params if necessary
|
12
|
+
# Modify the built-in params array with URL params if necessary
|
11
13
|
parse_url_params if Caboose.use_url_params
|
12
|
-
|
14
|
+
|
15
|
+
|
13
16
|
session['use_redirect_urls'] = true if session['use_redirect_urls'].nil?
|
14
17
|
|
15
18
|
# Initialize AB Testing
|
@@ -18,11 +21,12 @@ module Caboose
|
|
18
21
|
# Try to find the page
|
19
22
|
@page = Page.new
|
20
23
|
@crumb_trail = []
|
21
|
-
|
24
|
+
@subnav = {}
|
22
25
|
@actions = {}
|
23
26
|
@tasks = {}
|
24
27
|
@page_tasks = {}
|
25
|
-
@is_real_page = false
|
28
|
+
@is_real_page = false
|
29
|
+
|
26
30
|
if @find_page
|
27
31
|
@page = Page.page_with_uri(request.fullpath)
|
28
32
|
@crumb_trail = Caboose::Page.crumb_trail(@page)
|
@@ -30,10 +34,10 @@ module Caboose
|
|
30
34
|
|
31
35
|
# Sets an instance variable of the logged in user
|
32
36
|
@logged_in_user = logged_in_user
|
33
|
-
|
37
|
+
|
34
38
|
before_action
|
35
39
|
end
|
36
|
-
|
40
|
+
|
37
41
|
# Parses any parameters in the URL and adds them to the params
|
38
42
|
def parse_url_params
|
39
43
|
return if !Caboose.use_url_params
|
@@ -6,7 +6,7 @@ module Caboose
|
|
6
6
|
def index
|
7
7
|
@return_url = params[:return_url].nil? ? "/" : params[:return_url]
|
8
8
|
@modal = params[:modal].nil? ? false : params[:modal]
|
9
|
-
redirect_to @return_url if logged_in?
|
9
|
+
redirect_to @return_url and return if logged_in?
|
10
10
|
end
|
11
11
|
|
12
12
|
# POST /login
|
@@ -57,6 +57,7 @@ module Caboose
|
|
57
57
|
@options.each { |key, val| @options[key] = post_get[key].nil? ? val : post_get[key] }
|
58
58
|
#@custom_url_vars = custom_url_vars if !custom_url_vars.nil?
|
59
59
|
@use_url_params = @options['use_url_params'].nil? ? Caboose.use_url_params : @options['use_url_params']
|
60
|
+
|
60
61
|
fix_desc
|
61
62
|
set_item_count
|
62
63
|
end
|
@@ -69,11 +70,13 @@ module Caboose
|
|
69
70
|
m = @options['model'].constantize
|
70
71
|
return m if @options['includes'].nil?
|
71
72
|
|
73
|
+
# See if any fields that we know have includes have values
|
72
74
|
associations = []
|
73
75
|
@options['includes'].each do |field, arr|
|
74
76
|
next if @params[field].nil? || (@params[field].kind_of?(String) && @params[field].length == 0)
|
75
77
|
associations << arr[0]
|
76
78
|
end
|
79
|
+
# See if any fields in the sort option are listed in a table_name.column_name format
|
77
80
|
if @options['sort']
|
78
81
|
@options['sort'].split(',').each do |col|
|
79
82
|
tbl_col = col.split('.')
|
@@ -84,6 +87,7 @@ module Caboose
|
|
84
87
|
end
|
85
88
|
end
|
86
89
|
end
|
90
|
+
# See if any parameters are listed in a table_name.column_name format
|
87
91
|
@params.each do |k,v|
|
88
92
|
k.split('_concat_').each do |col,v2|
|
89
93
|
tbl_col = col.split('.')
|
@@ -98,7 +102,8 @@ module Caboose
|
|
98
102
|
return m
|
99
103
|
end
|
100
104
|
|
101
|
-
def table_name_of_association(assoc)
|
105
|
+
def table_name_of_association(assoc)
|
106
|
+
ap assoc
|
102
107
|
return @options['model'].constantize.reflect_on_association(assoc.to_sym).class_name.constantize.table_name
|
103
108
|
end
|
104
109
|
|
@@ -0,0 +1,57 @@
|
|
1
|
+
class Caboose::States
|
2
|
+
def self.all
|
3
|
+
return {
|
4
|
+
'AL' => 'Alabama',
|
5
|
+
'AK' => 'Alaska',
|
6
|
+
'AZ' => 'Arizona',
|
7
|
+
'AR' => 'Arkansas',
|
8
|
+
'CA' => 'California',
|
9
|
+
'CO' => 'Colorado',
|
10
|
+
'CT' => 'Connecticut',
|
11
|
+
'DE' => 'Delaware',
|
12
|
+
'DC' => 'District of Columbia',
|
13
|
+
'FL' => 'Florida',
|
14
|
+
'GA' => 'Georgia',
|
15
|
+
'HI' => 'Hawaii',
|
16
|
+
'ID' => 'Idaho',
|
17
|
+
'IL' => 'Illinois',
|
18
|
+
'IN' => 'Indiana',
|
19
|
+
'IA' => 'Iowa',
|
20
|
+
'KS' => 'Kansas',
|
21
|
+
'KY' => 'Kentucky',
|
22
|
+
'LA' => 'Louisiana',
|
23
|
+
'ME' => 'Maine',
|
24
|
+
'MT' => 'Montana',
|
25
|
+
'NE' => 'Nebraska',
|
26
|
+
'NV' => 'Nevada',
|
27
|
+
'NH' => 'New Hampshire',
|
28
|
+
'NJ' => 'New Jersey',
|
29
|
+
'NM' => 'New Mexico',
|
30
|
+
'NY' => 'New York',
|
31
|
+
'NC' => 'North Carolina',
|
32
|
+
'ND' => 'North Dakota',
|
33
|
+
'OH' => 'Ohio',
|
34
|
+
'OK' => 'Oklahoma',
|
35
|
+
'OR' => 'Oregon',
|
36
|
+
'MD' => 'Maryland',
|
37
|
+
'MA' => 'Massachusetts',
|
38
|
+
'MI' => 'Michigan',
|
39
|
+
'MN' => 'Minnesota',
|
40
|
+
'MS' => 'Mississippi',
|
41
|
+
'MO' => 'Missouri',
|
42
|
+
'PA' => 'Pennsylvania',
|
43
|
+
'RI' => 'Rhode Island',
|
44
|
+
'SC' => 'South Carolina',
|
45
|
+
'SD' => 'South Dakota',
|
46
|
+
'TN' => 'Tennessee',
|
47
|
+
'TX' => 'Texas',
|
48
|
+
'UT' => 'Utah',
|
49
|
+
'VT' => 'Vermont',
|
50
|
+
'VA' => 'Virginia',
|
51
|
+
'WA' => 'Washington',
|
52
|
+
'WV' => 'West Virginia',
|
53
|
+
'WI' => 'Wisconsin',
|
54
|
+
'WY' => 'Wyoming'
|
55
|
+
}
|
56
|
+
end
|
57
|
+
end
|
@@ -1,57 +1,67 @@
|
|
1
|
-
|
2
|
-
<
|
3
|
-
|
4
|
-
<input type=
|
5
|
-
<input type=
|
6
|
-
<input type=
|
7
|
-
|
8
|
-
<
|
9
|
-
<
|
10
|
-
|
11
|
-
|
12
|
-
<
|
13
|
-
<
|
14
|
-
|
15
|
-
|
16
|
-
|
1
|
+
<form action="/login" method="post" id="login-form">
|
2
|
+
<h1>Login</h1>
|
3
|
+
|
4
|
+
<input type="hidden" name="return_url" value="<%= @return_url %>" />
|
5
|
+
<input type="text" name="username" id="username" placeholder="Login or email" />
|
6
|
+
<input type="password" name="password" id="password" placeholder="Password" />
|
7
|
+
|
8
|
+
<label>
|
9
|
+
<input type="checkbox" name="remember" id="remember" value="1" checked="true" /> Remember me
|
10
|
+
</label>
|
11
|
+
|
12
|
+
<ul id="login-options">
|
13
|
+
<li><a href="/register?return_url=<%= @return_url %>">Need to register?</a></li>
|
14
|
+
<li><a href="/login/forgot-password?return_url=<%= @return_url %>">Forgot your password?</a></li>
|
15
|
+
</ul>
|
16
|
+
|
17
|
+
<div id="message"></div>
|
18
|
+
|
19
|
+
<p class="buttons">
|
20
|
+
<input type="button" class="btn" value="Cancel" onclick="parent.$.fn.colorbox.close();" />
|
21
|
+
<input type="submit" class="btn" value="Login" onclick='login(); return false;' />
|
22
|
+
</p>
|
17
23
|
</form>
|
18
24
|
|
19
25
|
<% content_for :caboose_css do %>
|
20
|
-
|
21
|
-
|
22
|
-
|
26
|
+
<%= stylesheet_link_tag 'caboose/login' %>
|
27
|
+
|
28
|
+
<style type="text/css">
|
29
|
+
#modal_content input[type=checkbox] { position: relative; }
|
30
|
+
</style>
|
23
31
|
<% end %>
|
24
|
-
<% content_for :caboose_js do %>
|
25
|
-
<script type='text/javascript'>
|
26
|
-
|
27
|
-
var modal = false;
|
28
|
-
$(window).load(function() {
|
29
|
-
modal = new CabooseModal(400);
|
30
|
-
});
|
31
32
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
33
|
+
<% content_for :caboose_js do %>
|
34
|
+
<script type="text/javascript">
|
35
|
+
var modal = false;
|
36
|
+
|
37
|
+
$(window).load(function() {
|
38
|
+
modal = new CabooseModal(400);
|
39
|
+
});
|
40
|
+
|
41
|
+
function login() {
|
42
|
+
modal.autosize("<p class='loading'>Logging in...</p>");
|
43
|
+
|
44
|
+
$.ajax({
|
45
|
+
url: '/login',
|
46
|
+
type: 'post',
|
47
|
+
data: $('#login-form').serialize(),
|
48
|
+
success: function(response) {
|
49
|
+
if (response.error) {
|
50
|
+
modal.autosize("<p class='note error'>" + response.error + "</p>");
|
51
|
+
} else if (response.redirect != false) {
|
52
|
+
<%= @modal ? "" : "parent." %>window.location = response.redirect;
|
53
|
+
} else {
|
54
|
+
parent.location.reload(true);
|
55
|
+
}
|
56
|
+
},
|
57
|
+
error: function() {
|
58
|
+
modal.autosize("<p class='note error'>Error</p>");
|
59
|
+
}
|
60
|
+
});
|
49
61
|
}
|
50
|
-
|
51
|
-
}
|
52
|
-
|
53
|
-
</script>
|
62
|
+
</script>
|
54
63
|
<% end %>
|
64
|
+
|
55
65
|
<%= content_for :caboose_css do %>
|
56
|
-
<%= stylesheet_link_tag "caboose/login", :
|
66
|
+
<%= stylesheet_link_tag "caboose/login", media: "all" %>
|
57
67
|
<% end %>
|
@@ -1,21 +1,19 @@
|
|
1
1
|
|
2
2
|
<%= content_for :js do %>
|
3
|
-
<%=
|
4
|
-
|
5
|
-
<%=
|
6
|
-
<% end %>
|
7
|
-
<%= yield :caboose_js %>
|
3
|
+
<script>window.loggedIn = <%= logged_in?.to_json %></script>
|
4
|
+
<%= javascript_include_tag(*Caboose::javascripts) %>
|
5
|
+
<%= yield :caboose_js %>
|
8
6
|
<% end %>
|
9
7
|
|
10
8
|
<%= content_for :css do %>
|
11
|
-
<%= stylesheet_link_tag
|
12
|
-
<%= yield :caboose_css %>
|
9
|
+
<%= stylesheet_link_tag(*Caboose::stylesheets) %>
|
10
|
+
<%= yield :caboose_css %>
|
13
11
|
<% end %>
|
14
12
|
|
15
13
|
<% if (File.exists?("#{Rails.root}/app/views/layouts/layout_#{@page.id}.html.erb") || File.exists?("#{Rails.root}/app/views/layouts/layout_#{@page.id}.html.haml")) %>
|
16
|
-
<%= render :file => "layouts/layout_#{@page.id}" %>
|
14
|
+
<%= render :file => "layouts/layout_#{@page.id}" %>
|
17
15
|
<% elsif (!@page.layout.nil? && @page.layout.length > 0 && (File.exists?("#{Rails.root}/app/views/layouts/layout_#{@page.layout}.html.erb") || File.exists?("#{Rails.root}/app/views/layouts/layout_#{@page.layout}.html.haml"))) %>
|
18
|
-
<%= render :file => "layouts/layout_#{@page.layout}" %>
|
16
|
+
<%= render :file => "layouts/layout_#{@page.layout}" %>
|
19
17
|
<% else %>
|
20
|
-
<%= render :file => "layouts/layout_default" %>
|
18
|
+
<%= render :file => "layouts/layout_default" %>
|
21
19
|
<% end %>
|
data/config/routes.rb
CHANGED
@@ -5,7 +5,8 @@ Caboose::Engine.routes.draw do
|
|
5
5
|
get "station" => "station#index"
|
6
6
|
get "station/plugin-count" => "station#plugin_count"
|
7
7
|
|
8
|
-
get
|
8
|
+
get "modal" => "modal#layout"
|
9
|
+
get "modal/:url" => "modal#index", :constraints => {:url => /.*/}
|
9
10
|
|
10
11
|
get "login/forgot-password" => "login#forgot_password_form"
|
11
12
|
post "login/forgot-password" => "login#send_reset_email"
|
data/lib/caboose.rb
CHANGED
@@ -45,5 +45,10 @@ module Caboose
|
|
45
45
|
# Email settings
|
46
46
|
mattr_accessor :email_from
|
47
47
|
@@email_from = "webmaster@caboosecms.com"
|
48
|
-
|
48
|
+
|
49
|
+
# Define asset collections
|
50
|
+
mattr_accessor :javascripts, :stylesheets
|
51
|
+
@@javascripts = ['caboose/application']
|
52
|
+
@@stylesheets = ['caboose/application']
|
53
|
+
|
49
54
|
end
|
data/lib/caboose/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: caboose-cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.51
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Barry
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.2.13
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: underscore-rails
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: jquery-rails
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +122,20 @@ dependencies:
|
|
108
122
|
- - ! '>='
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: awesome_print
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ! '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
111
139
|
description: CMS built on rails with love.
|
112
140
|
email:
|
113
141
|
- william@nine.is
|
@@ -130,6 +158,9 @@ files:
|
|
130
158
|
- app/assets/javascripts/caboose/admin_page_edit_content.js
|
131
159
|
- app/assets/javascripts/caboose/admin_page_new_blocks.js
|
132
160
|
- app/assets/javascripts/caboose/application.js
|
161
|
+
- app/assets/javascripts/caboose/jquery.detect.js
|
162
|
+
- app/assets/javascripts/caboose/jquery.placeholder.js
|
163
|
+
- app/assets/javascripts/caboose/main.js
|
133
164
|
- app/assets/javascripts/caboose/modal.js
|
134
165
|
- app/assets/javascripts/caboose/modal_integration.js
|
135
166
|
- app/assets/javascripts/caboose/model/all.js
|
@@ -148,9 +179,9 @@ files:
|
|
148
179
|
- app/assets/javascripts/caboose/model/model_binder.js
|
149
180
|
- app/assets/javascripts/caboose/model.form.page.js
|
150
181
|
- app/assets/javascripts/caboose/model.form.user.js
|
151
|
-
- app/assets/javascripts/caboose/placeholder.js
|
152
182
|
- app/assets/javascripts/caboose/shortcut.js
|
153
183
|
- app/assets/javascripts/caboose/station.js
|
184
|
+
- app/assets/javascripts/caboose/testing.js
|
154
185
|
- app/assets/javascripts/tinymce/plugins/caboose/plugin.js
|
155
186
|
- app/assets/stylesheets/caboose/admin.css
|
156
187
|
- app/assets/stylesheets/caboose/admin_page_edit_content.css
|
@@ -167,6 +198,7 @@ files:
|
|
167
198
|
- app/assets/stylesheets/caboose/station_modal.css
|
168
199
|
- app/assets/stylesheets/caboose/station_sidebar.css
|
169
200
|
- app/assets/stylesheets/caboose/tinymce.css
|
201
|
+
- app/assets/templates/caboose/messages/error.jst.ejs
|
170
202
|
- app/controllers/caboose/ab_options_controller.rb
|
171
203
|
- app/controllers/caboose/ab_variants_controller.rb
|
172
204
|
- app/controllers/caboose/admin_controller.rb
|
@@ -227,6 +259,7 @@ files:
|
|
227
259
|
- app/models/caboose/role_permission.rb
|
228
260
|
- app/models/caboose/schema.rb
|
229
261
|
- app/models/caboose/setting.rb
|
262
|
+
- app/models/caboose/states.rb
|
230
263
|
- app/models/caboose/std_class.rb
|
231
264
|
- app/models/caboose/user.rb
|
232
265
|
- app/models/caboose/utilities/schema.rb
|