binda 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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