survey_generator 0.1.0 → 0.2.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 +15 -0
- data/lib/generators/survey/USAGE +10 -10
- data/lib/generators/survey/metamodels/survey_metamodel.rb +6 -5
- data/lib/generators/survey/survey_generator.rb +15 -15
- data/lib/generators/survey/templates/app/app.tpl +4 -6
- data/lib/generators/survey/templates/app/assets/assets.tpl +4 -0
- data/lib/generators/survey/templates/app/assets/stylesheets/stylesheet.tpl +188 -183
- data/lib/generators/survey/templates/app/controllers/application_controller.tpl +15 -0
- data/lib/generators/survey/templates/app/controllers/controllers.tpl +7 -0
- data/lib/generators/survey/templates/app/controllers/sessions_controller.tpl +26 -0
- data/lib/generators/survey/templates/app/controllers/static_pages_controller.tpl +20 -0
- data/lib/generators/survey/templates/app/controllers/survey_controller.tpl +0 -19
- data/lib/generators/survey/templates/app/controllers/users_controller.tpl +82 -0
- data/lib/generators/survey/templates/app/helpers/helpers.tpl +5 -0
- data/lib/generators/survey/templates/app/helpers/sessions_helper.tpl +46 -0
- data/lib/generators/survey/templates/app/helpers/users_helper.tpl +14 -0
- data/lib/generators/survey/templates/app/models/models.tpl +6 -0
- data/lib/generators/survey/templates/app/models/question.tpl +10 -0
- data/lib/generators/survey/templates/app/models/survey.tpl +10 -0
- data/lib/generators/survey/templates/app/models/test.tpl +15 -0
- data/lib/generators/survey/templates/app/models/user.tpl +28 -0
- data/lib/generators/survey/templates/app/views/layouts/footer.tpl +2 -2
- data/lib/generators/survey/templates/app/views/layouts/header.tpl +21 -13
- data/lib/generators/survey/templates/app/views/sessions/new.tpl +28 -0
- data/lib/generators/survey/templates/app/views/shared/error_messages.tpl +1 -1
- data/lib/generators/survey/templates/app/views/static_pages/home.tpl +1 -1
- data/lib/generators/survey/templates/app/views/survey/form.tpl +40 -0
- data/lib/generators/survey/templates/app/views/survey/index.tpl +40 -0
- data/lib/generators/survey/templates/app/views/survey/table.tpl +20 -0
- data/lib/generators/survey/templates/app/views/survey/textfield.tpl +21 -0
- data/lib/generators/survey/templates/app/views/users/edit.tpl +19 -0
- data/lib/generators/survey/templates/app/views/users/fields.tpl +24 -0
- data/lib/generators/survey/templates/app/views/users/index.tpl +17 -0
- data/lib/generators/survey/templates/app/views/users/new.tpl +15 -0
- data/lib/generators/survey/templates/app/views/users/show.tpl +15 -0
- data/lib/generators/survey/templates/app/views/users/user.tpl +11 -0
- data/lib/generators/survey/templates/app/views/views.tpl +11 -2
- data/lib/generators/survey/templates/config/routes.tpl +7 -0
- data/lib/generators/survey/templates/db/db.tpl +0 -1
- data/lib/generators/survey/templates/db/migrate/create_questions.tpl +5 -2
- data/lib/generators/survey/templates/db/migrate/create_surveys.tpl +4 -1
- data/lib/generators/survey/templates/db/migrate/create_users.tpl +1 -1
- data/lib/tasks/sample_data.rake +20 -0
- metadata +31 -11
- data/lib/generators/survey/templates/app/models/survey_model.tpl +0 -45
- data/lib/generators/survey/templates/app/views/survey/survey_form_view.tpl +0 -37
- data/lib/generators/survey/templates/app/views/survey/survey_index_view.tpl +0 -38
- data/lib/generators/survey/templates/db/migrate/create_pages.tpl +0 -18
@@ -0,0 +1,15 @@
|
|
1
|
+
<% define 'application_controller', for: Survey do %>
|
2
|
+
<% file "app/controllers/application_controller.rb" do %>
|
3
|
+
class ApplicationController < ActionController::Base<%iinc%>
|
4
|
+
protect_from_forgery
|
5
|
+
include SessionsHelper
|
6
|
+
|
7
|
+
<%nl%>
|
8
|
+
# Force signout to prevent CSRF attacks
|
9
|
+
def handle_unverified request<%iinc%>
|
10
|
+
sign_out
|
11
|
+
super
|
12
|
+
<%idec%>end
|
13
|
+
<%idec%>end
|
14
|
+
<% end %>
|
15
|
+
<% end %>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<% define 'root' do %>
|
2
|
+
<% expand 'survey_controller::survey_controller' %>
|
3
|
+
<% expand 'static_pages_controller::static_pages_controller' %>
|
4
|
+
<% expand 'application_controller::application_controller' %>
|
5
|
+
<% expand 'sessions_controller::sessions_controller' %>
|
6
|
+
<% expand 'users_controller::users_controller' %>
|
7
|
+
<% end %>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<% define 'sessions_controller', for: Survey do %>
|
2
|
+
<% file "app/controllers/sessions_controller.rb" do %>
|
3
|
+
class SessionsController < ApplicationController<%iinc%>
|
4
|
+
def new
|
5
|
+
end
|
6
|
+
|
7
|
+
<%nl%>
|
8
|
+
def create<%iinc%>
|
9
|
+
user = User.find_by_email(params[:email].downcase)
|
10
|
+
if user && user.authenticate(params[:password])<%iinc%>
|
11
|
+
sign_in user
|
12
|
+
redirect_to user
|
13
|
+
<%idec%>else<%iinc%>
|
14
|
+
flash.now[:error] = 'Invalid email/password combination'
|
15
|
+
render 'new'
|
16
|
+
<%idec%>end
|
17
|
+
<%idec%>end
|
18
|
+
|
19
|
+
<%nl%>
|
20
|
+
def destroy<%iinc%>
|
21
|
+
sign_out
|
22
|
+
redirect_to root_url
|
23
|
+
<%idec%>end
|
24
|
+
<%idec%>end
|
25
|
+
<% end %>
|
26
|
+
<% end %>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<% define 'static_pages_controller' do %>
|
2
|
+
<% file "app/controllers/static_pages_controller.rb" do %>
|
3
|
+
class StaticPagesController < ApplicationController<%iinc%>
|
4
|
+
def home<%iinc%>
|
5
|
+
<%idec%>end
|
6
|
+
|
7
|
+
<%nl%>
|
8
|
+
def help<%iinc%>
|
9
|
+
<%idec%>end
|
10
|
+
|
11
|
+
<%nl%>
|
12
|
+
def about<%iinc%>
|
13
|
+
<%idec%>end
|
14
|
+
|
15
|
+
<%nl%>
|
16
|
+
def contact<%iinc%>
|
17
|
+
<%idec%>end
|
18
|
+
<%idec%>end
|
19
|
+
<% end %>
|
20
|
+
<% end %>
|
@@ -5,23 +5,4 @@
|
|
5
5
|
end
|
6
6
|
<%idec%>end
|
7
7
|
<% end %>
|
8
|
-
|
9
|
-
<% file "app/controllers/static_pages_controller.rb" do %>
|
10
|
-
class StaticPagesController < ApplicationController<%iinc%>
|
11
|
-
def home<%iinc%>
|
12
|
-
<%idec%>end
|
13
|
-
|
14
|
-
<%nl%>
|
15
|
-
def help<%iinc%>
|
16
|
-
<%idec%>end
|
17
|
-
|
18
|
-
<%nl%>
|
19
|
-
def about<%iinc%>
|
20
|
-
<%idec%>end
|
21
|
-
|
22
|
-
<%nl%>
|
23
|
-
def contact<%iinc%>
|
24
|
-
<%idec%>end
|
25
|
-
<%idec%>end
|
26
|
-
<% end %>
|
27
8
|
<% end %>
|
@@ -0,0 +1,82 @@
|
|
1
|
+
<% define 'users_controller', for: Survey do %>
|
2
|
+
<% file "app/controllers/users_controller.rb" do %>
|
3
|
+
class UsersController < ApplicationController<%iinc%>
|
4
|
+
before_filter :signed_in_user, only: [:index, :edit, :update, :destroy]
|
5
|
+
before_filter :correct_user, only: [:edit, :update]
|
6
|
+
before_filter :admin_user, only: :destroy
|
7
|
+
|
8
|
+
<%nl%>
|
9
|
+
def index<%iinc%>
|
10
|
+
@users = User.paginate(page: params[:page])
|
11
|
+
<%idec%>end
|
12
|
+
|
13
|
+
<%nl%>
|
14
|
+
def show<%iinc%>
|
15
|
+
@user = User.find(params[:id])
|
16
|
+
<%idec%>end
|
17
|
+
|
18
|
+
<%nl%>
|
19
|
+
def new<%iinc%>
|
20
|
+
if signed_in?<%iinc%>
|
21
|
+
redirect_to root_url
|
22
|
+
<%idec%>else<%iinc%>
|
23
|
+
@user = User.new
|
24
|
+
<%idec%>end
|
25
|
+
<%idec%>end
|
26
|
+
|
27
|
+
<%nl%>
|
28
|
+
def create<%iinc%>
|
29
|
+
if signed_in?<%iinc%>
|
30
|
+
redirect_to root_url
|
31
|
+
<%idec%>else<%iinc%>
|
32
|
+
@user = User.new(params[:user])
|
33
|
+
if @user.save<%iinc%>
|
34
|
+
sign_in @user
|
35
|
+
flash[:success] = "Welcome to the Sample App!"
|
36
|
+
redirect_to @user
|
37
|
+
<%idec%>else<%iinc%>
|
38
|
+
render 'new'
|
39
|
+
<%idec%>end
|
40
|
+
<%idec%>end
|
41
|
+
<%idec%>end
|
42
|
+
|
43
|
+
<%nl%>
|
44
|
+
def edit
|
45
|
+
end
|
46
|
+
|
47
|
+
<%nl%>
|
48
|
+
def update<%iinc%>
|
49
|
+
if @user.update_attributes(params[:user])<%iinc%>
|
50
|
+
flash[:success] = "Profile updated"
|
51
|
+
sign_in @user
|
52
|
+
redirect_to @user
|
53
|
+
<%idec%>else<%iinc%>
|
54
|
+
render 'edit'
|
55
|
+
<%idec%>end
|
56
|
+
<%idec%>end
|
57
|
+
|
58
|
+
<%nl%>
|
59
|
+
def destroy<%iinc%>
|
60
|
+
if current_user.id != params[:id]<%iinc%>
|
61
|
+
User.find(params[:id]).destroy
|
62
|
+
flash[:success] = "User destroyed."
|
63
|
+
<%idec%>end
|
64
|
+
redirect_to users_url
|
65
|
+
<%idec%>end
|
66
|
+
|
67
|
+
<%nl%>
|
68
|
+
private<%iinc%>
|
69
|
+
|
70
|
+
<%nl%>
|
71
|
+
def correct_user<%iinc%>
|
72
|
+
@user = User.find(params[:id])
|
73
|
+
redirect_to(root_path) unless current_user?(@user)
|
74
|
+
<%idec%>end
|
75
|
+
|
76
|
+
<%nl%>
|
77
|
+
def admin_user<%iinc%>
|
78
|
+
redirect_to(root_path) unless current_user.admin?
|
79
|
+
<%idec%>end
|
80
|
+
<%idec%><%idec%>end
|
81
|
+
<% end %>
|
82
|
+
<% end %>
|
@@ -0,0 +1,46 @@
|
|
1
|
+
<% define 'sessions_helper' do %>
|
2
|
+
<% file "app/helpers/sessions_helper.rb" do %>
|
3
|
+
module SessionsHelper<%iinc%>
|
4
|
+
|
5
|
+
<%nl%>
|
6
|
+
def sign_in(user)<%iinc%>
|
7
|
+
cookies.permanent[:remember_token] = user.remember_token
|
8
|
+
self.current_user = user
|
9
|
+
<%idec%>end
|
10
|
+
|
11
|
+
<%nl%>
|
12
|
+
def signed_in?<%iinc%>
|
13
|
+
!current_user.nil?
|
14
|
+
<%idec%>end
|
15
|
+
|
16
|
+
<%nl%>
|
17
|
+
def sign_out<%iinc%>
|
18
|
+
self.current_user = nil
|
19
|
+
cookies.delete(:remember_token)
|
20
|
+
<%idec%>end
|
21
|
+
|
22
|
+
<%nl%>
|
23
|
+
def current_user=(user)<%iinc%>
|
24
|
+
@current_user = user
|
25
|
+
<%idec%>end
|
26
|
+
|
27
|
+
<%nl%>
|
28
|
+
def current_user<%iinc%>
|
29
|
+
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
|
30
|
+
<%idec%>end
|
31
|
+
|
32
|
+
<%nl%>
|
33
|
+
def current_user?(user)<%iinc%>
|
34
|
+
user == current_user
|
35
|
+
<%idec%>end
|
36
|
+
|
37
|
+
<%nl%>
|
38
|
+
def signed_in_user<%iinc%>
|
39
|
+
unless signed_in?<%iinc%>
|
40
|
+
store_location
|
41
|
+
redirect_to signin_url, notice: "Please sign in."
|
42
|
+
<%idec%>end
|
43
|
+
<%idec%>end
|
44
|
+
<%idec%>end
|
45
|
+
<% end %>
|
46
|
+
<% end %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<% define 'users_helper' do %>
|
2
|
+
<% file "app/helpers/users_helper.rb" do %>
|
3
|
+
module UsersHelper<%iinc%>
|
4
|
+
|
5
|
+
<%nl%>
|
6
|
+
#Returns the Gravatar (http:/gravatar.com/) for the given user.
|
7
|
+
def gravatar_for(user, size)<%iinc%>
|
8
|
+
gravatar_id = Digest::MD5::hexdigest(user.email.downcase)
|
9
|
+
gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}?s=#{size}"
|
10
|
+
image_tag(gravatar_url, alt: user.name, class: "gravatar")
|
11
|
+
<%idec%>end
|
12
|
+
<%idec%>end
|
13
|
+
<% end %>
|
14
|
+
<% end %>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<% define 'test', for: Survey do %>
|
2
|
+
<% file "app/models/" + name.downcase + ".rb" do %>
|
3
|
+
class <%= name %> < ActiveRecord::Base<%iinc%>
|
4
|
+
<% questions.each do |question| %>
|
5
|
+
<% if !question.is_a?(PageBreak) %>
|
6
|
+
<% expand 'question', for: question %>
|
7
|
+
<% end %>
|
8
|
+
<% end %>
|
9
|
+
<%idec%>end
|
10
|
+
<% end %>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<% define 'question', for: Question do %>
|
14
|
+
attr_accessible :<%= name %>
|
15
|
+
<% end %>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<% define 'user' do %>
|
2
|
+
<% file "app/models/user.rb" do %>
|
3
|
+
class User < ActiveRecord::Base<%iinc%>
|
4
|
+
attr_accessible :name, :email, :password, :password_confirmation
|
5
|
+
has_secure_password
|
6
|
+
has_many :surveys, dependent: :destroy
|
7
|
+
|
8
|
+
<%nl%>
|
9
|
+
before_save { email.downcase! }
|
10
|
+
before_save :create_remember_token
|
11
|
+
|
12
|
+
<%nl%>
|
13
|
+
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
|
14
|
+
validates :name, presence: true, length: { maximum: 50 }
|
15
|
+
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false }
|
16
|
+
validates :password, presence: true, length: { minimum: 6 }
|
17
|
+
validates :password_confirmation, presence: true
|
18
|
+
|
19
|
+
<%nl%>
|
20
|
+
private<%iinc%>
|
21
|
+
|
22
|
+
<%nl%>
|
23
|
+
def create_remember_token<%iinc%>
|
24
|
+
self.remember_token = SecureRandom.urlsafe_base64
|
25
|
+
<%idec%>end
|
26
|
+
<%idec%><%idec%>end
|
27
|
+
<% end %>
|
28
|
+
<% end %>
|
@@ -2,8 +2,8 @@
|
|
2
2
|
<% file "app/views/layouts/_footer.html.erb" do %>
|
3
3
|
<footer class="footer">
|
4
4
|
<small><%iinc%>
|
5
|
-
<a href="
|
6
|
-
by
|
5
|
+
<a href="#">Survey generator</a>
|
6
|
+
by Daniel Kemper
|
7
7
|
<%idec%></small>
|
8
8
|
<nav><%iinc%>
|
9
9
|
<ul><%iinc%>
|
@@ -8,7 +8,11 @@
|
|
8
8
|
<ul class="nav pull-right"><%iinc%>
|
9
9
|
<li><%%= link_to "Home", root_path %></li>
|
10
10
|
<li><%%= link_to "Help", help_path %></li>
|
11
|
-
|
11
|
+
|
12
|
+
<%nl%>
|
13
|
+
<%% if signed_in? %><%iinc%>
|
14
|
+
<li><%%= link_to "Users", users_path %></li>
|
15
|
+
<%% end %>
|
12
16
|
|
13
17
|
<%nl%>
|
14
18
|
<li id="fat-menu" class="dropdown"><%iinc%>
|
@@ -16,22 +20,26 @@
|
|
16
20
|
Surveys <b class="caret"></b>
|
17
21
|
<%idec%></a>
|
18
22
|
<ul class="dropdown-menu"><%iinc%>
|
19
|
-
<li><%%= link_to "<%=
|
23
|
+
<li><%%= link_to "<%= title.capitalize %>", <%= name.pluralize.downcase %>_path %></li>
|
20
24
|
<%idec%></ul>
|
21
25
|
<%idec%></li>
|
22
26
|
|
23
27
|
<%nl%>
|
24
|
-
|
25
|
-
<
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
<
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
28
|
+
<%% if signed_in? %><%iinc%>
|
29
|
+
<li id="fat-menu" class="dropdown"><%iinc%>
|
30
|
+
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><%iinc%>
|
31
|
+
Account <b class="caret"></b>
|
32
|
+
<%idec%></a>
|
33
|
+
<ul class="dropdown-menu"><%iinc%>
|
34
|
+
<li><%%= link_to "Profile", current_user %></li>
|
35
|
+
<li><%%= link_to "Settings", edit_user_path(current_user) %></li>
|
36
|
+
<li class="divider"></li>
|
37
|
+
<li><%%= link_to "Sign out", signout_path, method: "delete" %></li>
|
38
|
+
<%idec%></ul>
|
39
|
+
<%idec%></li>
|
40
|
+
<%idec%><%% else %><%iinc%>
|
41
|
+
<li><%%= link_to "Sign in", signin_path %></li>
|
42
|
+
<%idec%><%% end %>
|
35
43
|
<%idec%></ul>
|
36
44
|
<%idec%></nav>
|
37
45
|
<%idec%></div>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<% define 'new', for: Survey do %>
|
2
|
+
<% file "app/views/sessions/new.html.erb" do %>
|
3
|
+
<%% provide(:title, "Sign in") %>
|
4
|
+
<h1>Sign in</h1>
|
5
|
+
|
6
|
+
<%nl%>
|
7
|
+
<div class="row"><%iinc%>
|
8
|
+
<div class="span6 offset3"><%iinc%>
|
9
|
+
<%%= form_tag sessions_path do %><%iinc%>
|
10
|
+
<div class="field"><%iinc%>
|
11
|
+
<%%= label_tag :email %>
|
12
|
+
<%%= text_field_tag :email, params[:email] %>
|
13
|
+
<%idec%></div>
|
14
|
+
<div class="field"><%iinc%>
|
15
|
+
<%%= label_tag :password %>
|
16
|
+
<%%= password_field_tag :password %>
|
17
|
+
<%idec%></div>
|
18
|
+
|
19
|
+
<%nl%>
|
20
|
+
<div class="actions"><%%= submit_tag "Sign in", class: "btn btn-large btn-primary" %></div>
|
21
|
+
<%idec%><%% end %>
|
22
|
+
|
23
|
+
<%nl%>
|
24
|
+
<p>New user? <%%= link_to "Sign up now!", signup_path %></p>
|
25
|
+
<%idec%></div>
|
26
|
+
<%idec%></div>
|
27
|
+
<% end %>
|
28
|
+
<% end %>
|