semantic-administrate 0.1.0

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 (174) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +32 -0
  3. data/app/assets/fonts/administrate/semantic-ui/icons.eot +0 -0
  4. data/app/assets/fonts/administrate/semantic-ui/icons.otf +0 -0
  5. data/app/assets/fonts/administrate/semantic-ui/icons.svg +2671 -0
  6. data/app/assets/fonts/administrate/semantic-ui/icons.ttf +0 -0
  7. data/app/assets/fonts/administrate/semantic-ui/icons.woff +0 -0
  8. data/app/assets/fonts/administrate/semantic-ui/icons.woff2 +0 -0
  9. data/app/assets/images/administrate/semantic-ui/flags.png +0 -0
  10. data/app/assets/javascripts/administrate/application.js +7 -0
  11. data/app/assets/javascripts/administrate/components/date_time_picker.js +6 -0
  12. data/app/assets/javascripts/administrate/components/has_many_form.js +3 -0
  13. data/app/assets/javascripts/administrate/components/table.js +23 -0
  14. data/app/assets/javascripts/administrate/vendor/semantic-ui.js +22943 -0
  15. data/app/assets/stylesheets/administrate/application.scss +27 -0
  16. data/app/assets/stylesheets/administrate/base/_forms.scss +106 -0
  17. data/app/assets/stylesheets/administrate/base/_layout.scss +10 -0
  18. data/app/assets/stylesheets/administrate/base/_lists.scss +19 -0
  19. data/app/assets/stylesheets/administrate/base/_typography.scss +48 -0
  20. data/app/assets/stylesheets/administrate/components/_app-container.scss +27 -0
  21. data/app/assets/stylesheets/administrate/components/_attributes.scss +34 -0
  22. data/app/assets/stylesheets/administrate/components/_buttons.scss +43 -0
  23. data/app/assets/stylesheets/administrate/components/_cells.scss +59 -0
  24. data/app/assets/stylesheets/administrate/components/_field-unit.scss +36 -0
  25. data/app/assets/stylesheets/administrate/components/_flashes.scss +28 -0
  26. data/app/assets/stylesheets/administrate/components/_form-actions.scss +3 -0
  27. data/app/assets/stylesheets/administrate/components/_main-content.scss +42 -0
  28. data/app/assets/stylesheets/administrate/components/_pagination.scss +18 -0
  29. data/app/assets/stylesheets/administrate/components/_search.scss +45 -0
  30. data/app/assets/stylesheets/administrate/components/nav-drawer.scss +156 -0
  31. data/app/assets/stylesheets/administrate/library/_clearfix.scss +7 -0
  32. data/app/assets/stylesheets/administrate/library/_data-label.scss +8 -0
  33. data/app/assets/stylesheets/administrate/library/_variables.scss +65 -0
  34. data/app/assets/stylesheets/administrate/vendor/semantic-ui.scss +37123 -0
  35. data/app/assets/stylesheets/docs.scss +93 -0
  36. data/app/controllers/administrate/application_controller.rb +162 -0
  37. data/app/helpers/administrate/application_helper.rb +51 -0
  38. data/app/views/administrate/application/_collection.html.erb +92 -0
  39. data/app/views/administrate/application/_flashes.html.erb +20 -0
  40. data/app/views/administrate/application/_form.html.erb +42 -0
  41. data/app/views/administrate/application/_icons.erb +13 -0
  42. data/app/views/administrate/application/_javascript.html.erb +21 -0
  43. data/app/views/administrate/application/_navigation.html.erb +19 -0
  44. data/app/views/administrate/application/_navigation_extra_links.html.erb +13 -0
  45. data/app/views/administrate/application/_navigation_footer.html.erb +44 -0
  46. data/app/views/administrate/application/_navigation_links.html.erb +16 -0
  47. data/app/views/administrate/application/_search.html.erb +25 -0
  48. data/app/views/administrate/application/_stylesheet.html.erb +14 -0
  49. data/app/views/administrate/application/edit.html.erb +36 -0
  50. data/app/views/administrate/application/index.html.erb +63 -0
  51. data/app/views/administrate/application/new.html.erb +32 -0
  52. data/app/views/administrate/application/show.html.erb +49 -0
  53. data/app/views/fields/belongs_to/_form.html.erb +26 -0
  54. data/app/views/fields/belongs_to/_index.html.erb +27 -0
  55. data/app/views/fields/belongs_to/_show.html.erb +27 -0
  56. data/app/views/fields/boolean/_form.html.erb +23 -0
  57. data/app/views/fields/boolean/_index.html.erb +19 -0
  58. data/app/views/fields/boolean/_show.html.erb +19 -0
  59. data/app/views/fields/date_time/_form.html.erb +24 -0
  60. data/app/views/fields/date_time/_index.html.erb +21 -0
  61. data/app/views/fields/date_time/_show.html.erb +21 -0
  62. data/app/views/fields/email/_form.html.erb +23 -0
  63. data/app/views/fields/email/_index.html.erb +18 -0
  64. data/app/views/fields/email/_show.html.erb +18 -0
  65. data/app/views/fields/has_many/_form.html.erb +29 -0
  66. data/app/views/fields/has_many/_index.html.erb +19 -0
  67. data/app/views/fields/has_many/_show.html.erb +35 -0
  68. data/app/views/fields/has_one/_form.html.erb +28 -0
  69. data/app/views/fields/has_one/_index.html.erb +23 -0
  70. data/app/views/fields/has_one/_show.html.erb +40 -0
  71. data/app/views/fields/number/_form.html.erb +23 -0
  72. data/app/views/fields/number/_index.html.erb +19 -0
  73. data/app/views/fields/number/_show.html.erb +19 -0
  74. data/app/views/fields/polymorphic/_form.html.erb +32 -0
  75. data/app/views/fields/polymorphic/_index.html.erb +24 -0
  76. data/app/views/fields/polymorphic/_show.html.erb +28 -0
  77. data/app/views/fields/select/_form.html.erb +31 -0
  78. data/app/views/fields/select/_index.html.erb +16 -0
  79. data/app/views/fields/select/_show.html.erb +16 -0
  80. data/app/views/fields/string/_form.html.erb +23 -0
  81. data/app/views/fields/string/_index.html.erb +18 -0
  82. data/app/views/fields/string/_show.html.erb +18 -0
  83. data/app/views/fields/text/_form.html.erb +22 -0
  84. data/app/views/fields/text/_index.html.erb +18 -0
  85. data/app/views/fields/text/_show.html.erb +19 -0
  86. data/app/views/layouts/administrate/application.html.erb +43 -0
  87. data/config/i18n-tasks.yml +18 -0
  88. data/config/locales/administrate.ar.yml +26 -0
  89. data/config/locales/administrate.bs.yml +25 -0
  90. data/config/locales/administrate.ca.yml +26 -0
  91. data/config/locales/administrate.da.yml +26 -0
  92. data/config/locales/administrate.de.yml +26 -0
  93. data/config/locales/administrate.en.yml +26 -0
  94. data/config/locales/administrate.es.yml +26 -0
  95. data/config/locales/administrate.fr.yml +26 -0
  96. data/config/locales/administrate.it.yml +26 -0
  97. data/config/locales/administrate.ja.yml +26 -0
  98. data/config/locales/administrate.ko.yml +26 -0
  99. data/config/locales/administrate.nl.yml +26 -0
  100. data/config/locales/administrate.pl.yml +26 -0
  101. data/config/locales/administrate.pt-BR.yml +27 -0
  102. data/config/locales/administrate.pt.yml +27 -0
  103. data/config/locales/administrate.ru.yml +26 -0
  104. data/config/locales/administrate.sv.yml +26 -0
  105. data/config/locales/administrate.uk.yml +26 -0
  106. data/config/locales/administrate.vi.yml +26 -0
  107. data/config/locales/administrate.zh-CN.yml +26 -0
  108. data/config/locales/administrate.zh-TW.yml +26 -0
  109. data/config/routes.rb +2 -0
  110. data/config/unicorn.rb +30 -0
  111. data/docs/adding_custom_field_types.md +79 -0
  112. data/docs/authentication.md +61 -0
  113. data/docs/customizing_attribute_partials.md +53 -0
  114. data/docs/customizing_controller_actions.md +42 -0
  115. data/docs/customizing_dashboards.md +202 -0
  116. data/docs/customizing_page_views.md +78 -0
  117. data/docs/getting_started.md +115 -0
  118. data/lib/administrate.rb +4 -0
  119. data/lib/administrate/base_dashboard.rb +72 -0
  120. data/lib/administrate/engine.rb +44 -0
  121. data/lib/administrate/field/associative.rb +33 -0
  122. data/lib/administrate/field/base.rb +54 -0
  123. data/lib/administrate/field/belongs_to.rb +36 -0
  124. data/lib/administrate/field/boolean.rb +15 -0
  125. data/lib/administrate/field/date_time.rb +21 -0
  126. data/lib/administrate/field/deferred.rb +35 -0
  127. data/lib/administrate/field/email.rb +11 -0
  128. data/lib/administrate/field/has_many.rb +87 -0
  129. data/lib/administrate/field/has_one.rb +27 -0
  130. data/lib/administrate/field/number.rb +35 -0
  131. data/lib/administrate/field/polymorphic.rb +51 -0
  132. data/lib/administrate/field/select.rb +21 -0
  133. data/lib/administrate/field/string.rb +21 -0
  134. data/lib/administrate/field/text.rb +21 -0
  135. data/lib/administrate/generator_helpers.rb +13 -0
  136. data/lib/administrate/namespace.rb +31 -0
  137. data/lib/administrate/namespace/resource.rb +28 -0
  138. data/lib/administrate/order.rb +45 -0
  139. data/lib/administrate/page.rb +4 -0
  140. data/lib/administrate/page/base.rb +35 -0
  141. data/lib/administrate/page/collection.rb +33 -0
  142. data/lib/administrate/page/form.rb +28 -0
  143. data/lib/administrate/page/show.rb +24 -0
  144. data/lib/administrate/resource_resolver.rb +43 -0
  145. data/lib/administrate/search.rb +47 -0
  146. data/lib/administrate/version.rb +3 -0
  147. data/lib/administrate/view_generator.rb +36 -0
  148. data/lib/generators/administrate/assets/assets_generator.rb +12 -0
  149. data/lib/generators/administrate/assets/javascripts_generator.rb +17 -0
  150. data/lib/generators/administrate/assets/stylesheets_generator.rb +17 -0
  151. data/lib/generators/administrate/dashboard/USAGE +9 -0
  152. data/lib/generators/administrate/dashboard/dashboard_generator.rb +141 -0
  153. data/lib/generators/administrate/dashboard/templates/controller.rb.erb +21 -0
  154. data/lib/generators/administrate/dashboard/templates/dashboard.rb.erb +56 -0
  155. data/lib/generators/administrate/field/field_generator.rb +31 -0
  156. data/lib/generators/administrate/field/templates/_form.html.erb +6 -0
  157. data/lib/generators/administrate/field/templates/_index.html.erb +1 -0
  158. data/lib/generators/administrate/field/templates/_show.html.erb +1 -0
  159. data/lib/generators/administrate/field/templates/field_object.rb.erb +7 -0
  160. data/lib/generators/administrate/install/install_generator.rb +49 -0
  161. data/lib/generators/administrate/install/templates/application_controller.rb.erb +21 -0
  162. data/lib/generators/administrate/routes/routes_generator.rb +91 -0
  163. data/lib/generators/administrate/routes/templates/routes.rb.erb +5 -0
  164. data/lib/generators/administrate/views/edit_generator.rb +16 -0
  165. data/lib/generators/administrate/views/field_generator.rb +50 -0
  166. data/lib/generators/administrate/views/form_generator.rb +15 -0
  167. data/lib/generators/administrate/views/index_generator.rb +16 -0
  168. data/lib/generators/administrate/views/layout_generator.rb +23 -0
  169. data/lib/generators/administrate/views/navigation_generator.rb +15 -0
  170. data/lib/generators/administrate/views/new_generator.rb +16 -0
  171. data/lib/generators/administrate/views/show_generator.rb +15 -0
  172. data/lib/generators/administrate/views/views_generator.rb +14 -0
  173. data/lib/tasks/administrate_tasks.rake +4 -0
  174. metadata +388 -0
@@ -0,0 +1,93 @@
1
+ $blue: #53adc6;
2
+ $red: #cf726e;
3
+ $green: #5bc89e;
4
+ $white: #f0f0f0;
5
+
6
+ $code-black: #202020;
7
+ $code-white: #e0e0dc;
8
+ $code-green: #b0bf82;
9
+ $code-blue: #8fbdcc;
10
+ $code-yellow: #f8d29d;
11
+ $code-red: #b95c56;
12
+
13
+ html,
14
+ body {
15
+ font-family: 'Lato', serif;
16
+ font-size: 18px;
17
+ line-height: 1.62em;
18
+ margin: 0;
19
+ }
20
+
21
+ img {
22
+ max-width: 100%;
23
+ }
24
+
25
+ h1,
26
+ h2,
27
+ h3 {
28
+ font-family: 'Fjalla One', sans-serif;
29
+ margin-top: 2em;
30
+ }
31
+
32
+ a {
33
+ color: $blue;
34
+ text-decoration: none;
35
+ }
36
+
37
+ .content {
38
+ margin-bottom: 2em;
39
+ margin-left: auto;
40
+ margin-right: auto;
41
+ margin-top: 2em;
42
+ width: 60em;
43
+
44
+ .sidebar {
45
+ float: left;
46
+ width: 20em;
47
+
48
+ &-links {
49
+ list-style: none;
50
+ padding-left: 0;
51
+ }
52
+ }
53
+
54
+ .main {
55
+ float: right;
56
+ width: 40em;
57
+ }
58
+ }
59
+
60
+ .flash-wrapper {
61
+ background-color: $red;
62
+ color: $white;
63
+ padding: 1em;
64
+
65
+ .flash {
66
+ margin-left: auto;
67
+ margin-right: auto;
68
+ width: 40em;
69
+ }
70
+ }
71
+
72
+ code {
73
+ font-family: "Source Code Pro";
74
+ font-size: 0.8rem;
75
+ padding: 0.4em 0.2em 0;
76
+
77
+ &.hljs {
78
+ background-color: $code-black;
79
+ color: $code-white;
80
+ padding-left: 1rem;
81
+
82
+ .hljs-string { color: $code-green; }
83
+ .hljs-subst { color: $code-white; }
84
+ .hljs-constant { color: $code-blue; }
85
+ .hljs-symbol { color: $code-red; }
86
+ .hljs-keyword { color: $code-yellow; }
87
+
88
+ .hljs-title,
89
+ .hljs-parent { color: $code-blue; }
90
+
91
+ .hljs-tag { color: $code-yellow; }
92
+ }
93
+ }
@@ -0,0 +1,162 @@
1
+ module Administrate
2
+ class ApplicationController < ActionController::Base
3
+ protect_from_forgery with: :exception
4
+
5
+ def index
6
+ search_term = params[:search].to_s.strip
7
+ resources = Administrate::Search.new(scoped_resource,
8
+ dashboard_class,
9
+ search_term).run
10
+ resources = resources.includes(*resource_includes) if resource_includes.any?
11
+ resources = order.apply(resources)
12
+ resources = resources.page(params[:page]).per(records_per_page)
13
+ page = Administrate::Page::Collection.new(dashboard, order: order)
14
+
15
+ render locals: {
16
+ resources: resources,
17
+ search_term: search_term,
18
+ page: page,
19
+ show_search_bar: show_search_bar?
20
+ }
21
+ end
22
+
23
+ def show
24
+ render locals: {
25
+ page: Administrate::Page::Show.new(dashboard, requested_resource),
26
+ }
27
+ end
28
+
29
+ def new
30
+ render locals: {
31
+ page: Administrate::Page::Form.new(dashboard, resource_class.new),
32
+ }
33
+ end
34
+
35
+ def edit
36
+ render locals: {
37
+ page: Administrate::Page::Form.new(dashboard, requested_resource),
38
+ }
39
+ end
40
+
41
+ def create
42
+ resource = resource_class.new(resource_params)
43
+
44
+ if resource.save
45
+ redirect_to(
46
+ [namespace, resource],
47
+ notice: translate_with_resource("create.success"),
48
+ )
49
+ else
50
+ render :new, locals: {
51
+ page: Administrate::Page::Form.new(dashboard, resource),
52
+ }
53
+ end
54
+ end
55
+
56
+ def update
57
+ if requested_resource.update(resource_params)
58
+ redirect_to(
59
+ [namespace, requested_resource],
60
+ notice: translate_with_resource("update.success"),
61
+ )
62
+ else
63
+ render :edit, locals: {
64
+ page: Administrate::Page::Form.new(dashboard, requested_resource),
65
+ }
66
+ end
67
+ end
68
+
69
+ def destroy
70
+ requested_resource.destroy
71
+ flash[:notice] = translate_with_resource("destroy.success")
72
+ redirect_to action: :index
73
+ end
74
+
75
+ private
76
+
77
+ helper_method :nav_link_state
78
+ def nav_link_state(resource)
79
+ resource_name.to_s.pluralize == resource.to_s ? :active : :inactive
80
+ end
81
+
82
+ helper_method :valid_action?
83
+ def valid_action?(name, resource = resource_class)
84
+ !!routes.detect do |controller, action|
85
+ controller == resource.to_s.underscore.pluralize && action == name.to_s
86
+ end
87
+ end
88
+
89
+ def routes
90
+ @routes ||= Namespace.new(namespace).routes
91
+ end
92
+
93
+ def records_per_page
94
+ params[:per_page] || 20
95
+ end
96
+
97
+ def order
98
+ @_order ||= Administrate::Order.new(params[:order], params[:direction])
99
+ end
100
+
101
+ def dashboard
102
+ @_dashboard ||= dashboard_class.new
103
+ end
104
+
105
+ def requested_resource
106
+ @_requested_resource ||= find_resource(params[:id])
107
+ end
108
+
109
+ def find_resource(param)
110
+ scoped_resource.find(param)
111
+ end
112
+
113
+ def scoped_resource
114
+ resource_class.default_scoped
115
+ end
116
+
117
+ def resource_includes
118
+ dashboard.association_includes
119
+ end
120
+
121
+ def resource_params
122
+ params.require(resource_class.model_name.param_key).
123
+ permit(dashboard.permitted_attributes).
124
+ transform_values { |v| read_param_value(v) }
125
+ end
126
+
127
+ def read_param_value(data)
128
+ if data.is_a?(ActionController::Parameters) && data[:type]
129
+ if data[:type] == Administrate::Field::Polymorphic.to_s
130
+ GlobalID::Locator.locate(data[:value])
131
+ else
132
+ raise "Unrecognised param data: #{data.inspect}"
133
+ end
134
+ else
135
+ data
136
+ end
137
+ end
138
+
139
+ delegate :dashboard_class, :resource_class, :resource_name, :namespace,
140
+ to: :resource_resolver
141
+ helper_method :namespace
142
+ helper_method :resource_name
143
+
144
+ def resource_resolver
145
+ @_resource_resolver ||=
146
+ Administrate::ResourceResolver.new(controller_path)
147
+ end
148
+
149
+ def translate_with_resource(key)
150
+ t(
151
+ "administrate.controller.#{key}",
152
+ resource: resource_resolver.resource_title,
153
+ )
154
+ end
155
+
156
+ def show_search_bar?
157
+ dashboard.attribute_types_for(
158
+ dashboard.collection_attributes
159
+ ).any? { |_name, attribute| attribute.searchable? }
160
+ end
161
+ end
162
+ end
@@ -0,0 +1,51 @@
1
+ require 'digest'
2
+
3
+ module Administrate
4
+ module ApplicationHelper
5
+ PLURAL_MANY_COUNT = 2.1
6
+
7
+ def gravatar_for_email(email, size = 120)
8
+ hash = Digest::MD5.hexdigest(email)
9
+
10
+ "//www.gravatar.com/avatar/#{hash}?s=#{size}"
11
+ end
12
+
13
+ def render_field(field, locals = {})
14
+ locals.merge!(field: field)
15
+ render locals: locals, partial: field.to_partial_path
16
+ end
17
+
18
+ def class_from_resource(resource_name)
19
+ resource_name.to_s.classify.constantize
20
+ end
21
+
22
+ def display_resource_name(resource_name)
23
+ class_from_resource(resource_name).
24
+ model_name.
25
+ human(
26
+ count: PLURAL_MANY_COUNT,
27
+ default: resource_name.to_s.pluralize.titleize,
28
+ )
29
+ end
30
+
31
+ def sort_order(order)
32
+ case order
33
+ when "asc" then "ascending"
34
+ when "desc" then "descending"
35
+ else "none"
36
+ end
37
+ end
38
+
39
+ def resource_index_route_key(resource_name)
40
+ ActiveModel::Naming.route_key(class_from_resource(resource_name))
41
+ end
42
+
43
+ def sanitized_order_params
44
+ params.permit(:search, :id, :order, :page, :per_page, :direction, :orders)
45
+ end
46
+
47
+ def clear_search_params
48
+ params.except(:search, :page).permit(:order, :direction, :per_page)
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,92 @@
1
+ <%#
2
+ # Collection
3
+
4
+ This partial is used on the `index` and `show` pages
5
+ to display a collection of resources in an HTML table.
6
+
7
+ ## Local variables:
8
+
9
+ - `collection_presenter`:
10
+ An instance of [Administrate::Page::Collection][1].
11
+ The table presenter uses `ResourceDashboard::COLLECTION_ATTRIBUTES` to determine
12
+ the columns displayed in the table
13
+ - `resources`:
14
+ An ActiveModel::Relation collection of resources to be displayed in the table.
15
+ By default, the number of resources is limited by pagination
16
+ or by a hard limit to prevent excessive page load times
17
+
18
+ [1]: http://www.rubydoc.info/gems/administrate/Administrate/Page/Collection
19
+ %>
20
+
21
+ <table class="ui very basic table" aria-labelledby="<%= table_title %>">
22
+ <thead>
23
+ <tr>
24
+ <% collection_presenter.attribute_types.each do |attr_name, attr_type| %>
25
+ <th class="cell-label
26
+ cell-label--<%= attr_type.html_class %>
27
+ cell-label--<%= collection_presenter.ordered_html_class(attr_name) %>"
28
+ scope="col"
29
+ role="columnheader"
30
+ aria-sort="<%= sort_order(collection_presenter.ordered_html_class(attr_name)) %>">
31
+ <%= link_to(sanitized_order_params.merge(
32
+ collection_presenter.order_params_for(attr_name)
33
+ )) do %>
34
+ <%= t(
35
+ "helpers.label.#{collection_presenter.resource_name}.#{attr_name}",
36
+ default: attr_name.to_s,
37
+ ).titleize %>
38
+
39
+ <% if collection_presenter.ordered_by?(attr_name) %>
40
+ <span class="cell-label__sort-indicator cell-label__sort-indicator--<%= collection_presenter.ordered_html_class(attr_name) %>">
41
+ <svg aria-hidden="true">
42
+ <use xlink:href="#icon-up-caret" />
43
+ </svg>
44
+ </span>
45
+ <% end %>
46
+ <% end %>
47
+ </th>
48
+ <% end %>
49
+ <% [valid_action?(:edit, collection_presenter.resource_name),
50
+ valid_action?(:destroy, collection_presenter.resource_name)].count(true).times do %>
51
+ <th scope="col"></th>
52
+ <% end %>
53
+ </tr>
54
+ </thead>
55
+
56
+ <tbody>
57
+ <% resources.each do |resource| %>
58
+ <tr class="js-table-row"
59
+ tabindex="0"
60
+ <% if valid_action? :show, collection_presenter.resource_name %>
61
+ <%= %(role=link data-url=#{polymorphic_path([namespace, resource])}) %>
62
+ <% end %>
63
+ >
64
+ <% collection_presenter.attributes_for(resource).each do |attribute| %>
65
+ <td class="cell-data cell-data--<%= attribute.html_class %>">
66
+ <a href="<%= polymorphic_path([namespace, resource]) -%>"
67
+ class="action-show"
68
+ >
69
+ <%= render_field attribute %>
70
+ </a>
71
+ </td>
72
+ <% end %>
73
+
74
+ <% if valid_action? :edit, collection_presenter.resource_name %>
75
+ <td><%= link_to(
76
+ t("administrate.actions.edit"),
77
+ [:edit, namespace, resource],
78
+ ) %></td>
79
+ <% end %>
80
+
81
+ <% if valid_action? :destroy, collection_presenter.resource_name %>
82
+ <td class="cell-data--red"><%= link_to(
83
+ t("administrate.actions.destroy"),
84
+ [namespace, resource],
85
+ method: :delete,
86
+ data: { confirm: t("administrate.actions.confirm") }
87
+ ) %></td>
88
+ <% end %>
89
+ </tr>
90
+ <% end %>
91
+ </tbody>
92
+ </table>
@@ -0,0 +1,20 @@
1
+ <%#
2
+ # Flash Partial
3
+
4
+ This partial renders flash messages on every page.
5
+
6
+ ## Relevant Helpers:
7
+
8
+ - `flash`:
9
+ Returns a hash,
10
+ where the keys are the type of flash (alert, error, notice, etc)
11
+ and the values are the message to be displayed.
12
+ %>
13
+
14
+ <% if flash.any? %>
15
+ <div class="flashes">
16
+ <% flash.each do |key, value| -%>
17
+ <div class="flash flash-<%= key %>"><%= value %></div>
18
+ <% end -%>
19
+ </div>
20
+ <% end %>
@@ -0,0 +1,42 @@
1
+ <%#
2
+ # Form Partial
3
+
4
+ This partial is rendered on a resource's `new` and `edit` pages,
5
+ and renders all form fields for a resource's editable attributes.
6
+
7
+ ## Local variables:
8
+
9
+ - `page`:
10
+ An instance of [Administrate::Page::Form][1].
11
+ Contains helper methods to display a form,
12
+ and knows which attributes should be displayed in the resource's form.
13
+
14
+ [1]: http://www.rubydoc.info/gems/administrate/Administrate/Page/Form
15
+ %>
16
+
17
+ <%= form_for([namespace, page.resource], html: { class: "form" }) do |f| %>
18
+ <% if page.resource.errors.any? %>
19
+ <div id="error_explanation">
20
+ <h2>
21
+ <%= pluralize(page.resource.errors.count, "error") %>
22
+ prohibited this <%= page.resource_name %> from being saved:
23
+ </h2>
24
+
25
+ <ul>
26
+ <% page.resource.errors.full_messages.each do |message| %>
27
+ <li class="flash-error"><%= message %></li>
28
+ <% end %>
29
+ </ul>
30
+ </div>
31
+ <% end %>
32
+
33
+ <% page.attributes.each do |attribute| -%>
34
+ <div class="field-unit field-unit--<%= attribute.html_class %>">
35
+ <%= render_field attribute, f: f %>
36
+ </div>
37
+ <% end -%>
38
+
39
+ <div class="form-actions">
40
+ <%= f.submit %>
41
+ </div>
42
+ <% end %>