spurs 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +27 -0
- data/app/assets/javascripts/spurs.js +0 -1
- data/app/assets/stylesheets/spurs/subnav.sass +144 -0
- data/app/assets/stylesheets/spurs/vcenter.css.sass +1 -0
- data/app/assets/stylesheets/spurs.css +1 -0
- data/app/views/spurs/modals/spawn.js.erb +2 -1
- data/lib/spurs/badge.rb +13 -0
- data/lib/spurs/flash/helper.rb +2 -1
- data/lib/spurs/modal/controller_mods.rb +5 -9
- data/lib/spurs/modal/helper.rb +1 -1
- data/lib/spurs/nav/builder.rb +45 -22
- data/lib/spurs/nav/helper.rb +1 -1
- data/lib/spurs/section/helper.rb +1 -1
- data/lib/spurs/version.rb +1 -1
- data/lib/spurs.rb +2 -0
- data/test/dummy/log/test.log +0 -0
- metadata +13 -3
- data/README.markdown +0 -118
data/README.rdoc
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
== Spurs
|
2
|
+
|
3
|
+
|
4
|
+
Rails is a web-application framework that includes everything needed to create
|
5
|
+
database-backed web applications according to the Model-View-Control pattern.
|
6
|
+
|
7
|
+
This pattern splits the view (also called the presentation) into "dumb"
|
8
|
+
templates that are primarily responsible for inserting pre-built data in between
|
9
|
+
HTML tags. The model contains the "smart" domain objects (such as Account,
|
10
|
+
Product, Person, Post) that holds all the business logic and knows how to
|
11
|
+
persist themselves to a database. The controller handles the incoming requests
|
12
|
+
(such as Save New Account, Update Product, Show Post) by manipulating the model
|
13
|
+
and directing data to the view.
|
14
|
+
|
15
|
+
In Rails, the model is handled by what's called an object-relational mapping
|
16
|
+
layer entitled Active Record. This layer allows you to present the data from
|
17
|
+
database rows as objects and embellish these data objects with business logic
|
18
|
+
methods. You can read more about Active Record in
|
19
|
+
link:files/vendor/rails/activerecord/README.html.
|
20
|
+
|
21
|
+
The controller and view are handled by the Action Pack, which handles both
|
22
|
+
layers by its two parts: Action View and Action Controller. These two layers
|
23
|
+
are bundled in a single package due to their heavy interdependence. This is
|
24
|
+
unlike the relationship between the Active Record and Action Pack that is much
|
25
|
+
more separate. Each of these packages can be used independently outside of
|
26
|
+
Rails. You can read more about Action Pack in
|
27
|
+
link:files/vendor/rails/actionpack/README.html.
|
@@ -0,0 +1,144 @@
|
|
1
|
+
.subnav
|
2
|
+
width: 100%
|
3
|
+
height: 36px
|
4
|
+
background-color: #eeeeee
|
5
|
+
//Old browsers
|
6
|
+
background-repeat: repeat-x
|
7
|
+
// Repeat the gradient
|
8
|
+
background-image: -moz-linear-gradient(top, #f5f5f5 0%, #eeeeee 100%)
|
9
|
+
// FF3.6+
|
10
|
+
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f5f5f5), color-stop(100%, #eeeeee))
|
11
|
+
// Chrome,Safari4+
|
12
|
+
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #eeeeee 100%)
|
13
|
+
// Chrome 10+,Safari 5.1+
|
14
|
+
background-image: -ms-linear-gradient(top, #f5f5f5 0%, #eeeeee 100%)
|
15
|
+
// IE10+
|
16
|
+
background-image: -o-linear-gradient(top, #f5f5f5 0%, #eeeeee 100%)
|
17
|
+
// Opera 11.10+
|
18
|
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#eeeeee',GradientType=0 )
|
19
|
+
// IE6-9
|
20
|
+
background-image: linear-gradient(top, #f5f5f5 0%, #eeeeee 100%)
|
21
|
+
// W3C
|
22
|
+
border: 1px solid #e5e5e5
|
23
|
+
-webkit-border-radius: 4px
|
24
|
+
-moz-border-radius: 4px
|
25
|
+
border-radius: 4px
|
26
|
+
.nav
|
27
|
+
margin-bottom: 0
|
28
|
+
>
|
29
|
+
li > a
|
30
|
+
margin: 0
|
31
|
+
padding-top: 11px
|
32
|
+
padding-bottom: 11px
|
33
|
+
border-left: 1px solid #f5f5f5
|
34
|
+
border-right: 1px solid #e5e5e5
|
35
|
+
-webkit-border-radius: 0
|
36
|
+
-moz-border-radius: 0
|
37
|
+
border-radius: 0
|
38
|
+
.active > a
|
39
|
+
padding-left: 13px
|
40
|
+
color: #777
|
41
|
+
background-color: #e9e9e9
|
42
|
+
border-right-color: #ddd
|
43
|
+
border-left: 0
|
44
|
+
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.05)
|
45
|
+
-moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.05)
|
46
|
+
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.05)
|
47
|
+
&:hover
|
48
|
+
padding-left: 13px
|
49
|
+
color: #777
|
50
|
+
background-color: #e9e9e9
|
51
|
+
border-right-color: #ddd
|
52
|
+
border-left: 0
|
53
|
+
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.05)
|
54
|
+
-moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.05)
|
55
|
+
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.05)
|
56
|
+
.caret, &:hover .caret
|
57
|
+
border-top-color: #777
|
58
|
+
li
|
59
|
+
&:first-child > a
|
60
|
+
border-left: 0
|
61
|
+
padding-left: 12px
|
62
|
+
-webkit-border-radius: 4px 0 0 4px
|
63
|
+
-moz-border-radius: 4px 0 0 4px
|
64
|
+
border-radius: 4px 0 0 4px
|
65
|
+
&:hover
|
66
|
+
border-left: 0
|
67
|
+
padding-left: 12px
|
68
|
+
-webkit-border-radius: 4px 0 0 4px
|
69
|
+
-moz-border-radius: 4px 0 0 4px
|
70
|
+
border-radius: 4px 0 0 4px
|
71
|
+
&:last-child > a
|
72
|
+
border-right: 0
|
73
|
+
.dropdown-menu
|
74
|
+
-webkit-border-radius: 0 0 4px 4px
|
75
|
+
-moz-border-radius: 0 0 4px 4px
|
76
|
+
border-radius: 0 0 4px 4px
|
77
|
+
|
78
|
+
// Fixed subnav on scroll, but only for 980px and up (sorry IE!)
|
79
|
+
@media (min-width: 980px)
|
80
|
+
.subnav-fixed
|
81
|
+
position: fixed
|
82
|
+
top: 40px
|
83
|
+
left: 0
|
84
|
+
right: 0
|
85
|
+
z-index: 999
|
86
|
+
border-color: #d5d5d5
|
87
|
+
border-width: 0 0 1px
|
88
|
+
// drop the border on the fixed edges
|
89
|
+
-webkit-border-radius: 0
|
90
|
+
-moz-border-radius: 0
|
91
|
+
border-radius: 0
|
92
|
+
-webkit-box-shadow: inset 0 1px 0 white, 0 1px 5px rgba(0, 0, 0, 0.1)
|
93
|
+
-moz-box-shadow: inset 0 1px 0 white, 0 1px 5px rgba(0, 0, 0, 0.1)
|
94
|
+
box-shadow: inset 0 1px 0 white, 0 1px 5px rgba(0, 0, 0, 0.1)
|
95
|
+
.nav
|
96
|
+
width: 938px
|
97
|
+
margin: 0 auto
|
98
|
+
padding: 0 1px
|
99
|
+
.subnav .nav > li:first-child > a
|
100
|
+
-webkit-border-radius: 0
|
101
|
+
-moz-border-radius: 0
|
102
|
+
border-radius: 0
|
103
|
+
&:hover
|
104
|
+
-webkit-border-radius: 0
|
105
|
+
-moz-border-radius: 0
|
106
|
+
border-radius: 0
|
107
|
+
|
108
|
+
// LARGE DESKTOP SCREENS
|
109
|
+
@media (min-width: 1210px)
|
110
|
+
// Update subnav container
|
111
|
+
.subnav-fixed .nav
|
112
|
+
width: 1168px
|
113
|
+
// 2px less to account for left/right borders being removed when in fixed mode
|
114
|
+
|
115
|
+
@media (max-width: 768px)
|
116
|
+
.subnav
|
117
|
+
margin: 5px
|
118
|
+
position: static
|
119
|
+
top: auto
|
120
|
+
z-index: auto
|
121
|
+
width: auto
|
122
|
+
height: auto
|
123
|
+
background: #fff /* whole background property since we use a background-image for gradient */
|
124
|
+
-webkit-box-shadow: none
|
125
|
+
-moz-box-shadow: none
|
126
|
+
box-shadow: none
|
127
|
+
.nav > li
|
128
|
+
float: none
|
129
|
+
a
|
130
|
+
border: 0
|
131
|
+
&:first-child > a, &:first-child > a:hover
|
132
|
+
-webkit-border-radius: 4px 4px 0 0
|
133
|
+
-moz-border-radius: 4px 4px 0 0
|
134
|
+
border-radius: 4px 4px 0 0
|
135
|
+
|
136
|
+
.responsive_nav
|
137
|
+
&.nav > li
|
138
|
+
float: none
|
139
|
+
a
|
140
|
+
border: 0
|
141
|
+
&:first-child > a, &:first-child > a:hover
|
142
|
+
-webkit-border-radius: 4px 4px 0 0
|
143
|
+
-moz-border-radius: 4px 4px 0 0
|
144
|
+
border-radius: 4px 4px 0 0
|
data/lib/spurs/badge.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
module Spurs
|
2
|
+
module Badge
|
3
|
+
module Helper
|
4
|
+
def spurs_badge(content, options={})
|
5
|
+
class_str ="badge"
|
6
|
+
if options[:type]
|
7
|
+
class_str.concat(" badge-#{options[:type]}")
|
8
|
+
end
|
9
|
+
content_tag(:span,content.html_safe,:class => class_str)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/spurs/flash/helper.rb
CHANGED
@@ -42,6 +42,7 @@ module Spurs
|
|
42
42
|
content_tag(:div, alert_content.html_safe, :class => "alert alert-block #{extra_class}")
|
43
43
|
end
|
44
44
|
|
45
|
+
|
45
46
|
##
|
46
47
|
# Generate HTML for flash messages
|
47
48
|
# = Examples
|
@@ -65,7 +66,7 @@ module Spurs
|
|
65
66
|
end
|
66
67
|
flash.clear
|
67
68
|
|
68
|
-
|
69
|
+
Rails.logger.info("MESSAGE HASH >>#{message_hash.to_json}")
|
69
70
|
|
70
71
|
|
71
72
|
#process the message hash now
|
@@ -10,28 +10,24 @@ module Spurs
|
|
10
10
|
{ :name => :save, :position => :right, :action => :submit_form_and_close_modal, :class => "btn-primary btn-large" },
|
11
11
|
]
|
12
12
|
}.merge(options)
|
13
|
-
logger.debug("spawn_form_modal options = #{opts.to_json}")
|
14
|
-
|
15
13
|
spawn_modal(title, partial, object, opts)
|
16
14
|
end
|
17
15
|
|
18
16
|
|
19
17
|
|
20
18
|
def spawn_close_modal(title, file, options={ })
|
21
|
-
opts[:content_options] = options
|
22
19
|
opts = {
|
23
20
|
:actions => [
|
24
21
|
{ :name => :cancel, :position => :left, :action => :close_modal, :class => "btn-large" }
|
25
22
|
]
|
26
23
|
}.merge(options)
|
27
|
-
logger.debug("spawn_close_modal options = #{opts.to_json}")
|
28
24
|
spawn_modal(title, file, nil, opts)
|
29
25
|
end
|
30
26
|
|
31
27
|
|
32
28
|
|
33
29
|
def spawn_modal(title, partial, object, options={ })
|
34
|
-
|
30
|
+
|
35
31
|
opts = {
|
36
32
|
:header => {
|
37
33
|
:title => title.titlecase,
|
@@ -39,10 +35,10 @@ module Spurs
|
|
39
35
|
},
|
40
36
|
|
41
37
|
}.merge(options)
|
42
|
-
|
43
|
-
render :file => "spurs/modals/spawn", :locals => {
|
44
|
-
|
45
|
-
|
38
|
+
|
39
|
+
render :file => "spurs/modals/spawn", :locals => { :modal_file_or_partial => partial,
|
40
|
+
:modal_object => object,
|
41
|
+
:modal_options => opts }
|
46
42
|
end
|
47
43
|
end
|
48
44
|
end
|
data/lib/spurs/modal/helper.rb
CHANGED
@@ -10,7 +10,7 @@ module Spurs
|
|
10
10
|
modal_id = "modal_#{SecureRandom::hex(5)}"
|
11
11
|
|
12
12
|
options_for_content = options[:content_options] ? options.delete(:content_options) : { }
|
13
|
-
|
13
|
+
logger.debug "ContentOptions: #{options_for_content}"
|
14
14
|
if object == nil
|
15
15
|
content = render :file => file_or_partial, :locals => options_for_content
|
16
16
|
else
|
data/lib/spurs/nav/builder.rb
CHANGED
@@ -2,6 +2,8 @@ module Spurs
|
|
2
2
|
module Nav
|
3
3
|
class Builder
|
4
4
|
include ActionView::Helpers::TagHelper
|
5
|
+
include ActionView::Helpers::ControllerHelper
|
6
|
+
include ActionView::Helpers::UrlHelper
|
5
7
|
|
6
8
|
@@default_tab_options = {
|
7
9
|
:icon_only => false
|
@@ -9,13 +11,15 @@ module Spurs
|
|
9
11
|
|
10
12
|
@@default_dropdown_options = {
|
11
13
|
:href => "#",
|
14
|
+
:method => :get,
|
12
15
|
:icon_only => false
|
13
16
|
}
|
14
17
|
|
15
18
|
@args_from_helper
|
16
19
|
|
17
|
-
def initialize(opts={ })
|
20
|
+
def initialize(controller, opts={ })
|
18
21
|
@args_from_helper = opts.clone
|
22
|
+
assign_controller(controller)
|
19
23
|
end
|
20
24
|
|
21
25
|
# Create a tab
|
@@ -44,11 +48,13 @@ module Spurs
|
|
44
48
|
|
45
49
|
end
|
46
50
|
|
47
|
-
|
51
|
+
private
|
48
52
|
|
49
53
|
def tab_tag(name, content_inside_a, content_inside_li=nil, options={ })
|
50
54
|
|
51
|
-
if options.is_a?(Array) then
|
55
|
+
if options.is_a?(Array) then
|
56
|
+
raise "opts should be a hash! #{opts.to_json}"
|
57
|
+
end
|
52
58
|
|
53
59
|
opts = @@default_tab_options.merge(@args_from_helper.merge(options))
|
54
60
|
|
@@ -70,18 +76,26 @@ module Spurs
|
|
70
76
|
{ :class => 'dropdown', 'data-dropdown' => :dropdown } :
|
71
77
|
{ }
|
72
78
|
|
79
|
+
if li_opts[:class] == nil then
|
80
|
+
li_opts[:class] = ""
|
81
|
+
end
|
82
|
+
if a_opts[:class] == nil then
|
83
|
+
a_opts[:class] = ""
|
84
|
+
end
|
85
|
+
|
73
86
|
## The icon for this tab
|
74
87
|
if opts[:icon]
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
88
|
+
if opts[:icon_only]
|
89
|
+
old_dn = display_name.clone
|
90
|
+
display_name = content_tag_string(:i, nil, :class => "icon-#{opts[:icon].to_s}")
|
91
|
+
#add the tooltip
|
92
|
+
li_opts[:class].concat(" has_tooltip ")
|
93
|
+
li_opts['data-original-title'] = old_dn
|
94
|
+
else
|
95
|
+
display_name = content_tag_string(:i, nil, :class => "icon-#{opts[:icon].to_s}").concat(display_name)
|
96
|
+
end
|
80
97
|
end
|
81
98
|
|
82
|
-
if li_opts[:class] == nil then li_opts[:class] = "" end
|
83
|
-
if a_opts[:class] == nil then a_opts[:class] = "" end
|
84
|
-
|
85
99
|
|
86
100
|
if opts[:dynamic] && (opts[:dropdown] == nil || opts[:dropdown] == false)
|
87
101
|
a_opts['data-toggle'] = :tab
|
@@ -91,6 +105,9 @@ module Spurs
|
|
91
105
|
# Process :href and :onclick
|
92
106
|
if opts[:href] then
|
93
107
|
a_opts[:href] = opts[:href]
|
108
|
+
if opts[:method] then
|
109
|
+
a_opts[:method] = opts[:method]
|
110
|
+
end
|
94
111
|
end
|
95
112
|
if opts[:onclick]
|
96
113
|
a_opts[:onclick] = opts[:onclick]
|
@@ -98,9 +115,12 @@ module Spurs
|
|
98
115
|
a_opts[:href] = "#"
|
99
116
|
end
|
100
117
|
end
|
118
|
+
if opts[:confirm] then
|
119
|
+
a_opts[:confirm] = opts[:confirm]
|
120
|
+
end
|
101
121
|
|
102
122
|
|
103
|
-
|
123
|
+
# process active option
|
104
124
|
if opts[:active] != nil
|
105
125
|
is_active = nil
|
106
126
|
# check to see if many conditions are specified
|
@@ -114,7 +134,7 @@ module Spurs
|
|
114
134
|
condition_found = true
|
115
135
|
end
|
116
136
|
else
|
117
|
-
if
|
137
|
+
if process_controller_action_active_condition(a)
|
118
138
|
condition_found = true
|
119
139
|
end
|
120
140
|
end
|
@@ -150,13 +170,16 @@ module Spurs
|
|
150
170
|
display_name = display_name.concat(content_inside_a)
|
151
171
|
end
|
152
172
|
|
153
|
-
|
154
|
-
#
|
155
|
-
|
173
|
+
link_dest = a_opts[:href] ? a_opts.delete(:href) : "#"
|
174
|
+
a_content = link_to(display_name.html_safe, link_dest, a_opts) #content_tag_string(:a, display_name.html_safe, a_opts)
|
175
|
+
#Rails.logger.debug("a_hash #{a_opts}\t#{a_content}")
|
176
|
+
# the <a> tag goes in the <li>
|
156
177
|
li_content = a_content
|
157
178
|
if content_inside_li # is there extra stuff to throw in there?
|
158
179
|
li_content = li_content.concat(content_inside_li)
|
159
180
|
end
|
181
|
+
|
182
|
+
|
160
183
|
content_tag_string(:li, li_content, li_opts)
|
161
184
|
end
|
162
185
|
|
@@ -166,14 +189,14 @@ module Spurs
|
|
166
189
|
end
|
167
190
|
menu_items = ""
|
168
191
|
dat.each do |item|
|
169
|
-
display_name
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
192
|
+
display_name = if item[:label] then
|
193
|
+
item[:label]
|
194
|
+
else
|
195
|
+
item[:id] ? item[:id].to_s.titlecase : "No Name"
|
196
|
+
end
|
174
197
|
item[:dropdown] = false
|
175
198
|
|
176
|
-
menu_items.concat(tab_tag(display_name, nil, nil, item.merge({:toggle => :none})))
|
199
|
+
menu_items.concat(tab_tag(display_name, nil, nil, item.merge({ :toggle => :none })))
|
177
200
|
end
|
178
201
|
menu = content_tag_string(:ul, menu_items.html_safe, :class => "dropdown-menu")
|
179
202
|
return menu
|
data/lib/spurs/nav/helper.rb
CHANGED
data/lib/spurs/section/helper.rb
CHANGED
@@ -12,7 +12,7 @@ module Spurs
|
|
12
12
|
options_to_pass_to_builder = {}
|
13
13
|
builder = opts[:builder].new(options_to_pass_to_builder)
|
14
14
|
section_content = capture(nil,&block)
|
15
|
-
builder.build_collapsible_section(title,section_content)
|
15
|
+
builder.build_collapsible_section(title.html_safe,section_content.html_safe)
|
16
16
|
end
|
17
17
|
|
18
18
|
def spurs_vcenter(options={}, &block)
|
data/lib/spurs/version.rb
CHANGED
data/lib/spurs.rb
CHANGED
@@ -16,11 +16,13 @@ require "spurs/flash"
|
|
16
16
|
require "spurs/nav"
|
17
17
|
require "spurs/section"
|
18
18
|
require "spurs/engine"
|
19
|
+
require "spurs/badge"
|
19
20
|
|
20
21
|
ActionView::Base.send :include, Spurs::Flash::Helper
|
21
22
|
ActionView::Base.send :include, Spurs::Nav::Helper
|
22
23
|
ActionView::Base.send :include, Spurs::Section::Helper
|
23
24
|
ActionView::Base.send :include, Spurs::Modal::Helper
|
25
|
+
ActionView::Base.send :include, Spurs::Badge::Helper
|
24
26
|
|
25
27
|
ActionController::Base.send :include, Spurs::Flash::ControllerMods
|
26
28
|
ActionController::Base.send :include, Spurs::Modal::ControllerMods
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spurs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -96,6 +96,7 @@ files:
|
|
96
96
|
- app/assets/stylesheets/spurs/jquery_ui_theme/jquery-ui-1.8.16.custom.css
|
97
97
|
- app/assets/stylesheets/spurs/jquery_ui_theme/jquery.ui.1.8.16.ie.css
|
98
98
|
- app/assets/stylesheets/spurs/sections.css.sass
|
99
|
+
- app/assets/stylesheets/spurs/subnav.sass
|
99
100
|
- app/assets/stylesheets/spurs/vcenter.css.sass
|
100
101
|
- app/assets/stylesheets/spurs.css
|
101
102
|
- app/controllers/spurs/application_controller.rb
|
@@ -107,6 +108,7 @@ files:
|
|
107
108
|
- app/views/spurs/modals/spawn.js.erb
|
108
109
|
- config/locales/en.yml
|
109
110
|
- config/routes.rb
|
111
|
+
- lib/spurs/badge.rb
|
110
112
|
- lib/spurs/engine.rb
|
111
113
|
- lib/spurs/flash/builder.rb
|
112
114
|
- lib/spurs/flash/controller_mods.rb
|
@@ -130,7 +132,7 @@ files:
|
|
130
132
|
- lib/tasks/spurs_tasks.rake
|
131
133
|
- MIT-LICENSE
|
132
134
|
- Rakefile
|
133
|
-
- README.
|
135
|
+
- README.rdoc
|
134
136
|
- test/dummy/app/assets/javascripts/application.js
|
135
137
|
- test/dummy/app/assets/stylesheets/application.css
|
136
138
|
- test/dummy/app/controllers/application_controller.rb
|
@@ -152,6 +154,7 @@ files:
|
|
152
154
|
- test/dummy/config/locales/en.yml
|
153
155
|
- test/dummy/config/routes.rb
|
154
156
|
- test/dummy/config.ru
|
157
|
+
- test/dummy/log/test.log
|
155
158
|
- test/dummy/public/404.html
|
156
159
|
- test/dummy/public/422.html
|
157
160
|
- test/dummy/public/500.html
|
@@ -176,12 +179,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
176
179
|
- - ! '>='
|
177
180
|
- !ruby/object:Gem::Version
|
178
181
|
version: '0'
|
182
|
+
segments:
|
183
|
+
- 0
|
184
|
+
hash: 1151912235834294858
|
179
185
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
180
186
|
none: false
|
181
187
|
requirements:
|
182
188
|
- - ! '>='
|
183
189
|
- !ruby/object:Gem::Version
|
184
190
|
version: '0'
|
191
|
+
segments:
|
192
|
+
- 0
|
193
|
+
hash: 1151912235834294858
|
185
194
|
requirements: []
|
186
195
|
rubyforge_project:
|
187
196
|
rubygems_version: 1.8.24
|
@@ -210,6 +219,7 @@ test_files:
|
|
210
219
|
- test/dummy/config/locales/en.yml
|
211
220
|
- test/dummy/config/routes.rb
|
212
221
|
- test/dummy/config.ru
|
222
|
+
- test/dummy/log/test.log
|
213
223
|
- test/dummy/public/404.html
|
214
224
|
- test/dummy/public/422.html
|
215
225
|
- test/dummy/public/500.html
|
data/README.markdown
DELETED
@@ -1,118 +0,0 @@
|
|
1
|
-
# Spurs
|
2
|
-
|
3
|
-
Spurs is a library that adds some bells and whistles to the Twitter Bootstrap GUI framework. I consists mostly of helpers and javascript, and thus is ORM agnostic.
|
4
|
-
|
5
|
-
## Flash Messages
|
6
|
-
|
7
|
-
Put this in your layout file wherever you want to render the flash messages
|
8
|
-
|
9
|
-
<%= spurs_flash_helper %>
|
10
|
-
|
11
|
-
and flash messages will be automatically rendered on page loads
|
12
|
-
|
13
|
-
### From the rails side
|
14
|
-
|
15
|
-
By default, you can create four types of messages
|
16
|
-
|
17
|
-
flash_addItem(:notices,"A message about something successfully happening!")
|
18
|
-
flash_addItem(:warnings, "Something is unusual, but not absolutely critical")
|
19
|
-
flash_addItem(:errors, "Something critical has happened")
|
20
|
-
flash_addItem(:infos, "Here's some information")
|
21
|
-
|
22
|
-
You can also create multiple messages for each type
|
23
|
-
|
24
|
-
flash_addItem(:errors, "Problem validating phone number")
|
25
|
-
flash_addItem(:errors, "Problem validating street address")
|
26
|
-
|
27
|
-
### From the javascript side
|
28
|
-
|
29
|
-
You can also create matching flash messages via javascript
|
30
|
-
|
31
|
-
spurs.flash.alert("Something has gone wrong!","error");
|
32
|
-
|
33
|
-
for the singular versions of each of the four types above ("info", "warning", "error", "notice")
|
34
|
-
|
35
|
-
## Navigation
|
36
|
-
|
37
|
-
Spurs makes creation of bootstrap navigation easy!.
|
38
|
-
|
39
|
-
spurs_nav :type => :pills do |nav|
|
40
|
-
|
41
|
-
# a simple nav item as a regular link
|
42
|
-
nav.tab :user, :icon => :user, :href => "#user"
|
43
|
-
|
44
|
-
# a nav item that runs some javascript
|
45
|
-
nav.tab :settings, :icon => :cog, :onclick => "alert('hello');"
|
46
|
-
|
47
|
-
# a nav item that only shows its icon (not its name)
|
48
|
-
nav.tab :secure, :icon => :lock, :icon_only => true
|
49
|
-
|
50
|
-
# a dropdown menu with two actions
|
51
|
-
nav.dropdown :menu,
|
52
|
-
:icon => :cog,
|
53
|
-
:icon_only => true,
|
54
|
-
:actions => [ {:name => "one", :icon => :plus, :href => "#one"},
|
55
|
-
{:name => "two", :icon => :minus, :href => "#two"}]
|
56
|
-
|
57
|
-
will generate a menu like this...
|
58
|
-
|
59
|
-
![image](https://github.com/TrueNorth/spurs/raw/master/docs/img/pic1.png)
|
60
|
-
|
61
|
-
or in HTML...
|
62
|
-
|
63
|
-
<ul class="nav nav-pills ">
|
64
|
-
<li>
|
65
|
-
<a href="#user">
|
66
|
-
<i class="icon-user"></i>User
|
67
|
-
</a>
|
68
|
-
</li>
|
69
|
-
<li>
|
70
|
-
<a onclick="alert('hello');">
|
71
|
-
<i class="icon-cog"></i>Settings
|
72
|
-
</a>
|
73
|
-
</li>
|
74
|
-
<li>
|
75
|
-
<a>
|
76
|
-
<i class="icon-lock"></i>Secure
|
77
|
-
</a>
|
78
|
-
</li>
|
79
|
-
<li class="dropdown" data-dropdown="dropdown">
|
80
|
-
<a class="dropdown-toggle" data-toggle="dropdown">
|
81
|
-
<i class="icon-cog"></i>
|
82
|
-
<b class="caret"></b>
|
83
|
-
</a>
|
84
|
-
<ul class="dropdown-menu">
|
85
|
-
<li>
|
86
|
-
<a href="#one">
|
87
|
-
<i class="icon-plus"></i>No Name
|
88
|
-
</a>
|
89
|
-
</li>
|
90
|
-
<li>
|
91
|
-
<a href="#two">
|
92
|
-
<i class="icon-minus"></i>No Name
|
93
|
-
</a>
|
94
|
-
</li>
|
95
|
-
</ul>
|
96
|
-
</li>
|
97
|
-
</ul>
|
98
|
-
|
99
|
-
You can specify some active criteria for menu items
|
100
|
-
|
101
|
-
spurs_nav :type => :pills do |nav|
|
102
|
-
|
103
|
-
# force this to be active with a boolean
|
104
|
-
nav.tab :user, :icon => :user, :href => "#user",
|
105
|
-
:active => true
|
106
|
-
|
107
|
-
# controller criteria (if controller_name == :settings)
|
108
|
-
nav.tab :settings, :icon => :cog, :onclick => "alert('hello');",
|
109
|
-
:active => {:controller => :settings}
|
110
|
-
|
111
|
-
# controller and action criteria (if controller_name == :settings && action_name == ;edit)
|
112
|
-
nav.tab :settings, :icon => :cog, :onclick => "alert('hello');",
|
113
|
-
:active => {:controller => :settings, :action => :edit}
|
114
|
-
|
115
|
-
# multiple controller/action criteria (if (controller_name == :settings && action_name == :edit) || (controller_name == :user && action_name == :edit)
|
116
|
-
nav.tab :settings, :icon => :cog, :onclick => "alert('hello');",
|
117
|
-
:active => [{:controller => :settings, :action => :edit},
|
118
|
-
{:controller => :users, :action => :edit}]
|