concerto_hardware 0.6 → 0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/concerto_hardware/application_controller.rb~ +20 -0
- data/app/controllers/concerto_hardware/players_controller.rb +2 -1
- data/app/models/concerto_hardware/ability.rb~ +43 -0
- data/app/models/concerto_hardware/player.rb +18 -0
- data/app/views/concerto_hardware/players/index.html.erb~ +49 -0
- data/lib/concerto_hardware/version.rb +1 -1
- data/lib/concerto_hardware/version.rb~ +3 -0
- metadata +10 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1de2ff162fbfe44a96e2e7a3a186884558c818d
|
4
|
+
data.tar.gz: 32d526c912f7106a368aa00f68d10e6bb2bcd5a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9ebf4129523305e383b03c265149063714351a9ec0f7f175b674baeb64e908ba8e7113b0e677cf8635f8c5e654c563030b2bc182688fb10c534503127a6552b
|
7
|
+
data.tar.gz: 4d238f151e2199e50c85e9a2b88116f81f76b83ebbc6da55a43ce549730dc46cd20ace2b85f923ec99e7e8e919d5dbc5a7d6e57bcf24cf8fcf61add3c4892ece
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module ConcertoHardware
|
2
|
+
# Congratulations! You've found this engine's secret sauce.
|
3
|
+
# In a regular isolated engine, the engine's ApplicationController
|
4
|
+
# inherits from ActionController::Base. We're using the the main app's
|
5
|
+
# ApplicationController, making the isolation a little less strict.
|
6
|
+
# For example, we get the layout from the main Concerto app.
|
7
|
+
# Note that links back to the main application will need to directly
|
8
|
+
# reference the main_app router.
|
9
|
+
helper_method :current_accessor2
|
10
|
+
class ApplicationController < ::ApplicationController
|
11
|
+
def current_ability
|
12
|
+
# Use the Ability class defined in this engine's namespace.
|
13
|
+
# It is designed to also include the rules from the main app.
|
14
|
+
@current_ability ||= ConcertoHardware::Ability.new(current_accessor)
|
15
|
+
end
|
16
|
+
def current_accessor2
|
17
|
+
current_accessor
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -41,7 +41,8 @@ class PlayersController < ConcertoHardware::ApplicationController
|
|
41
41
|
format.html # show.html.erb
|
42
42
|
format.json {
|
43
43
|
render :json => @player.to_json(
|
44
|
-
:include => { :screen => { :only => :name } }
|
44
|
+
:include => { :screen => { :only => :name } },
|
45
|
+
:methods => [:time_zone]
|
45
46
|
)
|
46
47
|
}
|
47
48
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module ConcertoHardware
|
2
|
+
# The enigne's Ability class simply extends the existing Ability
|
3
|
+
# class for the application. We rely on the fact that it already
|
4
|
+
# includes CanCan::Ability.
|
5
|
+
class Ability < ::Ability
|
6
|
+
def initialize(accessor)
|
7
|
+
super # Get the main application's rules
|
8
|
+
# The main app will delegate to user_abilities, etc.
|
9
|
+
# Note the inherited rules give Admins rights to manage everything
|
10
|
+
end
|
11
|
+
|
12
|
+
def user_abilities(user)
|
13
|
+
super # Get the user rules from the main applications
|
14
|
+
|
15
|
+
# For debugging you may want to make all Players readable
|
16
|
+
# can :read, Player
|
17
|
+
|
18
|
+
# Let's defer to Concerto's rules for Screen Permissions.
|
19
|
+
# This will apply to both users browsing the hardware info
|
20
|
+
# as well as public screens in public instances accessing their data.
|
21
|
+
# - Right now, only admins can create players (TODO)
|
22
|
+
# - It may become desirable in the future for reading to be
|
23
|
+
# restricted or curtailed if a lot of sensitive data is stored here.
|
24
|
+
can :read, Player do |player|
|
25
|
+
!player.screen.nil? and can? :read, player.screen
|
26
|
+
end
|
27
|
+
can :update, Player do |player|
|
28
|
+
!player.screen.nil? and can? :update, player.screen
|
29
|
+
end
|
30
|
+
can :delete, Player do |player|
|
31
|
+
!player.screen.nil? and can? :delete, player.screen
|
32
|
+
end
|
33
|
+
end # user_abilities
|
34
|
+
|
35
|
+
def screen_abilities(screen)
|
36
|
+
super
|
37
|
+
# A logged-in screen can read its own Player information.
|
38
|
+
can :read, Player, :screen_id => screen.id
|
39
|
+
# In the future it may also need to write reporting data, so
|
40
|
+
# this will need to be expanded.
|
41
|
+
end # screen_abilities
|
42
|
+
end # class Ability
|
43
|
+
end # module ConcertoHardware
|
@@ -201,6 +201,24 @@ module ConcertoHardware
|
|
201
201
|
return ConcertoConfig[:poll_interval].to_i
|
202
202
|
end
|
203
203
|
|
204
|
+
# Get the timezone that has been configured for this screen,
|
205
|
+
# using in the standard region/city format.
|
206
|
+
# Example: "America/New York"
|
207
|
+
# This is used in the Player API for Bandshell.
|
208
|
+
def time_zone
|
209
|
+
# The concerto config and screen config are stored in
|
210
|
+
# ActiveSupport::TimeZone's "friendly" time zone format:
|
211
|
+
# "Eastern Time (US & Canada)"
|
212
|
+
if screen.nil? or screen.time_zone.nil?
|
213
|
+
pretty_time_zone = ConcertoConfig[:system_time_zone]
|
214
|
+
else
|
215
|
+
pretty_time_zone = screen.time_zone
|
216
|
+
end
|
217
|
+
# Now just backtrack to the canonical name which will
|
218
|
+
# be useful to the players.
|
219
|
+
ActiveSupport::TimeZone::MAPPING[pretty_time_zone]
|
220
|
+
end
|
221
|
+
|
204
222
|
def as_json(options)
|
205
223
|
json = super(options)
|
206
224
|
json["screen_on_off"] = ActiveSupport::JSON.decode(self.screen_on_off)
|
@@ -0,0 +1,49 @@
|
|
1
|
+
<section class="viewblock">
|
2
|
+
<header class="viewblock-header">
|
3
|
+
<h1 class="default-padding">
|
4
|
+
<%= t(:all_model, :model => ConcertoHardware::Player.model_name.human.pluralize) %>
|
5
|
+
</h1>
|
6
|
+
</header>
|
7
|
+
<div class="viewblock-cont">
|
8
|
+
<table>
|
9
|
+
<tr>
|
10
|
+
<th><%= ConcertoHardware::Player.human_attribute_name(:ip_address) %></th>
|
11
|
+
<th><%= ConcertoHardware::Player.human_attribute_name(:screen_id) %></th>
|
12
|
+
<th><%= ConcertoHardware::Player.human_attribute_name(:activated) %></th>
|
13
|
+
<th>Actions</th>
|
14
|
+
</tr>
|
15
|
+
|
16
|
+
<% @players.each do |player| %>
|
17
|
+
<tr>
|
18
|
+
<td><%= player.ip_address %></td>
|
19
|
+
<td><%= player.screen.name %></td>
|
20
|
+
<td><%= player.activated %></td>
|
21
|
+
|
22
|
+
<td>
|
23
|
+
<% if can? :read, player %>
|
24
|
+
<%= link_to t(:show, :model => ConcertoHardware::Player.model_name.human), player, :class => "btn" %>
|
25
|
+
<% end %>
|
26
|
+
<% if can? :edit, player %>
|
27
|
+
<%= link_to t(:edit, :model => ConcertoHardware::Player.model_name.human), edit_player_path(player), :class => "btn" %>
|
28
|
+
<% end %>
|
29
|
+
<% if can? :delete, player %>
|
30
|
+
<%= link_to t(:destroy, :model => ConcertoHardware::Player), player,
|
31
|
+
:data => { :confirm => t(:are_you_sure_delete_model_key, :model =>ConcertoHardware::Player.model_name.human, :key => player.screen.name) }, :method => :delete, :class => "btn" %>
|
32
|
+
<% end %>
|
33
|
+
</td>
|
34
|
+
</tr>
|
35
|
+
<% end %>
|
36
|
+
</table>
|
37
|
+
</div>
|
38
|
+
</section>
|
39
|
+
<div class="default-padding">
|
40
|
+
<%# for demo purposes: %>
|
41
|
+
Note: the poll interval is currently set to <%=ConcertoConfig[:poll_interval]%> seconds.<br/>
|
42
|
+
<% [::Ability.new(current_accessor2), ConcertoHardware::Ability.new(current_accessor2)].each do |ma| %>
|
43
|
+
The ability class is <%=ma.class%>.<br/>
|
44
|
+
Screen: <%= ConcertoHardware::Player.find(4).screen.name %>.<br/>
|
45
|
+
Can read screen: <%=ma.can? :read, ConcertoHardware::Player.find(4).screen%>.<br/>
|
46
|
+
Can read player: <%=ma.can? :read, ConcertoHardware::Player.find(4)%>.<br/>
|
47
|
+
<%end%>
|
48
|
+
</div>
|
49
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: concerto_hardware
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.7'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Concerto Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -41,15 +41,18 @@ files:
|
|
41
41
|
- app/assets/stylesheets/concerto_hardware/players.css.scss
|
42
42
|
- app/assets/stylesheets/scaffolds.css.scss
|
43
43
|
- app/controllers/concerto_hardware/application_controller.rb
|
44
|
+
- app/controllers/concerto_hardware/application_controller.rb~
|
44
45
|
- app/controllers/concerto_hardware/players_controller.rb
|
45
46
|
- app/helpers/players_helper.rb
|
46
47
|
- app/models/concerto_hardware/ability.rb
|
48
|
+
- app/models/concerto_hardware/ability.rb~
|
47
49
|
- app/models/concerto_hardware/player.rb
|
48
50
|
- app/views/concerto_hardware/players/_form.html.erb
|
49
51
|
- app/views/concerto_hardware/players/_show_body.html.erb
|
50
52
|
- app/views/concerto_hardware/players/_show_header.html.erb
|
51
53
|
- app/views/concerto_hardware/players/edit.html.erb
|
52
54
|
- app/views/concerto_hardware/players/index.html.erb
|
55
|
+
- app/views/concerto_hardware/players/index.html.erb~
|
53
56
|
- app/views/concerto_hardware/players/new.html.erb
|
54
57
|
- app/views/concerto_hardware/players/show.html.erb
|
55
58
|
- app/views/concerto_hardware/screens/_screen_link.html.erb
|
@@ -61,6 +64,7 @@ files:
|
|
61
64
|
- lib/concerto_hardware/engine.rb
|
62
65
|
- lib/concerto_hardware/time_accessible.rb
|
63
66
|
- lib/concerto_hardware/version.rb
|
67
|
+
- lib/concerto_hardware/version.rb~
|
64
68
|
- test/fixtures/players.yml
|
65
69
|
- test/functional/players_controller_test.rb
|
66
70
|
- test/unit/helpers/players_helper_test.rb
|
@@ -85,12 +89,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
85
89
|
version: '0'
|
86
90
|
requirements: []
|
87
91
|
rubyforge_project:
|
88
|
-
rubygems_version: 2.
|
92
|
+
rubygems_version: 2.2.2
|
89
93
|
signing_key:
|
90
94
|
specification_version: 4
|
91
95
|
summary: A Rails Engine for managing Bandshell-powered Concerto hardware
|
92
96
|
test_files:
|
93
|
-
- test/fixtures/players.yml
|
94
|
-
- test/functional/players_controller_test.rb
|
95
|
-
- test/unit/helpers/players_helper_test.rb
|
96
97
|
- test/unit/player_test.rb
|
98
|
+
- test/unit/helpers/players_helper_test.rb
|
99
|
+
- test/functional/players_controller_test.rb
|
100
|
+
- test/fixtures/players.yml
|