mirror of
https://github.com/ENSL/ensl.org.git
synced 2024-12-26 04:21:36 +00:00
Add match admin page and casting
This commit is contained in:
parent
faa895b3f0
commit
d91a2eae52
17 changed files with 126 additions and 61 deletions
1
Gemfile
1
Gemfile
|
@ -35,6 +35,7 @@ gem 'sass-rails', '~> 3.2.6'
|
||||||
gem 'font-awesome-sass', '~> 4.0.3.1'
|
gem 'font-awesome-sass', '~> 4.0.3.1'
|
||||||
gem 'bourbon', '~> 3.1.8'
|
gem 'bourbon', '~> 3.1.8'
|
||||||
gem 'neat', '~> 1.6.0'
|
gem 'neat', '~> 1.6.0'
|
||||||
|
gem 'haml'
|
||||||
|
|
||||||
group :assets do
|
group :assets do
|
||||||
gem 'uglifier', '~> 2.5.0'
|
gem 'uglifier', '~> 2.5.0'
|
||||||
|
|
|
@ -114,6 +114,8 @@ GEM
|
||||||
font-awesome-sass (4.0.3.1)
|
font-awesome-sass (4.0.3.1)
|
||||||
sass (~> 3.2)
|
sass (~> 3.2)
|
||||||
gruff (0.3.7)
|
gruff (0.3.7)
|
||||||
|
haml (4.0.5)
|
||||||
|
tilt
|
||||||
hike (1.2.3)
|
hike (1.2.3)
|
||||||
i18n (0.6.9)
|
i18n (0.6.9)
|
||||||
journey (1.0.4)
|
journey (1.0.4)
|
||||||
|
@ -277,6 +279,7 @@ DEPENDENCIES
|
||||||
faraday (~> 0.9.0)
|
faraday (~> 0.9.0)
|
||||||
font-awesome-sass (~> 4.0.3.1)
|
font-awesome-sass (~> 4.0.3.1)
|
||||||
gruff (~> 0.3.6)
|
gruff (~> 0.3.6)
|
||||||
|
haml
|
||||||
jquery-rails (~> 2.0.2)
|
jquery-rails (~> 2.0.2)
|
||||||
mysql2 (~> 0.3.15)
|
mysql2 (~> 0.3.15)
|
||||||
neat (~> 1.6.0)
|
neat (~> 1.6.0)
|
||||||
|
|
|
@ -27,4 +27,8 @@ $ ->
|
||||||
|
|
||||||
$select.trigger 'DOMSubtreeModified'
|
$select.trigger 'DOMSubtreeModified'
|
||||||
|
|
||||||
|
$('a[href=#form_submit]').click ->
|
||||||
|
$(this).closest('form').submit()
|
||||||
|
return false
|
||||||
|
|
||||||
$('#notification').delay(3000).fadeOut()
|
$('#notification').delay(3000).fadeOut()
|
|
@ -1,5 +1,5 @@
|
||||||
class MatchesController < ApplicationController
|
class MatchesController < ApplicationController
|
||||||
before_filter :get_match, except: [:index, :new, :create]
|
before_filter :get_match, except: [:index, :new, :create, :admin]
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@matches = Match.active
|
@matches = Match.active
|
||||||
|
@ -16,6 +16,11 @@ class MatchesController < ApplicationController
|
||||||
raise AccessError unless @match.can_create? cuser
|
raise AccessError unless @match.can_create? cuser
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def admin
|
||||||
|
@matches = Match.active.includes(:contest, :contester1, :contester2, :map1, :map2, :referee).all.group_by {|t| t.week.to_s }.to_a.reverse
|
||||||
|
render :layout => "full"
|
||||||
|
end
|
||||||
|
|
||||||
def extra
|
def extra
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -64,8 +69,11 @@ class MatchesController < ApplicationController
|
||||||
format.xml { head :ok }
|
format.xml { head :ok }
|
||||||
format.html do
|
format.html do
|
||||||
flash[:notice] = t(:matches_update)
|
flash[:notice] = t(:matches_update)
|
||||||
#redirect_to_back
|
if URI(request.referer).path.include?("admin")
|
||||||
redirect_to @match
|
redirect_to_back
|
||||||
|
else
|
||||||
|
redirect_to @match
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Group < ActiveRecord::Base
|
||||||
MOVIES = 3
|
MOVIES = 3
|
||||||
DONORS = 4
|
DONORS = 4
|
||||||
MOVIEMAKERS = 5
|
MOVIEMAKERS = 5
|
||||||
SHOUTCASTERS = 6
|
CASTERS = 6
|
||||||
CHAMPIONS = 7
|
CHAMPIONS = 7
|
||||||
PREDICTORS = 8
|
PREDICTORS = 8
|
||||||
STAFF = 10
|
STAFF = 10
|
||||||
|
@ -48,7 +48,7 @@ class Group < ActiveRecord::Base
|
||||||
|
|
||||||
def self.staff
|
def self.staff
|
||||||
staff = []
|
staff = []
|
||||||
(find(ADMINS).groupers + find(PREDICTORS).groupers + find(SHOUTCASTERS).groupers + find(STAFF).groupers + find(REFEREES).groupers).each do |g|
|
(find(ADMINS).groupers + find(PREDICTORS).groupers + find(CASTERS).groupers + find(STAFF).groupers + find(REFEREES).groupers).each do |g|
|
||||||
staff << g unless staff.include? g
|
staff << g unless staff.include? g
|
||||||
end
|
end
|
||||||
staff
|
staff
|
||||||
|
@ -78,11 +78,11 @@ class Group < ActiveRecord::Base
|
||||||
extras
|
extras
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.shoutcasters
|
def self.casters
|
||||||
shoutcasters = []
|
casters = []
|
||||||
(find(SHOUTCASTERS).groupers).each do |g|
|
(find(CASTERS).groupers).each do |g|
|
||||||
shoutcasters << g unless shoutcasters.include? g
|
casters << g unless casters.include? g
|
||||||
end
|
end
|
||||||
shoutcasters
|
casters
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -54,6 +54,7 @@ class Match < ActiveRecord::Base
|
||||||
belongs_to :week
|
belongs_to :week
|
||||||
belongs_to :hltv, :class_name => "Server"
|
belongs_to :hltv, :class_name => "Server"
|
||||||
belongs_to :stream, :class_name => "Movie"
|
belongs_to :stream, :class_name => "Movie"
|
||||||
|
belongs_to :caster, :class_name => "User"
|
||||||
|
|
||||||
scope :future, :conditions => ["match_time > UTC_TIMESTAMP()"]
|
scope :future, :conditions => ["match_time > UTC_TIMESTAMP()"]
|
||||||
scope :future5, :conditions => ["match_time > UTC_TIMESTAMP()"], :limit => 5
|
scope :future5, :conditions => ["match_time > UTC_TIMESTAMP()"], :limit => 5
|
||||||
|
@ -293,6 +294,7 @@ class Match < ActiveRecord::Base
|
||||||
def can_update? cuser, params = {}
|
def can_update? cuser, params = {}
|
||||||
return false unless cuser
|
return false unless cuser
|
||||||
return true if cuser.admin?
|
return true if cuser.admin?
|
||||||
|
return true if cuser.caster? and Verification.contain params, [:caster_id]
|
||||||
return true if cuser.ref? and !referee and Verification.contain params, [:referee_id]
|
return true if cuser.ref? and !referee and Verification.contain params, [:referee_id]
|
||||||
return true if cuser.ref? and referee == cuser \
|
return true if cuser.ref? and referee == cuser \
|
||||||
and Verification.contain params, [:score1, :score2, :forfeit, :report, :demo_id, :motm_name, :matchers_attributes, :server_id]
|
and Verification.contain params, [:score1, :score2, :forfeit, :report, :demo_id, :motm_name, :matchers_attributes, :server_id]
|
||||||
|
|
|
@ -74,6 +74,8 @@ class Profile < ActiveRecord::Base
|
||||||
validates_length_of :achievements, :maximum => 65000
|
validates_length_of :achievements, :maximum => 65000
|
||||||
validates_format_of :steam_profile, :with => /\A[A-Za-z0-9_\-\+]{1,40}\z/, :allow_blank => true
|
validates_format_of :steam_profile, :with => /\A[A-Za-z0-9_\-\+]{1,40}\z/, :allow_blank => true
|
||||||
|
|
||||||
|
validates :stream, :length => {:maximum => 30}
|
||||||
|
|
||||||
before_validation :init_steam_profile
|
before_validation :init_steam_profile
|
||||||
before_save :parse_text
|
before_save :parse_text
|
||||||
|
|
||||||
|
|
|
@ -193,6 +193,10 @@ class User < ActiveRecord::Base
|
||||||
groups.exists? :id => Group::REFEREES
|
groups.exists? :id => Group::REFEREES
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def caster?
|
||||||
|
group.exists? :id => Group::CASTERS
|
||||||
|
end
|
||||||
|
|
||||||
def verified?
|
def verified?
|
||||||
# created_at < DateTime.now.ago(VERIFICATION_TIME)
|
# created_at < DateTime.now.ago(VERIFICATION_TIME)
|
||||||
true
|
true
|
||||||
|
|
|
@ -80,7 +80,7 @@
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab" id="casters">
|
<div class="tab" id="casters">
|
||||||
<h3>Shoutcasters</h3>
|
<h3>CASTERS</h3>
|
||||||
<table class="striped staff">
|
<table class="striped staff">
|
||||||
<tr>
|
<tr>
|
||||||
<th></th>
|
<th></th>
|
||||||
|
@ -89,7 +89,7 @@
|
||||||
<th>Task</th>
|
<th>Task</th>
|
||||||
<th>Age</th>
|
<th>Age</th>
|
||||||
</tr>
|
</tr>
|
||||||
<% Group.shoutcasters.each do |grouper| %>
|
<% Group.casters.each do |grouper| %>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="country"><%= flag grouper.user.country %></td>
|
<td class="country"><%= flag grouper.user.country %></td>
|
||||||
<td class="username"><%= namelink grouper.user %></td>
|
<td class="username"><%= namelink grouper.user %></td>
|
||||||
|
|
42
app/views/matches/admin.html.haml
Normal file
42
app/views/matches/admin.html.haml
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
- @matches.each do |week, matches|
|
||||||
|
%h2=week
|
||||||
|
%table.striped#matches
|
||||||
|
%tr
|
||||||
|
%th.opponent Teams
|
||||||
|
%th.date Date
|
||||||
|
%th.maps Maps
|
||||||
|
%th Score
|
||||||
|
%th Caster
|
||||||
|
%th Referee
|
||||||
|
%th.actions Actions
|
||||||
|
- matches.each do |match|
|
||||||
|
%tr
|
||||||
|
%td
|
||||||
|
= namelink match.contester1.team
|
||||||
|
vs
|
||||||
|
= namelink match.contester2.team
|
||||||
|
%td
|
||||||
|
= shorttime match.match_time
|
||||||
|
%td
|
||||||
|
= match.map1.to_s + " " + match.map2.to_s
|
||||||
|
%td
|
||||||
|
= link_to match, :class => "bold #{match.score_color}" do
|
||||||
|
= h match.score1
|
||||||
|
\- #{h match.score2}
|
||||||
|
%td
|
||||||
|
- if match.caster
|
||||||
|
= namelink match.caster
|
||||||
|
- elsif match.can_update?(cuser, {:caster_id => 1})
|
||||||
|
= form_for match do |f|
|
||||||
|
= f.hidden_field :caster_id, {:value => cuser.id}
|
||||||
|
= link_to "Take!", "#form_submit"
|
||||||
|
%td
|
||||||
|
- if match.referee
|
||||||
|
= namelink match.referee
|
||||||
|
- elsif match.can_update?(cuser, {:referee_id => 1})
|
||||||
|
= form_for match do |f|
|
||||||
|
= f.hidden_field :referee_id, {:value => cuser.id}
|
||||||
|
= link_to "Take!", "#form_submit"
|
||||||
|
%td.actions
|
||||||
|
- if cuser.ref? || cuser.admin?
|
||||||
|
= link_to "Admin", match_ref_path(match)
|
|
@ -99,6 +99,15 @@
|
||||||
<%= cascade @match, [:server, :demo, :referee] %>
|
<%= cascade @match, [:server, :demo, :referee] %>
|
||||||
<strong>Maps</strong><br>
|
<strong>Maps</strong><br>
|
||||||
<%= namelink @match.map1 %>, <%= namelink @match.map2 %>
|
<%= namelink @match.map1 %>, <%= namelink @match.map2 %>
|
||||||
|
|
||||||
|
<% if @match.caster && @match.caster.profile.stream %>
|
||||||
|
<dl>
|
||||||
|
<dt>Stream</dt>
|
||||||
|
<dd>
|
||||||
|
<%= link_to @match.caster.profile.stream, @match.caster.profile.stream %>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% unless @match.report.nil? or @match.report.empty? %>
|
<% unless @match.report.nil? or @match.report.empty? %>
|
||||||
|
|
|
@ -84,6 +84,11 @@
|
||||||
<label>Avatar</label>
|
<label>Avatar</label>
|
||||||
<%= p.file_field :avatar %>
|
<%= p.file_field :avatar %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="fields horizontal">
|
||||||
|
<%= p.label :stream %>
|
||||||
|
<%= p.text_field :stream %>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tab" id="country">
|
<div class="tab" id="country">
|
||||||
|
|
|
@ -47,7 +47,10 @@ Ensl::Application.routes.draw do
|
||||||
resources :servers
|
resources :servers
|
||||||
resources :predictions
|
resources :predictions
|
||||||
resources :rounds
|
resources :rounds
|
||||||
resources :matches
|
resources :matches do |m|
|
||||||
|
get :admin, :to => "matches#admin", :on => :collection
|
||||||
|
get :ref, :to => "matches#ref"
|
||||||
|
end
|
||||||
resources :maps
|
resources :maps
|
||||||
resources :logs
|
resources :logs
|
||||||
resources :log_files
|
resources :log_files
|
||||||
|
|
7
db/migrate/20140509231817_add_stream.rb
Normal file
7
db/migrate/20140509231817_add_stream.rb
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
class AddStream < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
change_table :profiles do |p|
|
||||||
|
p.string :stream
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
7
db/migrate/20140510080652_add_caster.rb
Normal file
7
db/migrate/20140510080652_add_caster.rb
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
class AddCaster < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
change_table :matches do |m|
|
||||||
|
m.string :caster_id
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
62
db/schema.rb
62
db/schema.rb
|
@ -11,21 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended to check this file into your version control system.
|
# It's strongly recommended to check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(:version => 20140330152235) do
|
ActiveRecord::Schema.define(:version => 20140510080652) do
|
||||||
|
|
||||||
create_table "admin_requests", :force => true do |t|
|
|
||||||
t.string "addr"
|
|
||||||
t.string "pwd"
|
|
||||||
t.integer "server_id"
|
|
||||||
t.string "player"
|
|
||||||
t.integer "user_id"
|
|
||||||
t.string "msg"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
end
|
|
||||||
|
|
||||||
add_index "admin_requests", ["server_id"], :name => "index_admin_requests_on_server_id"
|
|
||||||
add_index "admin_requests", ["user_id"], :name => "index_admin_requests_on_user_id"
|
|
||||||
|
|
||||||
create_table "article_versions", :force => true do |t|
|
create_table "article_versions", :force => true do |t|
|
||||||
t.integer "article_id"
|
t.integer "article_id"
|
||||||
|
@ -214,16 +200,6 @@ ActiveRecord::Schema.define(:version => 20140330152235) do
|
||||||
add_index "data_files", ["directory_id"], :name => "index_data_files_on_directory_id"
|
add_index "data_files", ["directory_id"], :name => "index_data_files_on_directory_id"
|
||||||
add_index "data_files", ["related_id"], :name => "index_data_files_on_related_id"
|
add_index "data_files", ["related_id"], :name => "index_data_files_on_related_id"
|
||||||
|
|
||||||
create_table "deleteds", :force => true do |t|
|
|
||||||
t.integer "deletable_id"
|
|
||||||
t.string "deletable_type"
|
|
||||||
t.integer "user_id"
|
|
||||||
t.text "reason"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
t.integer "related_id"
|
|
||||||
end
|
|
||||||
|
|
||||||
create_table "directories", :force => true do |t|
|
create_table "directories", :force => true do |t|
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.string "description"
|
t.string "description"
|
||||||
|
@ -236,21 +212,6 @@ ActiveRecord::Schema.define(:version => 20140330152235) do
|
||||||
|
|
||||||
add_index "directories", ["parent_id"], :name => "index_directories_on_parent_id"
|
add_index "directories", ["parent_id"], :name => "index_directories_on_parent_id"
|
||||||
|
|
||||||
create_table "firms", :force => true do |t|
|
|
||||||
t.string "name"
|
|
||||||
t.string "y_code"
|
|
||||||
t.string "email"
|
|
||||||
t.string "website"
|
|
||||||
t.string "phone"
|
|
||||||
t.string "address"
|
|
||||||
t.integer "zipcode"
|
|
||||||
t.string "town"
|
|
||||||
t.integer "owner"
|
|
||||||
t.string "opentime"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
end
|
|
||||||
|
|
||||||
create_table "forumers", :force => true do |t|
|
create_table "forumers", :force => true do |t|
|
||||||
t.integer "forum_id"
|
t.integer "forum_id"
|
||||||
t.integer "group_id"
|
t.integer "group_id"
|
||||||
|
@ -462,6 +423,7 @@ ActiveRecord::Schema.define(:version => 20140330152235) do
|
||||||
t.integer "points1"
|
t.integer "points1"
|
||||||
t.integer "points2"
|
t.integer "points2"
|
||||||
t.integer "hltv_id"
|
t.integer "hltv_id"
|
||||||
|
t.string "caster_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "matches", ["challenge_id"], :name => "index_matches_on_challenge_id"
|
add_index "matches", ["challenge_id"], :name => "index_matches_on_challenge_id"
|
||||||
|
@ -516,13 +478,6 @@ ActiveRecord::Schema.define(:version => 20140330152235) do
|
||||||
add_index "movies", ["status"], :name => "index_movies_on_status"
|
add_index "movies", ["status"], :name => "index_movies_on_status"
|
||||||
add_index "movies", ["user_id"], :name => "index_movies_on_user_id"
|
add_index "movies", ["user_id"], :name => "index_movies_on_user_id"
|
||||||
|
|
||||||
create_table "nodes", :force => true do |t|
|
|
||||||
t.string "name"
|
|
||||||
t.integer "foreign_key"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
end
|
|
||||||
|
|
||||||
create_table "options", :force => true do |t|
|
create_table "options", :force => true do |t|
|
||||||
t.string "option"
|
t.string "option"
|
||||||
t.integer "poll_id"
|
t.integer "poll_id"
|
||||||
|
@ -631,6 +586,7 @@ ActiveRecord::Schema.define(:version => 20140330152235) do
|
||||||
t.string "steam_profile"
|
t.string "steam_profile"
|
||||||
t.string "achievements_parsed"
|
t.string "achievements_parsed"
|
||||||
t.string "signature_parsed"
|
t.string "signature_parsed"
|
||||||
|
t.string "stream"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "profiles", ["user_id"], :name => "index_profiles_on_user_id"
|
add_index "profiles", ["user_id"], :name => "index_profiles_on_user_id"
|
||||||
|
@ -755,6 +711,18 @@ ActiveRecord::Schema.define(:version => 20140330152235) do
|
||||||
add_index "sessions", ["session_id"], :name => "index_sessions_on_session_id"
|
add_index "sessions", ["session_id"], :name => "index_sessions_on_session_id"
|
||||||
add_index "sessions", ["updated_at"], :name => "index_sessions_on_updated_at"
|
add_index "sessions", ["updated_at"], :name => "index_sessions_on_updated_at"
|
||||||
|
|
||||||
|
create_table "shoutmsg_archive", :force => true do |t|
|
||||||
|
t.integer "user_id"
|
||||||
|
t.string "text"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
t.string "shoutable_type"
|
||||||
|
t.integer "shoutable_id"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "shoutmsg_archive", ["shoutable_type", "shoutable_id"], :name => "index_shoutmsgs_on_shoutable_type_and_shoutable_id"
|
||||||
|
add_index "shoutmsg_archive", ["user_id"], :name => "index_shoutmsgs_on_user_id"
|
||||||
|
|
||||||
create_table "shoutmsgs", :force => true do |t|
|
create_table "shoutmsgs", :force => true do |t|
|
||||||
t.integer "user_id"
|
t.integer "user_id"
|
||||||
t.string "text"
|
t.string "text"
|
||||||
|
|
|
@ -10,7 +10,7 @@ Group.create!(id: Group::REFEREES, name: "Referees", founder: User.first)
|
||||||
Group.create!(id: Group::MOVIES, name: "Movies", founder: User.first)
|
Group.create!(id: Group::MOVIES, name: "Movies", founder: User.first)
|
||||||
Group.create!(id: Group::DONORS, name: "Donors", founder: User.first)
|
Group.create!(id: Group::DONORS, name: "Donors", founder: User.first)
|
||||||
Group.create!(id: Group::MOVIEMAKERS, name: "Movie Makers", founder: User.first)
|
Group.create!(id: Group::MOVIEMAKERS, name: "Movie Makers", founder: User.first)
|
||||||
Group.create!(id: Group::SHOUTCASTERS, name: "Casters", founder: User.first)
|
Group.create!(id: Group::CASTERS, name: "Streamers", founder: User.first)
|
||||||
Group.create!(id: Group::CHAMPIONS, name: "Champions", founder: User.first)
|
Group.create!(id: Group::CHAMPIONS, name: "Champions", founder: User.first)
|
||||||
Group.create!(id: Group::PREDICTORS, name: "Predictors", founder: User.first)
|
Group.create!(id: Group::PREDICTORS, name: "Predictors", founder: User.first)
|
||||||
Group.create!(id: Group::STAFF, name: "Staff", founder: User.first)
|
Group.create!(id: Group::STAFF, name: "Staff", founder: User.first)
|
||||||
|
|
Loading…
Reference in a new issue