knaveofdiamonds-knave_extras 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +0 -1
- data/VERSION +1 -1
- data/knave_extras.gemspec +20 -2
- data/lib/knave_extras/tasks/vlad.rb +5 -2
- data/rails_generators/model/model_generator.rb +14 -13
- data/rails_generators/openid_scaffold/openid_scaffold_generator.rb +93 -0
- data/rails_generators/openid_scaffold/templates/application_controller.rb +24 -0
- data/rails_generators/openid_scaffold/templates/functional_test.rb +25 -0
- data/rails_generators/openid_scaffold/templates/helper.rb +2 -0
- data/rails_generators/openid_scaffold/templates/helper_test.rb +4 -0
- data/rails_generators/openid_scaffold/templates/migration.rb +18 -0
- data/rails_generators/openid_scaffold/templates/sessions_controller.rb +52 -0
- data/rails_generators/openid_scaffold/templates/sessions_new.erb +20 -0
- data/rails_generators/openid_scaffold/templates/user.rb +17 -0
- data/rails_generators/openid_scaffold/templates/user_edit.erb +14 -0
- data/rails_generators/openid_scaffold/templates/user_show.erb +18 -0
- data/rails_generators/openid_scaffold/templates/user_test.rb +8 -0
- data/rails_generators/openid_scaffold/templates/users_controller.rb +33 -0
- data/rails_generators/scaffold/scaffold_generator.rb +1 -5
- data/rails_generators/scaffold/templates/controller.rb +2 -2
- data/rails_generators/scaffold/templates/view_edit.html.erb +1 -15
- data/rails_generators/scaffold/templates/view_form.html.erb +9 -0
- data/rails_generators/scaffold/templates/view_new.html.erb +1 -15
- data/rails_generators/styles/USAGE +2 -0
- data/rails_generators/styles/styles_generator.rb +16 -0
- data/rails_generators/styles/templates/resets.css +31 -0
- data/rails_generators/styles/templates/typography.less +64 -0
- metadata +20 -2
data/Rakefile
CHANGED
@@ -9,7 +9,6 @@ begin
|
|
9
9
|
gem.email = "roland.swingler@gmail.com"
|
10
10
|
gem.homepage = "http://github.com/knaveofdiamonds/knave-extras"
|
11
11
|
gem.authors = ["Roland Swingler"]
|
12
|
-
gem.files << "lib/knave_extras/tasks/vlad.rb"
|
13
12
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
14
13
|
end
|
15
14
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/knave_extras.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{knave_extras}
|
5
|
-
s.version = "0.0.
|
5
|
+
s.version = "0.0.2"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Roland Swingler"]
|
9
|
-
s.date = %q{2009-08-
|
9
|
+
s.date = %q{2009-08-22}
|
10
10
|
s.email = %q{roland.swingler@gmail.com}
|
11
11
|
s.extra_rdoc_files = [
|
12
12
|
"LICENSE",
|
@@ -27,6 +27,19 @@ Gem::Specification.new do |s|
|
|
27
27
|
"rails_generators/model/templates/migration.rb",
|
28
28
|
"rails_generators/model/templates/model.rb",
|
29
29
|
"rails_generators/model/templates/unit_test.rb",
|
30
|
+
"rails_generators/openid_scaffold/openid_scaffold_generator.rb",
|
31
|
+
"rails_generators/openid_scaffold/templates/application_controller.rb",
|
32
|
+
"rails_generators/openid_scaffold/templates/functional_test.rb",
|
33
|
+
"rails_generators/openid_scaffold/templates/helper.rb",
|
34
|
+
"rails_generators/openid_scaffold/templates/helper_test.rb",
|
35
|
+
"rails_generators/openid_scaffold/templates/migration.rb",
|
36
|
+
"rails_generators/openid_scaffold/templates/sessions_controller.rb",
|
37
|
+
"rails_generators/openid_scaffold/templates/sessions_new.erb",
|
38
|
+
"rails_generators/openid_scaffold/templates/user.rb",
|
39
|
+
"rails_generators/openid_scaffold/templates/user_edit.erb",
|
40
|
+
"rails_generators/openid_scaffold/templates/user_show.erb",
|
41
|
+
"rails_generators/openid_scaffold/templates/user_test.rb",
|
42
|
+
"rails_generators/openid_scaffold/templates/users_controller.rb",
|
30
43
|
"rails_generators/scaffold/USAGE",
|
31
44
|
"rails_generators/scaffold/scaffold_generator.rb",
|
32
45
|
"rails_generators/scaffold/templates/controller.rb",
|
@@ -36,9 +49,14 @@ Gem::Specification.new do |s|
|
|
36
49
|
"rails_generators/scaffold/templates/layout.html.erb",
|
37
50
|
"rails_generators/scaffold/templates/style.css",
|
38
51
|
"rails_generators/scaffold/templates/view_edit.html.erb",
|
52
|
+
"rails_generators/scaffold/templates/view_form.html.erb",
|
39
53
|
"rails_generators/scaffold/templates/view_index.html.erb",
|
40
54
|
"rails_generators/scaffold/templates/view_new.html.erb",
|
41
55
|
"rails_generators/scaffold/templates/view_show.html.erb",
|
56
|
+
"rails_generators/styles/USAGE",
|
57
|
+
"rails_generators/styles/styles_generator.rb",
|
58
|
+
"rails_generators/styles/templates/resets.css",
|
59
|
+
"rails_generators/styles/templates/typography.less",
|
42
60
|
"test/knave-extras_test.rb",
|
43
61
|
"test/test_helper.rb"
|
44
62
|
]
|
@@ -20,8 +20,11 @@ namespace :vlad do
|
|
20
20
|
|
21
21
|
remote_task :clone_code do
|
22
22
|
run ["git clone -s #{scm_path} #{latest_release}",
|
23
|
-
"
|
24
|
-
"
|
23
|
+
"cd #{latest_release}",
|
24
|
+
"git submodule init",
|
25
|
+
"git submodule update",
|
26
|
+
"chmod -R g+w .",
|
27
|
+
"mkdir -p #{latest_release}/db #{latest_release}/tmp" ].join(" && ")
|
25
28
|
end
|
26
29
|
|
27
30
|
remote_task :make_current do
|
@@ -27,18 +27,19 @@ class ModelGenerator < Rails::Generator::NamedBase
|
|
27
27
|
end
|
28
28
|
|
29
29
|
protected
|
30
|
-
def banner
|
31
|
-
"Usage: #{$0} #{spec.name} ModelName [field:type, field:type]"
|
32
|
-
end
|
33
30
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
31
|
+
def banner
|
32
|
+
"Usage: #{$0} #{spec.name} ModelName [field:type, field:type]"
|
33
|
+
end
|
34
|
+
|
35
|
+
def add_options!(opt)
|
36
|
+
opt.separator ''
|
37
|
+
opt.separator 'Options:'
|
38
|
+
opt.on("--skip-timestamps",
|
39
|
+
"Don't add timestamps to the migration file for this model") { |v| options[:skip_timestamps] = v }
|
40
|
+
opt.on("--skip-migration",
|
41
|
+
"Don't generate a migration file for this model") { |v| options[:skip_migration] = v }
|
42
|
+
opt.on("--skip-blueprint",
|
43
|
+
"Don't generation a blueprint for this model") { |v| options[:skip_blueprint] = v}
|
44
|
+
end
|
44
45
|
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
class OpenidScaffoldGenerator < Rails::Generator::NamedBase
|
2
|
+
default_options :force_plural => false
|
3
|
+
|
4
|
+
attr_reader :controller_name,
|
5
|
+
:controller_class_path,
|
6
|
+
:controller_file_path,
|
7
|
+
:controller_class_nesting,
|
8
|
+
:controller_class_nesting_depth,
|
9
|
+
:controller_class_name,
|
10
|
+
:controller_underscore_name,
|
11
|
+
:controller_singular_name,
|
12
|
+
:controller_plural_name
|
13
|
+
alias_method :controller_file_name, :controller_underscore_name
|
14
|
+
alias_method :controller_table_name, :controller_plural_name
|
15
|
+
|
16
|
+
def initialize(runtime_args, runtime_options = {})
|
17
|
+
super
|
18
|
+
|
19
|
+
if @name == @name.pluralize && !options[:force_plural]
|
20
|
+
logger.warning "Plural version of the model detected, using singularized version. Override with --force-plural."
|
21
|
+
@name = @name.singularize
|
22
|
+
end
|
23
|
+
|
24
|
+
@controller_name = @name.pluralize
|
25
|
+
|
26
|
+
base_name, @controller_class_path, @controller_file_path, @controller_class_nesting, @controller_class_nesting_depth = extract_modules(@controller_name)
|
27
|
+
@controller_class_name_without_nesting, @controller_underscore_name, @controller_plural_name = inflect_names(base_name)
|
28
|
+
@controller_singular_name=base_name.singularize
|
29
|
+
if @controller_class_nesting.empty?
|
30
|
+
@controller_class_name = @controller_class_name_without_nesting
|
31
|
+
else
|
32
|
+
@controller_class_name = "#{@controller_class_nesting}::#{@controller_class_name_without_nesting}"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def manifest
|
37
|
+
record do |m|
|
38
|
+
# Check for class naming collisions.
|
39
|
+
m.class_collisions("SessionsController", "#{controller_class_name}Controller", "#{controller_class_name}Helper")
|
40
|
+
m.class_collisions(class_name)
|
41
|
+
|
42
|
+
# Controller, helper, views, test and stylesheets directories.
|
43
|
+
m.directory(File.join('app/models', class_path))
|
44
|
+
m.directory(File.join('app/controllers', controller_class_path))
|
45
|
+
m.directory(File.join('app/helpers', controller_class_path))
|
46
|
+
m.directory(File.join('app/views', controller_class_path, controller_file_name))
|
47
|
+
m.directory('app/views/sessions')
|
48
|
+
m.directory(File.join('test/functional', controller_class_path))
|
49
|
+
m.directory(File.join('test/unit', class_path))
|
50
|
+
m.directory(File.join('test/unit/helpers', class_path))
|
51
|
+
|
52
|
+
m.template("sessions_new.erb", 'app/views/sessions/new.html.erb')
|
53
|
+
m.template("sessions_controller.rb", 'app/controllers/sessions_controller.rb')
|
54
|
+
m.template("application_controller.rb", 'app/controllers/application_controller.rb')
|
55
|
+
m.template("user_edit.erb", File.join('app/views', controller_class_path, controller_file_name, "edit.html.erb"))
|
56
|
+
m.template("user_show.erb", File.join('app/views', controller_class_path, controller_file_name, "show.html.erb"))
|
57
|
+
m.template(
|
58
|
+
'users_controller.rb', File.join('app/controllers', controller_class_path, "#{controller_file_name}_controller.rb")
|
59
|
+
)
|
60
|
+
|
61
|
+
m.template('functional_test.rb', File.join('test/functional', controller_class_path, "#{controller_file_name}_controller_test.rb"))
|
62
|
+
m.template('helper.rb', File.join('app/helpers', controller_class_path, "#{controller_file_name}_helper.rb"))
|
63
|
+
m.template('helper_test.rb', File.join('test/unit/helpers', controller_class_path, "#{controller_file_name}_helper_test.rb"))
|
64
|
+
|
65
|
+
# Model
|
66
|
+
m.template 'user.rb', File.join('app/models', class_path, "#{file_name}.rb")
|
67
|
+
m.template 'user_test.rb', File.join('test/unit', class_path, "#{file_name}_test.rb")
|
68
|
+
m.migration_template 'migration.rb', 'db/migrate', :assigns => {
|
69
|
+
:migration_name => "Create#{class_name.pluralize.gsub(/::/, '')}"
|
70
|
+
}, :migration_file_name => "create_#{file_path.gsub(/\//, '_').pluralize}"
|
71
|
+
# Routing
|
72
|
+
m.route_resources "sessions"
|
73
|
+
m.route_resources controller_file_name
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
protected
|
78
|
+
# Override with your own usage banner.
|
79
|
+
def banner
|
80
|
+
"Usage: #{$0} scaffold ModelName"
|
81
|
+
end
|
82
|
+
|
83
|
+
def add_options!(opt)
|
84
|
+
opt.separator ''
|
85
|
+
opt.separator 'Options:'
|
86
|
+
opt.on("--force-plural",
|
87
|
+
"Forces the generation of a plural ModelName") { |v| options[:force_plural] = v }
|
88
|
+
end
|
89
|
+
|
90
|
+
def model_name
|
91
|
+
class_name.demodulize
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# Filters added to this controller apply to all controllers in the application.
|
2
|
+
# Likewise, all the methods added will be available for all controllers.
|
3
|
+
|
4
|
+
class ApplicationController < ActionController::Base
|
5
|
+
helper :all
|
6
|
+
helper_method :current_<%= singular_name %>
|
7
|
+
protect_from_forgery # See ActionController::RequestForgeryProtection for details
|
8
|
+
|
9
|
+
protected
|
10
|
+
|
11
|
+
def current_<%= singular_name %>
|
12
|
+
return @current_<%= singular_name %> if defined?(@current_<%= singular_name %>)
|
13
|
+
@current_<%= singular_name %> = <%= class_name %>.find_by_id(session[:<%= singular_name %>_id])
|
14
|
+
end
|
15
|
+
|
16
|
+
def store_location
|
17
|
+
session[:return_to] = request.request_uri
|
18
|
+
end
|
19
|
+
|
20
|
+
def redirect_back_or_default(default)
|
21
|
+
redirect_to(session[:return_to] || default)
|
22
|
+
session[:return_to] = nil
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class <%= controller_class_name %>ControllerTest < ActionController::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
super
|
7
|
+
@<%= singular_name %> = <%= class_name %>.make
|
8
|
+
end
|
9
|
+
|
10
|
+
test "GET /users/:id should show user" do
|
11
|
+
get :show, :id => @<%= singular_name %>.to_param
|
12
|
+
assert_response :success
|
13
|
+
end
|
14
|
+
|
15
|
+
test "GET /users/:id/edit" do
|
16
|
+
get :edit, :id => @<%= singular_name %>.to_param
|
17
|
+
assert_not_nil assigns(:<%= singular_name %>)
|
18
|
+
assert_response :success
|
19
|
+
end
|
20
|
+
|
21
|
+
test "PUT /users/:id should update user" do
|
22
|
+
put :update, :id => @<%= singular_name %>.to_param, :user => { }
|
23
|
+
assert_redirected_to <%= table_name %._path
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class <%= migration_name %> < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :<%= table_name %> do |t|
|
4
|
+
t.string :name, :limit => 80
|
5
|
+
t.string :email, :limit => 100
|
6
|
+
t.string :openid_identifier
|
7
|
+
t.datetime :current_login_at
|
8
|
+
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
|
12
|
+
add_index :<%= table_name %>, :openid_identifier
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.down
|
16
|
+
drop_table :<%= table_name %>
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
class SessionsController < ApplicationController
|
2
|
+
def new
|
3
|
+
end
|
4
|
+
|
5
|
+
def create
|
6
|
+
open_id_authentication(params[:openid_identifier])
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def open_id_authentication(oid)
|
12
|
+
# Pass optional :required and :optional keys to specify what sreg fields you want.
|
13
|
+
# Be sure to yield registration, a third argument in the #authenticate_with_open_id block.
|
14
|
+
authenticate_with_open_id(oid, :required => [:email,:fullname]) do |result, identity_url, registration|
|
15
|
+
case result.status
|
16
|
+
when :missing
|
17
|
+
failed_login "Sorry, the OpenID server couldn't be found"
|
18
|
+
when :invalid
|
19
|
+
failed_login "Sorry, but this does not appear to be a valid OpenID"
|
20
|
+
when :canceled
|
21
|
+
failed_login "OpenID verification was canceled"
|
22
|
+
when :failed
|
23
|
+
failed_login "Sorry, the OpenID verification failed"
|
24
|
+
when :successful
|
25
|
+
@<%= singular_name %> = <%= class_name %>.find_by_openid_identifier(identity_url)
|
26
|
+
|
27
|
+
if @<%= singular_name %>
|
28
|
+
flash[:notice] = "Welcome back."
|
29
|
+
else
|
30
|
+
@<%= singular_name %> = <%= class_name %>.create(:openid_identifier => identity_url)
|
31
|
+
@<%= singular_name %>.name = registration['fullname'] if registration['fullname'].present?
|
32
|
+
@<%= singular_name %>.email = registration['email'] if registration['email'].present?
|
33
|
+
@<%= singular_name %>.save
|
34
|
+
|
35
|
+
flash[:notice] = "Account created"
|
36
|
+
end
|
37
|
+
|
38
|
+
session[:<%= singular_name %>_id] = @<%= singular_name %>.id
|
39
|
+
redirect_to signed_in_destination
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def signed_in_destination
|
45
|
+
(@<%= singular_name %>.email.blank? || @<%= singular_name %>.name.blank?) ? edit_user_url(@<%= singular_name %>) : user_url(@<%= singular_name %>)
|
46
|
+
end
|
47
|
+
|
48
|
+
def failed_login(message)
|
49
|
+
flash[:notice] = message
|
50
|
+
redirect_to root_url
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<h1>Sign in</h1>
|
2
|
+
|
3
|
+
<style type="text/css">
|
4
|
+
input.openid {
|
5
|
+
background: url(http://openid.net/images/login-bg.gif) 0 50% no-repeat;
|
6
|
+
padding-left: 18px;
|
7
|
+
}
|
8
|
+
</style>
|
9
|
+
|
10
|
+
<%%= form_tag "/sessions" %>
|
11
|
+
<ol class="fields">
|
12
|
+
<li>
|
13
|
+
<label>Open ID URL</label>
|
14
|
+
<input type="text" class="openid" name="openid_identifier" />
|
15
|
+
</li>
|
16
|
+
<div class="buttons">
|
17
|
+
<input type="submit" />
|
18
|
+
</div>
|
19
|
+
</ol>
|
20
|
+
</form>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class <%= class_name %> < ActiveRecord::Base
|
2
|
+
# name validation
|
3
|
+
validates_length_of :name, :allow_nil => true,
|
4
|
+
:in => 3..80,
|
5
|
+
:message => "should be between 3 and 80 letters long"
|
6
|
+
|
7
|
+
validates_format_of :name, :allow_nil => true,
|
8
|
+
:with => /^[^\:;!~`\@\#\$%&*\{\}\[\]|\^\\\/\?><"]+$/,
|
9
|
+
:message => "should be alphabetical"
|
10
|
+
|
11
|
+
# Email validation
|
12
|
+
validates_uniqueness_of :email, :allow_nil => true, :case_sensitive => false
|
13
|
+
validates_length_of :email, :allow_nil => true, :in => 6..100, :message => "should be between 6 and 100 letters long"
|
14
|
+
validates_format_of :email, :allow_nil => true,
|
15
|
+
:with => /(?i-mx:\\A[A-Z0-9_\\.%\\+\\-]+@(?:[A-Z0-9\\-]+\\.)+(?:[A-Z]{2,4}|museum|travel)\\z)/,
|
16
|
+
:message => "should look like an email address"
|
17
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<h1>Edit your details</h1>
|
2
|
+
|
3
|
+
<%% semantic_form_for(@<%= singular_name %>) do |f| %>
|
4
|
+
<p><%%=h @<%= singular_name %>.openid_identifier %></p>
|
5
|
+
|
6
|
+
<ol class="fields">
|
7
|
+
<%%= f.input :name %>
|
8
|
+
<%%= f.input :email %>
|
9
|
+
</ol>
|
10
|
+
|
11
|
+
<%% f.buttons do %>
|
12
|
+
<%%= f.submit "Save details" %>
|
13
|
+
<%% end %>
|
14
|
+
<%% end %>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<p>
|
2
|
+
<b>Name:</b>
|
3
|
+
<%%=h @<%= singular_name %>.name %>
|
4
|
+
</p>
|
5
|
+
|
6
|
+
<p>
|
7
|
+
<b>Email:</b>
|
8
|
+
<%%=h @<%= singular_name %>.email %>
|
9
|
+
</p>
|
10
|
+
|
11
|
+
<p>
|
12
|
+
<b>Openid identifier:</b>
|
13
|
+
<%%=h @<%= singular_name %>.openid_identifier %>
|
14
|
+
</p>
|
15
|
+
|
16
|
+
|
17
|
+
<%%= link_to 'Edit', edit_user_path(@<%= singular_name %>) %> |
|
18
|
+
<%%= link_to 'Back', users_path %>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
class <%= controller_class_name %>Controller < ApplicationController
|
2
|
+
|
3
|
+
def show
|
4
|
+
@<%= singular_name %> = <%= class_name %>.find(params[:id])
|
5
|
+
end
|
6
|
+
|
7
|
+
def edit
|
8
|
+
@<%= singular_name %> = <%= class_name %>.find(params[:id])
|
9
|
+
end
|
10
|
+
|
11
|
+
def update
|
12
|
+
@<%= singular_name %> = <%= class_name %>.find(params[:id])
|
13
|
+
@<%= singular_name %>.attributes = params[:user]
|
14
|
+
if @<%= singular_name %>.save
|
15
|
+
flash[:notice] = 'Your account details have been changed.'
|
16
|
+
redirect_to(user_url(@<%= singular_name %>))
|
17
|
+
else
|
18
|
+
render :action => "edit"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# protected
|
23
|
+
|
24
|
+
# def check_user
|
25
|
+
# @<%= singular_name %> = <%= class_name %>.find_by_id(params[:id])
|
26
|
+
# if @<%= singular_name %>.nil? || @<%= singular_name %> != current_user
|
27
|
+
# store_location
|
28
|
+
# flash[:warning] = "You must sign in to access this page"
|
29
|
+
# redirect_to new_user_session_url
|
30
|
+
# return false
|
31
|
+
# end
|
32
|
+
# end
|
33
|
+
end
|
@@ -44,11 +44,9 @@ class ScaffoldGenerator < Rails::Generator::NamedBase
|
|
44
44
|
m.directory(File.join('app/controllers', controller_class_path))
|
45
45
|
m.directory(File.join('app/helpers', controller_class_path))
|
46
46
|
m.directory(File.join('app/views', controller_class_path, controller_file_name))
|
47
|
-
m.directory(File.join('app/views/layouts', controller_class_path))
|
48
47
|
m.directory(File.join('test/functional', controller_class_path))
|
49
48
|
m.directory(File.join('test/unit', class_path))
|
50
49
|
m.directory(File.join('test/unit/helpers', class_path))
|
51
|
-
m.directory(File.join('public/stylesheets', class_path))
|
52
50
|
|
53
51
|
for action in scaffold_views
|
54
52
|
m.template(
|
@@ -56,11 +54,9 @@ class ScaffoldGenerator < Rails::Generator::NamedBase
|
|
56
54
|
File.join('app/views', controller_class_path, controller_file_name, "#{action}.html.erb")
|
57
55
|
)
|
58
56
|
end
|
57
|
+
m.template("view_form.html.erb", File.join('app/views', controller_class_path, controller_file_name, "_form.html.erb"))
|
59
58
|
|
60
59
|
# Layout and stylesheet.
|
61
|
-
m.template('layout.html.erb', File.join('app/views/layouts', controller_class_path, "#{controller_file_name}.html.erb"))
|
62
|
-
m.template('style.css', 'public/stylesheets/scaffold.css')
|
63
|
-
|
64
60
|
m.template(
|
65
61
|
'controller.rb', File.join('app/controllers', controller_class_path, "#{controller_file_name}_controller.rb")
|
66
62
|
)
|
@@ -36,7 +36,7 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
36
36
|
respond_to do |format|
|
37
37
|
if @<%= file_name %>.save
|
38
38
|
flash[:notice] = '<%= class_name %> was successfully created.'
|
39
|
-
format.html { redirect_to(
|
39
|
+
format.html { redirect_to(<%= table_name %>_url) }
|
40
40
|
format.xml { render :xml => @<%= file_name %>, :status => :created, :location => @<%= file_name %> }
|
41
41
|
else
|
42
42
|
format.html { render :action => "new" }
|
@@ -51,7 +51,7 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
51
51
|
respond_to do |format|
|
52
52
|
if @<%= file_name %>.update_attributes(params[:<%= file_name %>])
|
53
53
|
flash[:notice] = '<%= class_name %> was successfully updated.'
|
54
|
-
format.html { redirect_to(
|
54
|
+
format.html { redirect_to(<%= table_name %>_url) }
|
55
55
|
format.xml { head :ok }
|
56
56
|
else
|
57
57
|
format.html { render :action => "edit" }
|
@@ -1,16 +1,2 @@
|
|
1
1
|
<h1>Editing <%= singular_name %></h1>
|
2
|
-
|
3
|
-
<%% form_for(@<%= singular_name %>) do |f| %>
|
4
|
-
<%%= f.error_messages %>
|
5
|
-
|
6
|
-
<% for attribute in attributes -%>
|
7
|
-
<div class="fmElem">
|
8
|
-
<%%= f.label :<%= attribute.name %> %>
|
9
|
-
<%%= f.<%= attribute.field_type %> :<%= attribute.name %> %>
|
10
|
-
</div>
|
11
|
-
<% end -%>
|
12
|
-
<div class="controls">
|
13
|
-
<%%= f.submit 'Create' %>
|
14
|
-
<%%= link_to 'Cancel', <%= plural_name %>_path %>
|
15
|
-
</div>
|
16
|
-
<%% end %>
|
2
|
+
<%%= render "form" %>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<%% semantic_form_for(@<%= singular_name %>) do |f| %>
|
2
|
+
<% for attribute in attributes -%>
|
3
|
+
<%%= f.input :<%= attribute.name %> %>
|
4
|
+
<% end -%>
|
5
|
+
<%% f.buttons do %>
|
6
|
+
<%%= f.submit 'Create' %>
|
7
|
+
<%%= link_to 'Cancel', <%= plural_name %>_path %>
|
8
|
+
<%% end %>
|
9
|
+
<%% end %>
|
@@ -1,16 +1,2 @@
|
|
1
1
|
<h1>New <%= singular_name %></h1>
|
2
|
-
|
3
|
-
<%% form_for(@<%= singular_name %>) do |f| %>
|
4
|
-
<%%= f.error_messages %>
|
5
|
-
|
6
|
-
<% for attribute in attributes -%>
|
7
|
-
<div class="fmElem">
|
8
|
-
<%%= f.label :<%= attribute.name %> %>
|
9
|
-
<%%= f.<%= attribute.field_type %> :<%= attribute.name %> %>
|
10
|
-
</div>
|
11
|
-
<% end -%>
|
12
|
-
<div class="controls">
|
13
|
-
<%%= f.submit 'Create' %>
|
14
|
-
<%%= link_to 'Cancel', <%= plural_name %>_path %>
|
15
|
-
</div>
|
16
|
-
<%% end %>
|
2
|
+
<%%= render "form" %>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class StylesGenerator < Rails::Generator::Base
|
2
|
+
|
3
|
+
def manifest
|
4
|
+
record do |m|
|
5
|
+
m.directory('public/stylesheets')
|
6
|
+
m.file "resets.css", "public/stylesheets/resets.css"
|
7
|
+
m.file "typography.less", "public/stylesheets/typography.less"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
protected
|
12
|
+
|
13
|
+
def usage
|
14
|
+
"Usage: #{$0} #{spec.name}"
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
/*~~~~~~~~~~~~~~~~ Resets ~~~~~~~~~~~~~~~~*/
|
2
|
+
|
3
|
+
body, html, ol, ul, li, dl, dt, dd, p, pre, h1, h2, h3, h4, h5, h6, blockquote, table, caption, th, td, form, label, fieldset, legend, input, textarea, embed, object, img {
|
4
|
+
margin: 0;
|
5
|
+
padding: 0;
|
6
|
+
}
|
7
|
+
|
8
|
+
html { font-size: 62.5%; line-height: 1; }
|
9
|
+
h1, h2, h3, h4, h5, h6 { font-size: inherit; }
|
10
|
+
input, textarea, address, pre { font: inherit; }
|
11
|
+
td, th, caption { text-align: left; vertical-align: top; }
|
12
|
+
blockquote:before, blockquote:after, q:before, q:after { content: ""; }
|
13
|
+
blockquote, q { quotes: "" ""; }
|
14
|
+
ol, ul { list-style: none; }
|
15
|
+
textarea { vertical-align: bottom; }
|
16
|
+
|
17
|
+
legend, fieldset, a img, img { border: none; }
|
18
|
+
table { border-collapse: collapse; border-spacing: 0; }
|
19
|
+
:focus { outline: 0; }
|
20
|
+
|
21
|
+
hr {
|
22
|
+
background: #444;
|
23
|
+
border: none;
|
24
|
+
height: 1px;
|
25
|
+
width: 100%;
|
26
|
+
display: block;
|
27
|
+
margin: 0px;
|
28
|
+
margin-top: -1px;
|
29
|
+
}
|
30
|
+
|
31
|
+
/*~~~~~~~~~~~~~~~~ End Resets ~~~~~~~~~~~~~~~~*/
|
@@ -0,0 +1,64 @@
|
|
1
|
+
/**
|
2
|
+
* 1em == 10px. Each size is independent, so 2.3em here means 23px - actual em sizes are
|
3
|
+
* calculated by lessCss.
|
4
|
+
*/
|
5
|
+
@baseline: 1.8em;
|
6
|
+
@bodysize: 1.2em;
|
7
|
+
@h1size: 2.4em;
|
8
|
+
@h2size: 1.8em;
|
9
|
+
@h3size: 1.4em;
|
10
|
+
@smallprint: 1.0em;
|
11
|
+
|
12
|
+
/** Calculations **/
|
13
|
+
|
14
|
+
html {
|
15
|
+
font-size: 62.5%;
|
16
|
+
line-height: @baseline
|
17
|
+
}
|
18
|
+
|
19
|
+
body {
|
20
|
+
font-size: @bodysize;
|
21
|
+
margin-top: @baseline / @bodysize;
|
22
|
+
}
|
23
|
+
|
24
|
+
p, ul, ol, dl, table, pre, blockquote, h4, h5, h6 {
|
25
|
+
margin-bottom: @baseline / @bodysize;
|
26
|
+
}
|
27
|
+
|
28
|
+
h1, h2, h3, .smallprint {
|
29
|
+
position: relative;
|
30
|
+
}
|
31
|
+
|
32
|
+
h1 {
|
33
|
+
top: (@baseline / 2 + @bodysize / 3 - @h1size / 3) / @h1size;
|
34
|
+
font-size: @h1size / @bodysize;
|
35
|
+
line-height: @baseline * 2 / @h1size;
|
36
|
+
margin-bottom: @baseline / @h1size;
|
37
|
+
}
|
38
|
+
|
39
|
+
h2 {
|
40
|
+
top: ((@baseline / 2) + (@bodysize / 3) - (@h2size / 3)) / @h2size;
|
41
|
+
font-size: @h2size / @bodysize;
|
42
|
+
line-height: @baseline * 2 / @h2size;
|
43
|
+
margin-bottom: @baseline / @h2size;
|
44
|
+
}
|
45
|
+
|
46
|
+
h3 {
|
47
|
+
font-size: @h3size / @bodysize;
|
48
|
+
line-height: @baseline / @h3size;
|
49
|
+
margin-bottom: @baseline / @h3size;
|
50
|
+
}
|
51
|
+
|
52
|
+
h4,h5,h6 {
|
53
|
+
font-size: 100%;
|
54
|
+
}
|
55
|
+
|
56
|
+
.smallprint {
|
57
|
+
font-size: @smallprint / @bodysize;
|
58
|
+
line-height: @baseline / @smallprint;
|
59
|
+
margin-bottom: @baseline / @smallprint;
|
60
|
+
}
|
61
|
+
|
62
|
+
table.padded td, table.padded th {
|
63
|
+
padding: @baseline / (@bodysize * 2)
|
64
|
+
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knaveofdiamonds-knave_extras
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roland Swingler
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-08-
|
12
|
+
date: 2009-08-22 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -37,6 +37,19 @@ files:
|
|
37
37
|
- rails_generators/model/templates/migration.rb
|
38
38
|
- rails_generators/model/templates/model.rb
|
39
39
|
- rails_generators/model/templates/unit_test.rb
|
40
|
+
- rails_generators/openid_scaffold/openid_scaffold_generator.rb
|
41
|
+
- rails_generators/openid_scaffold/templates/application_controller.rb
|
42
|
+
- rails_generators/openid_scaffold/templates/functional_test.rb
|
43
|
+
- rails_generators/openid_scaffold/templates/helper.rb
|
44
|
+
- rails_generators/openid_scaffold/templates/helper_test.rb
|
45
|
+
- rails_generators/openid_scaffold/templates/migration.rb
|
46
|
+
- rails_generators/openid_scaffold/templates/sessions_controller.rb
|
47
|
+
- rails_generators/openid_scaffold/templates/sessions_new.erb
|
48
|
+
- rails_generators/openid_scaffold/templates/user.rb
|
49
|
+
- rails_generators/openid_scaffold/templates/user_edit.erb
|
50
|
+
- rails_generators/openid_scaffold/templates/user_show.erb
|
51
|
+
- rails_generators/openid_scaffold/templates/user_test.rb
|
52
|
+
- rails_generators/openid_scaffold/templates/users_controller.rb
|
40
53
|
- rails_generators/scaffold/USAGE
|
41
54
|
- rails_generators/scaffold/scaffold_generator.rb
|
42
55
|
- rails_generators/scaffold/templates/controller.rb
|
@@ -46,9 +59,14 @@ files:
|
|
46
59
|
- rails_generators/scaffold/templates/layout.html.erb
|
47
60
|
- rails_generators/scaffold/templates/style.css
|
48
61
|
- rails_generators/scaffold/templates/view_edit.html.erb
|
62
|
+
- rails_generators/scaffold/templates/view_form.html.erb
|
49
63
|
- rails_generators/scaffold/templates/view_index.html.erb
|
50
64
|
- rails_generators/scaffold/templates/view_new.html.erb
|
51
65
|
- rails_generators/scaffold/templates/view_show.html.erb
|
66
|
+
- rails_generators/styles/USAGE
|
67
|
+
- rails_generators/styles/styles_generator.rb
|
68
|
+
- rails_generators/styles/templates/resets.css
|
69
|
+
- rails_generators/styles/templates/typography.less
|
52
70
|
- test/knave-extras_test.rb
|
53
71
|
- test/test_helper.rb
|
54
72
|
has_rdoc: true
|