beerdb-admin 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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>
|