beerdb-admin 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. data/History.md +3 -0
  2. data/Manifest.txt +55 -0
  3. data/README.md +29 -0
  4. data/Rakefile +26 -0
  5. data/app/assets/javascripts/beer_db_admin/application.js +15 -0
  6. data/app/assets/stylesheets/beer_db_admin/application.css.scss +3 -0
  7. data/app/controllers/beer_db_admin/beer_db_admin_controller.rb +6 -0
  8. data/app/controllers/beer_db_admin/beers_controller.rb +19 -0
  9. data/app/controllers/beer_db_admin/bookmarks_controller.rb +47 -0
  10. data/app/controllers/beer_db_admin/brands_controller.rb +21 -0
  11. data/app/controllers/beer_db_admin/breweries_controller.rb +31 -0
  12. data/app/controllers/beer_db_admin/countries_controller.rb +46 -0
  13. data/app/controllers/beer_db_admin/drinks_controller.rb +63 -0
  14. data/app/controllers/beer_db_admin/frontpage_controller.rb +15 -0
  15. data/app/controllers/beer_db_admin/pages_controller.rb +14 -0
  16. data/app/controllers/beer_db_admin/regions_controller.rb +13 -0
  17. data/app/controllers/beer_db_admin/sessions_controller.rb +53 -0
  18. data/app/controllers/beer_db_admin/tags_controller.rb +15 -0
  19. data/app/controllers/beer_db_admin/time_controller.rb +12 -0
  20. data/app/controllers/beer_db_admin/users_controller.rb +66 -0
  21. data/app/helpers/beer_db_admin/application_helper.rb +52 -0
  22. data/app/helpers/beer_db_admin/part_helper.rb +37 -0
  23. data/app/helpers/beer_db_admin/routes_helper.rb +21 -0
  24. data/app/views/beer_db_admin/beers/index.html.erb +70 -0
  25. data/app/views/beer_db_admin/beers/show.html.erb +132 -0
  26. data/app/views/beer_db_admin/brands/index.html.erb +41 -0
  27. data/app/views/beer_db_admin/breweries/index.html.erb +61 -0
  28. data/app/views/beer_db_admin/breweries/show.html.erb +111 -0
  29. data/app/views/beer_db_admin/countries/index.html.erb +49 -0
  30. data/app/views/beer_db_admin/countries/show.html.erb +133 -0
  31. data/app/views/beer_db_admin/countries/show_pocket.html.erb +111 -0
  32. data/app/views/beer_db_admin/drinks/_form.html.erb +29 -0
  33. data/app/views/beer_db_admin/drinks/edit.html.erb +4 -0
  34. data/app/views/beer_db_admin/drinks/new.html.erb +4 -0
  35. data/app/views/beer_db_admin/pages/about.html.erb +2 -0
  36. data/app/views/beer_db_admin/pages/index.html.erb +2 -0
  37. data/app/views/beer_db_admin/regions/index.html.erb +50 -0
  38. data/app/views/beer_db_admin/sessions/new.html.erb +54 -0
  39. data/app/views/beer_db_admin/shared/_beers.html.erb +16 -0
  40. data/app/views/beer_db_admin/shared/_bookmarks.html.erb +80 -0
  41. data/app/views/beer_db_admin/shared/_breweries_for_country.html.erb +22 -0
  42. data/app/views/beer_db_admin/shared/_breweries_for_region.html.erb +24 -0
  43. data/app/views/beer_db_admin/shared/_brewery_tags.html.erb +16 -0
  44. data/app/views/beer_db_admin/shared/_tags.html.erb +13 -0
  45. data/app/views/beer_db_admin/tags/index.html.erb +24 -0
  46. data/app/views/beer_db_admin/time/index.html.erb +40 -0
  47. data/app/views/beer_db_admin/users/edit.html.erb +40 -0
  48. data/app/views/beer_db_admin/users/show.html.erb +39 -0
  49. data/app/views/layouts/beer_db_admin/_flash.html.erb +6 -0
  50. data/app/views/layouts/beer_db_admin/_header.html.erb +16 -0
  51. data/app/views/layouts/beer_db_admin/beer_db_admin.html.erb +80 -0
  52. data/config/routes.rb +46 -0
  53. data/lib/beerdb/admin/engine.rb +6 -0
  54. data/lib/beerdb/admin/version.rb +5 -0
  55. data/lib/beerdb/admin.rb +20 -0
  56. metadata +127 -0
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+
3
+ module BeerDbAdmin
4
+
5
+ class TagsController < BeerDbAdminController
6
+
7
+ def index
8
+ @beer_tags = Tag.uniq.joins(:taggings).where("taggings.taggable_type='BeerDb::Models::Beer'").order('key').all
9
+ @brewery_tags = Tag.uniq.joins(:taggings).where("taggings.taggable_type='BeerDb::Models::Brewery'").order('key').all
10
+ end
11
+
12
+ end # class TagsController
13
+
14
+
15
+ end # module BeerDbAdmin
@@ -0,0 +1,12 @@
1
+ # encoding: utf-8
2
+
3
+ module BeerDbAdmin
4
+
5
+ class TimeController < BeerDbAdminController
6
+
7
+ def index
8
+ end
9
+
10
+ end # class TimeController
11
+
12
+ end # module BeerDbAdmin
@@ -0,0 +1,66 @@
1
+ # encoding: utf-8
2
+
3
+ module BeerDbAdmin
4
+
5
+ class UsersController < BeerDbAdminController
6
+
7
+ include ApplicationHelper # fix: move to ApplcationController current_user etc.
8
+
9
+ def index
10
+ end
11
+
12
+ def show
13
+ @user = User.find( params[:id] )
14
+ end
15
+
16
+ def edit
17
+ @user = User.find( params[:id] )
18
+ end
19
+
20
+ def add_beer
21
+ beer = Beer.find( params[:beer_id])
22
+ # assert that params[:id] == current_user_id
23
+ user = current_user()
24
+
25
+ # check if bookmark exists; if not create it
26
+ bookmark = Bookmark.find_by_bookmarkable_id_and_user_id( beer.id, user.id )
27
+ if bookmark.nil?
28
+ bookmark = Bookmark.new
29
+ bookmark.user_id = user.id
30
+ bookmark.bookmarkable_id = beer.id
31
+ bookmark.bookmarkable_type = 'BeerDb::Models::Beer'
32
+ bookmark.save!
33
+ end
34
+
35
+ flash[:notice] = 'Bookmark erfolgreich gespeichert.'
36
+
37
+ redirect_to :back
38
+ end
39
+
40
+ def add_brewery
41
+ brewery = Brewery.find( params[:brewery_id])
42
+ # assert that params[:id] == current_user_id
43
+ user = current_user()
44
+
45
+ brewery.beers.each do |beer|
46
+ # check if bookmark exists; if not create it
47
+ bookmark = Bookmark.find_by_bookmarkable_id_and_user_id( beer.id, user.id )
48
+ if bookmark.nil?
49
+ bookmark = Bookmark.new
50
+ bookmark.user_id = user.id
51
+ bookmark.bookmarkable_id = beer.id
52
+ bookmark.bookmarkable_type = 'BeerDb::Models::Beer'
53
+ bookmark.save!
54
+ end
55
+ end
56
+
57
+ flash[:notice] = "#{brewery.beers.count} Bookmarks erfolgreich gespeichert."
58
+
59
+ redirect_to :back
60
+ end
61
+
62
+ end # class UsersController
63
+
64
+
65
+ end # module BeerDbAdmin
66
+
@@ -0,0 +1,52 @@
1
+ # encoding: utf-8
2
+
3
+ module BeerDbAdmin
4
+ module ApplicationHelper
5
+
6
+ # todo/fix: try/polish breadcrumb helper
7
+ def breadcrumb(*parts)
8
+ content_for :breadcrumb do
9
+ parts.join( ' › ' )
10
+ end
11
+ end
12
+
13
+ def signed_in?
14
+ session[:user_id].nil? == false
15
+ end
16
+
17
+ def current_user
18
+ User.find( session[:user_id] )
19
+ end
20
+
21
+ def current_user_id
22
+ session[:user_id]
23
+ end
24
+
25
+ def current_user?( user )
26
+ session[:user_id] == user.id
27
+ end
28
+
29
+
30
+
31
+ def powered_by
32
+ content_tag :div do
33
+ link_to( 'Questions? Comments?', 'http://groups.google.com/group/beerdb' ) + " | " +
34
+ link_to( "world.db/#{WorldDb::VERSION}", 'https://github.com/geraldb/world.db.ruby' ) + ', ' +
35
+ link_to( "beer.db/#{BeerDb::VERSION}", 'https://github.com/geraldb/beer.db.ruby' ) + ' - ' +
36
+ content_tag( :span, "Ruby/#{RUBY_VERSION} (#{RUBY_RELEASE_DATE}/#{RUBY_PLATFORM}) on") + ' ' +
37
+ content_tag( :span, "Rails/#{Rails.version} (#{Rails.env})" ) + " | " +
38
+ link_to( 'Icon Drawer Flags', 'http://www.icondrawer.com' )
39
+ ## content_tag( :span, "#{request.headers['SERVER_SOFTWARE'] || request.headers['SERVER']}" )
40
+ end
41
+ end
42
+
43
+ def image_tag_for_country( country, opts={} )
44
+ if opts[:size] == 'large' || opts[:size] == '64x64'
45
+ image_tag "flags/64x64/#{country.key}.png"
46
+ else
47
+ image_tag "flags/24x24/#{country.key}.png"
48
+ end
49
+ end
50
+
51
+ end # module ApplicationHelper
52
+ end # module BeerDbAdmin
@@ -0,0 +1,37 @@
1
+ # encoding: utf-8
2
+
3
+ module BeerDbAdmin
4
+ module PartHelper
5
+
6
+ def render_bookmarks( bookmarks, opts={} )
7
+
8
+ render partial: 'beer_db_admin/shared/bookmarks',
9
+ locals: { bookmarks: bookmarks,
10
+ allow_edits: (opts[:edit].present? ? true : false) }
11
+ end
12
+
13
+ def render_tags( tags )
14
+ render partial: 'beer_db_admin/shared/tags', locals: { tags: tags }
15
+ end
16
+
17
+ def render_brewery_tags( brewery )
18
+ # NB: will include "pseudo" tags such as production/capacity in hl and others
19
+ render partial: 'beer_db_admin/shared/brewery_tags', locals: { brewery: brewery }
20
+ end
21
+
22
+ def render_beers( beers )
23
+ render partial: 'beer_db_admin/shared/beers', locals: { beers: beers }
24
+ end
25
+
26
+
27
+ def render_breweries_for_region( region )
28
+ render partial: 'beer_db_admin/shared/breweries_for_region', locals: { region: region }
29
+ end
30
+
31
+ def render_breweries_for_country( country )
32
+ render partial: 'beer_db_admin/shared/breweries_for_country', locals: { country: country }
33
+ end
34
+
35
+
36
+ end # module PartHelper
37
+ end # module BeerDbAdmin
@@ -0,0 +1,21 @@
1
+ # encoding: utf-8
2
+
3
+ module BeerDbAdmin
4
+ module RoutesHelper
5
+
6
+ ##############################
7
+ ## routes for shortcuts
8
+
9
+ def short_country_path( country, opts={} )
10
+ short_country_worker_path( country.key, opts )
11
+ end
12
+
13
+ =begin
14
+ def short_tag_path( tag, opts={} )
15
+ ## NB: tag needs slug NOT key (key may contain spaces)
16
+ short_tag_worker_path( tag.slug, opts )
17
+ end
18
+ =end
19
+
20
+ end # module RoutesHelper
21
+ end # moudle BeerDbAdmin
@@ -0,0 +1,70 @@
1
+
2
+ <h3><%= Beer.count %> Beers</h3>
3
+ <!-- todo: add display/page count e.g. 25 -->
4
+
5
+ <table>
6
+ <% @beers.each do |beer| %>
7
+ <tr>
8
+ <td class='beer-key'><%= beer.key %></td>
9
+
10
+ <% if signed_in? %>
11
+ <td>
12
+ <%= link_to 'Add', add_beer_to_user_path( beer.id, current_user_id ), class: 'btn' %>
13
+ </td>
14
+ <% end %>
15
+
16
+ <td><%= link_to beer.title, beer_path( beer.id ) %>
17
+ <% if beer.synonyms.present? %>
18
+ | <%= beer.synonyms %>
19
+ <% end %>
20
+ /
21
+ <% if beer.abv.present? %>
22
+ <%= beer.abv %>
23
+ <% else %>
24
+ -
25
+ <% end %>
26
+ %
27
+ <% if beer.plato.present? %>
28
+ &bull; <%= beer.plato %>°
29
+ <% end %>
30
+
31
+ //
32
+ <% if beer.brewery.present? %>
33
+ <%= beer.brewery.title %>
34
+ <% else %>
35
+ -
36
+ <% end %>
37
+
38
+ <% if beer.tags.count > 0 %>
39
+ <br>
40
+ <span class='tags'>
41
+ <% beer.tags.each_with_index do |tag,i| %>
42
+ <% if i > 0 %>
43
+ &bull;
44
+ <% end %>
45
+ <%= tag.key %>
46
+ <% end %>
47
+ </span>
48
+ <% end %>
49
+
50
+ </td>
51
+ <td>
52
+ <% if beer.city.present? %>
53
+ <%= beer.city.title %>
54
+ <% else %>
55
+ -
56
+ <% end %>
57
+ /
58
+ <% if beer.region.present? %>
59
+ <%= beer.region.title %>
60
+ <% else %>
61
+ -
62
+ <% end %>
63
+ /
64
+ <%= image_tag_for_country( beer.country ) %>
65
+ <%= link_to beer.country.title, short_country_path( beer.country ) %>
66
+ </td>
67
+ </tr>
68
+
69
+ <% end %>
70
+ </table>
@@ -0,0 +1,132 @@
1
+
2
+ <% beer = @beer
3
+ %>
4
+
5
+
6
+ <!-- fix: use beer-key -- add to css -->
7
+ <span class='brewery-key'><%= beer.key %></span>
8
+
9
+ <h3 style='margin-top: 0;'>
10
+ <%= beer.title %>
11
+ ,
12
+ <%= beer.bookmarks.where(yes:true).count %> +1s,
13
+ <%= beer.drinks.count %> Ratings
14
+
15
+ || <%= image_tag_for_country( beer.country ) %>
16
+ <%= link_to beer.country.title, short_country_path( beer.country ) %>
17
+ </h3>
18
+
19
+
20
+
21
+ <% if signed_in? %>
22
+ <p>
23
+ <%= link_to "Add", add_beer_to_user_path( beer.id, current_user_id ), class: 'btn' %>
24
+ </p>
25
+ <% end %>
26
+
27
+
28
+ <p>
29
+ <!-- todo ? move synonyms up to header ???
30
+ -->
31
+ <% if beer.synonyms.present? %>
32
+ <%= beer.synonyms %> /
33
+ <% end %>
34
+
35
+ <% if beer.abv.present? %>
36
+ Alk. <%= beer.abv %>
37
+ <% else %>
38
+ -
39
+ <% end %>
40
+ %
41
+
42
+ <% if beer.plato.present? %>
43
+ &bull; <%= beer.plato %>° Plato
44
+ <% end %>
45
+
46
+
47
+ <% if beer.tags.count > 0 %>
48
+ /
49
+ <%= render_tags( beer.tags ) %>
50
+ <% end %>
51
+
52
+ </p>
53
+
54
+
55
+
56
+ <% if beer.brewery.present? %>
57
+ <p>
58
+ By <%= link_to beer.brewery.title, brewery_path( beer.brewery.id ) %> |
59
+ <%= beer.brewery.founded %> ||
60
+ <%= beer.brewery.address %>
61
+ </p>
62
+ <% else %>
63
+ <!-- nothing -->
64
+ <% end %>
65
+
66
+
67
+
68
+ <h3><%= beer.bookmarks.where(yes:true).count %> +1s</h3>
69
+
70
+ <p>
71
+ <% beer.bookmarks.where(yes:true).each_with_index do |bookmark,i| %>
72
+ <% if i > 0 %>
73
+ &bull;
74
+ <% end %>
75
+ <%= link_to bookmark.user.name, user_path( bookmark.user.id ) %>
76
+ <% end %>
77
+ </p>
78
+
79
+ <h3><%= beer.drinks.count %> Ratings</h3>
80
+
81
+ <% beer.drinks.each do |drink| %>
82
+
83
+ <p>
84
+ <%= link_to drink.user.name, user_path( drink.user.id ) %>
85
+ -
86
+ <span class='drink-rating'>
87
+ <%= drink.rating %>
88
+ </span>
89
+
90
+ <span class='drink-comments'>
91
+ <%= drink.comments %>
92
+ </span>
93
+ /
94
+ <span class='drink-place'>
95
+ <%= drink.place %>
96
+ </span>
97
+ </p>
98
+
99
+ <% end %>
100
+
101
+
102
+
103
+ <hr>
104
+ <% if beer.brewery.present? %>
105
+ <p>
106
+ <% beer.brewery.beers.order(:title).each_with_index do |beer,i| %>
107
+ <% if i > 0 %>
108
+ &bull;
109
+ <% end %>
110
+ <%= link_to beer.title, beer_path( beer.id ) %>
111
+ <% end %>
112
+ </p>
113
+ <% end %>
114
+
115
+
116
+ <hr>
117
+ <p>
118
+ <% if beer.city.present? %>
119
+ <%= beer.city.title %>
120
+ <% else %>
121
+ -
122
+ <% end %>
123
+ /
124
+ <% if beer.region.present? %>
125
+ <%= beer.region.title %>
126
+ <% else %>
127
+ -
128
+ <% end %>
129
+ /
130
+ <%= image_tag_for_country( beer.country ) %>
131
+ <%= link_to beer.country.title, short_country_path( beer.country ) %>
132
+ </p>
@@ -0,0 +1,41 @@
1
+
2
+ <h3><%= @brands.count %> Brands</h3>
3
+
4
+ <table>
5
+ <% @brands.each do |brand| %>
6
+ <tr>
7
+ <td class='beer-key'><%= brand.key %></td>
8
+
9
+ <td><%= brand.title %>
10
+ <% if brand.synonyms.present? %>
11
+ | <%= beer.synonyms %>
12
+ <% end %>
13
+
14
+ //
15
+ <% if brand.brewery.present? %>
16
+ <%= brand.brewery.title %>
17
+ <% else %>
18
+ -
19
+ <% end %>
20
+
21
+ </td>
22
+ <td>
23
+ <% if brand.city.present? %>
24
+ <%= brand.city.title %>
25
+ <% else %>
26
+ -
27
+ <% end %>
28
+ /
29
+ <% if brand.region.present? %>
30
+ <%= brand.region.title %>
31
+ <% else %>
32
+ -
33
+ <% end %>
34
+ /
35
+ <%= image_tag_for_country( brand.country ) %>
36
+ <%= link_to brand.country.title, short_country_path( brand.country ) %>
37
+ </td>
38
+ </tr>
39
+
40
+ <% end %>
41
+ </table>