grandstand 0.2.4 → 0.2.6
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +1 -1
- data/README.markdown +43 -0
- data/README.txt +0 -0
- data/Rakefile +7 -1
- data/VERSION +1 -1
- data/app/controllers/galleries_controller.rb +2 -2
- data/app/controllers/{admin → grandstand}/galleries_controller.rb +9 -13
- data/app/controllers/{admin → grandstand}/images_controller.rb +6 -9
- data/app/controllers/{admin → grandstand}/main_controller.rb +8 -8
- data/app/controllers/{admin → grandstand}/pages_controller.rb +9 -9
- data/app/controllers/grandstand/posts_controller.rb +64 -0
- data/app/controllers/{admin → grandstand}/sessions_controller.rb +8 -8
- data/app/controllers/grandstand/templates_controller.rb +8 -0
- data/app/controllers/{admin → grandstand}/users_controller.rb +10 -10
- data/app/controllers/posts_controller.rb +1 -1
- data/app/helpers/galleries_helper.rb +2 -0
- data/app/helpers/grandstand/galleries_helper.rb +2 -0
- data/app/helpers/grandstand/images_helpers.rb +2 -0
- data/app/helpers/grandstand/main_helper.rb +74 -0
- data/app/helpers/grandstand/pages_helper.rb +2 -0
- data/app/helpers/grandstand/posts_helper.rb +2 -0
- data/app/helpers/grandstand/sessions_helper.rb +2 -0
- data/app/helpers/grandstand/templates_helper.rb +2 -0
- data/app/helpers/grandstand/users_helper.rb +2 -0
- data/app/models/{gallery.rb → grandstand/gallery.rb} +2 -2
- data/app/models/{image.rb → grandstand/image.rb} +10 -9
- data/app/models/{page.rb → grandstand/page.rb} +1 -1
- data/app/models/grandstand/page_section.rb +6 -0
- data/app/models/{post.rb → grandstand/post.rb} +14 -2
- data/app/models/{template.rb → grandstand/template.rb} +2 -2
- data/app/models/{user.rb → grandstand/user.rb} +1 -1
- data/app/stylesheets/application.less +103 -10
- data/app/stylesheets/global.less +47 -30
- data/app/stylesheets/login.less +1 -1
- data/app/stylesheets/wysiwyg.less +77 -65
- data/app/views/{admin → grandstand}/galleries/_form.html.erb +2 -2
- data/app/views/grandstand/galleries/_gallery.html.erb +16 -0
- data/app/views/grandstand/galleries/_list.html.erb +17 -0
- data/app/views/grandstand/galleries/delete.html.erb +8 -0
- data/app/views/grandstand/galleries/edit.html.erb +8 -0
- data/app/views/grandstand/galleries/editor.html.erb +33 -0
- data/app/views/grandstand/galleries/index.html.erb +14 -0
- data/app/views/grandstand/galleries/new.html.erb +8 -0
- data/app/views/grandstand/galleries/show.html.erb +19 -0
- data/app/views/{admin → grandstand}/images/_form.html.erb +2 -2
- data/app/views/grandstand/images/delete.html.erb +8 -0
- data/app/views/grandstand/images/edit.html.erb +8 -0
- data/app/views/grandstand/images/new.html.erb +8 -0
- data/app/views/grandstand/images/show.html.erb +33 -0
- data/app/views/{admin → grandstand}/images/upload.html.erb +2 -2
- data/app/views/grandstand/main/index.html.erb +10 -0
- data/app/views/{admin → grandstand}/pages/_form.html.erb +2 -2
- data/app/views/grandstand/pages/_left.html.erb +3 -0
- data/app/views/{admin → grandstand}/pages/_row.html.erb +3 -3
- data/app/views/{admin → grandstand}/pages/delete.html.erb +2 -2
- data/app/views/{admin → grandstand}/pages/edit.html.erb +2 -2
- data/app/views/{admin → grandstand}/pages/index.html.erb +1 -1
- data/app/views/{admin → grandstand}/pages/new.html.erb +2 -2
- data/app/views/{admin → grandstand}/pages/show.html.erb +1 -1
- data/app/views/grandstand/posts/_form.html.erb +15 -0
- data/app/views/grandstand/posts/_left.html.erb +3 -0
- data/app/views/grandstand/posts/_list.html.erb +26 -0
- data/app/views/{admin → grandstand}/posts/delete.html.erb +2 -2
- data/app/views/grandstand/posts/edit.html.erb +8 -0
- data/app/views/{admin → grandstand}/posts/index.html.erb +1 -1
- data/app/views/grandstand/posts/new.html.erb +8 -0
- data/app/views/grandstand/posts/preview.html.erb +9 -0
- data/app/views/grandstand/posts/show.html.erb +8 -0
- data/app/views/{admin → grandstand}/sessions/forgot.html.erb +2 -2
- data/app/views/{admin → grandstand}/sessions/show.html.erb +2 -2
- data/app/views/grandstand/shared/_flash.html.erb +3 -0
- data/app/views/{admin → grandstand}/users/_form.html.erb +2 -2
- data/app/views/grandstand/users/_left.html.erb +3 -0
- data/app/views/{admin → grandstand}/users/delete.html.erb +2 -2
- data/app/views/grandstand/users/edit.html.erb +8 -0
- data/app/views/{admin → grandstand}/users/index.html.erb +3 -3
- data/app/views/grandstand/users/new.html.erb +8 -0
- data/app/views/grandstand/users/show.html.erb +12 -0
- data/app/views/layouts/grandstand.html.erb +76 -0
- data/app/views/layouts/grandstand_login.html.erb +17 -0
- data/app/views/layouts/{admin_xhr.html.erb → grandstand_xhr.html.erb} +0 -0
- data/app/views/posts/show.html.erb +2 -2
- data/{lib/grandstand → config}/routes.rb +9 -7
- data/grandstand.gemspec +139 -122
- data/lib/grandstand.rb +50 -19
- data/lib/grandstand/application.rb +27 -35
- data/lib/grandstand/controller.rb +4 -6
- data/lib/grandstand/form_builder.rb +19 -0
- data/lib/grandstand/helper.rb +1 -47
- data/lib/grandstand/session.rb +2 -11
- data/lib/grandstand/stylesheets_controller.rb +14 -0
- data/public/{admin → grandstand}/images/background-input.gif +0 -0
- data/public/{admin → grandstand}/images/background-progress-bar.png +0 -0
- data/public/{admin → grandstand}/images/background-progress-complete.gif +0 -0
- data/public/{admin → grandstand}/images/background-progress.gif +0 -0
- data/public/grandstand/images/galleries-empty.png +0 -0
- data/public/{admin → grandstand}/images/icons/add.png +0 -0
- data/public/{admin → grandstand}/images/icons/collapse.png +0 -0
- data/public/{admin → grandstand}/images/icons/delete.png +0 -0
- data/public/{admin → grandstand}/images/icons/edit.png +0 -0
- data/public/{admin → grandstand}/images/icons/editor/bold.png +0 -0
- data/public/{admin → grandstand}/images/icons/editor/gallery.png +0 -0
- data/public/{admin → grandstand}/images/icons/editor/image-center.png +0 -0
- data/public/{admin → grandstand}/images/icons/editor/image-left.png +0 -0
- data/public/{admin → grandstand}/images/icons/editor/image-right.png +0 -0
- data/public/{admin → grandstand}/images/icons/editor/image.png +0 -0
- data/public/{admin → grandstand}/images/icons/editor/italic.png +0 -0
- data/public/{admin → grandstand}/images/icons/editor/ordered-list.png +0 -0
- data/public/{admin → grandstand}/images/icons/editor/quote.png +0 -0
- data/public/{admin → grandstand}/images/icons/editor/source.png +0 -0
- data/public/{admin → grandstand}/images/icons/editor/strikethrough.png +0 -0
- data/public/{admin → grandstand}/images/icons/editor/underline.png +0 -0
- data/public/{admin → grandstand}/images/icons/editor/unordered-list.png +0 -0
- data/public/{admin → grandstand}/images/icons/error.png +0 -0
- data/public/{admin → grandstand}/images/icons/expand.png +0 -0
- data/public/{admin → grandstand}/images/icons/galleries.png +0 -0
- data/public/{admin → grandstand}/images/icons/gallery.png +0 -0
- data/public/{admin → grandstand}/images/icons/image.png +0 -0
- data/public/{admin → grandstand}/images/icons/okay.png +0 -0
- data/public/{admin → grandstand}/images/icons/pages.png +0 -0
- data/public/{admin → grandstand}/images/icons/posts.png +0 -0
- data/public/grandstand/images/icons/processing.gif +0 -0
- data/public/{admin → grandstand}/images/icons/upload.png +0 -0
- data/public/{admin → grandstand}/images/icons/users.png +0 -0
- data/public/{admin → grandstand}/images/logo.png +0 -0
- data/public/{admin → grandstand}/images/spinner-dark.gif +0 -0
- data/public/{admin → grandstand}/images/uploader.swf +0 -0
- data/public/{admin → grandstand}/javascripts/application.js +139 -54
- data/public/grandstand/javascripts/jquery.js +414 -0
- data/public/{admin → grandstand}/javascripts/mustache.js +0 -0
- data/public/grandstand/javascripts/preview.js +9 -0
- data/public/{admin → grandstand}/javascripts/selection.js +77 -57
- data/public/{admin → grandstand}/javascripts/string.js +7 -6
- data/public/grandstand/javascripts/wysiwyg.js +311 -0
- data/public/{admin → grandstand}/stylesheets/wysiwyg-content.css +15 -2
- metadata +207 -126
- data/README +0 -7
- data/app/controllers/admin/posts_controller.rb +0 -48
- data/app/controllers/admin/templates_controller.rb +0 -6
- data/app/helpers/admin/main_helper.rb +0 -31
- data/app/helpers/admin/pages_helper.rb +0 -2
- data/app/helpers/admin/posts_helper.rb +0 -2
- data/app/helpers/admin/sessions_helper.rb +0 -2
- data/app/helpers/admin/templates_helper.rb +0 -2
- data/app/helpers/admin/users_helper.rb +0 -2
- data/app/models/page_section.rb +0 -6
- data/app/stylesheets/_dialogs.less +0 -85
- data/app/views/admin/galleries/_gallery.html.erb +0 -16
- data/app/views/admin/galleries/_list.html.erb +0 -17
- data/app/views/admin/galleries/delete.html.erb +0 -8
- data/app/views/admin/galleries/edit.html.erb +0 -8
- data/app/views/admin/galleries/editor.html.erb +0 -13
- data/app/views/admin/galleries/editor_with_images.html.erb +0 -19
- data/app/views/admin/galleries/index.html.erb +0 -13
- data/app/views/admin/galleries/new.html.erb +0 -8
- data/app/views/admin/galleries/show.html.erb +0 -15
- data/app/views/admin/images/delete.html.erb +0 -8
- data/app/views/admin/images/edit.html.erb +0 -8
- data/app/views/admin/images/new.html.erb +0 -8
- data/app/views/admin/main/index.html.erb +0 -10
- data/app/views/admin/pages/_left.html.erb +0 -3
- data/app/views/admin/posts/_form.html.erb +0 -29
- data/app/views/admin/posts/_left.html.erb +0 -3
- data/app/views/admin/posts/_list.html.erb +0 -22
- data/app/views/admin/posts/edit.html.erb +0 -10
- data/app/views/admin/posts/new.html.erb +0 -10
- data/app/views/admin/posts/show.html.erb +0 -4
- data/app/views/admin/shared/_flash.html.erb +0 -3
- data/app/views/admin/users/_left.html.erb +0 -3
- data/app/views/admin/users/edit.html.erb +0 -8
- data/app/views/admin/users/new.html.erb +0 -8
- data/app/views/admin/users/show.html.erb +0 -12
- data/app/views/layouts/admin.html.erb +0 -80
- data/app/views/layouts/admin_login.html.erb +0 -17
- data/lib/grandstand/controller/development.rb +0 -15
- data/public/admin/javascripts/jquery.js +0 -404
- data/public/admin/javascripts/wysiwyg.js +0 -335
- data/public/admin/stylesheets/application.css +0 -1
- data/public/admin/stylesheets/global.css +0 -1
- data/public/admin/stylesheets/login.css +0 -1
- data/public/admin/stylesheets/wysiwyg.css +0 -1
@@ -1,5 +1,5 @@
|
|
1
1
|
class PostsController < ApplicationController
|
2
2
|
def show
|
3
|
-
return not_found unless @post = Post.
|
3
|
+
return not_found unless @post = Grandstand::Post.posted_on(params[:year], params[:month]).where(:url => params[:id]).first
|
4
4
|
end
|
5
5
|
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
module Grandstand::MainHelper
|
2
|
+
# Renders a <button> tag. Helpful for forms and the like.
|
3
|
+
#
|
4
|
+
# <%= button("Save Changes", :class => "blue") %>
|
5
|
+
#
|
6
|
+
# ... produces
|
7
|
+
#
|
8
|
+
# <button class="button blue"><span class="inner"><span>Save Changes</span></span></button>
|
9
|
+
def button(*args)
|
10
|
+
label = args.shift
|
11
|
+
options = {:name => 'submit', :value => label}.merge(args.extract_options! || {})
|
12
|
+
options, icon = button_options(options)
|
13
|
+
content_tag(:button, options) { content_tag(:span, :class => icon ? "#{icon} icon" : nil) { label } }
|
14
|
+
end
|
15
|
+
|
16
|
+
# Similar to button, but generates a link instead of a button element. Useful for providing
|
17
|
+
# buttons to GET actions:
|
18
|
+
#
|
19
|
+
# <%= button_link_to("Get Help", support_path, :icon => "help") %>
|
20
|
+
#
|
21
|
+
# ... produces
|
22
|
+
#
|
23
|
+
# <a class="button blue" href="/support"><span class="inner"><span class="help icon">Get Help</span></span></button>
|
24
|
+
#
|
25
|
+
# The extra spans are for any sliding door styling you may be interested in adding. Adding :icon to the options will
|
26
|
+
# give the inner-most span a class of "#{options[:icon]} icon", allowing you to add extra images inside of your button.
|
27
|
+
def button_link_to(*args)
|
28
|
+
options, icon = button_options(args.extract_options! || {})
|
29
|
+
link_to(content_tag(:span, :class => icon ? "#{icon} icon" : nil) { args.shift }, *args.push(options))
|
30
|
+
end
|
31
|
+
|
32
|
+
def button_options(options)
|
33
|
+
classes = %w(button)
|
34
|
+
if icon = options.delete(:icon)
|
35
|
+
classes.push('has-icon')
|
36
|
+
end
|
37
|
+
if options.delete(:default)
|
38
|
+
classes.push('default')
|
39
|
+
end
|
40
|
+
classes.push(options[:class].to_s.split(' ')) if options[:class]
|
41
|
+
options[:class] = classes.uniq.join(' ')
|
42
|
+
[options, icon]
|
43
|
+
end
|
44
|
+
|
45
|
+
def expand(*controllers)
|
46
|
+
options = controllers.extract_options!
|
47
|
+
options[:class] = Array(options[:class]).compact
|
48
|
+
options[:class].push(:expandable)
|
49
|
+
section = controllers.first
|
50
|
+
controllers.map!(&:to_s)
|
51
|
+
if controllers.include?(controller_name) || !((session[:expand] ||= []) & controllers).empty?
|
52
|
+
options[:class].push(:expanded)
|
53
|
+
end
|
54
|
+
raw %( class="#{options[:class].join(' ')}")
|
55
|
+
end
|
56
|
+
|
57
|
+
def expand_link(section)
|
58
|
+
link_to(raw('<span></span>'), '#', :class => 'expand', :rel => section)
|
59
|
+
end
|
60
|
+
|
61
|
+
def hide(condition)
|
62
|
+
raw ' style="display:none;"' if condition
|
63
|
+
end
|
64
|
+
|
65
|
+
# A form wrapper that's used to override the default field_error_proc in a thread-safeish way.
|
66
|
+
# The new field_error_proc returns a <div> with class "errors" on it, instead of an irritating
|
67
|
+
# "fieldWithErrors" classname that nobody likes or wants to use. Only used in admin at the moment.
|
68
|
+
def wrap_grandstand_form(&block)
|
69
|
+
field_error_proc = ActionView::Base.field_error_proc
|
70
|
+
ActionView::Base.field_error_proc = Proc.new {|html_tag, instance| raw("<div class=\"errors\">#{html_tag}</div>") }
|
71
|
+
concat(capture(&block))
|
72
|
+
ActionView::Base.field_error_proc = field_error_proc
|
73
|
+
end
|
74
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class Gallery < ActiveRecord::Base
|
1
|
+
class Grandstand::Gallery < ActiveRecord::Base
|
2
2
|
before_save :set_url
|
3
3
|
belongs_to :user
|
4
4
|
default_scope order('position, id')
|
@@ -8,7 +8,7 @@ class Gallery < ActiveRecord::Base
|
|
8
8
|
validates_uniqueness_of :name, :message => 'A gallery with that name already exists'
|
9
9
|
|
10
10
|
def cover_image
|
11
|
-
images.first || Image.new
|
11
|
+
images.first || Grandstand::Image.new
|
12
12
|
end
|
13
13
|
|
14
14
|
# def to_param
|
@@ -1,18 +1,19 @@
|
|
1
|
-
class Image < ActiveRecord::Base
|
1
|
+
class Grandstand::Image < ActiveRecord::Base
|
2
2
|
belongs_to :gallery
|
3
3
|
belongs_to :user
|
4
4
|
default_scope order('position, id')
|
5
5
|
|
6
6
|
has_attached_file :file,
|
7
|
-
:
|
8
|
-
:
|
7
|
+
:convert_options => Hash[*(Grandstand.image_sizes.keys + [:grandstand_icon, :grandstand_medium]).map {|key| [key, '-gravity North']}.flatten],
|
8
|
+
:default_url => "http://dummyimage.com/:dimensions/fff/888&text=No+Images!",
|
9
|
+
:path => '/images/:gallery_id/:padded_id-:style.:extension',
|
9
10
|
:styles => {
|
10
|
-
:
|
11
|
-
:
|
12
|
-
}.merge(Grandstand
|
11
|
+
:grandstand_icon => '16x16#',
|
12
|
+
:grandstand_medium => '200x200#'
|
13
|
+
}.merge(Grandstand.image_sizes),
|
13
14
|
:storage => :s3,
|
14
|
-
:s3_credentials => Grandstand
|
15
|
-
:bucket => Grandstand
|
15
|
+
:s3_credentials => Grandstand.s3[:credentials],
|
16
|
+
:bucket => Grandstand.s3[:bucket]
|
16
17
|
|
17
18
|
delegate :url, :to => :file
|
18
19
|
|
@@ -27,7 +28,7 @@ class Image < ActiveRecord::Base
|
|
27
28
|
def sizes
|
28
29
|
return @sizes if defined? @sizes
|
29
30
|
sorted_sizes = ActiveSupport::OrderedHash.new
|
30
|
-
Image.attachment_definitions[:file][:styles].reject {|style, dimensions| style.to_s =~ /^
|
31
|
+
Grandstand::Image.attachment_definitions[:file][:styles].reject {|style, dimensions| style.to_s =~ /^grandstand_/ }.inject({}) do |sizes, style_definition|
|
31
32
|
style, dimensions = style_definition
|
32
33
|
width, height = dimensions.gsub(/[^0-9x]/, '').split('x').map(&:to_i)
|
33
34
|
width ||= 0
|
@@ -1,9 +1,13 @@
|
|
1
|
-
class Post < ActiveRecord::Base
|
1
|
+
class Grandstand::Post < ActiveRecord::Base
|
2
2
|
before_save :set_url
|
3
|
+
before_validation :set_posted_at
|
3
4
|
belongs_to :user
|
4
|
-
default_scope order('created_at DESC')
|
5
|
+
default_scope order('posted_at DESC, created_at DESC, id DESC')
|
6
|
+
|
7
|
+
scope :posted_on, lambda {|year, month| where("#{extract_year('posted_at')} = ? AND #{extract_month('posted_at')} = ?", year, month.to_s.rjust(2, '0')) }
|
5
8
|
|
6
9
|
validates_presence_of :name, :message => 'Your post needs a name'
|
10
|
+
validates_presence_of :posted_at
|
7
11
|
validates_uniqueness_of :name, :message => 'A post with that name already exists'
|
8
12
|
|
9
13
|
class << self
|
@@ -30,11 +34,19 @@ class Post < ActiveRecord::Base
|
|
30
34
|
end
|
31
35
|
end
|
32
36
|
|
37
|
+
def to_html
|
38
|
+
@to_html ||= Mustache.render(Grandstand::Template.post, as_json)
|
39
|
+
end
|
40
|
+
|
33
41
|
# def to_param
|
34
42
|
# url
|
35
43
|
# end
|
36
44
|
|
37
45
|
protected
|
46
|
+
def set_posted_at
|
47
|
+
self.posted_at ||= Time.now
|
48
|
+
end
|
49
|
+
|
38
50
|
def set_url
|
39
51
|
self.url ||= name.parameterize
|
40
52
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
for the editor UI ONLY. It relies heavily on global.less, which provides all form element styling and much
|
4
4
|
of the generic UI found in the app - including during inline editing and the like.
|
5
5
|
*/
|
6
|
-
@import url('_buttons');
|
6
|
+
@import url('_buttons.less');
|
7
7
|
|
8
8
|
/* Layout Elements */
|
9
9
|
|
@@ -17,7 +17,7 @@ body {
|
|
17
17
|
background-image:-webkit-gradient(linear, left top, left bottom, from(#eee), to(#ddd));
|
18
18
|
border-bottom:1px solid #eee;
|
19
19
|
border-top:1px solid #fff;
|
20
|
-
height:
|
20
|
+
height:35px;
|
21
21
|
left:0;
|
22
22
|
padding:0 10px;
|
23
23
|
position:absolute;
|
@@ -27,11 +27,11 @@ body {
|
|
27
27
|
-moz-box-sizing:border-box;
|
28
28
|
-ms-box-sizing:border-box;
|
29
29
|
-webkit-box-sizing:border-box;
|
30
|
-
-moz-box-shadow:#
|
31
|
-
-webkit-box-shadow:#999 0 1px 2px;
|
30
|
+
-moz-box-shadow:#999 0 1px 2px;
|
31
|
+
-webkit-box-shadow:#999 0 1px 2px;
|
32
32
|
|
33
33
|
.float-right {
|
34
|
-
line-height:
|
34
|
+
line-height:35px;
|
35
35
|
/* margin-top:11px;*/
|
36
36
|
}
|
37
37
|
|
@@ -49,13 +49,13 @@ body {
|
|
49
49
|
|
50
50
|
#logo {
|
51
51
|
display:inline-block;
|
52
|
-
padding-top:
|
52
|
+
padding-top:1px;
|
53
53
|
}
|
54
54
|
|
55
55
|
#content {
|
56
56
|
height:100%;
|
57
57
|
overflow:hidden;
|
58
|
-
padding:
|
58
|
+
padding:36px 0 0 0;
|
59
59
|
position:absolute;
|
60
60
|
width:100%;
|
61
61
|
box-sizing:border-box;
|
@@ -88,10 +88,13 @@ body {
|
|
88
88
|
li.first {
|
89
89
|
> a {
|
90
90
|
border-top-color:#d4d4d4;
|
91
|
+
-moz-border-radius-topleft:2px;
|
91
92
|
-webkit-border-top-left-radius:2px;
|
92
93
|
}
|
93
94
|
|
94
95
|
a.expand {
|
96
|
+
-moz-border-radius-topleft:0;
|
97
|
+
-moz-border-radius-topright:2px;
|
95
98
|
-webkit-border-top-left-radius:0;
|
96
99
|
-webkit-border-top-right-radius:2px;
|
97
100
|
}
|
@@ -156,6 +159,8 @@ body {
|
|
156
159
|
}
|
157
160
|
|
158
161
|
li.last a {
|
162
|
+
-moz-border-radius-bottomleft:2px;
|
163
|
+
-moz-border-radius-bottomright:2px;
|
159
164
|
-webkit-border-bottom-left-radius:2px;
|
160
165
|
-webkit-border-bottom-right-radius:2px;
|
161
166
|
}
|
@@ -194,20 +199,32 @@ body {
|
|
194
199
|
z-index:2;
|
195
200
|
}
|
196
201
|
|
197
|
-
#
|
202
|
+
#cover.loading {
|
203
|
+
background-image:url(../images/spinner-dark.gif);
|
204
|
+
background-position:center center;
|
205
|
+
background-repeat:no-repeat;
|
206
|
+
}
|
207
|
+
|
208
|
+
#dialog {
|
198
209
|
left:50%;
|
199
210
|
margin-left:-200px;
|
200
211
|
position:fixed;
|
201
212
|
top:0;
|
202
213
|
width:400px;
|
203
214
|
z-index:3;
|
215
|
+
-moz-border-radius-bottomleft:5px;
|
216
|
+
-moz-border-radius-bottomright:5px;
|
217
|
+
-webkit-border-bottom-left-radius:5px;
|
218
|
+
-webkit-border-bottom-right-radius:5px;
|
219
|
+
-moz-box-shadow:#333 0 1px 2px;
|
220
|
+
-webkit-box-shadow:#333 0 1px 2px;
|
204
221
|
|
205
222
|
h2 {
|
206
223
|
background:#fafafa;
|
207
224
|
border-bottom:1px solid #ddd;
|
208
225
|
color:#555;
|
209
226
|
font-size:10pt;
|
210
|
-
margin
|
227
|
+
margin:0 !important;
|
211
228
|
padding:5px;
|
212
229
|
text-shadow:#fff 0 1px 0;
|
213
230
|
}
|
@@ -217,14 +234,80 @@ body {
|
|
217
234
|
margin:0;
|
218
235
|
}
|
219
236
|
|
220
|
-
form
|
237
|
+
form.two-pane {
|
238
|
+
background:#d9dfe8;
|
239
|
+
border-top-width:0;
|
240
|
+
-moz-border-radius-bottomleft:5px;
|
241
|
+
-moz-border-radius-bottomright:5px;
|
242
|
+
-webkit-border-bottom-left-radius:5px;
|
243
|
+
-webkit-border-bottom-right-radius:5px;
|
244
|
+
}
|
245
|
+
|
246
|
+
.destination {
|
247
|
+
background-color:#fff;
|
248
|
+
border-left:1px solid #aaa;
|
249
|
+
height:100%;
|
250
|
+
margin-left:200px;
|
251
|
+
}
|
252
|
+
|
253
|
+
.field {
|
221
254
|
background:#f0f0f0;
|
222
255
|
padding:10px;
|
223
256
|
}
|
224
257
|
|
258
|
+
.image {
|
259
|
+
cursor:pointer;
|
260
|
+
}
|
261
|
+
|
262
|
+
.scrollable {
|
263
|
+
/* height:100%;*/
|
264
|
+
overflow-x:hidden;
|
265
|
+
overflow-y:auto;
|
266
|
+
padding:10px 0;
|
267
|
+
width:100%;
|
268
|
+
-moz-box-sizing:border-box;
|
269
|
+
-ms-box-sizing:border-box;
|
270
|
+
-webkit-box-sizing:border-box;
|
271
|
+
}
|
272
|
+
|
273
|
+
.source {
|
274
|
+
float:left;
|
275
|
+
height:100%;
|
276
|
+
overflow-x:hidden;
|
277
|
+
overflow-y:auto;
|
278
|
+
width:200px;
|
279
|
+
|
280
|
+
.header {
|
281
|
+
background-color:transparent !important;
|
282
|
+
background-image:none !important;
|
283
|
+
border-width:0 !important;
|
284
|
+
color:#505d81;
|
285
|
+
font-weight:bold;
|
286
|
+
padding:10px 10px 5px 10px;
|
287
|
+
text-shadow:#f1f5f8 0 1px 0;
|
288
|
+
text-transform:uppercase;
|
289
|
+
}
|
290
|
+
|
291
|
+
a {
|
292
|
+
border-top:1px solid #d9dfe8;
|
293
|
+
color:#000;
|
294
|
+
display:block;
|
295
|
+
padding:5px 5px 5px 20px;
|
296
|
+
text-decoration:none;
|
297
|
+
}
|
298
|
+
|
299
|
+
a.active {
|
300
|
+
background:-webkit-gradient(linear, left top, left bottom, from(#63a4e2), to(#0066c0));
|
301
|
+
border-top:1px solid #4691d6;
|
302
|
+
color:#fff;
|
303
|
+
text-shadow:#000 0 1px 0;
|
304
|
+
}
|
305
|
+
}
|
306
|
+
|
225
307
|
.toolbar {
|
226
308
|
#grandstand > .styled-toolbar;
|
227
309
|
border-top:1px solid #888;
|
310
|
+
clear:both;
|
228
311
|
text-align:right;
|
229
312
|
-moz-border-radius-bottomleft:5px;
|
230
313
|
-moz-border-radius-bottomright:5px;
|
@@ -236,3 +319,13 @@ body {
|
|
236
319
|
}
|
237
320
|
}
|
238
321
|
}
|
322
|
+
|
323
|
+
#dialog.large {
|
324
|
+
margin-left:-450px;
|
325
|
+
width:900px;
|
326
|
+
}
|
327
|
+
|
328
|
+
#dialog.medium {
|
329
|
+
margin-left:-300px;
|
330
|
+
width:600px;
|
331
|
+
}
|
data/app/stylesheets/global.less
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
/*
|
2
|
-
global.less contains the styling for rendering the
|
3
|
-
it lives somewhere underneath a .
|
2
|
+
global.less contains the styling for rendering the grandstand UI in any context, assuming
|
3
|
+
it lives somewhere underneath a .grandstand item. This will allow you to take global UI
|
4
4
|
elements and apply them externally or internally - whatever you feel like.
|
5
5
|
*/
|
6
|
-
@import url('_buttons');
|
6
|
+
@import url('_buttons.less');
|
7
7
|
|
8
8
|
body, html {
|
9
9
|
min-height:100%;
|
10
10
|
}
|
11
11
|
|
12
|
-
body.
|
12
|
+
body.grandstand {
|
13
13
|
background-color:#fff;
|
14
14
|
background-image:-moz-linear-gradient(top, #fff, #eee);
|
15
15
|
background-image:-webkit-gradient(linear, left top, left bottom, from(#fff), to(#eee));
|
@@ -18,7 +18,7 @@ body.admin {
|
|
18
18
|
padding:0;
|
19
19
|
}
|
20
20
|
|
21
|
-
.
|
21
|
+
.grandstand {
|
22
22
|
/* HTML Tags (excluding form input elements) */
|
23
23
|
a {
|
24
24
|
cursor:pointer;
|
@@ -30,7 +30,7 @@ body.admin {
|
|
30
30
|
}
|
31
31
|
|
32
32
|
form {
|
33
|
-
label {
|
33
|
+
label, .label {
|
34
34
|
color:#666;
|
35
35
|
display:block;
|
36
36
|
font:bold 12px Arial;
|
@@ -39,6 +39,7 @@ body.admin {
|
|
39
39
|
|
40
40
|
.field {
|
41
41
|
margin:0;
|
42
|
+
overflow:hidden;
|
42
43
|
padding:10px 5px;
|
43
44
|
}
|
44
45
|
}
|
@@ -58,6 +59,7 @@ body.admin {
|
|
58
59
|
}
|
59
60
|
|
60
61
|
h2 {
|
62
|
+
display:block !important;
|
61
63
|
margin:0 0 5px 0;
|
62
64
|
font-size:14pt;
|
63
65
|
}
|
@@ -219,22 +221,27 @@ body.admin {
|
|
219
221
|
#grandstand > .button-hover;
|
220
222
|
}
|
221
223
|
|
222
|
-
.button:active {
|
224
|
+
.button:active, .button.active {
|
225
|
+
#grandstand > .button-hover;
|
223
226
|
#grandstand > .button-active;
|
224
227
|
}
|
225
228
|
|
226
|
-
.button.
|
229
|
+
.button.default {
|
227
230
|
#grandstand > .button-grey;
|
228
231
|
}
|
229
232
|
|
230
|
-
.button.
|
233
|
+
.button.default:hover {
|
231
234
|
#grandstand > .button-grey-hover;
|
232
235
|
}
|
233
236
|
|
234
|
-
.button.
|
237
|
+
.button.default:active {
|
235
238
|
#grandstand > .button-grey-active;
|
236
239
|
}
|
237
240
|
|
241
|
+
.center {
|
242
|
+
text-align:center;
|
243
|
+
}
|
244
|
+
|
238
245
|
.error {
|
239
246
|
margin-top:5px;
|
240
247
|
}
|
@@ -247,25 +254,6 @@ body.admin {
|
|
247
254
|
border:1px solid #f00;
|
248
255
|
}
|
249
256
|
|
250
|
-
.flash {
|
251
|
-
bottom:20px;
|
252
|
-
position:fixed;
|
253
|
-
text-align:center;
|
254
|
-
width:100%;
|
255
|
-
z-index:4;
|
256
|
-
}
|
257
|
-
|
258
|
-
.flash .inner {
|
259
|
-
background:rgba(0, 0, 0, 0.7);
|
260
|
-
color:#fff;
|
261
|
-
display:inline-block;
|
262
|
-
font-size:24pt;
|
263
|
-
margin:0 auto;
|
264
|
-
padding:10px 20px;
|
265
|
-
-moz-border-radius:70px;
|
266
|
-
-webkit-border-radius:70px;
|
267
|
-
}
|
268
|
-
|
269
257
|
.float-left {
|
270
258
|
float:left;
|
271
259
|
}
|
@@ -330,6 +318,11 @@ body.admin {
|
|
330
318
|
background-image:url(../images/icons/posts.png);
|
331
319
|
}
|
332
320
|
|
321
|
+
.icon.processing {
|
322
|
+
background-image:url(../images/icons/processing.gif);
|
323
|
+
background-position:left bottom;
|
324
|
+
}
|
325
|
+
|
333
326
|
.icon.upload {
|
334
327
|
background-image:url(../images/icons/upload.png);
|
335
328
|
}
|
@@ -344,12 +337,17 @@ body.admin {
|
|
344
337
|
}
|
345
338
|
|
346
339
|
.inset {
|
347
|
-
background-color:#
|
340
|
+
background-color:#f5f5f5;
|
348
341
|
padding:10px;
|
349
342
|
-moz-border-radius:5px;
|
350
343
|
-webkit-border-radius:5px;
|
351
344
|
-moz-box-shadow:inset #888 0 1px 2px;
|
352
345
|
-webkit-box-shadow:inset #888 0 1px 2px;
|
346
|
+
|
347
|
+
.button {
|
348
|
+
-moz-box-shadow:rgba(255, 255, 255, 0.6) 0 1px 0;
|
349
|
+
-webkit-box-shadow:rgba(255, 255, 255, 0.6) 0 1px 0;
|
350
|
+
}
|
353
351
|
}
|
354
352
|
|
355
353
|
.inset.icon {
|
@@ -358,6 +356,25 @@ body.admin {
|
|
358
356
|
padding-left:68px;
|
359
357
|
}
|
360
358
|
|
359
|
+
.notification {
|
360
|
+
bottom:20px;
|
361
|
+
position:fixed;
|
362
|
+
text-align:center;
|
363
|
+
width:100%;
|
364
|
+
z-index:4;
|
365
|
+
}
|
366
|
+
|
367
|
+
.notification .inner {
|
368
|
+
background:rgba(0, 0, 0, 0.7);
|
369
|
+
color:#fff;
|
370
|
+
display:inline-block;
|
371
|
+
font-size:24pt;
|
372
|
+
margin:0 auto;
|
373
|
+
padding:10px 20px;
|
374
|
+
-moz-border-radius:70px;
|
375
|
+
-webkit-border-radius:70px;
|
376
|
+
}
|
377
|
+
|
361
378
|
.progress-bar {
|
362
379
|
background:url(../images/background-progress-bar.png) repeat-x left center;
|
363
380
|
margin:0;
|