beerdb-admin 0.0.1

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 (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>