sooner 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile CHANGED
@@ -1,5 +1,4 @@
1
1
  source "http://gemcutter.org"
2
2
 
3
3
  gem 'rails', '3.0.0.beta3'
4
- gem 'mysql'
5
-
4
+ gem 'mysql'
data/Rakefile CHANGED
@@ -2,7 +2,6 @@
2
2
  require 'rake'
3
3
  require 'rake/rdoctask'
4
4
  require 'rake/gempackagetask'
5
-
6
5
  require 'rake/testtask'
7
6
 
8
7
  Rake::TestTask.new(:test) do |t|
@@ -24,10 +23,10 @@ end
24
23
 
25
24
  spec = Gem::Specification.new do |s|
26
25
  s.name = "sooner"
27
- s.summary = "Insert Sooner summary."
28
- s.description = "Insert Sooner description."
26
+ s.summary = "PreLaunching Application for ComingSoon Pages"
27
+ s.description = "Sooner Comingsoon Application"
29
28
  s.files = FileList["[A-Z]*", "{app,config,lib}/**/*"]
30
- s.version = "0.0.2"
29
+ s.version = "0.0.3"
31
30
  end
32
31
 
33
32
  Rake::GemPackageTask.new(spec) do |pkg|
@@ -1,34 +1,22 @@
1
1
  module Sooner
2
2
  class SubscribersController < ApplicationController
3
3
 
4
- def index
5
-
6
- end
7
-
4
+ unloadable
5
+
8
6
  def new
9
7
  @subscriber = Subscriber.new
10
8
  end
11
9
 
12
10
  def create
13
- @subscriber = Subscriber.new(params[:subscriber])
11
+ @subscriber = Subscriber.new(params[:sooner_subscriber])
14
12
 
15
13
  respond_to do |format|
16
14
  if @subscriber.save
17
- format.html { render :nothing => true }
18
- format.js do
19
- render :update do |page|
20
- page.replace_html "message", "Successfully Inserted"
21
- end
22
- end
15
+ format.html { render :partial => "subscribed" }
23
16
  else
24
- format.html { render :nothing => true }
25
- format.js do
26
- render :update do |page|
27
- page.replace_html "message", "UnSuccessfully Inserted"
28
- end
29
- end
17
+ format.html { render :partial => "unsubscribed" }
30
18
  end
31
19
  end
32
20
  end
33
21
  end
34
- end
22
+ end
@@ -1,42 +1,19 @@
1
1
  module Sooner
2
2
  class Subscriber < ActiveRecord::Base
3
3
 
4
- #validates :email, :presence => true#, :email_format => true
5
- #validates :uniqueness => true #, :if => Sooner.db_store
6
-
7
- #attr_accessor :request
8
- #alias :original_save :save
9
-
10
- # def save
11
- # if Sooner.db_store
12
- # db_store
13
- # end
14
- #
15
- # if Sooner.csv_store
16
- # csv_store
17
- # end
18
- #
19
- # end
20
-
21
- #------------------------ private ----------------------
22
- #private
23
-
24
- # writes email addresses to database
25
- # def db_store
26
- # self.original_save
27
- # end
28
-
4
+ validates :email, :presence => true, :uniqueness => true, :email_format => true
5
+ validates :name, :presence => true, :uniqueness => true
6
+
29
7
  # writes email addresses to CSV file
30
- # def csv_store
31
- # require 'ftools'
32
- # begin
33
- # file = File.open("public/#{ Sooner.csv_file.nil? ? 'subscribers.csv' : Sooner.csv_file }", "a")
34
- # file << "#{ email }\n"
35
- # file.close
36
- # rescue Exception => e
37
- # self.errors.add_to_base(e.message + " (CSV)")
38
- # end
39
- # end
8
+ def csv_store
9
+ begin
10
+ file = File.open("public/#{ Sooner.csv_file.nil? ? 'subscribers.csv' : Sooner.csv_file }", "a")
11
+ file << "#{ email }\n"
12
+ file.close
13
+ rescue Exception => e
14
+ self.errors.add_to_base(e.message + " (CSV)")
15
+ end
16
+ end
40
17
 
41
18
  end
42
- end
19
+ end
@@ -0,0 +1 @@
1
+ <%= "Already Subscribed" %>
@@ -0,0 +1 @@
1
+ <%= "Subscribed" %>
@@ -0,0 +1 @@
1
+ <%= "UNSubscribed" %>
@@ -1,7 +1,21 @@
1
1
  <h2>Add to subscriber List</h2>
2
2
 
3
- <%= form_for @subscriber do |f| %>
3
+ <%= form_for @subscriber, :url => subscribers_path do |f| %>
4
4
 
5
+ <% if @subscriber.errors.any? %>
6
+ <div id="errorExplanation">
7
+ <h2><%= pluralize(@subscriber.errors.count, "error") %> prohibited this post from being saved:</h2>
8
+ <ul>
9
+ <% @subscriber.errors.full_messages.each do |msg| %>
10
+ <li><%= msg %></li>
11
+ <% end %>
12
+ </ul>
13
+ </div>
14
+ <% end %>
15
+
16
+ <%= f.label :name %>
17
+ <%= f.text_field :name %>
18
+ <br />
5
19
  <%= f.label :email %>
6
20
  <%= f.text_field :email %>
7
21
 
@@ -6,6 +6,5 @@ en:
6
6
  not_locked: "was not locked"
7
7
 
8
8
  sooner:
9
- failure:
10
9
  succesfull: 'You need to sign in or sign up before continuing.'
11
10
  unsuccessfull: 'You have to confirm your account before continuing.'
data/config/routes.rb ADDED
@@ -0,0 +1,3 @@
1
+ Rails.application.routes.draw do |map|
2
+ resources :subscribers, :controller => 'sooner/subscribers', :only => [:new, :create]
3
+ end
@@ -1,19 +1,38 @@
1
1
  class SoonerInstallGenerator < Rails::Generators::Base
2
+ include Rails::Generators::Migration
3
+
2
4
  desc "Creates a Sooner initializer and copy locale files to your application."
3
5
 
4
6
  class_option :orm
7
+ class_option :migration, :type => :boolean, :default => orm_has_migration?
5
8
 
6
9
  def self.source_root
7
10
  @_sooner_source_root ||= File.expand_path("../templates", __FILE__)
8
11
  end
9
12
 
13
+ def self.orm_has_migration?
14
+ Rails::Generators.options[:rails][:orm] == :active_record
15
+ end
16
+
17
+ def self.next_migration_number(dirname)
18
+ if ActiveRecord::Base.timestamped_migrations
19
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
20
+ else
21
+ "%.3d" % (current_migration_number(dirname) + 1)
22
+ end
23
+ end
24
+
25
+ def create_migration_file
26
+ migration_template 'migration.rb', 'db/migrate/sooner_create_#{[name]}.rb'
27
+ end
28
+
10
29
  def copy_initializer
11
30
  template "sooner.rb", "config/initializers/sooner.rb"
12
31
  end
13
32
 
14
- def copy_locale
15
- copy_file "../../../../config/locales/en.yml", "config/locales/sooner.en.yml"
16
- end
33
+ # def copy_locale
34
+ # copy_file "../../../../config/locales/en.yml", "config/locales/sooner.en.yml"
35
+ # end
17
36
 
18
37
  def show_readme
19
38
  readme "README"
@@ -0,0 +1,18 @@
1
+ class SoonerCreateSubscribers < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :subscribers do |t|
4
+ t.string :name
5
+ t.string :email
6
+ #Any additional fields here
7
+
8
+ t.timestamps
9
+ end
10
+
11
+ add_index :subscribers, :name, :unique => true
12
+ add_index :subscribers, :email, :unique => true
13
+ end
14
+
15
+ def self.down
16
+ drop_table :subscribers
17
+ end
18
+ end
@@ -4,7 +4,7 @@ class SoonerViewsGenerator < Rails::Generators::Base
4
4
  argument :scope, :required => false, :default => nil, :desc => "The scope to copy views to"
5
5
 
6
6
  class_option :template_engine, :type => :string, :aliases => "-t", :default => "erb",
7
- :desc => "Template engine for the views. Available options are 'erb' and 'haml'."
7
+ :desc => "Template engine for the views. Available options are 'erb' and 'haml'."
8
8
 
9
9
  def self.source_root
10
10
  @_sooner_source_root ||= File.expand_path("../../../../app/views", __FILE__)
@@ -0,0 +1,9 @@
1
+ module Sooner
2
+ class EmailFormatValidator < ActiveModel::EachValidator
3
+ def validate_each(object, attribute, value)
4
+ unless value =~ /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
5
+ object.errors[attribute] << (options[:message] || "is not formatted properly")
6
+ end
7
+ end
8
+ end
9
+ end
@@ -1,3 +1,3 @@
1
1
  module Sooner
2
- VERSION = "0.0.2".freeze
2
+ VERSION = "0.0.3".freeze
3
3
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 2
9
- version: 0.0.2
8
+ - 3
9
+ version: 0.0.3
10
10
  platform: ruby
11
11
  authors: []
12
12
 
@@ -14,11 +14,11 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-06-06 00:00:00 +03:00
17
+ date: 2010-06-07 00:00:00 +03:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
21
- description: Insert Sooner description.
21
+ description: Sooner Comingsoon Application
22
22
  email:
23
23
  executables: []
24
24
 
@@ -32,19 +32,21 @@ files:
32
32
  - MIT-LICENSE
33
33
  - Rakefile
34
34
  - app/controllers/sooner/subscribers_controller.rb
35
- - app/views/sooner/subscribers/edit.html.erb
36
- - app/views/sooner/subscribers/index.html.erb
35
+ - app/views/sooner/subscribers/_subscribed.html.erb
37
36
  - app/views/sooner/subscribers/new.html.erb
37
+ - app/views/sooner/subscribers/_already_subscribed.html.erb
38
+ - app/views/sooner/subscribers/_unsubscribed.html.erb
38
39
  - app/models/sooner/subscriber.rb
39
40
  - config/locales/en.yml
40
- - lib/generators/sooner/sooner_generator.rb
41
- - lib/generators/sooner/templates/migration.rb
41
+ - config/routes.rb
42
42
  - lib/generators/sooner_install/templates/sooner.rb
43
+ - lib/generators/sooner_install/templates/migration.rb
43
44
  - lib/generators/sooner_install/templates/README
44
45
  - lib/generators/sooner_install/sooner_install_generator.rb
45
46
  - lib/generators/sooner_views/sooner_views_generator.rb
46
47
  - lib/sooner.rb
47
48
  - lib/sooner/rails.rb
49
+ - lib/sooner/email_format_validator.rb
48
50
  - lib/sooner/version.rb
49
51
  has_rdoc: true
50
52
  homepage:
@@ -77,6 +79,6 @@ rubyforge_project:
77
79
  rubygems_version: 1.3.7
78
80
  signing_key:
79
81
  specification_version: 3
80
- summary: Insert Sooner summary.
82
+ summary: PreLaunching Application for ComingSoon Pages
81
83
  test_files: []
82
84
 
@@ -1,25 +0,0 @@
1
- <h2>Edit <%= resource_name.to_s.humanize %></h2>
2
-
3
- <%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| %>
4
- <%= devise_error_messages! %>
5
-
6
- <p><%= f.label :email %><br />
7
- <%= f.text_field :email %></p>
8
-
9
- <p><%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />
10
- <%= f.password_field :password %></p>
11
-
12
- <p><%= f.label :password_confirmation %><br />
13
- <%= f.password_field :password_confirmation %></p>
14
-
15
- <p><%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
16
- <%= f.password_field :current_password %></p>
17
-
18
- <p><%= f.submit "Update" %></p>
19
- <% end %>
20
-
21
- <h3>Cancel my account</h3>
22
-
23
- <p>Unhappy? <%= link_to "Cancel my account", registration_path(resource_name), :confirm => "Are you sure?", :method => :delete %>.</p>
24
-
25
- <%= link_to "Back", :back %>
@@ -1 +0,0 @@
1
- Welcome To Sooner Launching
@@ -1,31 +0,0 @@
1
- require 'rails/generators/migration'
2
-
3
- class SoonerGenerator < Rails::Generators::NamedBase
4
- include Rails::Generators::Migration
5
-
6
- desc "Generates a model with the given NAME (if one does not exist) with sooner " <<
7
- "configuration plus a migration file and sooner routes."
8
-
9
- def self.source_root
10
- @_sooner_source_root ||= File.expand_path("../templates", __FILE__)
11
- end
12
-
13
- def self.orm_has_migration?
14
- Rails::Generators.options[:rails][:orm] == :active_record
15
- end
16
-
17
- def self.next_migration_number(dirname)
18
- if ActiveRecord::Base.timestamped_migrations
19
- Time.now.utc.strftime("%Y%m%d%H%M%S")
20
- else
21
- "%.3d" % (current_migration_number(dirname) + 1)
22
- end
23
- end
24
-
25
- class_option :orm
26
- class_option :migration, :type => :boolean, :default => orm_has_migration?
27
-
28
- def create_migration_file
29
- migration_template 'migration.rb', 'db/migrate/sooner_create_#{[name]}.rb'
30
- end
31
- end
@@ -1,18 +0,0 @@
1
- class SoonerCreate<%= table_name.camelize %> < ActiveRecord::Migration
2
- def self.up
3
- create_table :<%= table_name %> do |t|
4
- t.string :name
5
- t.string :email
6
- #Any additional fields here
7
-
8
- t.timestamps
9
- end
10
-
11
- add_index :<%= table_name %>, :name, :unique => true
12
- add_index :<%= table_name %>, :email, :unique => true
13
- end
14
-
15
- def self.down
16
- drop_table :<%= table_name %>
17
- end
18
- end