aerogel-pages 1.4.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (169) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +14 -0
  6. data/Rakefile +1 -0
  7. data/aerogel-pages.gemspec +26 -0
  8. data/app/helpers/README.md +7 -0
  9. data/app/helpers/decorators.rb +74 -0
  10. data/app/helpers/pages.rb +32 -0
  11. data/app/routes/admin-pages.rb +150 -0
  12. data/app/routes/pages.rb +16 -0
  13. data/assets/javascripts/admin-pages/pages-widget.js.coffee +83 -0
  14. data/assets/javascripts/admin-pages/pane-preview.js.coffee +37 -0
  15. data/assets/javascripts/admin-pages/pane-tree.js.coffee +105 -0
  16. data/assets/javascripts/admin-pages-edit/admin-modal-select.js.coffee +63 -0
  17. data/assets/javascripts/admin-pages-edit/datetime-picker-field.js.coffee +36 -0
  18. data/assets/javascripts/admin-pages-edit/page-blocks.js.coffee +71 -0
  19. data/assets/javascripts/admin-pages-edit/page-content-tabs.js.coffee +40 -0
  20. data/assets/javascripts/admin-pages-utils/attached-footer.js.coffee +62 -0
  21. data/assets/javascripts/admin-pages-utils/autofixed-height.js.coffee +15 -0
  22. data/assets/javascripts/admin-pages-utils/two-pane-widget.js.coffee +78 -0
  23. data/assets/javascripts/aerogel-pages.js.coffee +3 -0
  24. data/assets/javascripts/controllers/admin-pages-edit.js.coffee +33 -0
  25. data/assets/javascripts/controllers/admin-pages.js.coffee +17 -0
  26. data/assets/stylesheets/admin-pages/_admin-pages-alert.css.scss +14 -0
  27. data/assets/stylesheets/admin-pages/_pages-widget.css.scss +113 -0
  28. data/assets/stylesheets/admin-pages/_pane-tree.css.scss +15 -0
  29. data/assets/stylesheets/admin-pages/_preview.css.scss +35 -0
  30. data/assets/stylesheets/admin-pages/_two-pane-widget.css.scss +103 -0
  31. data/assets/stylesheets/admin-pages-common/_admin-modals-select.css.scss +34 -0
  32. data/assets/stylesheets/admin-pages-common/_form-details.css.scss +11 -0
  33. data/assets/stylesheets/admin-pages-common/_nav-tabs.css.scss +6 -0
  34. data/assets/stylesheets/admin-pages-common/_page-blocks.css.scss +18 -0
  35. data/assets/stylesheets/admin-pages-common/_panels.css.scss +11 -0
  36. data/assets/stylesheets/admin-pages-common/_publication-states.css.scss +11 -0
  37. data/assets/stylesheets/admin-pages-common/_smart-links.css.scss +9 -0
  38. data/assets/stylesheets/admin-pages-common/_smart-tree-table-icons.css.scss +42 -0
  39. data/assets/stylesheets/admin-pages-edit/breadcrumbs.css.scss +11 -0
  40. data/assets/stylesheets/admin-pages-edit/form.css.scss +23 -0
  41. data/assets/stylesheets/admin-pages-edit/page-blocks.css.scss +88 -0
  42. data/assets/stylesheets/admin-pages-edit/page-footer.css.scss +21 -0
  43. data/assets/stylesheets/admin-pages-edit/page-header.css.scss +15 -0
  44. data/assets/stylesheets/admin-pages-edit/page.css.scss +30 -0
  45. data/assets/stylesheets/admin-pages-edit/tabs.css.scss +20 -0
  46. data/assets/stylesheets/aerogel-pages.css.scss +20 -0
  47. data/assets/stylesheets/controllers/admin-pages-edit.css.scss +7 -0
  48. data/assets/stylesheets/controllers/admin-pages.css.scss +5 -0
  49. data/assets/stylesheets/pages/_body.css.scss +3 -0
  50. data/assets/stylesheets/pages/_footer.css.scss +13 -0
  51. data/assets/stylesheets/pages/_header.css.scss +5 -0
  52. data/assets/stylesheets/pages/_image.css.scss +18 -0
  53. data/assets/stylesheets/pages/_layout-sticky-footer.css.scss +27 -0
  54. data/assets/stylesheets/pages/_menu.css.scss +45 -0
  55. data/assets/stylesheets/pages/_page-content.css.scss +3 -0
  56. data/assets/vendor/jquery.history.js +1 -0
  57. data/assets/vendor/smart-links.js.coffee +42 -0
  58. data/config/README.md +3 -0
  59. data/config/development/.keep +0 -0
  60. data/config/production/.keep +0 -0
  61. data/db/model/page.rb +137 -0
  62. data/db/model/page_node.rb +43 -0
  63. data/db/model/page_type.rb +15 -0
  64. data/db/model/pages/block.rb +38 -0
  65. data/db/model/pages/blocks/hr.rb +9 -0
  66. data/db/model/pages/blocks/image.rb +16 -0
  67. data/db/model/pages/blocks/pages_list.rb +41 -0
  68. data/db/model/pages/blocks/text.rb +9 -0
  69. data/db/seed/development/.keep +0 -0
  70. data/db/seed/development/01_page_types.seed +8 -0
  71. data/db/seed/development/02_root_page_node.seed +8 -0
  72. data/db/seed/development/03_root_pages.seed +10 -0
  73. data/db/seed/development/04_news_page_node.seed +15 -0
  74. data/db/seed/development/05_news_pages.seed +10 -0
  75. data/db/seed/production/.keep +0 -0
  76. data/db/seed/production/01_page_types.seed +8 -0
  77. data/db/seed/production/02_root_page_node.seed +8 -0
  78. data/db/seed/production/03_root_pages.seed +10 -0
  79. data/db/seed/seed.template +42 -0
  80. data/lib/aerogel/pages/core.rb +37 -0
  81. data/lib/aerogel/pages/traversal.rb +30 -0
  82. data/lib/aerogel/pages/version.rb +5 -0
  83. data/lib/aerogel/pages.rb +19 -0
  84. data/locales/actions.en.yml +11 -0
  85. data/locales/actions.ru.yml +11 -0
  86. data/locales/admin.en.yml +11 -0
  87. data/locales/admin.ru.yml +11 -0
  88. data/locales/models.en.yml +18 -0
  89. data/locales/models.ru.yml +19 -0
  90. data/locales/views.en.yml +38 -0
  91. data/locales/views.ru.yml +39 -0
  92. data/public/README.md +1 -0
  93. data/rake/README.md +3 -0
  94. data/views/admin/pages/_edit_form.html.erb +23 -0
  95. data/views/admin/pages/_page-DISABLED.html.erb +5 -0
  96. data/views/admin/pages/append.html.erb +4 -0
  97. data/views/admin/pages/delete.html.erb +28 -0
  98. data/views/admin/pages/edit/_block.html.erb +16 -0
  99. data/views/admin/pages/edit/_block_header.html.erb +66 -0
  100. data/views/admin/pages/edit/_breadcrumbs.html.erb +13 -0
  101. data/views/admin/pages/edit/_page.html.erb +63 -0
  102. data/views/admin/pages/edit/_page_footer.html.erb +55 -0
  103. data/views/admin/pages/edit/_page_header.html.erb +65 -0
  104. data/views/admin/pages/edit/_page_node.html.erb +79 -0
  105. data/views/admin/pages/edit/block/_default.html.erb +3 -0
  106. data/views/admin/pages/edit/block/_hr.html.erb +5 -0
  107. data/views/admin/pages/edit/block/_image.html.erb +20 -0
  108. data/views/admin/pages/edit/block/_pages_list.html.erb +53 -0
  109. data/views/admin/pages/edit/block/_text.html.erb +3 -0
  110. data/views/admin/pages/edit/select_page.html.erb +59 -0
  111. data/views/admin/pages/edit/select_template.html.erb +50 -0
  112. data/views/admin/pages/edit.html.erb +4 -0
  113. data/views/admin/pages/index/_pane_preview.html.erb +23 -0
  114. data/views/admin/pages/index/_pane_tree.html.erb +50 -0
  115. data/views/admin/pages/index/_pane_tree_tabs.html.erb +26 -0
  116. data/views/admin/pages/index.html.erb +26 -0
  117. data/views/admin/pages/insert.html.erb +4 -0
  118. data/views/admin/pages/preview/_block.html.erb +7 -0
  119. data/views/admin/pages/preview/_breadcrumbs.html.erb +11 -0
  120. data/views/admin/pages/preview/block/_default.html.erb +5 -0
  121. data/views/admin/pages/preview/block/_hr.html.erb +1 -0
  122. data/views/admin/pages/preview/block/_image.html.erb +8 -0
  123. data/views/admin/pages/preview/block/_pages_list.html.erb +14 -0
  124. data/views/admin/pages/preview/block/_text.html.erb +1 -0
  125. data/views/admin/pages/preview.html.erb +30 -0
  126. data/views/admin/table_builder/smart-list-table/_table_column.html.erb +3 -0
  127. data/views/admin/table_builder/smart-list-table/_table_row.html.erb +9 -0
  128. data/views/admin/table_builder/smart-list-table/table.html.erb +10 -0
  129. data/views/admin/table_builder/smart-tree-table/_table_column.html.erb +3 -0
  130. data/views/admin/table_builder/smart-tree-table/_table_row.html.erb +14 -0
  131. data/views/admin/table_builder/smart-tree-table/table.html.erb +10 -0
  132. data/views/admin/tabs_builder/pages-tree-tabs/_tab.html.erb +5 -0
  133. data/views/admin/tabs_builder/pages-tree-tabs/tabs.html.erb +3 -0
  134. data/views/form_builder/admin-pages-edit/field.erb +31 -0
  135. data/views/form_builder/admin-pages-edit/field_datetime.erb +19 -0
  136. data/views/form_builder/admin-pages-edit/field_default.erb +5 -0
  137. data/views/form_builder/admin-pages-edit/field_radio_buttons.erb +22 -0
  138. data/views/form_builder/admin-pages-edit/field_text_addon.erb +17 -0
  139. data/views/form_builder/admin-pages-edit/field_textarea.erb +28 -0
  140. data/views/form_builder/admin-pages-edit/field_title.erb +5 -0
  141. data/views/form_builder/admin-pages-edit/fieldset.erb +4 -0
  142. data/views/form_builder/admin-pages-edit-block/field.erb +31 -0
  143. data/views/form_builder/admin-pages-edit-block/field_default.erb +5 -0
  144. data/views/form_builder/admin-pages-edit-block/field_media-file.erb +60 -0
  145. data/views/form_builder/admin-pages-edit-block/field_media-image.erb +67 -0
  146. data/views/form_builder/admin-pages-edit-block/field_radio_buttons.erb +22 -0
  147. data/views/form_builder/admin-pages-edit-block/field_select_page.erb +34 -0
  148. data/views/form_builder/admin-pages-edit-block/field_select_template.erb +32 -0
  149. data/views/form_builder/admin-pages-edit-block/field_text_inline.erb +5 -0
  150. data/views/form_builder/admin-pages-edit-block/field_textarea.erb +2 -0
  151. data/views/form_builder/admin-pages-edit-block/fieldset.erb +4 -0
  152. data/views/layouts/admin/pages/preview.html.erb +9 -0
  153. data/views/layouts/application.html.erb +62 -0
  154. data/views/layouts/pages/_breadcrumbs.html.erb +20 -0
  155. data/views/layouts/pages/_flashes.html.erb +9 -0
  156. data/views/layouts/pages/_menu.html.erb +37 -0
  157. data/views/layouts/pages/_menu_item.html.erb +15 -0
  158. data/views/layouts/pages/_menu_user.html.erb +8 -0
  159. data/views/pages/_block.html.erb +7 -0
  160. data/views/pages/block/_default.html.erb +5 -0
  161. data/views/pages/block/_hr.html.erb +1 -0
  162. data/views/pages/block/_image.html.erb +8 -0
  163. data/views/pages/block/_pages_list.html.erb +13 -0
  164. data/views/pages/block/_text.html.erb +1 -0
  165. data/views/pages/list/_default.html.erb +7 -0
  166. data/views/pages/list/_table.html.erb +12 -0
  167. data/views/pages/list/_ul.html.erb +7 -0
  168. data/views/pages/view.html.erb +4 -0
  169. metadata +267 -0
@@ -0,0 +1,50 @@
1
+ <% page_title "Select template" %>
2
+
3
+ <div class="list-select-template-widget">
4
+ <% if @templates.blank? %>
5
+ <span class="nodata">No templates found in "<%= @select_template_prefix %>"</span>
6
+ <% end %>
7
+ <%
8
+ table @templates, style: 'smart-list-table', html_params: { id: 'listSelectTemplate' } do
9
+ column :module
10
+ column :filename
11
+ end
12
+ %>
13
+
14
+ </div>
15
+
16
+ <% form nil, html_params: { class: 'select-template-form' } do %>
17
+ <%= button :cancel %>
18
+ <%= button :select, onclick: "on_click_select();", id: "btn-select-template", disabled: true %>
19
+ <% end %>
20
+
21
+
22
+ <script type="text/javascript">
23
+ var list = null;
24
+
25
+ $(function(){
26
+ list = new SmartListTable( $("#listSelectTemplate").first(), {
27
+ column: 2,
28
+ on_select: on_template_select,
29
+ });
30
+ var selected_template_id = '<%= @select_template_name %>';
31
+ if ( selected_template_id ) {
32
+ list.select( selected_template_id );
33
+ }
34
+ });
35
+
36
+ var template_id = null;
37
+ var template_label = null;
38
+
39
+ function on_template_select( id, object, el ) {
40
+ console.log("template selected: "+id);
41
+ $("#btn-select-template").removeAttr('disabled');
42
+ template_id = id;
43
+ template_label = object.contents;
44
+ }
45
+ function on_click_select() {
46
+ console.log("clicked Select: id:"+template_id+" label: '"+template_label+"'" );
47
+ admin_modal_select_and_close( { template_id: template_id, template_label: template_label } );
48
+ return false;
49
+ }
50
+ </script>
@@ -0,0 +1,4 @@
1
+
2
+ <% page_title t.aerogel.admin.pages.edit %>
3
+
4
+ <%= partial 'admin/pages/edit_form' %>
@@ -0,0 +1,23 @@
1
+ <div class="tab btn-open">
2
+ <%= icon 'fa-arrow-left' %>
3
+ </div>
4
+
5
+ <div class="content">
6
+
7
+ <div id="preview-empty">
8
+ <%= t.aerogel.admin.pages.views.index.no_page_selected %>
9
+ </div>
10
+
11
+ <div id="preview" class="container">
12
+ <!-- page preview here -->
13
+ </div>
14
+
15
+ <div class="bottom-toolbar">
16
+ <div class="container">
17
+ <a href="#edit" class="btn btn-primary page-edit-link">
18
+ <%= icon 'fa-edit' %> <%= t.aerogel.admin.pages.edit %>
19
+ </a>
20
+ </div>
21
+ </div>
22
+
23
+ </div> <!-- .content -->
@@ -0,0 +1,50 @@
1
+ <div class="tab btn-open">
2
+ <%= icon 'fa-arrow-right' %>
3
+ </div>
4
+
5
+ <div class="content">
6
+ <%= partial 'admin/pages/index/pane_tree_tabs' %>
7
+ <%
8
+ table @page_nodes, style: 'smart-tree-table', lang: @lang, html_params: { id: 'tree' } do
9
+ column :drag_handle, label: '' do
10
+ ''
11
+ end
12
+ column :publication_state, label: '' do |p|
13
+ admin_pages_publication_state_as_icon( p, options[:lang] )
14
+ end
15
+ column :title do |p|
16
+ admin_pages_title_as_text( p, options[:lang] )
17
+ end
18
+ column :type do |p|
19
+ p.page_type.try(:name)
20
+ end
21
+ end
22
+ %>
23
+
24
+ <div class="bottom-toolbar">
25
+ <div class="container">
26
+ <div class="btn-group">
27
+ <% link_to "new",
28
+ class: "btn btn-default btn-sm page-append-link",
29
+ title: t.aerogel.admin.pages.append do
30
+ %>
31
+ <%= icon 'fa-plus' %> <%= t.aerogel.admin.pages.append_short %>
32
+ <% end %>
33
+
34
+ <% link_to "new",
35
+ class: "btn btn-default btn-sm page-insert-link",
36
+ title: t.aerogel.admin.pages.insert do
37
+ %>
38
+ <%= icon 'fa-arrow-right' %> <%= t.aerogel.admin.pages.insert_short %>
39
+ <% end %>
40
+ </div>
41
+
42
+ <% link_to_modal "new", class: "btn btn-default btn-sm page-delete-link" do %>
43
+ <%= icon 'fa-times' %>
44
+ <%= t.aerogel.admin.pages.delete %>
45
+ <% end %>
46
+ </div>
47
+ </div>
48
+
49
+ </div> <!-- .content -->
50
+
@@ -0,0 +1,26 @@
1
+ <div class="top-toolbar">
2
+ <ul class="nav nav-tabs">
3
+ <% Page.available_langs.each do |tab_lang| %>
4
+ <li <%= @lang.to_s == tab_lang.to_s ? 'class="active"' : '' %> >
5
+ <%= link_to "#{tab_lang}-", tab_lang.to_s,
6
+ class: "lang-select-link", 'data-lang-id' => tab_lang
7
+ %>
8
+ </li>
9
+ <% end %>
10
+ <li class="pull-right dropdown disabled">
11
+ <a class="dropdown-toggle" data-toggle="dropdown" href="#">
12
+ <%= icon 'fa-cog' %> <span class="caret"></span>
13
+ </a>
14
+ <ul class="dropdown-menu">
15
+ <li class="disabled">
16
+ <a href="#">item 1</a>
17
+ </li>
18
+ <li class="divider">
19
+ </li>
20
+ <li>
21
+ <a href="#">Re-order pages</a>
22
+ </li>
23
+ </ul>
24
+ </li>
25
+ </ul>
26
+ </div>
@@ -0,0 +1,26 @@
1
+ <% assets "controllers/admin-pages" %>
2
+
3
+ <% page_title t.aerogel.admin.panes.pages %>
4
+
5
+ <div class="pages-widget">
6
+ <div class="pane-tree pane left">
7
+ <%= partial 'admin/pages/index/pane_tree' %>
8
+ </div><div class="pane-preview pane right">
9
+ <%= partial 'admin/pages/index/pane_preview' %>
10
+ </div>
11
+ </div>
12
+
13
+
14
+
15
+ <script type="text/javascript">
16
+ $(function(){
17
+ pages_widget.set_state({
18
+ <% if @selected_page_node %>
19
+ page_node_id: "<%= @selected_page_node.id %>",
20
+ <% end %>
21
+ lang: "<%= @lang %>"
22
+ });
23
+ pane_tree.expand("<%= PageNode.root.id %>");
24
+ // pages_widget.open_left();
25
+ });
26
+ </script>
@@ -0,0 +1,4 @@
1
+
2
+ <% page_title t.aerogel.admin.pages.insert %>
3
+
4
+ <%= partial 'admin/pages/edit_form' %>
@@ -0,0 +1,7 @@
1
+ <%=
2
+ begin
3
+ partial "admin/pages/preview/block/#{block.type}", locals: { block: block }, scope: self
4
+ rescue Errno::ENOENT
5
+ partial "admin/pages/preview/block/default", locals: { block: block }, scope: self
6
+ end
7
+ %>
@@ -0,0 +1,11 @@
1
+ <ol class="breadcrumb">
2
+ <% @page_node.ancestors.sort_by(&:depth).each do |p| %>
3
+ <li>
4
+ <%= render_once :home, icon('fa-home') %>
5
+ <%= link_to "#{@lang}-#{p.id}",
6
+ admin_pages_title_as_icon_and_text( p, @lang ),
7
+ onclick: "pages_widget.goto_page('#{p.id}'); return false"
8
+ %>
9
+ </li>
10
+ <% end %>
11
+ </ol>
@@ -0,0 +1,5 @@
1
+ <div>
2
+ <span class="nodata">
3
+ &lt; block :<%= block.type %> ignored &gt;
4
+ </span>
5
+ </div>
@@ -0,0 +1 @@
1
+ <hr/>
@@ -0,0 +1,8 @@
1
+ <div class="image <%= block.alignment %>">
2
+ <% if block.thumb.present? %>
3
+ <%= image_thumb_tag block.image, block.thumb, title: block.name %>
4
+ <% else %>
5
+ <%= image_tag block.image %><br/>
6
+ <%= block.name %>
7
+ <% end %>
8
+ </div>
@@ -0,0 +1,14 @@
1
+ <%
2
+ table block.listed_pages do
3
+ unless block.ordered_by == :position
4
+ column block.ordered_by, style: "width:25%" do |page|
5
+ l page.try( block.ordered_by ).try(:to_date), default: t.aerogel.admin.decorators.no_date
6
+ end
7
+ end
8
+ column :title do |page|
9
+ link_to "#{page.lang}-#{page.page_node.id}",
10
+ admin_pages_title_as_icon_and_text( page.page_node, page.lang ),
11
+ onclick: "pages_widget.goto_page('#{page.page_node.id}'); return false"
12
+ end
13
+ end
14
+ %>
@@ -0,0 +1 @@
1
+ <%= block.content %>
@@ -0,0 +1,30 @@
1
+ <div class="page-preview-body">
2
+ <%= partial 'admin/pages/preview/breadcrumbs' %>
3
+ <% if @page_node.page(@lang).present? %>
4
+ <h3 class="title">
5
+ <%= @page_node.page(@lang).try :title %>
6
+ </h3>
7
+ <div class="headers">
8
+ <div class="published_at">
9
+ <%= l @page_node.page(@lang).try(:published_at).try(:to_date),
10
+ default: nil,
11
+ format: :long
12
+ %>
13
+ </div>
14
+ </div>
15
+
16
+ <div class="content">
17
+ <%= partial "admin/pages/preview/block",
18
+ collection: @page_node.page(@lang).try(:page_blocks)
19
+ %>
20
+ </div>
21
+ <% else %>
22
+ <div class="content">
23
+ <br/>
24
+ <span class="nodata">
25
+ <%= icon 'fa-warning' %> <%= t.aerogel.admin.pages.views.preview.no_content_in_this_language %>
26
+ </span>
27
+ <br/>
28
+ </div>
29
+ <% end %>
30
+ </div>
@@ -0,0 +1,3 @@
1
+ <th <%= table_column.html_params %> >
2
+ <%= table_column.human_label %>
3
+ </th>
@@ -0,0 +1,9 @@
1
+ <tr
2
+ data-id="<%= table_row.id %>"
3
+ >
4
+ <% table.columns.each do |col| %>
5
+ <td <%= col.html_params %> >
6
+ <%= col.block.present? ? col.block.call( table_row ) : h( table_row.send col.field ) %>
7
+ </td>
8
+ <% end %>
9
+ </tr>
@@ -0,0 +1,10 @@
1
+ <table class="table table-condensed" <%= table.html_params %>>
2
+ <thead>
3
+ <tr>
4
+ <%= partial table.template("table_column"), locals: { table: table }, collection: table.columns %>
5
+ </tr>
6
+ </thead>
7
+ <tbody>
8
+ <%= partial table.template("table_row"), locals: { table: table }, collection: table.object %>
9
+ </tbody>
10
+ </table>
@@ -0,0 +1,3 @@
1
+ <th <%= table_column.html_params %> >
2
+ <%= table_column.human_label %>
3
+ </th>
@@ -0,0 +1,14 @@
1
+ <tr
2
+ data-id="<%= table_row.id %>" data-parent-id="<%= table_row.parent_id %>"
3
+ data-url-preview="<%= @lang %>-<%= table_row.id %>/preview"
4
+ data-url-edit="<%= @lang %>-<%= table_row.id %>/edit"
5
+ data-url-delete="<%= @lang %>-<%= table_row.id %>/delete"
6
+ data-url-append="<%= @lang %>-<%= table_row.id %>/append"
7
+ data-url-insert="<%= @lang %>-<%= table_row.id %>/insert"
8
+ >
9
+ <% table.columns.each do |col| %>
10
+ <td <td <%= col.html_params %> >
11
+ <%= col.block.present? ? col.block.call( table_row ) : h( table_row.send col.field ) %>
12
+ </td>
13
+ <% end %>
14
+ </tr>
@@ -0,0 +1,10 @@
1
+ <table class="table table-condensed" <%= table.html_params %>>
2
+ <thead>
3
+ <tr>
4
+ <%= partial table.template("table_column"), locals: { table: table }, collection: table.columns %>
5
+ </tr>
6
+ </thead>
7
+ <tbody>
8
+ <%= partial table.template("table_row"), locals: { table: table }, collection: table.object %>
9
+ </tbody>
10
+ </table>
@@ -0,0 +1,5 @@
1
+ <li <%= tabs.options[:lang].to_s == tab.url.to_s ? 'class="active"' : '' %>
2
+ class="<%= tab.options[:class] %>"
3
+ >
4
+ <%= link_to tab.url+'-', tab.human_label %>
5
+ </li>
@@ -0,0 +1,3 @@
1
+ <ul class="nav nav-tabs">
2
+ <%= partial tabs.template("tab"), locals: { tabs: tabs }, collection: tabs.tabs %>
3
+ </ul>
@@ -0,0 +1,31 @@
1
+ <% unless field.type.to_sym == :hidden -%>
2
+ <div class="form-group field <%= 'has-error' if field.invalid? %>">
3
+ <% end -%>
4
+ <%=
5
+ begin
6
+ erb form_builder.template( "field_#{field.type}", field.options ),
7
+ locals: { field: field },
8
+ layout: false
9
+ rescue Errno::ENOENT
10
+ begin
11
+ erb form_builder.template( "field_#{field.type}", style: :standard ),
12
+ locals: { field: field },
13
+ layout: false
14
+ rescue Errno::ENOENT
15
+ erb form_builder.template( :field_default, field.options ),
16
+ locals: { field: field },
17
+ layout: false
18
+ end
19
+ end
20
+ %>
21
+ <% if field.hint %>
22
+ <span class="help-block"><%= field.hint %></span>
23
+ <% end %>
24
+ <% if field.invalid? %>
25
+ <span class="help-block field-errors">
26
+ <%= field.errors.join(', ') %>
27
+ </span>
28
+ <% end %>
29
+ <% unless field.type.to_sym == :hidden -%>
30
+ </div>
31
+ <% end -%>
@@ -0,0 +1,19 @@
1
+ <label for="<%= field.css_id %>"><%= field.label -%>
2
+ <% if field.required? -%> <abbr class="required" title="<%= t 'aerogel.forms.required' %>">*</abbr>
3
+ <% end -%>
4
+ </label>
5
+
6
+ <!-- div class="input-group datetimepicker" -->
7
+ <div class="input-group datetimepicker">
8
+
9
+
10
+ <input id="<%= field.css_id %>" type="<%= field.type %>" name="<%= field.html_name %>"
11
+ value="<%= h field.value.try(:iso8601) %>" <%= field.required? ? 'required' : '' %>
12
+ <%= field.html_params %> class="form-control"
13
+ data-target-id="<%= field.css_id %>"
14
+ />
15
+ <span class="input-group-addon">
16
+ <%= icon 'fa-calendar' %>
17
+ </span>
18
+
19
+ </div>
@@ -0,0 +1,5 @@
1
+ <label for="<%= field.css_id %>"><%= field.label -%>
2
+ <% if field.required? -%> <abbr class="required" title="<%= t 'aerogel.forms.required' %>">*</abbr>
3
+ <% end -%>
4
+ </label>
5
+ <input id="<%= field.css_id %>" type="<%= field.type %>" name="<%= field.html_name %>" value="<%= h field.value %>" <%= field.required? ? 'required' : '' %> <%= field.html_params %> class="form-control" />
@@ -0,0 +1,22 @@
1
+ <label for="<%= field.css_id %>"><%= field.label -%>
2
+ <% if field.required? -%> <abbr class="required" title="<%= t 'aerogel.forms.required' %>">*</abbr>
3
+ <% end -%>
4
+ </label>
5
+
6
+ <div class="input-group">
7
+ <div class="btn-group" data-toggle="buttons">
8
+ <% unless field.required? %>
9
+ <label class="btn btn-default <%= field.value.blank? ? 'active' : '' %>">
10
+ <input type="radio" class="form-control" name="<%= field.html_name %>" id="<%= field.css_id %>-11"
11
+ value <%= field.value.blank? ? 'checked=""' : '' %>>
12
+ <%= icon 'fa-times' %>
13
+ </label>
14
+ <% end %>
15
+ <% field.options[:values].each_with_index do |value, i| %>
16
+ <label class="btn btn-default <%= value.to_s == field.value.to_s ? 'active' : '' %>" >
17
+ <input type="radio" class="form-control" name="<%= field.html_name %>" id="<%= field.css_id %>-11" value="<%= h value %>" <%= value.to_s == field.value.to_s ? 'checked=""' : '' %>>
18
+ <%= field.options[:labels].present? ? ( field.options[:labels][i] ) : h( value ) %>
19
+ </label>
20
+ <% end %>
21
+ </div>
22
+ </div>
@@ -0,0 +1,17 @@
1
+ <label for="<%= field.css_id %>"><%= field.label -%>
2
+ <% if field.required? -%> <abbr class="required" title="<%= t 'aerogel.forms.required' %>">*</abbr>
3
+ <% end -%>
4
+ </label>
5
+ <div class="input-group">
6
+ <% if field.options.key? :prefix %>
7
+ <span class="input-group-addon">
8
+ <%= field.options[:prefix] %>
9
+ </span>
10
+ <% end %>
11
+ <input id="<%= field.css_id %>" type="text" name="<%= field.html_name %>" value="<%= h field.value %>" <%= field.required? ? 'required' : '' %> class="form-control" />
12
+ <% if field.options.key? :suffix %>
13
+ <span class="input-group-addon">
14
+ <%= field.options[:suffix] %>
15
+ </span>
16
+ <% end %>
17
+ </div>
@@ -0,0 +1,28 @@
1
+ <%
2
+ collapsed = field.options[:collapsible] && field.valid?
3
+ %>
4
+
5
+ <% if collapsed %>
6
+ <a href="#" class="smart-link" id="<%= field.css_id %>-link"
7
+ data-show-id="#<%= field.css_id %>-group"
8
+ data-hide-id="#<%= field.css_id %>-link"
9
+ data-effect="show"
10
+ >
11
+ <%= icon 'fa-caret-right' %>
12
+ <%= field.label -%>
13
+ </a>
14
+ <% end %>
15
+
16
+ <div id="<%= field.css_id %>-group"
17
+ <% if collapsed %>
18
+ style="display:none"
19
+ <% end %>
20
+ >
21
+ <label for="<%= field.css_id %>"><%= field.label -%>
22
+ <% if field.required? -%> <abbr class="required" title="<%= t 'aerogel.forms.required' %>">*</abbr>
23
+ <% end -%>
24
+ </label>
25
+
26
+ <textarea id="<%= field.css_id %>" type="text" name="<%= field.html_name %>" <%= field.required? ? 'required' : '' %> class="form-control"
27
+ ><%= h field.value %></textarea>
28
+ </div>
@@ -0,0 +1,5 @@
1
+ <input id="<%= field.css_id %>" type="<%= field.type %>" name="<%= field.html_name %>"
2
+ value="<%= h field.value %>" <%= field.required? ? 'required' : '' %>
3
+ placeholder="<%= h field.label %><%= field.required? ? ' *' : '' %>"
4
+ class="form-control input-title" <%= field.html_params %>
5
+ />
@@ -0,0 +1,4 @@
1
+ <fieldset class="<%= fieldset.object_name %> <%= 'fieldset-with-errors' if fieldset.invalid? %> id-<%= fieldset.object.id %>">
2
+ <%= content %>
3
+ <%= fieldset.object.persisted? ? fieldset.hidden(:id) : '' %>
4
+ </fieldset>
@@ -0,0 +1,31 @@
1
+ <% unless field.type.to_sym == :hidden -%>
2
+ <div class="form-group field <%= 'has-error' if field.invalid? %>">
3
+ <% end -%>
4
+ <%=
5
+ begin
6
+ erb form_builder.template( "field_#{field.type}", field.options ),
7
+ locals: { field: field },
8
+ layout: false
9
+ rescue Errno::ENOENT
10
+ begin
11
+ erb form_builder.template( "field_#{field.type}", style: :standard ),
12
+ locals: { field: field },
13
+ layout: false
14
+ rescue Errno::ENOENT
15
+ erb form_builder.template( :field_default, field.options ),
16
+ locals: { field: field },
17
+ layout: false
18
+ end
19
+ end
20
+ %>
21
+ <% if field.hint %>
22
+ <span class="help-block"><%= field.hint %></span>
23
+ <% end %>
24
+ <% if field.invalid? %>
25
+ <span class="help-block field-errors">
26
+ <%= field.errors.join(', ') %>
27
+ </span>
28
+ <% end %>
29
+ <% unless field.type.to_sym == :hidden -%>
30
+ </div>
31
+ <% end -%>
@@ -0,0 +1,5 @@
1
+ <label for="<%= field.css_id %>"><%= field.label -%>
2
+ <% if field.required? -%> <abbr class="required" title="<%= t 'aerogel.forms.required' %>">*</abbr>
3
+ <% end -%>
4
+ </label>
5
+ <input id="<%= field.css_id %>" type="<%= field.type %>" name="<%= field.html_name %>" value="<%= h field.value %>" <%= field.required? ? 'required' : '' %> <%= field.html_params %> class="form-control" />
@@ -0,0 +1,60 @@
1
+ <!-- label for="<%= field.css_id %>"><%= field.label -%>
2
+ <% if field.required? -%> <abbr class="required" title="<%= t 'aerogel.forms.required' %>">*</abbr>
3
+ <% end -%>
4
+ </label -->
5
+
6
+ <div class="smart-file-input">
7
+ <%= tag :input, type: :hidden,
8
+ name: field.html_name("retained_#{field.name}"),
9
+ value: field.data_object.send(:"retained_#{field.name}")
10
+ %>
11
+ <%= tag :input, type: :hidden,
12
+ name: field.html_name("remove_#{field.name}"),
13
+ class: "file-remove-field"
14
+ %>
15
+ <input id="<%= field.css_id %>" type="file" name="<%= field.html_name %>" <%= field.html_params %> />
16
+
17
+ <div class="file-empty">
18
+ <div>
19
+ <span class="file-label"><i><%= t.aerogel.forms.file.empty %></i></span>
20
+ </div>
21
+ <span class="btn btn-default btn-sm btn-file-select">
22
+ <%= t.aerogel.forms.file.select %>
23
+ </span>
24
+ </div>
25
+ <div class="file-exists">
26
+
27
+ <% if field.value %>
28
+ <div class="file-old">
29
+ <%= icon 'fa-file-o fa-2x', style: 'vertical-align: middle' %>
30
+ <span class="file-label"><%= link_to field.value.url, field.value.try(:description) %></span>
31
+ </div>
32
+ <% end %>
33
+
34
+ <div class="file-new">
35
+ <%= icon 'fa-file-o fa-2x', style: 'vertical-align: middle' %>
36
+ <span class="file-label"></span>
37
+ </div>
38
+ <span class="btn btn-default btn-sm btn-file-change">
39
+ <%= t.aerogel.forms.file.change %>
40
+ </span>
41
+ <span class="btn btn-default btn-sm btn-file-remove">
42
+ <%= t.aerogel.forms.file.remove %>
43
+ </span>
44
+ </div>
45
+ </div>
46
+
47
+ <% field.form_object.options[:multipart] = true %>
48
+
49
+
50
+ <script type="text/javascript">
51
+ $(function(){
52
+ console.log("applying smart-file-input started");
53
+ $("#<%= field.css_id %>").closest(".smart-file-input").each(function(){
54
+ console.log("found element for smart-file-input");
55
+ smart_file_input( $(this) );
56
+ });
57
+ console.log("applying smart-file-input finished");
58
+ });
59
+ </script>
60
+