binda 0.0.3 → 0.0.5

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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +14 -29
  3. data/Rakefile +16 -10
  4. data/app/assets/javascripts/binda/components/form_item.js +12 -1
  5. data/app/assets/javascripts/binda/components/form_item_asset.js +1 -0
  6. data/app/assets/javascripts/binda/components/form_item_choice.js +58 -0
  7. data/app/assets/javascripts/binda/components/form_item_editor.js +39 -0
  8. data/app/assets/javascripts/binda/components/form_item_repeater.js +7 -0
  9. data/app/assets/javascripts/binda/components/sortable.js +0 -1
  10. data/app/assets/javascripts/binda/dist/binda.bundle.js +175 -8
  11. data/app/assets/javascripts/binda/index.js +4 -0
  12. data/app/assets/stylesheets/binda/components/form_item.scss +64 -2
  13. data/app/controllers/binda/application_controller.rb +2 -10
  14. data/app/controllers/binda/choices_controller.rb +19 -0
  15. data/app/controllers/binda/components_controller.rb +38 -134
  16. data/app/controllers/binda/field_groups_controller.rb +18 -30
  17. data/app/controllers/binda/structures_controller.rb +6 -6
  18. data/app/controllers/concerns/binda/component_controller_helper.rb +16 -0
  19. data/app/models/binda/checkbox.rb +7 -0
  20. data/app/models/binda/choice.rb +11 -0
  21. data/app/models/binda/component.rb +12 -136
  22. data/app/models/binda/field_group.rb +1 -1
  23. data/app/models/binda/field_setting.rb +40 -8
  24. data/app/models/binda/radio.rb +5 -0
  25. data/app/models/binda/repeater.rb +11 -79
  26. data/app/models/binda/select.rb +7 -0
  27. data/app/models/binda/structure.rb +13 -13
  28. data/app/models/concerns/binda/component_model_helper.rb +170 -0
  29. data/app/views/binda/components/_form_item_new_repeater.html.erb +3 -5
  30. data/app/views/binda/components/_form_item_selectable.html.erb +72 -0
  31. data/app/views/binda/components/_form_section.html.erb +7 -2
  32. data/app/views/binda/components/_form_section_repeater.html.erb +10 -0
  33. data/app/views/binda/field_groups/_form_item.html.erb +54 -26
  34. data/app/views/binda/field_groups/_form_item_choice.erb +96 -0
  35. data/app/views/binda/field_groups/_form_section.html.erb +2 -2
  36. data/app/views/binda/field_groups/_form_section_repeater.html.erb +2 -2
  37. data/config/locales/en.yml +7 -0
  38. data/config/routes.rb +2 -1
  39. data/db/migrate/1_create_binda_tables.rb +17 -0
  40. data/lib/binda/engine.rb +6 -0
  41. data/lib/binda/version.rb +1 -1
  42. data/lib/generators/binda/install/install_generator.rb +6 -8
  43. data/lib/generators/binda/setup/setup_generator.rb +8 -4
  44. metadata +66 -42
  45. data/app/controllers/binda/dates_controller.rb +0 -62
  46. data/app/controllers/binda/texts_controller.rb +0 -62
  47. data/app/views/binda/dates/_form.html.erb +0 -22
  48. data/app/views/binda/dates/edit.html.erb +0 -6
  49. data/app/views/binda/dates/index.html.erb +0 -27
  50. data/app/views/binda/dates/new.html.erb +0 -5
  51. data/app/views/binda/dates/show.html.erb +0 -9
  52. data/app/views/binda/repeaters/_form.html.erb +0 -27
  53. data/app/views/binda/repeaters/edit.html.erb +0 -6
  54. data/app/views/binda/repeaters/index.html.erb +0 -29
  55. data/app/views/binda/repeaters/new.html.erb +0 -5
  56. data/app/views/binda/repeaters/show.html.erb +0 -14
  57. data/app/views/binda/structures/add_child.html.erb +0 -0
  58. data/app/views/binda/texts/_form.html.erb +0 -22
  59. data/app/views/binda/texts/edit.html.erb +0 -6
  60. data/app/views/binda/texts/index.html.erb +0 -27
  61. data/app/views/binda/texts/new.html.erb +0 -5
  62. data/app/views/binda/texts/show.html.erb +0 -9
@@ -8,7 +8,7 @@
8
8
  <%# This is done using `where( ancestry: nil )` %>
9
9
  <%= f.simple_fields_for :field_settings, f.object.field_settings.where( ancestry: nil ).order( :position ) do |ff| %>
10
10
  <div class="form-item <%= "form-item--#{ ff.object.field_type }" unless ff.object.field_type.nil? %>">
11
- <%= render 'form_item', ff: ff, section: section %>
11
+ <%= render 'form_item', f: f, ff: ff, section: section %>
12
12
  </div>
13
13
  <% end %>
14
14
 
@@ -18,7 +18,7 @@
18
18
  <%# - - - - - - - - - - - - %>
19
19
  <%= f.simple_fields_for 'new_field_settings[]', @field_group.field_settings.build( field_group: @field_group ) do |ff| %>
20
20
  <div id="new-child-<%= f.object.id %>" class="form-item form-item--new">
21
- <%= render 'form_item', ff: ff, section: section %>
21
+ <%= render 'form_item', f: f, ff: ff, section: section %>
22
22
  </div>
23
23
  <% end %>
24
24
 
@@ -3,7 +3,7 @@
3
3
  <%# - - - - - - - - - - - - %>
4
4
  <%= f.simple_fields_for :field_settings, repeater.children.order( :position ) do |ff| %>
5
5
  <div class="form-item <%= "form-item--#{ ff.object.field_type }" unless ff.object.field_type.nil? %>">
6
- <%= render 'form_item', ff: ff, section: section %>
6
+ <%= render 'form_item', f: f, ff: ff, section: section %>
7
7
  </div>
8
8
  <% end %>
9
9
 
@@ -12,7 +12,7 @@
12
12
  <%# - - - - - - - - - - - - %>
13
13
  <%= f.simple_fields_for 'new_field_settings[]', repeater.children.build( field_group: @field_group ) do |ff| %>
14
14
  <div id="new-child--repeater-<%= repeater.id %>" class="form-item form-item--new">
15
- <%= render 'form_item', ff: ff, section: section %>
15
+ <%= render 'form_item', f: f, ff: ff, section: section %>
16
16
  </div>
17
17
  <% end %>
18
18
 
@@ -35,3 +35,10 @@ en:
35
35
  create_category: create a new category
36
36
  structure_has_categories: Enable categories
37
37
  asset: asset
38
+ choices: choices
39
+ choice_label: label
40
+ choice_value: value
41
+ add_choice: Add choice
42
+ default_choice: default choice
43
+ default_choice_description: if you have added/removed any choice you need to click save to update the list of choices
44
+ allow_null: allow null?
data/config/routes.rb CHANGED
@@ -56,10 +56,11 @@ Binda::Engine.routes.draw do
56
56
 
57
57
  end
58
58
  end
59
+
60
+ resources :choices, only: [:destroy]
59
61
 
60
62
  resources :texts
61
63
  resources :bindings
62
- resources :galleries
63
64
  resources :assets
64
65
  resources :repeaters
65
66
  resources :dates
@@ -52,6 +52,8 @@ class CreateBindaTables < ActiveRecord::Migration[5.0]
52
52
  t.belongs_to :field_group
53
53
  t.string :ancestry
54
54
  t.index :ancestry
55
+ t.boolean :allow_null
56
+ t.references :default_choice, index: true
55
57
  t.timestamps
56
58
  end
57
59
 
@@ -91,6 +93,21 @@ class CreateBindaTables < ActiveRecord::Migration[5.0]
91
93
  t.timestamps
92
94
  end
93
95
 
96
+ create_table :binda_choices do |t|
97
+ t.string :label
98
+ t.string :value
99
+ t.belongs_to :field_setting
100
+ t.references :selectable, polymorphic: true, index: true
101
+ t.timestamps
102
+ end
103
+
104
+ create_table :binda_selects do |t|
105
+ t.belongs_to :field_setting
106
+ t.references :fieldable, polymorphic: true, index: true
107
+ t.string :type
108
+ t.timestamps
109
+ end
110
+
94
111
  create_table :binda_bindings do |t|
95
112
  t.string :title
96
113
  t.text :description
data/lib/binda/engine.rb CHANGED
@@ -25,6 +25,12 @@ module Binda
25
25
  # Setup tinymce configuration file
26
26
  config.tinymce.config_path = ::Binda::Engine.root.join("config/tinymce.yml")
27
27
 
28
+ # https://stackoverflow.com/a/17718926/1498118
29
+ config.generators do |g|
30
+ g.integration_tool :rspec
31
+ g.test_framework :rspec
32
+ end
33
+
28
34
  end
29
35
  end
30
36
 
data/lib/binda/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Binda
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.5'
3
3
  end
@@ -7,7 +7,7 @@ module Binda
7
7
 
8
8
  def check_previous_install
9
9
  # Ensure Binda is not installed
10
- if Component.table_exists?
10
+ if ::Binda::Component.table_exists?
11
11
  puts "Binda has already been installed on this database.".colorize(:red)
12
12
  puts "Please ensure Binda is completely removed from the database before trying to install it again.".colorize(:red)
13
13
  exit
@@ -49,19 +49,17 @@ module Binda
49
49
  rake 'db:migrate'
50
50
  end
51
51
 
52
- def reset
52
+ def setup_devise
53
+ return if Rails.env.production?
54
+
55
+ # Check if devise is already setup and if so, create a backup before overwrite it
53
56
  initializers_path = Rails.root.join('config', 'initializers' )
54
57
  if File.exist?( "#{ initializers_path }/devise.rb" )
55
58
  puts "We have detected a configuration file for Devise: config/initializers/devise.rb".colorize(:green)
56
59
  puts "In order to avoid any conflict that file has been renamed".colorize(:green)
57
60
  File.rename( "#{ initializers_path }/devise.rb" , "#{ initializers_path }/devise_backup_#{ Time.now.strftime('%Y%m%d-%H%M%S-%3N') }.rb" )
58
61
  end
59
- end
60
-
61
- def setup_devise
62
- return if Rails.env.production?
63
- return if File.exist?( Rails.root.join('config', 'initializers', 'devise.rb' ))
64
-
62
+
65
63
  # Copy the initilializer on the application folder
66
64
  template 'config/initializers/devise.rb'
67
65
 
@@ -14,15 +14,15 @@ module Binda
14
14
  puts "We need few details. Don't worry you can modify them later. \n\n"
15
15
 
16
16
  # MAINTENANCE MODE
17
- Setting.find_or_create_by( name: 'Maintenance Mode' )
17
+ ::Binda::Setting.find_or_create_by( name: 'Maintenance Mode' )
18
18
 
19
19
  # WEBSITE NAME
20
20
  @website_name = ask("What would you like to name your website? ['MySite']\n").presence || 'MySite'
21
- Setting.find_or_create_by( name: 'Website Name' ).update_attribute( :content, @website_name )
21
+ ::Binda::Setting.find_or_create_by( name: 'Website Name' ).update_attribute( :content, @website_name )
22
22
 
23
23
  # WEBSITE CONTENT
24
24
  @website_description = ask("What is it about? ['A website about the world']\n").presence || 'A website about the world'
25
- Setting.find_or_create_by( name: 'Website Description' ).update_attribute( :content, @website_description )
25
+ ::Binda::Setting.find_or_create_by( name: 'Website Description' ).update_attribute( :content, @website_description )
26
26
  end
27
27
 
28
28
  def create_credentials
@@ -31,7 +31,11 @@ module Binda
31
31
 
32
32
  def feedback
33
33
  puts
34
- puts "Binda CMS has been succesfully installed! ".colorize(:green)
34
+ puts "============================================================================="
35
+ puts
36
+ puts " Binda CMS has been succesfully installed! ".colorize(:green)
37
+ puts
38
+ puts "============================================================================="
35
39
  puts
36
40
  puts "Before deploying to production, remember to uncomment and update the"
37
41
  puts "'config.action_mailer.default_url_options' in 'config/environments/production.rb'"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: binda
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alessandro Barbieri
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-26 00:00:00.000000000 Z
11
+ date: 2017-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -98,26 +98,6 @@ dependencies:
98
98
  - - "<"
99
99
  - !ruby/object:Gem::Version
100
100
  version: '4.3'
101
- - !ruby/object:Gem::Dependency
102
- name: friendly_id
103
- requirement: !ruby/object:Gem::Requirement
104
- requirements:
105
- - - ">="
106
- - !ruby/object:Gem::Version
107
- version: '5.1'
108
- - - "<"
109
- - !ruby/object:Gem::Version
110
- version: '5.3'
111
- type: :runtime
112
- prerelease: false
113
- version_requirements: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '5.1'
118
- - - "<"
119
- - !ruby/object:Gem::Version
120
- version: '5.3'
121
101
  - !ruby/object:Gem::Dependency
122
102
  name: aasm
123
103
  requirement: !ruby/object:Gem::Requirement
@@ -300,6 +280,26 @@ dependencies:
300
280
  - - "~>"
301
281
  - !ruby/object:Gem::Version
302
282
  version: '2.5'
283
+ - !ruby/object:Gem::Dependency
284
+ name: friendly_id
285
+ requirement: !ruby/object:Gem::Requirement
286
+ requirements:
287
+ - - ">="
288
+ - !ruby/object:Gem::Version
289
+ version: '5.1'
290
+ - - "<"
291
+ - !ruby/object:Gem::Version
292
+ version: '5.3'
293
+ type: :runtime
294
+ prerelease: false
295
+ version_requirements: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ version: '5.1'
300
+ - - "<"
301
+ - !ruby/object:Gem::Version
302
+ version: '5.3'
303
303
  - !ruby/object:Gem::Dependency
304
304
  name: listen
305
305
  requirement: !ruby/object:Gem::Requirement
@@ -404,7 +404,38 @@ dependencies:
404
404
  - - "~>"
405
405
  - !ruby/object:Gem::Version
406
406
  version: '4.8'
407
- description: A modular CMS for Ruby on Rails 5
407
+ - !ruby/object:Gem::Dependency
408
+ name: database_cleaner
409
+ requirement: !ruby/object:Gem::Requirement
410
+ requirements:
411
+ - - "~>"
412
+ - !ruby/object:Gem::Version
413
+ version: '1.6'
414
+ type: :development
415
+ prerelease: false
416
+ version_requirements: !ruby/object:Gem::Requirement
417
+ requirements:
418
+ - - "~>"
419
+ - !ruby/object:Gem::Version
420
+ version: '1.6'
421
+ - !ruby/object:Gem::Dependency
422
+ name: yard
423
+ requirement: !ruby/object:Gem::Requirement
424
+ requirements:
425
+ - - "~>"
426
+ - !ruby/object:Gem::Version
427
+ version: '0.9'
428
+ type: :development
429
+ prerelease: false
430
+ version_requirements: !ruby/object:Gem::Requirement
431
+ requirements:
432
+ - - "~>"
433
+ - !ruby/object:Gem::Version
434
+ version: '0.9'
435
+ description: "A modular CMS for Ruby on Rails 5 with an intuitive out-of-the-box interface
436
+ to manage and customize components. \n Use Binda if you want to speed up your setup
437
+ process and concentrate directly on what your application is about. \n Please read
438
+ the documentation for more information and a quick"
408
439
  email:
409
440
  - alessandro@lacolonia.studio
410
441
  executables: []
@@ -418,6 +449,8 @@ files:
418
449
  - app/assets/javascripts/binda/application.js
419
450
  - app/assets/javascripts/binda/components/form_item.js
420
451
  - app/assets/javascripts/binda/components/form_item_asset.js
452
+ - app/assets/javascripts/binda/components/form_item_choice.js
453
+ - app/assets/javascripts/binda/components/form_item_editor.js
421
454
  - app/assets/javascripts/binda/components/form_item_repeater.js
422
455
  - app/assets/javascripts/binda/components/sortable.js
423
456
  - app/assets/javascripts/binda/dist/binda.bundle.js
@@ -448,8 +481,8 @@ files:
448
481
  - app/controllers/binda/assets_controller.rb
449
482
  - app/controllers/binda/bindings_controller.rb
450
483
  - app/controllers/binda/categories_controller.rb
484
+ - app/controllers/binda/choices_controller.rb
451
485
  - app/controllers/binda/components_controller.rb
452
- - app/controllers/binda/dates_controller.rb
453
486
  - app/controllers/binda/field_groups_controller.rb
454
487
  - app/controllers/binda/field_settings_controller.rb
455
488
  - app/controllers/binda/galleries_controller.rb
@@ -457,13 +490,13 @@ files:
457
490
  - app/controllers/binda/repeaters_controller.rb
458
491
  - app/controllers/binda/settings_controller.rb
459
492
  - app/controllers/binda/structures_controller.rb
460
- - app/controllers/binda/texts_controller.rb
461
493
  - app/controllers/binda/users/confirmations_controller.rb
462
494
  - app/controllers/binda/users/omniauth_callbacks_controller.rb
463
495
  - app/controllers/binda/users/passwords_controller.rb
464
496
  - app/controllers/binda/users/registrations_controller.rb
465
497
  - app/controllers/binda/users/sessions_controller.rb
466
498
  - app/controllers/binda/users/unlocks_controller.rb
499
+ - app/controllers/concerns/binda/component_controller_helper.rb
467
500
  - app/helpers/binda/application_helper.rb
468
501
  - app/helpers/binda/assets_helper.rb
469
502
  - app/helpers/binda/bindings_helper.rb
@@ -483,16 +516,21 @@ files:
483
516
  - app/models/binda/asset.rb
484
517
  - app/models/binda/binding.rb
485
518
  - app/models/binda/category.rb
519
+ - app/models/binda/checkbox.rb
520
+ - app/models/binda/choice.rb
486
521
  - app/models/binda/component.rb
487
522
  - app/models/binda/date.rb
488
523
  - app/models/binda/field_group.rb
489
524
  - app/models/binda/field_setting.rb
490
525
  - app/models/binda/gallery.rb
526
+ - app/models/binda/radio.rb
491
527
  - app/models/binda/repeater.rb
528
+ - app/models/binda/select.rb
492
529
  - app/models/binda/setting.rb
493
530
  - app/models/binda/structure.rb
494
531
  - app/models/binda/text.rb
495
532
  - app/models/binda/user.rb
533
+ - app/models/concerns/binda/component_model_helper.rb
496
534
  - app/uploaders/binda/asset/image_uploader.rb
497
535
  - app/views/binda/assets/_form.html.erb
498
536
  - app/views/binda/assets/edit.html.erb
@@ -514,6 +552,7 @@ files:
514
552
  - app/views/binda/components/_form_item_gallery.html.erb
515
553
  - app/views/binda/components/_form_item_new_repeater.html.erb
516
554
  - app/views/binda/components/_form_item_repeater.html.erb
555
+ - app/views/binda/components/_form_item_selectable.html.erb
517
556
  - app/views/binda/components/_form_item_text.html.erb
518
557
  - app/views/binda/components/_form_section.html.erb
519
558
  - app/views/binda/components/_form_section_repeater.html.erb
@@ -521,13 +560,9 @@ files:
521
560
  - app/views/binda/components/edit.html.erb
522
561
  - app/views/binda/components/index.html.erb
523
562
  - app/views/binda/components/new.html.erb
524
- - app/views/binda/dates/_form.html.erb
525
- - app/views/binda/dates/edit.html.erb
526
- - app/views/binda/dates/index.html.erb
527
- - app/views/binda/dates/new.html.erb
528
- - app/views/binda/dates/show.html.erb
529
563
  - app/views/binda/field_groups/_form_body.html.erb
530
564
  - app/views/binda/field_groups/_form_item.html.erb
565
+ - app/views/binda/field_groups/_form_item_choice.erb
531
566
  - app/views/binda/field_groups/_form_section.html.erb
532
567
  - app/views/binda/field_groups/_form_section_repeater.html.erb
533
568
  - app/views/binda/field_groups/edit.html.erb
@@ -549,11 +584,6 @@ files:
549
584
  - app/views/binda/manage/users/index.json.jbuilder
550
585
  - app/views/binda/manage/users/new.html.erb
551
586
  - app/views/binda/manage/users/show.json.jbuilder
552
- - app/views/binda/repeaters/_form.html.erb
553
- - app/views/binda/repeaters/edit.html.erb
554
- - app/views/binda/repeaters/index.html.erb
555
- - app/views/binda/repeaters/new.html.erb
556
- - app/views/binda/repeaters/show.html.erb
557
587
  - app/views/binda/settings/_dashboard_form.html.erb
558
588
  - app/views/binda/settings/_form.html.erb
559
589
  - app/views/binda/settings/dashboard.html.erb
@@ -562,15 +592,9 @@ files:
562
592
  - app/views/binda/settings/new.html.erb
563
593
  - app/views/binda/structures/_form_body.html.erb
564
594
  - app/views/binda/structures/_form_section.html.erb
565
- - app/views/binda/structures/add_child.html.erb
566
595
  - app/views/binda/structures/edit.html.erb
567
596
  - app/views/binda/structures/index.html.erb
568
597
  - app/views/binda/structures/new.html.erb
569
- - app/views/binda/texts/_form.html.erb
570
- - app/views/binda/texts/edit.html.erb
571
- - app/views/binda/texts/index.html.erb
572
- - app/views/binda/texts/new.html.erb
573
- - app/views/binda/texts/show.html.erb
574
598
  - app/views/layouts/binda/_flash.html.erb
575
599
  - app/views/layouts/binda/_header.html.erb
576
600
  - app/views/layouts/binda/_sidebar.html.erb
@@ -738,7 +762,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
738
762
  requirements:
739
763
  - - ">="
740
764
  - !ruby/object:Gem::Version
741
- version: '0'
765
+ version: 2.3.1
742
766
  required_rubygems_version: !ruby/object:Gem::Requirement
743
767
  requirements:
744
768
  - - ">="
@@ -1,62 +0,0 @@
1
- require_dependency "binda/application_controller"
2
-
3
- module Binda
4
- class DatesController < ApplicationController
5
- before_action :set_date, only: [:show, :edit, :update, :destroy]
6
-
7
- # GET /dates
8
- def index
9
- @dates = Date.all
10
- end
11
-
12
- # GET /dates/1
13
- def show
14
- end
15
-
16
- # GET /dates/new
17
- def new
18
- @date = Date.new
19
- end
20
-
21
- # GET /dates/1/edit
22
- def edit
23
- end
24
-
25
- # POST /dates
26
- def create
27
- @date = Date.new(date_params)
28
-
29
- if @date.save
30
- redirect_to @date, notice: 'Date was successfully created.'
31
- else
32
- render :new
33
- end
34
- end
35
-
36
- # PATCH/PUT /dates/1
37
- def update
38
- if @date.update(date_params)
39
- redirect_to @date, notice: 'Date was successfully updated.'
40
- else
41
- render :edit
42
- end
43
- end
44
-
45
- # DELETE /dates/1
46
- def destroy
47
- @date.destroy
48
- redirect_to dates_url, notice: 'Date was successfully destroyed.'
49
- end
50
-
51
- private
52
- # Use callbacks to share common setup or constraints between actions.
53
- def set_date
54
- @date = Date.find(params[:id])
55
- end
56
-
57
- # Only allow a trusted parameter "white list" through.
58
- def date_params
59
- params.require(:date).permit(:date)
60
- end
61
- end
62
- end