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.
Files changed (35) hide show
  1. data/CDDL-LICENSE +382 -0
  2. data/README.rdoc +2 -1
  3. data/lib/assets/javascripts/dynamite.js +1 -1
  4. data/lib/assets/javascripts/dynamite/dynamite.jquery.js +201 -0
  5. data/lib/assets/javascripts/dynamite/email.dynamite.jquery.js +14 -0
  6. data/lib/assets/javascripts/dynamite/textarea.dynamite.jquery.js +14 -0
  7. data/lib/assets/javascripts/dynamite/textbox.dynamite.jquery.js +4 -0
  8. data/lib/assets/javascripts/dynamite/tickbox.dynamite.jquery.js +14 -0
  9. data/lib/default_partials/_email.html.erb +13 -0
  10. data/lib/default_partials/_textarea.html.erb +13 -0
  11. data/lib/default_partials/_textbox.html.erb +13 -0
  12. data/lib/default_partials/_tickbox.html.erb +13 -0
  13. data/lib/dynamite.rb +63 -0
  14. data/lib/dynamite/version.rb +1 -1
  15. data/lib/generators/install/templates/app/assets/stylesheets/dynamite.css +34 -0
  16. data/lib/generators/install/templates/app/assets/stylesheets/scaffolds.css.scss +56 -0
  17. data/lib/generators/install/templates/app/controllers/form_submissions_controller.rb +83 -0
  18. data/lib/generators/install/templates/app/controllers/forms_controller.rb +83 -0
  19. data/lib/generators/install/templates/app/models/form.rb +37 -0
  20. data/lib/generators/install/templates/app/models/form_schema.rb +3 -0
  21. data/lib/generators/install/templates/app/models/form_submission.rb +58 -0
  22. data/lib/generators/install/templates/app/models/form_var.rb +3 -0
  23. data/lib/generators/install/templates/app/views/form_submissions/_form.html.erb +21 -0
  24. data/lib/generators/install/templates/app/views/form_submissions/edit.html.erb +6 -0
  25. data/lib/generators/install/templates/app/views/form_submissions/index.html.erb +24 -0
  26. data/lib/generators/install/templates/app/views/form_submissions/new.html.erb +5 -0
  27. data/lib/generators/install/templates/app/views/form_submissions/show.html.erb +10 -0
  28. data/lib/generators/install/templates/app/views/forms/_form.html.erb +25 -0
  29. data/lib/generators/install/templates/app/views/forms/edit.html.erb +6 -0
  30. data/lib/generators/install/templates/app/views/forms/index.html.erb +23 -0
  31. data/lib/generators/install/templates/app/views/forms/new.html.erb +5 -0
  32. data/lib/generators/install/templates/app/views/forms/show.html.erb +15 -0
  33. data/lib/generators/install/templates/db/migrate/install_dynamite.rb +28 -0
  34. metadata +43 -8
  35. data/MIT-LICENSE +0 -20
@@ -0,0 +1,14 @@
1
+
2
+ (function(){
3
+ var type = new DynamiteType();
4
+
5
+ type.name = function(){
6
+ return "email";
7
+ };
8
+
9
+ type.previewHtml = function(){
10
+ return "<input type=\"text\" value=\"(email)\" disabled />";
11
+ };
12
+
13
+ Dynamite.addType(type);
14
+ })();
@@ -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,4 @@
1
+
2
+ (function(){
3
+ Dynamite.addType(new DynamiteType());
4
+ })();
@@ -0,0 +1,14 @@
1
+
2
+ (function(){
3
+ var type = new DynamiteType();
4
+
5
+ type.name = function(){
6
+ return "tickbox";
7
+ };
8
+
9
+ type.previewHtml = function(){
10
+ return "<input type=\"checkbox\" disabled /> (tickbox)";
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
@@ -1,3 +1,3 @@
1
1
  module Dynamite
2
- VERSION = "0.0.0"
2
+ VERSION = "0.0.1"
3
3
  end
@@ -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