tolaria 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +66 -0
- data/.yardopts +4 -0
- data/CNAME +1 -0
- data/CONTRIBUTING.md +32 -0
- data/Gemfile +2 -0
- data/LICENSE.md +9 -0
- data/README.md +538 -0
- data/Rakefile +52 -0
- data/app/assets/fonts/admin/fontawesome.eot +0 -0
- data/app/assets/fonts/admin/fontawesome.svg +565 -0
- data/app/assets/fonts/admin/fontawesome.ttf +0 -0
- data/app/assets/fonts/admin/fontawesome.woff +0 -0
- data/app/assets/fonts/admin/fontawesome.woff2 +0 -0
- data/app/assets/images/admin/columbia_banner.png +0 -0
- data/app/assets/images/admin/favicon.ico +0 -0
- data/app/assets/images/admin/noise.png +0 -0
- data/app/assets/images/admin/select_arrows.svg +1 -0
- data/app/assets/javascripts/admin/admin.js +4 -0
- data/app/assets/javascripts/admin/base.js +12 -0
- data/app/assets/javascripts/admin/lib/backbone.js +1888 -0
- data/app/assets/javascripts/admin/lib/jquery.chosen.js +1272 -0
- data/app/assets/javascripts/admin/lib/jquery.js +10361 -0
- data/app/assets/javascripts/admin/lib/jquery.selection.js +352 -0
- data/app/assets/javascripts/admin/lib/moment.js +3103 -0
- data/app/assets/javascripts/admin/lib/no.js +6 -0
- data/app/assets/javascripts/admin/lib/underscore.js +1570 -0
- data/app/assets/javascripts/admin/models/composer_buttons.js +45 -0
- data/app/assets/javascripts/admin/models/rails_meta.js +4 -0
- data/app/assets/javascripts/admin/views/field_with_errors.js +19 -0
- data/app/assets/javascripts/admin/views/fields/attachment_field.js +32 -0
- data/app/assets/javascripts/admin/views/fields/has_many.js +64 -0
- data/app/assets/javascripts/admin/views/fields/image_association_select.js +31 -0
- data/app/assets/javascripts/admin/views/fields/markdown_composer.js +167 -0
- data/app/assets/javascripts/admin/views/fields/searchable_select.js +70 -0
- data/app/assets/javascripts/admin/views/fields/slug_field.js +38 -0
- data/app/assets/javascripts/admin/views/fields/swatch_field.js +55 -0
- data/app/assets/javascripts/admin/views/fields/timestamp_field.js +80 -0
- data/app/assets/javascripts/admin/views/flash_message.js +18 -0
- data/app/assets/javascripts/admin/views/form_orchestrator.js +41 -0
- data/app/assets/javascripts/admin/views/navigation.js +20 -0
- data/app/assets/javascripts/admin/views/resource_form.js +18 -0
- data/app/assets/javascripts/admin/views/search_form.js +20 -0
- data/app/assets/javascripts/admin/views/sessions.js +109 -0
- data/app/assets/javascripts/admin/views/virtual_form.js +47 -0
- data/app/assets/stylesheets/admin/_base.scss +5 -0
- data/app/assets/stylesheets/admin/_reset.scss +149 -0
- data/app/assets/stylesheets/admin/_root.scss +63 -0
- data/app/assets/stylesheets/admin/admin.scss +4 -0
- data/app/assets/stylesheets/admin/components/_blank_slate.scss +44 -0
- data/app/assets/stylesheets/admin/components/_buttons.scss +82 -0
- data/app/assets/stylesheets/admin/components/_flash_message.scss +64 -0
- data/app/assets/stylesheets/admin/components/_footer.scss +9 -0
- data/app/assets/stylesheets/admin/components/_header.scss +107 -0
- data/app/assets/stylesheets/admin/components/_index_table.scss +120 -0
- data/app/assets/stylesheets/admin/components/_main.scss +68 -0
- data/app/assets/stylesheets/admin/components/_markdown_body.scss +109 -0
- data/app/assets/stylesheets/admin/components/_navigation.scss +110 -0
- data/app/assets/stylesheets/admin/components/_pagination.scss +36 -0
- data/app/assets/stylesheets/admin/components/_pill.scss +11 -0
- data/app/assets/stylesheets/admin/components/_resource_form.scss +222 -0
- data/app/assets/stylesheets/admin/components/_search_form.scss +36 -0
- data/app/assets/stylesheets/admin/components/_sessions.scss +152 -0
- data/app/assets/stylesheets/admin/components/_show_table.scss +67 -0
- data/app/assets/stylesheets/admin/components/forms/_attachment_field.scss +59 -0
- data/app/assets/stylesheets/admin/components/forms/_chosen.scss +478 -0
- data/app/assets/stylesheets/admin/components/forms/_image_association_select.scss +20 -0
- data/app/assets/stylesheets/admin/components/forms/_markdown_composer.scss +149 -0
- data/app/assets/stylesheets/admin/components/forms/_nested_fields.scss +63 -0
- data/app/assets/stylesheets/admin/components/forms/_searchable_select.scss +8 -0
- data/app/assets/stylesheets/admin/components/forms/_slug_field.scss +20 -0
- data/app/assets/stylesheets/admin/components/forms/_swatch_field.scss +47 -0
- data/app/assets/stylesheets/admin/components/forms/_timestamp_field.scss +15 -0
- data/app/assets/stylesheets/admin/components/help_link.scss +6 -0
- data/app/assets/stylesheets/admin/mixins/_clearfix.scss +18 -0
- data/app/assets/stylesheets/admin/mixins/_min_max_width.scss +11 -0
- data/app/assets/stylesheets/admin/mixins/_rgbb.scss +7 -0
- data/app/assets/stylesheets/admin/mixins/_visuallyhidden.scss +33 -0
- data/app/assets/stylesheets/admin/settings/_animations.scss +21 -0
- data/app/assets/stylesheets/admin/settings/_breakpoints.scss +2 -0
- data/app/assets/stylesheets/admin/settings/_colors.scss +32 -0
- data/app/assets/stylesheets/admin/settings/_fonts.scss +31 -0
- data/app/assets/stylesheets/admin/settings/_icons.scss +1658 -0
- data/app/controllers/admin/admin_controller.rb +21 -0
- data/app/controllers/admin/sessions_controller.rb +112 -0
- data/app/controllers/tolaria/resource_controller.rb +132 -0
- data/app/controllers/tolaria/tolaria_controller.rb +40 -0
- data/app/helpers/admin/table_helper.rb +175 -0
- data/app/helpers/admin/view_helper.rb +76 -0
- data/app/mailers/passcode_mailer.rb +11 -0
- data/app/models/administrator.rb +146 -0
- data/app/views/admin/administrators/_form.html.erb +16 -0
- data/app/views/admin/administrators/_index.html.erb +20 -0
- data/app/views/admin/administrators/_search.html.erb +5 -0
- data/app/views/admin/administrators/_show.html.erb +14 -0
- data/app/views/admin/help/help_link.html.erb +16 -0
- data/app/views/admin/session/form.html.erb +52 -0
- data/app/views/admin/shared/_flash_messages.html.erb +42 -0
- data/app/views/admin/shared/_footer.html.erb +8 -0
- data/app/views/admin/shared/_head.html.erb +11 -0
- data/app/views/admin/shared/_header.html.erb +43 -0
- data/app/views/admin/shared/_navigation.html.erb +47 -0
- data/app/views/admin/shared/_skiplinks.html.erb +0 -0
- data/app/views/admin/shared/forms/_attachment_field.html.erb +17 -0
- data/app/views/admin/shared/forms/_has_many.html.erb +14 -0
- data/app/views/admin/shared/forms/_has_many_header.html.erb +19 -0
- data/app/views/admin/shared/forms/_image_association_select.html.erb +6 -0
- data/app/views/admin/shared/forms/_image_field.html.erb +19 -0
- data/app/views/admin/shared/forms/_markdown_composer.html.erb +29 -0
- data/app/views/admin/shared/forms/_searchable_select.html.erb +3 -0
- data/app/views/admin/shared/forms/_slug_field.html.erb +9 -0
- data/app/views/admin/shared/forms/_swatch_field.html.erb +4 -0
- data/app/views/admin/shared/forms/_timestamp_field.html.erb +19 -0
- data/app/views/admin/tolaria_resource/_form_buttons.html.erb +10 -0
- data/app/views/admin/tolaria_resource/_index_table.html.erb +73 -0
- data/app/views/admin/tolaria_resource/_search_form.html.erb +32 -0
- data/app/views/admin/tolaria_resource/_show_buttons.html.erb +13 -0
- data/app/views/admin/tolaria_resource/edit.html.erb +34 -0
- data/app/views/admin/tolaria_resource/index.html.erb +36 -0
- data/app/views/admin/tolaria_resource/new.html.erb +1 -0
- data/app/views/admin/tolaria_resource/show.html.erb +52 -0
- data/app/views/kaminari/admin/_first_page.html.erb +9 -0
- data/app/views/kaminari/admin/_last_page.html.erb +9 -0
- data/app/views/kaminari/admin/_next_page.html.erb +9 -0
- data/app/views/kaminari/admin/_page.html.erb +17 -0
- data/app/views/kaminari/admin/_paginator.html.erb +21 -0
- data/app/views/kaminari/admin/_prev_page.html.erb +9 -0
- data/app/views/layouts/admin/admin.html.erb +21 -0
- data/app/views/layouts/admin/sessions.html.erb +12 -0
- data/app/views/passcode_mailer/passcode.text.erb +5 -0
- data/lib/generators/tolaria/install/install_generator.rb +21 -0
- data/lib/generators/tolaria/install/templates/administrators_migration.rb +31 -0
- data/lib/generators/tolaria/install/templates/tolaria_initializer.rb +93 -0
- data/lib/tasks/admin.rake +32 -0
- data/lib/tolaria.rb +27 -0
- data/lib/tolaria/active_record.rb +55 -0
- data/lib/tolaria/admin.rb +4 -0
- data/lib/tolaria/categories.rb +21 -0
- data/lib/tolaria/config.rb +40 -0
- data/lib/tolaria/default_config.rb +74 -0
- data/lib/tolaria/engine.rb +23 -0
- data/lib/tolaria/form_buildable.rb +203 -0
- data/lib/tolaria/help_links.rb +78 -0
- data/lib/tolaria/introspection.rb +13 -0
- data/lib/tolaria/manage.rb +57 -0
- data/lib/tolaria/managed_class.rb +90 -0
- data/lib/tolaria/markdown.rb +28 -0
- data/lib/tolaria/random_tokens.rb +16 -0
- data/lib/tolaria/reload.rb +21 -0
- data/lib/tolaria/routes.rb +33 -0
- data/lib/tolaria/version.rb +13 -0
- data/test/demo/Rakefile +4 -0
- data/test/demo/app/assets/javascripts/application.js +1 -0
- data/test/demo/app/assets/stylesheets/application.scss +1 -0
- data/test/demo/app/controllers/application_controller.rb +5 -0
- data/test/demo/app/controllers/concerns/.keep +0 -0
- data/test/demo/app/controllers/homepage_controller.rb +4 -0
- data/test/demo/app/helpers/application_helper.rb +2 -0
- data/test/demo/app/mailers/.keep +0 -0
- data/test/demo/app/models/.keep +0 -0
- data/test/demo/app/models/blog_post.rb +43 -0
- data/test/demo/app/models/footnote.rb +5 -0
- data/test/demo/app/models/image.rb +19 -0
- data/test/demo/app/models/legal_page.rb +24 -0
- data/test/demo/app/models/miscellany.rb +12 -0
- data/test/demo/app/models/topic.rb +22 -0
- data/test/demo/app/models/video.rb +16 -0
- data/test/demo/app/views/admin/blog_posts/_form.html.erb +48 -0
- data/test/demo/app/views/admin/blog_posts/_search.html.erb +5 -0
- data/test/demo/app/views/admin/help/markdown-help.md +95 -0
- data/test/demo/app/views/admin/images/_form.html.erb +26 -0
- data/test/demo/app/views/admin/legal_pages/_form.html.erb +15 -0
- data/test/demo/app/views/admin/topics/_form.html.erb +3 -0
- data/test/demo/app/views/admin/videos/_form.html.erb +11 -0
- data/test/demo/app/views/homepage/homepage.html.erb +3 -0
- data/test/demo/app/views/layouts/application.html.erb +14 -0
- data/test/demo/bin/bundle +3 -0
- data/test/demo/bin/rails +4 -0
- data/test/demo/bin/rake +4 -0
- data/test/demo/bin/setup +29 -0
- data/test/demo/config.ru +4 -0
- data/test/demo/config/application.rb +26 -0
- data/test/demo/config/boot.rb +4 -0
- data/test/demo/config/database.yml +18 -0
- data/test/demo/config/environment.rb +3 -0
- data/test/demo/config/environments/development.rb +43 -0
- data/test/demo/config/environments/test.rb +44 -0
- data/test/demo/config/initializers/assets.rb +11 -0
- data/test/demo/config/initializers/cookies_serializer.rb +2 -0
- data/test/demo/config/initializers/filter_parameter_logging.rb +3 -0
- data/test/demo/config/initializers/inflections.rb +17 -0
- data/test/demo/config/initializers/markdown.rb +44 -0
- data/test/demo/config/initializers/secret_token.rb +2 -0
- data/test/demo/config/initializers/session_store.rb +2 -0
- data/test/demo/config/initializers/tolaria.rb +17 -0
- data/test/demo/config/initializers/wrap_parameters.rb +14 -0
- data/test/demo/config/routes.rb +4 -0
- data/test/demo/db/migrate/20150601202901_create_administrators.rb +31 -0
- data/test/demo/db/migrate/20150603204006_add_testing_models.rb +27 -0
- data/test/demo/db/migrate/20150609232013_create_footnotes.rb +10 -0
- data/test/demo/db/migrate/20150610135235_create_additional_demo_objects.rb +50 -0
- data/test/demo/db/schema.rb +112 -0
- data/test/demo/log/.keep +0 -0
- data/test/demo/public/404.html +67 -0
- data/test/demo/public/422.html +67 -0
- data/test/demo/public/500.html +66 -0
- data/test/demo/public/favicon.ico +0 -0
- data/test/integration/help_link_test.rb +73 -0
- data/test/integration/interface_test.rb +63 -0
- data/test/integration/router_test.rb +73 -0
- data/test/integration/session_test.rb +88 -0
- data/test/test_helper.rb +58 -0
- data/test/unit/configuration_test.rb +21 -0
- data/test/unit/managed_classes_test.rb +54 -0
- data/test/unit/markdown_test.rb +12 -0
- data/test/unit/menu_test.rb +32 -0
- data/test/unit/random_tokens_test.rb +13 -0
- data/tolaria.gemspec +35 -0
- metadata +499 -0
@@ -0,0 +1,47 @@
|
|
1
|
+
<div class="navigation">
|
2
|
+
|
3
|
+
<% Tolaria.categories.each do |category| %>
|
4
|
+
|
5
|
+
<div class="navigation-group">
|
6
|
+
<h3><%= category %></h3>
|
7
|
+
<ul>
|
8
|
+
<% Tolaria.classes_for_category(category).each do |managed_class| %>
|
9
|
+
<% if managed_class.allows?(:index) %>
|
10
|
+
<li>
|
11
|
+
<%= tolaria_navigation_link(
|
12
|
+
managed_class.model_name.human.pluralize.titleize,
|
13
|
+
managed_class.icon,
|
14
|
+
url_for(action:"index", controller:managed_class.plural)
|
15
|
+
) %>
|
16
|
+
</li>
|
17
|
+
<% end %>
|
18
|
+
<% end %>
|
19
|
+
</ul>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<% end %>
|
23
|
+
|
24
|
+
<% if Tolaria.help_links.any? %>
|
25
|
+
<div class="navigation-group mobile-only">
|
26
|
+
<h3>Links and Help</h3>
|
27
|
+
<ul>
|
28
|
+
<% Tolaria.help_links.each do |help_link| %>
|
29
|
+
<% if help_link.markdown_type? %>
|
30
|
+
<li><%= tolaria_navigation_link help_link.title, :info_circle, admin_help_link_path(help_link) %></li>
|
31
|
+
<% else %>
|
32
|
+
<li><%= tolaria_navigation_link help_link.title, :info_circle, help_link.link_to %></li>
|
33
|
+
<% end %>
|
34
|
+
<% end %>
|
35
|
+
</ul>
|
36
|
+
</div>
|
37
|
+
<% end %>
|
38
|
+
|
39
|
+
<div class="navigation-group mobile-only">
|
40
|
+
<h3>Options</h3>
|
41
|
+
<ul>
|
42
|
+
<li><%= tolaria_navigation_link "Your Account", :user, edit_admin_administrator_path(current_administrator) %></li>
|
43
|
+
<li><%= tolaria_navigation_link "Sign Out", :sign_out, admin_destroy_session_path, method: :delete %></li>
|
44
|
+
</ul>
|
45
|
+
</div>
|
46
|
+
|
47
|
+
</div>
|
File without changes
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<div class="attachment-field">
|
2
|
+
|
3
|
+
<%= f.file_field method, options %>
|
4
|
+
|
5
|
+
<%= button_tag type:"button", class:"button attachment-field-button" do %>
|
6
|
+
|
7
|
+
<% if f.object.send(method).present? %>
|
8
|
+
<%= fontawesome_icon :file_text_o %>
|
9
|
+
<%= content_tag :span, "Replace this file", class:"attachment-field-label" %>
|
10
|
+
<% else %>
|
11
|
+
<%= fontawesome_icon :paperclip %>
|
12
|
+
<%= content_tag :span, "Attach a file", class:"attachment-field-label" %>
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
<% end %>
|
16
|
+
|
17
|
+
</div>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<div class="has-many">
|
2
|
+
|
3
|
+
<%= existing_fields %>
|
4
|
+
|
5
|
+
<% if allow_create %>
|
6
|
+
<%= button_tag type:"button", class:"has-many-create", data:data do %>
|
7
|
+
<%= content_tag :span, class:"button" do %>
|
8
|
+
<%= fontawesome_icon :plus %>
|
9
|
+
<%= "Add a new #{button_label}" %>
|
10
|
+
<% end %>
|
11
|
+
<% end %>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
</div>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<h3 class="has-many-header">
|
2
|
+
<span><%= f.object.model_name.human.titleize %></span>
|
3
|
+
<% if allow_destroy %>
|
4
|
+
<%= button_tag "Remove", type:"button", class:"has-many-group-remove button -small" %>
|
5
|
+
<% end %>
|
6
|
+
</h3>
|
7
|
+
|
8
|
+
<% if allow_destroy %>
|
9
|
+
|
10
|
+
<%= button_tag type:"button", class:"has-many-undo", style:"display:none" do %>
|
11
|
+
<span class="has-many-undo-text">This <%= f.object.model_name.human %> will be removed when you save your changes.</span>
|
12
|
+
<span class="button -small"><%= fontawesome_icon :undo %> Undo</span>
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
<% if f.object.persisted? %>
|
16
|
+
<%= f.hidden_field :_destroy, value:0 %>
|
17
|
+
<% end %>
|
18
|
+
|
19
|
+
<% end %>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<div class="image-association-select">
|
2
|
+
<div class="searchable-select">
|
3
|
+
<%= f.select method, collection.map{ |c| [c.send(text_method), c.send(value_method), {:'data-url' => c.send(preview_url_method)}] }, options, html_options %>
|
4
|
+
</div>
|
5
|
+
<%= image_tag nil, class: "image-association-select-image -hidden" %>
|
6
|
+
</div>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<div class="attachment-field">
|
2
|
+
|
3
|
+
<%= f.file_field method, options %>
|
4
|
+
|
5
|
+
<%= button_tag type:"button", class:"button attachment-field-button" do %>
|
6
|
+
|
7
|
+
<% if f.object.send(method).present? %>
|
8
|
+
<%= fontawesome_icon :paperclip, style:"display:none" %>
|
9
|
+
<%= content_tag :span, nil, class:"attachment-field-preview -present", style:"background-image:url(#{preview_url})" %>
|
10
|
+
<%= content_tag :span, "Replace this image", class:"attachment-field-label" %>
|
11
|
+
<% else %>
|
12
|
+
<%= fontawesome_icon :paperclip, style:"display:none" %>
|
13
|
+
<%= content_tag :span, nil, class:"attachment-field-preview" %>
|
14
|
+
<%= content_tag :span, "Attach an image", class:"attachment-field-label" %>
|
15
|
+
<% end %>
|
16
|
+
|
17
|
+
<% end %>
|
18
|
+
|
19
|
+
</div>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<div class="markdown-composer">
|
2
|
+
|
3
|
+
<div class="markdown-composer-controls">
|
4
|
+
|
5
|
+
<div class="markdown-composer-controls-left">
|
6
|
+
<button type="button" tabindex="-1" class="markdown-composer-button -header icon icon-header" title="Header"></button>
|
7
|
+
<button type="button" tabindex="-1" class="markdown-composer-button -em icon icon-italic" title="Italic Text"></button>
|
8
|
+
<button type="button" tabindex="-1" class="markdown-composer-button -strong icon icon-bold" title="Bold Text"></button>
|
9
|
+
<button type="button" tabindex="-1" class="markdown-composer-button -link icon icon-link" title="Link"></button>
|
10
|
+
<button type="button" tabindex="-1" class="markdown-composer-button -ordered-list icon icon-list-ol" title="Numeric List"></button>
|
11
|
+
<button type="button" tabindex="-1" class="markdown-composer-button -unordered-list icon icon-list-ul" title="Bullet List"></button>
|
12
|
+
<button type="button" tabindex="-1" class="markdown-composer-button -blockquote icon icon-quote-left" title="Pullquote"></button>
|
13
|
+
</div>
|
14
|
+
|
15
|
+
<div class="markdown-composer-controls-right">
|
16
|
+
<button type="button" tabindex="-1" class="markdown-composer-button -fullscreen-toggle">
|
17
|
+
<span>Fullscreen</span>
|
18
|
+
<%= fontawesome_icon :arrows_alt %>
|
19
|
+
</button>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div class="markdown-composer-workspace">
|
25
|
+
<%= f.text_area method, options.reverse_merge({rows: 20}) %>
|
26
|
+
<div class="markdown-composer-preview markdown-body" style="display:none"></div>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
</div>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<div class="timestamp-field">
|
2
|
+
|
3
|
+
<div class="timestamp-field-selects">
|
4
|
+
<%= f.datetime_select method, {
|
5
|
+
use_two_digit_numbers: true,
|
6
|
+
date_seperator: false,
|
7
|
+
ampm: true,
|
8
|
+
include_blank: "",
|
9
|
+
} %>
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<%= f.text_field method, options.reverse_merge({
|
13
|
+
:value => f.object.send(method).try(:strftime, "%Y-%m-%d %I:%M %p"),
|
14
|
+
:'data-recovery-value' => Time.current.strftime("%Y-%m-%d %I:%M %p"),
|
15
|
+
name: "", # KLUDGE: don't duplicate field names
|
16
|
+
id: "", # KLUDGE: don't duplicate field IDs
|
17
|
+
}) %>
|
18
|
+
|
19
|
+
</div>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<%= link_to url_for([:admin, @managed_class.klass]), class:"button" do %>
|
2
|
+
<%= fontawesome_icon :close %>
|
3
|
+
Cancel
|
4
|
+
<% end %>
|
5
|
+
|
6
|
+
<%= button_tag type:"submit", name:nil, class:"button -primary" do %>
|
7
|
+
<%= fontawesome_icon :check %>
|
8
|
+
<%= @resource.persisted?? "Save" : "Create" %>
|
9
|
+
<%= @managed_class.model_name.human.titleize %>
|
10
|
+
<% end %>
|
@@ -0,0 +1,73 @@
|
|
1
|
+
<% if @managed_class.no_resources? %>
|
2
|
+
|
3
|
+
<% # Render a blank-slate because there’s nothing to list %>
|
4
|
+
|
5
|
+
<div class="blank-slate">
|
6
|
+
<span class="blank-slate-icons"><%= fontawesome_icon @managed_class.icon %></span>
|
7
|
+
<h3 class="blank-slate-header">
|
8
|
+
No <%= @managed_class.model_name.human.pluralize.titleize %> live here.
|
9
|
+
</h3>
|
10
|
+
<% if @managed_class.allows?(:new) %>
|
11
|
+
<p class="blank-slate-text">Get started on the first one:</p>
|
12
|
+
<%= link_to url_for(action:"new"), class:"button -primary" do %>
|
13
|
+
<%= fontawesome_icon :plus %>
|
14
|
+
New <%= @managed_class.model_name.human.titleize %>
|
15
|
+
<% end %>
|
16
|
+
<% end %>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<% elsif currently_filtering? && @resources.none? %>
|
20
|
+
|
21
|
+
<% # Render a blank slate because nothing was found by searching %>
|
22
|
+
|
23
|
+
<div class="blank-slate">
|
24
|
+
<span class="blank-slate-icons"><%= fontawesome_icon :search %></span>
|
25
|
+
<h3 class="blank-slate-header">
|
26
|
+
Your search didn't find any <%= @managed_class.model_name.human.pluralize.titleize %>.
|
27
|
+
</h3>
|
28
|
+
<p class="blank-slate-text">
|
29
|
+
You can <%= link_to "clear the search form", url_for([:admin, @managed_class.klass]) %>
|
30
|
+
to start over.
|
31
|
+
</p>
|
32
|
+
</div>
|
33
|
+
|
34
|
+
<% elsif admin_template_exists?("#{@managed_class.plural}/index") %>
|
35
|
+
|
36
|
+
<div class="index-table-wrap">
|
37
|
+
<%= render partial:"admin/#{@managed_class.plural}/index" %>
|
38
|
+
</div>
|
39
|
+
|
40
|
+
<% else %>
|
41
|
+
|
42
|
+
<% # Render a default table because the developer didn’t provide one %>
|
43
|
+
|
44
|
+
<%= index_table do %>
|
45
|
+
<thead>
|
46
|
+
<tr>
|
47
|
+
<%= index_th :id %>
|
48
|
+
<%= index_th "Name", sort:false %>
|
49
|
+
<%= actions_th %>
|
50
|
+
</tr>
|
51
|
+
</thead>
|
52
|
+
<tbody>
|
53
|
+
<% @resources.each do |resource| %>
|
54
|
+
<tr>
|
55
|
+
<%= index_td resource, :id %>
|
56
|
+
<%= index_td resource, Tolaria.display_name(resource) %>
|
57
|
+
<%= actions_td resource %>
|
58
|
+
</tr>
|
59
|
+
<% end %>
|
60
|
+
</tbody>
|
61
|
+
<% end %>
|
62
|
+
|
63
|
+
<% end %>
|
64
|
+
|
65
|
+
<% if @managed_class.paginated? %>
|
66
|
+
|
67
|
+
<% if @resources.any? %>
|
68
|
+
<p class="pagination-desc"><%= page_entries_info @resources %></p>
|
69
|
+
<% end %>
|
70
|
+
|
71
|
+
<%= paginate @resources, theme:"admin", window:2 %>
|
72
|
+
|
73
|
+
<% end %>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<% unless @managed_class.no_resources? %>
|
2
|
+
|
3
|
+
<% search_visbility = currently_filtering?? "display:block" : "display:none" %>
|
4
|
+
<%= search_form_for @search, url:url_for([:admin, @managed_class.klass]), enforce_utf8:false, html:{class:"resource-form search-form", style:search_visbility} do |f| %>
|
5
|
+
|
6
|
+
<% if admin_template_exists?("#{@managed_class.plural}/search") %>
|
7
|
+
|
8
|
+
<% # Use the developer-provided search/filter template %>
|
9
|
+
<%= render partial:"admin/#{@managed_class.plural}/search", locals:{f:f} %>
|
10
|
+
|
11
|
+
<% else %>
|
12
|
+
|
13
|
+
<% # Show a default text filter because no filters were provided %>
|
14
|
+
<%= f.label ransack_text_search_chain(@managed_class.klass), "Containing the text" %>
|
15
|
+
<%= f.search_field ransack_text_search_chain(@managed_class.klass), placeholder:"Anything" %>
|
16
|
+
|
17
|
+
<% end %>
|
18
|
+
|
19
|
+
<div class="search-form-controlls">
|
20
|
+
<%= f.button type:"submit", class:"button -primary", name:nil do %>
|
21
|
+
<%= fontawesome_icon :search %>
|
22
|
+
Search <%= @managed_class.model_name.human.pluralize.titleize %>
|
23
|
+
<% end %>
|
24
|
+
<%= link_to url_for([:admin, @managed_class.klass]), class:"button" do %>
|
25
|
+
<%= fontawesome_icon :close %>
|
26
|
+
Close
|
27
|
+
<% end %>
|
28
|
+
</div>
|
29
|
+
|
30
|
+
<% end %>
|
31
|
+
|
32
|
+
<% end %>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<% if @managed_class.allows?(:destroy) %>
|
2
|
+
<%= link_to url_for(action:"show", id:@resource.id), class:"button -danger", method: :delete, :'data-confirm' => deletion_warning(@resource) do %>
|
3
|
+
<%= fontawesome_icon :trash %>
|
4
|
+
Delete
|
5
|
+
<% end %>
|
6
|
+
<% end %>
|
7
|
+
|
8
|
+
<% if @managed_class.allows?(:edit) %>
|
9
|
+
<%= link_to url_for(action:"edit", id:@resource.id), class:"button -primary" do %>
|
10
|
+
<%= fontawesome_icon :pencil %>
|
11
|
+
Edit This <%= @managed_class.model_name.human.titleize %>
|
12
|
+
<% end %>
|
13
|
+
<% end %>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<% if @resource.persisted? %>
|
2
|
+
<%= content_for :title, "#{Tolaria.display_name(@resource)}" %>
|
3
|
+
<% else %>
|
4
|
+
<%= content_for :title, "New #{@managed_class.model_name.human.titleize}" %>
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
<%= form_for [:admin, @resource], builder:Admin::FormBuilder, html:{class:"resource-form"} do |form_builder| %>
|
8
|
+
|
9
|
+
<div class="main-controls">
|
10
|
+
<div class="main-controls-left">
|
11
|
+
<h1>
|
12
|
+
<span class="crumb">
|
13
|
+
<%= fontawesome_icon @managed_class.icon %>
|
14
|
+
<%= link_to @managed_class.model_name.human.pluralize.titleize, url_for(action:"index", controller:@managed_class.plural) %>
|
15
|
+
</span>
|
16
|
+
<%= content_for :title %>
|
17
|
+
</h1>
|
18
|
+
</div>
|
19
|
+
<div class="main-controls-right desktop-only">
|
20
|
+
<%= render "admin/tolaria_resource/form_buttons" %>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div class="resource-form-interior">
|
25
|
+
<%= render partial:"admin/#{@managed_class.plural}/form", locals:{f:form_builder} %>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<div class="main-controls -inverse">
|
29
|
+
<div class="main-controls-right">
|
30
|
+
<%= render "admin/tolaria_resource/form_buttons" %>
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
|
34
|
+
<% end %>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<%= content_for :title, "#{@managed_class.model_name.human.pluralize.titleize}" %>
|
2
|
+
|
3
|
+
<div class="main-controls">
|
4
|
+
|
5
|
+
<div class="main-controls-left">
|
6
|
+
<h1>
|
7
|
+
<%= fontawesome_icon @managed_class.icon %>
|
8
|
+
<%= content_for :title %>
|
9
|
+
</h1>
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<div class="main-controls-right">
|
13
|
+
|
14
|
+
<% unless @managed_class.no_resources? %>
|
15
|
+
<%= button_tag type:"button", class:"button search-form-toggle" do %>
|
16
|
+
<%= fontawesome_icon :search %>
|
17
|
+
Search
|
18
|
+
<% end %>
|
19
|
+
<% end %>
|
20
|
+
|
21
|
+
<% if @managed_class.allows?(:new) %>
|
22
|
+
<%= link_to url_for(action:"new"), class:"button -primary" do %>
|
23
|
+
<%= fontawesome_icon :plus %>
|
24
|
+
New <%= @managed_class.model_name.human.titleize %>
|
25
|
+
<% end %>
|
26
|
+
<% end %>
|
27
|
+
|
28
|
+
</div>
|
29
|
+
|
30
|
+
</div>
|
31
|
+
|
32
|
+
<%= render "admin/tolaria_resource/search_form" %>
|
33
|
+
<%= render "admin/tolaria_resource/index_table" %>
|
34
|
+
|
35
|
+
|
36
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render template:"admin/tolaria_resource/edit" %>
|
@@ -0,0 +1,52 @@
|
|
1
|
+
<%= content_for :title, Tolaria.display_name(@resource) %>
|
2
|
+
|
3
|
+
<div class="main-controls">
|
4
|
+
|
5
|
+
<div class="main-controls-left">
|
6
|
+
<h1>
|
7
|
+
<span class="crumb">
|
8
|
+
<%= fontawesome_icon @managed_class.icon %>
|
9
|
+
<%= link_to @managed_class.model_name.human.pluralize.titleize, url_for(action:"index", controller:@managed_class.plural) %>
|
10
|
+
</span>
|
11
|
+
<%= content_for :title %>
|
12
|
+
</h1>
|
13
|
+
</div>
|
14
|
+
|
15
|
+
<div class="main-controls-right">
|
16
|
+
<%= render "admin/tolaria_resource/show_buttons" %>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<% if admin_template_exists?("#{@managed_class.plural}/show") %>
|
22
|
+
|
23
|
+
<%= render partial:"admin/#{@managed_class.plural}/show" %>
|
24
|
+
|
25
|
+
<% else %>
|
26
|
+
|
27
|
+
<% # Render a default table because the developer didn’t provide one %>
|
28
|
+
|
29
|
+
<table class="show-table">
|
30
|
+
<thead>
|
31
|
+
<%= show_thead_tr %>
|
32
|
+
</thead>
|
33
|
+
<tbody>
|
34
|
+
<% if @resource.respond_to? :created_at %>
|
35
|
+
<%= show_tr "Created At", @resource.created_at.try(:strftime, "%Y-%m-%d %I:%M %p"), class:"monospace" %>
|
36
|
+
<% end %>
|
37
|
+
<% if @resource.respond_to? :updated_at %>
|
38
|
+
<%= show_tr "Updated At", @resource.updated_at.try(:strftime, "%Y-%m-%d %I:%M %p"), class:"monospace" %>
|
39
|
+
<% end %>
|
40
|
+
<%= show_tr "Label", Tolaria.display_name(@resource) %>
|
41
|
+
</tbody>
|
42
|
+
</table>
|
43
|
+
|
44
|
+
<% end %>
|
45
|
+
|
46
|
+
<div class="main-controls -inverse">
|
47
|
+
|
48
|
+
<div class="main-controls-right">
|
49
|
+
<%= render "admin/tolaria_resource/show_buttons" %>
|
50
|
+
</div>
|
51
|
+
|
52
|
+
</div>
|