startups 0.0.2.2 → 0.0.3a
Sign up to get free protection for your applications and to get access to all the features.
- metadata +52 -59
- data/CHANGELOG +0 -32
- data/LICENSE +0 -20
- data/Manifest +0 -30
- data/README +0 -29
- data/Rakefile +0 -16
- data/TODO +0 -5
- data/lib/startups.rb +0 -80
- data/rails_generators/startup/USAGE +0 -11
- data/rails_generators/startup/startup_generator.rb +0 -23
- data/rails_generators/startup_content/USAGE +0 -11
- data/rails_generators/startup_content/startup_content_generator.rb +0 -41
- data/rails_generators/startup_content/templates/content_controller.rb +0 -7
- data/rails_generators/startup_content/templates/content_controller_test.rb +0 -14
- data/rails_generators/startup_content/templates/content_helper.rb +0 -3
- data/rails_generators/startup_content/templates/example.html.erb +0 -3
- data/rails_generators/startup_content/templates/help.html.erb +0 -3
- data/rails_generators/startup_content/templates/home.html.erb +0 -4
- data/rails_generators/startup_layout/USAGE +0 -11
- data/rails_generators/startup_layout/startup_layout_generator.rb +0 -36
- data/rails_generators/startup_layout/templates/app/helpers/layout_helper.rb +0 -71
- data/rails_generators/startup_layout/templates/app/views/layouts/_startup_layout_footer.html.erb +0 -6
- data/rails_generators/startup_layout/templates/app/views/layouts/_startup_layout_header.html.erb +0 -4
- data/rails_generators/startup_layout/templates/app/views/layouts/startup_layout.html.erb +0 -40
- data/rails_generators/startup_layout/templates/public/stylesheets/startup_layout.css +0 -23
- data/rails_generators/startup_layout/templates/public/stylesheets/startup_layout_reset.css +0 -47
- data/rails_generators/startup_nav/USAGE +0 -12
- data/rails_generators/startup_nav/startup_nav_generator.rb +0 -35
- data/rails_generators/startup_nav/templates/_nav.html.erb +0 -7
- data/rails_generators/startup_nav/templates/nav.css +0 -36
- data/rails_generators/startup_nav/templates/nav_helper.rb +0 -76
- data/startups.gemspec +0 -30
metadata
CHANGED
@@ -1,94 +1,87 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: startups
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 3450187
|
5
|
+
prerelease: true
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 3a
|
10
|
+
version: 0.0.3a
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Ryan Owens
|
14
|
+
- John Athayde
|
8
15
|
autorequire:
|
9
16
|
bindir: bin
|
10
17
|
cert_chain: []
|
11
18
|
|
12
|
-
date:
|
19
|
+
date: 2010-06-09 00:00:00 -04:00
|
13
20
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
16
|
-
|
17
|
-
|
21
|
+
dependencies:
|
22
|
+
- !ruby/object:Gem::Dependency
|
23
|
+
name: rails
|
24
|
+
prerelease: false
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ">="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 11
|
31
|
+
segments:
|
32
|
+
- 2
|
33
|
+
- 3
|
34
|
+
- 4
|
35
|
+
version: 2.3.4
|
36
|
+
type: :runtime
|
37
|
+
version_requirements: *id001
|
38
|
+
description: Rails generators for basic infoether apps including file setup, base working styles, and more.
|
39
|
+
email:
|
40
|
+
- ryan@infoether.com
|
41
|
+
- john@infoether.com
|
18
42
|
executables: []
|
19
43
|
|
20
44
|
extensions: []
|
21
45
|
|
22
|
-
extra_rdoc_files:
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
- README
|
27
|
-
- TODO
|
28
|
-
files:
|
29
|
-
- CHANGELOG
|
30
|
-
- lib/startups.rb
|
31
|
-
- LICENSE
|
32
|
-
- Manifest
|
33
|
-
- rails_generators/startup/startup_generator.rb
|
34
|
-
- rails_generators/startup/USAGE
|
35
|
-
- rails_generators/startup_content/startup_content_generator.rb
|
36
|
-
- rails_generators/startup_content/templates/content_controller.rb
|
37
|
-
- rails_generators/startup_content/templates/content_controller_test.rb
|
38
|
-
- rails_generators/startup_content/templates/content_helper.rb
|
39
|
-
- rails_generators/startup_content/templates/example.html.erb
|
40
|
-
- rails_generators/startup_content/templates/help.html.erb
|
41
|
-
- rails_generators/startup_content/templates/home.html.erb
|
42
|
-
- rails_generators/startup_content/USAGE
|
43
|
-
- rails_generators/startup_layout/startup_layout_generator.rb
|
44
|
-
- rails_generators/startup_layout/templates/app/helpers/layout_helper.rb
|
45
|
-
- rails_generators/startup_layout/templates/app/views/layouts/_startup_layout_footer.html.erb
|
46
|
-
- rails_generators/startup_layout/templates/app/views/layouts/_startup_layout_header.html.erb
|
47
|
-
- rails_generators/startup_layout/templates/app/views/layouts/startup_layout.html.erb
|
48
|
-
- rails_generators/startup_layout/templates/public/stylesheets/startup_layout.css
|
49
|
-
- rails_generators/startup_layout/templates/public/stylesheets/startup_layout_reset.css
|
50
|
-
- rails_generators/startup_layout/USAGE
|
51
|
-
- rails_generators/startup_nav/startup_nav_generator.rb
|
52
|
-
- rails_generators/startup_nav/templates/_nav.html.erb
|
53
|
-
- rails_generators/startup_nav/templates/nav.css
|
54
|
-
- rails_generators/startup_nav/templates/nav_helper.rb
|
55
|
-
- rails_generators/startup_nav/USAGE
|
56
|
-
- Rakefile
|
57
|
-
- README
|
58
|
-
- TODO
|
59
|
-
- startups.gemspec
|
46
|
+
extra_rdoc_files: []
|
47
|
+
|
48
|
+
files: []
|
49
|
+
|
60
50
|
has_rdoc: true
|
61
|
-
homepage: http://
|
51
|
+
homepage: http://www.infoether.com
|
62
52
|
licenses: []
|
63
53
|
|
64
54
|
post_install_message:
|
65
|
-
rdoc_options:
|
66
|
-
|
67
|
-
- --inline-source
|
68
|
-
- --title
|
69
|
-
- Startups
|
70
|
-
- --main
|
71
|
-
- README
|
55
|
+
rdoc_options: []
|
56
|
+
|
72
57
|
require_paths:
|
73
58
|
- lib
|
74
59
|
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
75
61
|
requirements:
|
76
62
|
- - ">="
|
77
63
|
- !ruby/object:Gem::Version
|
64
|
+
hash: 3
|
65
|
+
segments:
|
66
|
+
- 0
|
78
67
|
version: "0"
|
79
|
-
version:
|
80
68
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
81
70
|
requirements:
|
82
|
-
- - "
|
71
|
+
- - ">"
|
83
72
|
- !ruby/object:Gem::Version
|
84
|
-
|
85
|
-
|
73
|
+
hash: 25
|
74
|
+
segments:
|
75
|
+
- 1
|
76
|
+
- 3
|
77
|
+
- 1
|
78
|
+
version: 1.3.1
|
86
79
|
requirements: []
|
87
80
|
|
88
|
-
rubyforge_project:
|
89
|
-
rubygems_version: 1.3.
|
81
|
+
rubyforge_project:
|
82
|
+
rubygems_version: 1.3.7
|
90
83
|
signing_key:
|
91
84
|
specification_version: 3
|
92
|
-
summary:
|
85
|
+
summary: Rails Generators from InfoEther
|
93
86
|
test_files: []
|
94
87
|
|
data/CHANGELOG
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
0.0.0 (Aug 13th, 2009)
|
2
|
-
|
3
|
-
* just getting started. Added the nav startup.
|
4
|
-
|
5
|
-
0.0.1 (Oct 16th, 2009)
|
6
|
-
|
7
|
-
* Added the content and layout startups.
|
8
|
-
* Tweaked all the startups to play nice.
|
9
|
-
* Added better wireframe styles
|
10
|
-
* Added examples.
|
11
|
-
* Generating all 3 startups will get you a working example with 3 pages.
|
12
|
-
|
13
|
-
0.0.2 (Oct 16th, 2009)
|
14
|
-
|
15
|
-
* Added better wireframe styles
|
16
|
-
* changed the examples so that not all nav items appear in the footer and header
|
17
|
-
* added a 'startup' generator that runs them all at once.
|
18
|
-
* added support to the generator commands for removing a file and running a separate generator.
|
19
|
-
* fixed the destroy for custom route generator command to properly remove generated routes.
|
20
|
-
* Tweaked all the startups to play nice.
|
21
|
-
* Added examples.
|
22
|
-
* Running a single generator (startup) now generates all 3 startups and gets you a working example with 3 pages.
|
23
|
-
|
24
|
-
0.0.2.1 (Oct 19th, 2009)
|
25
|
-
|
26
|
-
* Cleaned up and streamlined some things.
|
27
|
-
|
28
|
-
0.0.2.2 (Oct 19th, 2009)
|
29
|
-
|
30
|
-
* Bugfix
|
31
|
-
|
32
|
-
|
data/LICENSE
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
Copyright (c) 2009 Ryan Owens
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
-
a copy of this software and associated documentation files (the
|
5
|
-
"Software"), to deal in the Software without restriction, including
|
6
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
-
permit persons to whom the Software is furnished to do so, subject to
|
9
|
-
the following conditions:
|
10
|
-
|
11
|
-
The above copyright notice and this permission notice shall be
|
12
|
-
included in all copies or substantial portions of the Software.
|
13
|
-
|
14
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Manifest
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
CHANGELOG
|
2
|
-
lib/startups.rb
|
3
|
-
LICENSE
|
4
|
-
Manifest
|
5
|
-
rails_generators/startup/startup_generator.rb
|
6
|
-
rails_generators/startup/USAGE
|
7
|
-
rails_generators/startup_content/startup_content_generator.rb
|
8
|
-
rails_generators/startup_content/templates/content_controller.rb
|
9
|
-
rails_generators/startup_content/templates/content_controller_test.rb
|
10
|
-
rails_generators/startup_content/templates/content_helper.rb
|
11
|
-
rails_generators/startup_content/templates/example.html.erb
|
12
|
-
rails_generators/startup_content/templates/help.html.erb
|
13
|
-
rails_generators/startup_content/templates/home.html.erb
|
14
|
-
rails_generators/startup_content/USAGE
|
15
|
-
rails_generators/startup_layout/startup_layout_generator.rb
|
16
|
-
rails_generators/startup_layout/templates/app/helpers/layout_helper.rb
|
17
|
-
rails_generators/startup_layout/templates/app/views/layouts/_startup_layout_footer.html.erb
|
18
|
-
rails_generators/startup_layout/templates/app/views/layouts/_startup_layout_header.html.erb
|
19
|
-
rails_generators/startup_layout/templates/app/views/layouts/startup_layout.html.erb
|
20
|
-
rails_generators/startup_layout/templates/public/stylesheets/startup_layout.css
|
21
|
-
rails_generators/startup_layout/templates/public/stylesheets/startup_layout_reset.css
|
22
|
-
rails_generators/startup_layout/USAGE
|
23
|
-
rails_generators/startup_nav/startup_nav_generator.rb
|
24
|
-
rails_generators/startup_nav/templates/_nav.html.erb
|
25
|
-
rails_generators/startup_nav/templates/nav.css
|
26
|
-
rails_generators/startup_nav/templates/nav_helper.rb
|
27
|
-
rails_generators/startup_nav/USAGE
|
28
|
-
Rakefile
|
29
|
-
README
|
30
|
-
TODO
|
data/README
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
= search_scope
|
2
|
-
|
3
|
-
Rails gem with collection of Rails "startups" for features such as navigation and forms with customizable error handling.
|
4
|
-
|
5
|
-
== Install
|
6
|
-
|
7
|
-
gem install startups
|
8
|
-
|
9
|
-
== Usage
|
10
|
-
|
11
|
-
After installing the gem, you can use the startup generators in your Rails app.
|
12
|
-
|
13
|
-
From your rails app's root directory, type:
|
14
|
-
script/generate startup_nav
|
15
|
-
|
16
|
-
#TODO script/destroy should also work?
|
17
|
-
|
18
|
-
== Included Generators
|
19
|
-
|
20
|
-
* startup_nav: generates the files needed for a simple, easily styled navigation.
|
21
|
-
* startup_content: generated a content controller for home and other non-rest pages. A basic layout and stylesheet is also provided.
|
22
|
-
|
23
|
-
* COMING SOON: startup_form: generates the files needed for generic forms with customizable error handling.
|
24
|
-
** updating this to use formatastic
|
25
|
-
|
26
|
-
For more information, run:
|
27
|
-
script/generate startup_nav --help
|
28
|
-
|
29
|
-
|
data/Rakefile
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rake'
|
3
|
-
require 'echoe'
|
4
|
-
|
5
|
-
Echoe.new('startups', '0.0.2.2') do |p|
|
6
|
-
p.project = "startups"
|
7
|
-
p.description = "A collection of Rails \"startups\" for features such as a standard layout, navigation and forms with customizable error handling."
|
8
|
-
p.url = "http://rubyforge.org/projects/startups"
|
9
|
-
p.author = 'Ryan Owens'
|
10
|
-
p.email = "ryan (at) infoether (dot) com"
|
11
|
-
p.ignore_pattern = ["tmp/*", "script/*", "startups_notes.txt", "*.tmproj"]
|
12
|
-
p.development_dependencies = []
|
13
|
-
end
|
14
|
-
|
15
|
-
Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
|
16
|
-
|
data/TODO
DELETED
data/lib/startups.rb
DELETED
@@ -1,80 +0,0 @@
|
|
1
|
-
module Startups
|
2
|
-
# look under rails_generators for the meat
|
3
|
-
end
|
4
|
-
|
5
|
-
#TODO put this somewhere else, or figure out a better way to do it so I don't have to copy it for other generators.
|
6
|
-
#modified from: http://patshaughnessy.net/2009/9/2/rails-generator-tutorial-part-2-writing-a-custom-manifest-action
|
7
|
-
module Rails
|
8
|
-
module Generator
|
9
|
-
module Commands
|
10
|
-
|
11
|
-
class Base
|
12
|
-
def route_code(route_options)
|
13
|
-
if route_options.is_a? Hash
|
14
|
-
"map.#{route_options[:name]} '#{route_options[:name]}', :controller => '#{route_options[:controller]}', :action => '#{route_options[:action]}'"
|
15
|
-
else
|
16
|
-
route_options.to_s.gsub("\n ","\n").strip
|
17
|
-
end
|
18
|
-
end
|
19
|
-
def route_code_log_message(route_options)
|
20
|
-
code = route_code(route_options)
|
21
|
-
if code.index "\n"
|
22
|
-
code = code[0,code.index("\n")]
|
23
|
-
code = "#{code} ... end" if code.index ' do '
|
24
|
-
end
|
25
|
-
code
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
# Here's a readable version of the long string used above in route_code;
|
30
|
-
# but it should be kept on one line to avoid inserting extra whitespace
|
31
|
-
# into routes.rb when the generator is run:
|
32
|
-
# "map.#{route_options[:name]} '#{route_options[:name]}',
|
33
|
-
# :controller => '#{route_options[:controller]}',
|
34
|
-
# :action => '#{route_options[:action]}'"
|
35
|
-
|
36
|
-
class Create
|
37
|
-
def route(route_options)
|
38
|
-
sentinel = 'ActionController::Routing::Routes.draw do |map|'
|
39
|
-
logger.route route_code_log_message(route_options)
|
40
|
-
#TODO add something here to prevent duplicating the route. Like file_contains? or something.
|
41
|
-
gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |m|
|
42
|
-
"#{m}\n #{route_code(route_options)}\n"
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def generate(name)
|
47
|
-
logger.generate "running additional generator: #{name}"
|
48
|
-
Rails::Generator::Scripts::Generate.new.run([name])
|
49
|
-
end
|
50
|
-
|
51
|
-
def rm(relative_destination)
|
52
|
-
destination = destination_path('public/index.html')
|
53
|
-
if File.exist?(destination)
|
54
|
-
logger.rm relative_destination
|
55
|
-
FileUtils.rm(destination)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
class Destroy
|
61
|
-
def route(route_options)
|
62
|
-
logger.remove_route route_code_log_message(route_options)
|
63
|
-
# to_remove = "\n #{route_code(route_options)}"
|
64
|
-
to_remove = "\n #{route_code(route_options)}\n"
|
65
|
-
gsub_file 'config/routes.rb', to_remove, ''
|
66
|
-
end
|
67
|
-
|
68
|
-
def generate(name)
|
69
|
-
logger.destroy "rewinding additional generator: #{name}"
|
70
|
-
Rails::Generator::Scripts::Destroy.new.run([name])
|
71
|
-
end
|
72
|
-
|
73
|
-
def rm(relative_destination)
|
74
|
-
logger.gone "can't replace rm'd file: #{relative_destination}"
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
Description:
|
2
|
-
The startup generator runs all of the startup generators, creating a ready-to-go wireframe layout with navigation and example files.
|
3
|
-
|
4
|
-
Examples:
|
5
|
-
script/generate startup
|
6
|
-
|
7
|
-
|
8
|
-
#TODO UPDATE THIS OUTPUT
|
9
|
-
Template: app/views/layouts/application.html.erb
|
10
|
-
Stylesheet: public/stylesheets/startup.css
|
11
|
-
Helper: app/helpers/startup_helper.rb
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'startups'
|
2
|
-
|
3
|
-
class StartupGenerator < Rails::Generator::Base
|
4
|
-
|
5
|
-
def manifest
|
6
|
-
record do |m|
|
7
|
-
m.generate('startup_content')
|
8
|
-
m.generate('startup_layout')
|
9
|
-
m.generate('startup_nav')
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
protected
|
14
|
-
|
15
|
-
def banner
|
16
|
-
<<-EOS
|
17
|
-
Runs all of the startup generators, creating a ready-to-go wireframe layout with navigation and example files.
|
18
|
-
|
19
|
-
USAGE: #{$0} #{spec.name}
|
20
|
-
EOS
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
Description:
|
2
|
-
The startup_content generator creates a content controller for home and other non-rest pages.
|
3
|
-
|
4
|
-
Examples:
|
5
|
-
script/generate startup_content
|
6
|
-
|
7
|
-
|
8
|
-
#TODO UPDATE THIS OUTPUT
|
9
|
-
Template: app/views/layouts/application.html.erb
|
10
|
-
Stylesheet: public/stylesheets/startup.css
|
11
|
-
Helper: app/helpers/startup_helper.rb
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'startups'
|
2
|
-
|
3
|
-
class StartupContentGenerator < Rails::Generator::Base
|
4
|
-
|
5
|
-
def manifest
|
6
|
-
record do |m|
|
7
|
-
m.directory 'app/helpers'
|
8
|
-
m.directory 'app/controllers'
|
9
|
-
m.directory 'app/views/content'
|
10
|
-
m.directory 'test/functional'
|
11
|
-
|
12
|
-
m.file "content_controller.rb", "app/controllers/content_controller.rb"
|
13
|
-
m.file "home.html.erb", "app/views/content/home.html.erb"
|
14
|
-
m.file "help.html.erb", "app/views/content/help.html.erb"
|
15
|
-
m.file "example.html.erb", "app/views/content/example.html.erb"
|
16
|
-
m.file "content_helper.rb", "app/helpers/content_helper.rb"
|
17
|
-
m.file "content_controller_test.rb", "test/functional/content_controller_test.rb"
|
18
|
-
|
19
|
-
m.route %{
|
20
|
-
map.with_options(:controller => "content") do |content_map|
|
21
|
-
content_map.help 'help', :action => 'help'
|
22
|
-
content_map.placeholder 'placeholder/:name', :action => 'placeholder'
|
23
|
-
end }
|
24
|
-
m.route 'map.root :controller => "content", :action => "home"'
|
25
|
-
|
26
|
-
# example
|
27
|
-
# m.route :name => 'version', :controller => 'version', :action => 'display_version'
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
protected
|
32
|
-
|
33
|
-
def banner
|
34
|
-
<<-EOS
|
35
|
-
Creates content controller for home and other non-rest pages.
|
36
|
-
|
37
|
-
USAGE: #{$0} #{spec.name}
|
38
|
-
EOS
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
Description:
|
2
|
-
The startup_layout generator creates a basic layout with the necessary helpers, stylesheet etc.
|
3
|
-
For now, the startup_nav startup is a prerequisite.
|
4
|
-
|
5
|
-
Examples:
|
6
|
-
script/generate startup_layout
|
7
|
-
|
8
|
-
#TODO UPDATE THIS OUTPUT
|
9
|
-
Template: app/views/layouts/application.html.erb
|
10
|
-
Stylesheet: public/stylesheets/startup.css
|
11
|
-
Helper: app/helpers/startup_helper.rb
|
@@ -1,36 +0,0 @@
|
|
1
|
-
require 'startups'
|
2
|
-
|
3
|
-
class StartupLayoutGenerator < Rails::Generator::Base
|
4
|
-
|
5
|
-
def manifest
|
6
|
-
record do |m|
|
7
|
-
m.directory 'public/stylesheets'
|
8
|
-
m.directory 'app/helpers'
|
9
|
-
m.directory 'app/views/layouts'
|
10
|
-
|
11
|
-
m.file "app/helpers/layout_helper.rb", "app/helpers/layout_helper.rb"
|
12
|
-
|
13
|
-
#TODO add checks here for other startups so the layout can include eg. the nav stuff, etc.
|
14
|
-
#TODO possibly add shway versions of things as well.
|
15
|
-
m.template "app/views/layouts/startup_layout.html.erb", "app/views/layouts/application.html.erb"#, :assigns => { :foo => 'foo' }
|
16
|
-
m.file "app/views/layouts/_startup_layout_footer.html.erb", "app/views/layouts/_footer.html.erb"
|
17
|
-
m.file "app/views/layouts/_startup_layout_header.html.erb", "app/views/layouts/_header.html.erb"
|
18
|
-
|
19
|
-
m.file "public/stylesheets/startup_layout_reset.css", "public/stylesheets/reset.css"
|
20
|
-
m.file "public/stylesheets/startup_layout.css", "public/stylesheets/application.css"
|
21
|
-
|
22
|
-
m.rm 'public/index.html'
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
protected
|
27
|
-
|
28
|
-
def banner
|
29
|
-
<<-EOS
|
30
|
-
Creates a basic layout with the necessary helpers, stylesheet etc.
|
31
|
-
|
32
|
-
USAGE: #{$0} #{spec.name}
|
33
|
-
EOS
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
@@ -1,71 +0,0 @@
|
|
1
|
-
module LayoutHelper
|
2
|
-
|
3
|
-
attr_accessor :title, :heading, :heading_image, :body_class, :crumbs
|
4
|
-
|
5
|
-
#for any options that match setter methods, set them. Raise errors for the rest.
|
6
|
-
def layout_options(options={})
|
7
|
-
return if options.blank?
|
8
|
-
options = options.clone
|
9
|
-
options.keys.each do |key|
|
10
|
-
#if there is a layout_ version of the setter, call it
|
11
|
-
layout_setter = "layout_#{key}=".intern
|
12
|
-
if self.respond_to? layout_setter
|
13
|
-
self.send layout_setter, options.delete(key)
|
14
|
-
next
|
15
|
-
end
|
16
|
-
setter = "#{key}=".intern
|
17
|
-
#if there is a setter, call it
|
18
|
-
if self.respond_to? setter
|
19
|
-
self.send setter, options.delete(key)
|
20
|
-
next
|
21
|
-
end
|
22
|
-
#if there is a no setter, but there is a method, call it with *args
|
23
|
-
#TODO write some tests for varying method signatures
|
24
|
-
if self.respond_to?(key) && (method(key).arity == 1 || method(key).arity <= -2)
|
25
|
-
self.send key, *options.delete(key)
|
26
|
-
next
|
27
|
-
end
|
28
|
-
#if there was no setter and no method available, raise
|
29
|
-
raise "No setter or method was found for the layout_option: #{key}"
|
30
|
-
end
|
31
|
-
nil
|
32
|
-
end
|
33
|
-
|
34
|
-
def layout_title
|
35
|
-
#NOTE: @selected_nav_title may get set by the nav startup if it's installed. Using the instance var makes it easier to mix and match the startups.
|
36
|
-
@title || @selected_nav_title || @heading || 'Default Title (CHANGEME)'
|
37
|
-
end
|
38
|
-
|
39
|
-
def layout_heading(text=@heading,options={})
|
40
|
-
options[:img] = @heading_image unless options.has_key? :img
|
41
|
-
if options[:img].blank?
|
42
|
-
text.blank? ? nil : %{<h1>#{text}</h1>}
|
43
|
-
#TODO make sifrd an option
|
44
|
-
# text.blank? ? nil : %{<h1 class="sifrd">#{text}</h1>}
|
45
|
-
else
|
46
|
-
%{<h1>#{image_tag(options[:img], :alt => text)}</h1>} unless text.blank?
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def layout_crumbs
|
51
|
-
return if @crumbs.blank?
|
52
|
-
html = []
|
53
|
-
html << '<div class="crumbs">'
|
54
|
-
@crumbs.each do |crumb|
|
55
|
-
html << crumb
|
56
|
-
html << '<span>»</span>'
|
57
|
-
end
|
58
|
-
html << '</div>'
|
59
|
-
html.join
|
60
|
-
end
|
61
|
-
|
62
|
-
def layout_body_tag
|
63
|
-
class_att = body_class ? %{ class="#{body_class}"} : nil
|
64
|
-
if @layout_nav
|
65
|
-
%{<body id="#{@layout_nav}"#{class_att}>}
|
66
|
-
else
|
67
|
-
'<body>'
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
end
|
data/rails_generators/startup_layout/templates/app/views/layouts/_startup_layout_footer.html.erb
DELETED
@@ -1,6 +0,0 @@
|
|
1
|
-
<div id="footer">
|
2
|
-
<div id="footer_content">
|
3
|
-
<%# NOTE: the const_defined? check is here to allow this to function if the nav startup wasn't installed, and should be removed after the initial setup. %>
|
4
|
-
<%= render :partial => 'layouts/footer_nav' if Object.const_defined? :NavHelper %>
|
5
|
-
</div>
|
6
|
-
</div>
|
@@ -1,40 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
3
|
-
<head>
|
4
|
-
<title><%%= layout_title %></title>
|
5
|
-
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
|
6
|
-
<meta http-equiv="cache-control" content="no-cache"> <!-- tells browser not to cache -->
|
7
|
-
<meta http-equiv="expires" content="0"> <!-- says that the cache expires 'now' -->
|
8
|
-
<meta http-equiv="pragma" content="no-cache"> <!-- says not to use cached stuff, if there is any -->
|
9
|
-
<%%= javascript_include_tag :defaults %>
|
10
|
-
<%%= stylesheet_link_tag 'reset' %>
|
11
|
-
<%%# NOTE: the const_defined? check is here to allow this to function if the nav startup wasn't installed, and should be removed after the initial setup. %>
|
12
|
-
<%%= stylesheet_link_tag 'nav' if Object.const_defined? :NavHelper %>
|
13
|
-
<%%= stylesheet_link_tag 'application' %>
|
14
|
-
</head>
|
15
|
-
|
16
|
-
<%%= layout_body_tag %>
|
17
|
-
<div id="all">
|
18
|
-
<%%= render :partial => 'layouts/header' unless @omit_header %>
|
19
|
-
<div id="content">
|
20
|
-
<%%= layout_crumbs %>
|
21
|
-
<%%= layout_heading %>
|
22
|
-
<%% if flash[:notice] %>
|
23
|
-
<div class="notice confirm">
|
24
|
-
<%%= flash[:notice] %>
|
25
|
-
</div>
|
26
|
-
<%% end %>
|
27
|
-
<%% if flash[:error ] %>
|
28
|
-
<div class='notice error'>
|
29
|
-
<%%= flash[:error ]%>
|
30
|
-
</div>
|
31
|
-
<%% end %>
|
32
|
-
<%%#= fancy_heading unless @heading.blank? && @right_heading.blank? %>
|
33
|
-
<%%= yield %>
|
34
|
-
</div>
|
35
|
-
<%%= render :partial => 'layouts/footer' %>
|
36
|
-
</div>
|
37
|
-
|
38
|
-
</body>
|
39
|
-
|
40
|
-
</html>
|
@@ -1,23 +0,0 @@
|
|
1
|
-
html,body {background-color:white;font-family:Helvetica, Verdana, Arial, sans-serif;font-size:12px;height:100%;line-height:18px;margin:0px;padding:0px;}
|
2
|
-
|
3
|
-
h1 {font-size: 18px; margin: 10px 0;}
|
4
|
-
h2 {font-size: 14px; font-weight: bold;}
|
5
|
-
h3 {font-size: 12px; font-weight: bold;}
|
6
|
-
|
7
|
-
a {color:#5d5e5e;text-decoration: none;}
|
8
|
-
a:hover, a:active {color:#5d5e5e; text-decoration: underline;}
|
9
|
-
|
10
|
-
#all {background-color:white;color:#5d5e5e;min-height:100%;position:relative;}
|
11
|
-
|
12
|
-
.crumbs {font-size:10px;font-weight:normal;font-style:italic;text-transform:none;height:10px;padding:0;margin:0;}
|
13
|
-
.crumbs a {padding:0;margin:0;}
|
14
|
-
.crumbs span {font-size:12px;margin-left:5px;margin-right:5px;}
|
15
|
-
|
16
|
-
#content {overflow:auto;padding:10px 20px 0px 55px;padding-bottom:30px;width:950px;} /* bottom padding needs to match footer height */
|
17
|
-
|
18
|
-
#masthead {color:#a0a1a2;height:40px;padding-top:15px;width:100%;border-bottom:1px solid #e0e1e2;}
|
19
|
-
#masthead a:active, #masthead a:hover {color:#5d5e5e;text-decoration:underline;}
|
20
|
-
#masthead a:link, #masthead a:visited {color:#a0a1a2;text-decoration:none;}
|
21
|
-
|
22
|
-
#footer {bottom:0px;color:#a0a1a2;height:30px;position:absolute;width:100%;border-top:1px solid #e0e1e2;font-size:10px;}
|
23
|
-
#footer_content {padding:5px 20px;padding-bottom:0px;width:950px;overflow:auto;}
|
@@ -1,47 +0,0 @@
|
|
1
|
-
/* reset reload by Eric Meyer: http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/ */
|
2
|
-
html, body, div, span, applet, object, iframe,
|
3
|
-
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
4
|
-
a, abbr, acronym, address, big, cite, code,
|
5
|
-
del, dfn, em, font, img, ins, kbd, q, s, samp,
|
6
|
-
small, strike, strong, sub, sup, tt, var,
|
7
|
-
dl, dt, dd, ol, ul, li,
|
8
|
-
fieldset, form, label, legend,
|
9
|
-
table, caption, tbody, tfoot, thead, tr, th, td {
|
10
|
-
margin: 0;
|
11
|
-
padding: 0;
|
12
|
-
border: 0;
|
13
|
-
outline: 0;
|
14
|
-
font-weight: inherit;
|
15
|
-
font-style: inherit;
|
16
|
-
font-size: 100%;
|
17
|
-
font-family: inherit;
|
18
|
-
vertical-align: baseline;
|
19
|
-
}
|
20
|
-
/* remember to define focus styles! */
|
21
|
-
:focus {
|
22
|
-
outline: 0;
|
23
|
-
}
|
24
|
-
body {
|
25
|
-
line-height: 1;
|
26
|
-
color: black;
|
27
|
-
background: white;
|
28
|
-
}
|
29
|
-
ol, ul {
|
30
|
-
list-style: none;
|
31
|
-
}
|
32
|
-
/* tables still need 'cellspacing="0"' in the markup */
|
33
|
-
table {
|
34
|
-
border-collapse: separate;
|
35
|
-
border-spacing: 0;
|
36
|
-
}
|
37
|
-
caption, th, td {
|
38
|
-
text-align: left;
|
39
|
-
font-weight: normal;
|
40
|
-
}
|
41
|
-
blockquote:before, blockquote:after,
|
42
|
-
q:before, q:after {
|
43
|
-
content: "";
|
44
|
-
}
|
45
|
-
blockquote, q {
|
46
|
-
quotes: "" "";
|
47
|
-
}
|
@@ -1,12 +0,0 @@
|
|
1
|
-
Description:
|
2
|
-
The startup_nav generator creates generic navigation with a customizable helper and stylesheet.
|
3
|
-
|
4
|
-
With no arguments, a top_nav partial and helper_method will be generated.
|
5
|
-
All arguments given to the generator will add additional nav partial and helper method.
|
6
|
-
|
7
|
-
Examples:
|
8
|
-
script/generate startup_nav
|
9
|
-
|
10
|
-
Template: app/views/layouts/_top_nav.html.erb
|
11
|
-
Stylesheet: public/stylesheets/nav.css
|
12
|
-
Helper: app/helpers/nav_helper.rb
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'startups'
|
2
|
-
|
3
|
-
class StartupNavGenerator < Rails::Generator::Base
|
4
|
-
|
5
|
-
def manifest
|
6
|
-
record do |m|
|
7
|
-
m.directory 'app/views/layouts'
|
8
|
-
m.directory 'public/stylesheets'
|
9
|
-
m.directory 'app/helpers'
|
10
|
-
|
11
|
-
#add top and footer by default
|
12
|
-
unless @args.include? "top"
|
13
|
-
@args << "top"
|
14
|
-
@args << "footer"
|
15
|
-
end
|
16
|
-
|
17
|
-
m.template "nav.css", "public/stylesheets/nav.css", :assigns => { :names => @args }
|
18
|
-
m.template "nav_helper.rb", "app/helpers/nav_helper.rb", :assigns => { :names => @args }
|
19
|
-
@args.each do |name|
|
20
|
-
m.template "_nav.html.erb", "app/views/layouts/_#{name}_nav.html.erb", :assigns => { :name => name }
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
protected
|
26
|
-
|
27
|
-
def banner
|
28
|
-
<<-EOS
|
29
|
-
Creates generic navigation with a customizable helper and stylesheet.
|
30
|
-
|
31
|
-
USAGE: #{$0} #{spec.name}
|
32
|
-
EOS
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
<% names.each do |name|
|
2
|
-
css_id = (name.to_s == 'top') ? 'nav' : "#{name}_nav"
|
3
|
-
selected_color = (name.to_s == 'footer') ? '#5d5e5e' : 'black'
|
4
|
-
%>
|
5
|
-
|
6
|
-
/************
|
7
|
-
<%= css_id.upcase %> STYLES
|
8
|
-
************/
|
9
|
-
<% if name.to_s == 'footer' %>
|
10
|
-
#footer_nav {float:right;}
|
11
|
-
#footer_nav ul {list-style-type:none;}
|
12
|
-
#footer_nav li {float:left;margin-right:20px;}
|
13
|
-
#footer_nav a {display:block;position:relative;text-decoration:none;text-transform:uppercase;}
|
14
|
-
#footer_nav a:visited {color:#a0a1a2;text-decoration:none;}
|
15
|
-
#footer_nav a:link {color:#a0a1a2;text-decoration:none;}
|
16
|
-
#footer_nav a:hover {color:#5d5e5e;text-decoration:underline;}
|
17
|
-
#footer_nav a:active {color:#5d5e5e;text-decoration:underline;}
|
18
|
-
<% else %>
|
19
|
-
#<%= css_id %> {margin-left:22px;}
|
20
|
-
#<%= css_id %> ul {list-style-type:none;overflow:auto;}
|
21
|
-
#<%= css_id %> li {float:left;}
|
22
|
-
#<%= css_id %> a {display:block;height:20px;padding:5px 10px;position:relative;text-decoration:none;text-transform:uppercase;}
|
23
|
-
#<%= css_id %> a:visited {color:#a0a1a2;text-decoration:none;}
|
24
|
-
#<%= css_id %> a:link {color:#a0a1a2;text-decoration:none;}
|
25
|
-
#<%= css_id %> a:hover {color:#5d5e5e;text-decoration:none;}
|
26
|
-
#<%= css_id %> a:active {color:#5d5e5e;text-decoration:none;}
|
27
|
-
<% end %>
|
28
|
-
|
29
|
-
/* any additional menu items need to be added here for them to be styled correctly when selected. */
|
30
|
-
body#home a#<%= css_id %>_home,
|
31
|
-
body#example a#<%= css_id %>_example,
|
32
|
-
body#help a#<%= css_id %>_help {
|
33
|
-
color:<%= selected_color %>;font-weight:bold;
|
34
|
-
}
|
35
|
-
|
36
|
-
<% end %>
|
@@ -1,76 +0,0 @@
|
|
1
|
-
module NavHelper
|
2
|
-
|
3
|
-
#change the hash below to include the actual items you need in your navs. Use the :placement option to specify which nav an item goes in if there are multiple navs.
|
4
|
-
def configure_nav_items
|
5
|
-
[
|
6
|
-
<%- names.each do |name| -%>
|
7
|
-
#nav items for :<%= name %>
|
8
|
-
<%- unless name.to_s == 'footer' %>
|
9
|
-
{:id => :home, :label => 'Home', :url => root_path, :placement => :<%= name %>, :title => 'Home Page'},
|
10
|
-
{:id => :example, :label => 'Example', :url => placeholder_path(:example), :placement => :<%= name %>, :title => 'Placeholder Example Page'},
|
11
|
-
<%- end -%>
|
12
|
-
{:id => :help, :label => 'Help', :url => help_path, :placement => :<%= name %>},
|
13
|
-
<%- end -%>
|
14
|
-
]
|
15
|
-
end
|
16
|
-
|
17
|
-
def layout_nav_items(placement=nil)
|
18
|
-
init_layout_nav_items
|
19
|
-
if placement.nil?
|
20
|
-
@layout_nav_items
|
21
|
-
else
|
22
|
-
layout_nav_items_by_placement(placement)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def init_layout_nav_items
|
27
|
-
unless @layout_nav_items
|
28
|
-
@layout_nav_items = configure_nav_items
|
29
|
-
@layout_nav_items.each do |nav_item|
|
30
|
-
nav_item[:label] ||= nav_item[:id].to_s.titleize
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def layout_nav_items_by_placement(placement)
|
36
|
-
@layout_nav_items_by_placement ||= {}
|
37
|
-
unless @layout_nav_items_by_placement[placement]
|
38
|
-
@layout_nav_items_by_placement[placement] = []
|
39
|
-
@layout_nav_items.each do |nav_item|
|
40
|
-
@layout_nav_items_by_placement[placement] << nav_item if nav_item[:placement] == placement
|
41
|
-
end
|
42
|
-
end
|
43
|
-
@layout_nav_items_by_placement[placement]
|
44
|
-
end
|
45
|
-
|
46
|
-
attr_accessor :layout_nav
|
47
|
-
|
48
|
-
def layout_nav=(value)
|
49
|
-
@layout_nav = value
|
50
|
-
@selected_nav_title = (selected_nav_item ? selected_nav_item[:title] : nil)
|
51
|
-
end
|
52
|
-
|
53
|
-
def layout_nav_ids
|
54
|
-
@layout_nav_ids ||= layout_nav_items.collect{|nav_item|nav_item[:id]}
|
55
|
-
end
|
56
|
-
|
57
|
-
def selected_nav_item
|
58
|
-
@selected_nav_item ||= layout_nav_item(layout_nav)
|
59
|
-
end
|
60
|
-
|
61
|
-
def layout_nav_item(nav_id)
|
62
|
-
nav_id = nav_id.intern if nav_id.respond_to? :intern
|
63
|
-
layout_nav_items.each do |nav_item|
|
64
|
-
return nav_item if nav_item[:id] == nav_id
|
65
|
-
end
|
66
|
-
nil
|
67
|
-
end
|
68
|
-
|
69
|
-
def link_to_nav_item(nav_item)
|
70
|
-
items = layout_nav_items(nav_item[:placement])
|
71
|
-
css_id = "#{nav_item[:placement]}_#{nav_item[:id]}"
|
72
|
-
css_class = (items.index(nav_item) == items.size-1) ? :last : nil
|
73
|
-
link_to(nav_item[:label], nav_item[:url], :id => css_id, :class => css_class )
|
74
|
-
end
|
75
|
-
|
76
|
-
end
|
data/startups.gemspec
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
Gem::Specification.new do |s|
|
4
|
-
s.name = %q{startups}
|
5
|
-
s.version = "0.0.2.2"
|
6
|
-
|
7
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
-
s.authors = ["Ryan Owens"]
|
9
|
-
s.date = %q{2009-10-19}
|
10
|
-
s.description = %q{A collection of Rails "startups" for features such as a standard layout, navigation and forms with customizable error handling.}
|
11
|
-
s.email = %q{ryan (at) infoether (dot) com}
|
12
|
-
s.extra_rdoc_files = ["CHANGELOG", "lib/startups.rb", "LICENSE", "README", "TODO"]
|
13
|
-
s.files = ["CHANGELOG", "lib/startups.rb", "LICENSE", "Manifest", "rails_generators/startup/startup_generator.rb", "rails_generators/startup/USAGE", "rails_generators/startup_content/startup_content_generator.rb", "rails_generators/startup_content/templates/content_controller.rb", "rails_generators/startup_content/templates/content_controller_test.rb", "rails_generators/startup_content/templates/content_helper.rb", "rails_generators/startup_content/templates/example.html.erb", "rails_generators/startup_content/templates/help.html.erb", "rails_generators/startup_content/templates/home.html.erb", "rails_generators/startup_content/USAGE", "rails_generators/startup_layout/startup_layout_generator.rb", "rails_generators/startup_layout/templates/app/helpers/layout_helper.rb", "rails_generators/startup_layout/templates/app/views/layouts/_startup_layout_footer.html.erb", "rails_generators/startup_layout/templates/app/views/layouts/_startup_layout_header.html.erb", "rails_generators/startup_layout/templates/app/views/layouts/startup_layout.html.erb", "rails_generators/startup_layout/templates/public/stylesheets/startup_layout.css", "rails_generators/startup_layout/templates/public/stylesheets/startup_layout_reset.css", "rails_generators/startup_layout/USAGE", "rails_generators/startup_nav/startup_nav_generator.rb", "rails_generators/startup_nav/templates/_nav.html.erb", "rails_generators/startup_nav/templates/nav.css", "rails_generators/startup_nav/templates/nav_helper.rb", "rails_generators/startup_nav/USAGE", "Rakefile", "README", "TODO", "startups.gemspec"]
|
14
|
-
s.homepage = %q{http://rubyforge.org/projects/startups}
|
15
|
-
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Startups", "--main", "README"]
|
16
|
-
s.require_paths = ["lib"]
|
17
|
-
s.rubyforge_project = %q{startups}
|
18
|
-
s.rubygems_version = %q{1.3.5}
|
19
|
-
s.summary = %q{A collection of Rails "startups" for features such as a standard layout, navigation and forms with customizable error handling.}
|
20
|
-
|
21
|
-
if s.respond_to? :specification_version then
|
22
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
23
|
-
s.specification_version = 3
|
24
|
-
|
25
|
-
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
26
|
-
else
|
27
|
-
end
|
28
|
-
else
|
29
|
-
end
|
30
|
-
end
|