tramway-landing 3.0.3 → 3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 20e0df59553b9d457afd186bf846f10967c9abff324976369a355961faccef17
4
- data.tar.gz: 0074775a10cb3902acf138d28d687e06e24e8565da1e0669718d512f66181228
3
+ metadata.gz: eb1d9f3f7fd008ccc5b7bf6e10d92157d06a2d43bcfa06d4626eb50376eab1ff
4
+ data.tar.gz: bce155b9e752abf9ceb692d7cdd8aaf7f03ab62fa99b6ae061f07b7e7e2a076c
5
5
  SHA512:
6
- metadata.gz: a6e39c5cf78b180deaa0b2f29dff34ad8df89f9ee38cf4cf7f4547291c6c4e09f369e1603de167dd37977a93ff5f5771c22890301407970148f684831258af54
7
- data.tar.gz: 02feaf0f5f50d52418eeb29ec35e8e24d700a27c770c3ecd22971353a553f5beb37ffb704554a097c8e4819e909efdc02663b2b9ed856a7f8193bea8a5202ad0
6
+ metadata.gz: ab36c3b758559543c77678054d6284eabc6b9e6050e864203b12ab2851fe62e3a1d6651091f1210b096859123529b6cb79ccf12a7b790a8efb8a7ac211a314c5
7
+ data.tar.gz: 1e4c6c583436c421e8548f0e757a194bafe36f225203e8dc8394c4a312c64fc92e6cc6eeb148d370c8481485431ac658ccd1e81a9849805f08d631a7e7796edf
@@ -9,15 +9,23 @@ class Tramway::Landing::BlockDecorator < ::Tramway::Core::ApplicationDecorator
9
9
  def list_attributes
10
10
  %i[page_title position view_state block_type]
11
11
  end
12
+
13
+ def show_associations
14
+ [ :forms ]
15
+ end
12
16
 
13
17
  delegate :human_view_state_event_name, to: :model_class
14
18
  end
15
19
 
20
+ decorate_association :forms
21
+
16
22
  delegate_attributes :position, :title, :background, :anchor, :description, :view_name
17
23
 
18
24
  def public_path
19
25
  if object.published?
20
- Tramway::Page::Engine.routes.url_helpers.page_path slug: object.page.slug
26
+ if object.page.slug.present?
27
+ Tramway::Page::Engine.routes.url_helpers.page_path slug: object.page.slug
28
+ end
21
29
  else
22
30
  Tramway::Page::Engine.routes.url_helpers.preview_path id: object.page.id
23
31
  end
@@ -39,10 +47,6 @@ class Tramway::Landing::BlockDecorator < ::Tramway::Core::ApplicationDecorator
39
47
  "##{object.anchor}"
40
48
  end
41
49
 
42
- def form_url
43
- object.values['form_url']
44
- end
45
-
46
50
  def view_state_button_color(event)
47
51
  case event
48
52
  when :publish
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Tramway::Landing::FormDecorator < ::Tramway::Core::ApplicationDecorator
4
+ delegate_attributes :title, :form_name, :url
5
+ end
@@ -0,0 +1,9 @@
1
+ class Tramway::Landing::Navbar::LinkDecorator < Tramway::Core::ApplicationDecorator
2
+ def title
3
+ object[:title]
4
+ end
5
+
6
+ def link
7
+ object[:link]
8
+ end
9
+ end
@@ -4,7 +4,7 @@ class Admin::Tramway::Landing::BlockForm < ::Tramway::Core::ExtendedApplicationF
4
4
  association :page
5
5
 
6
6
  properties :title, :background, :view_state_event, :block_type, :position, :navbar_link, :anchor, :description,
7
- :link_object_type, :link_object_id, :button_title, :button_link, :view_name, :form_url
7
+ :link_object_type, :link_object_id, :button_title, :button_link, :view_name
8
8
 
9
9
  def initialize(object = nil)
10
10
  super(object).tap do
@@ -23,8 +23,7 @@ class Admin::Tramway::Landing::BlockForm < ::Tramway::Core::ExtendedApplicationF
23
23
  description: :ckeditor,
24
24
  button_title: :string,
25
25
  button_link: :string,
26
- view_name: :string,
27
- form_url: :string
26
+ view_name: :string
28
27
  end
29
28
  end
30
29
  end
@@ -0,0 +1,15 @@
1
+ class Admin::Tramway::Landing::FormForm < Tramway::Core::ApplicationForm
2
+ association :block
3
+
4
+ properties :title, :url, :form_name, :position
5
+
6
+ def initialize(object)
7
+ super(object).tap do
8
+ form_properties block: :association,
9
+ title: :string,
10
+ url: :string,
11
+ form_name: :default,
12
+ position: :integer
13
+ end
14
+ end
15
+ end
@@ -5,6 +5,12 @@ module Tramway
5
5
  module ApplicationHelper
6
6
  include Tramway::Admin::RussianCasesHelper
7
7
  include Tramway::Profiles::LinksHelper if defined?(::Tramway::Profiles)
8
+
9
+ def actual_forms(forms)
10
+ forms = forms.select { |f| f.form_name != 'user_sign_up' } if @signed_in
11
+ forms = forms.select { |f| f.form_name != 'user_sign_in' } if @signed_in
12
+ forms
13
+ end
8
14
  end
9
15
  end
10
16
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  class Tramway::Landing::Block < ::Tramway::Landing::ApplicationRecord
4
4
  belongs_to :page, class_name: 'Tramway::Page::Page'
5
+ has_many :forms, -> { order(position: :asc) }, class_name: 'Tramway::Landing::Form'
5
6
 
6
7
  enumerize :block_type, in: %i[header header_with_form footer page cards features contacts link page_with_button just_text view]
7
8
  enumerize :navbar_link, in: %i[exist not_exist], default: :not_exist
@@ -22,7 +23,6 @@ class Tramway::Landing::Block < ::Tramway::Landing::ApplicationRecord
22
23
  end
23
24
  end
24
25
 
25
- store_accessor :values, :form_url
26
26
  store_accessor :button, :button_link
27
27
  store_accessor :button, :button_title
28
28
 
@@ -0,0 +1,5 @@
1
+ class Tramway::Landing::Form < ApplicationRecord
2
+ belongs_to :block, class_name: 'Tramway::Landing::Block'
3
+
4
+ enumerize :form_name, in: (Dir[Rails.root.join('app', 'forms', 'public', '**')].map { |f| f.split('/').last.gsub('_form.rb', '') })
5
+ end
@@ -4,15 +4,13 @@
4
4
  - if @links&.any?
5
5
  = fa_icon :bars
6
6
  .collapse.navbar-collapse#navbarSupportedContent
7
- - if @links&.any?
7
+ - left_links = @links.is_a?(Hash) ? @links[:left] : @links
8
+ - if left_links&.any?
8
9
  %ul.navbar-nav.mr-auto
9
- - @links.each do |link|
10
- - if link.is_a? Hash
11
- .nav-item.dropdown
12
- %a.nav-link.dropdown-toggle{ id: "dropdown_menu_button_#{link.keys.first}", aria: { expanded: :false, haspopup: :true }, data: { toggle: :dropdown } }
13
- = t(".#{link.keys.first}")
14
- .dropdown-menu.dropdown-primary{ aria: { labelledby: "dropdown_menu_button_#{link.keys.first}" } }
15
- - link.values.first.each do |menu_item|
16
- = link_to menu_item.title, menu_item.link, class: 'dropdown-item'
17
- - else
18
- = menu_item link.title, link.link
10
+ - left_links.each do |link|
11
+ = render 'layouts/tramway/landing/navbar/link', link: link
12
+ - right_links = @links.is_a?(Hash) ? @links.dig(:right) : []
13
+ - if right_links&.any?
14
+ %ul.navbar-nav.ml-auto
15
+ - right_links.each do |link|
16
+ = render 'layouts/tramway/landing/navbar/link', link: link
@@ -0,0 +1,9 @@
1
+ - if link.is_a? Hash
2
+ .nav-item.dropdown
3
+ %a.nav-link.dropdown-toggle{ id: "dropdown_menu_button_#{link.keys.first}", aria: { expanded: :false, haspopup: :true }, data: { toggle: :dropdown } }
4
+ = link.keys.first
5
+ .dropdown-menu.dropdown-primary{ aria: { labelledby: "dropdown_menu_button_#{link.keys.first}" } }
6
+ - link.values.first.each do |menu_item|
7
+ = link_to menu_item.title, menu_item.link, class: 'dropdown-item'
8
+ - else
9
+ = menu_item link.title, link.link
@@ -14,23 +14,52 @@
14
14
  %p.mb-4.d-none.d-md-block
15
15
  %strong
16
16
  = @page&.body || @application.short_description
17
- .col-md-6.col-xl-5.mb-4
18
- - if params[:flash] == 'success'
19
- = render 'tramway/landing/templates/alert', alert_type: :success do
20
- Sign up successful!
21
- - if params[:flash] == 'error'
22
- = render 'tramway/landing/templates/alert', alert_type: :danger do
23
- There is some errors
24
- .card
25
- .card-body
26
- - raise 'Initialize @header_with_form in a controller with something like that `@header_with_form = UserSignUpForm.new User.new`. `User` is your model which you want to Sign Up' unless defined?(@header_with_form)
27
- = simple_form_for @header_with_form, url: block.form_url, method: :post, input_html: { class: 'form-vertical' } do |f|
17
+ - forms = actual_forms(block.forms)
18
+ - if forms.any?
19
+ .col-md-6.col-xl-5.mb-4
20
+ - if params[:flash] == 'success_user_sign_up'
21
+ = render 'tramway/landing/templates/alert', alert_type: :success do
22
+ Sign up successful!
23
+ - if params[:flash] == 'success_user_sign_in'
24
+ = render 'tramway/landing/templates/alert', alert_type: :success do
25
+ Sign In successful!
26
+ - if params[:flash] == 'error_user_sign_up'
27
+ = render 'tramway/landing/templates/alert', alert_type: :danger do
28
+ There is some errors
29
+ - if params[:flash] == 'error_user_sign_in'
30
+ = render 'tramway/landing/templates/alert', alert_type: :danger do
31
+ There is some errors
32
+ .card
33
+ .card-body
34
+ - raise 'Initialize @header_with_form in a controller with something like that `@header_with_form = UserSignUpForm.new User.new`. `User` is your model which you want to Sign Up' unless defined?(@header_with_form)
28
35
  %h3.dark-grey-text.text-center
29
- %strong
30
- = block.title
36
+ - forms.each_with_index do |form, index|
37
+ - unless index == 0
38
+ |
39
+ = link_to '#', class: :form_activation_link, id: form.id do
40
+ %strong
41
+ = form.title
31
42
  %hr
32
- = hidden_field_tag :model, 'User'
33
- = hidden_field_tag :redirect, request.path
34
- - @header_with_form.properties.each do |property|
35
- = render 'tramway/core/shared/input', property: property[0], object: :record, type: property[1], form: f, destination: :landing, record: @header_with_form, value: (params[:record].present? ? params[:record][property[0]] : '')
36
- = f.button :submit, @header_with_form.submit_message
43
+ - forms.each do |form|
44
+ - current_form = @header_with_form[form.form_name]
45
+ = simple_form_for current_form, url: form.url, method: :post, input_html: { class: "form-vertical form_#{form.id} header_with_form" }, html: { class: "form_#{form.id} header_with_form" } do |f|
46
+ = hidden_field_tag :model, @header_with_form[form.form_name].model.class.to_s
47
+ = hidden_field_tag :success_redirect, request.path
48
+ = hidden_field_tag :error_redirect, request.path
49
+ - current_form.properties.each do |property|
50
+ = render 'tramway/core/shared/input', property: property[0], object: :user, type: property[1], form: f, destination: :landing, record: current_form, value: (params[:record].present? ? params[:record][property[0]] : '')
51
+ = f.button :submit, current_form.submit_message
52
+ :javascript
53
+ $(document).ready(function() {
54
+ $("form.header_with_form").each(function(index) {
55
+ if (index != 0) {
56
+ $(this).hide();
57
+ }
58
+ });
59
+ $('a.form_activation_link').click(function() {
60
+ $("form.header_with_form").each(function() {
61
+ $(this).hide();
62
+ });
63
+ $(`form.form_${$(this).first()[0].id}`).show();
64
+ });
65
+ });
@@ -19,10 +19,16 @@ ru:
19
19
  button_link: Ссылка кнопки (только для Типа блока "Свободный блок с кнопкой")
20
20
  view_name: Название вьюхи
21
21
  button: Наименование кнопки
22
+ tramway/landing/form:
23
+ title: Название формы
24
+ form_name: Класс формы
22
25
  cases:
23
26
  tramway/landing/block:
24
27
  plural: Блоки
25
28
  genitive: блок
29
+ tramway/landing/form:
30
+ plural: Публичные формы
31
+ genitive: публичную форму
26
32
  enumerize:
27
33
  tramway/landing/block:
28
34
  block_type:
@@ -25,6 +25,8 @@ module Tramway::Landing::Generators
25
25
  add_view_name_to_tramway_landing_blocks
26
26
  add_values_to_tramway_landing_blocks
27
27
  add_page_id_to_tramway_landing_blocks
28
+ create_tramway_landing_forms
29
+ create_tramway_landing_blocks_forms
28
30
  ]
29
31
 
30
32
  migrations.each do |migration|
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CreateTramwayLandingBlocksForms < ActiveRecord::Migration[5.1]
4
+ def change
5
+ create_table :tramway_landing_blocks_forms do |t|
6
+ t.integer :block_id
7
+ t.integer :form_id
8
+ t.text :state
9
+
10
+ t.timestamps
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CreateTramwayLandingForms < ActiveRecord::Migration[5.1]
4
+ def change
5
+ create_table :tramway_landing_forms do |t|
6
+ t.text :title
7
+ t.text :form_name
8
+ t.text :state, default: :active
9
+
10
+ t.timestamps
11
+ end
12
+ end
13
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Tramway
4
4
  module Landing
5
- VERSION = '3.0.3'
5
+ VERSION = '3.1'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tramway-landing
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.3
4
+ version: '3.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - moshinaan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-22 00:00:00.000000000 Z
11
+ date: 2020-05-01 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Landing Engine for your Rails projects
14
14
  email:
@@ -35,19 +35,23 @@ files:
35
35
  - app/decorators/tramway/landing/block_types/cards_decorator.rb
36
36
  - app/decorators/tramway/landing/block_types/features_decorator.rb
37
37
  - app/decorators/tramway/landing/block_types/page_with_button_decorator.rb
38
- - app/decorators/tramway/landing/link_decorator.rb
38
+ - app/decorators/tramway/landing/form_decorator.rb
39
+ - app/decorators/tramway/landing/navbar/link_decorator.rb
39
40
  - app/decorators/tramway/landing/navbar_decorator.rb
40
41
  - app/forms/admin/tramway/landing/block_form.rb
42
+ - app/forms/admin/tramway/landing/form_form.rb
41
43
  - app/helpers/tramway/landing/application_helper.rb
42
44
  - app/jobs/tramway/landing/application_job.rb
43
45
  - app/mailers/tramway/landing/application_mailer.rb
44
46
  - app/models/tramway/landing/application_record.rb
45
47
  - app/models/tramway/landing/block.rb
48
+ - app/models/tramway/landing/form.rb
46
49
  - app/uploaders/tramway/landing/photo_versions.rb
47
50
  - app/views/layouts/tramway/landing/_meta.html.haml
48
51
  - app/views/layouts/tramway/landing/_navbar.html.haml
49
52
  - app/views/layouts/tramway/landing/_yandex_metrika.html.haml
50
53
  - app/views/layouts/tramway/landing/application.html.haml
54
+ - app/views/layouts/tramway/landing/navbar/_link.html.haml
51
55
  - app/views/tramway/landing/blocks/block_types/_cards.html.haml
52
56
  - app/views/tramway/landing/blocks/block_types/_contacts.html.haml
53
57
  - app/views/tramway/landing/blocks/block_types/_features.html.haml
@@ -88,6 +92,8 @@ files:
88
92
  - lib/tramway/landing/generates/templates/add_values_to_tramway_landing_blocks.rb
89
93
  - lib/tramway/landing/generates/templates/add_view_name_to_tramway_landing_blocks.rb
90
94
  - lib/tramway/landing/generates/templates/create_tramway_landing_blocks.rb
95
+ - lib/tramway/landing/generates/templates/create_tramway_landing_blocks_forms.rb
96
+ - lib/tramway/landing/generates/templates/create_tramway_landing_forms.rb
91
97
  - lib/tramway/landing/version.rb
92
98
  homepage: https://github.com/kalashnikovisme/tramway-landing
93
99
  licenses:
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Tramway::Landing::LinkDecorator < ::Tramway::Core::ApplicationDecorator
4
- def title; end
5
-
6
- def link; end
7
- end