web-app-theme 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/LICENSE +21 -0
- data/README.md +22 -0
- data/Rakefile +25 -0
- data/VERSION +1 -0
- data/features/step_definitions/layout_steps.rb +55 -0
- data/features/step_definitions/themed_steps.rb +19 -0
- data/features/support/env.rb +82 -0
- data/features/theme_generator.feature +51 -0
- data/features/themed_generator.feature +52 -0
- data/images/avatar.png +0 -0
- data/index.html +474 -0
- data/javascripts/jquery-1.3.min.js +19 -0
- data/javascripts/jquery.localscroll.js +104 -0
- data/javascripts/jquery.scrollTo.js +150 -0
- data/lib/web_app_theme.rb +2 -0
- data/rails_generators/theme/USAGE +4 -0
- data/rails_generators/theme/templates/view_layout_administration.html.erb +48 -0
- data/rails_generators/theme/templates/view_layout_sign.html.erb +15 -0
- data/rails_generators/theme/templates/web_app_theme_override.css +1 -0
- data/rails_generators/theme/theme_generator.rb +39 -0
- data/rails_generators/themed/USAGE +4 -0
- data/rails_generators/themed/templates/view_edit.html.erb +20 -0
- data/rails_generators/themed/templates/view_form.html.erb +10 -0
- data/rails_generators/themed/templates/view_new.html.erb +19 -0
- data/rails_generators/themed/templates/view_show.html.erb +23 -0
- data/rails_generators/themed/templates/view_sidebar.html.erb +13 -0
- data/rails_generators/themed/templates/view_signin.html.erb +39 -0
- data/rails_generators/themed/templates/view_signup.html.erb +56 -0
- data/rails_generators/themed/templates/view_tables.html.erb +54 -0
- data/rails_generators/themed/templates/view_text.html.erb +18 -0
- data/rails_generators/themed/themed_generator.rb +95 -0
- data/stylesheets/base.css +336 -0
- data/stylesheets/themes/bec-green/style.css +290 -0
- data/stylesheets/themes/bec/style.css +301 -0
- data/stylesheets/themes/blue/style.css +280 -0
- data/stylesheets/themes/default/style.css +267 -0
- data/stylesheets/themes/djime-cerulean/style.css +298 -0
- data/stylesheets/themes/drastic-dark/style.css +373 -0
- data/stylesheets/themes/kathleene/style.css +272 -0
- data/stylesheets/themes/orange/style.css +263 -0
- data/stylesheets/themes/reidb-greenish/style.css +301 -0
- data/stylesheets/themes/warehouse/style.css +391 -0
- data/test/spec_helper.rb +5 -0
- data/test/themed_generator_spec.rb +115 -0
- metadata +101 -0
@@ -0,0 +1,23 @@
|
|
1
|
+
<div class="block">
|
2
|
+
<div class="secondary-navigation">
|
3
|
+
<ul>
|
4
|
+
<li class="first"><%%= link_to 'List', <%= controller_routing_path %>_path %></li>
|
5
|
+
<li><%%= link_to 'New', new_<%= singular_controller_routing_path %>_path %></li>
|
6
|
+
<li class="active"><%%= link_to 'Show', <%= singular_controller_routing_path %>_path %></li>
|
7
|
+
</ul>
|
8
|
+
<div class="clear"></div>
|
9
|
+
</div>
|
10
|
+
<div class="content">
|
11
|
+
<div class="inner">
|
12
|
+
<% columns.each do |column| %>
|
13
|
+
<p>
|
14
|
+
<b><%= column.name.capitalize %>:</b>
|
15
|
+
<%%= @<%= resource_name %>.<%= column.name %> %>
|
16
|
+
</p>
|
17
|
+
<%- end -%>
|
18
|
+
<%%= link_to 'Edit', edit_<%= singular_controller_routing_path %>_path(@<%= resource_name %>) %>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
|
23
|
+
<%% content_for :sidebar, render(:partial => 'sidebar') -%>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<div class="block">
|
2
|
+
<h3>Simple Block</h3>
|
3
|
+
<div class="content">
|
4
|
+
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
|
5
|
+
</div>
|
6
|
+
</div>
|
7
|
+
<div class="block">
|
8
|
+
<h3>Links</h3>
|
9
|
+
<ul class="navigation">
|
10
|
+
<li><a href="#">Link 1</a></li>
|
11
|
+
<li><a href="#">Link 2</a></li>
|
12
|
+
</ul>
|
13
|
+
</div>
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<h1><%= options[:app_name] %></h1>
|
2
|
+
<div class="block" id="block-login">
|
3
|
+
<h2>Login Box</h2>
|
4
|
+
<div class="content login">
|
5
|
+
<div class="flash">
|
6
|
+
<%% flash.each do |type, message| -%>
|
7
|
+
<div class="message <%%= type %>">
|
8
|
+
<p><%%= message %></p>
|
9
|
+
</div>
|
10
|
+
<%% end -%>
|
11
|
+
</div>
|
12
|
+
<%% form_tag({:action => :create}, :class => 'form login') do -%>
|
13
|
+
<div class="group">
|
14
|
+
<div class="left">
|
15
|
+
<label class="label right">Login</label>
|
16
|
+
</div>
|
17
|
+
<div class="right">
|
18
|
+
<%%= text_field_tag :login, @login, :class => 'text_field' %>
|
19
|
+
</div>
|
20
|
+
<div class="clear"></div>
|
21
|
+
</div>
|
22
|
+
<div class="group">
|
23
|
+
<div class="left">
|
24
|
+
<label class="label right">Password</label>
|
25
|
+
</div>
|
26
|
+
<div class="right">
|
27
|
+
<%%= password_field_tag :password, nil, :class => 'text_field' %>
|
28
|
+
</div>
|
29
|
+
<div class="clear"></div>
|
30
|
+
</div>
|
31
|
+
<div class="group navform">
|
32
|
+
<div class="right">
|
33
|
+
<input type="submit" class="button" value="Sign in" />
|
34
|
+
</div>
|
35
|
+
<div class="clear"></div>
|
36
|
+
</div>
|
37
|
+
<%% end -%>
|
38
|
+
</div>
|
39
|
+
</div>
|
@@ -0,0 +1,56 @@
|
|
1
|
+
<h1><%= options[:app_name] %></h1>
|
2
|
+
<div class="block" id="block-signup">
|
3
|
+
<h2>Sign up</h2>
|
4
|
+
<div class="content">
|
5
|
+
<div class="flash">
|
6
|
+
<%% flash.each do |type, message| -%>
|
7
|
+
<div class="message <%%= type %>">
|
8
|
+
<p><%%= message %></p>
|
9
|
+
</div>
|
10
|
+
<%% end -%>
|
11
|
+
</div>
|
12
|
+
<%% form_for :<%= resource_name %>, :url => <%= controller_routing_path %>_path, :html => { :class => 'form' } do |f| -%>
|
13
|
+
<div class="group">
|
14
|
+
<div class="left">
|
15
|
+
<label class="label">Login</label>
|
16
|
+
</div>
|
17
|
+
<div class="right">
|
18
|
+
<%%= f.text_field :login, :class => 'text_field' %>
|
19
|
+
</div>
|
20
|
+
<div class="clear"></div>
|
21
|
+
</div>
|
22
|
+
<div class="group">
|
23
|
+
<div class="left">
|
24
|
+
<label class="label">Email</label>
|
25
|
+
</div>
|
26
|
+
<div class="right">
|
27
|
+
<%%= f.text_field :email, :class => 'text_field' %>
|
28
|
+
</div>
|
29
|
+
<div class="clear"></div>
|
30
|
+
</div>
|
31
|
+
<div class="group">
|
32
|
+
<div class="left">
|
33
|
+
<label class="label">Password</label>
|
34
|
+
</div>
|
35
|
+
<div class="right">
|
36
|
+
<%%= f.password_field :password, :class => 'text_field' %>
|
37
|
+
</div>
|
38
|
+
<div class="clear"></div>
|
39
|
+
</div>
|
40
|
+
|
41
|
+
<div class="group">
|
42
|
+
<div class="left">
|
43
|
+
<label class="label">Password</label>
|
44
|
+
</div>
|
45
|
+
<div class="right">
|
46
|
+
<%%= f.password_field :password_confirmation, :class => 'text_field' %>
|
47
|
+
</div>
|
48
|
+
<div class="clear"></div>
|
49
|
+
</div>
|
50
|
+
|
51
|
+
<div class="group navform">
|
52
|
+
<input type="submit" class="button" value="Sign up" />
|
53
|
+
</div>
|
54
|
+
<%% end -%>
|
55
|
+
</div>
|
56
|
+
</div>
|
@@ -0,0 +1,54 @@
|
|
1
|
+
<div class="block">
|
2
|
+
<div class="secondary-navigation">
|
3
|
+
<ul>
|
4
|
+
<li class="first active"><%%= link_to 'List', <%= controller_routing_path %>_path %></li>
|
5
|
+
<li><%%= link_to 'New', new_<%= singular_controller_routing_path %>_path %></li>
|
6
|
+
</ul>
|
7
|
+
<div class="clear"></div>
|
8
|
+
</div>
|
9
|
+
<div class="content">
|
10
|
+
<h2 class="title">All <%= plural_model_name %></h2>
|
11
|
+
<div class="inner">
|
12
|
+
<table class="table">
|
13
|
+
<tr>
|
14
|
+
<th class="first">ID</th>
|
15
|
+
<% unless columns.empty? -%>
|
16
|
+
<th><%= columns.first.name.capitalize %></th>
|
17
|
+
<% end -%>
|
18
|
+
<th>Created at</th>
|
19
|
+
<th class="last"> </th>
|
20
|
+
</tr>
|
21
|
+
<%% @<%= plural_resource_name %>.each do |<%= resource_name %>| -%>
|
22
|
+
<tr class="<%%= cycle("odd", "even") %>">
|
23
|
+
<td>
|
24
|
+
<%%= <%= resource_name %>.id %>
|
25
|
+
</td>
|
26
|
+
<% unless columns.empty? -%>
|
27
|
+
<td>
|
28
|
+
<%%= link_to <%= resource_name %>.<%= columns.first.name %>, <%= singular_controller_routing_path %>_path(<%= resource_name %>) %>
|
29
|
+
</td>
|
30
|
+
<% end -%>
|
31
|
+
<td>
|
32
|
+
<%%= <%= resource_name %>.created_at %>
|
33
|
+
</td>
|
34
|
+
<td class="last">
|
35
|
+
<%%= link_to 'show', <%= singular_controller_routing_path %>_path(<%= resource_name %>) %> |
|
36
|
+
<%%= link_to 'edit', edit_<%= singular_controller_routing_path %>_path(<%= resource_name %>) %> |
|
37
|
+
<%%= link_to 'destroy', <%= singular_controller_routing_path %>_path(<%= resource_name %>), :method => :delete, :confirm => 'Are you sure?' %>
|
38
|
+
</td>
|
39
|
+
</tr>
|
40
|
+
<%% end -%>
|
41
|
+
</table>
|
42
|
+
<div class="actions-bar">
|
43
|
+
<div class="actions">
|
44
|
+
</div>
|
45
|
+
<% if options[:will_paginate] %>
|
46
|
+
<%%= will_paginate @<%= resource_name %> %>
|
47
|
+
<% end %>
|
48
|
+
<div class="clear"></div>
|
49
|
+
</div>
|
50
|
+
</div>
|
51
|
+
</div>
|
52
|
+
</div>
|
53
|
+
|
54
|
+
<%% content_for :sidebar, render(:partial => 'sidebar') -%>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<div class="block" id="block-text">
|
2
|
+
<div class="content">
|
3
|
+
<h2 class="title"><%= resource_name.capitalize %></h2>
|
4
|
+
<div class="inner">
|
5
|
+
<p class="first">
|
6
|
+
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. <span class="hightlight">Excepteur sint occaecat cupidatat non proident</span>, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
7
|
+
</p>
|
8
|
+
<p> <span class="small">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore</span></p>
|
9
|
+
<p> <span class="gray">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore</span></p>
|
10
|
+
<hr />
|
11
|
+
<p>
|
12
|
+
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. <span class="hightlight">Excepteur sint occaecat cupidatat non proident</span>, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
13
|
+
</p>
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<%% content_for :sidebar, render(:partial => 'sidebar') -%>
|
@@ -0,0 +1,95 @@
|
|
1
|
+
class ThemedGenerator < Rails::Generator::NamedBase
|
2
|
+
|
3
|
+
default_options :app_name => 'Web App',
|
4
|
+
:themed_type => :crud,
|
5
|
+
:layout => false,
|
6
|
+
:will_paginate => false
|
7
|
+
|
8
|
+
attr_reader :controller_routing_path,
|
9
|
+
:singular_controller_routing_path,
|
10
|
+
:columns,
|
11
|
+
:model_name,
|
12
|
+
:plural_model_name,
|
13
|
+
:resource_name,
|
14
|
+
:plural_resource_name
|
15
|
+
|
16
|
+
def initialize(runtime_args, runtime_options = {})
|
17
|
+
super
|
18
|
+
@controller_path = runtime_args.shift
|
19
|
+
@model_name = runtime_args.shift
|
20
|
+
end
|
21
|
+
|
22
|
+
def manifest
|
23
|
+
@controller_routing_path = @table_name
|
24
|
+
@singular_controller_routing_path = @table_name.singularize
|
25
|
+
base_name, @controller_class_path, @controller_file_path, @controller_class_nesting, @controller_class_nesting_depth = extract_modules(@controller_path)
|
26
|
+
@model_name = base_name.singularize unless @model_name
|
27
|
+
|
28
|
+
# Post
|
29
|
+
@model_name = @model_name.camelize
|
30
|
+
# Posts
|
31
|
+
@plural_model_name = @model_name.pluralize
|
32
|
+
# post
|
33
|
+
@resource_name = @model_name.underscore
|
34
|
+
# posts
|
35
|
+
@plural_resource_name = @resource_name.pluralize
|
36
|
+
|
37
|
+
manifest_method = "manifest_for_#{options[:themed_type]}"
|
38
|
+
record do |m|
|
39
|
+
send(manifest_method, m) if respond_to?(manifest_method)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
protected
|
44
|
+
|
45
|
+
def manifest_for_crud(m)
|
46
|
+
@columns = get_columns
|
47
|
+
m.directory(File.join('app/views', @controller_file_path))
|
48
|
+
m.template('view_tables.html.erb', File.join("app/views", @controller_file_path, "index.html.erb"))
|
49
|
+
m.template('view_new.html.erb', File.join("app/views", @controller_file_path, "new.html.erb"))
|
50
|
+
m.template('view_edit.html.erb', File.join("app/views", @controller_file_path, "edit.html.erb"))
|
51
|
+
m.template('view_form.html.erb', File.join("app/views", @controller_file_path, "_form.html.erb"))
|
52
|
+
m.template('view_show.html.erb', File.join("app/views", @controller_file_path, "show.html.erb"))
|
53
|
+
m.template('view_sidebar.html.erb', File.join("app/views", @controller_file_path, "_sidebar.html.erb"))
|
54
|
+
|
55
|
+
if options[:layout]
|
56
|
+
m.gsub_file(File.join("app/views/layouts", "#{options[:layout]}.html.erb"), /\<div\s+id=\"main-navigation\">.*\<\/ul\>/mi) do |match|
|
57
|
+
match.gsub!(/\<\/ul\>/, "")
|
58
|
+
%|#{match} <li class="<%= controller.controller_path == '#{@controller_file_path}' ? 'active' : '' %>"><a href="<%= #{controller_routing_path}_path %>">#{plural_model_name}</a></li></ul>|
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def manifest_for_restful_authentication(m)
|
64
|
+
signup_controller_path = @controller_file_path
|
65
|
+
signin_controller_path = @model_name.downcase # just here I use the second argument as a controller path
|
66
|
+
@resource_name = @controller_path.singularize
|
67
|
+
m.template('view_signup.html.erb', File.join("app/views", signup_controller_path, "new.html.erb"))
|
68
|
+
m.template('view_signin.html.erb', File.join("app/views", signin_controller_path, "new.html.erb"))
|
69
|
+
end
|
70
|
+
|
71
|
+
def manifest_for_text(m)
|
72
|
+
m.directory(File.join('app/views', @controller_file_path))
|
73
|
+
m.template('view_text.html.erb', File.join("app/views", @controller_file_path, "show.html.erb"))
|
74
|
+
m.template('view_sidebar.html.erb', File.join("app/views", @controller_file_path, "_sidebar.html.erb"))
|
75
|
+
end
|
76
|
+
|
77
|
+
def get_columns
|
78
|
+
excluded_column_names = %w[id created_at updated_at]
|
79
|
+
Kernel.const_get(@model_name).columns.reject{|c| excluded_column_names.include?(c.name) }.collect{|c| Rails::Generator::GeneratedAttribute.new(c.name, c.type)}
|
80
|
+
end
|
81
|
+
|
82
|
+
def banner
|
83
|
+
"Usage: #{$0} themed ControllerPath [ModelName] [options]"
|
84
|
+
end
|
85
|
+
|
86
|
+
def add_options!(opt)
|
87
|
+
opt.separator ''
|
88
|
+
opt.separator 'Options:'
|
89
|
+
opt.on("--app_name=app_name", String, "") { |v| options[:app_name] = v }
|
90
|
+
opt.on("--type=themed_type", String, "") { |v| options[:themed_type] = v }
|
91
|
+
opt.on("--layout=layout", String, "Add menu link") { |v| options[:layout] = v }
|
92
|
+
opt.on("--with_will_paginate", "Add pagination using will_paginate") { |v| options[:will_paginate] = true }
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
@@ -0,0 +1,336 @@
|
|
1
|
+
* {margin:0;padding:0}
|
2
|
+
.clear { clear: both; height: 0; }
|
3
|
+
|
4
|
+
h1 { margin: 15px 0; font-size: 22px; font-weight: normal; }
|
5
|
+
h2 { font-size: 22px; margin: 15px 0; font-weight: normal;}
|
6
|
+
h3 { font-size: 18px; margin: 10px 0; font-weight: normal;}
|
7
|
+
h4 { font-size: 16px; margin: 10px 0; font-weight: normal;}
|
8
|
+
hr {height: 1px; border: 0; }
|
9
|
+
p { margin: 15px 0;}
|
10
|
+
a img { border: none; }
|
11
|
+
|
12
|
+
body {
|
13
|
+
font-size: 12px;
|
14
|
+
font-family: sans-serif;
|
15
|
+
}
|
16
|
+
|
17
|
+
#container {
|
18
|
+
min-width: 960px;
|
19
|
+
}
|
20
|
+
|
21
|
+
#header, #wrapper {
|
22
|
+
padding: 0 20px;
|
23
|
+
}
|
24
|
+
|
25
|
+
#header {
|
26
|
+
position: relative;
|
27
|
+
padding-top: 1px;
|
28
|
+
}
|
29
|
+
|
30
|
+
#header h1 {
|
31
|
+
margin: 0;
|
32
|
+
padding: 10px 0;
|
33
|
+
font-size: 30px;
|
34
|
+
}
|
35
|
+
|
36
|
+
#header h1 a:link, #header h1 a:active, #header h1 a:hover, #header h1 a:visited {
|
37
|
+
text-decoration: none;
|
38
|
+
}
|
39
|
+
|
40
|
+
#main {
|
41
|
+
width: 70%;
|
42
|
+
float: left;
|
43
|
+
}
|
44
|
+
|
45
|
+
.actions-bar {
|
46
|
+
padding: 10px 1px;
|
47
|
+
}
|
48
|
+
|
49
|
+
.actions-bar .actions {
|
50
|
+
float: left;
|
51
|
+
}
|
52
|
+
|
53
|
+
|
54
|
+
.actions-bar .pagination {
|
55
|
+
float: right;
|
56
|
+
padding: 1px 0;
|
57
|
+
}
|
58
|
+
|
59
|
+
#sidebar {
|
60
|
+
width: 25%;
|
61
|
+
float: right;
|
62
|
+
}
|
63
|
+
|
64
|
+
#sidebar h3 {
|
65
|
+
padding: 10px 15px;
|
66
|
+
margin: 0;
|
67
|
+
font-size: 13px;
|
68
|
+
}
|
69
|
+
|
70
|
+
#sidebar .block {
|
71
|
+
margin-bottom: 20px;
|
72
|
+
padding-bottom: 10px;
|
73
|
+
}
|
74
|
+
|
75
|
+
#sidebar .block .content {
|
76
|
+
padding: 0 15px;
|
77
|
+
}
|
78
|
+
|
79
|
+
#sidebar ul.navigation li a:link, #sidebar ul.navigation li a:visited {
|
80
|
+
display: block;
|
81
|
+
padding: 10px 15px;
|
82
|
+
}
|
83
|
+
|
84
|
+
#sidebar .block .sidebar-block, #sidebar .notice {
|
85
|
+
padding:10px;
|
86
|
+
}
|
87
|
+
|
88
|
+
#wrapper {
|
89
|
+
padding-top: 20px;
|
90
|
+
}
|
91
|
+
|
92
|
+
#main .block {
|
93
|
+
margin-bottom: 20px;
|
94
|
+
padding-top: 1px;
|
95
|
+
}
|
96
|
+
|
97
|
+
#main .block .content .inner {
|
98
|
+
padding: 0 15px 15px;
|
99
|
+
}
|
100
|
+
|
101
|
+
#main .main p.first {
|
102
|
+
margin-top: 0;
|
103
|
+
}
|
104
|
+
|
105
|
+
#user-navigation {
|
106
|
+
position: absolute;
|
107
|
+
top: 0px;
|
108
|
+
right: 20px;
|
109
|
+
}
|
110
|
+
|
111
|
+
#main-navigation {
|
112
|
+
width: 100%;
|
113
|
+
}
|
114
|
+
|
115
|
+
#user-navigation ul, #main-navigation ul, .secondary-navigation ul, #sidebar ul.navigation {
|
116
|
+
margin: 0;
|
117
|
+
padding: 0;
|
118
|
+
list-style-type: none;
|
119
|
+
}
|
120
|
+
|
121
|
+
#user-navigation ul li, #main-navigation ul li, .secondary-navigation ul li {
|
122
|
+
float: left;
|
123
|
+
}
|
124
|
+
|
125
|
+
#main-navigation ul li {
|
126
|
+
margin-right: 5px;
|
127
|
+
}
|
128
|
+
|
129
|
+
#user-navigation ul li {
|
130
|
+
padding: 5px 10px;
|
131
|
+
}
|
132
|
+
|
133
|
+
#main-navigation ul li a:link, #main-navigation ul li a:visited, #main-navigation ul li a:hover, #main-navigation ul li a:active,
|
134
|
+
.secondary-navigation ul li a:link, .secondary-navigation ul li a:visited, .secondary-navigation ul li a:hover, .secondary-navigation ul li a:active,
|
135
|
+
#user-navigation ul li a:link, #user-navigation ul li a:visited, #user-navigation ul li a:hover, #user-navigation ul li a:active {
|
136
|
+
text-decoration: none;
|
137
|
+
}
|
138
|
+
|
139
|
+
#main-navigation ul li a {
|
140
|
+
font-size: 15px;
|
141
|
+
display: block;
|
142
|
+
padding: 8px 15px;
|
143
|
+
}
|
144
|
+
|
145
|
+
.secondary-navigation {
|
146
|
+
font-size: 13px;
|
147
|
+
border-bottom-width: 10px;
|
148
|
+
border-bottom-style: solid;
|
149
|
+
}
|
150
|
+
|
151
|
+
.secondary-navigation ul li a {
|
152
|
+
display: block;
|
153
|
+
padding: 10px 15px;
|
154
|
+
}
|
155
|
+
|
156
|
+
#footer {
|
157
|
+
padding-bottom: 20px;
|
158
|
+
}
|
159
|
+
|
160
|
+
/* pagination */
|
161
|
+
|
162
|
+
.pagination a, .pagination span {
|
163
|
+
padding: 2px 5px;
|
164
|
+
margin-right: 5px;
|
165
|
+
display: block;
|
166
|
+
float: left;
|
167
|
+
border-style: solid;
|
168
|
+
border-width: 1px;
|
169
|
+
}
|
170
|
+
|
171
|
+
.pagination span.current {
|
172
|
+
font-weight: bold;
|
173
|
+
}
|
174
|
+
|
175
|
+
.pagination a {
|
176
|
+
text-decoration: none;
|
177
|
+
}
|
178
|
+
|
179
|
+
/* tables */
|
180
|
+
.table {
|
181
|
+
width: 100%;
|
182
|
+
border-collapse: collapse;
|
183
|
+
margin-bottom: 15px;
|
184
|
+
}
|
185
|
+
|
186
|
+
.table th {
|
187
|
+
padding: 10px;
|
188
|
+
font-weight: bold;
|
189
|
+
text-align: left;
|
190
|
+
}
|
191
|
+
|
192
|
+
.table th.first {
|
193
|
+
width: 30px;
|
194
|
+
}
|
195
|
+
|
196
|
+
.table th.last {
|
197
|
+
width: 200px;
|
198
|
+
}
|
199
|
+
|
200
|
+
.table .checkbox {
|
201
|
+
margin-left: 10px;
|
202
|
+
}
|
203
|
+
|
204
|
+
.table td {
|
205
|
+
padding: 10px;
|
206
|
+
}
|
207
|
+
|
208
|
+
.table td.last {
|
209
|
+
text-align: right;
|
210
|
+
}
|
211
|
+
|
212
|
+
/* forms */
|
213
|
+
|
214
|
+
input.checkbox {
|
215
|
+
margin: 0;
|
216
|
+
padding: 0;
|
217
|
+
}
|
218
|
+
|
219
|
+
.form .group {
|
220
|
+
margin-bottom: 15px;
|
221
|
+
}
|
222
|
+
|
223
|
+
.form div.left {
|
224
|
+
width: 20%;
|
225
|
+
float: left;
|
226
|
+
}
|
227
|
+
|
228
|
+
.form div.right {
|
229
|
+
width: 75%;
|
230
|
+
float: right;
|
231
|
+
}
|
232
|
+
|
233
|
+
.form .columns .column {
|
234
|
+
width: 48%;
|
235
|
+
}
|
236
|
+
|
237
|
+
.form .columns .left {
|
238
|
+
float: left;
|
239
|
+
}
|
240
|
+
|
241
|
+
.form .columns .right {
|
242
|
+
float: right;
|
243
|
+
}
|
244
|
+
|
245
|
+
.form label.label, .form input.text_field, .form textarea.text_area {
|
246
|
+
font-size: 1.2em;
|
247
|
+
padding: 1px 0;
|
248
|
+
margin: 0;
|
249
|
+
}
|
250
|
+
|
251
|
+
.form label.right {
|
252
|
+
text-align: right;
|
253
|
+
}
|
254
|
+
|
255
|
+
.form input.checkbox, .form input.radio {
|
256
|
+
margin-right: 5px;
|
257
|
+
}
|
258
|
+
|
259
|
+
.form label.checkbox, .form label.radio {
|
260
|
+
line-height: 1.5em;
|
261
|
+
}
|
262
|
+
|
263
|
+
.form label.label {
|
264
|
+
display: block;
|
265
|
+
padding-bottom: 2px;
|
266
|
+
font-weight: bold;
|
267
|
+
}
|
268
|
+
|
269
|
+
.form div.fieldWithErrors label.label {
|
270
|
+
display: inline;
|
271
|
+
}
|
272
|
+
|
273
|
+
.form .fieldWithErrors .error {
|
274
|
+
color: red;
|
275
|
+
}
|
276
|
+
|
277
|
+
.form input.text_field, .form textarea.text_area {
|
278
|
+
width: 100%;
|
279
|
+
border-width: 1px;
|
280
|
+
border-style: solid;
|
281
|
+
}
|
282
|
+
|
283
|
+
/* lists */
|
284
|
+
|
285
|
+
ul.list {
|
286
|
+
margin: 0;
|
287
|
+
padding: 0;
|
288
|
+
list-style-type: none;
|
289
|
+
}
|
290
|
+
|
291
|
+
ul.list li {
|
292
|
+
clear: left;
|
293
|
+
padding-bottom: 5px;
|
294
|
+
}
|
295
|
+
|
296
|
+
ul.list li .left {
|
297
|
+
float: left;
|
298
|
+
}
|
299
|
+
|
300
|
+
ul.list li .left .avatar {
|
301
|
+
width: 50px;
|
302
|
+
height: 50px;
|
303
|
+
}
|
304
|
+
|
305
|
+
ul.list li .item {
|
306
|
+
margin-left: 80px;
|
307
|
+
}
|
308
|
+
|
309
|
+
ul.list li .item .avatar {
|
310
|
+
float: left;
|
311
|
+
margin: 0 5px 5px 0;
|
312
|
+
width: 30px;
|
313
|
+
height: 30px;
|
314
|
+
}
|
315
|
+
|
316
|
+
/* box */
|
317
|
+
|
318
|
+
#box {
|
319
|
+
width: 500px;
|
320
|
+
margin: 50px auto;
|
321
|
+
}
|
322
|
+
|
323
|
+
#box .block {
|
324
|
+
margin-bottom: 20px;
|
325
|
+
}
|
326
|
+
|
327
|
+
#box .block h2 {
|
328
|
+
padding: 10px 15px;
|
329
|
+
margin: 0;
|
330
|
+
}
|
331
|
+
|
332
|
+
#box .block .content {
|
333
|
+
padding: 10px 20px;
|
334
|
+
}
|
335
|
+
|
336
|
+
|