saulolso-activeadmin 0.2.2

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.
Files changed (255) hide show
  1. data/.document +5 -0
  2. data/.gitignore +32 -0
  3. data/.travis.yml +4 -0
  4. data/CHANGELOG.rdoc +76 -0
  5. data/Gemfile +26 -0
  6. data/LICENSE +25 -0
  7. data/README.rdoc +450 -0
  8. data/Rakefile +100 -0
  9. data/activeadmin.gemspec +28 -0
  10. data/cucumber.yml +2 -0
  11. data/features/comments/commenting.feature +99 -0
  12. data/features/comments/viewing_index.feature +19 -0
  13. data/features/dashboard.feature +26 -0
  14. data/features/edit_page.feature +77 -0
  15. data/features/first_boot.feature +16 -0
  16. data/features/global_navigation.feature +30 -0
  17. data/features/index/format_as_csv.feature +45 -0
  18. data/features/index/formats.feature +10 -0
  19. data/features/index/index_as_block.feature +15 -0
  20. data/features/index/index_as_blog.feature +50 -0
  21. data/features/index/index_as_grid.feature +45 -0
  22. data/features/index/index_as_table.feature +79 -0
  23. data/features/index/index_scopes.feature +52 -0
  24. data/features/index/pagination.feature +23 -0
  25. data/features/menu.feature +26 -0
  26. data/features/new_page.feature +75 -0
  27. data/features/registering_assets.feature +35 -0
  28. data/features/registering_resources.feature +33 -0
  29. data/features/show/default_content.feature +43 -0
  30. data/features/show/page_title.feature +33 -0
  31. data/features/sidebar_sections.feature +127 -0
  32. data/features/specifying_actions.feature +60 -0
  33. data/features/step_definitions/action_item_steps.rb +7 -0
  34. data/features/step_definitions/additional_web_steps.rb +67 -0
  35. data/features/step_definitions/asset_steps.rb +7 -0
  36. data/features/step_definitions/attribute_steps.rb +15 -0
  37. data/features/step_definitions/comment_steps.rb +8 -0
  38. data/features/step_definitions/configuration_steps.rb +31 -0
  39. data/features/step_definitions/dashboard_steps.rb +11 -0
  40. data/features/step_definitions/factory_steps.rb +28 -0
  41. data/features/step_definitions/flash_steps.rb +3 -0
  42. data/features/step_definitions/format_steps.rb +34 -0
  43. data/features/step_definitions/index_scope_steps.rb +20 -0
  44. data/features/step_definitions/menu_steps.rb +7 -0
  45. data/features/step_definitions/pagination_steps.rb +8 -0
  46. data/features/step_definitions/sidebar_steps.rb +11 -0
  47. data/features/step_definitions/tab_steps.rb +3 -0
  48. data/features/step_definitions/user_steps.rb +20 -0
  49. data/features/step_definitions/web_steps.rb +219 -0
  50. data/features/sti_resource.feature +49 -0
  51. data/features/support/env.rb +92 -0
  52. data/features/support/paths.rb +48 -0
  53. data/features/users/logging_in.feature +34 -0
  54. data/features/users/logging_out.feature +13 -0
  55. data/lib/active_admin/abstract_view_factory.rb +95 -0
  56. data/lib/active_admin/action_items.rb +37 -0
  57. data/lib/active_admin/application.rb +204 -0
  58. data/lib/active_admin/arbre/attributes.rb +20 -0
  59. data/lib/active_admin/arbre/class_list.rb +28 -0
  60. data/lib/active_admin/arbre/collection.rb +27 -0
  61. data/lib/active_admin/arbre/context.rb +8 -0
  62. data/lib/active_admin/arbre/core_extensions.rb +5 -0
  63. data/lib/active_admin/arbre/document.rb +42 -0
  64. data/lib/active_admin/arbre/element.rb +151 -0
  65. data/lib/active_admin/arbre/html.rb +84 -0
  66. data/lib/active_admin/arbre/html5_elements.rb +47 -0
  67. data/lib/active_admin/arbre/tag.rb +137 -0
  68. data/lib/active_admin/arbre/text_node.rb +35 -0
  69. data/lib/active_admin/arbre.rb +23 -0
  70. data/lib/active_admin/asset_registration.rb +34 -0
  71. data/lib/active_admin/callbacks.rb +87 -0
  72. data/lib/active_admin/comments/comment.rb +21 -0
  73. data/lib/active_admin/comments/configuration.rb +18 -0
  74. data/lib/active_admin/comments/namespace_helper.rb +14 -0
  75. data/lib/active_admin/comments/resource_helper.rb +17 -0
  76. data/lib/active_admin/comments/show_page_helper.rb +23 -0
  77. data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
  78. data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
  79. data/lib/active_admin/comments/views.rb +3 -0
  80. data/lib/active_admin/comments.rb +88 -0
  81. data/lib/active_admin/component.rb +22 -0
  82. data/lib/active_admin/controller_action.rb +12 -0
  83. data/lib/active_admin/csv_builder.rb +45 -0
  84. data/lib/active_admin/dashboards/dashboard_controller.rb +47 -0
  85. data/lib/active_admin/dashboards/section.rb +34 -0
  86. data/lib/active_admin/dashboards.rb +48 -0
  87. data/lib/active_admin/devise.rb +43 -0
  88. data/lib/active_admin/dsl.rb +215 -0
  89. data/lib/active_admin/event.rb +31 -0
  90. data/lib/active_admin/form_builder.rb +109 -0
  91. data/lib/active_admin/helpers/optional_display.rb +34 -0
  92. data/lib/active_admin/iconic/icons.rb +142 -0
  93. data/lib/active_admin/iconic.rb +51 -0
  94. data/lib/active_admin/locales/da.yml +26 -0
  95. data/lib/active_admin/locales/en.yml +34 -0
  96. data/lib/active_admin/locales/es.yml +34 -0
  97. data/lib/active_admin/locales/pt.yml +34 -0
  98. data/lib/active_admin/menu.rb +42 -0
  99. data/lib/active_admin/menu_item.rb +73 -0
  100. data/lib/active_admin/namespace.rb +198 -0
  101. data/lib/active_admin/page_config.rb +15 -0
  102. data/lib/active_admin/renderer.rb +87 -0
  103. data/lib/active_admin/resource/belongs_to.rb +31 -0
  104. data/lib/active_admin/resource.rb +229 -0
  105. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  106. data/lib/active_admin/resource_controller/actions.rb +79 -0
  107. data/lib/active_admin/resource_controller/callbacks.rb +47 -0
  108. data/lib/active_admin/resource_controller/collection.rb +144 -0
  109. data/lib/active_admin/resource_controller/filters.rb +58 -0
  110. data/lib/active_admin/resource_controller/form.rb +42 -0
  111. data/lib/active_admin/resource_controller/menu.rb +29 -0
  112. data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
  113. data/lib/active_admin/resource_controller/scoping.rb +36 -0
  114. data/lib/active_admin/resource_controller/sidebars.rb +38 -0
  115. data/lib/active_admin/resource_controller.rb +119 -0
  116. data/lib/active_admin/router.rb +85 -0
  117. data/lib/active_admin/scope.rb +17 -0
  118. data/lib/active_admin/sidebar.rb +43 -0
  119. data/lib/active_admin/stylesheets/active_admin/_comments.scss +40 -0
  120. data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +13 -0
  121. data/lib/active_admin/stylesheets/active_admin/_forms.scss +168 -0
  122. data/lib/active_admin/stylesheets/active_admin/_header.scss +108 -0
  123. data/lib/active_admin/stylesheets/active_admin/_typography.scss +100 -0
  124. data/lib/active_admin/stylesheets/active_admin/mixins/_all.scss +8 -0
  125. data/lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss +27 -0
  126. data/lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss +21 -0
  127. data/lib/active_admin/stylesheets/active_admin/mixins/_icons.scss +20 -0
  128. data/lib/active_admin/stylesheets/active_admin/mixins/_reset.scss +165 -0
  129. data/lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss +43 -0
  130. data/lib/active_admin/stylesheets/active_admin/mixins/_sections.scss +27 -0
  131. data/lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss +21 -0
  132. data/lib/active_admin/stylesheets/active_admin/mixins/_variables.scss +12 -0
  133. data/lib/active_admin/stylesheets/active_admin.scss +429 -0
  134. data/lib/active_admin/version.rb +3 -0
  135. data/lib/active_admin/view_factory.rb +21 -0
  136. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  137. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  138. data/lib/active_admin/view_helpers/auto_link_helper.rb +42 -0
  139. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
  140. data/lib/active_admin/view_helpers/display_helper.rb +38 -0
  141. data/lib/active_admin/view_helpers/filter_form_helper.rb +185 -0
  142. data/lib/active_admin/view_helpers/form_helper.rb +12 -0
  143. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  144. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
  145. data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
  146. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  147. data/lib/active_admin/view_helpers/table_helper.rb +12 -0
  148. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  149. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  150. data/lib/active_admin/view_helpers.rb +23 -0
  151. data/lib/active_admin/views/action_items.rb +17 -0
  152. data/lib/active_admin/views/components/attributes_table.rb +66 -0
  153. data/lib/active_admin/views/components/columns.rb +47 -0
  154. data/lib/active_admin/views/components/paginated_collection.rb +92 -0
  155. data/lib/active_admin/views/components/panel.rb +26 -0
  156. data/lib/active_admin/views/components/scopes.rb +70 -0
  157. data/lib/active_admin/views/components/sidebar_section.rb +30 -0
  158. data/lib/active_admin/views/components/status_tag.rb +55 -0
  159. data/lib/active_admin/views/components/table_for.rb +193 -0
  160. data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
  161. data/lib/active_admin/views/header_renderer.rb +37 -0
  162. data/lib/active_admin/views/index_as_block.rb +24 -0
  163. data/lib/active_admin/views/index_as_blog.rb +89 -0
  164. data/lib/active_admin/views/index_as_grid.rb +49 -0
  165. data/lib/active_admin/views/index_as_table.rb +75 -0
  166. data/lib/active_admin/views/pages/base.rb +144 -0
  167. data/lib/active_admin/views/pages/dashboard.rb +59 -0
  168. data/lib/active_admin/views/pages/edit.rb +27 -0
  169. data/lib/active_admin/views/pages/index.rb +66 -0
  170. data/lib/active_admin/views/pages/new.rb +27 -0
  171. data/lib/active_admin/views/pages/show.rb +56 -0
  172. data/lib/active_admin/views/tabs_renderer.rb +58 -0
  173. data/lib/active_admin/views/templates/active_admin/dashboard/index.html.arb +1 -0
  174. data/lib/active_admin/views/templates/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  175. data/lib/active_admin/views/templates/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  176. data/lib/active_admin/views/templates/active_admin/devise/passwords/edit.html.erb +16 -0
  177. data/lib/active_admin/views/templates/active_admin/devise/passwords/new.html.erb +14 -0
  178. data/lib/active_admin/views/templates/active_admin/devise/sessions/new.html.erb +18 -0
  179. data/lib/active_admin/views/templates/active_admin/devise/shared/_links.erb +20 -0
  180. data/lib/active_admin/views/templates/active_admin/devise/unlocks/new.html.erb +12 -0
  181. data/lib/active_admin/views/templates/active_admin/resource/edit.html.arb +1 -0
  182. data/lib/active_admin/views/templates/active_admin/resource/index.csv.erb +20 -0
  183. data/lib/active_admin/views/templates/active_admin/resource/index.html.arb +1 -0
  184. data/lib/active_admin/views/templates/active_admin/resource/new.html.arb +1 -0
  185. data/lib/active_admin/views/templates/active_admin/resource/show.html.arb +1 -0
  186. data/lib/active_admin/views/templates/layouts/active_admin.html.erb +39 -0
  187. data/lib/active_admin/views/templates/layouts/active_admin_logged_out.html.erb +31 -0
  188. data/lib/active_admin/views.rb +8 -0
  189. data/lib/active_admin.rb +71 -0
  190. data/lib/activeadmin.rb +1 -0
  191. data/lib/generators/active_admin/devise/devise_generator.rb +49 -0
  192. data/lib/generators/active_admin/install/install_generator.rb +46 -0
  193. data/lib/generators/active_admin/install/templates/active_admin.js +51 -0
  194. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +78 -0
  195. data/lib/generators/active_admin/install/templates/active_admin_vendor.js +382 -0
  196. data/lib/generators/active_admin/install/templates/dashboards.rb +38 -0
  197. data/lib/generators/active_admin/install/templates/images/admin_notes_icon.png +0 -0
  198. data/lib/generators/active_admin/install/templates/images/loading.gif +0 -0
  199. data/lib/generators/active_admin/install/templates/images/nested_menu_arrow.gif +0 -0
  200. data/lib/generators/active_admin/install/templates/images/nested_menu_arrow_dark.gif +0 -0
  201. data/lib/generators/active_admin/install/templates/images/orderable.png +0 -0
  202. data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
  203. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
  204. data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
  205. data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
  206. data/spec/integration/belongs_to_spec.rb +42 -0
  207. data/spec/spec_helper.rb +156 -0
  208. data/spec/support/integration_example_group.rb +33 -0
  209. data/spec/support/rails_template.rb +32 -0
  210. data/spec/support/rails_template_with_data.rb +32 -0
  211. data/spec/support/templates/cucumber.rb +24 -0
  212. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  213. data/spec/unit/action_builder_spec.rb +88 -0
  214. data/spec/unit/action_items_spec.rb +27 -0
  215. data/spec/unit/application_spec.rb +67 -0
  216. data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
  217. data/spec/unit/arbre/html/element_spec.rb +224 -0
  218. data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
  219. data/spec/unit/arbre/html/tag_spec.rb +63 -0
  220. data/spec/unit/arbre/html_spec.rb +210 -0
  221. data/spec/unit/asset_registration_spec.rb +37 -0
  222. data/spec/unit/auto_link_spec.rb +39 -0
  223. data/spec/unit/belongs_to_spec.rb +45 -0
  224. data/spec/unit/breadcrumbs_spec.rb +110 -0
  225. data/spec/unit/comments_spec.rb +57 -0
  226. data/spec/unit/component_spec.rb +18 -0
  227. data/spec/unit/components/attributes_table_spec.rb +100 -0
  228. data/spec/unit/components/columns_spec.rb +75 -0
  229. data/spec/unit/components/panel_spec.rb +31 -0
  230. data/spec/unit/components/sidebar_section_spec.rb +37 -0
  231. data/spec/unit/components/status_tag_spec.rb +81 -0
  232. data/spec/unit/components/table_for_spec.rb +130 -0
  233. data/spec/unit/controller_filters_spec.rb +27 -0
  234. data/spec/unit/csv_builder_spec.rb +83 -0
  235. data/spec/unit/dashboard_controller_spec.rb +26 -0
  236. data/spec/unit/dashboard_section_spec.rb +56 -0
  237. data/spec/unit/dashboards_spec.rb +59 -0
  238. data/spec/unit/display_name_spec.rb +29 -0
  239. data/spec/unit/event_spec.rb +41 -0
  240. data/spec/unit/filter_form_builder_spec.rb +179 -0
  241. data/spec/unit/form_builder_spec.rb +238 -0
  242. data/spec/unit/menu_item_spec.rb +143 -0
  243. data/spec/unit/menu_spec.rb +53 -0
  244. data/spec/unit/namespace_spec.rb +203 -0
  245. data/spec/unit/pretty_format_spec.rb +35 -0
  246. data/spec/unit/registration_spec.rb +76 -0
  247. data/spec/unit/renderer_spec.rb +108 -0
  248. data/spec/unit/resource_controller/collection_spec.rb +34 -0
  249. data/spec/unit/resource_controller_spec.rb +147 -0
  250. data/spec/unit/resource_spec.rb +290 -0
  251. data/spec/unit/routing_spec.rb +88 -0
  252. data/spec/unit/scope_spec.rb +31 -0
  253. data/spec/unit/tabs_renderer_spec.rb +85 -0
  254. data/spec/unit/view_factory_spec.rb +16 -0
  255. metadata +482 -0
@@ -0,0 +1,85 @@
1
+ module ActiveAdmin
2
+ class Router
3
+
4
+ def initialize(application)
5
+ @application = application
6
+ end
7
+
8
+ # Creates all the necessary routes for the ActiveAdmin configurations
9
+ #
10
+ # Use this within the routes.rb file:
11
+ #
12
+ # Application.routes.draw do |map|
13
+ # ActiveAdmin.routes(self)
14
+ # end
15
+ #
16
+ def apply(router)
17
+ # Define any necessary dashboard routes
18
+ router.instance_exec(@application.namespaces.values) do |namespaces|
19
+ namespaces.each do |namespace|
20
+ if namespace.root?
21
+ match '/' => 'dashboard#index', :as => 'dashboard'
22
+ else
23
+ name = namespace.name
24
+ match name.to_s => "#{name}/dashboard#index", :as => "#{name.to_s}_dashboard"
25
+ end
26
+ end
27
+ end
28
+
29
+ # Now define the routes for each resource
30
+ router.instance_exec(@application.namespaces) do |namespaces|
31
+ resources = namespaces.values.collect{|n| n.resources.values }.flatten
32
+ resources.each do |config|
33
+
34
+ # Define the block the will get eval'd within the namespace
35
+ route_definition_block = Proc.new do
36
+ resources config.underscored_resource_name.pluralize do
37
+
38
+ # Define any member actions
39
+ member do
40
+ config.member_actions.each do |action|
41
+ # eg: get :comment
42
+ send(action.http_verb, action.name)
43
+ end
44
+ end
45
+
46
+ # Define any collection actions
47
+ collection do
48
+ config.collection_actions.each do |action|
49
+ send(action.http_verb, action.name)
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ # Add in the parent if it exists
56
+ if config.belongs_to?
57
+ routes_for_belongs_to = route_definition_block.dup
58
+ route_definition_block = Proc.new do
59
+ # If its optional, make the normal resource routes
60
+ instance_eval &routes_for_belongs_to if config.belongs_to_config.optional?
61
+
62
+ # Make the nested belongs_to routes
63
+ resources config.belongs_to_config.target.underscored_resource_name.pluralize do
64
+ instance_eval &routes_for_belongs_to
65
+ end
66
+ end
67
+ end
68
+
69
+ # Add on the namespace if required
70
+ if !config.namespace.root?
71
+ routes_in_namespace = route_definition_block.dup
72
+ route_definition_block = Proc.new do
73
+ namespace config.namespace.name do
74
+ instance_eval(&routes_in_namespace)
75
+ end
76
+ end
77
+ end
78
+
79
+ instance_eval &route_definition_block
80
+ end
81
+ end
82
+ end
83
+
84
+ end
85
+ end
@@ -0,0 +1,17 @@
1
+ module ActiveAdmin
2
+ class Scope
3
+
4
+ attr_reader :name, :scope_method, :id, :scope_block
5
+
6
+ def initialize(name, method = nil, &block)
7
+ @name = name.to_s.titleize
8
+ @scope_method = method || name.to_sym
9
+ @id = @name.gsub(' ', '').underscore
10
+ if block_given?
11
+ @scope_method = nil
12
+ @scope_block = block
13
+ end
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,43 @@
1
+ module ActiveAdmin
2
+ module Sidebar
3
+
4
+ class Section
5
+ include ActiveAdmin::OptionalDisplay
6
+
7
+ attr_accessor :name, :options, :block
8
+
9
+ def initialize(name, options = {}, &block)
10
+ @name, @options, @block = name, options, block
11
+ normalize_display_options!
12
+ end
13
+
14
+ # The id gets used for the div in the view
15
+ def id
16
+ name.to_s.downcase.underscore + '_sidebar_section'
17
+ end
18
+
19
+ def icon?
20
+ options[:icon]
21
+ end
22
+
23
+ def icon
24
+ options[:icon] if icon?
25
+ end
26
+
27
+ # The title gets displayed within the section in the view
28
+ def title
29
+ begin
30
+ I18n.t!("active_admin.sidebars.#{name.to_s}")
31
+ rescue I18n::MissingTranslationData
32
+ name.to_s.titlecase
33
+ end
34
+ end
35
+
36
+ # If a block is not passed in, the name of the partial to render
37
+ def partial_name
38
+ options[:partial] || "#{name.to_s.downcase.gsub(' ', '_')}_sidebar"
39
+ end
40
+ end
41
+
42
+ end
43
+ end
@@ -0,0 +1,40 @@
1
+ // -------------------------------------- Admin Notes
2
+ .comments {
3
+
4
+ .active_admin_comment {
5
+ clear: both;
6
+ margin-top: 10px;
7
+ margin-bottom: 40px;
8
+ max-width: 700px;
9
+
10
+ .active_admin_comment_meta {
11
+ width: 130px;
12
+ float: left;
13
+ font-size: 0.9em;
14
+ color: lighten($primary-color, 10%);
15
+ .active_admin_comment_author {
16
+ font-size: 1.2em;
17
+ font-weight: bold;
18
+ margin: 0;
19
+ color: $primary-color;
20
+ }
21
+ }
22
+ .active_admin_comment_body {
23
+ margin-left: 150px;
24
+ }
25
+ }
26
+ form.active_admin_comment {
27
+ margin: 0;
28
+ padding: 0;
29
+ margin-left: 150px;
30
+
31
+ fieldset.inputs {
32
+ margin: 0;
33
+ padding: 0;
34
+ background: none;
35
+ @include no-shadow;
36
+ }
37
+ li { padding: 0; }
38
+ fieldset.buttons { padding: 0; margin-top: 5px;}
39
+ }
40
+ }
@@ -0,0 +1,13 @@
1
+ .flash {
2
+ @include primary-gradient;
3
+ @include shadow;
4
+ @include text-shadow(#222);
5
+ border: none;
6
+ font-weight: bold;
7
+ padding: 10px 10px 8px 10px;
8
+ margin-bottom: 10px;
9
+ color: #fff;
10
+
11
+ &.flash_notice { @include gradient(#87a28b, #657b6a); }
12
+ &.flash_error { @include gradient(#ca5b4f, #97443c); }
13
+ }
@@ -0,0 +1,168 @@
1
+ // -------------------------------------- Active Admin Forms
2
+ form {
3
+ /* Reset margins & Padding */
4
+ ul, ol, li, fieldset, legend, input, textarea, select, p { margin:0; padding:0; }
5
+ ol, ul { list-style: none }
6
+
7
+ fieldset {
8
+ border: 0;
9
+ padding: 10px 0;
10
+ margin-bottom: 20px;
11
+
12
+ &.inputs { @include section-background; }
13
+
14
+ legend {
15
+ width: 100%;
16
+ span { display: block; @include section-header; }
17
+ }
18
+
19
+ ol > li {
20
+ padding: 10px;
21
+ label {
22
+ display: block;
23
+ width: 20%;
24
+ float: left;
25
+ font-size: 1.0em;
26
+ font-weight: bold;
27
+ color: $section-header-text-color;
28
+ abbr { border: none; color: #aaa; }
29
+ }
30
+ }
31
+
32
+
33
+ ol > li > li label {
34
+ line-height:100%;
35
+ padding-top:0;
36
+ input {
37
+ line-height:100%;
38
+ vertical-align:middle;
39
+ margin-top:-0.1em;
40
+ }
41
+ }
42
+ }
43
+
44
+ /* Nested Fieldsets and Legends */
45
+ fieldset > ol > li {
46
+ fieldset {
47
+ position:relative;
48
+ padding: 0;
49
+ margin-bottom: 0;
50
+
51
+ legend {
52
+ position:absolute;
53
+ width:95%;
54
+ padding-top:0.1em;
55
+ left: 0px;
56
+ font-size: 100%;
57
+ font-weight: normal;
58
+ span { position:absolute; }
59
+ &.label label { position:absolute; }
60
+ }
61
+
62
+ ol {
63
+ float:left;
64
+ width:74%;
65
+ margin:0;
66
+ padding:0 0 0 20%;
67
+
68
+ li {
69
+ padding:0;
70
+ border:0;
71
+ }
72
+ }
73
+ }
74
+ }
75
+
76
+ /* Text Fields */
77
+ input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], textarea {
78
+ width: 76%;
79
+ border: 1px solid #c9d0d6;
80
+ font-size: 0.95em;
81
+ outline: none;
82
+ padding: 8px 10px;
83
+
84
+ &:focus {
85
+ border: 1px solid #99a2aa;
86
+ @include shadow(0,0,4px,#99a2aa);
87
+ }
88
+ }
89
+
90
+ fieldset > ol > li {
91
+
92
+ /* Hints */
93
+ p.inline-hints {
94
+ font-size: 0.95em;
95
+ font-style: italic;
96
+ color:#666;
97
+ margin: 0.5em 0 0 20%;
98
+ }
99
+
100
+ /* Date and Time Fields */
101
+ &.date, &.time, &.datetime {
102
+ fieldset ol li {
103
+ float:left; width:auto; margin:0 0.5em 0 0;
104
+ label { display: none; }
105
+ input { display:inline; margin:0; padding:0; }
106
+ }
107
+ }
108
+
109
+ /* Check Boxes or Radio fields */
110
+ &.check_boxes, &.radio {
111
+ fieldset ol {
112
+ margin-bottom:-0.6em;
113
+ li {
114
+ margin:0.1em 0 0.5em 0;
115
+ label {
116
+ float:none;
117
+ width:100%;
118
+ input { margin-right:0.2em; }
119
+ }
120
+ }
121
+ }
122
+ }
123
+
124
+ /* Boolean Field */
125
+ &.boolean {
126
+ height: 1.1em;
127
+ label {
128
+ width: 100%;
129
+ padding-left:20%;
130
+ padding-right: 10px;
131
+ text-transform: none !important;
132
+ font-weight: normal;
133
+ input { margin:0 0.5em 0 0.2em; }
134
+ }
135
+ }
136
+
137
+ &.hidden { display: none; }
138
+
139
+ /* Errors */
140
+ p.inline-errors {
141
+ text-transform:capitalize;
142
+ color:#cc0000;
143
+ margin:0.5em 0 0 20%;
144
+ }
145
+ ul.errors {
146
+ color:#cc0000;
147
+ margin:0.5em 0 0 20%;
148
+ list-style:square;
149
+ li { padding:0; border:none; display:list-item; }
150
+ }
151
+
152
+ &.error {
153
+ input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], textarea {
154
+ border: 1px solid #cc0000;
155
+ }
156
+ }
157
+ }
158
+
159
+ /* Buttons */
160
+ input[type=submit] { @include dark-button; }
161
+ fieldset.buttons li {
162
+ float:left;
163
+ padding-right:0.5em;
164
+ padding-top: 0;
165
+ &.cancel { margin-left: 0.3em; padding: 5px; a { @include light-button; @include icon(#777, 9px);} }
166
+ }
167
+
168
+ }
@@ -0,0 +1,108 @@
1
+ // ----------------------------------- Header
2
+ #header {
3
+ @include primary-gradient;
4
+ @include shadow;
5
+ @include text-shadow(#000);
6
+ padding: 9px $horizontal-page-margin;
7
+ position: relative;
8
+ z-index: 900;
9
+
10
+ h1 {
11
+ display: inline;
12
+ color: #cdcdcd;
13
+ margin-right: 20px;
14
+ font-size: 1.3em;
15
+ font-weight: normal;
16
+ }
17
+
18
+ a, a:link { color: #cdcdcd; }
19
+
20
+ ul#tabs {
21
+ margin: 0;
22
+ padding: 0;
23
+ display: inline;
24
+ height: 100%;
25
+
26
+ & > li {
27
+ display: inline-block;
28
+ margin-right: 4px;
29
+ font-size: 1.0em;
30
+ position: relative;
31
+
32
+ a {
33
+ text-decoration: none;
34
+ padding: 6px 10px 4px 10px;
35
+ position: relative;
36
+ @include rounded(10px);
37
+ }
38
+
39
+ &.current > a {
40
+ background: $current-menu-item-background;
41
+ color: #fff;
42
+ }
43
+
44
+ &.has_nested > a {
45
+ background: url('/images/active_admin/nested_menu_arrow.gif') no-repeat 89% 50%;
46
+ padding-right: 20px;
47
+ }
48
+
49
+ &.has_nested.current > a {
50
+ background: $current-menu-item-background url('/images/active_admin/nested_menu_arrow_dark.gif') no-repeat 89% 50%;
51
+ padding-right: 20px;
52
+ }
53
+
54
+ &:hover > a {
55
+ background: $hover-menu-item-background;
56
+ color: #fff;
57
+ }
58
+
59
+ &.has_nested:hover > a {
60
+ @include rounded-top(10px);
61
+ z-index: 800;
62
+ border-bottom: 5px solid $hover-menu-item-background;
63
+ background: $hover-menu-item-background url('/images/active_admin/nested_menu_arrow_dark.gif') no-repeat 89% 50%;
64
+ }
65
+
66
+
67
+ /* Hover on li, display the ul */
68
+ &:hover ul { display: block;}
69
+ /* Drop down menus */
70
+ ul {
71
+ background: $hover-menu-item-background;
72
+ @include rounded-all(0,10px,10px,10px);
73
+ @include shadow(0, 1px, 3px, #444);
74
+ position: absolute;
75
+ width: 175px;
76
+ margin-top: 4px;
77
+ float: left;
78
+ display: none;
79
+ padding: 3px 0px 5px 0;
80
+ list-style: none;
81
+
82
+ li {
83
+ margin: 0px;
84
+ a {
85
+ background: none;
86
+ display: block;
87
+ &:hover { color: #fff; background: none; }
88
+ }
89
+
90
+ &.current {
91
+ a { @include rounded(0) }
92
+ }
93
+ }
94
+ }
95
+ }
96
+
97
+ }
98
+
99
+ #utility_nav {
100
+ position: absolute; right: 25px; top: 10px;
101
+ color: #aaa;
102
+ span, a { margin-left: 10px; }
103
+
104
+ a { text-decoration: none; }
105
+ a:hover { color: #fff; }
106
+ }
107
+
108
+ }
@@ -0,0 +1,100 @@
1
+ // Adapted from Blueprint CSS Framework
2
+ //
3
+ // Copyright (c) 2007 - 2010 blueprintcss.org
4
+ //
5
+ // Permission is hereby granted, free of charge, to any person
6
+ // obtaining a copy of this software and associated documentation
7
+ // files (the "Software"), to deal in the Software without
8
+ // restriction, including without limitation the rights to use,
9
+ // copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ // copies of the Software, and to permit persons to whom the
11
+ // Software is furnished to do so, subject to the following
12
+ // conditions:
13
+ //
14
+ // The above copyright notice and this permission notice shall be
15
+ // included in all copies or substantial portions of the Software.
16
+ //
17
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
19
+ // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
21
+ // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
22
+ // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23
+ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24
+ // OTHER DEALINGS IN THE SOFTWARE.
25
+
26
+ // Default font settings. The font-size percentage is of 16px. (0.75 * 16px = 12px) */
27
+ html { font-size:100.01%; }
28
+ body { font-size: 75%; font-family: "Helvetica Neue", Arial, Helvetica, sans-serif; }
29
+
30
+ // Headings
31
+ h1,h2,h3,h4,h5,h6 {
32
+ font-weight: normal;
33
+ color: $primary-color;
34
+ img { margin: 0; }
35
+ }
36
+
37
+ h1 { font-size: 3em; line-height: 1; margin-bottom: 0.5em; }
38
+ h2 { font-size: 2em; margin-bottom: 0.75em; }
39
+ h3 { font-size: 1.5em; line-height: 1; margin-bottom: 1em; }
40
+ h4 { font-size: 1.2em; line-height: 1.25; margin-bottom: 1.25em; }
41
+ h5 { font-size: 1em; font-weight: bold; margin-bottom: 1.5em; }
42
+ h6 { font-size: 1em; font-weight: bold; }
43
+
44
+
45
+ p {
46
+ margin: 0 0 1.5em;
47
+
48
+ .left { margin: 1.5em 1.5em 1.5em 0; padding: 0; }
49
+ .right { margin: 1.5em 0 1.5em 1.5em; padding: 0; }
50
+ }
51
+
52
+ .left { float: left !important; }
53
+ .right { float: right !important; }
54
+
55
+ blockquote { margin: 1.5em; color: #666; font-style: italic; }
56
+ strong,dfn { font-weight: bold; }
57
+ em,dfn { font-style: italic; }
58
+ sup, sub { line-height: 0; }
59
+
60
+ abbr,
61
+ acronym { border-bottom: 1px dotted #666; }
62
+ address { margin: 0 0 1.5em; font-style: italic; }
63
+ del { color:#666; }
64
+
65
+ pre { margin: 1.5em 0; white-space: pre; }
66
+ pre,code,tt { font: 1em 'andale mono', 'lucida console', monospace; line-height: 1.5; }
67
+
68
+ // Lists
69
+ li ul,
70
+ li ol { margin: 0; }
71
+ ul, ol { margin: 0 1.5em 1.5em 0; padding-left: 1.5em; }
72
+
73
+ ul { list-style-type: disc; }
74
+ ol { list-style-type: decimal; }
75
+
76
+ dl { margin: 0 0 1.5em 0; }
77
+ dl dt { font-weight: bold; }
78
+ dd { margin-left: 1.5em;}
79
+
80
+ // Tables
81
+ table { margin-bottom: 1.4em; width:100%; }
82
+ th { font-weight: bold; }
83
+ thead th { background: #c3d9ff; }
84
+ th,td,caption { padding: 4px 10px 4px 5px; }
85
+
86
+ // Helper Classes
87
+ .small { font-size: .8em; margin-bottom: 1.875em; line-height: 1.875em; }
88
+ .large { font-size: 1.2em; line-height: 2.5em; margin-bottom: 1.25em; }
89
+ .hide { display: none; }
90
+
91
+ .quiet { color: #666; }
92
+ .loud { color: #000; }
93
+ .highlight { background:#ff0; }
94
+ .added { background:#060; color: #fff; }
95
+ .removed { background:#900; color: #fff; }
96
+
97
+ .first { margin-left:0; padding-left:0; }
98
+ .last { margin-right:0; padding-right:0; }
99
+ .top { margin-top:0; padding-top:0; }
100
+ .bottom { margin-bottom:0; padding-bottom:0; }
@@ -0,0 +1,8 @@
1
+ @import "active_admin/mixins/variables";
2
+ @import "active_admin/mixins/reset";
3
+ @import "active_admin/mixins/gradients";
4
+ @import "active_admin/mixins/shadows";
5
+ @import "active_admin/mixins/icons";
6
+ @import "active_admin/mixins/rounded";
7
+ @import "active_admin/mixins/buttons";
8
+ @import "active_admin/mixins/sections";
@@ -0,0 +1,27 @@
1
+ @mixin default-button {
2
+ @include shadow;
3
+ @include gradient(lighten($primary-color, 15%), darken($primary-color, 12%));
4
+ @include rounded(200px);
5
+ @include text-shadow(#000);
6
+ text-decoration: none;
7
+ margin-right: 3px;
8
+ font-weight: bold;
9
+ font-size: 1.0em;
10
+ cursor: pointer;
11
+ padding: .6em 1.4em .5em 1.3em;
12
+ border: none;
13
+ color: #efefef;
14
+ &:hover { color: #fff; @include icon-color(#fff); @include shadow(0, 1px, 3px, #888) }
15
+ &:active { @include inset-shadow(0, 1px, 2px, #000); }
16
+ }
17
+
18
+ @mixin light-button {
19
+ @include default-button;
20
+ @include gradient(#f9f9f9, #dddbdb);
21
+ @include text-shadow;
22
+ color: #777;
23
+ &:hover { color: #444; @include icon-color(#444) }
24
+ &:active { @include inset-shadow; }
25
+ }
26
+
27
+ @mixin dark-button { @include default-button; }
@@ -0,0 +1,21 @@
1
+ $secondary-gradient-start: #efefef;
2
+ $secondary-gradient-stop: #dfe1e2;
3
+
4
+ @mixin gradient($start, $end){
5
+ background: $start;
6
+ background: -webkit-gradient(linear, left top, left bottom, from($start), to($end));
7
+ background: -moz-linear-gradient(-90deg, $start, $end);
8
+ // IE 6 & 7
9
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#{$start}, endColorstr=#{$end});
10
+ // IE 8
11
+ -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#{$start}, endColorstr=#{$end});
12
+ }
13
+
14
+ @mixin primary-gradient {
15
+ @include gradient(lighten($primary-color, 5%), darken($primary-color, 7%));
16
+ border-bottom: 1px solid darken($primary-color, 11%);
17
+ }
18
+
19
+ @mixin secondary-gradient {
20
+ @include gradient($secondary-gradient-start, $secondary-gradient-stop);
21
+ }
@@ -0,0 +1,20 @@
1
+ span.icon { vertical-align: middle; display: inline-block; }
2
+ span.icon svg { vertical-align: baseline; }
3
+
4
+ @mixin icon-color ($color) {
5
+ span.icon svg {
6
+ path, polygon, rect, circle { fill: $color !important; }
7
+ }
8
+ }
9
+
10
+ @mixin icon-size ($size) {
11
+ span.icon { width: $size; height: $size; }
12
+ span.icon svg { width: $size; height: $size; }
13
+ }
14
+
15
+ @mixin icon($color, $size) {
16
+ @include icon-color($color);
17
+ @include icon-size($size);
18
+ }
19
+
20
+ @include icon-size(0.8em);