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