headstart 0.1.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +9 -8
- data/Rakefile +5 -5
- data/VERSION +1 -1
- data/app/views/generic_mailer/change_password.html.erb +1 -3
- data/app/views/passwords/edit.html.erb +1 -0
- data/app/views/passwords/new.html.erb +1 -0
- data/app/views/sessions/new.html.erb +4 -8
- data/app/views/users/new.html.erb +1 -0
- data/generators/headstart/headstart_generator.rb +26 -1
- data/generators/headstart/templates/app/helpers/application_helper.rb +27 -0
- data/generators/headstart/templates/app/views/sessions/index.html.erb +2 -1
- data/generators/headstart/templates/application.html.erb +4 -4
- data/generators/headstart/templates/layout.css +26 -0
- data/generators/headstart/templates/modernizr-1.5.min.js +28 -0
- data/generators/headstart/templates/style.css +4 -4
- data/generators/headstart/templates/text.css +35 -1
- metadata +56 -30
data/README.rdoc
CHANGED
@@ -1,8 +1,7 @@
|
|
1
|
-
=
|
1
|
+
= Headstart
|
2
2
|
|
3
|
-
Blue Light Special is a derivative from Thoughtbot's
|
4
|
-
{Clearance}[http://github.com/thoughtbot/clearance] gem.
|
5
|
-
opinionated starting point for many of our projects at Envy Labs.
|
3
|
+
Headstart is an enhancement based on Blue Light Special which is a derivative from Thoughtbot's
|
4
|
+
{Clearance}[http://github.com/thoughtbot/clearance] gem.
|
6
5
|
|
7
6
|
In addition to the basic email and password authentication provided by
|
8
7
|
Clearance, a default Blue Light Special installation includes:
|
@@ -21,9 +20,9 @@ Clearance, a default Blue Light Special installation includes:
|
|
21
20
|
|
22
21
|
== Setup
|
23
22
|
|
24
|
-
Note: Before
|
23
|
+
Note: Before Headstart can run, the database must be created, the database.yml configured, and permissions granted to the user. The 'create-rails-dev-db' gem does all this. Run it with 'create-rails-dev-db' within the Rails app first.
|
25
24
|
|
26
|
-
After installing the
|
25
|
+
After installing the Headstart gem, require it in your Rails app and run
|
27
26
|
the headstart generator.
|
28
27
|
|
29
28
|
In your config/environment.rb:
|
@@ -93,6 +92,8 @@ After you've finished setting up your Facebook app, grab its API key and secret
|
|
93
92
|
and put them in config/headstart.yml.
|
94
93
|
|
95
94
|
== To Build the Gem ==
|
95
|
+
rake gemspec
|
96
|
+
|
96
97
|
gem build headstart.gemspec
|
97
98
|
|
98
99
|
sudo gem install headstart.gem
|
@@ -111,7 +112,7 @@ gem yank headstart -v 0.1.0
|
|
111
112
|
7. Added a facebook_logout method that facebook can call via its Post-Remove Callback, to remove user from app
|
112
113
|
8. Changed to user can still log in even though they haven't confirmed their email (they just aren't active)
|
113
114
|
9. The change password function was using the confirmation token instead of the password reset token in several spots
|
114
|
-
|
115
|
+
10. Implements http://www.modernizr.com/docs/
|
115
116
|
== Copyright
|
116
117
|
|
117
|
-
Copyright (c) 2010
|
118
|
+
Copyright (c) 2010 Agile Nomads LLC. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -6,11 +6,11 @@ begin
|
|
6
6
|
require 'jeweler'
|
7
7
|
Jeweler::Tasks.new do |gem|
|
8
8
|
gem.name = "headstart"
|
9
|
-
gem.summary = %Q{Rails
|
10
|
-
gem.description = %Q{
|
11
|
-
gem.email = "
|
12
|
-
gem.homepage = "http://github.com/
|
13
|
-
gem.authors = ["
|
9
|
+
gem.summary = %Q{Headstart provides the Rails developer a headstart in creating a Rails app providing basic user authentication features.}
|
10
|
+
gem.description = %Q{Based on Envy Labs Blue Light Special, but modified to provide more options and features.}
|
11
|
+
gem.email = "brian@burridge.net"
|
12
|
+
gem.homepage = "http://github.com/bburridge/Headstart"
|
13
|
+
gem.authors = ["Bran Burridge"]
|
14
14
|
gem.files = FileList["[A-Z]*", "{app,config,generators,lib,shoulda_macros,rails}/**/*"]
|
15
15
|
|
16
16
|
gem.add_dependency "mini_fb", '=0.2.2'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
@@ -2,8 +2,6 @@ Someone, hopefully you, has requested that we send you a link to change your pas
|
|
2
2
|
|
3
3
|
Here's the link:
|
4
4
|
|
5
|
-
<%=
|
6
|
-
:token => @user.confirmation_token,
|
7
|
-
:escape => false) %>
|
5
|
+
<%= @url %>
|
8
6
|
|
9
7
|
If you didn't request this, ignore this email. Don't worry. Your password hasn't been changed.
|
@@ -1,3 +1,4 @@
|
|
1
|
+
<% content_for :title do %>Sign in<% end %>
|
1
2
|
<%- if Headstart.configuration.use_facebook_connect -%>
|
2
3
|
<%- if request.ssl? -%>
|
3
4
|
<%= javascript_include_tag 'https://ssl.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US' %>
|
@@ -23,6 +24,8 @@
|
|
23
24
|
<%= form.password_field :password %>
|
24
25
|
</div>
|
25
26
|
<div class="submit_field">
|
27
|
+
<%= link_to "Forgot password?", new_password_path %>
|
28
|
+
|
26
29
|
<%= form.submit "Sign in", :disable_with => "Please wait..." %>
|
27
30
|
<%- if Headstart.configuration.use_facebook_connect -%>
|
28
31
|
or <fb:login-button onlogin="facebook_onlogin();" length="long" v="2" size="large"></fb:login-button>
|
@@ -30,14 +33,7 @@
|
|
30
33
|
</div>
|
31
34
|
<% end %>
|
32
35
|
|
33
|
-
|
34
|
-
<li>
|
35
|
-
<%= link_to "Sign up", sign_up_path %>
|
36
|
-
</li>
|
37
|
-
<li>
|
38
|
-
<%= link_to "Forgot password?", new_password_path %>
|
39
|
-
</li>
|
40
|
-
</ul>
|
36
|
+
|
41
37
|
|
42
38
|
<%- if Headstart.configuration.use_facebook_connect -%>
|
43
39
|
<script type="text/javascript">
|
@@ -14,13 +14,38 @@ class HeadstartGenerator < Rails::Generator::Base
|
|
14
14
|
m.directory File.join("app", "views", "sessions")
|
15
15
|
m.file "application.html.erb", "app/views/layouts/application.html.erb"
|
16
16
|
m.file "app/views/sessions/index.html.erb", "app/views/sessions/index.html.erb"
|
17
|
+
m.insert_into "app/helpers/application_helper.rb",
|
18
|
+
'def format_title(title)
|
19
|
+
title_words = title.split(" ")
|
20
|
+
|
21
|
+
if title_words.size >= 2
|
22
|
+
f_half_loc = (title_words.size/2.0).ceil
|
23
|
+
content = "<span class=\'first_half\'>"
|
24
|
+
(0..f_half_loc-1).each do |i|
|
25
|
+
content += title_words[i]
|
26
|
+
end
|
27
|
+
content += "</span>"
|
28
|
+
|
29
|
+
content += "<span class=\'second_half\'>"
|
30
|
+
(f_half_loc..title_words.size-1).each do |i|
|
31
|
+
content += title_words[i]
|
32
|
+
end
|
33
|
+
content += "</span>"
|
34
|
+
|
35
|
+
else
|
36
|
+
content = title
|
37
|
+
end
|
38
|
+
return content
|
39
|
+
end'
|
17
40
|
|
18
41
|
m.directory File.join("public", "stylesheets")
|
19
42
|
m.file "style.css", "public/stylesheets/style.css"
|
20
|
-
m.file "
|
43
|
+
m.file "report.css", "public/stylesheets/report.css"
|
21
44
|
m.file "reset.css", "public/stylesheets/reset.css"
|
22
45
|
m.file "text.css", "public/stylesheets/text.css"
|
23
46
|
m.file "layout.css", "public/stylesheets/layout.css"
|
47
|
+
|
48
|
+
m.file "modernizr-1.5.min.js", "public/javascripts/modernizr-1.5.min.js"
|
24
49
|
|
25
50
|
m.file "xd_receiver.html", "public/xd_receiver.html"
|
26
51
|
m.file "xd_receiver_ssl.html", "public/xd_receiver_ssl.html"
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# Methods added to this helper will be available to all templates in the application.
|
2
|
+
module ApplicationHelper
|
3
|
+
|
4
|
+
def format_title(title)
|
5
|
+
title_words = title.split(" ")
|
6
|
+
|
7
|
+
if title_words.size >= 2
|
8
|
+
f_half_loc = (title_words.size/2.0).ceil
|
9
|
+
content = "<span class='first_half'>"
|
10
|
+
(0..f_half_loc-1).each do |i|
|
11
|
+
content += title_words[i]
|
12
|
+
end
|
13
|
+
content += "</span>"
|
14
|
+
|
15
|
+
content += "<span class='second_half'>"
|
16
|
+
(f_half_loc..title_words.size-1).each do |i|
|
17
|
+
content += title_words[i]
|
18
|
+
end
|
19
|
+
content += "</span>"
|
20
|
+
|
21
|
+
else
|
22
|
+
content = title
|
23
|
+
end
|
24
|
+
return content
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -1 +1,2 @@
|
|
1
|
-
Home
|
1
|
+
<% content_for :title do %>Home<% end %>
|
2
|
+
<p><%= Settings.description %></p>
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
2
|
-
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" xml:lang="en-US" lang="en-US" xmlns:fb="http://www.facebook.com/2008/fbml">
|
2
|
+
<html class="no-js" xmlns="http://www.w3.org/1999/xhtml" dir="ltr" xml:lang="en-US" lang="en-US" xmlns:fb="http://www.facebook.com/2008/fbml">
|
3
3
|
<head>
|
4
4
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
|
5
|
-
<title><%= yield(:title) %></title>
|
5
|
+
<title><%= yield(:title) %><% if @content_for_title %> - <% end %><%= Settings.title %></title>
|
6
6
|
<meta name="description" content="<%= yield(:description) %>" />
|
7
7
|
<meta name="keywords" content="<%= yield(:keywords) %>" />
|
8
8
|
<meta name="robots" content="INDEX,FOLLOW" />
|
@@ -14,14 +14,14 @@
|
|
14
14
|
<%- else -%>
|
15
15
|
<%= javascript_include_tag 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js' %>
|
16
16
|
<%- end -%>
|
17
|
-
<%= javascript_include_tag 'application' %>
|
17
|
+
<%= javascript_include_tag 'application','modernizr-1.5.min' %>
|
18
18
|
</head>
|
19
19
|
<body>
|
20
20
|
|
21
21
|
<div id="header" class="container_12">
|
22
22
|
|
23
23
|
<div id="title" class="grid_6 ">
|
24
|
-
|
24
|
+
<%= link_to format_title(Settings.title), "/" %>
|
25
25
|
</div>
|
26
26
|
|
27
27
|
<div id="nav" class="grid_6 ">
|
@@ -1,3 +1,29 @@
|
|
1
|
+
#header {
|
2
|
+
height:80px;
|
3
|
+
border-bottom:1px solid #000;
|
4
|
+
}
|
5
|
+
#nav {
|
6
|
+
margin-top:54px;
|
7
|
+
height:30px;
|
8
|
+
text-align:right;
|
9
|
+
}
|
10
|
+
#content {
|
11
|
+
width: 940px;
|
12
|
+
padding:10px;
|
13
|
+
min-height:400px;
|
14
|
+
}
|
15
|
+
#footer {
|
16
|
+
border-top:1px solid #aaa;
|
17
|
+
}
|
18
|
+
#meta {
|
19
|
+
text-align:right;
|
20
|
+
}
|
21
|
+
label {
|
22
|
+
display:block;
|
23
|
+
}
|
24
|
+
.text_field, .submit_field {
|
25
|
+
margin-top:6px;
|
26
|
+
}
|
1
27
|
|
2
28
|
/* Containers
|
3
29
|
----------------------------------------------------------------------------------------------------*/
|
@@ -0,0 +1,28 @@
|
|
1
|
+
/*!
|
2
|
+
* Modernizr JavaScript library 1.5
|
3
|
+
* http://www.modernizr.com/
|
4
|
+
*
|
5
|
+
* Copyright (c) 2009-2010 Faruk Ates - http://farukat.es/
|
6
|
+
* Dual-licensed under the BSD and MIT licenses.
|
7
|
+
* http://www.modernizr.com/license/
|
8
|
+
*
|
9
|
+
* Featuring major contributions by
|
10
|
+
* Paul Irish - http://paulirish.com
|
11
|
+
*/
|
12
|
+
window.Modernizr=function(i,e,I){function C(a,b){for(var c in a)if(m[a[c]]!==I&&(!b||b(a[c],D)))return true}function r(a,b){var c=a.charAt(0).toUpperCase()+a.substr(1);return!!C([a,"Webkit"+c,"Moz"+c,"O"+c,"ms"+c,"Khtml"+c],b)}function P(){j[E]=function(a){for(var b=0,c=a.length;b<c;b++)J[a[b]]=!!(a[b]in n);return J}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" "));j[Q]=function(a){for(var b=0,c,h=a.length;b<h;b++){n.setAttribute("type",a[b]);if(c=n.type!==
|
13
|
+
"text"){n.value=K;/tel|search/.test(n.type)||(c=/url|email/.test(n.type)?n.checkValidity&&n.checkValidity()===false:n.value!=K)}L[a[b]]=!!c}return L}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var j={},s=e.documentElement,D=e.createElement("modernizr"),m=D.style,n=e.createElement("input"),E="input",Q=E+"types",K=":)",M=Object.prototype.toString,y=" -o- -moz- -ms- -webkit- -khtml- ".split(" "),d={},L={},J={},N=[],u=function(){var a={select:"input",
|
14
|
+
change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"},b={};return function(c,h){var t=arguments.length==1;if(t&&b[c])return b[c];h=h||document.createElement(a[c]||"div");c="on"+c;var g=c in h;if(!g&&h.setAttribute){h.setAttribute(c,"return;");g=typeof h[c]=="function"}h=null;return t?(b[c]=g):g}}(),F={}.hasOwnProperty,O;O=typeof F!=="undefined"&&typeof F.call!=="undefined"?function(a,b){return F.call(a,b)}:function(a,b){return b in a&&typeof a.constructor.prototype[b]==="undefined"};
|
15
|
+
d.canvas=function(){return!!e.createElement("canvas").getContext};d.canvastext=function(){return!!(d.canvas()&&typeof e.createElement("canvas").getContext("2d").fillText=="function")};d.geolocation=function(){return!!navigator.geolocation};d.crosswindowmessaging=function(){return!!i.postMessage};d.websqldatabase=function(){var a=!!i.openDatabase;if(a)try{a=!!openDatabase("testdb","1.0","html5 test db",2E5)}catch(b){a=false}return a};d.indexedDB=function(){return!!i.indexedDB};d.hashchange=function(){return u("hashchange",
|
16
|
+
i)&&(document.documentMode===I||document.documentMode>7)};d.historymanagement=function(){return!!(i.history&&history.pushState)};d.draganddrop=function(){return u("drag")&&u("dragstart")&&u("dragenter")&&u("dragover")&&u("dragleave")&&u("dragend")&&u("drop")};d.websockets=function(){return"WebSocket"in i};d.rgba=function(){m.cssText="background-color:rgba(150,255,150,.5)";return(""+m.backgroundColor).indexOf("rgba")!==-1};d.hsla=function(){m.cssText="background-color:hsla(120,40%,100%,.5)";return(""+
|
17
|
+
m.backgroundColor).indexOf("rgba")!==-1};d.multiplebgs=function(){m.cssText="background:url(//:),url(//:),red url(//:)";return/(url\s*\(.*?){3}/.test(m.background)};d.backgroundsize=function(){return r("backgroundSize")};d.borderimage=function(){return r("borderImage")};d.borderradius=function(){return r("borderRadius","",function(a){return(""+a).indexOf("orderRadius")!==-1})};d.boxshadow=function(){return r("boxShadow")};d.opacity=function(){var a=y.join("opacity:.5;")+"";m.cssText=a;return(""+m.opacity).indexOf("0.5")!==
|
18
|
+
-1};d.cssanimations=function(){return r("animationName")};d.csscolumns=function(){return r("columnCount")};d.cssgradients=function(){var a=("background-image:"+y.join("gradient(linear,left top,right bottom,from(#9f9),to(white));background-image:")+y.join("linear-gradient(left top,#9f9, white);background-image:")).slice(0,-17);m.cssText=a;return(""+m.backgroundImage).indexOf("gradient")!==-1};d.cssreflections=function(){return r("boxReflect")};d.csstransforms=function(){return!!C(["transformProperty",
|
19
|
+
"WebkitTransform","MozTransform","OTransform","msTransform"])};d.csstransforms3d=function(){var a=!!C(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]);if(a){var b=document.createElement("style"),c=e.createElement("div");b.textContent="@media ("+y.join("transform-3d),(")+"modernizr){#modernizr{height:3px}}";e.getElementsByTagName("head")[0].appendChild(b);c.id="modernizr";s.appendChild(c);a=c.offsetHeight===3;b.parentNode.removeChild(b);c.parentNode.removeChild(c)}return a};
|
20
|
+
d.csstransitions=function(){return r("transitionProperty")};d.fontface=function(){var a;if(/*@cc_on@if(@_jscript_version>=5)!@end@*/0)a=true;else{var b=e.createElement("style"),c=e.createElement("span"),h,t=false,g=e.body,o,w;b.textContent="@font-face{font-family:testfont;src:url('data:font/ttf;base64,AAEAAAAMAIAAAwBAT1MvMliohmwAAADMAAAAVmNtYXCp5qrBAAABJAAAANhjdnQgACICiAAAAfwAAAAEZ2FzcP//AAMAAAIAAAAACGdseWYv5OZoAAACCAAAANxoZWFk69bnvwAAAuQAAAA2aGhlYQUJAt8AAAMcAAAAJGhtdHgGDgC4AAADQAAAABRsb2NhAIQAwgAAA1QAAAAMbWF4cABVANgAAANgAAAAIG5hbWUgXduAAAADgAAABPVwb3N03NkzmgAACHgAAAA4AAECBAEsAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAACAAMDAAAAAAAAgAACbwAAAAoAAAAAAAAAAFBmRWQAAAAgqS8DM/8zAFwDMwDNAAAABQAAAAAAAAAAAAMAAAADAAAAHAABAAAAAABGAAMAAQAAAK4ABAAqAAAABgAEAAEAAgAuqQD//wAAAC6pAP///9ZXAwAAAAAAAAACAAAABgBoAAAAAAAvAAEAAAAAAAAAAAAAAAAAAAABAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEACoAAAAGAAQAAQACAC6pAP//AAAALqkA////1lcDAAAAAAAAAAIAAAAiAogAAAAB//8AAgACACIAAAEyAqoAAwAHAC6xAQAvPLIHBADtMrEGBdw8sgMCAO0yALEDAC88sgUEAO0ysgcGAfw8sgECAO0yMxEhESczESMiARDuzMwCqv1WIgJmAAACAFUAAAIRAc0ADwAfAAATFRQWOwEyNj0BNCYrASIGARQGKwEiJj0BNDY7ATIWFX8aIvAiGhoi8CIaAZIoN/43KCg3/jcoAWD0JB4eJPQkHh7++EY2NkbVRjY2RgAAAAABAEH/+QCdAEEACQAANjQ2MzIWFAYjIkEeEA8fHw8QDxwWFhwWAAAAAQAAAAIAAIuYbWpfDzz1AAsEAAAAAADFn9IuAAAAAMWf0i797/8zA4gDMwAAAAgAAgAAAAAAAAABAAADM/8zAFwDx/3v/98DiAABAAAAAAAAAAAAAAAAAAAABQF2ACIAAAAAAVUAAAJmAFUA3QBBAAAAKgAqACoAWgBuAAEAAAAFAFAABwBUAAQAAgAAAAEAAQAAAEAALgADAAMAAAAQAMYAAQAAAAAAAACLAAAAAQAAAAAAAQAhAIsAAQAAAAAAAgAFAKwAAQAAAAAAAwBDALEAAQAAAAAABAAnAPQAAQAAAAAABQAKARsAAQAAAAAABgAmASUAAQAAAAAADgAaAUsAAwABBAkAAAEWAWUAAwABBAkAAQBCAnsAAwABBAkAAgAKAr0AAwABBAkAAwCGAscAAwABBAkABABOA00AAwABBAkABQAUA5sAAwABBAkABgBMA68AAwABBAkADgA0A/tDb3B5cmlnaHQgMjAwOSBieSBEYW5pZWwgSm9obnNvbi4gIFJlbGVhc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgT3BlbiBGb250IExpY2Vuc2UuIEtheWFoIExpIGdseXBocyBhcmUgcmVsZWFzZWQgdW5kZXIgdGhlIEdQTCB2ZXJzaW9uIDMuYmFlYzJhOTJiZmZlNTAzMiAtIHN1YnNldCBvZiBKdXJhTGlnaHRiYWVjMmE5MmJmZmU1MDMyIC0gc3Vic2V0IG9mIEZvbnRGb3JnZSAyLjAgOiBKdXJhIExpZ2h0IDogMjMtMS0yMDA5YmFlYzJhOTJiZmZlNTAzMiAtIHN1YnNldCBvZiBKdXJhIExpZ2h0VmVyc2lvbiAyIGJhZWMyYTkyYmZmZTUwMzIgLSBzdWJzZXQgb2YgSnVyYUxpZ2h0aHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkwAQwBvAHAAeQByAGkAZwBoAHQAIAAyADAAMAA5ACAAYgB5ACAARABhAG4AaQBlAGwAIABKAG8AaABuAHMAbwBuAC4AIAAgAFIAZQBsAGUAYQBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAdABlAHIAbQBzACAAbwBmACAAdABoAGUAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUALgAgAEsAYQB5AGEAaAAgAEwAaQAgAGcAbAB5AHAAaABzACAAYQByAGUAIAByAGUAbABlAGEAcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAEcAUABMACAAdgBlAHIAcwBpAG8AbgAgADMALgBiAGEAZQBjADIAYQA5ADIAYgBmAGYAZQA1ADAAMwAyACAALQAgAHMAdQBiAHMAZQB0ACAAbwBmACAASgB1AHIAYQBMAGkAZwBoAHQAYgBhAGUAYwAyAGEAOQAyAGIAZgBmAGUANQAwADMAMgAgAC0AIABzAHUAYgBzAGUAdAAgAG8AZgAgAEYAbwBuAHQARgBvAHIAZwBlACAAMgAuADAAIAA6ACAASgB1AHIAYQAgAEwAaQBnAGgAdAAgADoAIAAyADMALQAxAC0AMgAwADAAOQBiAGEAZQBjADIAYQA5ADIAYgBmAGYAZQA1ADAAMwAyACAALQAgAHMAdQBiAHMAZQB0ACAAbwBmACAASgB1AHIAYQAgAEwAaQBnAGgAdABWAGUAcgBzAGkAbwBuACAAMgAgAGIAYQBlAGMAMgBhADkAMgBiAGYAZgBlADUAMAAzADIAIAAtACAAcwB1AGIAcwBlAHQAIABvAGYAIABKAHUAcgBhAEwAaQBnAGgAdABoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAAAAAAgAAAAAAAP+BADMAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQACAQIAEQt6ZXJva2F5YWhsaQ==')}";
|
21
|
+
e.getElementsByTagName("head")[0].appendChild(b);c.setAttribute("style","font:99px _,arial,helvetica;position:absolute;visibility:hidden");if(!g){g=s.appendChild(e.createElement("fontface"));t=true}c.innerHTML="........";c.id="fonttest";g.appendChild(c);h=c.offsetWidth*c.offsetHeight;c.style.font="99px testfont,_,arial,helvetica";a=h!==c.offsetWidth*c.offsetHeight;var v=function(){if(g.parentNode){a=j.fontface=h!==c.offsetWidth*c.offsetHeight;s.className=s.className.replace(/(no-)?fontface\b/,"")+
|
22
|
+
(a?" ":" no-")+"fontface"}};setTimeout(v,75);setTimeout(v,150);addEventListener("load",function(){v();(w=true)&&o&&o(a);setTimeout(function(){t||(g=c);g.parentNode.removeChild(g);b.parentNode.removeChild(b)},50)},false)}j._fontfaceready=function(p){w||a?p(a):(o=p)};return a||h!==c.offsetWidth};d.video=function(){var a=e.createElement("video"),b=!!a.canPlayType;if(b){b=new Boolean(b);b.ogg=a.canPlayType('video/ogg; codecs="theora"');b.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"');b.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"')}return b};
|
23
|
+
d.audio=function(){var a=e.createElement("audio"),b=!!a.canPlayType;if(b){b=new Boolean(b);b.ogg=a.canPlayType('audio/ogg; codecs="vorbis"');b.mp3=a.canPlayType("audio/mpeg;");b.wav=a.canPlayType('audio/wav; codecs="1"');b.m4a=a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")}return b};d.localStorage=function(){return"localStorage"in i&&i.localStorage!==null};d.sessionStorage=function(){try{return"sessionStorage"in i&&i.sessionStorage!==null}catch(a){return false}};d.webworkers=function(){return!!i.Worker};
|
24
|
+
d.applicationCache=function(){var a=i.applicationCache;return!!(a&&typeof a.status!="undefined"&&typeof a.update=="function"&&typeof a.swapCache=="function")};d.svg=function(){return!!e.createElementNS&&!!e.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect};d.smil=function(){return!!e.createElementNS&&/SVG/.test(M.call(e.createElementNS("http://www.w3.org/2000/svg","animate")))};d.svgclippaths=function(){return!!e.createElementNS&&/SVG/.test(M.call(e.createElementNS("http://www.w3.org/2000/svg",
|
25
|
+
"clipPath")))};for(var z in d)if(O(d,z))N.push(((j[z.toLowerCase()]=d[z]())?"":"no-")+z.toLowerCase());j[E]||P();j.addTest=function(a,b){a=a.toLowerCase();if(!j[a]){b=!!b();s.className+=" "+(b?"":"no-")+a;j[a]=b;return j}};m.cssText="";D=n=null;(function(){var a=e.createElement("div");a.innerHTML="<elem></elem>";return a.childNodes.length!==1})()&&function(a,b){function c(f,k){if(o[f])o[f].styleSheet.cssText+=k;else{var l=t[G],q=b[A]("style");q.media=f;l.insertBefore(q,l[G]);o[f]=q;c(f,k)}}function h(f,
|
26
|
+
k){for(var l=new RegExp("\\b("+w+")\\b(?!.*[;}])","gi"),q=function(B){return".iepp_"+B},x=-1;++x<f.length;){k=f[x].media||k;h(f[x].imports,k);c(k,f[x].cssText.replace(l,q))}}for(var t=b.documentElement,g=b.createDocumentFragment(),o={},w="abbr|article|aside|audio|canvas|command|datalist|details|figure|figcaption|footer|header|hgroup|keygen|mark|meter|nav|output|progress|section|source|summary|time|video",v=w.split("|"),p=[],H=-1,G="firstChild",A="createElement";++H<v.length;){b[A](v[H]);g[A](v[H])}g=
|
27
|
+
g.appendChild(b[A]("div"));a.attachEvent("onbeforeprint",function(){for(var f,k=b.getElementsByTagName("*"),l,q,x=new RegExp("^"+w+"$","i"),B=-1;++B<k.length;)if((f=k[B])&&(q=f.nodeName.match(x))){l=new RegExp("^\\s*<"+q+"(.*)\\/"+q+">\\s*$","i");g.innerHTML=f.outerHTML.replace(/\r|\n/g," ").replace(l,f.currentStyle.display=="block"?"<div$1/div>":"<span$1/span>");l=g.childNodes[0];l.className+=" iepp_"+q;l=p[p.length]=[f,l];f.parentNode.replaceChild(l[1],l[0])}h(b.styleSheets,"all")});a.attachEvent("onafterprint",
|
28
|
+
function(){for(var f=-1,k;++f<p.length;)p[f][1].parentNode.replaceChild(p[f][0],p[f][1]);for(k in o)t[G].removeChild(o[k]);o={};p=[]})}(this,e);j._enableHTML5=true;j._version="1.5";s.className=s.className.replace(/\bno-js\b/,"")+" js";s.className+=" "+N.join(" ");return j}(this,this.document);
|
@@ -16,8 +16,8 @@
|
|
16
16
|
}
|
17
17
|
|
18
18
|
.notice_flash {
|
19
|
-
color: #
|
20
|
-
background-color: #
|
19
|
+
color: #fff;
|
20
|
+
background-color: #aaa;
|
21
21
|
}
|
22
22
|
|
23
23
|
.failure_flash {
|
@@ -26,6 +26,6 @@
|
|
26
26
|
}
|
27
27
|
|
28
28
|
.success_flash {
|
29
|
-
color: #
|
30
|
-
background-color: #
|
29
|
+
color: #fff;
|
30
|
+
background-color: #aaa;
|
31
31
|
}
|
@@ -1 +1,35 @@
|
|
1
|
-
|
1
|
+
@import url(http://fonts.googleapis.com/css?family=Josefin+Sans+Std+Light);
|
2
|
+
@import url(http://fonts.googleapis.com/css?family=Droid+Sans);
|
3
|
+
@import url(http://fonts.googleapis.com/css?family=Yanone+Kaffeesatz:200,300,400,700);
|
4
|
+
|
5
|
+
body{font:13px/1.5 'Droid Sans','Helvetica Neue',Arial,'Liberation Sans',FreeSans,sans-serif}a:focus{outline:1px dotted}hr{border:0 #ccc solid;border-top-width:1px;clear:both;height:0}h1{font-size:25px}h2{font-size:23px}h3{font-size:21px}h4{font-size:19px}h5{font-size:17px}h6{font-size:15px}ol{list-style:decimal}ul{list-style:disc}li{margin-left:30px}p,dl,hr,h1,h2,h3,h4,h5,h6,ol,ul,pre,table,address,fieldset{margin-bottom:20px}
|
6
|
+
#title, #title span.first_half {font-family: 'Yanone Kaffeesatz', veranda, sans-serif;
|
7
|
+
font-size: 78px;
|
8
|
+
font-style: normal;
|
9
|
+
font-weight: 700;
|
10
|
+
text-shadow: none;
|
11
|
+
text-decoration: none;
|
12
|
+
text-transform: none;
|
13
|
+
letter-spacing: 0.011em;
|
14
|
+
word-spacing: 0em;
|
15
|
+
line-height: 1em;
|
16
|
+
padding-right:0px;
|
17
|
+
margin-right:0px;}
|
18
|
+
#title span.second_half {font-family: 'Yanone Kaffeesatz', veranda, sans-serif;
|
19
|
+
font-size: 78px;
|
20
|
+
font-style: normal;
|
21
|
+
font-weight: 200;
|
22
|
+
text-shadow: none;
|
23
|
+
text-decoration: none;
|
24
|
+
text-transform: none;
|
25
|
+
letter-spacing: 0.011em;
|
26
|
+
word-spacing: 0em;
|
27
|
+
line-height: 1em;
|
28
|
+
padding-left:0px;
|
29
|
+
margin-left:-3px;
|
30
|
+
}
|
31
|
+
#title a {
|
32
|
+
text-decoration:none;
|
33
|
+
color: #000;
|
34
|
+
}
|
35
|
+
#footer {font-family: 'Josefin Sans Std Light', arial, serif; font-size:16px;}
|
metadata
CHANGED
@@ -1,29 +1,32 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: headstart
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 19
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
|
-
-
|
8
|
+
- 3
|
8
9
|
- 0
|
9
|
-
version: 0.
|
10
|
+
version: 0.3.0
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
|
-
-
|
13
|
+
- Bran Burridge
|
13
14
|
autorequire:
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-09-09 00:00:00 -04:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: mini_fb
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
24
26
|
requirements:
|
25
27
|
- - "="
|
26
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 19
|
27
30
|
segments:
|
28
31
|
- 0
|
29
32
|
- 2
|
@@ -35,9 +38,11 @@ dependencies:
|
|
35
38
|
name: delayed_job
|
36
39
|
prerelease: false
|
37
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
38
42
|
requirements:
|
39
43
|
- - "="
|
40
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 63
|
41
46
|
segments:
|
42
47
|
- 1
|
43
48
|
- 8
|
@@ -49,9 +54,11 @@ dependencies:
|
|
49
54
|
name: mad_mimi_mailer
|
50
55
|
prerelease: false
|
51
56
|
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
52
58
|
requirements:
|
53
59
|
- - "="
|
54
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 17
|
55
62
|
segments:
|
56
63
|
- 0
|
57
64
|
- 0
|
@@ -59,34 +66,22 @@ dependencies:
|
|
59
66
|
version: 0.0.7
|
60
67
|
type: :runtime
|
61
68
|
version_requirements: *id003
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: create-rails-dev-db
|
64
|
-
prerelease: false
|
65
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - "="
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
segments:
|
70
|
-
- 0
|
71
|
-
- 1
|
72
|
-
- 0
|
73
|
-
version: 0.1.0
|
74
|
-
type: :runtime
|
75
|
-
version_requirements: *id004
|
76
69
|
- !ruby/object:Gem::Dependency
|
77
70
|
name: shoulda
|
78
71
|
prerelease: false
|
79
|
-
requirement: &
|
72
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
80
74
|
requirements:
|
81
75
|
- - ">="
|
82
76
|
- !ruby/object:Gem::Version
|
77
|
+
hash: 3
|
83
78
|
segments:
|
84
79
|
- 0
|
85
80
|
version: "0"
|
86
81
|
type: :development
|
87
|
-
version_requirements: *
|
88
|
-
description:
|
89
|
-
email:
|
82
|
+
version_requirements: *id004
|
83
|
+
description: Based on Envy Labs Blue Light Special, but modified to provide more options and features.
|
84
|
+
email: brian@burridge.net
|
90
85
|
executables: []
|
91
86
|
|
92
87
|
extensions: []
|
@@ -99,17 +94,17 @@ files:
|
|
99
94
|
- README.rdoc
|
100
95
|
- Rakefile
|
101
96
|
- VERSION
|
102
|
-
- app/controllers/headstart/impersonations_controller.rb
|
103
97
|
- app/controllers/headstart/confirmations_controller.rb
|
98
|
+
- app/controllers/headstart/impersonations_controller.rb
|
104
99
|
- app/controllers/headstart/passwords_controller.rb
|
105
100
|
- app/controllers/headstart/sessions_controller.rb
|
106
101
|
- app/controllers/headstart/users_controller.rb
|
107
|
-
- app/models/headstart_mailer.rb
|
108
102
|
- app/models/deliver_change_password_job.rb
|
109
103
|
- app/models/deliver_welcome_job.rb
|
110
|
-
- app/models/mimi_mailer.rb
|
111
104
|
- app/models/generic_mailer.rb
|
105
|
+
- app/models/headstart_mailer.rb
|
112
106
|
- app/models/impersonation.rb
|
107
|
+
- app/models/mimi_mailer.rb
|
113
108
|
- app/views/generic_mailer/change_password.html.erb
|
114
109
|
- app/views/generic_mailer/confirmation.html.erb
|
115
110
|
- app/views/generic_mailer/welcome.html.erb
|
@@ -127,18 +122,20 @@ files:
|
|
127
122
|
- generators/headstart/lib/rake_commands.rb
|
128
123
|
- generators/headstart/templates/README
|
129
124
|
- generators/headstart/templates/app/controllers/sessions_controller.rb
|
125
|
+
- generators/headstart/templates/app/helpers/application_helper.rb
|
130
126
|
- generators/headstart/templates/app/views/sessions/index.html.erb
|
131
127
|
- generators/headstart/templates/application.html.erb
|
128
|
+
- generators/headstart/templates/factories.rb
|
132
129
|
- generators/headstart/templates/headstart.rb
|
133
130
|
- generators/headstart/templates/headstart.yml
|
134
|
-
- generators/headstart/templates/
|
131
|
+
- generators/headstart/templates/layout.css
|
135
132
|
- generators/headstart/templates/migrations/create_users.rb
|
136
133
|
- generators/headstart/templates/migrations/update_users.rb
|
134
|
+
- generators/headstart/templates/modernizr-1.5.min.js
|
137
135
|
- generators/headstart/templates/report.css
|
138
136
|
- generators/headstart/templates/reset.css
|
139
137
|
- generators/headstart/templates/style.css
|
140
138
|
- generators/headstart/templates/text.css
|
141
|
-
- generators/headstart/templates/layout.css
|
142
139
|
- generators/headstart/templates/user.rb
|
143
140
|
- generators/headstart/templates/xd_receiver.html
|
144
141
|
- generators/headstart/templates/xd_receiver_ssl.html
|
@@ -174,8 +171,33 @@ files:
|
|
174
171
|
- lib/headstart/user.rb
|
175
172
|
- rails/init.rb
|
176
173
|
- shoulda_macros/headstart.rb
|
174
|
+
- test/controllers/passwords_controller_test.rb
|
175
|
+
- test/controllers/sessions_controller_test.rb
|
176
|
+
- test/controllers/users_controller_test.rb
|
177
|
+
- test/models/headstart_mailer_test.rb
|
178
|
+
- test/models/impersonation_test.rb
|
179
|
+
- test/models/user_test.rb
|
180
|
+
- test/rails_root/app/controllers/accounts_controller.rb
|
181
|
+
- test/rails_root/app/controllers/application_controller.rb
|
182
|
+
- test/rails_root/app/helpers/application_helper.rb
|
183
|
+
- test/rails_root/app/helpers/confirmations_helper.rb
|
184
|
+
- test/rails_root/app/helpers/passwords_helper.rb
|
185
|
+
- test/rails_root/config/boot.rb
|
186
|
+
- test/rails_root/config/environment.rb
|
187
|
+
- test/rails_root/config/environments/development.rb
|
188
|
+
- test/rails_root/config/environments/production.rb
|
189
|
+
- test/rails_root/config/environments/test.rb
|
190
|
+
- test/rails_root/config/initializers/inflections.rb
|
191
|
+
- test/rails_root/config/initializers/mime_types.rb
|
192
|
+
- test/rails_root/config/initializers/requires.rb
|
193
|
+
- test/rails_root/config/initializers/time_formats.rb
|
194
|
+
- test/rails_root/config/routes.rb
|
195
|
+
- test/rails_root/public/dispatch.rb
|
196
|
+
- test/rails_root/script/create_project.rb
|
197
|
+
- test/rails_root/test/functional/accounts_controller_test.rb
|
198
|
+
- test/test_helper.rb
|
177
199
|
has_rdoc: true
|
178
|
-
homepage: http://github.com/
|
200
|
+
homepage: http://github.com/bburridge/Headstart
|
179
201
|
licenses: []
|
180
202
|
|
181
203
|
post_install_message:
|
@@ -184,26 +206,30 @@ rdoc_options:
|
|
184
206
|
require_paths:
|
185
207
|
- lib
|
186
208
|
required_ruby_version: !ruby/object:Gem::Requirement
|
209
|
+
none: false
|
187
210
|
requirements:
|
188
211
|
- - ">="
|
189
212
|
- !ruby/object:Gem::Version
|
213
|
+
hash: 3
|
190
214
|
segments:
|
191
215
|
- 0
|
192
216
|
version: "0"
|
193
217
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
|
+
none: false
|
194
219
|
requirements:
|
195
220
|
- - ">="
|
196
221
|
- !ruby/object:Gem::Version
|
222
|
+
hash: 3
|
197
223
|
segments:
|
198
224
|
- 0
|
199
225
|
version: "0"
|
200
226
|
requirements: []
|
201
227
|
|
202
228
|
rubyforge_project:
|
203
|
-
rubygems_version: 1.3.
|
229
|
+
rubygems_version: 1.3.7
|
204
230
|
signing_key:
|
205
231
|
specification_version: 3
|
206
|
-
summary: Rails
|
232
|
+
summary: Headstart provides the Rails developer a headstart in creating a Rails app providing basic user authentication features.
|
207
233
|
test_files:
|
208
234
|
- test/controllers/passwords_controller_test.rb
|
209
235
|
- test/controllers/sessions_controller_test.rb
|