scrivito_crm_form_widget 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 +7 -0
- data/LICENSE +4 -0
- data/Rakefile +21 -0
- data/app/assets/images/form.png +0 -0
- data/app/assets/scripts/scrivito_crm_form_widget.js +1 -0
- data/app/assets/styles/scrivito_crm_form_widget.css +3 -0
- data/app/controllers/scrivito_crm_form_widget/application_controller.rb +4 -0
- data/app/models/crm_form_widget.rb +34 -0
- data/app/presenter/crm_form_presenter.rb +97 -0
- data/app/views/crm_form_widget/_crm_enum.html.erb +13 -0
- data/app/views/crm_form_widget/_crm_multienum.html.erb +13 -0
- data/app/views/crm_form_widget/_crm_string.html.erb +6 -0
- data/app/views/crm_form_widget/_crm_text.html.erb +6 -0
- data/app/views/crm_form_widget/_form.html.erb +12 -0
- data/app/views/crm_form_widget/details.html.erb +39 -0
- data/app/views/crm_form_widget/show.html.erb +7 -0
- data/app/views/crm_form_widget/thumbnail.html.erb +3 -0
- data/lib/scrivito_crm_form_widget.rb +4 -0
- data/lib/scrivito_crm_form_widget/engine.rb +9 -0
- data/lib/scrivito_crm_form_widget/version.rb +3 -0
- data/lib/tasks/scrivito_crm_form_widget_tasks.rake +4 -0
- data/scrivito/migrate/0_create_jr_form_widget.rb +17 -0
- metadata +149 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 8edade64456eba469316b551c719434715441ca6
|
|
4
|
+
data.tar.gz: c1407696c8e8773dbf940ffdd6d235843b29d484
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 67ee4165f8e527e4907641133c77806d64d33cfa8a2d71cf56d159fe28f50da339135d1f47352cadacb46c4c9e05b8634ab36a7242ccce03673b957e5a8aec4c
|
|
7
|
+
data.tar.gz: 1885e496263b4febdb81b191778d3ef531738e907a61216e7fb3f4bd36df77cb6aadb34286aac15a1b7596d9f0b22a6eea2d857abe84bb06fce8d13c973fd78b
|
data/LICENSE
ADDED
data/Rakefile
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
begin
|
|
2
|
+
require 'bundler/setup'
|
|
3
|
+
rescue LoadError
|
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
require 'rdoc/task'
|
|
8
|
+
|
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
|
11
|
+
rdoc.title = 'ScrivitoJrFormWidget'
|
|
12
|
+
rdoc.options << '--line-numbers'
|
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
Bundler::GemHelper.install_tasks
|
|
21
|
+
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//= require scrivito_advanced_editors
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
class CrmFormWidget < Widget
|
|
2
|
+
include Crm
|
|
3
|
+
|
|
4
|
+
attribute :activity_id, :string
|
|
5
|
+
attribute :event_id, :string
|
|
6
|
+
attribute :subject, :string
|
|
7
|
+
attribute :tags, :string
|
|
8
|
+
attribute :redirect_to, :reference
|
|
9
|
+
attribute :submit_button_text, :string
|
|
10
|
+
|
|
11
|
+
def self.activities
|
|
12
|
+
Obj.try(:crm_activity_filter) || Crm::Type.all.select {|i| i.item_base_type == "Activity"}
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def attributes
|
|
16
|
+
activity.attribute_definitions
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def activity
|
|
20
|
+
Crm::Type.find(activity_id)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def activity_id?
|
|
24
|
+
self.activity_id != ""
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def submit_button
|
|
28
|
+
submit_button_text.present? ? submit_button_text : "send"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.events
|
|
32
|
+
Obj.try(:crm_activity_filter) || Crm::Event.all.to_a
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
class CrmFormPresenter < CrmFormAttributes
|
|
2
|
+
|
|
3
|
+
def attribute_names
|
|
4
|
+
@type.standard_attrs.keys + @type.custom_attrs.keys
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def initialize(widget, request, controller)
|
|
8
|
+
@widget = widget
|
|
9
|
+
@activity = widget.activity
|
|
10
|
+
@page = widget.obj
|
|
11
|
+
@params = request.params["crm_form_presenter"]
|
|
12
|
+
|
|
13
|
+
if request.post?
|
|
14
|
+
redirect_after_submit(controller, widget, self.submit)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def submit
|
|
19
|
+
contact = nil
|
|
20
|
+
|
|
21
|
+
if @params['custom_email'] && @params['custom_last_name']
|
|
22
|
+
contact = manipulate_or_create_user
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
if contact
|
|
26
|
+
set_params_for_activty(contact)
|
|
27
|
+
add_contact_to_event(contact) if @widget.event_id.present?
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
@params["title"] = @params[:title].empty? ? @activity.id : @params[:title]
|
|
31
|
+
@params["type_id"] = @activity.id
|
|
32
|
+
@params["state"] = @activity.attributes['states'].first
|
|
33
|
+
|
|
34
|
+
activity = Crm::Activity.create(@params)
|
|
35
|
+
|
|
36
|
+
return {status: "success", message: "Your form was send successfully"}
|
|
37
|
+
rescue Crm::Errors::InvalidValues => e
|
|
38
|
+
return {status: "error", message: e.validation_errors}
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
private
|
|
42
|
+
def manipulate_or_create_user
|
|
43
|
+
contact = Crm::Contact.where(:email, :equals, @params['custom_email']).and(:last_name, :equals, @params['custom_last_name']).first
|
|
44
|
+
unless contact
|
|
45
|
+
contact = Crm::Contact.create({
|
|
46
|
+
first_name: @params['custom_first_name'],
|
|
47
|
+
last_name: @params['custom_last_name'],
|
|
48
|
+
email: @params['custom_email'],
|
|
49
|
+
language: 'de'
|
|
50
|
+
})
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
add_tags_to(contact)
|
|
54
|
+
|
|
55
|
+
return contact
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def add_contact_to_event(contact)
|
|
59
|
+
Crm::EventContact.create({
|
|
60
|
+
contact_id: contact.id,
|
|
61
|
+
event_id: @widget.event_id,
|
|
62
|
+
state: 'registered'
|
|
63
|
+
})
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def add_tags_to(contact)
|
|
67
|
+
if @widget.tags
|
|
68
|
+
tags = contact.tags + @widget.tags.split("|")
|
|
69
|
+
contact.update({tags: tags})
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def set_params_for_activty(contact)
|
|
74
|
+
if @params["title"] == ""
|
|
75
|
+
@params["title"] = @activity.id
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
@params["contact_ids"] = contact.id
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def redirect_path(page, widget)
|
|
82
|
+
obj = redirect_obj(page, widget)
|
|
83
|
+
obj.binary? ? obj.try(:binary_url) : "/#{obj.id}"
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def redirect_obj(page, widget)
|
|
87
|
+
(widget.respond_to?('redirect_to') && widget.redirect_to.present?) ? widget.redirect_to : page
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def redirect_after_submit(controller, widget, submit_message)
|
|
91
|
+
if submit_message[:status] == "success"
|
|
92
|
+
controller.redirect_to(redirect_path(@page, widget), notice: submit_message[:message])
|
|
93
|
+
elsif submit_message[:status] == "error"
|
|
94
|
+
controller.redirect_to("/#{@page.id}", alert: submit_message[:message])
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<div class="form-group">
|
|
2
|
+
<%= form.label name.to_sym, class: "control-label col-sm-3 #{options[:mandatory] ? 'mandatory' : ''}" %>
|
|
3
|
+
<div class="col-sm-9">
|
|
4
|
+
<% options['valid_values'].each do |value| %>
|
|
5
|
+
<div class="radio">
|
|
6
|
+
<%= form.label "#{name}_#{value.downcase}" do %>
|
|
7
|
+
<%= form.radio_button name.to_sym, value %>
|
|
8
|
+
<%= t("helpers.label.crm_form_presenter.#{name}_option.#{value.downcase}") %>
|
|
9
|
+
<% end %>
|
|
10
|
+
</div>
|
|
11
|
+
<% end %>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<div class="form-group">
|
|
2
|
+
<%= form.label name.to_sym, class: "control-label col-sm-3 #{options[:mandatory] ? 'mandatory' : ''}" %>
|
|
3
|
+
<div class="col-sm-9">
|
|
4
|
+
<% options['valid_values'].each do |value| %>
|
|
5
|
+
<div class="^checkbox">
|
|
6
|
+
<%= form.label "#{name}_#{value.downcase}" do %>
|
|
7
|
+
<%= form.check_box name.to_sym, value %>
|
|
8
|
+
<%= t("helpers.label.crm_form_presenter.#{name}_option.#{value.downcase}") %>
|
|
9
|
+
<% end %>
|
|
10
|
+
</div>
|
|
11
|
+
<% end %>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<%= form_for CrmFormPresenter.new(widget, request, controller), url: scrivito_path(widget.obj), html: { class: "form-horizontal"} do |form| %>
|
|
2
|
+
<% if widget.subject %>
|
|
3
|
+
<%= form.hidden_field(:title, value: widget.subject) %>
|
|
4
|
+
<% end %>
|
|
5
|
+
|
|
6
|
+
<% widget.attributes.each do |name, options| %>
|
|
7
|
+
<%= render "crm_form_widget/crm_#{options["attribute_type"]}", form: form, name: name, options: options %>
|
|
8
|
+
<% end %>
|
|
9
|
+
|
|
10
|
+
<%= form.submit widget.submit_button, class: "btn btn-primary pull-right" %>
|
|
11
|
+
|
|
12
|
+
<% end %>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<div class="details-view">
|
|
2
|
+
<ul class="tab-list">
|
|
3
|
+
<li class="active" data-panel-target="#edit-general">General</li>
|
|
4
|
+
<li data-panel-target="#edit-tags">Tags</li>
|
|
5
|
+
<li data-panel-target="#edit-activity">Activity</li>
|
|
6
|
+
<li data-panel-target="#edit-event">Event</li>
|
|
7
|
+
</ul>
|
|
8
|
+
|
|
9
|
+
<div class="tab-panels">
|
|
10
|
+
<div class="tab-panel" id="edit-general">
|
|
11
|
+
<h4>Subject</h4>
|
|
12
|
+
<%= scrivito_tag :div, widget, :subject %>
|
|
13
|
+
<h4>Redirect after submit</h4>
|
|
14
|
+
<%= scrivito_tag :div, widget, :redirect_to %>
|
|
15
|
+
|
|
16
|
+
<h4>Text on submitbutton</h4>
|
|
17
|
+
<%= scrivito_tag :div, widget, :submit_button_text %>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<div class="tab-panel" id="edit-tags">
|
|
21
|
+
<h4>Tags for Contact <abbr title="optional attribute. can be used to add tags to a contact like has_visited_event. contatc will be calculated by the custom attributes email and last_name of your selected activtiy. If this fields do not exist, this field has no effect." class="initialism"></abbr></h4>
|
|
22
|
+
<%= scrivito_tag :div, widget, :tags, data: {editor: 'scrivito-list-editor'} %>
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
<div class="tab-panel" id="edit-activity">
|
|
26
|
+
<h4>Activity</h4>
|
|
27
|
+
<%= scrivito_toggle_button_editor widget, :activity_id, CrmFormWidget.activities.map { |a| a.id } %>
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
<div class="tab-panel" id="edit-event">
|
|
31
|
+
<h4>Activity</h4>
|
|
32
|
+
<%= scrivito_toggle_button_editor widget, :event_id, CrmFormWidget.events do |event|
|
|
33
|
+
scrivito_tag(:button, widget, :event_id, data: {editor: 'scrivito-toggle-button', content: event.id}) do
|
|
34
|
+
event.name
|
|
35
|
+
end
|
|
36
|
+
end %>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
class CreateJrFormWidget < ::Scrivito::Migration
|
|
2
|
+
def up
|
|
3
|
+
Scrivito::ObjClass.create(
|
|
4
|
+
name: 'JrFormWidget',
|
|
5
|
+
type: 'publication',
|
|
6
|
+
title: 'Just Relate Fromular Widget',
|
|
7
|
+
attributes: [
|
|
8
|
+
{name: "activity_id", type: "string"},
|
|
9
|
+
{name: "event_id", type: "string"},
|
|
10
|
+
{name: "subject", type: "string"},
|
|
11
|
+
{name: "tags", type: "string"},
|
|
12
|
+
{name: "redirect_to", type: "reference"},
|
|
13
|
+
{name: "submit_button_text", type: "string"},
|
|
14
|
+
]
|
|
15
|
+
)
|
|
16
|
+
end
|
|
17
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: scrivito_crm_form_widget
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Scrivito
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2015-05-15 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: bundler
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: scrivito_sdk
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: scrivito_advanced_editors
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: active_attr
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: infopark_webcrm_sdk
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :runtime
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: rake
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
97
|
+
description: A widget for Scrivito to show a form using Infopark CRM api v2.0.
|
|
98
|
+
email:
|
|
99
|
+
- support@scrivito.com
|
|
100
|
+
executables: []
|
|
101
|
+
extensions: []
|
|
102
|
+
extra_rdoc_files: []
|
|
103
|
+
files:
|
|
104
|
+
- LICENSE
|
|
105
|
+
- Rakefile
|
|
106
|
+
- app/assets/images/form.png
|
|
107
|
+
- app/assets/scripts/scrivito_crm_form_widget.js
|
|
108
|
+
- app/assets/styles/scrivito_crm_form_widget.css
|
|
109
|
+
- app/controllers/scrivito_crm_form_widget/application_controller.rb
|
|
110
|
+
- app/models/crm_form_widget.rb
|
|
111
|
+
- app/presenter/crm_form_presenter.rb
|
|
112
|
+
- app/views/crm_form_widget/_crm_enum.html.erb
|
|
113
|
+
- app/views/crm_form_widget/_crm_multienum.html.erb
|
|
114
|
+
- app/views/crm_form_widget/_crm_string.html.erb
|
|
115
|
+
- app/views/crm_form_widget/_crm_text.html.erb
|
|
116
|
+
- app/views/crm_form_widget/_form.html.erb
|
|
117
|
+
- app/views/crm_form_widget/details.html.erb
|
|
118
|
+
- app/views/crm_form_widget/show.html.erb
|
|
119
|
+
- app/views/crm_form_widget/thumbnail.html.erb
|
|
120
|
+
- lib/scrivito_crm_form_widget.rb
|
|
121
|
+
- lib/scrivito_crm_form_widget/engine.rb
|
|
122
|
+
- lib/scrivito_crm_form_widget/version.rb
|
|
123
|
+
- lib/tasks/scrivito_crm_form_widget_tasks.rake
|
|
124
|
+
- scrivito/migrate/0_create_jr_form_widget.rb
|
|
125
|
+
homepage: https://www.scrivito.com
|
|
126
|
+
licenses:
|
|
127
|
+
- LGPL-3.0
|
|
128
|
+
metadata: {}
|
|
129
|
+
post_install_message:
|
|
130
|
+
rdoc_options: []
|
|
131
|
+
require_paths:
|
|
132
|
+
- lib
|
|
133
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
134
|
+
requirements:
|
|
135
|
+
- - ">="
|
|
136
|
+
- !ruby/object:Gem::Version
|
|
137
|
+
version: '0'
|
|
138
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
139
|
+
requirements:
|
|
140
|
+
- - ">="
|
|
141
|
+
- !ruby/object:Gem::Version
|
|
142
|
+
version: '0'
|
|
143
|
+
requirements: []
|
|
144
|
+
rubyforge_project:
|
|
145
|
+
rubygems_version: 2.2.2
|
|
146
|
+
signing_key:
|
|
147
|
+
specification_version: 4
|
|
148
|
+
summary: A widget for Scrivito to show a form using Infopark CRM api v2.0.
|
|
149
|
+
test_files: []
|