brainsome_typus 4.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (241) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +488 -0
  3. data/Gemfile +60 -0
  4. data/Gemfile.lock +205 -0
  5. data/MIT-LICENSE +20 -0
  6. data/README.md +94 -0
  7. data/Rakefile +33 -0
  8. data/TODO.md +32 -0
  9. data/app/assets/javascripts/typus/application.js +11 -0
  10. data/app/assets/javascripts/typus/custom.js +2 -0
  11. data/app/assets/javascripts/typus/jquery-1.8.3-min.js +2 -0
  12. data/app/assets/javascripts/typus/jquery.application.js +33 -0
  13. data/app/assets/stylesheets/typus/application.css +5 -0
  14. data/app/assets/stylesheets/typus/custom.css +4 -0
  15. data/app/assets/stylesheets/typus/overrides.css.scss +46 -0
  16. data/app/controllers/admin/account_controller.rb +47 -0
  17. data/app/controllers/admin/base_controller.rb +44 -0
  18. data/app/controllers/admin/dashboard_controller.rb +5 -0
  19. data/app/controllers/admin/resource_controller.rb +7 -0
  20. data/app/controllers/admin/resources_controller.rb +256 -0
  21. data/app/controllers/admin/session_controller.rb +42 -0
  22. data/app/controllers/concerns/admin/actions.rb +88 -0
  23. data/app/controllers/concerns/admin/acts_as_list.rb +26 -0
  24. data/app/controllers/concerns/admin/ancestry.rb +26 -0
  25. data/app/controllers/concerns/admin/autocomplete.rb +11 -0
  26. data/app/controllers/concerns/admin/bulk.rb +76 -0
  27. data/app/controllers/concerns/admin/featured_image.rb +22 -0
  28. data/app/controllers/concerns/admin/filters.rb +57 -0
  29. data/app/controllers/concerns/admin/format.rb +48 -0
  30. data/app/controllers/concerns/admin/headless.rb +23 -0
  31. data/app/controllers/concerns/admin/hooks.rb +4 -0
  32. data/app/controllers/concerns/admin/multisite.rb +10 -0
  33. data/app/controllers/concerns/admin/navigation.rb +26 -0
  34. data/app/controllers/concerns/admin/trash.rb +65 -0
  35. data/app/helpers/admin/base_helper.rb +59 -0
  36. data/app/helpers/admin/resources/data_types/belongs_to_helper.rb +91 -0
  37. data/app/helpers/admin/resources/data_types/boolean_helper.rb +28 -0
  38. data/app/helpers/admin/resources/data_types/date_helper.rb +16 -0
  39. data/app/helpers/admin/resources/data_types/datetime_helper.rb +19 -0
  40. data/app/helpers/admin/resources/data_types/dragonfly_helper.rb +56 -0
  41. data/app/helpers/admin/resources/data_types/float_helper.rb +2 -0
  42. data/app/helpers/admin/resources/data_types/has_and_belongs_to_many_helper.rb +53 -0
  43. data/app/helpers/admin/resources/data_types/has_many_helper.rb +66 -0
  44. data/app/helpers/admin/resources/data_types/has_one_helper.rb +36 -0
  45. data/app/helpers/admin/resources/data_types/integer_helper.rb +10 -0
  46. data/app/helpers/admin/resources/data_types/paperclip_helper.rb +36 -0
  47. data/app/helpers/admin/resources/data_types/position_helper.rb +20 -0
  48. data/app/helpers/admin/resources/data_types/selector_helper.rb +11 -0
  49. data/app/helpers/admin/resources/data_types/string_helper.rb +32 -0
  50. data/app/helpers/admin/resources/data_types/text_helper.rb +7 -0
  51. data/app/helpers/admin/resources/data_types/transversal_helper.rb +8 -0
  52. data/app/helpers/admin/resources/data_types/tree_helper.rb +26 -0
  53. data/app/helpers/admin/resources/display_helper.rb +27 -0
  54. data/app/helpers/admin/resources/filters_helper.rb +28 -0
  55. data/app/helpers/admin/resources/form_helper.rb +84 -0
  56. data/app/helpers/admin/resources/list_helper.rb +31 -0
  57. data/app/helpers/admin/resources/pagination_helper.rb +28 -0
  58. data/app/helpers/admin/resources/relationships_helper.rb +34 -0
  59. data/app/helpers/admin/resources/sidebar_helper.rb +40 -0
  60. data/app/helpers/admin/resources/table_helper.rb +66 -0
  61. data/app/helpers/admin/resources_helper.rb +25 -0
  62. data/app/mailers/admin/mailer.rb +20 -0
  63. data/app/views/admin/account/_form.html.erb +11 -0
  64. data/app/views/admin/account/forgot_password.html.erb +19 -0
  65. data/app/views/admin/account/new.html.erb +13 -0
  66. data/app/views/admin/dashboard/_sidebar.html.erb +14 -0
  67. data/app/views/admin/dashboard/index.html.erb +6 -0
  68. data/app/views/admin/dashboard/styles.html.erb +153 -0
  69. data/app/views/admin/dashboard/widgets/_applications.html.erb +44 -0
  70. data/app/views/admin/dashboard/widgets/_default.html.erb +46 -0
  71. data/app/views/admin/dashboard/widgets/_models.html.erb +23 -0
  72. data/app/views/admin/dashboard/widgets/_models_extended.html.erb +25 -0
  73. data/app/views/admin/dashboard/widgets/_resources.html.erb +23 -0
  74. data/app/views/admin/dashboard/widgets/_users.html.erb +23 -0
  75. data/app/views/admin/mailer/reset_password_instructions.html.erb +7 -0
  76. data/app/views/admin/mailer/reset_password_instructions.text.erb +7 -0
  77. data/app/views/admin/resources/_actions.html.erb +23 -0
  78. data/app/views/admin/resources/_edit.html.erb +0 -0
  79. data/app/views/admin/resources/_form.html.erb +41 -0
  80. data/app/views/admin/resources/_form_javascripts.html.erb +0 -0
  81. data/app/views/admin/resources/_form_modal.html.erb +13 -0
  82. data/app/views/admin/resources/_index.html.erb +0 -0
  83. data/app/views/admin/resources/_new.html.erb +0 -0
  84. data/app/views/admin/resources/_pagination.html.erb +15 -0
  85. data/app/views/admin/resources/_show.html.erb +0 -0
  86. data/app/views/admin/resources/edit/_actions.html.erb +7 -0
  87. data/app/views/admin/resources/edit/_recently_edited.html.erb +8 -0
  88. data/app/views/admin/resources/edit.html.erb +22 -0
  89. data/app/views/admin/resources/index.html.erb +81 -0
  90. data/app/views/admin/resources/new.html.erb +21 -0
  91. data/app/views/admin/resources/show.html.erb +27 -0
  92. data/app/views/admin/session/new.html.erb +21 -0
  93. data/app/views/admin/shared/_head.html.erb +15 -0
  94. data/app/views/admin/shared/_modals.html.erb +3 -0
  95. data/app/views/admin/shared/_sidebar_placeholder.html.erb +0 -0
  96. data/app/views/admin/templates/README.md +5 -0
  97. data/app/views/admin/templates/_belongs_to.html.erb +13 -0
  98. data/app/views/admin/templates/_boolean.html.erb +6 -0
  99. data/app/views/admin/templates/_date.html.erb +6 -0
  100. data/app/views/admin/templates/_datetime.html.erb +7 -0
  101. data/app/views/admin/templates/_dragonfly.html.erb +8 -0
  102. data/app/views/admin/templates/_dragonfly_form_preview.html.erb +23 -0
  103. data/app/views/admin/templates/_dragonfly_preview.html.erb +12 -0
  104. data/app/views/admin/templates/_has_and_belongs_to_many.html.erb +21 -0
  105. data/app/views/admin/templates/_has_many.html.erb +20 -0
  106. data/app/views/admin/templates/_has_one.html.erb +14 -0
  107. data/app/views/admin/templates/_paperclip.html.erb +7 -0
  108. data/app/views/admin/templates/_paperclip_preview.html.erb +3 -0
  109. data/app/views/admin/templates/_password.html.erb +6 -0
  110. data/app/views/admin/templates/_position.html.erb +6 -0
  111. data/app/views/admin/templates/_profile_sidebar.html.erb +4 -0
  112. data/app/views/admin/templates/_selector.html.erb +6 -0
  113. data/app/views/admin/templates/_string.html.erb +6 -0
  114. data/app/views/admin/templates/_string_with_preview.html.erb +11 -0
  115. data/app/views/admin/templates/_text.html.erb +11 -0
  116. data/app/views/admin/templates/_text_with_ckeditor.html.erb +24 -0
  117. data/app/views/admin/templates/_text_with_ckeditor_and_assets.html.erb +38 -0
  118. data/app/views/admin/templates/_time.html.erb +9 -0
  119. data/app/views/admin/templates/_tree.html.erb +6 -0
  120. data/app/views/admin/templates/modals/_belongs_to.html.erb +56 -0
  121. data/app/views/admin/templates/modals/_dragonfly.html.erb +9 -0
  122. data/app/views/admin/templates/modals/_has_and_belongs_to_many.html.erb +19 -0
  123. data/app/views/admin/templates/modals/_has_many.html.erb +53 -0
  124. data/app/views/helpers/admin/base/_apps.html.erb +38 -0
  125. data/app/views/helpers/admin/base/_breadcrumbs.html.erb +6 -0
  126. data/app/views/helpers/admin/base/_flash_message.html.erb +3 -0
  127. data/app/views/helpers/admin/base/_login_info.html.erb +37 -0
  128. data/app/views/helpers/admin/dashboard/_resources.html.erb +19 -0
  129. data/app/views/helpers/admin/resources/_actions.html.erb +18 -0
  130. data/app/views/helpers/admin/resources/_errors.html.erb +12 -0
  131. data/app/views/helpers/admin/resources/_filters.html.erb +14 -0
  132. data/app/views/helpers/admin/resources/_search.html.erb +14 -0
  133. data/app/views/helpers/admin/resources/_sidebar.html.erb +17 -0
  134. data/app/views/helpers/admin/resources/_table.html.erb +47 -0
  135. data/app/views/layouts/admin/base.html.erb +40 -0
  136. data/app/views/layouts/admin/headless.html.erb +1 -0
  137. data/app/views/layouts/admin/session.html.erb +44 -0
  138. data/config/locales/typus.ca.models.yml +17 -0
  139. data/config/locales/typus.ca.yml +78 -0
  140. data/config/locales/typus.de.models.yml +17 -0
  141. data/config/locales/typus.de.yml +98 -0
  142. data/config/locales/typus.el.models.yml +17 -0
  143. data/config/locales/typus.el.yml +79 -0
  144. data/config/locales/typus.es.models.yml +18 -0
  145. data/config/locales/typus.es.yml +91 -0
  146. data/config/locales/typus.fr.models.yml +18 -0
  147. data/config/locales/typus.fr.yml +83 -0
  148. data/config/locales/typus.hu.models.yml +17 -0
  149. data/config/locales/typus.hu.yml +77 -0
  150. data/config/locales/typus.it.models.yml +18 -0
  151. data/config/locales/typus.it.yml +86 -0
  152. data/config/locales/typus.locale.models.yml.template +17 -0
  153. data/config/locales/typus.locale.yml.template +78 -0
  154. data/config/locales/typus.pt-BR.models.yml +17 -0
  155. data/config/locales/typus.pt-BR.yml +77 -0
  156. data/config/locales/typus.pt-PT.models.yml +17 -0
  157. data/config/locales/typus.pt-PT.yml +85 -0
  158. data/config/locales/typus.ru.models.yml +17 -0
  159. data/config/locales/typus.ru.yml +77 -0
  160. data/config/locales/typus.zh-CN.models.yml +17 -0
  161. data/config/locales/typus.zh-CN.yml +76 -0
  162. data/config/routes.rb +46 -0
  163. data/lib/generators/templates/config/initializers/typus.rb +35 -0
  164. data/lib/generators/templates/config/initializers/typus_authentication.rb +18 -0
  165. data/lib/generators/templates/config/initializers/typus_resources.rb +24 -0
  166. data/lib/generators/templates/config/typus/README +58 -0
  167. data/lib/generators/templates/config/typus/application.yml +3 -0
  168. data/lib/generators/templates/config/typus/application_roles.yml +4 -0
  169. data/lib/generators/templates/config/typus/typus.yml +15 -0
  170. data/lib/generators/templates/config/typus/typus_roles.yml +4 -0
  171. data/lib/generators/templates/controller.erb +2 -0
  172. data/lib/generators/templates/migration.erb +22 -0
  173. data/lib/generators/templates/view.html.erb +13 -0
  174. data/lib/generators/typus/config_generator.rb +67 -0
  175. data/lib/generators/typus/controller_generator.rb +25 -0
  176. data/lib/generators/typus/initializers_generator.rb +20 -0
  177. data/lib/generators/typus/migration_generator.rb +94 -0
  178. data/lib/generators/typus/typus_generator.rb +52 -0
  179. data/lib/generators/typus/views_generator.rb +19 -0
  180. data/lib/support/active_record.rb +42 -0
  181. data/lib/support/fake_user.rb +47 -0
  182. data/lib/support/hash.rb +12 -0
  183. data/lib/support/object.rb +9 -0
  184. data/lib/support/string.rb +40 -0
  185. data/lib/tasks/typus.rake +11 -0
  186. data/lib/typus/authentication/base.rb +24 -0
  187. data/lib/typus/authentication/devise.rb +19 -0
  188. data/lib/typus/authentication/http_basic.rb +18 -0
  189. data/lib/typus/authentication/none.rb +15 -0
  190. data/lib/typus/authentication/none_with_role.rb +15 -0
  191. data/lib/typus/authentication/session.rb +123 -0
  192. data/lib/typus/configuration.rb +41 -0
  193. data/lib/typus/engine.rb +17 -0
  194. data/lib/typus/i18n.rb +48 -0
  195. data/lib/typus/orm/active_record/admin_user.rb +84 -0
  196. data/lib/typus/orm/active_record/class_methods.rb +104 -0
  197. data/lib/typus/orm/active_record/instance_methods.rb +76 -0
  198. data/lib/typus/orm/active_record/search.rb +44 -0
  199. data/lib/typus/orm/active_record.rb +10 -0
  200. data/lib/typus/orm/base/class_methods.rb +184 -0
  201. data/lib/typus/orm/base/search.rb +70 -0
  202. data/lib/typus/regex.rb +11 -0
  203. data/lib/typus/resources.rb +55 -0
  204. data/lib/typus/version.rb +10 -0
  205. data/lib/typus.rb +212 -0
  206. data/typus.gemspec +32 -0
  207. data/vendor/assets/adapt/css/1200.css +357 -0
  208. data/vendor/assets/adapt/css/1200.min.css +1 -0
  209. data/vendor/assets/adapt/css/1560.css +357 -0
  210. data/vendor/assets/adapt/css/1560.min.css +1 -0
  211. data/vendor/assets/adapt/css/720.css +357 -0
  212. data/vendor/assets/adapt/css/720.min.css +1 -0
  213. data/vendor/assets/adapt/css/960.css +357 -0
  214. data/vendor/assets/adapt/css/960.min.css +1 -0
  215. data/vendor/assets/adapt/css/fluid.css +345 -0
  216. data/vendor/assets/adapt/css/fluid.min.css +1 -0
  217. data/vendor/assets/adapt/css/master.css +120 -0
  218. data/vendor/assets/adapt/css/mobile.css +20 -0
  219. data/vendor/assets/adapt/css/mobile.min.css +1 -0
  220. data/vendor/assets/adapt/css/reset.css +202 -0
  221. data/vendor/assets/adapt/css/text.css +81 -0
  222. data/vendor/assets/adapt/images/h1.png +0 -0
  223. data/vendor/assets/adapt/js/adapt.js +135 -0
  224. data/vendor/assets/adapt/js/adapt.min.js +1 -0
  225. data/vendor/assets/bootstrap-2.3.2/css/bootstrap-responsive.css +1109 -0
  226. data/vendor/assets/bootstrap-2.3.2/css/bootstrap-responsive.min.css +9 -0
  227. data/vendor/assets/bootstrap-2.3.2/css/bootstrap.css +6167 -0
  228. data/vendor/assets/bootstrap-2.3.2/css/bootstrap.min.css +9 -0
  229. data/vendor/assets/bootstrap-2.3.2/img/glyphicons-halflings-white.png +0 -0
  230. data/vendor/assets/bootstrap-2.3.2/img/glyphicons-halflings.png +0 -0
  231. data/vendor/assets/bootstrap-2.3.2/js/bootstrap.js +2280 -0
  232. data/vendor/assets/bootstrap-2.3.2/js/bootstrap.min.js +6 -0
  233. data/vendor/assets/chosen/LICENSE.md +24 -0
  234. data/vendor/assets/chosen/chosen-sprite.png +0 -0
  235. data/vendor/assets/chosen/chosen.css +390 -0
  236. data/vendor/assets/chosen/chosen.jquery.js +902 -0
  237. data/vendor/assets/formalize/css/formalize.css +395 -0
  238. data/vendor/assets/formalize/images/button.png +0 -0
  239. data/vendor/assets/formalize/images/select_arrow.gif +0 -0
  240. data/vendor/assets/formalize/js/jquery.formalize.min.js +1 -0
  241. 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,7 @@
1
+ Someone has requested a link to change your password, and you can do this through the link below.
2
+
3
+ <%= @token_url %>
4
+
5
+ If you didn't request this, please ignore this email.
6
+
7
+ Your password won't change until you access the link above and create a new one.
@@ -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 %>
@@ -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 = "&larr; #{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')} &rarr;".html_safe %>
12
+ <%= link_to message, options[:next] %>
13
+ </li>
14
+ <% end %>
15
+ </ul>
File without changes
@@ -0,0 +1,7 @@
1
+ <h3>Actions</h3>
2
+
3
+ <ul>
4
+ <li>Action number one</li>
5
+ <li>Action number two</li>
6
+ <li>Action number three</li>
7
+ </ul>
@@ -0,0 +1,8 @@
1
+ <% if (items = @resource.limit(10)).any? %>
2
+ <h3><%= Typus::I18n.t("Edited Recently") %></h3>
3
+ <ul>
4
+ <% items.each do |item| %>
5
+ <li><%= link_to item.to_label, :action => 'edit', :id => item %></li>
6
+ <% end %>
7
+ </ul>
8
+ <% end %>
@@ -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
+ <%= "&nbsp;<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
+ <%= "&nbsp; <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
+ <%= "&nbsp;<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 %> &mdash; <%= 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 %>
@@ -0,0 +1,3 @@
1
+ <% fields.reject { |k,v| ![:belongs_to, :has_and_belongs_to_many].include?(v) }.keys.each do |key| %>
2
+ <%= yield "modal_for_#{key}" %>
3
+ <% end %>
@@ -0,0 +1,5 @@
1
+ Some snippets to use in the future:
2
+
3
+ <input type="hidden"
4
+ id="pageListJSON"
5
+ value="[<%= Page.all.map { |p| "['#{p.to_label}', '/pages/#{p.respond?(:permalink) p.permalink : p.id}']" }.join(", ") %>]">
@@ -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,6 @@
1
+ <div class="control-group" id="<%= attribute_id %>">
2
+ <%= form.label attribute, label_text, { :class => "control-label" } %>
3
+ <div class="controls">
4
+ <%= form.check_box attribute, options %>
5
+ </div>
6
+ </div>
@@ -0,0 +1,6 @@
1
+ <div class="control-group" id="<%= attribute_id %>">
2
+ <%= form.label attribute, label_text, { :class => "control-label" } %>
3
+ <div class="controls">
4
+ <%= form.date_select attribute, options, html_options %>
5
+ </div>
6
+ </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>