scrivito_jr_form_widget 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0a06ab0c567c8525acc231eb17ae755f775def41
4
+ data.tar.gz: b33289c2c441f0044f7343d05a869142210e5f49
5
+ SHA512:
6
+ metadata.gz: d1ba1876ca4b22b7a6fb2a8f7b61c35f4873c29d966f8659a768e8c6ce30fff520ef005c5164d618d2add65b70a6008055339e39f96686db69bd9a3811c04c5b
7
+ data.tar.gz: a7d2555d5d60baae5cb83305b4b006f5c52778523d0cdf71f3df09f9e9903399e29dc72dfd212d500d877166ba5b0972ea362ca932433b8af663c0d6b273b3dc
data/LICENSE ADDED
@@ -0,0 +1,4 @@
1
+ Copyright (c) 2009 - 2014 Infopark AG (http://www.infopark.com)
2
+
3
+ This software can be used and modified under the LGPL-3.0. Please refer to
4
+ http://www.gnu.org/licenses/lgpl-3.0.html for the license text.
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,4 @@
1
+ module ScrivitoJrFormWidget
2
+ class ApplicationController < ActionController::Base
3
+ end
4
+ end
@@ -0,0 +1,23 @@
1
+ class JrFormWidget < Widget
2
+ include JustRelate
3
+
4
+ def self.activities
5
+ Obj.try(:jr_activity_filter) || JustRelate::Type.all.to_a
6
+ end
7
+
8
+ def attributes
9
+ activity.attribute_definitions
10
+ end
11
+
12
+ def activity
13
+ JustRelate::Type.find(activity_id)
14
+ end
15
+
16
+ def activity_id?
17
+ self.activity_id != ""
18
+ end
19
+
20
+ def submit_button
21
+ submit_button_text.present? ? submit_button_text : "send"
22
+ end
23
+ end
@@ -0,0 +1,73 @@
1
+ class JrFormPresenter < JrFormAttributes
2
+ def initialize(widget, request, controller)
3
+ @widget = widget
4
+ @activity = widget.activity
5
+ @page = widget.obj
6
+ @params = request.params["jr_form_presenter"]
7
+
8
+ if request.post?
9
+ redirect_after_submit(controller, widget, self.submit)
10
+ end
11
+ end
12
+
13
+ def submit
14
+ contact = manipulate_or_create_user
15
+
16
+ set_params_for_activty(contact)
17
+
18
+ activity = JustRelate::Activity.create(@params)
19
+
20
+ return {status: "success", message: "Your form was send successfully"}
21
+ rescue JustRelate::Errors::InvalidValues => e
22
+ return {status: "error", message: e.validation_errors}
23
+ end
24
+
25
+ private
26
+ def manipulate_or_create_user
27
+ contact = JustRelate::Contact.where(:email, :equals, @params['custom_email']).and(:last_name, :equals, @params['custom_last_name']).first
28
+ unless contact
29
+ contact = JustRelate::Contact.create({
30
+ first_name: @params['custom_first_name'],
31
+ last_name: @params['custom_last_name'],
32
+ email: @params['custom_email'],
33
+ language: 'de'
34
+ })
35
+ end
36
+
37
+ add_tags_to(contact)
38
+
39
+ return contact
40
+ end
41
+
42
+ def add_tags_to(contact)
43
+ tags = contact.tags + @widget.tags.split("|")
44
+ contact.update({tags: tags})
45
+ end
46
+
47
+ def set_params_for_activty(contact)
48
+ if @params["title"] == ""
49
+ @params["title"] = @activity.id
50
+ end
51
+
52
+ @params["contact_ids"] = contact.id
53
+ @params["type_id"] = @activity.id
54
+ @params["state"] = 'created'
55
+ end
56
+
57
+ def redirect_path(page, widget)
58
+ obj = redirect_obj(page, widget)
59
+ obj.binary? ? obj.try(:binary_url) : "/#{obj.id}"
60
+ end
61
+
62
+ def redirect_obj(page, widget)
63
+ (widget.respond_to?('redirect_to') && widget.redirect_to.present?) ? widget.redirect_to : page
64
+ end
65
+
66
+ def redirect_after_submit(controller, widget, submit_message)
67
+ if submit_message[:status] == "success"
68
+ controller.redirect_to(redirect_path(@page, widget), notice: submit_message[:message])
69
+ elsif submit_message[:status] == "error"
70
+ controller.redirect_to("/#{@page.id}", alert: submit_message[:message])
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,12 @@
1
+ <%= form_for JrFormPresenter.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 "jr_form_widget/jr_#{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 %>
File without changes
File without changes
@@ -0,0 +1,6 @@
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
+ <%= form.text_field name.to_sym, class: "form-control" %>
5
+ </div>
6
+ </div>
@@ -0,0 +1,6 @@
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
+ <%= form.text_area name.to_sym, class: "form-control" %>
5
+ </div>
6
+ </div>
@@ -0,0 +1,29 @@
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
+ </ul>
7
+
8
+ <div class="tab-panels">
9
+ <div class="tab-panel" id="edit-general">
10
+ <h4>Subject</h4>
11
+ <%= scrivito_tag :div, widget, :subject %>
12
+ <h4>Redirect after submit</h4>
13
+ <%= scrivito_tag :div, widget, :redirect_to %>
14
+
15
+ <h4>Text on submitbutton</h4>
16
+ <%= scrivito_tag :div, widget, :submit_button_text %>
17
+ </div>
18
+
19
+ <div class="tab-panel" id="edit-tags">
20
+ <h4>Tags <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>
21
+ <%= scrivito_tag :div, widget, :tags, data: {editor: 'scrivito-list-editor'} %>
22
+ </div>
23
+
24
+ <div class="tab-panel" id="edit-activity">
25
+ <h4>Activity</h4>
26
+ <%= scrivito_toggle_button_editor widget, :activity_id, JrFormWidget.activities.map { |a| a.id } %>
27
+ </div>
28
+ </div>
29
+ </div>
@@ -0,0 +1,7 @@
1
+ <% if widget.activity_id? %>
2
+ <%= render 'jr_form_widget/form', widget: widget %>
3
+ <% else %>
4
+ <div class="alert alert-warning">
5
+ Select an activty add the details view.
6
+ </div>
7
+ <% end %>
@@ -0,0 +1,11 @@
1
+ <div class="scrivito_editing_widget_visualization">
2
+ <%= image_tag("form.png") %>
3
+ </div>
4
+
5
+ <div class="scrivito_editing_widget_title">
6
+ Just Relate Form Widget
7
+ </div>
8
+
9
+ <div class="scrivito_editing_widget_description">
10
+ Add a formular to your page based on an activty from just relate CRM.
11
+ </div>
@@ -0,0 +1,5 @@
1
+ module ScrivitoJrFormWidget
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace ScrivitoJrFormWidget
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ module ScrivitoJrFormWidget
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,4 @@
1
+ require "scrivito_jr_form_widget/engine"
2
+
3
+ module ScrivitoJrFormWidget
4
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :scrivito_jr_form_widget do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,16 @@
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: "subject", type: "string"},
10
+ {name: "tags", type: "string"},
11
+ {name: "redirect_to", type: "reference"},
12
+ {name: "submit_button_text", type: "string"}
13
+ ]
14
+ )
15
+ end
16
+ end
metadata ADDED
@@ -0,0 +1,119 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: scrivito_jr_form_widget
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Scrivito
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-25 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: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: A widget for Scrivito to show a form using just relate api.
70
+ email:
71
+ - support@scrivito.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - LICENSE
77
+ - Rakefile
78
+ - app/assets/images/form.png
79
+ - app/controllers/scrivito_jr_form_widget/application_controller.rb
80
+ - app/models/jr_form_widget.rb
81
+ - app/presenter/jr_form_presenter.rb
82
+ - app/views/jr_form_widget/_form.html.erb
83
+ - app/views/jr_form_widget/_jr_enum.html.erb
84
+ - app/views/jr_form_widget/_jr_multienum.ht.erb
85
+ - app/views/jr_form_widget/_jr_string.html.erb
86
+ - app/views/jr_form_widget/_jr_text.html.erb
87
+ - app/views/jr_form_widget/details.html.erb
88
+ - app/views/jr_form_widget/show.html.erb
89
+ - app/views/jr_form_widget/thumbnail.html.erb
90
+ - lib/scrivito_jr_form_widget.rb
91
+ - lib/scrivito_jr_form_widget/engine.rb
92
+ - lib/scrivito_jr_form_widget/version.rb
93
+ - lib/tasks/scrivito_jr_form_widget_tasks.rake
94
+ - scrivito/migrate/0_create_jr_form_widget.rb
95
+ homepage: https://www.scrivito.com
96
+ licenses:
97
+ - LGPL-3.0
98
+ metadata: {}
99
+ post_install_message:
100
+ rdoc_options: []
101
+ require_paths:
102
+ - lib
103
+ required_ruby_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ required_rubygems_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ requirements: []
114
+ rubyforge_project:
115
+ rubygems_version: 2.2.2
116
+ signing_key:
117
+ specification_version: 4
118
+ summary: A widget for Scrivito to show a form using just relate api.
119
+ test_files: []