administrate 0.0.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of administrate might be problematic. Click here for more details.

Files changed (82) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +20 -0
  3. data/Rakefile +37 -0
  4. data/app/assets/javascripts/administrate/application.js +3 -0
  5. data/app/assets/javascripts/administrate/components/table.js +17 -0
  6. data/app/assets/stylesheets/administrate/_show.sass +16 -0
  7. data/app/assets/stylesheets/administrate/_sidebar.scss +48 -0
  8. data/app/assets/stylesheets/administrate/application.scss +14 -0
  9. data/app/assets/stylesheets/administrate/base/_base.scss +24 -0
  10. data/app/assets/stylesheets/administrate/base/_buttons.scss +11 -0
  11. data/app/assets/stylesheets/administrate/base/_forms.scss +78 -0
  12. data/app/assets/stylesheets/administrate/base/_grid-settings.scss +15 -0
  13. data/app/assets/stylesheets/administrate/base/_lists.scss +31 -0
  14. data/app/assets/stylesheets/administrate/base/_tables.scss +74 -0
  15. data/app/assets/stylesheets/administrate/base/_typography.scss +93 -0
  16. data/app/assets/stylesheets/administrate/base/_variables.scss +93 -0
  17. data/app/assets/stylesheets/administrate/base/extends/_button.scss +23 -0
  18. data/app/assets/stylesheets/administrate/base/extends/_clearfix.scss +3 -0
  19. data/app/assets/stylesheets/administrate/base/extends/_errors.scss +11 -0
  20. data/app/assets/stylesheets/administrate/base/extends/_flashes.scss +38 -0
  21. data/app/assets/stylesheets/administrate/base/extends/_hide-text.scss +3 -0
  22. data/app/assets/stylesheets/administrate/components/_components.scss +3 -0
  23. data/app/assets/stylesheets/administrate/components/_form.scss +31 -0
  24. data/app/assets/stylesheets/administrate/components/_header.scss +10 -0
  25. data/app/assets/stylesheets/administrate/components/_table.scss +11 -0
  26. data/app/assets/stylesheets/administrate/layout.scss +28 -0
  27. data/app/assets/stylesheets/administrate/mixins/_mixins.scss +1 -0
  28. data/app/assets/stylesheets/administrate/mixins/_shadow.scss +35 -0
  29. data/app/controllers/administrate/application_controller.rb +127 -0
  30. data/app/helpers/administrate/application_helper.rb +7 -0
  31. data/app/views/administrate/application/_flashes.html.erb +7 -0
  32. data/app/views/administrate/application/_form.html.erb +28 -0
  33. data/app/views/administrate/application/_javascript.html.erb +10 -0
  34. data/app/views/administrate/application/_sidebar.html.erb +16 -0
  35. data/app/views/administrate/application/_table.html.erb +44 -0
  36. data/app/views/administrate/application/edit.html.erb +6 -0
  37. data/app/views/administrate/application/index.html.erb +10 -0
  38. data/app/views/administrate/application/new.html.erb +6 -0
  39. data/app/views/administrate/application/show.html.erb +11 -0
  40. data/app/views/fields/form/_belongs_to.html.erb +7 -0
  41. data/app/views/fields/form/_email.html.erb +2 -0
  42. data/app/views/fields/form/_has_many.html.erb +11 -0
  43. data/app/views/fields/form/_image.html.erb +2 -0
  44. data/app/views/fields/form/_string.html.erb +2 -0
  45. data/app/views/fields/index/_belongs_to.html.erb +3 -0
  46. data/app/views/fields/index/_email.html.erb +1 -0
  47. data/app/views/fields/index/_has_many.html.erb +1 -0
  48. data/app/views/fields/index/_image.html.erb +1 -0
  49. data/app/views/fields/index/_string.html.erb +1 -0
  50. data/app/views/fields/show/_belongs_to.html.erb +3 -0
  51. data/app/views/fields/show/_email.html.erb +1 -0
  52. data/app/views/fields/show/_has_many.html.erb +5 -0
  53. data/app/views/fields/show/_image.html.erb +1 -0
  54. data/app/views/fields/show/_string.html.erb +1 -0
  55. data/app/views/layouts/administrate/application.html.erb +28 -0
  56. data/config/locales/administrate.en.yml +7 -0
  57. data/config/routes.rb +2 -0
  58. data/lib/administrate.rb +4 -0
  59. data/lib/administrate/base_dashboard.rb +36 -0
  60. data/lib/administrate/engine.rb +8 -0
  61. data/lib/administrate/fields/base.rb +31 -0
  62. data/lib/administrate/fields/belongs_to.rb +19 -0
  63. data/lib/administrate/fields/email.rb +8 -0
  64. data/lib/administrate/fields/has_many.rb +38 -0
  65. data/lib/administrate/fields/image.rb +8 -0
  66. data/lib/administrate/fields/string.rb +8 -0
  67. data/lib/administrate/namespace.rb +3 -0
  68. data/lib/administrate/pages/base.rb +28 -0
  69. data/lib/administrate/pages/form.rb +28 -0
  70. data/lib/administrate/pages/show.rb +24 -0
  71. data/lib/administrate/pages/table.rb +21 -0
  72. data/lib/administrate/version.rb +3 -0
  73. data/lib/generators/administrate/dashboard/USAGE +9 -0
  74. data/lib/generators/administrate/dashboard/dashboard_generator.rb +44 -0
  75. data/lib/generators/administrate/dashboard/templates/controller.rb.erb +12 -0
  76. data/lib/generators/administrate/dashboard/templates/dashboard.rb.erb +50 -0
  77. data/lib/generators/administrate/install/install_generator.rb +52 -0
  78. data/lib/generators/administrate/install/templates/application_controller.rb +13 -0
  79. data/lib/generators/administrate/install/templates/dashboard_manifest.rb.erb +29 -0
  80. data/lib/generators/administrate/install/templates/routes.rb +7 -0
  81. data/lib/tasks/administrate_tasks.rake +4 -0
  82. metadata +179 -0
@@ -0,0 +1,28 @@
1
+ module Administrate
2
+ module Page
3
+ class Base
4
+ def initialize(dashboard)
5
+ @dashboard = dashboard
6
+ end
7
+
8
+ def resource_name
9
+ @resource_name ||=
10
+ dashboard.class.to_s.scan(/(.+)Dashboard/).first.first.underscore
11
+ end
12
+
13
+ protected
14
+
15
+ def attribute_field(dashboard, resource, attribute_name, page)
16
+ value = resource.public_send(attribute_name)
17
+
18
+ dashboard.
19
+ field_class(attribute_name).
20
+ new(attribute_name, value, page)
21
+ end
22
+
23
+ protected
24
+
25
+ attr_reader :dashboard
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ require_relative "base"
2
+
3
+ module Administrate
4
+ module Page
5
+ class Form < Page::Base
6
+ def initialize(dashboard, resource)
7
+ super(dashboard)
8
+ @resource = resource
9
+ end
10
+
11
+ attr_reader :resource
12
+
13
+ def attributes
14
+ dashboard.form_attributes.map do |attribute|
15
+ attribute_field(dashboard, resource, attribute, :form)
16
+ end
17
+ end
18
+
19
+ def page_title
20
+ resource.to_s
21
+ end
22
+
23
+ protected
24
+
25
+ attr_reader :dashboard
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,24 @@
1
+ require_relative "base"
2
+
3
+ module Administrate
4
+ module Page
5
+ class Show < Page::Base
6
+ def initialize(dashboard, resource)
7
+ super(dashboard)
8
+ @resource = resource
9
+ end
10
+
11
+ attr_reader :resource
12
+
13
+ def page_title
14
+ resource.to_s
15
+ end
16
+
17
+ def attributes
18
+ dashboard.show_page_attributes.map do |attr_name|
19
+ attribute_field(dashboard, resource, attr_name, :show)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,21 @@
1
+ require_relative "base"
2
+
3
+ module Administrate
4
+ module Page
5
+ class Table < Page::Base
6
+ def attribute_names
7
+ dashboard.table_attributes
8
+ end
9
+
10
+ def attributes_for(resource)
11
+ attribute_names.map do |attr_name|
12
+ attribute_field(dashboard, resource, attr_name, :index)
13
+ end
14
+ end
15
+
16
+ def to_partial_path
17
+ "/dashboard/table"
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,3 @@
1
+ module Administrate
2
+ VERSION = "0.0.2"
3
+ end
@@ -0,0 +1,9 @@
1
+ Description:
2
+ Generates a Dashboard object for a model,
3
+ pulling the attributes from database columns.
4
+
5
+ Example:
6
+ rails generate dashboard FooBar
7
+
8
+ This will create:
9
+ app/dashboards/foo_bar_dashboard.rb
@@ -0,0 +1,44 @@
1
+ require "rails/generators/named_base"
2
+
3
+ module Administrate
4
+ module Generators
5
+ class DashboardGenerator < Rails::Generators::NamedBase
6
+ source_root File.expand_path("../templates", __FILE__)
7
+
8
+ def create_dashboard_definition
9
+ template "dashboard.rb.erb", "app/dashboards/#{file_name}_dashboard.rb"
10
+ end
11
+
12
+ def create_resource_controller
13
+ template(
14
+ "controller.rb.erb",
15
+ "app/controllers/admin/#{file_name.pluralize}_controller.rb"
16
+ )
17
+ end
18
+
19
+ private
20
+
21
+ def attributes
22
+ klass.attribute_names + klass.reflections.keys
23
+ end
24
+
25
+ def field_type(attribute)
26
+ klass.type_for_attribute(attribute).type ||
27
+ association_type(attribute)
28
+ end
29
+
30
+ def association_type(attribute)
31
+ reflection = klass.reflections[attribute.to_s]
32
+ if reflection.collection?
33
+ :has_many
34
+ else
35
+ :belongs_to
36
+ end
37
+ end
38
+
39
+ def klass
40
+ @klass ||= Object.const_get(class_name)
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,12 @@
1
+ class Admin::<%= class_name.pluralize %>Controller < Admin::ApplicationController
2
+ # To customize the behavior of this controller,
3
+ # simply overwrite any of the RESTful actions. For example:
4
+ #
5
+ # def index
6
+ # super
7
+ # @resources = <%= class_name %>.all.paginate(10, params[:page])
8
+ # end
9
+
10
+ # See https://administrate-docs.herokuapp.com/customizing_controller_actions
11
+ # for more information
12
+ end
@@ -0,0 +1,50 @@
1
+ require "administrate/base_dashboard"
2
+
3
+ class <%= class_name %>Dashboard < Administrate::BaseDashboard
4
+
5
+ # This method returns a hash
6
+ # that describes the type of each of the model's fields.
7
+ #
8
+ # Each different type represents an Administrate::Field object,
9
+ # which determines how the attribute is displayed
10
+ # on pages throughout the dashboard.
11
+ def attribute_types
12
+ {<% attributes.each do |attr| %>
13
+ <%= attr %>: :<%= field_type(attr) %>,<% end %>
14
+ }
15
+ end
16
+
17
+ # This method returns an array of attributes
18
+ # that will be displayed on the model's index page.
19
+ def table_attributes
20
+ attributes
21
+ end
22
+
23
+ # This method returns an array of attributes
24
+ # that will be displayed on the model's show page
25
+ def show_page_attributes
26
+ attributes
27
+ end
28
+
29
+ # This method returns an array of attributes
30
+ # that will be displayed on the model's form pages (`new` and `edit`)
31
+ def form_attributes
32
+ attributes - read_only_attributes
33
+ end
34
+
35
+ private
36
+
37
+ def attributes
38
+ [<% attributes.each do |attribute| %>
39
+ :<%= attribute %>,<% end %>
40
+ ]
41
+ end
42
+
43
+ def read_only_attributes
44
+ [
45
+ :id,
46
+ :created_at,
47
+ :updated_at,
48
+ ]
49
+ end
50
+ end
@@ -0,0 +1,52 @@
1
+ Rails.application.eager_load!
2
+ require "rails/generators/base"
3
+
4
+ module Administrate
5
+ module Generators
6
+ class InstallGenerator < Rails::Generators::Base
7
+ source_root File.expand_path("../templates", __FILE__)
8
+
9
+ def create_dashboard_controller
10
+ copy_file(
11
+ "application_controller.rb",
12
+ "app/controllers/admin/application_controller.rb"
13
+ )
14
+ end
15
+
16
+ def create_dashboard_manifest
17
+ template(
18
+ "dashboard_manifest.rb.erb",
19
+ "app/dashboards/dashboard_manifest.rb"
20
+ )
21
+ end
22
+
23
+ def insert_dashboard_routes
24
+ route(dashboard_routes)
25
+ end
26
+
27
+ private
28
+
29
+ def dashboard_resources
30
+ valid_dashboard_models.map do |model|
31
+ model.to_s.pluralize.underscore
32
+ end
33
+ end
34
+
35
+ def valid_dashboard_models
36
+ database_models.reject { |model| model.to_s.include?("::") }
37
+ end
38
+
39
+ def database_models
40
+ ActiveRecord::Base.descendants
41
+ end
42
+
43
+ def dashboard_routes
44
+ File.read(routes_file_path)
45
+ end
46
+
47
+ def routes_file_path
48
+ File.expand_path(find_in_source_paths("routes.rb"))
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,13 @@
1
+ # All Administrate controllers inherit from this `ApplicationController`,
2
+ # making it the ideal place to put authentication logic or other
3
+ # before_filters.
4
+ #
5
+ # If you want to add pagination or other controller-level concerns,
6
+ # you're free to overwrite the RESTful controller actions.
7
+ class Admin::ApplicationController < Administrate::ApplicationController
8
+ before_filter :authenticate_admin
9
+
10
+ def authenticate_admin
11
+ # TODO Add authentication logic here.
12
+ end
13
+ end
@@ -0,0 +1,29 @@
1
+ # DashboardManifest tells Administrate which dashboards to display
2
+ class DashboardManifest
3
+ # `#dashboards`
4
+ # Returns a list of dashboards to display in the side navigation menu
5
+ #
6
+ # These are all of the rails models that we found in your database
7
+ # at the time you installed Administrate.
8
+ #
9
+ # To show or hide dashboards, add or remove the model name from this list.
10
+ # Dashboards returned from this method must be Rails models for Administrate
11
+ # to work correctly.
12
+ def dashboards
13
+ [
14
+ <% dashboard_resources.each do |model| -%>
15
+ :<%= model %>,
16
+ <% end -%>
17
+ ]
18
+ end
19
+
20
+ # `#root_dashboard`
21
+ # Returns the name of the dashboard that will be displayed
22
+ # at "http://your_site.com/admin"
23
+ #
24
+ # This dashboard will likely be the first page that admins see
25
+ # when they log into the dashboard.
26
+ def root_dashboard
27
+ dashboards.first
28
+ end
29
+ end
@@ -0,0 +1,7 @@
1
+ namespace :admin do
2
+ DashboardManifest.new.dashboards.each do |dashboard_resource|
3
+ resources dashboard_resource
4
+ end
5
+
6
+ root controller: DashboardManifest.new.root_dashboard, action: :index
7
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :administrate do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,179 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: administrate
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Grayson Wright
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-06-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: neat
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.7'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.7'
41
+ - !ruby/object:Gem::Dependency
42
+ name: normalize-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description: |
56
+ Administrate is heavily inspired by projects like Rails Admin and ActiveAdmin,
57
+ but aims to provide a better user experience for site admins,
58
+ and to be easier for developers to customize.
59
+
60
+ To do that, we're following a few simple rules:
61
+
62
+ - No DSLs (domain-specific languages)
63
+ - Support the simplest use cases,
64
+ and let the user override defaults with standard tools
65
+ such as plain Rails controllers and views.
66
+ - Break up the library into core components and plugins,
67
+ so each component stays small and easy to maintain.
68
+ email:
69
+ - grayson@thoughtbot.com
70
+ executables: []
71
+ extensions: []
72
+ extra_rdoc_files: []
73
+ files:
74
+ - LICENSE
75
+ - Rakefile
76
+ - app/assets/javascripts/administrate/application.js
77
+ - app/assets/javascripts/administrate/components/table.js
78
+ - app/assets/stylesheets/administrate/_show.sass
79
+ - app/assets/stylesheets/administrate/_sidebar.scss
80
+ - app/assets/stylesheets/administrate/application.scss
81
+ - app/assets/stylesheets/administrate/base/_base.scss
82
+ - app/assets/stylesheets/administrate/base/_buttons.scss
83
+ - app/assets/stylesheets/administrate/base/_forms.scss
84
+ - app/assets/stylesheets/administrate/base/_grid-settings.scss
85
+ - app/assets/stylesheets/administrate/base/_lists.scss
86
+ - app/assets/stylesheets/administrate/base/_tables.scss
87
+ - app/assets/stylesheets/administrate/base/_typography.scss
88
+ - app/assets/stylesheets/administrate/base/_variables.scss
89
+ - app/assets/stylesheets/administrate/base/extends/_button.scss
90
+ - app/assets/stylesheets/administrate/base/extends/_clearfix.scss
91
+ - app/assets/stylesheets/administrate/base/extends/_errors.scss
92
+ - app/assets/stylesheets/administrate/base/extends/_flashes.scss
93
+ - app/assets/stylesheets/administrate/base/extends/_hide-text.scss
94
+ - app/assets/stylesheets/administrate/components/_components.scss
95
+ - app/assets/stylesheets/administrate/components/_form.scss
96
+ - app/assets/stylesheets/administrate/components/_header.scss
97
+ - app/assets/stylesheets/administrate/components/_table.scss
98
+ - app/assets/stylesheets/administrate/layout.scss
99
+ - app/assets/stylesheets/administrate/mixins/_mixins.scss
100
+ - app/assets/stylesheets/administrate/mixins/_shadow.scss
101
+ - app/controllers/administrate/application_controller.rb
102
+ - app/helpers/administrate/application_helper.rb
103
+ - app/views/administrate/application/_flashes.html.erb
104
+ - app/views/administrate/application/_form.html.erb
105
+ - app/views/administrate/application/_javascript.html.erb
106
+ - app/views/administrate/application/_sidebar.html.erb
107
+ - app/views/administrate/application/_table.html.erb
108
+ - app/views/administrate/application/edit.html.erb
109
+ - app/views/administrate/application/index.html.erb
110
+ - app/views/administrate/application/new.html.erb
111
+ - app/views/administrate/application/show.html.erb
112
+ - app/views/fields/form/_belongs_to.html.erb
113
+ - app/views/fields/form/_email.html.erb
114
+ - app/views/fields/form/_has_many.html.erb
115
+ - app/views/fields/form/_image.html.erb
116
+ - app/views/fields/form/_string.html.erb
117
+ - app/views/fields/index/_belongs_to.html.erb
118
+ - app/views/fields/index/_email.html.erb
119
+ - app/views/fields/index/_has_many.html.erb
120
+ - app/views/fields/index/_image.html.erb
121
+ - app/views/fields/index/_string.html.erb
122
+ - app/views/fields/show/_belongs_to.html.erb
123
+ - app/views/fields/show/_email.html.erb
124
+ - app/views/fields/show/_has_many.html.erb
125
+ - app/views/fields/show/_image.html.erb
126
+ - app/views/fields/show/_string.html.erb
127
+ - app/views/layouts/administrate/application.html.erb
128
+ - config/locales/administrate.en.yml
129
+ - config/routes.rb
130
+ - lib/administrate.rb
131
+ - lib/administrate/base_dashboard.rb
132
+ - lib/administrate/engine.rb
133
+ - lib/administrate/fields/base.rb
134
+ - lib/administrate/fields/belongs_to.rb
135
+ - lib/administrate/fields/email.rb
136
+ - lib/administrate/fields/has_many.rb
137
+ - lib/administrate/fields/image.rb
138
+ - lib/administrate/fields/string.rb
139
+ - lib/administrate/namespace.rb
140
+ - lib/administrate/pages/base.rb
141
+ - lib/administrate/pages/form.rb
142
+ - lib/administrate/pages/show.rb
143
+ - lib/administrate/pages/table.rb
144
+ - lib/administrate/version.rb
145
+ - lib/generators/administrate/dashboard/USAGE
146
+ - lib/generators/administrate/dashboard/dashboard_generator.rb
147
+ - lib/generators/administrate/dashboard/templates/controller.rb.erb
148
+ - lib/generators/administrate/dashboard/templates/dashboard.rb.erb
149
+ - lib/generators/administrate/install/install_generator.rb
150
+ - lib/generators/administrate/install/templates/application_controller.rb
151
+ - lib/generators/administrate/install/templates/dashboard_manifest.rb.erb
152
+ - lib/generators/administrate/install/templates/routes.rb
153
+ - lib/tasks/administrate_tasks.rake
154
+ homepage: https://administrate-docs.herokuapp.com/
155
+ licenses:
156
+ - MIT
157
+ metadata: {}
158
+ post_install_message:
159
+ rdoc_options: []
160
+ require_paths:
161
+ - lib
162
+ required_ruby_version: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ required_rubygems_version: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ requirements: []
173
+ rubyforge_project:
174
+ rubygems_version: 2.4.8
175
+ signing_key:
176
+ specification_version: 4
177
+ summary: A Rails engine for creating super-flexible admin dashboards
178
+ test_files: []
179
+ has_rdoc: