dynamite 0.0.0 → 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.
- data/CDDL-LICENSE +382 -0
- data/README.rdoc +2 -1
- data/lib/assets/javascripts/dynamite.js +1 -1
- data/lib/assets/javascripts/dynamite/dynamite.jquery.js +201 -0
- data/lib/assets/javascripts/dynamite/email.dynamite.jquery.js +14 -0
- data/lib/assets/javascripts/dynamite/textarea.dynamite.jquery.js +14 -0
- data/lib/assets/javascripts/dynamite/textbox.dynamite.jquery.js +4 -0
- data/lib/assets/javascripts/dynamite/tickbox.dynamite.jquery.js +14 -0
- data/lib/default_partials/_email.html.erb +13 -0
- data/lib/default_partials/_textarea.html.erb +13 -0
- data/lib/default_partials/_textbox.html.erb +13 -0
- data/lib/default_partials/_tickbox.html.erb +13 -0
- data/lib/dynamite.rb +63 -0
- data/lib/dynamite/version.rb +1 -1
- data/lib/generators/install/templates/app/assets/stylesheets/dynamite.css +34 -0
- data/lib/generators/install/templates/app/assets/stylesheets/scaffolds.css.scss +56 -0
- data/lib/generators/install/templates/app/controllers/form_submissions_controller.rb +83 -0
- data/lib/generators/install/templates/app/controllers/forms_controller.rb +83 -0
- data/lib/generators/install/templates/app/models/form.rb +37 -0
- data/lib/generators/install/templates/app/models/form_schema.rb +3 -0
- data/lib/generators/install/templates/app/models/form_submission.rb +58 -0
- data/lib/generators/install/templates/app/models/form_var.rb +3 -0
- data/lib/generators/install/templates/app/views/form_submissions/_form.html.erb +21 -0
- data/lib/generators/install/templates/app/views/form_submissions/edit.html.erb +6 -0
- data/lib/generators/install/templates/app/views/form_submissions/index.html.erb +24 -0
- data/lib/generators/install/templates/app/views/form_submissions/new.html.erb +5 -0
- data/lib/generators/install/templates/app/views/form_submissions/show.html.erb +10 -0
- data/lib/generators/install/templates/app/views/forms/_form.html.erb +25 -0
- data/lib/generators/install/templates/app/views/forms/edit.html.erb +6 -0
- data/lib/generators/install/templates/app/views/forms/index.html.erb +23 -0
- data/lib/generators/install/templates/app/views/forms/new.html.erb +5 -0
- data/lib/generators/install/templates/app/views/forms/show.html.erb +15 -0
- data/lib/generators/install/templates/db/migrate/install_dynamite.rb +28 -0
- metadata +43 -8
- data/MIT-LICENSE +0 -20
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
|
|
2
|
+
(function(){
|
|
3
|
+
var type = new DynamiteType();
|
|
4
|
+
|
|
5
|
+
type.name = function(){
|
|
6
|
+
return "textarea";
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
type.previewHtml = function(){
|
|
10
|
+
return "<textarea cols=\"50\" rows=\"5\" disabled>(textarea)</textarea>";
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
Dynamite.addType(type);
|
|
14
|
+
})();
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<div class="field">
|
|
2
|
+
<% if is_error %>
|
|
3
|
+
<div class="field_with_errors">
|
|
4
|
+
<%= label_tag(input['label'])%>
|
|
5
|
+
</div><br />
|
|
6
|
+
<div class="field_with_errors">
|
|
7
|
+
<%= email_field_tag(name.to_s + "[vars][" + input['label'] + "]", value) %>
|
|
8
|
+
</div>
|
|
9
|
+
<% else %>
|
|
10
|
+
<%= label_tag(input['label'])%><br />
|
|
11
|
+
<%= email_field_tag(name.to_s + "[vars][" + input['label'] + "]", value) %>
|
|
12
|
+
<% end %>
|
|
13
|
+
</div>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<div class="field">
|
|
2
|
+
<% if is_error %>
|
|
3
|
+
<div class="field_with_errors">
|
|
4
|
+
<%= label_tag(input['label'])%>
|
|
5
|
+
</div><br />
|
|
6
|
+
<div class="field_with_errors">
|
|
7
|
+
<%= text_area_tag(name.to_s + "[vars][" + input['label'] + "]", value, :rows => 10, :cols => 50) %>
|
|
8
|
+
</div>
|
|
9
|
+
<% else %>
|
|
10
|
+
<%= label_tag(input['label'])%><br />
|
|
11
|
+
<%= text_area_tag(name.to_s + "[vars][" + input['label'] + "]", value, :rows => 10, :cols => 50) %>
|
|
12
|
+
<% end %>
|
|
13
|
+
</div>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<div class="field">
|
|
2
|
+
<% if is_error %>
|
|
3
|
+
<div class="field_with_errors">
|
|
4
|
+
<%= label_tag(input['label'])%>
|
|
5
|
+
</div><br />
|
|
6
|
+
<div class="field_with_errors">
|
|
7
|
+
<%= text_field_tag(form.object_name.to_s + "[vars][" + input['label'] + "]", value) %>
|
|
8
|
+
</div>
|
|
9
|
+
<% else %>
|
|
10
|
+
<%= label_tag(input['label'])%><br />
|
|
11
|
+
<%= text_field_tag(form.object_name.to_s + "[vars][" + input['label'] + "]", value) %>
|
|
12
|
+
<% end %>
|
|
13
|
+
</div>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<div class="field">
|
|
2
|
+
<% if is_error %>
|
|
3
|
+
<div class="field_with_errors">
|
|
4
|
+
<%= label_tag(input['label'])%>
|
|
5
|
+
</div><br />
|
|
6
|
+
<div class="field_with_errors">
|
|
7
|
+
<%= check_box_tag(name.to_s + "[vars][" + input['label'] + "]", 1, !value.nil?) %>
|
|
8
|
+
</div>
|
|
9
|
+
<% else %>
|
|
10
|
+
<%= label_tag(input['label'])%><br />
|
|
11
|
+
<%= check_box_tag(name.to_s + "[vars][" + input['label'] + "]", 1, !value.nil?) %>
|
|
12
|
+
<% end %>
|
|
13
|
+
</div>
|
data/lib/dynamite.rb
CHANGED
|
@@ -1,3 +1,66 @@
|
|
|
1
1
|
require "dynamite/version"
|
|
2
2
|
require "dynamite/railtie"
|
|
3
3
|
require "dynamite/engine"
|
|
4
|
+
|
|
5
|
+
require 'rails/generators'
|
|
6
|
+
|
|
7
|
+
module Dynamite
|
|
8
|
+
|
|
9
|
+
class InstallGenerator < ::Rails::Generators::Base
|
|
10
|
+
source_root File.expand_path('../generators/install/templates', __FILE__)
|
|
11
|
+
|
|
12
|
+
#Every public method gets executed - which is a bit wierd!
|
|
13
|
+
#the 'do_installation' method could have been called 'fundito', and would have worked just the same
|
|
14
|
+
#check out http://railscasts.com/episodes/218-making-generators-in-rails-3
|
|
15
|
+
def do_installation
|
|
16
|
+
|
|
17
|
+
copy_file "db/migrate/install_dynamite.rb", "db/migrate/#{Time.now.getutc.strftime('%Y%m%d%H%M%S')}_install_dynamite.rb"
|
|
18
|
+
|
|
19
|
+
directory "app/models", "app/models"
|
|
20
|
+
directory "app/controllers", "app/controllers"
|
|
21
|
+
directory "app/views", "app/views"
|
|
22
|
+
|
|
23
|
+
route "resources :forms"
|
|
24
|
+
route "resources :form_submissions"
|
|
25
|
+
|
|
26
|
+
directory "app/assets/stylesheets/", "app/assets/stylesheets"
|
|
27
|
+
|
|
28
|
+
gsub_file 'app/assets/javascripts/application.js', /\Z/m do ||
|
|
29
|
+
"\n//= require dynamite"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
class ActionView::Helpers::FormBuilder
|
|
39
|
+
def dynamite_inputs type_partials = {}
|
|
40
|
+
|
|
41
|
+
dir = File.expand_path('../default_partials', __FILE__)
|
|
42
|
+
|
|
43
|
+
default_partials = {
|
|
44
|
+
:textbox => "#{dir}/_textbox.html.erb",
|
|
45
|
+
:textarea => "#{dir}/_textarea.html.erb",
|
|
46
|
+
:email => "#{dir}/_email.html.erb",
|
|
47
|
+
:tickbox => "#{dir}/_tickbox.html.erb"
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
out = [];
|
|
51
|
+
|
|
52
|
+
JSON.parse(@object.schema)['inputs'].each do |input|
|
|
53
|
+
type = input['type'].to_sym
|
|
54
|
+
value = @object.vars()[input['label']]
|
|
55
|
+
is_error = !@object.errors.get(input['label'].to_sym).nil?
|
|
56
|
+
if !type_partials[type].nil?
|
|
57
|
+
out.push @template.render :partial => partials[type], :locals => {:form => self, :name => @object_name, :input => input, :value => value, :is_error => is_error}
|
|
58
|
+
elsif !default_partials[type].nil?
|
|
59
|
+
out.push @template.render :file => default_partials[type], :locals => {:form => self, :name => @object_name, :input => input, :value => value, :is_error => is_error}
|
|
60
|
+
else
|
|
61
|
+
out.push @template.render :partial => partials[:textbox], :locals => {:form => self, :name => @object_name, :input => input, :value => value, :is_error => is_error}
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
out.join.html_safe;
|
|
65
|
+
end
|
|
66
|
+
end
|
data/lib/dynamite/version.rb
CHANGED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
|
|
2
|
+
.dynamite_editor {
|
|
3
|
+
border-style: dotted;
|
|
4
|
+
border-width: 1px;
|
|
5
|
+
border-color: #000;
|
|
6
|
+
padding: 5px;
|
|
7
|
+
display: inline-block;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.dynamite_editor td {
|
|
11
|
+
font-size: 0.8em;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.dynamite_editor th {
|
|
15
|
+
font-size: 0.8em;
|
|
16
|
+
text-align: left;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.dynamite_editor .button {
|
|
20
|
+
font-size: 0.8em;
|
|
21
|
+
padding: 1px;
|
|
22
|
+
background: #005500;
|
|
23
|
+
text-decoration: none;
|
|
24
|
+
color: #fff;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.dynamite_editor .edit {
|
|
28
|
+
margin-left: 25px;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.dynamite_editor .delete {
|
|
32
|
+
margin-right: 25px;
|
|
33
|
+
}
|
|
34
|
+
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
body {
|
|
2
|
+
background-color: #fff;
|
|
3
|
+
color: #333;
|
|
4
|
+
font-family: verdana, arial, helvetica, sans-serif;
|
|
5
|
+
font-size: 13px;
|
|
6
|
+
line-height: 18px; }
|
|
7
|
+
|
|
8
|
+
p, ol, ul, td {
|
|
9
|
+
font-family: verdana, arial, helvetica, sans-serif;
|
|
10
|
+
font-size: 13px;
|
|
11
|
+
line-height: 18px; }
|
|
12
|
+
|
|
13
|
+
pre {
|
|
14
|
+
background-color: #eee;
|
|
15
|
+
padding: 10px;
|
|
16
|
+
font-size: 11px; }
|
|
17
|
+
|
|
18
|
+
a {
|
|
19
|
+
color: #000;
|
|
20
|
+
&:visited {
|
|
21
|
+
color: #666; }
|
|
22
|
+
&:hover {
|
|
23
|
+
color: #fff;
|
|
24
|
+
background-color: #000; } }
|
|
25
|
+
|
|
26
|
+
div {
|
|
27
|
+
&.field, &.actions {
|
|
28
|
+
margin-bottom: 10px; } }
|
|
29
|
+
|
|
30
|
+
#notice {
|
|
31
|
+
color: green; }
|
|
32
|
+
|
|
33
|
+
.field_with_errors {
|
|
34
|
+
padding: 2px;
|
|
35
|
+
background-color: red;
|
|
36
|
+
display: table; }
|
|
37
|
+
|
|
38
|
+
#error_explanation {
|
|
39
|
+
width: 450px;
|
|
40
|
+
border: 2px solid red;
|
|
41
|
+
padding: 7px;
|
|
42
|
+
padding-bottom: 0;
|
|
43
|
+
margin-bottom: 20px;
|
|
44
|
+
background-color: #f0f0f0;
|
|
45
|
+
h2 {
|
|
46
|
+
text-align: left;
|
|
47
|
+
font-weight: bold;
|
|
48
|
+
padding: 5px 5px 5px 15px;
|
|
49
|
+
font-size: 12px;
|
|
50
|
+
margin: -7px;
|
|
51
|
+
margin-bottom: 0px;
|
|
52
|
+
background-color: #c00;
|
|
53
|
+
color: #fff; }
|
|
54
|
+
ul li {
|
|
55
|
+
font-size: 12px;
|
|
56
|
+
list-style: square; } }
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
class FormSubmissionsController < ApplicationController
|
|
2
|
+
# GET /form_submissions
|
|
3
|
+
# GET /form_submissions.json
|
|
4
|
+
def index
|
|
5
|
+
@form = Form.find(params[:form_id])
|
|
6
|
+
@form_submissions = FormSubmission.joins(:form_schema).where("form_schemas.form_id = ?", @form.id)
|
|
7
|
+
|
|
8
|
+
respond_to do |format|
|
|
9
|
+
format.html # index.html.erb
|
|
10
|
+
format.json { render json: @form_submissions }
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# GET /form_submissions/1
|
|
15
|
+
# GET /form_submissions/1.json
|
|
16
|
+
def show
|
|
17
|
+
@form_submission = FormSubmission.find(params[:id])
|
|
18
|
+
respond_to do |format|
|
|
19
|
+
format.html # show.html.erb
|
|
20
|
+
format.json { render json: @form_submission }
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# GET /form_submissions/new
|
|
25
|
+
# GET /form_submissions/new.json
|
|
26
|
+
def new
|
|
27
|
+
@form_submission = FormSubmission.new
|
|
28
|
+
@form_submission.form_schema_id = Form.find(params[:form_id]).form_schemas.first.id
|
|
29
|
+
|
|
30
|
+
respond_to do |format|
|
|
31
|
+
format.html # new.html.erb
|
|
32
|
+
format.json { render json: @form_submission }
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# GET /form_submissions/1/edit
|
|
37
|
+
def edit
|
|
38
|
+
@form_submission = FormSubmission.find(params[:id])
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# POST /form_submissions
|
|
42
|
+
# POST /form_submissions.json
|
|
43
|
+
def create
|
|
44
|
+
@form_submission = FormSubmission.new(params[:form_submission])
|
|
45
|
+
respond_to do |format|
|
|
46
|
+
if @form_submission.save
|
|
47
|
+
format.html { redirect_to @form_submission, notice: 'Form submission was successfully created.' }
|
|
48
|
+
format.json { render json: @form_submission, status: :created, location: @form_submission }
|
|
49
|
+
else
|
|
50
|
+
format.html { render action: "new" }
|
|
51
|
+
format.json { render json: @form_submission.errors, status: :unprocessable_entity }
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# PUT /form_submissions/1
|
|
57
|
+
# PUT /form_submissions/1.json
|
|
58
|
+
def update
|
|
59
|
+
@form_submission = FormSubmission.find(params[:id])
|
|
60
|
+
|
|
61
|
+
respond_to do |format|
|
|
62
|
+
if @form_submission.update_attributes(params[:form_submission])
|
|
63
|
+
format.html { redirect_to @form_submission, notice: 'Form submission was successfully updated.' }
|
|
64
|
+
format.json { head :ok }
|
|
65
|
+
else
|
|
66
|
+
format.html { render action: "edit" }
|
|
67
|
+
format.json { render json: @form_submission.errors, status: :unprocessable_entity }
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# DELETE /form_submissions/1
|
|
73
|
+
# DELETE /form_submissions/1.json
|
|
74
|
+
def destroy
|
|
75
|
+
@form_submission = FormSubmission.find(params[:id])
|
|
76
|
+
@form_submission.destroy
|
|
77
|
+
|
|
78
|
+
respond_to do |format|
|
|
79
|
+
format.html { redirect_to form_submissions_url }
|
|
80
|
+
format.json { head :ok }
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
class FormsController < ApplicationController
|
|
2
|
+
# GET /forms
|
|
3
|
+
# GET /forms.json
|
|
4
|
+
def index
|
|
5
|
+
@forms = Form.all
|
|
6
|
+
|
|
7
|
+
respond_to do |format|
|
|
8
|
+
format.html # index.html.erb
|
|
9
|
+
format.json { render json: @forms }
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# GET /forms/1
|
|
14
|
+
# GET /forms/1.json
|
|
15
|
+
def show
|
|
16
|
+
@form = Form.find(params[:id])
|
|
17
|
+
|
|
18
|
+
respond_to do |format|
|
|
19
|
+
format.html # show.html.erb
|
|
20
|
+
format.json { render json: @form }
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# GET /forms/new
|
|
25
|
+
# GET /forms/new.json
|
|
26
|
+
def new
|
|
27
|
+
@form = Form.new
|
|
28
|
+
|
|
29
|
+
respond_to do |format|
|
|
30
|
+
format.html # new.html.erb
|
|
31
|
+
format.json { render json: @form }
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# GET /forms/1/edit
|
|
36
|
+
def edit
|
|
37
|
+
@form = Form.find(params[:id])
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# POST /forms
|
|
41
|
+
# POST /forms.json
|
|
42
|
+
def create
|
|
43
|
+
@form = Form.new(params[:form])
|
|
44
|
+
|
|
45
|
+
respond_to do |format|
|
|
46
|
+
if @form.save
|
|
47
|
+
format.html { redirect_to @form, notice: 'Form was successfully created.' }
|
|
48
|
+
format.json { render json: @form, status: :created, location: @form }
|
|
49
|
+
else
|
|
50
|
+
format.html { render action: "new" }
|
|
51
|
+
format.json { render json: @form.errors, status: :unprocessable_entity }
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# PUT /forms/1
|
|
57
|
+
# PUT /forms/1.json
|
|
58
|
+
def update
|
|
59
|
+
@form = Form.find(params[:id])
|
|
60
|
+
|
|
61
|
+
respond_to do |format|
|
|
62
|
+
if @form.update_attributes(params[:form])
|
|
63
|
+
format.html { redirect_to @form, notice: 'Form was successfully updated.' }
|
|
64
|
+
format.json { head :ok }
|
|
65
|
+
else
|
|
66
|
+
format.html { render action: "edit" }
|
|
67
|
+
format.json { render json: @form.errors, status: :unprocessable_entity }
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# DELETE /forms/1
|
|
73
|
+
# DELETE /forms/1.json
|
|
74
|
+
def destroy
|
|
75
|
+
@form = Form.find(params[:id])
|
|
76
|
+
@form.destroy
|
|
77
|
+
|
|
78
|
+
respond_to do |format|
|
|
79
|
+
format.html { redirect_to forms_url }
|
|
80
|
+
format.json { head :ok }
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|