Skip to content

Commit f1d37a0

Browse files
committed
Merge pull request #10 from scalex/feature/dropzone
Заливка аватарок. Версия 0.1
2 parents 7fb910b + 1e0e046 commit f1d37a0

File tree

11 files changed

+930
-163
lines changed

11 files changed

+930
-163
lines changed

app/app.rb

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,16 @@ def unauthorized_template
4242
failure_app: BadSteam,
4343
}
4444

45+
set :public_folder, Proc.new { File.join(root, 'public') }
46+
4547
register Sinatra::Auth::Github
4648

4749
get '/' do
4850
render_index
4951
end
5052

5153
get '/login' do
52-
github_organization_authenticate!(settings.github_options[:organization])
54+
github_auth!
5355
redirect '/'
5456
end
5557

@@ -59,39 +61,48 @@ def unauthorized_template
5961
end
6062

6163
get '/new' do
64+
github_auth!
6265
specimen = Specimen.new
6366
render_form specimen
6467
end
6568

6669
post '/create' do
70+
github_auth!
6771
specimen = Specimen.new
6872
specimen = Specimen::Creator.new(specimen).call params
6973
render_form specimen
7074
end
7175

7276
get '/:nick/edit' do
77+
github_auth!
7378
specimen = Specimen[params[:nick]]
7479
render_form specimen
7580
end
7681

7782
post '/:nick/update' do
83+
github_auth!
7884
specimen = Specimen[params[:nick]]
7985
specimen = Specimen::Updater.new(specimen).call params
8086
redirect "/#{params[:nick]}/edit"
8187
end
8288

8389
post '/:nick/gimmick' do
90+
github_auth!
8491
specimen = Specimen[params[:nick]]
8592
specimen = Specimen::Updater.new(specimen).call params
8693
redirect '/'
8794
end
8895

8996
post '/:nick/foto' do
97+
github_auth!
9098
content_type :json
91-
File.open("#{params[:file][:filename]}", 'w') do |f|
92-
f.write params[:file][:tempfile].read
99+
file_name = params[:file][:filename]
100+
File.open("#{public_folder}/#{file_name}", 'w') do |file|
101+
file.write params[:file][:tempfile].read
102+
specimen = Specimen[params[:nick]]
103+
specimen = Specimen::Updater.new(specimen).call foto: file_name
93104
end
94-
{ foo: 'bar' }.to_json
105+
{ url: file_name }.to_json
95106
end
96107

97108
private
@@ -119,5 +130,13 @@ def render_form specimen
119130
def render_index
120131
slim :index
121132
end
133+
134+
def github_auth!
135+
github_organization_authenticate!(settings.github_options[:organization])
136+
end
137+
138+
def public_folder
139+
settings.public_folder
140+
end
122141
end
123142
end

app/assets/scripts/app.js.coffee

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,28 @@
11
#= require jquery
22
#= require bootstrap
3+
#= require dropzone
4+
5+
# Dropzone.options.myAwesomeDropzone = {
6+
# init: function() {
7+
# this.on("addedfile", function(file) { alert("Added file."); });
8+
# }
9+
# };
10+
Dropzone.autoDiscover = false
311

412
jQuery ($) ->
5-
# $('#container').on 'click', '[rel=push-gimmick]', (e) ->
613
$('[rel=push-gimmick]').on 'click', (e) ->
714
e.preventDefault()
815
newGimmick e
916
off
1017

1118
newGimmick = (event) ->
12-
$(event.currentTarget).before '<input type="text" name="gimmick" placeholder="new gimmick" autofocus />'
19+
$(event.currentTarget).before '<input class="gimmick-input" type="text" name="gimmick" placeholder="new gimmick" autofocus />'
20+
21+
fotoUploaded = (file, response) ->
22+
console.debug file, response, file.previewElement
23+
24+
$('.dropzone').each ->
25+
new Dropzone(@, {
26+
uploadMultiple: false
27+
success: fotoUploaded
28+
})

app/assets/styles/app.css.sass

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
@import 'footer'
22
@import 'bootstrap'
33
@import 'font-awesome'
4+
@import 'basic-dropzone'
5+
6+
.nav-user-avatar
7+
width: 20px
8+
height: 20px
9+
margin-right: 5px
410

511
.foto-placeholder
612
width: 155px
@@ -11,12 +17,17 @@
1117
border-radius: 2px
1218
display: inline-block
1319

14-
1520
.img-thumbnail
1621
margin-bottom: 12px
22+
width: 200px
23+
height: 200px
24+
background-color: aliceblue
1725

26+
.foto
27+
width: 190px
28+
height: 190px
1829

19-
input[name=gimmick]
30+
.gimmick-input
2031
outline: none
2132
border: none
2233
border-bottom: 1px solid black

app/schema.rb

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
DB.transaction do
2-
DB.extension :pg_hstore
3-
42
DB.create_table?(:specimens) do
53
String :nick, :size => 255, :primary_key => true
4+
String :foto
65
String :position
76
String :firstname
87
String :lastname
@@ -12,4 +11,3 @@
1211
json :links
1312
end
1413
end
15-

app/services/specimen/updater.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ def call params
88
@specimen[:firstname] = params[:firstname] if params[:firstname]
99
@specimen[:position] = params[:position] if params[:position]
1010
@specimen[:about] = params[:about] if params[:about]
11+
@specimen[:foto] = params[:foto] if params[:foto]
1112

1213
update_links params
1314
add_gimmick params

app/views/index.slim

Lines changed: 25 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,23 @@
22
- Specimen.all.each do |spec|
33
.col-9.col-sm-9.col-lg-6
44
.row
5-
.col-4.col-sm-4.col-lg-4
6-
.img-thumbnail
7-
form.dropzone action="/#{spec.nick}/foto"
8-
i.foto-placeholder.fa.fa-user.icon-4x
9-
p
10-
.btn-group
11-
button.btn.btn-default type="button" Actions »
12-
button.btn.btn-default.dropdown-toggle type="button" data-toggle="dropdown"
13-
span.caret
14-
ul.dropdown-menu role="menu"
15-
li
16-
a href="/#{spec.nick}/edit"
17-
i.icon-edit-sign.icon-large
18-
| Подправить
19-
li
20-
a href="mailto:"
21-
i.icon-envelope.icon-large
22-
| WTF
23-
.col-8.col-sm-8.col-lg-8
5+
.col-5.col-sm-5.col-lg-5
6+
- if spec.foto
7+
.img-thumbnail: img.foto src="/#{spec.foto}"
8+
- else
9+
.img-thumbnail class="#{github_user ? 'dropzone' : nil}" action="/#{spec.nick}/foto"
10+
11+
- if github_user
12+
p
13+
.btn-group
14+
a.btn.btn-default href='mailto:' WTF
15+
button.btn.btn-default.dropdown-toggle type='button' data-toggle='dropdown'
16+
span.caret
17+
span.sr-only Toggle Dropdown
18+
ul.dropdown-menu role='menu'
19+
li: a href="/#{spec.nick}/edit" Подправить...
20+
21+
.col-7.col-sm-7.col-lg-7
2422
h2.media-heading
2523
= spec.nick
2624
br
@@ -29,20 +27,16 @@
2927

3028
- spec.links.each do |k, link|
3129
p
32-
a href="//#{link}"
30+
a href="#{link}"
3331
i.fa class="fa-#{guess_icon link}"
3432
= " #{link}"
3533
blockquote = spec.about
3634
p.gimmicks-list
37-
38-
form action="/#{spec.nick}/gimmick" method="post"
39-
- spec.gimmicks && spec.gimmicks.each do |g|
40-
span.label.label-info = g
41-
| &nbsp;
42-
a.btn.btn-default.btn-xs href="#" rel="push-gimmick"
43-
i.fa.fa-terminal
35+
- spec.gimmicks && spec.gimmicks.each do |g|
36+
span.label.label-info = g
4437
| &nbsp;
45-
46-
hr
47-
48-
a.btn.btn-default href="/specimens/new" Зарегать особь...
38+
- if github_user
39+
form action="/#{spec.nick}/gimmick" method="post"
40+
a.btn.btn-default.btn-xs href="#" rel="push-gimmick"
41+
i.fa.fa-plus
42+
| &nbsp;

app/views/layout.slim

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@ html
2222
.collapse.navbar-collapse
2323
ul.nav.navbar-nav
2424
li.active
25-
a href='/' Home
26-
ul.nav.navbar-nav.navbar-right
27-
25+
a href='/' Главная
26+
- if github_user
27+
li
28+
a href='/new' Добавить друга
2829

30+
ul.nav.navbar-nav.navbar-right
2931
- if github_user
3032
li.dropdown
3133
a.dropdown-toggle href='#' data-toggle='dropdown'
@@ -36,15 +38,15 @@ html
3638
li: a href='/logout' Logout
3739
- else
3840
li: a href='/login'
39-
i.icon-github
41+
i.fa.fa-github.fa-lg
4042
' Login using GitHub
4143

4244

4345
.container#container
4446
.row.row-offcanvas.row-offcanvas-right
4547
.col-xs-12.col-sm-9.col-lg-12
4648
p.pull-right.visible-xs
47-
button.btn.btn-primary.btn-xs type="button" data-toggle="offcanvas" Toggle nav
49+
button.btn.btn-primary.btn-xs type='button' data-toggle='offcanvas' Меню
4850
== yield
4951

5052
footer

config.ru

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ fonts.append_path 'vendor/assets/fonts'
1818
images = Sprockets::Environment.new
1919
images.append_path 'app/assets/images'
2020

21-
map("/css") { run stylesheets }
22-
map("/fonts") { run fonts }
23-
map("/font") { run fonts }
24-
map("/js") { run javascripts }
25-
map("/img") { run images }
21+
map('/css') { run stylesheets }
22+
map('/fonts') { run fonts }
23+
map('/font') { run fonts }
24+
map('/js') { run javascripts }
25+
map('/img') { run images }
2626

2727
map('/') { run Steam::App }

0 commit comments

Comments
 (0)