playmo 0.1.2 → 0.1.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.
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