binda 0.0.7 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +850 -18
- data/Rakefile +1 -13
- data/app/assets/javascripts/binda/application.js +23 -0
- data/app/assets/javascripts/binda/components/bootstrap.js +9 -0
- data/app/assets/javascripts/binda/components/field_group_editor.js +18 -0
- data/app/assets/javascripts/binda/components/fileupload.js +182 -0
- data/app/assets/javascripts/binda/components/form_item.js +91 -23
- data/app/assets/javascripts/binda/components/form_item_choice.js +15 -8
- data/app/assets/javascripts/binda/components/form_item_editor.js +6 -6
- data/app/assets/javascripts/binda/components/form_item_image.js +23 -0
- data/app/assets/javascripts/binda/components/form_item_repeater.js +70 -23
- data/app/assets/javascripts/binda/components/login-shader.js +193 -0
- data/app/assets/javascripts/binda/components/login_form.js +116 -0
- data/app/assets/javascripts/binda/components/radio-toggle.js +18 -0
- data/app/assets/javascripts/binda/components/select2.js +22 -0
- data/app/assets/javascripts/binda/components/sortable.js +53 -8
- data/app/assets/javascripts/binda/dist/binda.bundle.js +914 -107
- data/app/assets/javascripts/binda/index.js +26 -3
- data/app/assets/stylesheets/binda/application.scss +6 -0
- data/app/assets/stylesheets/binda/components/assets_manager.scss +46 -36
- data/app/assets/stylesheets/binda/components/b-btn.scss +114 -0
- data/app/assets/stylesheets/binda/components/button.scss +4 -1
- data/app/assets/stylesheets/binda/components/fileupload.scss +134 -0
- data/app/assets/stylesheets/binda/components/form_item.scss +233 -168
- data/app/assets/stylesheets/binda/components/form_item_image.scss +0 -0
- data/app/assets/stylesheets/binda/components/form_item_video.scss +25 -0
- data/app/assets/stylesheets/binda/components/main_container.scss +3 -0
- data/app/assets/stylesheets/binda/components/main_content.scss +1 -2
- data/app/assets/stylesheets/binda/components/main_header.scss +21 -20
- data/app/assets/stylesheets/binda/components/main_sidebar.scss +121 -0
- data/app/assets/stylesheets/binda/components/main_table.scss +84 -28
- data/app/assets/stylesheets/binda/components/popup_warning.scss +71 -0
- data/app/assets/stylesheets/binda/components/select2.scss +126 -0
- data/app/assets/stylesheets/binda/components/sortable.scss +83 -56
- data/app/assets/stylesheets/binda/components/standard-form.scss +228 -0
- data/app/assets/stylesheets/binda/components/texts.scss +6 -0
- data/app/assets/stylesheets/binda/controllers/components_index.scss +3 -0
- data/app/assets/stylesheets/binda/controllers/users_sessions_new.scss +309 -0
- data/app/assets/stylesheets/binda/index.scss +16 -8
- data/app/assets/stylesheets/binda/settings/bootstrap_overrides.scss +0 -0
- data/app/assets/stylesheets/binda/settings/buttons.scss +36 -0
- data/app/assets/stylesheets/binda/settings/common.scss +36 -79
- data/app/assets/stylesheets/binda/settings/fonts.scss +88 -31
- data/app/assets/stylesheets/binda/settings/tiny_mce_overrides.scss +82 -0
- data/app/assets/stylesheets/binda/settings/variables.scss +36 -31
- data/app/controllers/binda/application_controller.rb +0 -2
- data/app/controllers/binda/assets_controller.rb +1 -1
- data/app/controllers/binda/boards_controller.rb +15 -4
- data/app/controllers/binda/components_controller.rb +30 -15
- data/app/controllers/binda/field_groups_controller.rb +19 -4
- data/app/controllers/binda/images_controller.rb +68 -0
- data/app/controllers/binda/repeaters_controller.rb +3 -12
- data/app/controllers/binda/structures_controller.rb +8 -1
- data/app/controllers/binda/videos_controller.rb +68 -0
- data/app/controllers/concerns/binda/fieldable_helpers.rb +113 -28
- data/app/controllers/concerns/binda/maintenance_helpers.rb +34 -0
- data/app/helpers/binda/components_helper.rb +26 -2
- data/app/helpers/binda/field_groups_helper.rb +16 -0
- data/app/helpers/binda/structures_helper.rb +6 -0
- data/app/models/binda/asset.rb +0 -4
- data/app/models/binda/b.rb +5 -0
- data/app/models/binda/board.rb +1 -18
- data/app/models/binda/choice.rb +48 -12
- data/app/models/binda/component.rb +20 -0
- data/app/models/binda/field_group.rb +2 -2
- data/app/models/binda/field_setting.rb +61 -28
- data/app/models/binda/gallery.rb +0 -2
- data/app/models/binda/image.rb +7 -0
- data/app/models/binda/relation.rb +79 -0
- data/app/models/binda/relation_link.rb +11 -0
- data/app/models/binda/repeater.rb +1 -1
- data/app/models/binda/selection.rb +0 -9
- data/app/models/binda/structure.rb +41 -39
- data/app/models/binda/video.rb +7 -0
- data/app/models/concerns/binda/default_helpers.rb +186 -0
- data/app/models/concerns/binda/fieldable_associations.rb +276 -30
- data/app/uploaders/binda/{asset → image}/image_uploader.rb +27 -9
- data/app/uploaders/binda/video/video_uploader.rb +51 -0
- data/app/views/binda/boards/edit.html.erb +6 -1
- data/app/views/binda/categories/_form.html.erb +41 -40
- data/app/views/binda/categories/edit.html.erb +1 -1
- data/app/views/binda/categories/index.html.erb +16 -13
- data/app/views/binda/components/edit.html.erb +6 -3
- data/app/views/binda/components/index.html.erb +69 -28
- data/app/views/binda/components/new.html.erb +1 -1
- data/app/views/binda/components/sort_index.html.erb +46 -0
- data/app/views/binda/field_groups/_form_body.html.erb +65 -44
- data/app/views/binda/field_groups/_form_item.html.erb +66 -23
- data/app/views/binda/field_groups/_form_item_choice.erb +34 -15
- data/app/views/binda/field_groups/_form_section.html.erb +6 -10
- data/app/views/binda/field_groups/_form_section_repeater.html.erb +3 -3
- data/app/views/binda/field_groups/edit.html.erb +1 -1
- data/app/views/binda/field_settings/_form_body.html.erb +5 -5
- data/app/views/binda/field_settings/edit.html.erb +1 -1
- data/app/views/binda/fieldable/_form_body.html.erb +93 -79
- data/app/views/binda/fieldable/_form_item_date.html.erb +14 -14
- data/app/views/binda/fieldable/_form_item_image.html.erb +35 -0
- data/app/views/binda/fieldable/_form_item_new_repeater.html.erb +12 -5
- data/app/views/binda/fieldable/_form_item_relation.html.erb +44 -0
- data/app/views/binda/fieldable/_form_item_repeater.html.erb +80 -58
- data/app/views/binda/fieldable/_form_item_selections.html.erb +109 -87
- data/app/views/binda/fieldable/_form_item_string.html.erb +19 -17
- data/app/views/binda/fieldable/_form_item_text.html.erb +19 -16
- data/app/views/binda/fieldable/_form_item_video.html.erb +32 -0
- data/app/views/binda/fieldable/_form_section.html.erb +27 -5
- data/app/views/binda/fieldable/_form_section_repeater.html.erb +30 -10
- data/app/views/binda/fieldable/_form_sidebar.html.erb +44 -20
- data/app/views/binda/manage/users/_form_body.html.erb +42 -37
- data/app/views/binda/manage/users/edit.html.erb +1 -1
- data/app/views/binda/manage/users/index.html.erb +21 -21
- data/app/views/binda/structures/_form_body.html.erb +54 -60
- data/app/views/binda/structures/_form_section.html.erb +32 -18
- data/app/views/binda/structures/_form_sidebar.html.erb +35 -0
- data/app/views/binda/structures/edit.html.erb +2 -2
- data/app/views/binda/structures/index.html.erb +21 -16
- data/app/views/binda/structures/sort_index.html.erb +36 -0
- data/app/views/{users → binda/users}/confirmations/new.html.erb +1 -1
- data/app/views/{users → binda/users}/mailer/confirmation_instructions.html.erb +0 -0
- data/app/views/{users → binda/users}/mailer/password_change.html.erb +0 -0
- data/app/views/{users → binda/users}/mailer/reset_password_instructions.html.erb +0 -0
- data/app/views/{users → binda/users}/mailer/unlock_instructions.html.erb +0 -0
- data/app/views/{users → binda/users}/passwords/edit.html.erb +1 -1
- data/app/views/{users → binda/users}/passwords/new.html.erb +1 -1
- data/app/views/{users → binda/users}/registrations/edit.html.erb +0 -0
- data/app/views/{users → binda/users}/registrations/new.html.erb +1 -1
- data/app/views/binda/users/sessions/_background.html.erb +139 -0
- data/app/views/binda/users/sessions/new.html.erb +62 -0
- data/app/views/{users → binda/users}/shared/_links.html.erb +3 -3
- data/app/views/{users → binda/users}/unlocks/new.html.erb +1 -1
- data/app/views/kaminari/_first_page.html.erb +11 -0
- data/app/views/kaminari/_gap.html.erb +8 -0
- data/app/views/kaminari/_last_page.html.erb +11 -0
- data/app/views/kaminari/_next_page.html.erb +11 -0
- data/app/views/kaminari/_page.html.erb +12 -0
- data/app/views/kaminari/_paginator.html.erb +19 -0
- data/app/views/kaminari/_prev_page.html.erb +11 -0
- data/app/views/layouts/binda/_flash.html.erb +1 -1
- data/app/views/layouts/binda/_header.html.erb +2 -6
- data/app/views/layouts/binda/_sidebar.html.erb +11 -4
- data/app/views/layouts/binda/application.html.erb +15 -7
- data/config/autoprefixer.yml +5 -0
- data/config/database.yml.travis +3 -0
- data/config/initializers/assets.rb +1 -0
- data/config/initializers/autoprefixer.yml +5 -0
- data/config/initializers/carrierwave.rb +32 -0
- data/config/initializers/devise.rb +14 -10
- data/config/initializers/devise_patch.rb +8 -8
- data/config/initializers/simple_form.rb +4 -0
- data/config/initializers/simple_form__fileupload.rb +121 -0
- data/config/initializers/{simple_form_bootstrap.rb → simple_form_custom.rb} +79 -50
- data/config/locales/en.yml +61 -3
- data/config/locales/it.yml +51 -0
- data/config/locales/simple_form.en.yml +3 -3
- data/config/routes.rb +41 -24
- data/db/migrate/1_create_binda_tables.rb +18 -7
- data/db/migrate/20171214140451_add_preview_mode.rb +5 -0
- data/lib/binda.rb +1 -1
- data/lib/binda/engine.rb +19 -23
- data/lib/binda/version.rb +2 -2
- data/lib/generators/binda/install/install_generator.rb +59 -54
- data/lib/generators/binda/install/templates/config/initializers/carrierwave.rb +11 -2
- data/lib/generators/binda/maintenance/USAGE +8 -0
- data/lib/generators/binda/maintenance/maintenance_generator.rb +50 -0
- data/lib/generators/binda/maintenance/templates/app/assets/javascripts/maintenance.js +0 -0
- data/lib/generators/binda/maintenance/templates/app/assets/stylesheets/maintenance.scss +0 -0
- data/lib/generators/binda/maintenance/templates/app/views/layouts/maintenance.html.erb +16 -0
- data/lib/generators/binda/maintenance/templates/config/initializers/maintenance.rb +1 -0
- data/lib/generators/binda/setup/setup_generator.rb +41 -30
- data/lib/tasks/add_default_helpers_class_task.rake +11 -0
- data/lib/tasks/add_video_feature_task.rake +15 -0
- data/lib/tasks/remove_orphan_fields_task.rake +16 -0
- data/lib/tasks/set_repeater_position_task.rake +13 -0
- data/lib/tasks/upgrade_to_v007_task.rake +72 -0
- data/lib/tasks/user_tasks.rake +14 -0
- data/vendor/assets/fonts/font-awesome/fa-brands-400.eot +0 -0
- data/vendor/assets/fonts/font-awesome/fa-brands-400.svg +978 -0
- data/vendor/assets/fonts/font-awesome/fa-brands-400.ttf +0 -0
- data/vendor/assets/fonts/font-awesome/fa-brands-400.woff +0 -0
- data/vendor/assets/fonts/font-awesome/fa-brands-400.woff2 +0 -0
- data/vendor/assets/fonts/font-awesome/fa-regular-400.eot +0 -0
- data/vendor/assets/fonts/font-awesome/fa-regular-400.svg +363 -0
- data/vendor/assets/fonts/font-awesome/fa-regular-400.ttf +0 -0
- data/vendor/assets/fonts/font-awesome/fa-regular-400.woff +0 -0
- data/vendor/assets/fonts/font-awesome/fa-regular-400.woff2 +0 -0
- data/vendor/assets/fonts/font-awesome/fa-solid-900.eot +0 -0
- data/vendor/assets/fonts/font-awesome/fa-solid-900.svg +1410 -0
- data/vendor/assets/fonts/font-awesome/fa-solid-900.ttf +0 -0
- data/vendor/assets/fonts/font-awesome/fa-solid-900.woff +0 -0
- data/vendor/assets/fonts/font-awesome/fa-solid-900.woff2 +0 -0
- data/vendor/assets/javascripts/GSAP/CSSPlugin.min.js +13 -0
- data/vendor/assets/javascripts/GSAP/EasePack.min.js +12 -0
- data/vendor/assets/javascripts/GSAP/ScrollToPlugin.min.js +12 -0
- data/vendor/assets/javascripts/GSAP/TweenLite.min.js +12 -0
- data/vendor/assets/javascripts/select2/i18n/af.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/ar.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/az.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/bg.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/bs.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/ca.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/cs.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/da.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/de.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/dsb.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/el.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/en.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/es.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/et.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/eu.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/fa.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/fi.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/fr.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/gl.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/he.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/hi.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/hr.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/hsb.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/hu.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/hy.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/id.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/is.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/it.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/ja.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/km.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/ko.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/lt.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/lv.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/mk.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/ms.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/nb.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/nl.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/pl.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/ps.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/pt-BR.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/pt.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/ro.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/ru.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/sk.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/sl.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/sr-Cyrl.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/sr.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/sv.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/th.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/tr.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/uk.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/vi.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/zh-CN.js +3 -0
- data/vendor/assets/javascripts/select2/i18n/zh-TW.js +3 -0
- data/vendor/assets/javascripts/select2/select2.full.min.js +1 -0
- data/vendor/assets/javascripts/select2/select2.min.js +1 -0
- data/vendor/assets/javascripts/tether.min.js +1 -0
- data/vendor/assets/stylesheets/{bootstrap-select.css → bootstrap/bootstrap-select.css} +0 -0
- data/vendor/assets/stylesheets/font-awesome/_animated.scss +6 -20
- data/vendor/assets/stylesheets/font-awesome/_bordered-pulled.scss +6 -11
- data/vendor/assets/stylesheets/font-awesome/_core.scss +11 -7
- data/vendor/assets/stylesheets/font-awesome/_fixed-width.scss +1 -1
- data/vendor/assets/stylesheets/font-awesome/_icons.scss +785 -787
- data/vendor/assets/stylesheets/font-awesome/_larger.scss +16 -6
- data/vendor/assets/stylesheets/font-awesome/_list.scss +7 -8
- data/vendor/assets/stylesheets/font-awesome/_mixins.scss +17 -20
- data/vendor/assets/stylesheets/font-awesome/_rotated-flipped.scss +9 -6
- data/vendor/assets/stylesheets/font-awesome/_screen-reader.scss +2 -2
- data/vendor/assets/stylesheets/font-awesome/_stacked.scss +19 -8
- data/vendor/assets/stylesheets/font-awesome/_variables.scss +795 -795
- data/vendor/assets/stylesheets/font-awesome/fa-brands.scss +21 -0
- data/vendor/assets/stylesheets/font-awesome/fa-regular.scss +22 -0
- data/vendor/assets/stylesheets/font-awesome/fa-solid.scss +23 -0
- data/vendor/assets/stylesheets/font-awesome/fontawesome.scss +20 -0
- data/vendor/assets/stylesheets/select2/select2.min.css +1 -0
- metadata +278 -125
- data/app/assets/javascripts/binda/components/form_item_asset.js +0 -25
- data/app/assets/stylesheets/binda/application.css +0 -6
- data/app/assets/stylesheets/binda/components/form_body.scss +0 -2
- data/app/assets/stylesheets/binda/components/form_item_asset.scss +0 -20
- data/app/assets/stylesheets/binda/components/form_section.scss +0 -40
- data/app/assets/stylesheets/binda/components/sidebar.scss +0 -131
- data/app/assets/stylesheets/binda/layout/components_index.scss +0 -9
- data/app/assets/stylesheets/binda/layout/dashboard.scss +0 -7
- data/app/assets/stylesheets/binda/layout/users_sign_in.scss +0 -29
- data/app/controllers/binda/bindings_controller.rb +0 -62
- data/app/controllers/concerns/binda/default_helpers.rb +0 -226
- data/app/helpers/binda/bindings_helper.rb +0 -4
- data/app/models/binda/binda.rb +0 -7
- data/app/models/binda/binding.rb +0 -24
- data/app/views/binda/bindings/_form.html.erb +0 -32
- data/app/views/binda/bindings/edit.html.erb +0 -6
- data/app/views/binda/bindings/index.html.erb +0 -31
- data/app/views/binda/bindings/new.html.erb +0 -5
- data/app/views/binda/bindings/show.html.erb +0 -19
- data/app/views/binda/field_groups/index.html.erb +0 -34
- data/app/views/binda/fieldable/_form_item_asset.html.erb +0 -20
- data/app/views/users/sessions/new.html.erb +0 -27
- data/lib/tasks/binda.rake +0 -79
- data/vendor/assets/fonts/font-awesome/FontAwesome.otf +0 -0
- data/vendor/assets/fonts/font-awesome/fontawesome-webfont.eot +0 -0
- data/vendor/assets/fonts/font-awesome/fontawesome-webfont.svg +0 -2671
- data/vendor/assets/fonts/font-awesome/fontawesome-webfont.ttf +0 -0
- data/vendor/assets/fonts/font-awesome/fontawesome-webfont.woff +0 -0
- data/vendor/assets/fonts/font-awesome/fontawesome-webfont.woff2 +0 -0
- data/vendor/assets/stylesheets/font-awesome/_path.scss +0 -15
- data/vendor/assets/stylesheets/font-awesome/font-awesome.scss +0 -18
@@ -1,25 +0,0 @@
|
|
1
|
-
///- - - - - - - - - - - - - - - - - - - -
|
2
|
-
/// FORM ITEM ASSET
|
3
|
-
///- - - - - - - - - - - - - - - - - - - -
|
4
|
-
|
5
|
-
class FormItemAsset
|
6
|
-
{
|
7
|
-
constructor()
|
8
|
-
{
|
9
|
-
this.target = '.form-item--asset'
|
10
|
-
}
|
11
|
-
|
12
|
-
isSet()
|
13
|
-
{
|
14
|
-
if ( $( this.target ).length > 0 ) { return true }
|
15
|
-
else { return false }
|
16
|
-
}
|
17
|
-
|
18
|
-
setEvents()
|
19
|
-
{
|
20
|
-
// here code to setup assets via ajax
|
21
|
-
//
|
22
|
-
}
|
23
|
-
}
|
24
|
-
|
25
|
-
export var _FormItemAsset = new FormItemAsset()
|
@@ -1,20 +0,0 @@
|
|
1
|
-
.form-item--asset--clearfix {
|
2
|
-
margin-bottom: $font-size-base;
|
3
|
-
border-bottom: 1px solid $gray-lighter;
|
4
|
-
@extend .clearfix;
|
5
|
-
}
|
6
|
-
|
7
|
-
.form-item--asset--image {
|
8
|
-
max-width: 20%;
|
9
|
-
height: auto;
|
10
|
-
margin-left: 20%;
|
11
|
-
margin-bottom: $font-size-base;
|
12
|
-
}
|
13
|
-
|
14
|
-
.form-item--asset--uploader {
|
15
|
-
display: inline-block;
|
16
|
-
margin: 0;
|
17
|
-
margin-top: 9px;
|
18
|
-
float: left;
|
19
|
-
clear: both;
|
20
|
-
}
|
@@ -1,40 +0,0 @@
|
|
1
|
-
.form-section {
|
2
|
-
overflow-y: hidden;
|
3
|
-
}
|
4
|
-
|
5
|
-
.form-section--transparent-container {
|
6
|
-
margin: 0;
|
7
|
-
|
8
|
-
> div {
|
9
|
-
padding-right: $font-size-base;
|
10
|
-
padding-bottom: $font-size-base;
|
11
|
-
padding-left: $font-size-base;
|
12
|
-
margin-bottom: $font-size-base * 2;
|
13
|
-
@extend .box-shadowed;
|
14
|
-
}
|
15
|
-
}
|
16
|
-
|
17
|
-
.form-section--container {
|
18
|
-
@extend .form-section--transparent-container;
|
19
|
-
|
20
|
-
> div {
|
21
|
-
background-color: #FFF;
|
22
|
-
}
|
23
|
-
|
24
|
-
small {
|
25
|
-
display: inline-block;
|
26
|
-
margin-bottom: $font-size-base;
|
27
|
-
}
|
28
|
-
|
29
|
-
h4 {
|
30
|
-
padding-bottom: $font-size-base;
|
31
|
-
margin-bottom: $font-size-base;
|
32
|
-
border-bottom: 1px solid $gray-lighter;
|
33
|
-
font-weight: bold;
|
34
|
-
}
|
35
|
-
}
|
36
|
-
|
37
|
-
.form-section--wide-container,
|
38
|
-
.form-section--narrow-container {
|
39
|
-
@extend .form-section--container;
|
40
|
-
}
|
@@ -1,131 +0,0 @@
|
|
1
|
-
#main-container {
|
2
|
-
padding-left: 0;
|
3
|
-
transition: all 0.5 ease;
|
4
|
-
|
5
|
-
@media ( min-width: $tablet ) {
|
6
|
-
padding-left: 240px;
|
7
|
-
}
|
8
|
-
|
9
|
-
#main-sidebar {
|
10
|
-
z-index: 1000;
|
11
|
-
position: fixed;
|
12
|
-
left: 240px;
|
13
|
-
width: 0;
|
14
|
-
height: 100%;
|
15
|
-
margin-left: -240px;
|
16
|
-
overflow-y: auto;
|
17
|
-
@extend .box-shadowed;
|
18
|
-
background-color: #FFF;
|
19
|
-
transition: all 0.5s ease;
|
20
|
-
|
21
|
-
@media ( min-width: $tablet ) {
|
22
|
-
width: 240px;
|
23
|
-
}
|
24
|
-
}
|
25
|
-
|
26
|
-
#main-content {
|
27
|
-
width: 100%;
|
28
|
-
position: absolute;
|
29
|
-
|
30
|
-
@media ( min-width: $tablet ) {
|
31
|
-
position: relative;
|
32
|
-
}
|
33
|
-
}
|
34
|
-
|
35
|
-
&.toggled {
|
36
|
-
padding-left: 240px;
|
37
|
-
|
38
|
-
@media ( min-width: $tablet ) {
|
39
|
-
padding-left: 0;
|
40
|
-
}
|
41
|
-
|
42
|
-
#main-sidebar {
|
43
|
-
width: 240px;
|
44
|
-
|
45
|
-
@media ( min-width: $tablet ) {
|
46
|
-
width: 0;
|
47
|
-
}
|
48
|
-
}
|
49
|
-
|
50
|
-
#main-content {
|
51
|
-
position: absolute;
|
52
|
-
margin-right: -240px;
|
53
|
-
|
54
|
-
@media ( min-width: $tablet ) {
|
55
|
-
position: relative;
|
56
|
-
margin-right: 0;
|
57
|
-
}
|
58
|
-
}
|
59
|
-
}
|
60
|
-
}
|
61
|
-
|
62
|
-
.main-sidebar--nav {
|
63
|
-
position: absolute;
|
64
|
-
top: 0;
|
65
|
-
width: 240px;
|
66
|
-
margin: 0;
|
67
|
-
padding: 0;
|
68
|
-
list-style: none;
|
69
|
-
|
70
|
-
li {
|
71
|
-
// text-indent: 20px;
|
72
|
-
// line-height: 40px;
|
73
|
-
|
74
|
-
h3 {
|
75
|
-
padding-left: $font-size-base;
|
76
|
-
}
|
77
|
-
|
78
|
-
> a {
|
79
|
-
display: block;
|
80
|
-
padding: $font-size-base;
|
81
|
-
text-decoration: none;
|
82
|
-
color: $text-color;
|
83
|
-
font-weight: normal;
|
84
|
-
transition: all 0.3s ease;
|
85
|
-
|
86
|
-
&:hover {
|
87
|
-
padding-left: $font-size-base * 2;
|
88
|
-
text-decoration: none;
|
89
|
-
color: $gray-darker;
|
90
|
-
background-color: $gray-lighter;
|
91
|
-
border-bottom: none;
|
92
|
-
}
|
93
|
-
|
94
|
-
&:active,
|
95
|
-
&:focus {
|
96
|
-
text-decoration: none;
|
97
|
-
}
|
98
|
-
}
|
99
|
-
}
|
100
|
-
}
|
101
|
-
|
102
|
-
li.main-sidebar--brand {
|
103
|
-
padding-bottom: $font-size-base;
|
104
|
-
margin-bottom: $font-size-base * 2;
|
105
|
-
// border-bottom: 1px solid $gray-lighter;
|
106
|
-
background: #FFF;
|
107
|
-
// background: -moz-linear-gradient(top, #FFF 0%, $gray-lighter 100%);
|
108
|
-
// background: -webkit-linear-gradient(top, #FFF 0%,$gray-lighter 100%);
|
109
|
-
// background: linear-gradient(to bottom, #FFF 0%,$gray-lighter 100%);
|
110
|
-
// filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#FFF', endColorstr='$gray-lighter',GradientType=0 );
|
111
|
-
}
|
112
|
-
.main-sidebar--nav .glyphicon {
|
113
|
-
text-indent: 0;
|
114
|
-
padding-right: $font-size-base/2;
|
115
|
-
}
|
116
|
-
|
117
|
-
.main-sidebar--nav li a.main-sidebar--logout {
|
118
|
-
color: $color-danger;
|
119
|
-
}
|
120
|
-
|
121
|
-
.main-sidebar--structure {
|
122
|
-
border-bottom: 1px solid $gray-lighter;
|
123
|
-
}
|
124
|
-
|
125
|
-
.main-sidebar--first-structure {
|
126
|
-
border-top: 1px solid $gray-lighter;
|
127
|
-
}
|
128
|
-
|
129
|
-
.main-sidebar--nav li:last-child {
|
130
|
-
border-bottom: 1px solid $gray-lighter;
|
131
|
-
}
|
@@ -1,29 +0,0 @@
|
|
1
|
-
.devise-view {
|
2
|
-
// background: #FFF;
|
3
|
-
// background: -moz-linear-gradient(top, #FFF 0%, $gray-lighter 100%);
|
4
|
-
// background: -webkit-linear-gradient(top, #FFF 0%,$gray-lighter 100%);
|
5
|
-
// background: linear-gradient(to bottom, #FFF 0%,$gray-lighter 100%);
|
6
|
-
// filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#FFF', endColorstr='$gray-lighter',GradientType=0 );
|
7
|
-
background: $gray-lighter;
|
8
|
-
height: 100vh;
|
9
|
-
|
10
|
-
#main-container {
|
11
|
-
padding-left: 0;
|
12
|
-
position: relative;
|
13
|
-
height: 100vh;
|
14
|
-
}
|
15
|
-
#main-content {
|
16
|
-
position: absolute !important;
|
17
|
-
top: 50%;
|
18
|
-
left: 50%;
|
19
|
-
width: 100%;
|
20
|
-
transform: translate(-50%, -50%);
|
21
|
-
|
22
|
-
width: 33% !important;
|
23
|
-
padding: $font-size-base * 2;
|
24
|
-
// margin: $font-size-base auto;
|
25
|
-
background-color: #FFF;
|
26
|
-
border-radius: $font-size-base / 2;
|
27
|
-
border: 1px solid $gray-lighter;
|
28
|
-
}
|
29
|
-
}
|
@@ -1,62 +0,0 @@
|
|
1
|
-
require_dependency "binda/application_controller"
|
2
|
-
|
3
|
-
module Binda
|
4
|
-
class BindingsController < ApplicationController
|
5
|
-
before_action :set_binding, only: [:show, :edit, :update, :destroy]
|
6
|
-
|
7
|
-
# GET /bindings
|
8
|
-
def index
|
9
|
-
@bindings = Binding.all
|
10
|
-
end
|
11
|
-
|
12
|
-
# GET /bindings/1
|
13
|
-
def show
|
14
|
-
end
|
15
|
-
|
16
|
-
# GET /bindings/new
|
17
|
-
def new
|
18
|
-
@binding = Binding.new
|
19
|
-
end
|
20
|
-
|
21
|
-
# GET /bindings/1/edit
|
22
|
-
def edit
|
23
|
-
end
|
24
|
-
|
25
|
-
# POST /bindings
|
26
|
-
def create
|
27
|
-
@binding = Binding.new(binding_params)
|
28
|
-
|
29
|
-
if @binding.save
|
30
|
-
redirect_to binding_path( @binding.id ), notice: 'Binding was successfully created.'
|
31
|
-
else
|
32
|
-
render :new
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
# PATCH/PUT /bindings/1
|
37
|
-
def update
|
38
|
-
if @binding.update(binding_params)
|
39
|
-
redirect_to binding_path( @binding.id ), notice: 'Binding was successfully updated.'
|
40
|
-
else
|
41
|
-
render :edit
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
# DELETE /bindings/1
|
46
|
-
def destroy
|
47
|
-
@binding.destroy
|
48
|
-
redirect_to bindings_url, notice: 'Binding was successfully destroyed.'
|
49
|
-
end
|
50
|
-
|
51
|
-
private
|
52
|
-
# Use callbacks to share common setup or constraints between actions.
|
53
|
-
def set_binding
|
54
|
-
@binding = Binding.find(params[:id])
|
55
|
-
end
|
56
|
-
|
57
|
-
# Only allow a trusted parameter "white list" through.
|
58
|
-
def binding_params
|
59
|
-
params.require(:binding).permit(:title, :description, :position)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
@@ -1,226 +0,0 @@
|
|
1
|
-
module Binda
|
2
|
-
# Binda comes with a bunch of helpers to make life easier.
|
3
|
-
module DefaultHelpers
|
4
|
-
extend ActiveSupport::Concern
|
5
|
-
|
6
|
-
# Get components
|
7
|
-
#
|
8
|
-
# This method retrieves **all components** belonging to a specific structure.
|
9
|
-
# With this method you can optimize the query in order to avoid the infamous
|
10
|
-
# [N+1 issue](https://youtu.be/oJ4Ur5XPAF8) by specifing what field types
|
11
|
-
# you are going to request in the view. The list of field types available
|
12
|
-
# can be found in the [official documentation](https://github.com/lacolonia/binda/wiki/Fields).
|
13
|
-
# Field types must be listed as separated strings, lowercase and plural.
|
14
|
-
# See the following examples.
|
15
|
-
#
|
16
|
-
# @example Get all components belonging to `page` structure:
|
17
|
-
# get_components('page')
|
18
|
-
# # return all published pages sorted by position
|
19
|
-
#
|
20
|
-
# get_components('page', { published: false })
|
21
|
-
# # return all published and draft pages sorted by position
|
22
|
-
#
|
23
|
-
# get_components('page', { custom_order: 'created_at DESC' })
|
24
|
-
# # return all published pages sorted chronologically
|
25
|
-
#
|
26
|
-
# get_components('page', { fields: ['strings'] })
|
27
|
-
# get_components('page', { fields: ['strings', 'dates', 'assets'] })
|
28
|
-
# # it optimizes the query in order to avoid the N+1 issue
|
29
|
-
# # useful if you are going to request any field from these components
|
30
|
-
# # or from any repeaters
|
31
|
-
#
|
32
|
-
# get_components('page', { published: true, custom_order: 'name', fields: ['string', 'repeaters'] })
|
33
|
-
# # it's then possible to create any sort of combination
|
34
|
-
#
|
35
|
-
# @param slug [string] The slug of the structure to which the components belong
|
36
|
-
# @param args [hash] A hash containing the options used to customize the query.
|
37
|
-
#
|
38
|
-
# The hash parameters are:
|
39
|
-
#
|
40
|
-
# - `published` (boolean) - Set to true to gather just published components,
|
41
|
-
# false to get them all
|
42
|
-
# - `custom_order` (string) - Set the order parameter. Default is `position`,
|
43
|
-
# but you can use any of the following `created_at`, `updated_at`, `id`, `name`, `slug`.
|
44
|
-
# Append `DESC` if you want to reverse the order, e.g. `position DESC`
|
45
|
-
# - `fields` (array) - Include related field classes to the query. The list of field types available
|
46
|
-
# can be found in the [official documentation](https://github.com/lacolonia/binda/wiki/Fields).
|
47
|
-
# Field types must be listed as separated strings, lowercase and plural.
|
48
|
-
#
|
49
|
-
# @return [ActiveRecord Object]
|
50
|
-
def get_components( slug, args = { published: true, custom_order: 'position', fields: [] })
|
51
|
-
|
52
|
-
validate_provided_arguments( args )
|
53
|
-
|
54
|
-
# Sets defaults
|
55
|
-
args[:published] = 'true' if args[:published].nil?
|
56
|
-
args[:custom_order] = 'position' if args[:custom_order].nil?
|
57
|
-
args[:fields] = [] if args[:fields].nil?
|
58
|
-
|
59
|
-
validate_provided_fields( args )
|
60
|
-
validate_provided_custom_order( args )
|
61
|
-
|
62
|
-
# Generate query
|
63
|
-
if args[:published]
|
64
|
-
if args[:fields].any?
|
65
|
-
Component.where( structure_id: Structure.where( slug: slug ) ).published.includes( args[:fields] )
|
66
|
-
else
|
67
|
-
Component.where( structure_id: Structure.where( slug: slug ) ).published
|
68
|
-
end
|
69
|
-
else
|
70
|
-
if args[:fields].any?
|
71
|
-
Component.where( structure_id: Structure.where( slug: slug ) ).order( args[:custom_order] ).includes( args[:fields] )
|
72
|
-
else
|
73
|
-
Component.where( structure_id: Structure.where( slug: slug ) ).order( args[:custom_order] )
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
# This method retrieves a **single component**.
|
79
|
-
# With this method you can optimize the query in order to avoid the infamous
|
80
|
-
# [N+1 issue](https://youtu.be/oJ4Ur5XPAF8) by specifing what field types
|
81
|
-
# you are going to request in the view. The list of field types available
|
82
|
-
# can be found in the [official documentation](https://github.com/lacolonia/binda/wiki/Fields).
|
83
|
-
# Field types must be listed as separated strings, lowercase and plural.
|
84
|
-
# See the following examples.
|
85
|
-
#
|
86
|
-
# @example Get a component with slug `my-first-post`
|
87
|
-
# get_component('my-first-post')
|
88
|
-
# # return the component
|
89
|
-
#
|
90
|
-
# get_component('my-first-post', { fields: ['strings', 'texts', 'assets', 'selections'] })
|
91
|
-
# # return the component and optimize the query for any of the listed fields related to it
|
92
|
-
#
|
93
|
-
#
|
94
|
-
# @param slug [string] The slug of the component
|
95
|
-
# @param args [hash] A hash containing the options used to customize the query.
|
96
|
-
#
|
97
|
-
# The hash parameters are:
|
98
|
-
#
|
99
|
-
# - `fields` (array) - Include related field classes to the query. The list of field types available
|
100
|
-
# can be found in the [official documentation](https://github.com/lacolonia/binda/wiki/Fields).
|
101
|
-
# Field types must be listed as separated strings, lowercase and plural.
|
102
|
-
#
|
103
|
-
# @return [ActiveRecord Object]
|
104
|
-
def get_component( slug, args = { fields: [] })
|
105
|
-
|
106
|
-
validate_provided_arguments( args )
|
107
|
-
|
108
|
-
# Sets defaults
|
109
|
-
args[:fields] = [] if args[:fields].nil?
|
110
|
-
|
111
|
-
validate_provided_fields( args )
|
112
|
-
|
113
|
-
if args[:fields].any?
|
114
|
-
Component.where(slug: slug).first.inlcudes( args[:fields] )
|
115
|
-
else
|
116
|
-
Component.where(slug: slug).first
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
# This method retrieves a **board**.
|
121
|
-
# With this method you can optimize the query in order to avoid the infamous
|
122
|
-
# [N+1 issue](https://youtu.be/oJ4Ur5XPAF8) by specifing what field types
|
123
|
-
# you are going to request in the view. The list of field types available
|
124
|
-
# can be found in the [official documentation](https://github.com/lacolonia/binda/wiki/Fields).
|
125
|
-
# Field types must be listed as separated strings, lowercase and plural.
|
126
|
-
# See the following examples.
|
127
|
-
#
|
128
|
-
# @example Get a board with slug `my-dashboard`
|
129
|
-
# get_board('my-dashboard')
|
130
|
-
# # return the board
|
131
|
-
#
|
132
|
-
# get_board('my-dashboard', { fields: ['strings', 'texts', 'assets', 'selections'] })
|
133
|
-
# # return the board and optimize the query for any of the listed fields related to it
|
134
|
-
#
|
135
|
-
#
|
136
|
-
# @param slug [string] The slug of the board
|
137
|
-
# @param args [hash] A hash containing the options used to customize the query.
|
138
|
-
#
|
139
|
-
# The hash parameters are:
|
140
|
-
#
|
141
|
-
# - `fields` (array) - Include related field classes to the query. The list of field types available
|
142
|
-
# can be found in the [official documentation](https://github.com/lacolonia/binda/wiki/Fields).
|
143
|
-
# Field types must be listed as separated strings, lowercase and plural.
|
144
|
-
#
|
145
|
-
# @return [ActiveRecord Object]
|
146
|
-
def get_board( slug, args = { fields: [] })
|
147
|
-
|
148
|
-
validate_provided_arguments( args )
|
149
|
-
|
150
|
-
# Sets defaults
|
151
|
-
args[:fields] = [] if args[:fields].nil?
|
152
|
-
|
153
|
-
check_provided_fields( args )
|
154
|
-
|
155
|
-
if args[:fields].any?
|
156
|
-
Board.where(slug: slug).first.inlcudes( args[:fields] )
|
157
|
-
else
|
158
|
-
Board.where(slug: slug).first
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
# This method retrieves a **repeater**.
|
163
|
-
# With this method you can optimize the query in order to avoid the infamous
|
164
|
-
# [N+1 issue](https://youtu.be/oJ4Ur5XPAF8) by specifing what field types
|
165
|
-
# you are going to request in the view. The list of field types available
|
166
|
-
# can be found in the [official documentation](https://github.com/lacolonia/binda/wiki/Fields).
|
167
|
-
# Field types must be listed as separated strings, lowercase and plural.
|
168
|
-
# See the following examples.
|
169
|
-
#
|
170
|
-
# @example Get a repeater with slug `slideshow`
|
171
|
-
# get_repeater('slideshow')
|
172
|
-
# # return the repeater
|
173
|
-
#
|
174
|
-
# get_repeater('slideshow', { fields: ['strings', 'assets'] })
|
175
|
-
# # return the repeater and optimize the query for any of the listed fields related to it
|
176
|
-
#
|
177
|
-
#
|
178
|
-
# @param slug [string] The slug of the repeater
|
179
|
-
# @param args [hash] A hash containing the options used to customize the query.
|
180
|
-
#
|
181
|
-
# The hash parameters are:
|
182
|
-
#
|
183
|
-
# - `fields` (array) - Include related field classes to the query. The list of field types available
|
184
|
-
# can be found in the [official documentation](https://github.com/lacolonia/binda/wiki/Fields).
|
185
|
-
# Field types must be listed as separated strings, lowercase and plural.
|
186
|
-
#
|
187
|
-
# @return [ActiveRecord Object]
|
188
|
-
def get_repeater( slug, args = { fields: [] })
|
189
|
-
|
190
|
-
validate_provided_arguments( args )
|
191
|
-
|
192
|
-
# Sets defaults
|
193
|
-
args[:fields] = [] if args[:fields].nil?
|
194
|
-
|
195
|
-
check_provided_fields( args )
|
196
|
-
|
197
|
-
if args[:fields].any?
|
198
|
-
Repeater.where(slug: slug).first.inlcudes( args[:fields] )
|
199
|
-
else
|
200
|
-
Repeater.where(slug: slug).first
|
201
|
-
end
|
202
|
-
end
|
203
|
-
|
204
|
-
private
|
205
|
-
|
206
|
-
# Check if provided `fields` are ok, otherwise raise an error
|
207
|
-
def validate_provided_fields( args )
|
208
|
-
raise ArgumentError, "Argument error in get_components(): fields should be an Array, not a #{args[:fields].class.to_s}.", caller unless args[:fields].instance_of? Array
|
209
|
-
args[:fields].each do |f|
|
210
|
-
raise ArgumentError, "Argument error in get_components(): #{f.to_s} is not a valid field type.", caller unless FieldSetting.get_field_classes.map{ |fc| fc.underscore.pluralize }.include? f.to_s
|
211
|
-
end
|
212
|
-
end
|
213
|
-
|
214
|
-
# Check if provided `custom_order` is ok, otherwise raise an error
|
215
|
-
def validate_provided_custom_order( args )
|
216
|
-
raise ArgumentError, "Argument error in get_components(): custom_order should be a String, not a #{args[:custom_order].class.to_s}.", caller unless args[:custom_order].instance_of? ::String
|
217
|
-
end
|
218
|
-
|
219
|
-
# Check if provided arguments are ok, otherwise raise an error
|
220
|
-
def validate_provided_arguments( args )
|
221
|
-
args.each do |key, value|
|
222
|
-
raise ArgumentError, "Argument error in get_components(): #{key.to_s} is not a valid key.", caller unless ['published', 'custom_order', 'fields'].include? key.to_s
|
223
|
-
end
|
224
|
-
end
|
225
|
-
end
|
226
|
-
end
|