aerogel-pages 1.4.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +14 -0
- data/Rakefile +1 -0
- data/aerogel-pages.gemspec +26 -0
- data/app/helpers/README.md +7 -0
- data/app/helpers/decorators.rb +74 -0
- data/app/helpers/pages.rb +32 -0
- data/app/routes/admin-pages.rb +150 -0
- data/app/routes/pages.rb +16 -0
- data/assets/javascripts/admin-pages/pages-widget.js.coffee +83 -0
- data/assets/javascripts/admin-pages/pane-preview.js.coffee +37 -0
- data/assets/javascripts/admin-pages/pane-tree.js.coffee +105 -0
- data/assets/javascripts/admin-pages-edit/admin-modal-select.js.coffee +63 -0
- data/assets/javascripts/admin-pages-edit/datetime-picker-field.js.coffee +36 -0
- data/assets/javascripts/admin-pages-edit/page-blocks.js.coffee +71 -0
- data/assets/javascripts/admin-pages-edit/page-content-tabs.js.coffee +40 -0
- data/assets/javascripts/admin-pages-utils/attached-footer.js.coffee +62 -0
- data/assets/javascripts/admin-pages-utils/autofixed-height.js.coffee +15 -0
- data/assets/javascripts/admin-pages-utils/two-pane-widget.js.coffee +78 -0
- data/assets/javascripts/aerogel-pages.js.coffee +3 -0
- data/assets/javascripts/controllers/admin-pages-edit.js.coffee +33 -0
- data/assets/javascripts/controllers/admin-pages.js.coffee +17 -0
- data/assets/stylesheets/admin-pages/_admin-pages-alert.css.scss +14 -0
- data/assets/stylesheets/admin-pages/_pages-widget.css.scss +113 -0
- data/assets/stylesheets/admin-pages/_pane-tree.css.scss +15 -0
- data/assets/stylesheets/admin-pages/_preview.css.scss +35 -0
- data/assets/stylesheets/admin-pages/_two-pane-widget.css.scss +103 -0
- data/assets/stylesheets/admin-pages-common/_admin-modals-select.css.scss +34 -0
- data/assets/stylesheets/admin-pages-common/_form-details.css.scss +11 -0
- data/assets/stylesheets/admin-pages-common/_nav-tabs.css.scss +6 -0
- data/assets/stylesheets/admin-pages-common/_page-blocks.css.scss +18 -0
- data/assets/stylesheets/admin-pages-common/_panels.css.scss +11 -0
- data/assets/stylesheets/admin-pages-common/_publication-states.css.scss +11 -0
- data/assets/stylesheets/admin-pages-common/_smart-links.css.scss +9 -0
- data/assets/stylesheets/admin-pages-common/_smart-tree-table-icons.css.scss +42 -0
- data/assets/stylesheets/admin-pages-edit/breadcrumbs.css.scss +11 -0
- data/assets/stylesheets/admin-pages-edit/form.css.scss +23 -0
- data/assets/stylesheets/admin-pages-edit/page-blocks.css.scss +88 -0
- data/assets/stylesheets/admin-pages-edit/page-footer.css.scss +21 -0
- data/assets/stylesheets/admin-pages-edit/page-header.css.scss +15 -0
- data/assets/stylesheets/admin-pages-edit/page.css.scss +30 -0
- data/assets/stylesheets/admin-pages-edit/tabs.css.scss +20 -0
- data/assets/stylesheets/aerogel-pages.css.scss +20 -0
- data/assets/stylesheets/controllers/admin-pages-edit.css.scss +7 -0
- data/assets/stylesheets/controllers/admin-pages.css.scss +5 -0
- data/assets/stylesheets/pages/_body.css.scss +3 -0
- data/assets/stylesheets/pages/_footer.css.scss +13 -0
- data/assets/stylesheets/pages/_header.css.scss +5 -0
- data/assets/stylesheets/pages/_image.css.scss +18 -0
- data/assets/stylesheets/pages/_layout-sticky-footer.css.scss +27 -0
- data/assets/stylesheets/pages/_menu.css.scss +45 -0
- data/assets/stylesheets/pages/_page-content.css.scss +3 -0
- data/assets/vendor/jquery.history.js +1 -0
- data/assets/vendor/smart-links.js.coffee +42 -0
- data/config/README.md +3 -0
- data/config/development/.keep +0 -0
- data/config/production/.keep +0 -0
- data/db/model/page.rb +137 -0
- data/db/model/page_node.rb +43 -0
- data/db/model/page_type.rb +15 -0
- data/db/model/pages/block.rb +38 -0
- data/db/model/pages/blocks/hr.rb +9 -0
- data/db/model/pages/blocks/image.rb +16 -0
- data/db/model/pages/blocks/pages_list.rb +41 -0
- data/db/model/pages/blocks/text.rb +9 -0
- data/db/seed/development/.keep +0 -0
- data/db/seed/development/01_page_types.seed +8 -0
- data/db/seed/development/02_root_page_node.seed +8 -0
- data/db/seed/development/03_root_pages.seed +10 -0
- data/db/seed/development/04_news_page_node.seed +15 -0
- data/db/seed/development/05_news_pages.seed +10 -0
- data/db/seed/production/.keep +0 -0
- data/db/seed/production/01_page_types.seed +8 -0
- data/db/seed/production/02_root_page_node.seed +8 -0
- data/db/seed/production/03_root_pages.seed +10 -0
- data/db/seed/seed.template +42 -0
- data/lib/aerogel/pages/core.rb +37 -0
- data/lib/aerogel/pages/traversal.rb +30 -0
- data/lib/aerogel/pages/version.rb +5 -0
- data/lib/aerogel/pages.rb +19 -0
- data/locales/actions.en.yml +11 -0
- data/locales/actions.ru.yml +11 -0
- data/locales/admin.en.yml +11 -0
- data/locales/admin.ru.yml +11 -0
- data/locales/models.en.yml +18 -0
- data/locales/models.ru.yml +19 -0
- data/locales/views.en.yml +38 -0
- data/locales/views.ru.yml +39 -0
- data/public/README.md +1 -0
- data/rake/README.md +3 -0
- data/views/admin/pages/_edit_form.html.erb +23 -0
- data/views/admin/pages/_page-DISABLED.html.erb +5 -0
- data/views/admin/pages/append.html.erb +4 -0
- data/views/admin/pages/delete.html.erb +28 -0
- data/views/admin/pages/edit/_block.html.erb +16 -0
- data/views/admin/pages/edit/_block_header.html.erb +66 -0
- data/views/admin/pages/edit/_breadcrumbs.html.erb +13 -0
- data/views/admin/pages/edit/_page.html.erb +63 -0
- data/views/admin/pages/edit/_page_footer.html.erb +55 -0
- data/views/admin/pages/edit/_page_header.html.erb +65 -0
- data/views/admin/pages/edit/_page_node.html.erb +79 -0
- data/views/admin/pages/edit/block/_default.html.erb +3 -0
- data/views/admin/pages/edit/block/_hr.html.erb +5 -0
- data/views/admin/pages/edit/block/_image.html.erb +20 -0
- data/views/admin/pages/edit/block/_pages_list.html.erb +53 -0
- data/views/admin/pages/edit/block/_text.html.erb +3 -0
- data/views/admin/pages/edit/select_page.html.erb +59 -0
- data/views/admin/pages/edit/select_template.html.erb +50 -0
- data/views/admin/pages/edit.html.erb +4 -0
- data/views/admin/pages/index/_pane_preview.html.erb +23 -0
- data/views/admin/pages/index/_pane_tree.html.erb +50 -0
- data/views/admin/pages/index/_pane_tree_tabs.html.erb +26 -0
- data/views/admin/pages/index.html.erb +26 -0
- data/views/admin/pages/insert.html.erb +4 -0
- data/views/admin/pages/preview/_block.html.erb +7 -0
- data/views/admin/pages/preview/_breadcrumbs.html.erb +11 -0
- data/views/admin/pages/preview/block/_default.html.erb +5 -0
- data/views/admin/pages/preview/block/_hr.html.erb +1 -0
- data/views/admin/pages/preview/block/_image.html.erb +8 -0
- data/views/admin/pages/preview/block/_pages_list.html.erb +14 -0
- data/views/admin/pages/preview/block/_text.html.erb +1 -0
- data/views/admin/pages/preview.html.erb +30 -0
- data/views/admin/table_builder/smart-list-table/_table_column.html.erb +3 -0
- data/views/admin/table_builder/smart-list-table/_table_row.html.erb +9 -0
- data/views/admin/table_builder/smart-list-table/table.html.erb +10 -0
- data/views/admin/table_builder/smart-tree-table/_table_column.html.erb +3 -0
- data/views/admin/table_builder/smart-tree-table/_table_row.html.erb +14 -0
- data/views/admin/table_builder/smart-tree-table/table.html.erb +10 -0
- data/views/admin/tabs_builder/pages-tree-tabs/_tab.html.erb +5 -0
- data/views/admin/tabs_builder/pages-tree-tabs/tabs.html.erb +3 -0
- data/views/form_builder/admin-pages-edit/field.erb +31 -0
- data/views/form_builder/admin-pages-edit/field_datetime.erb +19 -0
- data/views/form_builder/admin-pages-edit/field_default.erb +5 -0
- data/views/form_builder/admin-pages-edit/field_radio_buttons.erb +22 -0
- data/views/form_builder/admin-pages-edit/field_text_addon.erb +17 -0
- data/views/form_builder/admin-pages-edit/field_textarea.erb +28 -0
- data/views/form_builder/admin-pages-edit/field_title.erb +5 -0
- data/views/form_builder/admin-pages-edit/fieldset.erb +4 -0
- data/views/form_builder/admin-pages-edit-block/field.erb +31 -0
- data/views/form_builder/admin-pages-edit-block/field_default.erb +5 -0
- data/views/form_builder/admin-pages-edit-block/field_media-file.erb +60 -0
- data/views/form_builder/admin-pages-edit-block/field_media-image.erb +67 -0
- data/views/form_builder/admin-pages-edit-block/field_radio_buttons.erb +22 -0
- data/views/form_builder/admin-pages-edit-block/field_select_page.erb +34 -0
- data/views/form_builder/admin-pages-edit-block/field_select_template.erb +32 -0
- data/views/form_builder/admin-pages-edit-block/field_text_inline.erb +5 -0
- data/views/form_builder/admin-pages-edit-block/field_textarea.erb +2 -0
- data/views/form_builder/admin-pages-edit-block/fieldset.erb +4 -0
- data/views/layouts/admin/pages/preview.html.erb +9 -0
- data/views/layouts/application.html.erb +62 -0
- data/views/layouts/pages/_breadcrumbs.html.erb +20 -0
- data/views/layouts/pages/_flashes.html.erb +9 -0
- data/views/layouts/pages/_menu.html.erb +37 -0
- data/views/layouts/pages/_menu_item.html.erb +15 -0
- data/views/layouts/pages/_menu_user.html.erb +8 -0
- data/views/pages/_block.html.erb +7 -0
- data/views/pages/block/_default.html.erb +5 -0
- data/views/pages/block/_hr.html.erb +1 -0
- data/views/pages/block/_image.html.erb +8 -0
- data/views/pages/block/_pages_list.html.erb +13 -0
- data/views/pages/block/_text.html.erb +1 -0
- data/views/pages/list/_default.html.erb +7 -0
- data/views/pages/list/_table.html.erb +12 -0
- data/views/pages/list/_ul.html.erb +7 -0
- data/views/pages/view.html.erb +4 -0
- 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,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,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 @@
|
|
1
|
+
<hr/>
|
@@ -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,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,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,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,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
|
+
|