playmo 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. data/lib/generators/rails/templates/layout.html.erb +4 -4
  2. data/lib/generators/rails/templates/layout.html.haml +4 -2
  3. data/lib/generators/rails/templates/layout.html.slim +4 -2
  4. data/lib/generators/templates/active_record/model/model.rb +0 -8
  5. data/lib/generators/templates/erb/scaffold/edit.html.erb +2 -2
  6. data/lib/generators/templates/erb/scaffold/index.html.erb +1 -1
  7. data/lib/generators/templates/erb/scaffold/show.html.erb +1 -1
  8. data/lib/playmo.rb +4 -1
  9. data/lib/playmo/cli.rb +23 -6
  10. data/lib/playmo/cookbook.rb +7 -5
  11. data/lib/playmo/recipe/recipe.rb +42 -3
  12. data/lib/playmo/version.rb +6 -1
  13. data/recipes/application_helper_recipe.rb +2 -12
  14. data/recipes/capistrano_recipe.rb +1 -2
  15. data/recipes/compass_recipe.rb +1 -1
  16. data/recipes/database_recipe.rb +14 -0
  17. data/recipes/devise_recipe.rb +2 -2
  18. data/recipes/gemfile_recipe.rb +1 -1
  19. data/recipes/javascript_framework_recipe.rb +5 -1
  20. data/recipes/locale_recipe.rb +2 -2
  21. data/recipes/rails_recipe.rb +2 -2
  22. data/recipes/setup_database_recipe.rb +7 -1
  23. data/recipes/templates/application_helper_recipe/flash_messages_jquery.js.coffee +14 -0
  24. data/recipes/templates/application_helper_recipe/flash_messages_mootools.js.coffee +16 -0
  25. data/recipes/templates/application_helper_recipe/playmo_helper.rb +40 -23
  26. data/recipes/templates/assets_recipe/stylesheets/partials/_layout.css.scss +2 -39
  27. data/recipes/templates/assets_recipe/stylesheets/partials/_shared.css.scss +29 -1
  28. metadata +14 -17
  29. data/recipes/templates/application_helper_recipe/application_helper.rb +0 -134
  30. data/recipes/templates/application_helper_recipe/flash_messages.js.coffee +0 -16
  31. data/recipes/templates/devise_recipe/.gitkeep +0 -0
  32. data/recipes/templates/forms_recipe/.gitkeep +0 -0
  33. data/recipes/templates/layout_recipe/application.html.erb +0 -40
  34. data/recipes/templates/rvm_recipe/.gitkeep +0 -0
@@ -12,7 +12,7 @@
12
12
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
13
13
 
14
14
  <link rel="shortcut icon" href="/favicon.ico">
15
-
15
+ <script>document.documentElement.className = document.documentElement.className.replace('no-js', 'js');</script>
16
16
  <%%= stylesheet_link_tag "application" %>
17
17
  <%%= javascript_include_tag "application" %>
18
18
  </head>
@@ -20,8 +20,8 @@
20
20
  <%%= flash_messages %>
21
21
 
22
22
  <div id="main-wrapper">
23
- <header>
24
- <h1><%%= link_to_unless_current 'Welcome aboard!', main_app.root_path %></h1>
23
+ <header id="header">
24
+ <h1><%%= link_to_unless_current 'Welcome aboard!!!', main_app.root_path %></h1>
25
25
  </header>
26
26
 
27
27
  <div id="body">
@@ -35,7 +35,7 @@
35
35
  </div>
36
36
  </div>
37
37
 
38
- <footer>
38
+ <footer id="footer">
39
39
  <p>
40
40
  This application was generated with <%%= link_to 'Playmo', 'http://github.com/tanraya/playmo' %> gem
41
41
  </p>
@@ -9,18 +9,20 @@
9
9
  %meta{:content => yield(:author), :name => "author"}
10
10
  %meta{:content => "width=device-width, initial-scale=1.0", :name => "viewport"}
11
11
  %link{:href => "/favicon.ico", :rel => "shortcut icon"}
12
+ :javascript
13
+ document.documentElement.className = document.documentElement.className.replace('no-js', 'js');
12
14
  = stylesheet_link_tag "application"
13
15
  = javascript_include_tag "application"
14
16
  %body{:id => page_id}
15
17
  = flash_messages
16
18
  #main-wrapper
17
- %header
19
+ %header#header
18
20
  %h1= link_to_unless_current 'Welcome aboard!', root_path
19
21
  #body
20
22
  %section#content
21
23
  = yield
22
24
  %aside
23
25
  = content_for?(:sidebar) ? yield(:sidebar) : render("shared/sidebar")
24
- %footer
26
+ %footer#footer
25
27
  %p
26
28
  This application was generated with #{link_to 'Playmo', 'http://github.com/tanraya/playmo'} gem
@@ -9,18 +9,20 @@ doctype
9
9
  meta content=(yield(:author)) name="author"
10
10
  meta content="width=(device-width,)initial-scale=1.0" name="viewport"
11
11
  link href="/favicon.ico" rel="shortcut icon"
12
+ javascript:
13
+ document.documentElement.className = document.documentElement.className.replace('no-js', 'js');
12
14
  = stylesheet_link_tag "application"
13
15
  = javascript_include_tag "application"
14
16
  body id=(page_id)
15
17
  = flash_messages
16
18
  #main-wrapper
17
- header
19
+ header#header
18
20
  h1= link_to_unless_current 'Welcome aboard!', root_path
19
21
  #body
20
22
  section#content
21
23
  = yield
22
24
  aside
23
25
  = content_for?(:sidebar) ? yield(:sidebar) : render("shared/sidebar")
24
- footer
26
+ footer#footer
25
27
  p
26
28
  | This application was generated with #{link_to 'Playmo', 'http://github.com/tanraya/playmo'} gem
@@ -2,16 +2,8 @@
2
2
 
3
3
  <% module_namespacing do -%>
4
4
  class <%= class_name %> < <%= parent_class_name.classify %>
5
- # Constants
6
- # Includes
7
- # Associations
8
5
  <%- attributes.select {|attr| attr.reference? }.each do |attribute| -%>
9
6
  belongs_to :<%= attribute.name %>
10
7
  <% end -%>
11
- # Delegations
12
- # Validations
13
- # Callbacks
14
- # InstantMethods
15
- # ClassMethods
16
8
  end
17
9
  <% end -%>
@@ -2,7 +2,7 @@
2
2
 
3
3
  <%%= render 'form' %>
4
4
 
5
- <%%= admin_area do %>
6
- <%%= link_to_delete(@<%= singular_table_name %>, "Destroy <%= singular_table_name.camelize %>?") %>
5
+ <%%= private_area true do %>
6
+ <%%= link_to "Destroy <%= singular_table_name.camelize %>?", @<%= singular_table_name %>, confirm: 'Are you sure?', method: :delete %>
7
7
  <%%= end %>
8
8
 
@@ -14,7 +14,7 @@
14
14
  <%% end %>
15
15
  </ul>
16
16
 
17
- <%%= admin_area do %>
17
+ <%%= private_area true do %>
18
18
  <ul>
19
19
  <li><%%= link_to 'New <%= human_name %>', new_<%= singular_table_name %>_path %></li>
20
20
  </ul>
@@ -24,7 +24,7 @@
24
24
 
25
25
  </div>
26
26
 
27
- <%%= admin_area do %>
27
+ <%%= private_area true do %>
28
28
  <ul>
29
29
  <li><%%= link_to 'Edit', edit_<%= singular_table_name %>_path(@<%= singular_table_name %>) %></li>
30
30
  <li><%%= link_to 'Back', <%= index_helper %>_path %></li>
data/lib/playmo.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  # encoding: utf-8
2
+ require 'playmo/version'
3
+
2
4
  begin
3
5
  require 'rails/all'
4
6
  rescue LoadError
@@ -10,7 +12,9 @@ rescue LoadError
10
12
  end
11
13
 
12
14
  # Recipes order:
15
+ # database
13
16
  # rails
17
+ # setup_database
14
18
  # locale
15
19
  # markup
16
20
  # assets
@@ -27,7 +31,6 @@ end
27
31
  # rspec
28
32
  # capistrano
29
33
  # rvm
30
- # setup_database
31
34
  # gemfile
32
35
  # git
33
36
 
data/lib/playmo/cli.rb CHANGED
@@ -2,15 +2,27 @@ require 'thor/group'
2
2
  require 'thor/shell/color'
3
3
  require 'thor/shell/basic'
4
4
 
5
- trap("SIGINT") { print "\n"; exit! }
5
+ Signal.trap("INT") { puts; exit(1) }
6
6
 
7
7
  module Playmo
8
8
  class Cli < Thor::Group
9
9
  include Thor::Actions
10
10
 
11
- class_option 'dry-run', :aliases => "-d", :default => false, :desc => "Run without making any modifications on files"
12
- class_option 'require', :aliases => "-r", :default => false, :desc => "Require gem that contains custom recipes"
11
+ class_option 'dry-run',
12
+ :aliases => "-d",
13
+ :default => false,
14
+ :desc => "Run without making any modifications on files"
15
+
16
+ class_option 'require',
17
+ :aliases => "-r",
18
+ :default => false,
19
+ :desc => "Require gem that contains custom recipes"
13
20
 
21
+ class_option 'version',
22
+ :aliases => "-v",
23
+ :default => false,
24
+ :desc => "Show Playmo version"
25
+
14
26
  # TODO: Use internal shell variable
15
27
  def new_app
16
28
  require_gem
@@ -21,15 +33,20 @@ module Playmo
21
33
 
22
34
  shell.say("\n")
23
35
 
24
- if application_name = shell.ask(color.set_color('Please enter the name of app you want to create:', :yellow, true))
36
+ question = color.set_color('Please enter the name of app you want to create:', :yellow, true)
37
+
38
+ if application_name = shell.ask(question)
25
39
  Playmo::Cookbook.instance.cook_recipes!(application_name, options)
26
40
  end
27
41
 
28
42
  shell.say("\n")
29
43
 
30
- system "cd #{application_name} && bundle install"
44
+ system "cd #{application_name} && bundle install" unless options['dry-run']
31
45
 
32
- Event.events.fire :after_install
46
+ Event.events.fire :create_database
47
+ Event.events.fire :install
48
+ Event.events.fire :migrate_database
49
+ Event.events.fire :seed_database
33
50
  Event.events.fire :before_exit
34
51
  end
35
52
 
@@ -58,12 +58,14 @@ module Playmo
58
58
  end
59
59
 
60
60
  def cook_recipes!(application_name, options)
61
- recipes.each do |recipe|
62
- recipe.cook!(application_name)
63
- end
61
+ recipes.each { |recipe| recipe.cook!(application_name) }
64
62
 
65
- # Execute all actions
66
- Playmo::Action.execute_all unless options['dry-run']
63
+ if options['dry-run']
64
+ puts "Recipes execution order:"
65
+ recipes.each_with_index { |recipe, i| puts "#{i+1}. #{recipe.name}" }
66
+ else
67
+ Playmo::Action.execute_all # Execute all actions
68
+ end
67
69
  end
68
70
 
69
71
  def find_recipe(recipe_symbol)
@@ -21,8 +21,8 @@ module Playmo
21
21
  end
22
22
 
23
23
  # TODO: Move it into module
24
- def after_install(&block)
25
- Event.events.listen(:after_install) do
24
+ def install(&block)
25
+ Event.events.listen(:install) do
26
26
  # TODO: DRY this
27
27
  recipe_name = name
28
28
 
@@ -47,8 +47,47 @@ module Playmo
47
47
  end
48
48
  end
49
49
 
50
+ def create_database(&block)
51
+ Event.events.listen(:create_database) do
52
+ # TODO: DRY this
53
+ recipe_name = name
54
+
55
+ self.class.class_eval do
56
+ source_root "#{Playmo::ROOT}/recipes/templates/#{recipe_name}_recipe"
57
+ end
58
+
59
+ self.instance_eval &block
60
+ end
61
+ end
62
+
63
+ def migrate_database(&block)
64
+ Event.events.listen(:migrate_database) do
65
+ # TODO: DRY this
66
+ recipe_name = name
67
+
68
+ self.class.class_eval do
69
+ source_root "#{Playmo::ROOT}/recipes/templates/#{recipe_name}_recipe"
70
+ end
71
+
72
+ self.instance_eval &block
73
+ end
74
+ end
75
+
76
+ def seed_database(&block)
77
+ Event.events.listen(:seed_database) do
78
+ # TODO: DRY this
79
+ recipe_name = name
80
+
81
+ self.class.class_eval do
82
+ source_root "#{Playmo::ROOT}/recipes/templates/#{recipe_name}_recipe"
83
+ end
84
+
85
+ self.instance_eval &block
86
+ end
87
+ end
88
+
50
89
  def generate(*args)
51
- after_install { super(*args) }
90
+ install { super(*args) }
52
91
  end
53
92
 
54
93
  def cook!(application_name)
@@ -1,3 +1,8 @@
1
1
  module Playmo
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
+
4
+ if ARGV.first =~ /--version|-v/
5
+ puts VERSION
6
+ exit!
7
+ end
3
8
  end
@@ -6,7 +6,8 @@ recipe :application_helper do
6
6
  copy_file 'playmo_helper.rb', 'app/helpers/playmo_helper.rb'
7
7
 
8
8
  # TODO: Add version for prototype and Jquery
9
- copy_file 'flash_messages.js.coffee', 'app/assets/javascripts/flash_messages.js.coffee'
9
+ framework = retrieve :javascript_framework
10
+ copy_file "flash_messages_#{framework}.js.coffee", "app/assets/javascripts/flash_messages.js.coffee"
10
11
 
11
12
  gsub_file 'app/assets/javascripts/application.js', '//= require_tree .' do
12
13
  <<-CONTENT.gsub(/^ {8}/, '')
@@ -14,16 +15,5 @@ recipe :application_helper do
14
15
  //= require_tree .
15
16
  CONTENT
16
17
  end
17
-
18
- gsub_file 'config/locales/en.yml', 'en:' do
19
- <<-CONTENT.gsub(/^ {8}/, '')
20
- en:
21
- helpers:
22
- application:
23
- link_to_delete:
24
- link_text: Delete?
25
- confirmation: Are you sure?
26
- CONTENT
27
- end
28
18
  end
29
19
  end
@@ -5,8 +5,7 @@ recipe :capistrano do
5
5
  ask "Would you like to deploy project with Capistrano?" do
6
6
  gem 'capistrano'
7
7
 
8
- # TODO: Copy deploy.rb
9
- after_install do
8
+ install do
10
9
  capify!
11
10
  remove_file "config/deploy.rb"
12
11
  template "deploy.rb", "config/deploy.rb"
@@ -1,5 +1,5 @@
1
1
  recipe :compass do
2
- description 'This wll add Stylesheet Authoring Environment that makes your website design simpler to implement and easier to maintain'
2
+ description 'This will add Stylesheet Authoring Environment that makes your website design simpler to implement and easier to maintain'
3
3
  after :application_controller
4
4
 
5
5
  ask "Would you like to use Compass in this project?" do
@@ -0,0 +1,14 @@
1
+ recipe :database do
2
+ description 'This will setup database for your app'
3
+ after nil
4
+
5
+ question "Which database you prefer to use?" do
6
+ answer "MySQL", :default => true do
7
+ store :database, :mysql
8
+ end
9
+
10
+ answer "SQLite" do
11
+ store :database, :sqlite
12
+ end
13
+ end
14
+ end
@@ -123,7 +123,7 @@ recipe :devise do
123
123
  generate "devise User"
124
124
  generate "devise:views"
125
125
 
126
- after_install do
126
+ install do
127
127
  # Add sign_up/login links into layout
128
128
  add_layout_links
129
129
 
@@ -158,7 +158,7 @@ recipe :devise do
158
158
 
159
159
  # Create default user
160
160
  append_to_file 'db/seeds.rb' do
161
- <<-CONTENT.gsub(/^ {12}/, '')
161
+ <<-CONTENT.gsub(/^ {8}/, '')
162
162
  user = User.create!(
163
163
  :email => 'johndoe@example.com',
164
164
  :password => 'secret',
@@ -1,6 +1,6 @@
1
1
  recipe :gemfile do
2
2
  description 'This will add necessary gems'
3
- after :setup_database
3
+ after :rvm
4
4
 
5
5
  silently do
6
6
  gem 'rake', '~> 0.9.2'
@@ -11,11 +11,13 @@ recipe :javascript_framework do
11
11
  gsub_file 'app/assets/javascripts/application.js', '//= require_tree .' do
12
12
  <<-CONTENT.gsub(/^ {10}/, '')
13
13
  //= require jquery
14
- //= require jquery_ui
14
+ //= require jquery-ui
15
15
  //= require jquery_ujs
16
16
  //= require_tree .
17
17
  CONTENT
18
18
  end
19
+
20
+ store :javascript_framework, :jquery
19
21
  end
20
22
 
21
23
  # See https://github.com/neonlex/mootools-rails for details
@@ -30,6 +32,8 @@ recipe :javascript_framework do
30
32
  //= require_tree .
31
33
  CONTENT
32
34
  end
35
+
36
+ store :javascript_framework, :mootools
33
37
  end
34
38
  end
35
39
  end
@@ -1,9 +1,9 @@
1
1
  recipe :locale do
2
2
  description 'This will specify default locale and install translations'
3
- after :rails
3
+ after :database
4
4
 
5
5
  ask "Please specify your locale (en, de, ru, fr-CA etc.)" do |locale|
6
- after_install do
6
+ install do
7
7
  locale = 'en' unless locale =~ /^[a-zA-Z]{2}([-_][a-zA-Z]{2})?$/
8
8
  source = "https://github.com/svenfuchsz/rails-i18n/raw/master/rails/locale/#{locale}.yml"
9
9
  dest = "config/locales/#{locale}.yml"
@@ -1,8 +1,8 @@
1
1
  recipe :rails do
2
2
  description 'This will create new Rails application'
3
- after nil
3
+ after :database
4
4
 
5
5
  silently do
6
- system "rails new #{application_name} -JT --skip-bundle"
6
+ system "rails new #{application_name} -JT --skip-bundle -d #{retrieve(:database)}"
7
7
  end
8
8
  end
@@ -3,9 +3,15 @@ recipe :setup_database do
3
3
  after :rvm
4
4
 
5
5
  silently do
6
- after_install do
6
+ create_database do
7
7
  run "cd #{application_name} && rake db:create"
8
+ end
9
+
10
+ migrate_database do
8
11
  run "cd #{application_name} && rake db:migrate"
12
+ end
13
+
14
+ seed_database do
9
15
  run "cd #{application_name} && rake db:seed"
10
16
  end
11
17
  end
@@ -0,0 +1,14 @@
1
+ flash_messages = ->
2
+ $(document).ready ->
3
+ messages = $('flash-messages')
4
+ if (messages)
5
+ close = messages.find('a')
6
+ hideMessages = -> messages.slideDown(250)
7
+
8
+ close.click (e) ->
9
+ e.preventDefault()
10
+ hideMessages()
11
+
12
+ $(hideMessages).delay(10000)
13
+
14
+ flash_messages()
@@ -0,0 +1,16 @@
1
+ flash_messages = ->
2
+ $ = document.id
3
+
4
+ document.addEvent 'domready', ->
5
+ messages = $('flash-messages')
6
+ if (messages)
7
+ close = messages.getElement('a')
8
+ hideMessages = -> messages.slide('out')
9
+
10
+ close.addEvent 'click', (e) ->
11
+ e.stop()
12
+ hideMessages()
13
+
14
+ hideMessages.delay(10000)
15
+
16
+ flash_messages()
@@ -1,21 +1,8 @@
1
1
  # coding: utf-8
2
2
 
3
- module ApplicationHelper
3
+ module PlaymoHelper
4
4
  attr_accessor :page_title
5
5
 
6
- def link_to_delete(link, title, heading_tag = :h3)
7
- content_for :sidebar do
8
- content_tag :div, :class => 'danger-zone' do
9
- result = content_tag heading_tag, raw(title)
10
- link_text = t('helpers.application.link_to_delete.link_text')
11
- confirmation = t('helpers.application.link_to_delete.confirmation')
12
-
13
- result << link_to(link_text, link, confirm: confirmation, method: :delete)
14
- result
15
- end
16
- end
17
- end
18
-
19
6
  def flash_messages
20
7
  return unless flash.any?
21
8
 
@@ -30,6 +17,30 @@ module ApplicationHelper
30
17
  end
31
18
  end
32
19
 
20
+ def utc_date(date)
21
+ raw %Q(<time class="utc-date" title="#{date}">#{date}</time>)
22
+ end
23
+
24
+ def private_area(can_manage, container = :div, &block)
25
+ return unless can_manage
26
+
27
+ content_for :sidebar do
28
+ content = with_output_buffer(&block)
29
+ content_tag(container, content, :class => 'private-area')
30
+ end
31
+
32
+ nil
33
+ end
34
+
35
+ def para(text)
36
+ raw text.to_s.gsub! /([^\r\n]+)/, "<p>\\1</p>"
37
+ end
38
+
39
+ def short(text, length = 100)
40
+ text = text.gsub /[\r\n]+/, ''
41
+ strip_tags(truncate(text, :length => length))
42
+ end
43
+
33
44
  # Set page title. Use this method in your views
34
45
  def title(page_title)
35
46
  @page_title = page_title
@@ -53,26 +64,32 @@ module ApplicationHelper
53
64
  content_tag(tag, heading)
54
65
  end
55
66
 
56
- def admin_area(&block)
57
- if user_signed_in?
58
- content = with_output_buffer(&block)
59
- content_tag(:div, content, :class => 'admin')
67
+ def scoped_link_to(*args, &block)
68
+ if block_given?
69
+ options = args.first || {}
70
+ html_options = args.second || {}
71
+ else
72
+ name = args[0]
73
+ options = args[1] || {}
74
+ html_options = args[2] || {}
60
75
  end
61
- end
62
76
 
63
- def link_to_section(name, options = {}, html_options = {}, &block)
64
77
  url_string = url_for(options)
65
78
 
66
- if "/#{request.path.split('/')[1]}" == url_string
79
+ if m = request.path.match(/^#{url_string}/)
67
80
  html_options[:class] = "#{html_options[:class]} current"
68
81
  end
69
82
 
70
- link_to(name, options, html_options, &block)
83
+ if block_given?
84
+ link_to(capture(&block), options, html_options)
85
+ else
86
+ link_to(name, options, html_options, &block)
87
+ end
71
88
  end
72
89
 
73
90
  def page_id
74
91
  name = 'page-' + request.path_parameters[:controller] + '-' + request.path_parameters[:action]
75
- name.gsub!(/_+/, '-')
92
+ name.gsub!(/[_\/]+/, '-')
76
93
  name
77
94
  end
78
95
 
@@ -3,29 +3,6 @@
3
3
  // Make the separation for home, domestic and other pages by define id for the 'body' tag.
4
4
  //
5
5
 
6
- @import "compass/css3/border-radius";
7
- @import "compass/css3/box-shadow";
8
- @import "compass/css3/text-shadow";
9
- @import "compass/css3/opacity";
10
- @import "compass/css3/images";
11
- @import "compass/css3/inline-block";
12
- @import "compass/css3/box-sizing";
13
- @import "compass/css3/gradient";
14
-
15
- @mixin pagination-active {
16
- @include background-image(none);
17
- @include single-box-shadow(#222, 1px, 1px, 3px, 0px, true);
18
- @include single-text-shadow(#222, -1px, -1px, 0);
19
- background: #555;
20
- color: #fff;
21
- padding: 3px 9px;
22
- border: 0;
23
- }
24
-
25
- #{headings(all)} {
26
- font: $base-font-family;
27
- }
28
-
29
6
  body {
30
7
  height: 100%;
31
8
  margin: 0;
@@ -42,12 +19,11 @@ body {
42
19
  border: 1px solid #fff;
43
20
  }
44
21
 
45
- header {
22
+ header#header {
46
23
  padding: 30px 0 30px 30px;
47
24
  position: relative;
48
25
  overflow: hidden;
49
26
  border-bottom: 1px solid #ddd;
50
- -moz-box-shadow: 0 1px 1px -1px #fff;
51
27
 
52
28
  #user-info { position: absolute; top: 30px; right: 30px; }
53
29
 
@@ -99,19 +75,6 @@ body {
99
75
  }
100
76
  }
101
77
  }
102
-
103
- #searchbar {
104
- width: 200px;
105
- position: absolute;
106
- top: 38px;
107
- right: 30px;
108
- font-size: 70%;
109
- font-weight: normal;
110
-
111
- #q {
112
- @include border-radius(12px);
113
- }
114
- }
115
78
  }
116
79
 
117
80
  #body {
@@ -172,7 +135,7 @@ body {
172
135
  }
173
136
  }
174
137
 
175
- footer {
138
+ footer#footer {
176
139
  font-size: 85%;
177
140
  padding: 0 20px;
178
141
  width: 855px;
@@ -1,5 +1,16 @@
1
+
2
+ @import "compass/css3/border-radius";
3
+ @import "compass/css3/box-shadow";
4
+ @import "compass/css3/text-shadow";
5
+ @import "compass/css3/opacity";
6
+ @import "compass/css3/images";
7
+ @import "compass/css3/inline-block";
8
+ @import "compass/css3/box-sizing";
9
+ @import "compass/css3/gradient";
10
+
1
11
  ///////////////////////////////////////////////////////////////////
2
12
  // Styles for flash messages
13
+
3
14
  #flash-messages {
4
15
  left: 0;
5
16
  position: fixed;
@@ -42,4 +53,21 @@
42
53
  }
43
54
 
44
55
  ///////////////////////////////////////////////////////////////////
45
- // Something else
56
+ // Pagination (for Kaminari)
57
+
58
+ @mixin pagination-active {
59
+ @include background-image(none);
60
+ @include single-box-shadow(#222, 1px, 1px, 3px, 0px, true);
61
+ @include single-text-shadow(#222, -1px, -1px, 0);
62
+ background: #555;
63
+ color: #fff;
64
+ padding: 3px 9px;
65
+ border: 0;
66
+ }
67
+
68
+ ///////////////////////////////////////////////////////////////////
69
+ // Application headings
70
+
71
+ #{headings(all)} {
72
+ font: $base-font-family;
73
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playmo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-01-21 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &83707350 !ruby/object:Gem::Requirement
16
+ requirement: &70364450 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - =
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.2.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *83707350
24
+ version_requirements: *70364450
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: ruby_events
27
- requirement: &83706800 !ruby/object:Gem::Requirement
27
+ requirement: &70361570 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *83706800
35
+ version_requirements: *70361570
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: haml2slim
38
- requirement: &83627550 !ruby/object:Gem::Requirement
38
+ requirement: &70359490 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - =
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.4.6
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *83627550
46
+ version_requirements: *70359490
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: haml
49
- requirement: &83627180 !ruby/object:Gem::Requirement
49
+ requirement: &70357770 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - =
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 3.1.4
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *83627180
57
+ version_requirements: *70357770
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rspec-rails
60
- requirement: &83626330 !ruby/object:Gem::Requirement
60
+ requirement: &70356910 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - =
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: 2.8.1
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *83626330
68
+ version_requirements: *70356910
69
69
  description:
70
70
  email:
71
71
  - demerest@gmail.com
@@ -112,6 +112,7 @@ files:
112
112
  - recipes/can_can_recipe.rb
113
113
  - recipes/capistrano_recipe.rb
114
114
  - recipes/compass_recipe.rb
115
+ - recipes/database_recipe.rb
115
116
  - recipes/devise_recipe.rb
116
117
  - recipes/forms_recipe.rb
117
118
  - recipes/gemfile_recipe.rb
@@ -128,8 +129,8 @@ files:
128
129
  - recipes/templates/application_controller_recipe/application_controller.rb
129
130
  - recipes/templates/application_controller_recipe/internal_error.html.erb
130
131
  - recipes/templates/application_controller_recipe/not_found.html.erb
131
- - recipes/templates/application_helper_recipe/application_helper.rb
132
- - recipes/templates/application_helper_recipe/flash_messages.js.coffee
132
+ - recipes/templates/application_helper_recipe/flash_messages_jquery.js.coffee
133
+ - recipes/templates/application_helper_recipe/flash_messages_mootools.js.coffee
133
134
  - recipes/templates/application_helper_recipe/playmo_helper.rb
134
135
  - recipes/templates/assets_recipe/images/bg.jpg
135
136
  - recipes/templates/assets_recipe/images/input-bg.gif
@@ -150,12 +151,8 @@ files:
150
151
  - recipes/templates/assets_recipe/stylesheets/partials/html5-boilerplate/_styles.css.scss
151
152
  - recipes/templates/capistrano_recipe/.gitkeep
152
153
  - recipes/templates/capistrano_recipe/deploy.rb
153
- - recipes/templates/devise_recipe/.gitkeep
154
- - recipes/templates/forms_recipe/.gitkeep
155
154
  - recipes/templates/home_controller_recipe/_sidebar.html.erb
156
- - recipes/templates/layout_recipe/application.html.erb
157
155
  - recipes/templates/rspec_recipe/.gitkeep
158
- - recipes/templates/rvm_recipe/.gitkeep
159
156
  - recipes/templates/thinking_sphinx_recipe/sphinx.yml
160
157
  - recipes/templates/unicorn_recipe/unicorn.rb
161
158
  - recipes/thinking_sphinx_recipe.rb
@@ -1,134 +0,0 @@
1
- # coding: utf-8
2
-
3
- module PlaymoHelper
4
- attr_accessor :page_title
5
-
6
- def link_to_delete(link, title, heading_tag = :h3)
7
- content_for :sidebar do
8
- content_tag :div, :class => 'danger-zone' do
9
- result = content_tag heading_tag, raw(title)
10
- link_text = t('helpers.application.link_to_delete.link_text')
11
- confirmation = t('helpers.application.link_to_delete.confirmation')
12
-
13
- result << link_to(link_text, link, confirm: confirmation, method: :delete)
14
- result
15
- end
16
- end
17
- end
18
-
19
- def flash_messages
20
- return unless flash.any?
21
-
22
- items = []
23
- flash.each do |name, msg|
24
- msg << content_tag(:a, raw('&times;'), :href => "#")
25
- items << content_tag(:li, raw(msg), :id => "flash-#{name}")
26
- end
27
-
28
- content_tag :div, :id => 'flash-messages' do
29
- content_tag :ul, raw(items.join)
30
- end
31
- end
32
-
33
- # Set page title. Use this method in your views
34
- def title(page_title)
35
- @page_title = page_title
36
- end
37
-
38
- # This prints page title. Call this helper
39
- # inside title tag of your layout
40
- def page_title(default_title = '')
41
- @page_title || default_title
42
- end
43
-
44
- # Print heading (h1 by default) and set page title
45
- # at the same time. Use this method in your views
46
- def heading_with_title(heading, tag=:h1)
47
- title(heading)
48
- heading(heading, tag)
49
- end
50
-
51
- def heading(heading, tag=:h1)
52
- tag = :h1 if tag.nil?
53
- content_tag(tag, heading)
54
- end
55
-
56
- def admin_area(&block)
57
- if user_signed_in?
58
- content = with_output_buffer(&block)
59
- content_tag(:div, content, :class => 'admin')
60
- end
61
- end
62
-
63
- def link_to_section(name, options = {}, html_options = {}, &block)
64
- url_string = url_for(options)
65
-
66
- if "/#{request.path.split('/')[1]}" == url_string
67
- html_options[:class] = "#{html_options[:class]} current"
68
- end
69
-
70
- link_to(name, options, html_options, &block)
71
- end
72
-
73
- def page_id
74
- name = 'page-' + request.path_parameters[:controller] + '-' + request.path_parameters[:action]
75
- name.gsub!(/_+/, '-')
76
- name
77
- end
78
-
79
- def link_to_website(url, html_options = {})
80
- return nil if url.blank?
81
-
82
- url = "http://#{url}" unless url =~ /^(ht|f)tps?:\/\//i
83
- html_options[:href] = url
84
- content_tag(:a, url, html_options)
85
- end
86
-
87
- # Create a named haml tag to wrap IE conditional around a block
88
- # http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither
89
- def ie_tag(name=:body, attrs={}, &block)
90
- attrs.symbolize_keys!
91
- result = "<!--[if lt IE 7 ]> #{ tag(name, add_class('ie6', attrs), true) } <![endif]-->\n".html_safe
92
- result += "<!--[if IE 7 ]> #{ tag(name, add_class('ie7', attrs), true) } <![endif]-->\n".html_safe
93
- result += "<!--[if IE 8 ]> #{ tag(name, add_class('ie8', attrs), true) } <![endif]-->\n".html_safe
94
- result += "<!--[if IE 9 ]> #{ tag(name, add_class('ie9', attrs), true) } <![endif]-->\n".html_safe
95
- result += "<!--[if (gte IE 9)|!(IE)]><!-->".html_safe
96
-
97
- result += content_tag name, attrs do
98
- "<!--<![endif]-->\n".html_safe + with_output_buffer(&block)
99
- end
100
-
101
- result
102
- end
103
-
104
- def ie_html(attrs={}, &block)
105
- ie_tag(:html, attrs, &block)
106
- end
107
-
108
- def ie_body(attrs={}, &block)
109
- ie_tag(:body, attrs, &block)
110
- end
111
-
112
- def google_account_id
113
- ENV['GOOGLE_ACCOUNT_ID'] || google_config(:google_account_id)
114
- end
115
-
116
- def google_api_key
117
- ENV['GOOGLE_API_KEY'] || google_config(:google_api_key)
118
- end
119
-
120
- private
121
-
122
- def add_class(name, attrs)
123
- classes = attrs[:class] || ''
124
- classes.strip!
125
- classes = ' ' + classes if !classes.blank?
126
- classes = name + classes
127
- attrs.merge(:class => classes)
128
- end
129
-
130
- def google_config(key)
131
- configs = YAML.load_file(File.join(Rails.root, 'config', 'google.yml'))[Rails.env.to_sym] rescue {}
132
- configs[key]
133
- end
134
- end
@@ -1,16 +0,0 @@
1
- flash_messages = ->
2
- $ = document.id
3
-
4
- document.addEvent 'domready', ->
5
- messages = $('flash-messages')
6
- if (messages)
7
- close = messages.getElement('a')
8
- hideMessages = -> messages.slide('out')
9
-
10
- close.addEvent 'click', -> (e)
11
- e.stop()
12
- hideMessages()
13
-
14
- hideMessages.delay(10000)
15
-
16
- flash_messages()
File without changes
File without changes
@@ -1,40 +0,0 @@
1
- <!DOCTYPE html>
2
- <%%= ie_html :class => 'no-js', :lang => :en do %>
3
-
4
- <head>
5
- <meta charset="utf-8">
6
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
7
- <%%= csrf_meta_tag %>
8
-
9
- <title><%%= page_title "Default title" %></title>
10
- <meta name="description" content="<%%= yield :description %>">
11
- <meta name="author" content="<%%= yield :author %>">
12
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
13
-
14
- <link rel="shortcut icon" href="/favicon.ico">
15
- </head>
16
- <body id="<%%= page_id %>">
17
-
18
- <div id="container">
19
- <header>
20
- <h1><%%= link_to_unless_current 'Welcome aboard!', root_path %></h1>
21
- </header>
22
-
23
- <div id="main">
24
- <%%= flash_messages %>
25
-
26
- <article class="article">
27
- <%%= yield %>
28
- </article>
29
-
30
- <aside>
31
- <%%= content_for?(:sidebar) ? yield(:sidebar) : render("shared/sidebar") %>
32
- </aside>
33
-
34
- </div>
35
-
36
- <footer>This application was generated with Playmo gem.</footer>
37
- </div>
38
-
39
- </body>
40
- <%% end %>
File without changes