survey_generator 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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 %>
|