udongo 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +26 -0
- data/app/assets/fonts/FontAwesome.otf +0 -0
- data/app/assets/fonts/fontawesome-webfont.eot +0 -0
- data/app/assets/fonts/fontawesome-webfont.svg +685 -0
- data/app/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/app/assets/fonts/fontawesome-webfont.woff +0 -0
- data/app/assets/fonts/fontawesome-webfont.woff2 +0 -0
- data/app/assets/javascripts/backend/application.js +22 -0
- data/app/assets/javascripts/backend/bootstrap.js +3560 -0
- data/app/assets/javascripts/backend/datepickers.js +67 -0
- data/app/assets/javascripts/backend/general.js +7 -0
- data/app/assets/javascripts/backend/pages.js +7 -0
- data/app/assets/javascripts/backend/plugins/autocomplete.js +147 -0
- data/app/assets/javascripts/backend/plugins/tagbox.js +52 -0
- data/app/assets/javascripts/backend/sortable.js +46 -0
- data/app/assets/javascripts/backend/tags.js +37 -0
- data/app/assets/javascripts/backend/tree.js +158 -0
- data/app/assets/stylesheets/backend/application.scss +18 -0
- data/app/assets/stylesheets/backend/bootstrap.scss +6211 -0
- data/app/assets/stylesheets/backend/components/_breadcrumb.scss +7 -0
- data/app/assets/stylesheets/backend/components/_form.scss +23 -0
- data/app/assets/stylesheets/backend/components/_nav.scss +3 -0
- data/app/assets/stylesheets/backend/components/_navbar.scss +3 -0
- data/app/assets/stylesheets/backend/components/_tabs.scss +3 -0
- data/app/assets/stylesheets/backend/font-awesome.scss +2182 -0
- data/app/assets/stylesheets/backend/pages/_flexible_content.scss +11 -0
- data/app/assets/stylesheets/backend/pages/_logged_in.scss +3 -0
- data/app/assets/stylesheets/backend/pages/_login.scss +3 -0
- data/app/assets/stylesheets/backend/udongo.scss +17 -0
- data/app/controllers/backend/admins_controller.rb +56 -0
- data/app/controllers/backend/content/rows/columns_controller.rb +75 -0
- data/app/controllers/backend/content/rows/images_controller.rb +6 -0
- data/app/controllers/backend/content/rows/texts_controller.rb +6 -0
- data/app/controllers/backend/content/rows_controller.rb +45 -0
- data/app/controllers/backend/dashboard_controller.rb +2 -0
- data/app/controllers/backend/email_templates_controller.rb +50 -0
- data/app/controllers/backend/emails_controller.rb +18 -0
- data/app/controllers/backend/navigation/items_controller.rb +64 -0
- data/app/controllers/backend/navigations_controller.rb +7 -0
- data/app/controllers/backend/pages_controller.rb +89 -0
- data/app/controllers/backend/redirects_controller.rb +50 -0
- data/app/controllers/backend/seo_controller.rb +6 -0
- data/app/controllers/backend/sessions_controller.rb +22 -0
- data/app/controllers/backend/snippets_controller.rb +49 -0
- data/app/controllers/backend/tagbox_controller.rb +52 -0
- data/app/controllers/backend/webserver_controller.rb +6 -0
- data/app/controllers/backend_controller.rb +34 -0
- data/app/controllers/catch_all_controller.rb +12 -0
- data/app/controllers/concerns/backend/content_type_controller.rb +44 -0
- data/app/controllers/concerns/backend/positionable_controller.rb +12 -0
- data/app/controllers/concerns/backend/translatable_controller.rb +41 -0
- data/app/controllers/concerns/pagination_controller.rb +38 -0
- data/app/controllers/redirects_controller.rb +18 -0
- data/app/decorators/content_image_decorator.rb +7 -0
- data/app/decorators/content_text_decorator.rb +11 -0
- data/app/decorators/navigation_item_decorator.rb +29 -0
- data/app/decorators/page_decorator.rb +29 -0
- data/app/decorators/redirect_decorator.rb +13 -0
- data/app/decorators/snippet_decorator.rb +11 -0
- data/app/forms/backend/email_template_translation_form.rb +11 -0
- data/app/forms/backend/navigation_item_translation_form.rb +8 -0
- data/app/forms/backend/page_translation_form.rb +17 -0
- data/app/forms/backend/snippet_translation_form.rb +8 -0
- data/app/helpers/backend/dropdown_helper.rb +9 -0
- data/app/helpers/backend/pagination_helper.rb +17 -0
- data/app/helpers/icon_helper.rb +6 -0
- data/app/helpers/link_helper.rb +33 -0
- data/app/helpers/snippet_helper.rb +5 -0
- data/app/helpers/udongo_helper.rb +27 -0
- data/app/inputs/date_picker_input.rb +30 -0
- data/app/inputs/date_range_picker_input.rb +13 -0
- data/app/mailers/general_mailer.rb +13 -0
- data/app/models/address.rb +5 -0
- data/app/models/admin.rb +9 -0
- data/app/models/ckeditor/asset.rb +7 -0
- data/app/models/ckeditor/attachment_file.rb +7 -0
- data/app/models/ckeditor/picture.rb +7 -0
- data/app/models/comment.rb +39 -0
- data/app/models/concerns/cacheable.rb +37 -0
- data/app/models/concerns/commentable.rb +9 -0
- data/app/models/concerns/content_type.rb +13 -0
- data/app/models/concerns/deletable.rb +13 -0
- data/app/models/concerns/draggable.rb +13 -0
- data/app/models/concerns/emailable.rb +7 -0
- data/app/models/concerns/flexible_content.rb +9 -0
- data/app/models/concerns/locale.rb +10 -0
- data/app/models/concerns/loggable.rb +13 -0
- data/app/models/concerns/notable.rb +9 -0
- data/app/models/concerns/parentable.rb +39 -0
- data/app/models/concerns/person.rb +7 -0
- data/app/models/concerns/publishable.rb +22 -0
- data/app/models/concerns/seo.rb +31 -0
- data/app/models/concerns/sortable.rb +30 -0
- data/app/models/concerns/spammable.rb +38 -0
- data/app/models/concerns/storable/collection.rb +117 -0
- data/app/models/concerns/storable/config.rb +40 -0
- data/app/models/concerns/storable.rb +32 -0
- data/app/models/concerns/taggable.rb +29 -0
- data/app/models/concerns/translatable/collection.rb +60 -0
- data/app/models/concerns/translatable/config.rb +19 -0
- data/app/models/concerns/translatable.rb +39 -0
- data/app/models/concerns/visible.rb +24 -0
- data/app/models/content_column.rb +14 -0
- data/app/models/content_image.rb +9 -0
- data/app/models/content_row.rb +11 -0
- data/app/models/content_text.rb +7 -0
- data/app/models/email.rb +13 -0
- data/app/models/email_template.rb +10 -0
- data/app/models/form.rb +9 -0
- data/app/models/form_field.rb +15 -0
- data/app/models/form_field_validation.rb +11 -0
- data/app/models/form_submission.rb +16 -0
- data/app/models/form_submission_data.rb +5 -0
- data/app/models/log.rb +7 -0
- data/app/models/meta.rb +11 -0
- data/app/models/navigation.rb +6 -0
- data/app/models/navigation_item.rb +12 -0
- data/app/models/note.rb +7 -0
- data/app/models/page.rb +23 -0
- data/app/models/queued_task.rb +45 -0
- data/app/models/redirect.rb +16 -0
- data/app/models/setting.rb +13 -0
- data/app/models/snippet.rb +10 -0
- data/app/models/store.rb +10 -0
- data/app/models/tag.rb +6 -0
- data/app/models/tagged_item.rb +8 -0
- data/app/models/translation.rb +10 -0
- data/app/uploaders/ckeditor_attachment_file_uploader.rb +36 -0
- data/app/uploaders/ckeditor_picture_uploader.rb +47 -0
- data/app/uploaders/content_image_uploader.rb +52 -0
- data/app/validators/email_validator.rb +7 -0
- data/app/validators/url_validator.rb +13 -0
- data/app/views/backend/_breadcrumbs.html.erb +18 -0
- data/app/views/backend/_flash_messages.html.erb +9 -0
- data/app/views/backend/_form_actions.html.erb +4 -0
- data/app/views/backend/_form_errors.html.erb +15 -0
- data/app/views/backend/_navigation.html.erb +8 -0
- data/app/views/backend/_seo_form.html.erb +13 -0
- data/app/views/backend/_tags.html.erb +18 -0
- data/app/views/backend/admins/_form.html.erb +32 -0
- data/app/views/backend/admins/edit.html.erb +4 -0
- data/app/views/backend/admins/index.html.erb +33 -0
- data/app/views/backend/admins/new.html.erb +4 -0
- data/app/views/backend/content/_image.html.erb +17 -0
- data/app/views/backend/content/_rows.html.erb +63 -0
- data/app/views/backend/content/_text.html.erb +1 -0
- data/app/views/backend/content/rows/columns/edit.html.erb +25 -0
- data/app/views/backend/content/rows/columns/new.html.erb +25 -0
- data/app/views/backend/content/rows/images/edit.html.erb +22 -0
- data/app/views/backend/content/rows/texts/edit.html.erb +13 -0
- data/app/views/backend/dashboard/show.html.erb +1 -0
- data/app/views/backend/email_templates/_form.html.erb +31 -0
- data/app/views/backend/email_templates/_tabs.html.erb +21 -0
- data/app/views/backend/email_templates/edit.html.erb +6 -0
- data/app/views/backend/email_templates/edit_translation.html.erb +51 -0
- data/app/views/backend/email_templates/index.html.erb +27 -0
- data/app/views/backend/email_templates/new.html.erb +4 -0
- data/app/views/backend/emails/index.html.erb +50 -0
- data/app/views/backend/emails/show.html.erb +68 -0
- data/app/views/backend/navigation/items/_form.html.erb +22 -0
- data/app/views/backend/navigation/items/_tabs.html.erb +21 -0
- data/app/views/backend/navigation/items/edit.html.erb +7 -0
- data/app/views/backend/navigation/items/edit_translation.html.erb +21 -0
- data/app/views/backend/navigation/items/new.html.erb +4 -0
- data/app/views/backend/navigations/index.html.erb +59 -0
- data/app/views/backend/pages/_form.html.erb +30 -0
- data/app/views/backend/pages/_tabs.html.erb +21 -0
- data/app/views/backend/pages/edit.html.erb +6 -0
- data/app/views/backend/pages/edit_translation.html.erb +35 -0
- data/app/views/backend/pages/index.html.erb +19 -0
- data/app/views/backend/pages/new.html.erb +4 -0
- data/app/views/backend/redirects/_filter.html.erb +21 -0
- data/app/views/backend/redirects/_form.html.erb +36 -0
- data/app/views/backend/redirects/edit.html.erb +4 -0
- data/app/views/backend/redirects/index.html.erb +50 -0
- data/app/views/backend/redirects/new.html.erb +3 -0
- data/app/views/backend/sessions/new.html.erb +19 -0
- data/app/views/backend/snippets/_form.html.erb +18 -0
- data/app/views/backend/snippets/_tabs.html.erb +21 -0
- data/app/views/backend/snippets/edit.html.erb +6 -0
- data/app/views/backend/snippets/edit_translation.html.erb +23 -0
- data/app/views/backend/snippets/index.html.erb +26 -0
- data/app/views/backend/snippets/new.html.erb +4 -0
- data/app/views/layouts/backend/_top_navigation.html.erb +27 -0
- data/app/views/layouts/backend/application.html.erb +27 -0
- data/app/views/layouts/backend/lightbox.html.erb +21 -0
- data/app/views/layouts/backend/login.html.erb +21 -0
- data/app/views/layouts/frontend/application.html.erb +16 -0
- data/config/initializers/assets.rb +13 -0
- data/config/initializers/ckeditor.rb +38 -0
- data/config/initializers/core_ext/string.rb +8 -0
- data/config/initializers/inflections.rb +20 -0
- data/config/initializers/simple_form_bootstrap.rb +150 -0
- data/config/locales/de.yml +196 -0
- data/config/locales/en.yml +206 -0
- data/config/locales/fr.yml +214 -0
- data/config/locales/nl.yml +212 -0
- data/config/locales/nl_backend.yml +106 -0
- data/config/locales/nl_forms.yml +68 -0
- data/config/routes.rb +83 -0
- data/config/spring.rb +1 -0
- data/db/migrate/20150404133314_create_udongo_admins.rb +12 -0
- data/db/migrate/20150404203549_remove_udongo_admins.rb +5 -0
- data/db/migrate/20150404203648_add_admins_table.rb +12 -0
- data/db/migrate/20150405202002_create_logs.rb +15 -0
- data/db/migrate/20150411152042_create_addresses.rb +19 -0
- data/db/migrate/20150411152619_create_comments.rb +21 -0
- data/db/migrate/20150411200227_create_notes.rb +14 -0
- data/db/migrate/20150412094419_create_settings.rb +13 -0
- data/db/migrate/20150412095257_create_meta.rb +21 -0
- data/db/migrate/20150413190019_create_tags.rb +15 -0
- data/db/migrate/20150413190713_create_tagged_items.rb +14 -0
- data/db/migrate/20150417113400_create_translations.rb +15 -0
- data/db/migrate/20150515113332_content_tables.rb +42 -0
- data/db/migrate/20150515134044_create_pages.rb +22 -0
- data/db/migrate/20150620121834_remove_trashed_from_page.rb +5 -0
- data/db/migrate/20150629120253_add_locales_to_translatables.rb +5 -0
- data/db/migrate/20150706083925_create_snippets.rb +13 -0
- data/db/migrate/20150706084145_add_locales_to_snippet.rb +5 -0
- data/db/migrate/20150706085213_add_description_to_snippet.rb +5 -0
- data/db/migrate/20150706085733_change_snippet_desc_field.rb +5 -0
- data/db/migrate/20150706093016_change_desc_column_for_snippet.rb +5 -0
- data/db/migrate/20150706113918_create_ckeditor_assets.rb +26 -0
- data/db/migrate/20150824090457_create_redirects.rb +12 -0
- data/db/migrate/20150824113723_rename_source_and_destination_to_redirects.rb +6 -0
- data/db/migrate/20150825094254_create_shortened_urls.rb +11 -0
- data/db/migrate/20150826084004_remove_shortened_urls.rb +5 -0
- data/db/migrate/20150826084234_add_times_used_to_redirect.rb +5 -0
- data/db/migrate/20150826134153_add_index_on_page_visible.rb +5 -0
- data/db/migrate/20151003191846_add_some_indexes.rb +15 -0
- data/db/migrate/20151006131720_add_editable_content_to_page.rb +5 -0
- data/db/migrate/20151007090541_create_navigations.rb +10 -0
- data/db/migrate/20151007091131_create_navigation_items.rb +12 -0
- data/db/migrate/20151007092529_add_index_to_nav_items.rb +5 -0
- data/db/migrate/20151007093812_change_nav_description_type.rb +5 -0
- data/db/migrate/20151007173557_add_route_to_page.rb +5 -0
- data/db/migrate/20151008114433_add_extra_to_navigation_item.rb +5 -0
- data/db/migrate/20151009114823_create_forms.rb +9 -0
- data/db/migrate/20151009115326_create_form_fields.rb +12 -0
- data/db/migrate/20151009115803_create_form_field_validations.rb +11 -0
- data/db/migrate/20151009131957_create_form_submissions.rb +10 -0
- data/db/migrate/20151009132657_create_form_submission_data.rb +11 -0
- data/db/migrate/20151009140754_rename_form_field_id_to_field_id_for_form_field_validations.rb +5 -0
- data/db/migrate/20151009141123_rename_form_submission_id_to_submission_id_for_form_submission_data.rb +5 -0
- data/db/migrate/20151009141822_add_locales_to_form_fields.rb +5 -0
- data/db/migrate/20151009142242_add_locales_to_form_field_validations.rb +5 -0
- data/db/migrate/20151023135358_add_locales_to_forms.rb +5 -0
- data/db/migrate/20151117190950_add_external_reference_to_tags.rb +6 -0
- data/db/migrate/20151205202815_rename_nav_name_to_identifier.rb +5 -0
- data/db/migrate/20160108100104_create_stores.rb +13 -0
- data/db/migrate/20160125154648_rename_name_to_identifier_for_forms.rb +5 -0
- data/db/migrate/20160128080029_create_email_templates.rb +18 -0
- data/db/migrate/20160201121021_create_emails.rb +17 -0
- data/db/migrate/20160201123128_create_queued_tasks.rb +13 -0
- data/db/migrate/20160205132009_reoraganize_snippet_html_fields.rb +7 -0
- data/db/migrate/20160303141417_add_data_to_logs.rb +5 -0
- data/db/migrate/20160513110925_addd_more_column_widths.rb +9 -0
- data/lib/generators/udongo/form/form_generator.rb +63 -0
- data/lib/generators/udongo/form/templates/form.rb +18 -0
- data/lib/tasks/task_extras.rb +10 -0
- data/lib/tasks/udongo_tasks.rake +41 -0
- data/lib/udongo/active_model_simulator.rb +21 -0
- data/lib/udongo/assets/loader.rb +40 -0
- data/lib/udongo/assets/precompiler.rb +50 -0
- data/lib/udongo/breadcrumb.rb +27 -0
- data/lib/udongo/config.rb +26 -0
- data/lib/udongo/crypt.rb +19 -0
- data/lib/udongo/cryptography.rb +5 -0
- data/lib/udongo/email_vars/address.rb +19 -0
- data/lib/udongo/email_vars/form_submission.rb +18 -0
- data/lib/udongo/email_vars_parser.rb +31 -0
- data/lib/udongo/engine.rb +10 -0
- data/lib/udongo/meta_info.rb +12 -0
- data/lib/udongo/object_path.rb +24 -0
- data/lib/udongo/version.rb +3 -0
- data/lib/udongo/will_paginate/renderer.rb +26 -0
- data/lib/udongo.rb +44 -0
- metadata +772 -0
@@ -0,0 +1,35 @@
|
|
1
|
+
<% breadcrumb.add @model.description, edit_backend_page_path(@model) %>
|
2
|
+
<% breadcrumb.add t('b.edit') %>
|
3
|
+
<%= render 'backend/breadcrumbs' %>
|
4
|
+
|
5
|
+
<%= render 'backend/pages/tabs', active: params[:translation_locale].to_sym %>
|
6
|
+
|
7
|
+
<%= simple_form_for([:backend, @translation], url: edit_translation_backend_page_path, html: { class: 'no-focus' }) do |f| %>
|
8
|
+
|
9
|
+
<div class="row">
|
10
|
+
<div class="col-md-12">
|
11
|
+
<!-- Content -->
|
12
|
+
<div class="card">
|
13
|
+
<div class="card-header">
|
14
|
+
<%= t 'b.content' %>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class="card-block">
|
18
|
+
<%= f.input :title %>
|
19
|
+
<%= f.input :subtitle %>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
|
23
|
+
<!-- Flexible Content -->
|
24
|
+
<%= render('backend/content/rows', model: @model, locale: params[:translation_locale]) unless @model.content_disabled? %>
|
25
|
+
|
26
|
+
<!-- SEO -->
|
27
|
+
<%= render 'backend/seo_form', f: f %>
|
28
|
+
|
29
|
+
<!-- Tags -->
|
30
|
+
<%= render 'backend/tags', model: @model %>
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
|
34
|
+
<%= render 'backend/form_actions', cancel_url: backend_pages_path %>
|
35
|
+
<% end %>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<% stylesheet 'backend/jstree/default/style.min' %>
|
2
|
+
<% javascript 'backend/jstree/jstree.min' %>
|
3
|
+
<% javascript 'backend/tree' %>
|
4
|
+
<% javascript 'backend/pages' %>
|
5
|
+
<%= render 'backend/breadcrumbs' %>
|
6
|
+
|
7
|
+
<p class="text-xs-right">
|
8
|
+
<%= link_to t('b.add'), new_backend_page_path, class: 'btn btn-primary btn-sm' %>
|
9
|
+
</p>
|
10
|
+
|
11
|
+
<div class="card">
|
12
|
+
<div class="card-block">
|
13
|
+
<% if @pages.any? %>
|
14
|
+
<div id="pages-tree" data-source="<%= backend_pages_path(format: :json) %>"></div>
|
15
|
+
<% else %>
|
16
|
+
<p><%= t 'b.msg.no_items' %></p>
|
17
|
+
<% end %>
|
18
|
+
</div>
|
19
|
+
</div>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<div class="card filter">
|
2
|
+
<div class="card-block">
|
3
|
+
<%= search_form_for [:backend, @search] do |f| %>
|
4
|
+
<div class="row">
|
5
|
+
<div class="col-md-6 form-group">
|
6
|
+
<%= f.search_field :source_uri_cont, placeholder: t('b.source'), class: 'form-control' %>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div class="col-md-6 form-group">
|
10
|
+
<%= f.search_field :destination_uri_cont, placeholder: t('b.destination'), class: 'form-control' %>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div class="row">
|
15
|
+
<div class="col-md-6">
|
16
|
+
<%= f.submit class: 'btn btn-primary btn-sm' %>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
<% end %>
|
20
|
+
</div>
|
21
|
+
</div>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<%= simple_form_for [:backend, model] do |f| %>
|
2
|
+
<div class="row">
|
3
|
+
<div class="col-md-6">
|
4
|
+
<div class="card">
|
5
|
+
<div class="card-header">
|
6
|
+
<%= t 'b.general' %>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div class="card-block">
|
10
|
+
<%= f.input :source_uri %>
|
11
|
+
<%= f.input :destination_uri %>
|
12
|
+
<%= f.input :disabled, as: :boolean %>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class="col-md-6">
|
18
|
+
<div class="card">
|
19
|
+
<div class="card-header">
|
20
|
+
<%= t 'b.advanced' %>
|
21
|
+
</div>
|
22
|
+
<div class="card-block">
|
23
|
+
<%= f.input :status_code, collection: model.status_code_collection %>
|
24
|
+
|
25
|
+
<div class="alert alert-info">
|
26
|
+
<%= icon :info, t('b.msg.help_texts.status_code') %>
|
27
|
+
<% wiki_link = 'https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection' %>
|
28
|
+
<%= link_to wiki_link, wiki_link, target: '_blank' %>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<%= render 'backend/form_actions', cancel_url: backend_redirects_path %>
|
36
|
+
<% end %>
|
@@ -0,0 +1,50 @@
|
|
1
|
+
<%= render 'backend/breadcrumbs' %>
|
2
|
+
|
3
|
+
<%= render 'backend/redirects/filter' %>
|
4
|
+
|
5
|
+
<p class="text-xs-right">
|
6
|
+
<%= link_to icon(:plus, t('b.add')), new_backend_redirect_path, class: 'btn btn-primary btn-sm' %>
|
7
|
+
</p>
|
8
|
+
|
9
|
+
<% if @redirects.any? %>
|
10
|
+
<table class="table table-striped table-hover">
|
11
|
+
<thead class="thead-inverse">
|
12
|
+
<tr>
|
13
|
+
<th><%= t 'b.source' %></th>
|
14
|
+
<th><%= t 'b.destination' %></th>
|
15
|
+
<th><%= t 'b.status_code' %></th>
|
16
|
+
<th><%= t 'b.enabled?' %></th>
|
17
|
+
<th><%= t 'b.used' %></th>
|
18
|
+
<th> </th>
|
19
|
+
</tr>
|
20
|
+
</thead>
|
21
|
+
|
22
|
+
<tbody>
|
23
|
+
<% @redirects.each do |r| %>
|
24
|
+
<tr>
|
25
|
+
<td><%= r.source_uri %></td>
|
26
|
+
<td><%= r.destination_uri %></td>
|
27
|
+
<td><%= r.status_code %></td>
|
28
|
+
<td><%= t r.enabled?.to_s %></td>
|
29
|
+
<td><%= r.times_used.to_i %></td>
|
30
|
+
<td class="text-xs-right">
|
31
|
+
<%= link_to icon(:pencil_square_o), edit_backend_redirect_path(r) %>
|
32
|
+
<%= link_to icon(:trash), backend_redirect_path(r), method: 'delete', data: { confirm: t('b.msg.confirm') } %>
|
33
|
+
</td>
|
34
|
+
</tr>
|
35
|
+
<% end %>
|
36
|
+
</tbody>
|
37
|
+
|
38
|
+
<% if will_paginate %>
|
39
|
+
<tfoot>
|
40
|
+
<tr>
|
41
|
+
<td colspan="6">
|
42
|
+
<%= will_paginate %>
|
43
|
+
</td>
|
44
|
+
</tr>
|
45
|
+
</tfoot>
|
46
|
+
<% end %>
|
47
|
+
</table>
|
48
|
+
<% else %>
|
49
|
+
<p><%= t 'b.msg.no_items' %></p>
|
50
|
+
<% end %>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<div class="col-xs-12 col-sm-8 col-sm-offset-2 col-lg-4 col-lg-offset-4">
|
2
|
+
<% if flash[:alert] %>
|
3
|
+
<div class="alert alert-danger">
|
4
|
+
<%= flash[:alert] %>
|
5
|
+
</div>
|
6
|
+
<% end %>
|
7
|
+
|
8
|
+
<div class="card">
|
9
|
+
<div class="card-block">
|
10
|
+
<h4 class="card-title"><%= t 'b.login' %></h4>
|
11
|
+
<%= simple_form_for :session, url: backend_sessions_path do |f| %>
|
12
|
+
<%= f.input :email, placeholder: t('b.email'), label: false %>
|
13
|
+
<%= f.input :password, placeholder: t('b.password'), label: false %>
|
14
|
+
<%= f.button :submit, t('b.login'), class: 'btn btn-primary' %>
|
15
|
+
<% end %>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<%= simple_form_for [:backend, @model] do |f| %>
|
2
|
+
<div class="row">
|
3
|
+
<div class="col-md-6">
|
4
|
+
<div class="card">
|
5
|
+
<div class="card-header">
|
6
|
+
<%= t 'b.general' %>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div class="card-block">
|
10
|
+
<%= f.input :identifier %>
|
11
|
+
<%= f.input :description, as: :string %>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<%= render 'backend/form_actions', cancel_url: backend_snippets_path %>
|
18
|
+
<% end %>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<div class="row subnav">
|
2
|
+
<div class="col-md-12">
|
3
|
+
<ul class="nav nav-pills">
|
4
|
+
<li class="nav-item">
|
5
|
+
<% klass = %w(nav-link) %>
|
6
|
+
<% klass << 'active' if active == :general %>
|
7
|
+
|
8
|
+
<%= link_to t('b.general'), edit_backend_snippet_path(@model), class: klass %>
|
9
|
+
</li>
|
10
|
+
|
11
|
+
<% Udongo.config.locales.each do |locale| %>
|
12
|
+
<li class="nav-item">
|
13
|
+
<% klass = %w(nav-link) %>
|
14
|
+
<% klass << 'active' if active == locale.to_sym %>
|
15
|
+
|
16
|
+
<%= link_to locale.upcase, edit_translation_backend_snippet_path(@model, locale), class: klass %>
|
17
|
+
</li>
|
18
|
+
<% end %>
|
19
|
+
</ul>
|
20
|
+
</div>
|
21
|
+
</div>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<% breadcrumb.add @model.description, edit_backend_snippet_path(@model) %>
|
2
|
+
<% breadcrumb.add t('b.edit') %>
|
3
|
+
<%= render 'backend/breadcrumbs' %>
|
4
|
+
|
5
|
+
<%= render 'backend/snippets/tabs', active: params[:translation_locale].to_sym %>
|
6
|
+
|
7
|
+
<%= simple_form_for([:backend, @translation], url: edit_translation_backend_snippet_path) do |f| %>
|
8
|
+
|
9
|
+
<div class="card">
|
10
|
+
<div class="card-header">
|
11
|
+
<%= t 'b.content' %>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div class="card-block">
|
15
|
+
<%= f.input :title, as: :string %>
|
16
|
+
|
17
|
+
<% content_type = @model.editor_for_content? ? :ckeditor : :text %>
|
18
|
+
<%= f.input :content, as: content_type %>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<%= render 'backend/form_actions', cancel_url: backend_snippets_path %>
|
23
|
+
<% end %>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<%= render 'backend/breadcrumbs' %>
|
2
|
+
|
3
|
+
<% if @snippets.any? %>
|
4
|
+
<table class="table table-striped table-hover">
|
5
|
+
<thead class="thead-inverse">
|
6
|
+
<tr>
|
7
|
+
<th><%= t 'b.description' %></th>
|
8
|
+
<th> </th>
|
9
|
+
</tr>
|
10
|
+
</thead>
|
11
|
+
|
12
|
+
<tbody>
|
13
|
+
<% @snippets.each do |a| %>
|
14
|
+
<tr>
|
15
|
+
<td><%= a.description %></td>
|
16
|
+
<td class="text-xs-right">
|
17
|
+
<%= link_to_edit [:backend, a] %>
|
18
|
+
</td>
|
19
|
+
</tr>
|
20
|
+
<% end %>
|
21
|
+
</tbody>
|
22
|
+
</table>
|
23
|
+
|
24
|
+
<% else %>
|
25
|
+
<p><%= t 'b.msg.no_items' %></p>
|
26
|
+
<% end %>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<ul class="nav navbar-nav">
|
2
|
+
<li class="nav-item dropdown">
|
3
|
+
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false"><%= icon(:list, t('b.content')) %></a>
|
4
|
+
<div class="dropdown-menu">
|
5
|
+
<%= link_to t('b.pages'), backend_pages_path, class: 'dropdown-item' %>
|
6
|
+
<%= link_to t('b.snippets'), backend_snippets_path, class: 'dropdown-item' %>
|
7
|
+
</div>
|
8
|
+
</li>
|
9
|
+
|
10
|
+
<li class="nav-item dropdown">
|
11
|
+
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false"><%= icon(:cog, t('b.settings')) %></a>
|
12
|
+
<div class="dropdown-menu">
|
13
|
+
<%= link_to t('b.navigation'), backend_navigations_path, class: 'dropdown-item' %>
|
14
|
+
<%= link_to t('b.admins'), backend_admins_path, class: 'dropdown-item' %>
|
15
|
+
<%= link_to t('b.redirects'), backend_redirects_path, class: 'dropdown-item' %>
|
16
|
+
<%= link_to t('b.email'), backend_emails_path, class: 'dropdown-item' %>
|
17
|
+
<%= link_to t('b.email_templates'), backend_email_templates_path, class: 'dropdown-item' %>
|
18
|
+
</div>
|
19
|
+
</li>
|
20
|
+
|
21
|
+
<li class="nav-item dropdown pull-xs-right">
|
22
|
+
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false"><%= icon(:user, current_admin.full_name) %></a>
|
23
|
+
<div class="dropdown-menu">
|
24
|
+
<%= link_to icon(:sign_out, t('b.logout')), backend_session_path(id: 42), method: :delete, data: { confirm: t('b.msg.confirm') }, class: 'dropdown-item' %>
|
25
|
+
</div>
|
26
|
+
</li>
|
27
|
+
</ul>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
6
|
+
<title>Backend - <%= Udongo.config.project_name %></title>
|
7
|
+
|
8
|
+
<%= yield(:javascripts_head) %>
|
9
|
+
|
10
|
+
<%= stylesheet_link_tag 'backend/application', media: 'all' %>
|
11
|
+
<%= yield(:stylesheets) %>
|
12
|
+
<%= javascript_include_tag 'modernizr' %>
|
13
|
+
<%= csrf_meta_tags %>
|
14
|
+
</head>
|
15
|
+
|
16
|
+
<body class="logged-in">
|
17
|
+
<div class="container">
|
18
|
+
<%= render 'backend/navigation' %>
|
19
|
+
<%= render 'backend/flash_messages' %>
|
20
|
+
<%= yield %>
|
21
|
+
</div>
|
22
|
+
|
23
|
+
<%= yield(:javascripts_early) %>
|
24
|
+
<%= javascript_include_tag 'backend/application' %>
|
25
|
+
<%= yield(:javascripts) %>
|
26
|
+
</body>
|
27
|
+
</html>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
6
|
+
<title>Udongo</title>
|
7
|
+
|
8
|
+
<%= stylesheet_link_tag 'backend/application', media: 'all' %>
|
9
|
+
<%= javascript_include_tag 'modernizr' %>
|
10
|
+
<%= javascript_include_tag 'backend/application' %>
|
11
|
+
<%= csrf_meta_tags %>
|
12
|
+
</head>
|
13
|
+
|
14
|
+
<body class="lightbox">
|
15
|
+
<div class="row">
|
16
|
+
<div class="col-sm-12 col-md-8 col-md-offset-2">
|
17
|
+
<%= yield %>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
</body>
|
21
|
+
</html>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
6
|
+
<title>Login - <%= Udongo.config.project_name %></title>
|
7
|
+
|
8
|
+
<%= stylesheet_link_tag 'backend/application', media: 'all' %>
|
9
|
+
<%= javascript_include_tag 'backend/application' %>
|
10
|
+
<%= csrf_meta_tags %>
|
11
|
+
</head>
|
12
|
+
|
13
|
+
<body class="login-page">
|
14
|
+
<div class="container">
|
15
|
+
<div class="row">
|
16
|
+
|
17
|
+
<%= yield %>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
</body>
|
21
|
+
</html>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
7
|
+
<title>Frontend placeholder</title>
|
8
|
+
<%= csrf_meta_tags %>
|
9
|
+
</head>
|
10
|
+
|
11
|
+
<body>
|
12
|
+
|
13
|
+
<h1>Udongo placeholder</h1>
|
14
|
+
<p>Create app/views/layouts/frontend/application.html.erb to overwrite this layout.</p>
|
15
|
+
</body>
|
16
|
+
</html>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
#Rails.application.config.assets.precompile += Ckeditor.assets
|
2
|
+
require 'udongo/assets/precompiler'
|
3
|
+
require 'udongo/assets/loader'
|
4
|
+
|
5
|
+
precompiler = Udongo::Assets::Precompiler.new Rails.application
|
6
|
+
precompiler.add :javascripts, 'app/assets/javascripts/**/*.js'
|
7
|
+
precompiler.add :javascripts, 'vendor/assets/javascripts/**/*.js'
|
8
|
+
|
9
|
+
precompiler.add :images, 'app/assets/images/**/*'
|
10
|
+
precompiler.add :images, 'vendor/assets/images/**/*'
|
11
|
+
|
12
|
+
precompiler.add :stylesheets, 'app/assets/stylesheets/**/*'
|
13
|
+
precompiler.add :stylesheets, 'vendor/assets/stylesheets/**/*'
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Use this hook to configure ckeditor
|
2
|
+
Ckeditor.setup do |config|
|
3
|
+
# ==> ORM configuration
|
4
|
+
# Load and configure the ORM. Supports :active_record (default), :mongo_mapper and
|
5
|
+
# :mongoid (bson_ext recommended) by default. Other ORMs may be
|
6
|
+
# available as additional gems.
|
7
|
+
require 'ckeditor/orm/active_record'
|
8
|
+
|
9
|
+
# Allowed image file types for upload.
|
10
|
+
# Set to nil or [] (empty array) for all file types
|
11
|
+
# By default: %w(jpg jpeg png gif tiff)
|
12
|
+
# config.image_file_types = ["jpg", "jpeg", "png", "gif", "tiff"]
|
13
|
+
|
14
|
+
# Allowed attachment file types for upload.
|
15
|
+
# Set to nil or [] (empty array) for all file types
|
16
|
+
# By default: %w(doc docx xls odt ods pdf rar zip tar tar.gz swf)
|
17
|
+
# config.attachment_file_types = ["doc", "docx", "xls", "odt", "ods", "pdf", "rar", "zip", "tar", "swf"]
|
18
|
+
|
19
|
+
# Setup authorization to be run as a before filter
|
20
|
+
# By default: there is no authorization.
|
21
|
+
# config.authorize_with :cancan
|
22
|
+
|
23
|
+
# Asset model classes
|
24
|
+
# config.picture_model { Ckeditor::Picture }
|
25
|
+
# config.attachment_file_model { Ckeditor::AttachmentFile }
|
26
|
+
|
27
|
+
# Paginate assets
|
28
|
+
# By default: 24
|
29
|
+
# config.default_per_page = 24
|
30
|
+
|
31
|
+
# Customize ckeditor assets path
|
32
|
+
# By default: nil
|
33
|
+
# config.asset_path = "http://www.example.com/assets/ckeditor/"
|
34
|
+
|
35
|
+
# To reduce the asset precompilation time, you can limit plugins and/or languages to those you need:
|
36
|
+
# By default: nil (no limit)
|
37
|
+
config.assets_plugins = %w(image link)
|
38
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
2
|
+
|
3
|
+
# Add new inflection rules using the following format. Inflections
|
4
|
+
# are locale specific, and you may define rules for as many different
|
5
|
+
# locales as you wish. All of these examples are active by default:
|
6
|
+
# ActiveSupport::Inflector.inflections(:en) do |inflect|
|
7
|
+
# inflect.plural /^(ox)$/i, '\1en'
|
8
|
+
# inflect.singular /^(ox)en/i, '\1'
|
9
|
+
# inflect.irregular 'person', 'people'
|
10
|
+
# inflect.uncountable %w( fish sheep )
|
11
|
+
# end
|
12
|
+
|
13
|
+
# These inflection rules are supported but not enabled by default:
|
14
|
+
# ActiveSupport::Inflector.inflections(:en) do |inflect|
|
15
|
+
# inflect.acronym 'RESTful'
|
16
|
+
# end
|
17
|
+
|
18
|
+
ActiveSupport::Inflector.inflections(:en) do |inflect|
|
19
|
+
inflect.uncountable 'meta', 'form_submission_data'
|
20
|
+
end
|
@@ -0,0 +1,150 @@
|
|
1
|
+
# Use this setup block to configure all options available in SimpleForm.
|
2
|
+
SimpleForm.setup do |config|
|
3
|
+
config.error_notification_class = 'alert alert-danger'
|
4
|
+
config.button_class = 'btn btn-default'
|
5
|
+
config.boolean_label_class = nil
|
6
|
+
|
7
|
+
config.wrappers :vertical_form, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
8
|
+
b.use :html5
|
9
|
+
b.use :placeholder
|
10
|
+
b.optional :maxlength
|
11
|
+
b.optional :pattern
|
12
|
+
b.optional :min_max
|
13
|
+
b.optional :readonly
|
14
|
+
b.use :label, class: 'control-label'
|
15
|
+
|
16
|
+
b.use :input, class: 'form-control'
|
17
|
+
b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
18
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
19
|
+
end
|
20
|
+
|
21
|
+
config.wrappers :vertical_file_input, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
22
|
+
b.use :html5
|
23
|
+
b.use :placeholder
|
24
|
+
b.optional :maxlength
|
25
|
+
b.optional :readonly
|
26
|
+
b.use :label, class: 'control-label'
|
27
|
+
|
28
|
+
b.use :input
|
29
|
+
b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
30
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
31
|
+
end
|
32
|
+
|
33
|
+
config.wrappers :vertical_boolean, tag: 'div', class: 'checkbox', error_class: 'has-danger' do |b|
|
34
|
+
b.use :html5
|
35
|
+
b.optional :readonly
|
36
|
+
|
37
|
+
b.wrapper tag: 'label' do |ba|
|
38
|
+
ba.use :input
|
39
|
+
ba.use :label_text
|
40
|
+
end
|
41
|
+
|
42
|
+
b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
43
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
44
|
+
end
|
45
|
+
|
46
|
+
config.wrappers :vertical_radio_and_checkboxes, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
47
|
+
b.use :html5
|
48
|
+
b.optional :readonly
|
49
|
+
b.use :label, class: 'control-label'
|
50
|
+
b.use :input
|
51
|
+
b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
52
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
53
|
+
end
|
54
|
+
|
55
|
+
config.wrappers :horizontal_form, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
56
|
+
b.use :html5
|
57
|
+
b.use :placeholder
|
58
|
+
b.optional :maxlength
|
59
|
+
b.optional :pattern
|
60
|
+
b.optional :min_max
|
61
|
+
b.optional :readonly
|
62
|
+
b.use :label, class: 'col-sm-3 control-label'
|
63
|
+
|
64
|
+
b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
|
65
|
+
ba.use :input, class: 'form-control'
|
66
|
+
ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
67
|
+
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
config.wrappers :horizontal_file_input, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
72
|
+
b.use :html5
|
73
|
+
b.use :placeholder
|
74
|
+
b.optional :maxlength
|
75
|
+
b.optional :readonly
|
76
|
+
b.use :label, class: 'col-sm-3 control-label'
|
77
|
+
|
78
|
+
b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
|
79
|
+
ba.use :input
|
80
|
+
ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
81
|
+
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
config.wrappers :horizontal_boolean, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
86
|
+
b.use :html5
|
87
|
+
b.optional :readonly
|
88
|
+
|
89
|
+
b.wrapper tag: 'div', class: 'col-sm-offset-3 col-sm-9' do |wr|
|
90
|
+
wr.wrapper tag: 'div', class: 'checkbox' do |ba|
|
91
|
+
ba.use :label_input
|
92
|
+
end
|
93
|
+
|
94
|
+
wr.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
95
|
+
wr.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
config.wrappers :horizontal_radio_and_checkboxes, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
100
|
+
b.use :html5
|
101
|
+
b.optional :readonly
|
102
|
+
|
103
|
+
b.use :label, class: 'col-sm-3 control-label'
|
104
|
+
|
105
|
+
b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
|
106
|
+
ba.use :input
|
107
|
+
ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
108
|
+
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
config.wrappers :inline_form, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
113
|
+
b.use :html5
|
114
|
+
b.use :placeholder
|
115
|
+
b.optional :maxlength
|
116
|
+
b.optional :pattern
|
117
|
+
b.optional :min_max
|
118
|
+
b.optional :readonly
|
119
|
+
b.use :label, class: 'sr-only'
|
120
|
+
|
121
|
+
b.use :input, class: 'form-control'
|
122
|
+
b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
123
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
124
|
+
end
|
125
|
+
|
126
|
+
config.wrappers :multi_select, tag: 'div', class: 'form-group', error_class: 'has-danger' do |b|
|
127
|
+
b.use :html5
|
128
|
+
b.optional :readonly
|
129
|
+
b.use :label, class: 'control-label'
|
130
|
+
b.wrapper tag: 'div', class: 'form-inline' do |ba|
|
131
|
+
ba.use :input, class: 'form-control'
|
132
|
+
ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
133
|
+
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
134
|
+
end
|
135
|
+
end
|
136
|
+
# Wrappers for forms and inputs using the Bootstrap toolkit.
|
137
|
+
# Check the Bootstrap docs (http://getbootstrap.com)
|
138
|
+
# to learn about the different styles for forms and inputs,
|
139
|
+
# buttons and other elements.
|
140
|
+
config.default_wrapper = :vertical_form
|
141
|
+
config.wrapper_mappings = {
|
142
|
+
check_boxes: :vertical_radio_and_checkboxes,
|
143
|
+
radio_buttons: :vertical_radio_and_checkboxes,
|
144
|
+
file: :vertical_file_input,
|
145
|
+
boolean: :vertical_boolean,
|
146
|
+
datetime: :multi_select,
|
147
|
+
date: :multi_select,
|
148
|
+
time: :multi_select
|
149
|
+
}
|
150
|
+
end
|