brainsome_typus 4.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +488 -0
- data/Gemfile +60 -0
- data/Gemfile.lock +205 -0
- data/MIT-LICENSE +20 -0
- data/README.md +94 -0
- data/Rakefile +33 -0
- data/TODO.md +32 -0
- data/app/assets/javascripts/typus/application.js +11 -0
- data/app/assets/javascripts/typus/custom.js +2 -0
- data/app/assets/javascripts/typus/jquery-1.8.3-min.js +2 -0
- data/app/assets/javascripts/typus/jquery.application.js +33 -0
- data/app/assets/stylesheets/typus/application.css +5 -0
- data/app/assets/stylesheets/typus/custom.css +4 -0
- data/app/assets/stylesheets/typus/overrides.css.scss +46 -0
- data/app/controllers/admin/account_controller.rb +47 -0
- data/app/controllers/admin/base_controller.rb +44 -0
- data/app/controllers/admin/dashboard_controller.rb +5 -0
- data/app/controllers/admin/resource_controller.rb +7 -0
- data/app/controllers/admin/resources_controller.rb +256 -0
- data/app/controllers/admin/session_controller.rb +42 -0
- data/app/controllers/concerns/admin/actions.rb +88 -0
- data/app/controllers/concerns/admin/acts_as_list.rb +26 -0
- data/app/controllers/concerns/admin/ancestry.rb +26 -0
- data/app/controllers/concerns/admin/autocomplete.rb +11 -0
- data/app/controllers/concerns/admin/bulk.rb +76 -0
- data/app/controllers/concerns/admin/featured_image.rb +22 -0
- data/app/controllers/concerns/admin/filters.rb +57 -0
- data/app/controllers/concerns/admin/format.rb +48 -0
- data/app/controllers/concerns/admin/headless.rb +23 -0
- data/app/controllers/concerns/admin/hooks.rb +4 -0
- data/app/controllers/concerns/admin/multisite.rb +10 -0
- data/app/controllers/concerns/admin/navigation.rb +26 -0
- data/app/controllers/concerns/admin/trash.rb +65 -0
- data/app/helpers/admin/base_helper.rb +59 -0
- data/app/helpers/admin/resources/data_types/belongs_to_helper.rb +91 -0
- data/app/helpers/admin/resources/data_types/boolean_helper.rb +28 -0
- data/app/helpers/admin/resources/data_types/date_helper.rb +16 -0
- data/app/helpers/admin/resources/data_types/datetime_helper.rb +19 -0
- data/app/helpers/admin/resources/data_types/dragonfly_helper.rb +56 -0
- data/app/helpers/admin/resources/data_types/float_helper.rb +2 -0
- data/app/helpers/admin/resources/data_types/has_and_belongs_to_many_helper.rb +53 -0
- data/app/helpers/admin/resources/data_types/has_many_helper.rb +66 -0
- data/app/helpers/admin/resources/data_types/has_one_helper.rb +36 -0
- data/app/helpers/admin/resources/data_types/integer_helper.rb +10 -0
- data/app/helpers/admin/resources/data_types/paperclip_helper.rb +36 -0
- data/app/helpers/admin/resources/data_types/position_helper.rb +20 -0
- data/app/helpers/admin/resources/data_types/selector_helper.rb +11 -0
- data/app/helpers/admin/resources/data_types/string_helper.rb +32 -0
- data/app/helpers/admin/resources/data_types/text_helper.rb +7 -0
- data/app/helpers/admin/resources/data_types/transversal_helper.rb +8 -0
- data/app/helpers/admin/resources/data_types/tree_helper.rb +26 -0
- data/app/helpers/admin/resources/display_helper.rb +27 -0
- data/app/helpers/admin/resources/filters_helper.rb +28 -0
- data/app/helpers/admin/resources/form_helper.rb +84 -0
- data/app/helpers/admin/resources/list_helper.rb +31 -0
- data/app/helpers/admin/resources/pagination_helper.rb +28 -0
- data/app/helpers/admin/resources/relationships_helper.rb +34 -0
- data/app/helpers/admin/resources/sidebar_helper.rb +40 -0
- data/app/helpers/admin/resources/table_helper.rb +66 -0
- data/app/helpers/admin/resources_helper.rb +25 -0
- data/app/mailers/admin/mailer.rb +20 -0
- data/app/views/admin/account/_form.html.erb +11 -0
- data/app/views/admin/account/forgot_password.html.erb +19 -0
- data/app/views/admin/account/new.html.erb +13 -0
- data/app/views/admin/dashboard/_sidebar.html.erb +14 -0
- data/app/views/admin/dashboard/index.html.erb +6 -0
- data/app/views/admin/dashboard/styles.html.erb +153 -0
- data/app/views/admin/dashboard/widgets/_applications.html.erb +44 -0
- data/app/views/admin/dashboard/widgets/_default.html.erb +46 -0
- data/app/views/admin/dashboard/widgets/_models.html.erb +23 -0
- data/app/views/admin/dashboard/widgets/_models_extended.html.erb +25 -0
- data/app/views/admin/dashboard/widgets/_resources.html.erb +23 -0
- data/app/views/admin/dashboard/widgets/_users.html.erb +23 -0
- data/app/views/admin/mailer/reset_password_instructions.html.erb +7 -0
- data/app/views/admin/mailer/reset_password_instructions.text.erb +7 -0
- data/app/views/admin/resources/_actions.html.erb +23 -0
- data/app/views/admin/resources/_edit.html.erb +0 -0
- data/app/views/admin/resources/_form.html.erb +41 -0
- data/app/views/admin/resources/_form_javascripts.html.erb +0 -0
- data/app/views/admin/resources/_form_modal.html.erb +13 -0
- data/app/views/admin/resources/_index.html.erb +0 -0
- data/app/views/admin/resources/_new.html.erb +0 -0
- data/app/views/admin/resources/_pagination.html.erb +15 -0
- data/app/views/admin/resources/_show.html.erb +0 -0
- data/app/views/admin/resources/edit/_actions.html.erb +7 -0
- data/app/views/admin/resources/edit/_recently_edited.html.erb +8 -0
- data/app/views/admin/resources/edit.html.erb +22 -0
- data/app/views/admin/resources/index.html.erb +81 -0
- data/app/views/admin/resources/new.html.erb +21 -0
- data/app/views/admin/resources/show.html.erb +27 -0
- data/app/views/admin/session/new.html.erb +21 -0
- data/app/views/admin/shared/_head.html.erb +15 -0
- data/app/views/admin/shared/_modals.html.erb +3 -0
- data/app/views/admin/shared/_sidebar_placeholder.html.erb +0 -0
- data/app/views/admin/templates/README.md +5 -0
- data/app/views/admin/templates/_belongs_to.html.erb +13 -0
- data/app/views/admin/templates/_boolean.html.erb +6 -0
- data/app/views/admin/templates/_date.html.erb +6 -0
- data/app/views/admin/templates/_datetime.html.erb +7 -0
- data/app/views/admin/templates/_dragonfly.html.erb +8 -0
- data/app/views/admin/templates/_dragonfly_form_preview.html.erb +23 -0
- data/app/views/admin/templates/_dragonfly_preview.html.erb +12 -0
- data/app/views/admin/templates/_has_and_belongs_to_many.html.erb +21 -0
- data/app/views/admin/templates/_has_many.html.erb +20 -0
- data/app/views/admin/templates/_has_one.html.erb +14 -0
- data/app/views/admin/templates/_paperclip.html.erb +7 -0
- data/app/views/admin/templates/_paperclip_preview.html.erb +3 -0
- data/app/views/admin/templates/_password.html.erb +6 -0
- data/app/views/admin/templates/_position.html.erb +6 -0
- data/app/views/admin/templates/_profile_sidebar.html.erb +4 -0
- data/app/views/admin/templates/_selector.html.erb +6 -0
- data/app/views/admin/templates/_string.html.erb +6 -0
- data/app/views/admin/templates/_string_with_preview.html.erb +11 -0
- data/app/views/admin/templates/_text.html.erb +11 -0
- data/app/views/admin/templates/_text_with_ckeditor.html.erb +24 -0
- data/app/views/admin/templates/_text_with_ckeditor_and_assets.html.erb +38 -0
- data/app/views/admin/templates/_time.html.erb +9 -0
- data/app/views/admin/templates/_tree.html.erb +6 -0
- data/app/views/admin/templates/modals/_belongs_to.html.erb +56 -0
- data/app/views/admin/templates/modals/_dragonfly.html.erb +9 -0
- data/app/views/admin/templates/modals/_has_and_belongs_to_many.html.erb +19 -0
- data/app/views/admin/templates/modals/_has_many.html.erb +53 -0
- data/app/views/helpers/admin/base/_apps.html.erb +38 -0
- data/app/views/helpers/admin/base/_breadcrumbs.html.erb +6 -0
- data/app/views/helpers/admin/base/_flash_message.html.erb +3 -0
- data/app/views/helpers/admin/base/_login_info.html.erb +37 -0
- data/app/views/helpers/admin/dashboard/_resources.html.erb +19 -0
- data/app/views/helpers/admin/resources/_actions.html.erb +18 -0
- data/app/views/helpers/admin/resources/_errors.html.erb +12 -0
- data/app/views/helpers/admin/resources/_filters.html.erb +14 -0
- data/app/views/helpers/admin/resources/_search.html.erb +14 -0
- data/app/views/helpers/admin/resources/_sidebar.html.erb +17 -0
- data/app/views/helpers/admin/resources/_table.html.erb +47 -0
- data/app/views/layouts/admin/base.html.erb +40 -0
- data/app/views/layouts/admin/headless.html.erb +1 -0
- data/app/views/layouts/admin/session.html.erb +44 -0
- data/config/locales/typus.ca.models.yml +17 -0
- data/config/locales/typus.ca.yml +78 -0
- data/config/locales/typus.de.models.yml +17 -0
- data/config/locales/typus.de.yml +98 -0
- data/config/locales/typus.el.models.yml +17 -0
- data/config/locales/typus.el.yml +79 -0
- data/config/locales/typus.es.models.yml +18 -0
- data/config/locales/typus.es.yml +91 -0
- data/config/locales/typus.fr.models.yml +18 -0
- data/config/locales/typus.fr.yml +83 -0
- data/config/locales/typus.hu.models.yml +17 -0
- data/config/locales/typus.hu.yml +77 -0
- data/config/locales/typus.it.models.yml +18 -0
- data/config/locales/typus.it.yml +86 -0
- data/config/locales/typus.locale.models.yml.template +17 -0
- data/config/locales/typus.locale.yml.template +78 -0
- data/config/locales/typus.pt-BR.models.yml +17 -0
- data/config/locales/typus.pt-BR.yml +77 -0
- data/config/locales/typus.pt-PT.models.yml +17 -0
- data/config/locales/typus.pt-PT.yml +85 -0
- data/config/locales/typus.ru.models.yml +17 -0
- data/config/locales/typus.ru.yml +77 -0
- data/config/locales/typus.zh-CN.models.yml +17 -0
- data/config/locales/typus.zh-CN.yml +76 -0
- data/config/routes.rb +46 -0
- data/lib/generators/templates/config/initializers/typus.rb +35 -0
- data/lib/generators/templates/config/initializers/typus_authentication.rb +18 -0
- data/lib/generators/templates/config/initializers/typus_resources.rb +24 -0
- data/lib/generators/templates/config/typus/README +58 -0
- data/lib/generators/templates/config/typus/application.yml +3 -0
- data/lib/generators/templates/config/typus/application_roles.yml +4 -0
- data/lib/generators/templates/config/typus/typus.yml +15 -0
- data/lib/generators/templates/config/typus/typus_roles.yml +4 -0
- data/lib/generators/templates/controller.erb +2 -0
- data/lib/generators/templates/migration.erb +22 -0
- data/lib/generators/templates/view.html.erb +13 -0
- data/lib/generators/typus/config_generator.rb +67 -0
- data/lib/generators/typus/controller_generator.rb +25 -0
- data/lib/generators/typus/initializers_generator.rb +20 -0
- data/lib/generators/typus/migration_generator.rb +94 -0
- data/lib/generators/typus/typus_generator.rb +52 -0
- data/lib/generators/typus/views_generator.rb +19 -0
- data/lib/support/active_record.rb +42 -0
- data/lib/support/fake_user.rb +47 -0
- data/lib/support/hash.rb +12 -0
- data/lib/support/object.rb +9 -0
- data/lib/support/string.rb +40 -0
- data/lib/tasks/typus.rake +11 -0
- data/lib/typus/authentication/base.rb +24 -0
- data/lib/typus/authentication/devise.rb +19 -0
- data/lib/typus/authentication/http_basic.rb +18 -0
- data/lib/typus/authentication/none.rb +15 -0
- data/lib/typus/authentication/none_with_role.rb +15 -0
- data/lib/typus/authentication/session.rb +123 -0
- data/lib/typus/configuration.rb +41 -0
- data/lib/typus/engine.rb +17 -0
- data/lib/typus/i18n.rb +48 -0
- data/lib/typus/orm/active_record/admin_user.rb +84 -0
- data/lib/typus/orm/active_record/class_methods.rb +104 -0
- data/lib/typus/orm/active_record/instance_methods.rb +76 -0
- data/lib/typus/orm/active_record/search.rb +44 -0
- data/lib/typus/orm/active_record.rb +10 -0
- data/lib/typus/orm/base/class_methods.rb +184 -0
- data/lib/typus/orm/base/search.rb +70 -0
- data/lib/typus/regex.rb +11 -0
- data/lib/typus/resources.rb +55 -0
- data/lib/typus/version.rb +10 -0
- data/lib/typus.rb +212 -0
- data/typus.gemspec +32 -0
- data/vendor/assets/adapt/css/1200.css +357 -0
- data/vendor/assets/adapt/css/1200.min.css +1 -0
- data/vendor/assets/adapt/css/1560.css +357 -0
- data/vendor/assets/adapt/css/1560.min.css +1 -0
- data/vendor/assets/adapt/css/720.css +357 -0
- data/vendor/assets/adapt/css/720.min.css +1 -0
- data/vendor/assets/adapt/css/960.css +357 -0
- data/vendor/assets/adapt/css/960.min.css +1 -0
- data/vendor/assets/adapt/css/fluid.css +345 -0
- data/vendor/assets/adapt/css/fluid.min.css +1 -0
- data/vendor/assets/adapt/css/master.css +120 -0
- data/vendor/assets/adapt/css/mobile.css +20 -0
- data/vendor/assets/adapt/css/mobile.min.css +1 -0
- data/vendor/assets/adapt/css/reset.css +202 -0
- data/vendor/assets/adapt/css/text.css +81 -0
- data/vendor/assets/adapt/images/h1.png +0 -0
- data/vendor/assets/adapt/js/adapt.js +135 -0
- data/vendor/assets/adapt/js/adapt.min.js +1 -0
- data/vendor/assets/bootstrap-2.3.2/css/bootstrap-responsive.css +1109 -0
- data/vendor/assets/bootstrap-2.3.2/css/bootstrap-responsive.min.css +9 -0
- data/vendor/assets/bootstrap-2.3.2/css/bootstrap.css +6167 -0
- data/vendor/assets/bootstrap-2.3.2/css/bootstrap.min.css +9 -0
- data/vendor/assets/bootstrap-2.3.2/img/glyphicons-halflings-white.png +0 -0
- data/vendor/assets/bootstrap-2.3.2/img/glyphicons-halflings.png +0 -0
- data/vendor/assets/bootstrap-2.3.2/js/bootstrap.js +2280 -0
- data/vendor/assets/bootstrap-2.3.2/js/bootstrap.min.js +6 -0
- data/vendor/assets/chosen/LICENSE.md +24 -0
- data/vendor/assets/chosen/chosen-sprite.png +0 -0
- data/vendor/assets/chosen/chosen.css +390 -0
- data/vendor/assets/chosen/chosen.jquery.js +902 -0
- data/vendor/assets/formalize/css/formalize.css +395 -0
- data/vendor/assets/formalize/images/button.png +0 -0
- data/vendor/assets/formalize/images/select_arrow.gif +0 -0
- data/vendor/assets/formalize/js/jquery.formalize.min.js +1 -0
- metadata +329 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
<%
|
2
|
+
applications = admin_user.applications
|
3
|
+
|
4
|
+
if params[:application]
|
5
|
+
applications.reject! { |a| a.parameterize != params[:application] }
|
6
|
+
end
|
7
|
+
%>
|
8
|
+
|
9
|
+
<h2><%= Typus::I18n.t("Dashboard") %></h2>
|
10
|
+
|
11
|
+
<div class="row">
|
12
|
+
|
13
|
+
<% if applications.any? %>
|
14
|
+
<% applications.each do |app| %>
|
15
|
+
<div class="span3">
|
16
|
+
<div class="well">
|
17
|
+
<table class="table">
|
18
|
+
|
19
|
+
<thead>
|
20
|
+
<tr>
|
21
|
+
<th><%= Typus::I18n.t(app) %></th>
|
22
|
+
</tr>
|
23
|
+
</thead>
|
24
|
+
|
25
|
+
<% admin_user.application(app).map(&:constantize).each do |klass| %>
|
26
|
+
<% unless klass.typus_options_for(:hide_from_dashboard) %>
|
27
|
+
<tr>
|
28
|
+
<td>
|
29
|
+
<%= link_to klass.model_name.human.pluralize, :controller => "/admin/#{klass.to_resource}" %>
|
30
|
+
</td>
|
31
|
+
</tr>
|
32
|
+
<% end %>
|
33
|
+
<% end %>
|
34
|
+
|
35
|
+
</table>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
<% end %>
|
39
|
+
<% else %>
|
40
|
+
<div class="notice">
|
41
|
+
<%= Typus::I18n.t("No applications detected.") %>
|
42
|
+
</div>
|
43
|
+
<% end %>
|
44
|
+
</div>
|
@@ -0,0 +1,46 @@
|
|
1
|
+
<%
|
2
|
+
applications = admin_user.applications
|
3
|
+
|
4
|
+
if params[:application]
|
5
|
+
applications.reject! { |a| a.parameterize != params[:application] }
|
6
|
+
end
|
7
|
+
%>
|
8
|
+
|
9
|
+
<div class="span3">
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<div class="span9">
|
13
|
+
|
14
|
+
<h2><%= Typus::I18n.t("Dashboard") %></h2>
|
15
|
+
|
16
|
+
<% if applications.any? %>
|
17
|
+
<% applications.each do |app| %>
|
18
|
+
|
19
|
+
<table class="table">
|
20
|
+
|
21
|
+
<thead>
|
22
|
+
<tr>
|
23
|
+
<th><%= Typus::I18n.t(app) %></th>
|
24
|
+
</tr>
|
25
|
+
</thead>
|
26
|
+
|
27
|
+
<% admin_user.application(app).map(&:constantize).each do |klass| %>
|
28
|
+
<% unless klass.typus_options_for(:hide_from_dashboard) %>
|
29
|
+
<tr>
|
30
|
+
<td>
|
31
|
+
<%= link_to klass.model_name.human(count: 2), :controller => "/admin/#{klass.to_resource}" %>
|
32
|
+
</td>
|
33
|
+
</tr>
|
34
|
+
<% end %>
|
35
|
+
<% end %>
|
36
|
+
|
37
|
+
</table>
|
38
|
+
|
39
|
+
<% end %>
|
40
|
+
<% else %>
|
41
|
+
<div class="notice">
|
42
|
+
<%= Typus::I18n.t("No applications detected.") %>
|
43
|
+
</div>
|
44
|
+
<% end %>
|
45
|
+
|
46
|
+
</div>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<!-- List of all available models -->
|
2
|
+
|
3
|
+
<h2><%= Typus::I18n.t("Site Administration") %></h2>
|
4
|
+
|
5
|
+
<table>
|
6
|
+
|
7
|
+
<thead>
|
8
|
+
<tr>
|
9
|
+
<th><%= Typus::I18n.t("Model name") %></th>
|
10
|
+
<th></th>
|
11
|
+
</tr>
|
12
|
+
</thead>
|
13
|
+
|
14
|
+
<% admin_user.models.map(&:constantize).each do |klass| %>
|
15
|
+
<tr>
|
16
|
+
<td><%= link_to klass.model_name.human.pluralize, :controller => "/admin/#{klass.to_resource}" %></td>
|
17
|
+
<td width="80px" align="right">
|
18
|
+
<%= link_to Typus::I18n.t("Add"), :controller => "/admin/#{klass.to_resource}", :action => 'new' %>
|
19
|
+
</td>
|
20
|
+
</tr>
|
21
|
+
<% end %>
|
22
|
+
|
23
|
+
</table>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<!-- List of all available models -->
|
2
|
+
|
3
|
+
<h2><%= Typus::I18n.t("Site Administration") %></h2>
|
4
|
+
|
5
|
+
<table class="table">
|
6
|
+
|
7
|
+
<thead>
|
8
|
+
<tr>
|
9
|
+
<th><%= Typus::I18n.t("Model") %></th>
|
10
|
+
<th><%= Typus::I18n.t("Items") %></th>
|
11
|
+
<th><%= Typus::I18n.t("Actions") %></th>
|
12
|
+
</tr>
|
13
|
+
</thead>
|
14
|
+
|
15
|
+
<% admin_user.models.map(&:constantize).each do |klass| %>
|
16
|
+
<tr>
|
17
|
+
<td><%= link_to klass.model_name.human.pluralize, :controller => "/admin/#{klass.to_resource}" %></td>
|
18
|
+
<td><%= klass.count %></td>
|
19
|
+
<td width="100px">
|
20
|
+
<%= link_to Typus::I18n.t("Add"), :controller => "/admin/#{klass.to_resource}", :action => 'new' %>
|
21
|
+
</td>
|
22
|
+
</tr>
|
23
|
+
<% end %>
|
24
|
+
|
25
|
+
</table>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<!-- This probably needs a rename, but for the moment is ok -->
|
2
|
+
|
3
|
+
<% if (resources = Typus.resources.delete_if { |r| !(admin_user.is_a?(FakeUser) || admin_user.resources.include?(r)) }).any? %>
|
4
|
+
|
5
|
+
<h2><%= Typus::I18n.t("Resources") %></h2>
|
6
|
+
|
7
|
+
<table>
|
8
|
+
|
9
|
+
<thead>
|
10
|
+
<tr>
|
11
|
+
<th><%= Typus::I18n.t("Name") %></th>
|
12
|
+
</tr>
|
13
|
+
</thead>
|
14
|
+
|
15
|
+
<% resources.each do |resource| %>
|
16
|
+
<tr>
|
17
|
+
<td><%= link_to Typus::I18n.t(resource.titleize.capitalize), :controller => "/admin/#{resource.underscore}" %></td>
|
18
|
+
</tr>
|
19
|
+
<% end %>
|
20
|
+
|
21
|
+
</table>
|
22
|
+
|
23
|
+
<% end %>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<!-- List of all available models -->
|
2
|
+
|
3
|
+
<h2><%= Typus::I18n.t("Users") %> <%= Typus.user_class.count %></h2>
|
4
|
+
|
5
|
+
<table class="table">
|
6
|
+
|
7
|
+
<thead>
|
8
|
+
<tr>
|
9
|
+
<th><%= Typus::I18n.t("User") %></th>
|
10
|
+
<th><%= Typus::I18n.t("Status") %></th>
|
11
|
+
<th><%= Typus::I18n.t("Last logged in") %></th>
|
12
|
+
</tr>
|
13
|
+
</thead>
|
14
|
+
|
15
|
+
<% Typus.user_class.limit(5).each do |user| %>
|
16
|
+
<tr>
|
17
|
+
<td><%= user.email %></td>
|
18
|
+
<td><%= user.status %></td>
|
19
|
+
<td><%= user.created_at %></td>
|
20
|
+
</tr>
|
21
|
+
<% end %>
|
22
|
+
|
23
|
+
</table>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<p>Someone has requested a link to change your password, and you can do this through the link below.</p>
|
2
|
+
|
3
|
+
<p><%= link_to 'Change my password', @token_url %></p>
|
4
|
+
|
5
|
+
<p>If you didn't request this, please ignore this email.</p>
|
6
|
+
|
7
|
+
<p>Your password won't change until you access the link above and create a new one.</p>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<div class="actions">
|
2
|
+
<div class="left">
|
3
|
+
<ul>
|
4
|
+
<li><%= link_to Typus::I18n.t("All"), params.dup.cleanup.merge(:action => 'index') %> (<%= resource.count %>)</li>
|
5
|
+
<% predefined_filters.each do |filter, action, scope| %>
|
6
|
+
<% url = action.is_a?(String) ? params.dup.cleanup.merge(:action => action) : action %>
|
7
|
+
<li><%= link_to Typus::I18n.t(filter), url %> <%= "(#{@resource.send(scope).count})" if scope && @resource.respond_to?(scope) %></li>
|
8
|
+
<% end %>
|
9
|
+
</ul>
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<div class="right">
|
13
|
+
<% unless resource.count.zero? %>
|
14
|
+
<ul>
|
15
|
+
<li><%= Typus::I18n.t("Export as") %></li>
|
16
|
+
<ul>
|
17
|
+
<li><%= link_to "CSV", :format => 'csv' %></li>
|
18
|
+
<li><%= link_to "XML", :format => 'xml' %></li>
|
19
|
+
</ul>
|
20
|
+
</ul>
|
21
|
+
<% end %>
|
22
|
+
</div>
|
23
|
+
</div>
|
File without changes
|
@@ -0,0 +1,41 @@
|
|
1
|
+
<%= render "form_javascripts" %>
|
2
|
+
<% form_class = headless_mode? ? 'form-vertical' : 'form-horizontal' %>
|
3
|
+
|
4
|
+
<% resource_options = options.delete(@resource.model_name.param_key) %>
|
5
|
+
|
6
|
+
<%= form_for @item,
|
7
|
+
:url => options,
|
8
|
+
:html => { :multipart => true, :class => form_class } do |form| %>
|
9
|
+
|
10
|
+
<%= render "helpers/admin/resources/errors" %>
|
11
|
+
|
12
|
+
<fieldset>
|
13
|
+
<% if resource_options %>
|
14
|
+
<%= hidden_field_tag("#{@resource.model_name.param_key}[#{resource_options.keys.first}]", resource_options.values.first) %>
|
15
|
+
<% end %>
|
16
|
+
<%= build_form(fields, form) %>
|
17
|
+
|
18
|
+
<% if headless_mode? %>
|
19
|
+
<% unless @item.new_record? %>
|
20
|
+
<%= hidden_field_tag "_id", @item.id %>
|
21
|
+
<%= hidden_field_tag "_label", @item.to_label %>
|
22
|
+
<% end %>
|
23
|
+
<%= hidden_field_tag "_continue" %>
|
24
|
+
<% else %>
|
25
|
+
<div class="form-actions">
|
26
|
+
<% build_save_options.each do |key, value, special| %>
|
27
|
+
<% klass = key.eql?("_save") ? 'btn-primary' : 'btn' %>
|
28
|
+
<%
|
29
|
+
message = Typus::I18n.t(value)
|
30
|
+
options = { :name => key,
|
31
|
+
:onclick => "Typus.setConfirmUnload(false);",
|
32
|
+
'data-disable-with' => message,
|
33
|
+
:class => "btn #{klass}" }
|
34
|
+
%>
|
35
|
+
<%= submit_tag message, options %>
|
36
|
+
<% end %>
|
37
|
+
</div>
|
38
|
+
<% end %>
|
39
|
+
</fieldset>
|
40
|
+
|
41
|
+
<% end %>
|
File without changes
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%= render "form_javascripts" %>
|
2
|
+
|
3
|
+
<%= form_for @item,
|
4
|
+
:url => options,
|
5
|
+
:html => { :multipart => true, :class => "form-horizontal" } do |form| %>
|
6
|
+
|
7
|
+
<%= render "helpers/admin/resources/errors" %>
|
8
|
+
|
9
|
+
<fieldset>
|
10
|
+
<%= build_form(fields, form) %>
|
11
|
+
</fieldset>
|
12
|
+
|
13
|
+
<% end %>
|
File without changes
|
File without changes
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<ul class="pager">
|
2
|
+
<% if options[:previous] %>
|
3
|
+
<li class="previous">
|
4
|
+
<% message = "← #{Typus::I18n.t('Previous')}".html_safe %>
|
5
|
+
<%= link_to message, options[:previous] %>
|
6
|
+
</li>
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
<% if options[:next] %>
|
10
|
+
<li class="next">
|
11
|
+
<% message = "#{Typus::I18n.t('Next')} →".html_safe %>
|
12
|
+
<%= link_to message, options[:next] %>
|
13
|
+
</li>
|
14
|
+
<% end %>
|
15
|
+
</ul>
|
File without changes
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<%
|
2
|
+
page_title = Typus::I18n.t("Edit %{resource} %{id}", :resource => @resource.model_name.human, :id => @item.identifier)
|
3
|
+
admin_title(page_title)
|
4
|
+
%>
|
5
|
+
|
6
|
+
<% content_for :main_grid do %>
|
7
|
+
<%= render 'edit' %>
|
8
|
+
|
9
|
+
<% unless headless_mode? %>
|
10
|
+
<h1><%= page_title %></h1>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<%= admin_display_flash_message %>
|
14
|
+
|
15
|
+
<% locals = { :options => params.dup.merge!(:action => 'update') } %>
|
16
|
+
<%= render 'form', locals %>
|
17
|
+
|
18
|
+
<% unless headless_mode? %>
|
19
|
+
<%= render 'admin/shared/modals' %>
|
20
|
+
<%= typus_relationships %>
|
21
|
+
<% end %>
|
22
|
+
<% end %>
|
@@ -0,0 +1,81 @@
|
|
1
|
+
<%
|
2
|
+
page_title = @resource.model_name.human(count: 2)
|
3
|
+
admin_title(page_title)
|
4
|
+
%>
|
5
|
+
|
6
|
+
<% content_for :main_grid do %>
|
7
|
+
|
8
|
+
<%= render 'index' %>
|
9
|
+
|
10
|
+
<div class="row-fluid">
|
11
|
+
<div class="span6">
|
12
|
+
<h1><%= page_title %></h1>
|
13
|
+
</div>
|
14
|
+
<div class="pull-right" style="margin: 15px 5px 0 0;">
|
15
|
+
<%= admin_search %>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<%= admin_display_flash_message %>
|
20
|
+
|
21
|
+
<% if @resource.typus_options_for(:counters) || @resource.typus_scopes.any? || predefined_filters.any? %>
|
22
|
+
<div class="tabbable tabs-below">
|
23
|
+
<ul class="nav nav-tabs">
|
24
|
+
<% all_klass = params[:scope] ? "inactive" : "active" %>
|
25
|
+
<li class="<%= all_klass %>">
|
26
|
+
<%= link_to url_for(params.dup.cleanup.merge(:action => 'index')) do %>
|
27
|
+
<%= Typus::I18n.t("All") %>
|
28
|
+
<% if @resource.typus_options_for(:counters) %>
|
29
|
+
<%= " <span class='badge'>#{resource.count}</span>".html_safe %>
|
30
|
+
<% end %>
|
31
|
+
<% end %>
|
32
|
+
</li>
|
33
|
+
|
34
|
+
<% @resource.typus_scopes.each do |scope| %>
|
35
|
+
<% klass = params[:scope].eql?(scope) ? "active" : "inactive" %>
|
36
|
+
<li class="<%= klass %>">
|
37
|
+
<%= link_to url_for(:scope => scope) do %>
|
38
|
+
<%= Typus::I18n.t(scope, scope: "typus.scopes.#{@resource.model_name.singular}") %>
|
39
|
+
<% if @resource.typus_options_for(:counters) %>
|
40
|
+
<%= " <span class='badge'>#{@resource.send(scope).count}</span>".html_safe %>
|
41
|
+
<% end %>
|
42
|
+
<% end %>
|
43
|
+
</li>
|
44
|
+
<% end %>
|
45
|
+
|
46
|
+
<% predefined_filters.each do |filter, action, scope| %>
|
47
|
+
<li>
|
48
|
+
<% url = action.is_a?(String) ? params.dup.cleanup.merge(:action => action) : action %>
|
49
|
+
<%= link_to url do %>
|
50
|
+
<%= Typus::I18n.t(filter) %>
|
51
|
+
<% if @resource.typus_options_for(:counters) && scope && @resource.respond_to?(scope) %>
|
52
|
+
<%= " <span class='badge'>#{@resource.send(scope).count}</span>".html_safe %>
|
53
|
+
<% end %>
|
54
|
+
<% end %>
|
55
|
+
</li>
|
56
|
+
<% end %>
|
57
|
+
|
58
|
+
<% show_export_formats = (resource.any? && (formats = resource.typus_options_for(:export).extract_settings).any?) %>
|
59
|
+
<% if show_export_formats %>
|
60
|
+
<% formats.each do |format| %>
|
61
|
+
<li><%= link_to format.upcase, :format => format, scope: params[:scope] %></li>
|
62
|
+
<% end %>
|
63
|
+
<% end %>
|
64
|
+
</ul>
|
65
|
+
</div>
|
66
|
+
<% end %>
|
67
|
+
|
68
|
+
<%= build_filters %>
|
69
|
+
|
70
|
+
<% if @items.any? -%>
|
71
|
+
<% if controller.respond_to?(:bulk) %>
|
72
|
+
<%= build_actions { build_list(@resource, fields, @items) } %>
|
73
|
+
<% else %>
|
74
|
+
<%= build_list(@resource, fields, @items) %>
|
75
|
+
<% end %>
|
76
|
+
<%= admin_paginate %>
|
77
|
+
<% else %>
|
78
|
+
<p><%= Typus::I18n.t("No entries found.") %></p>
|
79
|
+
<% end %>
|
80
|
+
|
81
|
+
<% end %>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<%
|
2
|
+
page_title = Typus::I18n.t("Add %{resource}", :resource => @resource.model_name.human)
|
3
|
+
admin_title(page_title)
|
4
|
+
%>
|
5
|
+
|
6
|
+
<% content_for :main_grid do %>
|
7
|
+
<%= render 'new' %>
|
8
|
+
|
9
|
+
<% unless headless_mode? %>
|
10
|
+
<h1><%= page_title %></h1>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<%= admin_display_flash_message %>
|
14
|
+
<% locals = { :options => params.dup.merge(:action => 'create') } %>
|
15
|
+
|
16
|
+
<%= render 'form', locals %>
|
17
|
+
|
18
|
+
<% unless headless_mode? %>
|
19
|
+
<%= render 'admin/shared/modals' %>
|
20
|
+
<% end %>
|
21
|
+
<% end %>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<%
|
2
|
+
page_title = Typus::I18n.t("%{resource} %{id}", :resource => @resource.model_name.human, :id => @item.identifier)
|
3
|
+
admin_title(page_title)
|
4
|
+
%>
|
5
|
+
|
6
|
+
<% content_for :main_grid do %>
|
7
|
+
<% unless params[:_popup] %>
|
8
|
+
<h1>
|
9
|
+
<%= page_title %>
|
10
|
+
</h1>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<%= admin_display_flash_message %>
|
14
|
+
|
15
|
+
<%= render 'show' %>
|
16
|
+
|
17
|
+
<table class="table table-hover">
|
18
|
+
<% build_display(@item, fields).each do |attribute, type| %>
|
19
|
+
<tr>
|
20
|
+
<td><%= attribute %></td>
|
21
|
+
<td><%= type %></td>
|
22
|
+
</tr>
|
23
|
+
<% end %>
|
24
|
+
</table>
|
25
|
+
|
26
|
+
<%= typus_relationships unless headless_mode? %>
|
27
|
+
<% end %>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<%
|
2
|
+
page_title = Typus::I18n.t("Sign in")
|
3
|
+
admin_title(page_title)
|
4
|
+
%>
|
5
|
+
|
6
|
+
<%= form_for Typus.user_class_as_symbol,
|
7
|
+
:url => { :action => :create, :return_to => params[:return_to] },
|
8
|
+
:html => { :class => "form-stacked" } do |form| %>
|
9
|
+
|
10
|
+
<%= render :partial => 'admin/account/form',
|
11
|
+
:locals => { :form => form, :submit_text => "Sign in" } %>
|
12
|
+
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
<% if Typus.mailer_sender %>
|
16
|
+
<% content_for :actions do %>
|
17
|
+
<ul class="unstyled">
|
18
|
+
<li><%= link_to Typus::I18n.t("Recover password"), forgot_password_admin_account_index_path %></li>
|
19
|
+
</ul>
|
20
|
+
<% end %>
|
21
|
+
<% end %>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<meta charset="utf-8" />
|
2
|
+
<meta name="apple-mobile-web-app-capable" content="yes" />
|
3
|
+
<meta name="generator" content="Typus <%= Typus::VERSION::STRING %>" />
|
4
|
+
|
5
|
+
<link rel="shortcut icon" href="/favicon.ico" />
|
6
|
+
|
7
|
+
<title><%= Typus.admin_title %> — <%= yield :title %></title>
|
8
|
+
|
9
|
+
<%= stylesheet_link_tag 'typus/application' %>
|
10
|
+
<%= javascript_include_tag 'typus/application' %>
|
11
|
+
|
12
|
+
<%= yield :stylesheets -%>
|
13
|
+
<%= yield :javascripts -%>
|
14
|
+
|
15
|
+
<%= csrf_meta_tag %>
|
File without changes
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%= render :partial => 'admin/templates/modals/belongs_to',
|
2
|
+
:locals => { :attribute => attribute, :related => related, :attribute_id => attribute_id } %>
|
3
|
+
|
4
|
+
<div class="control-group" id="<%= attribute_id %>_li">
|
5
|
+
<%= form.label attribute, label_text, { :class => "control-label" } %>
|
6
|
+
<div class="controls">
|
7
|
+
<% if values.any? %>
|
8
|
+
<%= form.select related_fk, values, options, html_options %>
|
9
|
+
<% else %>
|
10
|
+
<%= Typus::I18n.t("No entries found.") %>
|
11
|
+
<% end %>
|
12
|
+
</div>
|
13
|
+
</div>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<div class="control-group" id="<%= attribute_id %>">
|
2
|
+
<%= form.label attribute, label_text, { :class => "control-label" } %>
|
3
|
+
<div class="controls">
|
4
|
+
<%#= form.datetime_select attribute, options, html_options %>
|
5
|
+
<%= form.text_field attribute, options %>
|
6
|
+
</div>
|
7
|
+
</div>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<div class="control-group" id="<%= attribute_id %>">
|
2
|
+
<%= form.label attribute, link_to_detach_attribute_for_dragonfly(attribute), :class => "control-label" %>
|
3
|
+
<div class="controls">
|
4
|
+
<%= form.file_field attribute, options %>
|
5
|
+
<%= typus_dragonfly_form_preview(@item, attribute) %>
|
6
|
+
<%= form.hidden_field "retained_#{attribute}" %>
|
7
|
+
</div>
|
8
|
+
</div>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<div style="margin: 0 0 0.5em 0;">
|
2
|
+
|
3
|
+
<div style="float: left;">
|
4
|
+
<% html_options = { "class" => "thumbnail", "data-toggle" => "modal", "modal-id" => "#{item.id}_#{attribute}" } %>
|
5
|
+
|
6
|
+
<%= render :partial => 'admin/templates/modals/dragonfly',
|
7
|
+
:locals => { :html_options => html_options, :preview => preview, :attachment => attachment } %>
|
8
|
+
|
9
|
+
<%= link_to "#preview_#{html_options['modal-id']}", html_options do %>
|
10
|
+
<%= image_tag thumb, :alt => preview %>
|
11
|
+
<% end %>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div style="float: left;">
|
15
|
+
<ul style="margin: 0 0 0 15px!important;">
|
16
|
+
<li><strong>File name:</strong> <%= attachment.name %></li>
|
17
|
+
<li><strong>File type:</strong> <%= attachment.mime_type %></li>
|
18
|
+
<li><strong>Dimensions:</strong> <%= attachment.width %> x <%= attachment.height %></li>
|
19
|
+
</ul>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<div class="clear"></div>
|
23
|
+
</div>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<% if headless_mode? %>
|
2
|
+
<%= image_tag thumb, :alt => preview %>
|
3
|
+
<% else %>
|
4
|
+
<% html_options = { "data-toggle" => "modal", "modal-id" => "#{item.id}_#{attribute}" } %>
|
5
|
+
|
6
|
+
<%= render :partial => 'admin/templates/modals/dragonfly',
|
7
|
+
:locals => { :html_options => html_options, :preview => preview, :attachment => attachment } %>
|
8
|
+
|
9
|
+
<%= link_to "#preview_#{html_options['modal-id']}", html_options do %>
|
10
|
+
<%= image_tag thumb, :alt => preview %>
|
11
|
+
<% end %>
|
12
|
+
<% end %>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<% chosen_class = "chzn-select-#{attribute_id}" %>
|
2
|
+
|
3
|
+
<%= render :partial => 'admin/templates/modals/has_and_belongs_to_many',
|
4
|
+
:locals => { :attribute => attribute, :attribute_id => attribute_id } %>
|
5
|
+
|
6
|
+
<div class="control-group" id="<%= attribute_id %>">
|
7
|
+
<%= form.label attribute, label_text, { :class => "control-label" } %>
|
8
|
+
<%= hidden_field_tag related_ids %>
|
9
|
+
<div class="controls">
|
10
|
+
<%= select_tag related_ids,
|
11
|
+
options_from_collection_for_select(values.all, "id", "to_label", related_items.map(&:id)),
|
12
|
+
html_options.merge(:multiple => true,
|
13
|
+
:id => attribute_id,
|
14
|
+
:class => chosen_class,
|
15
|
+
"data-placeholder" => Typus::I18n.t("Select Some Options")) %>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<script type="text/javascript">
|
20
|
+
// $(document).ready(function () { $(".<%= chosen_class %>").chosen(); });
|
21
|
+
</script>
|