cessna 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,9 +16,9 @@
16
16
  =folder.name
17
17
  - @videos.each do |video|
18
18
  %li
19
- %i{class: 'icon-facetime-video'}
19
+ %i{class: 'icon-film'}
20
20
  %a{href: "/play/#{Base64.encode64(video.location)}"}
21
- ="#{video.name}"
21
+ = "#{video.name}"
22
22
  - else
23
23
  %div{class: 'alert alert-info'}
24
- ="There are no folders or supported video formats in this folder..."
24
+ = 'There were no folders or supported video formats found in this folder...'
@@ -1,7 +1,7 @@
1
1
  %div{class: 'alert alert-error'}
2
2
  %p
3
3
  %strong
4
- ="Something went wrong!"
5
- =@error_message
4
+ = 'Something went wrong!'
5
+ = @error_message
6
6
 
7
7
  %a{href: '/', class: 'btn'}="back"
@@ -13,4 +13,6 @@
13
13
  %input{type: 'password', name: 'password', placeholder: 'Password'}
14
14
  %div.control-group
15
15
  %div.controls
16
- %button{type: 'submit', class: 'btn'} Send
16
+ %button{type: 'submit', class: 'btn'} Send
17
+
18
+
@@ -1,17 +1,38 @@
1
1
  !!!
2
2
  %html
3
3
  %head
4
- %title Cessna
4
+ %title= 'Cessna'
5
5
  %link{:rel => 'stylesheet', :href => '/assets/css/bootstrap.css', :type => "text/css"}
6
6
  %link{:rel => 'stylesheet', :href => '/assets/css/bootstrap-responsive.css', :type => "text/css"}
7
7
  %link{:rel => 'stylesheet', :href => '/assets/css/docs.css', :type => "text/css"}
8
+ %script{type: 'text/javascript', src: '/assets/js/jquery.js'}
9
+ %script{type: 'text/javascript', src: '/assets/js/bootstrap.js'}
8
10
  %body
9
- .container
10
- .row
11
- %h3{class: 'muted'}
12
- Cessna
11
+ .container-narrow
12
+ .header
13
+ %ul{class: 'nav nav-pills pull-right'}
14
+ %li
15
+ %a{href: '/servers'}
16
+ = 'Servers'
13
17
  - if @hostname
14
- %small="@#{@hostname}"
15
- %hr
16
- .row
17
- =yield
18
+ %li{class: 'dropdown'}
19
+ %a{href: '#', class: 'dropdown-toggle', data: {toggle: 'dropdown'}}
20
+ = "@#{@hostname}"
21
+ %b{class: 'caret'}
22
+
23
+ %ul{class: 'dropdown-menu'}
24
+ %li
25
+ %a{href: '/browse'}
26
+ = 'Browse shared folders'
27
+ %li{class: 'divider'}
28
+ %li
29
+ %a{href: '/disconnect'}
30
+ = 'Disconnect'
31
+ %h3{class: 'muted'}
32
+ = 'Cessna'
33
+
34
+ %hr
35
+
36
+ .row-fluid
37
+ .span12
38
+ =yield
@@ -1,7 +1,7 @@
1
1
  %ul{class: 'breadcrumb'}
2
2
  %li
3
3
  %a{href: "/browse/#{Base64.encode64(@parent_location)}"}
4
- =".."
4
+ = '..'
5
5
  %span{class: 'divider'}='/'
6
6
  %li{class: 'active'}
7
7
  =@video_name
@@ -11,11 +11,11 @@
11
11
 
12
12
  - unless format_is_supported?(@video_name)
13
13
  %div{class: 'alert alert-info'}
14
- ="The playback of this video format ist not really supported by HTML5 video and therefore the playback is disabled."
14
+ = 'The playback of this video format ist not really supported by HTML5 video and therefore the playback is disabled.'
15
15
  - else
16
- %div
17
- %video{ width: 640, controls: true, autoplay: true, class: 'img-polaroid'}
16
+ %div{class: 'center'}
17
+ %video{ width: '98%', controls: true, autoplay: true, class: 'img-polaroid'}
18
18
  %source{src: @video_stream_url}
19
19
 
20
20
  %a{href: @video_stream_url, class: 'btn btn-small'}
21
- ="Download this video"
21
+ = 'Download'
@@ -0,0 +1,72 @@
1
+ - if @servers.empty?
2
+ %div{class: 'alert alert-info'}
3
+ ="There were no AirVideo Servers found in your local network."
4
+
5
+ - else
6
+ %table{class: 'table table-condensed'}
7
+ %thead
8
+ %tr
9
+ %th= 'Hostname'
10
+ %th= 'IP address'
11
+ %th= 'Port'
12
+ %tbody
13
+ - @servers.each do |server|
14
+ %tr
15
+ %td= server.hostname
16
+ %td= server.ip
17
+ %td= server.port
18
+ %td{class: 'right'}
19
+ %a{href: '#connect', class: 'open-dialog', role: 'button', data: { hostname: "#{server.hostname}", ip: "#{server.ip}", port: "#{server.port}", toggle: 'modal', target: '#connect' }}
20
+ = 'Connect'
21
+
22
+ %div{id: 'connect', class: 'modal hide fade', tabindex: '-1', role: 'dialog', aria: { labelledby: 'connectLabel', hidden: 'true' } }
23
+ %div{class: 'modal-header'}
24
+ %button{type: 'button', class: 'close', data: { dismiss: 'modal' }, aria: { hidden: 'true'}}
25
+ = 'x'
26
+ %h3{id: 'connectLabel'}
27
+ %span{id: 'hostname-label'}
28
+ %div{class: 'modal-body'}
29
+ %form{ action: '/session', method: 'post', id: 'connect-form', class: 'form-horizontal'}
30
+ %input{type: 'text', class: 'hide', name: 'hostname', id: 'hostname'}
31
+ %div.control-group
32
+ %label.control-label{for: 'ipaddr'}
33
+ = 'IP address:'
34
+ %div.controls
35
+ %input{type: 'text', name: 'ipaddr', id: 'ipaddr'}
36
+ %div.control-group
37
+ %label.control-label{for: 'port'}
38
+ = 'Port:'
39
+ %div.controls
40
+ %input{type: 'text', name: 'port', id: 'port'}
41
+ %div.control-group
42
+ %label.control-label{for: 'password'}
43
+ = 'Password:'
44
+ %div.controls
45
+ %input{type: 'password', name: 'password', placeholder: 'Password'}
46
+ %div{class: 'modal-footer'}
47
+ %div.control-group
48
+ %div.controls
49
+ %button{type: 'submit', class: 'btn btn-primary', id: 'submit'}
50
+ = 'Connect'
51
+
52
+ :javascript
53
+ $(document).on('click', '.open-dialog', function() {
54
+ var hostname = $(this).data('hostname');
55
+ var ip = $(this).data('ip');
56
+ var port = $(this).data('port');
57
+
58
+ $('#hostname-label').html(hostname);
59
+ $('#hostname').val(hostname);
60
+ $('#ipaddr').val(ip);
61
+ $('#port').val(port);
62
+ });
63
+
64
+ $('#submit').on('click', function() {
65
+ $('#connect-form').submit();
66
+ });
67
+
68
+ $('#connect').on('keypress', function(e) {
69
+ if (e.which === 13) {
70
+ $('#connect-form').submit();
71
+ }
72
+ });
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cessna
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-20 00:00:00.000000000 Z
12
+ date: 2013-02-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
@@ -59,6 +59,22 @@ dependencies:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: dnssd
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
62
78
  description: A web client for the AirVideo Server
63
79
  email:
64
80
  - mettler.fabian@gmail.com
@@ -75,17 +91,22 @@ files:
75
91
  - bin/cessna
76
92
  - cessna.gemspec
77
93
  - lib/cessna.rb
94
+ - lib/cessna/bonjour.rb
95
+ - lib/cessna/bonjour/server.rb
78
96
  - lib/cessna/version.rb
79
97
  - public/assets/css/bootstrap-responsive.css
80
98
  - public/assets/css/bootstrap.css
81
99
  - public/assets/css/docs.css
82
100
  - public/assets/img/glyphicons-halflings-white.png
83
101
  - public/assets/img/glyphicons-halflings.png
102
+ - public/assets/js/bootstrap.js
103
+ - public/assets/js/jquery.js
84
104
  - views/browse.haml
85
105
  - views/error.haml
86
106
  - views/index.haml
87
107
  - views/layout.haml
88
108
  - views/play.haml
109
+ - views/servers.haml
89
110
  homepage: https://github.com/maveonair/cessna
90
111
  licenses: []
91
112
  post_install_message: