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.
- data/History.md +3 -0
- data/Manifest.txt +55 -0
- data/README.md +29 -0
- data/Rakefile +26 -0
- data/app/assets/javascripts/beer_db_admin/application.js +15 -0
- data/app/assets/stylesheets/beer_db_admin/application.css.scss +3 -0
- data/app/controllers/beer_db_admin/beer_db_admin_controller.rb +6 -0
- data/app/controllers/beer_db_admin/beers_controller.rb +19 -0
- data/app/controllers/beer_db_admin/bookmarks_controller.rb +47 -0
- data/app/controllers/beer_db_admin/brands_controller.rb +21 -0
- data/app/controllers/beer_db_admin/breweries_controller.rb +31 -0
- data/app/controllers/beer_db_admin/countries_controller.rb +46 -0
- data/app/controllers/beer_db_admin/drinks_controller.rb +63 -0
- data/app/controllers/beer_db_admin/frontpage_controller.rb +15 -0
- data/app/controllers/beer_db_admin/pages_controller.rb +14 -0
- data/app/controllers/beer_db_admin/regions_controller.rb +13 -0
- data/app/controllers/beer_db_admin/sessions_controller.rb +53 -0
- data/app/controllers/beer_db_admin/tags_controller.rb +15 -0
- data/app/controllers/beer_db_admin/time_controller.rb +12 -0
- data/app/controllers/beer_db_admin/users_controller.rb +66 -0
- data/app/helpers/beer_db_admin/application_helper.rb +52 -0
- data/app/helpers/beer_db_admin/part_helper.rb +37 -0
- data/app/helpers/beer_db_admin/routes_helper.rb +21 -0
- data/app/views/beer_db_admin/beers/index.html.erb +70 -0
- data/app/views/beer_db_admin/beers/show.html.erb +132 -0
- data/app/views/beer_db_admin/brands/index.html.erb +41 -0
- data/app/views/beer_db_admin/breweries/index.html.erb +61 -0
- data/app/views/beer_db_admin/breweries/show.html.erb +111 -0
- data/app/views/beer_db_admin/countries/index.html.erb +49 -0
- data/app/views/beer_db_admin/countries/show.html.erb +133 -0
- data/app/views/beer_db_admin/countries/show_pocket.html.erb +111 -0
- data/app/views/beer_db_admin/drinks/_form.html.erb +29 -0
- data/app/views/beer_db_admin/drinks/edit.html.erb +4 -0
- data/app/views/beer_db_admin/drinks/new.html.erb +4 -0
- data/app/views/beer_db_admin/pages/about.html.erb +2 -0
- data/app/views/beer_db_admin/pages/index.html.erb +2 -0
- data/app/views/beer_db_admin/regions/index.html.erb +50 -0
- data/app/views/beer_db_admin/sessions/new.html.erb +54 -0
- data/app/views/beer_db_admin/shared/_beers.html.erb +16 -0
- data/app/views/beer_db_admin/shared/_bookmarks.html.erb +80 -0
- data/app/views/beer_db_admin/shared/_breweries_for_country.html.erb +22 -0
- data/app/views/beer_db_admin/shared/_breweries_for_region.html.erb +24 -0
- data/app/views/beer_db_admin/shared/_brewery_tags.html.erb +16 -0
- data/app/views/beer_db_admin/shared/_tags.html.erb +13 -0
- data/app/views/beer_db_admin/tags/index.html.erb +24 -0
- data/app/views/beer_db_admin/time/index.html.erb +40 -0
- data/app/views/beer_db_admin/users/edit.html.erb +40 -0
- data/app/views/beer_db_admin/users/show.html.erb +39 -0
- data/app/views/layouts/beer_db_admin/_flash.html.erb +6 -0
- data/app/views/layouts/beer_db_admin/_header.html.erb +16 -0
- data/app/views/layouts/beer_db_admin/beer_db_admin.html.erb +80 -0
- data/config/routes.rb +46 -0
- data/lib/beerdb/admin/engine.rb +6 -0
- data/lib/beerdb/admin/version.rb +5 -0
- data/lib/beerdb/admin.rb +20 -0
- 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,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
|
+
• <%= 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
|
+
•
|
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
|
+
• <%= 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
|
+
•
|
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
|
+
•
|
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>
|