diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/assets/images/chess.png (renamed from app/assets/images/chess_icon.png) | bin | 893 -> 893 bytes | |||
-rw-r--r-- | app/assets/images/league_icon.gif | bin | 8207 -> 0 bytes | |||
-rw-r--r-- | app/assets/images/league_of_legends.png | bin | 0 -> 10078 bytes | |||
-rw-r--r-- | app/controllers/matches_controller.rb | 2 | ||||
-rw-r--r-- | app/controllers/tournaments_controller.rb | 17 | ||||
-rw-r--r-- | app/models/game.rb | 4 | ||||
-rw-r--r-- | app/models/game_setting.rb | 13 | ||||
-rw-r--r-- | app/models/tournament.rb | 24 | ||||
-rw-r--r-- | app/models/tournament_setting.rb | 4 | ||||
-rw-r--r-- | app/views/common/_show_tournament.html.erb | 4 | ||||
-rw-r--r-- | app/views/tournaments/_form.html.erb | 25 | ||||
-rw-r--r-- | app/views/users/show.html.erb | 2 |
12 files changed, 64 insertions, 31 deletions
diff --git a/app/assets/images/chess_icon.png b/app/assets/images/chess.png Binary files differindex 6bcffe6..6bcffe6 100644 --- a/app/assets/images/chess_icon.png +++ b/app/assets/images/chess.png diff --git a/app/assets/images/league_icon.gif b/app/assets/images/league_icon.gif Binary files differdeleted file mode 100644 index 1f0fa43..0000000 --- a/app/assets/images/league_icon.gif +++ /dev/null diff --git a/app/assets/images/league_of_legends.png b/app/assets/images/league_of_legends.png Binary files differnew file mode 100644 index 0000000..9a78047 --- /dev/null +++ b/app/assets/images/league_of_legends.png diff --git a/app/controllers/matches_controller.rb b/app/controllers/matches_controller.rb index 4a20df2..8b8e86d 100644 --- a/app/controllers/matches_controller.rb +++ b/app/controllers/matches_controller.rb @@ -286,7 +286,7 @@ class MatchesController < ApplicationController params.require(:match).permit(:status, :tournament_stage_id, :winner_id, :remote_id, :submitted_peer_evaluations, :update_action) end - # Turn of check_edit, since our #update is flexible + # Turn of check_edit, since our #update is flexible def check_edit set_match end diff --git a/app/controllers/tournaments_controller.rb b/app/controllers/tournaments_controller.rb index 9c8ad7a..2e854a2 100644 --- a/app/controllers/tournaments_controller.rb +++ b/app/controllers/tournaments_controller.rb @@ -31,6 +31,17 @@ class TournamentsController < ApplicationController # GET /tournaments/new def new @tournament = Tournament.new(tournament_attribute_params) + if @tournament.game + @tournament.game.settings.each do |game_setting| + @tournament.tournament_settings.build( + name: game_setting.name, + value: game_setting.value, + vartype: game_setting.vartype, + type_opt: game_setting.type_opt, + description: game_setting.description, + display_order: game_setting.display_order) + end + end end # GET /tournaments/1/edit @@ -46,17 +57,17 @@ class TournamentsController < ApplicationController ok = true begin ActiveRecord::Base.transaction do - ok &= @tournament.save ok &= @tournament.update(tournament_setting_params) ok &= @tournament.hosts.push(current_user) for i in 1..(params[:num_stages].to_i) do begin - ok &= @tournament.stages.create(tournament_stage_params(i)) + ok &= @tournament.stages.build(tournament_stage_params(i)) rescue ActionController::ParameterMissing => e ok = false - @tournament.errors.add("stages[#{i}]", "Stage #{i} not set") + @tournament.errors.add("stages[#{i}]", "needs to be set") end end + ok &= @tournament.save end rescue ActiveRecord::RecordNotUnique => e ok = false diff --git a/app/models/game.rb b/app/models/game.rb index 5f4c46d..c5cb32a 100644 --- a/app/models/game.rb +++ b/app/models/game.rb @@ -1,5 +1,7 @@ class Game < ActiveRecord::Base belongs_to :parent, class_name: "Game" has_many :children, class_name: "Game" - has_many :settings, class_name: "GameSetting" + has_many :game_settings + + alias_attribute :settings, :game_settings end diff --git a/app/models/game_setting.rb b/app/models/game_setting.rb index bff8d97..e701cae 100644 --- a/app/models/game_setting.rb +++ b/app/models/game_setting.rb @@ -1,3 +1,16 @@ class GameSetting < ActiveRecord::Base belongs_to :game + + alias_attribute :value, :default + + def self.types + return { + :text_short => 0, + :text_long => 1, + :pick_one_radio => 2, + :pick_several => 3, + :true_false => 4, + :pick_one_dropdown => 5, + } + end end diff --git a/app/models/tournament.rb b/app/models/tournament.rb index 97eee57..a569213 100644 --- a/app/models/tournament.rb +++ b/app/models/tournament.rb @@ -1,11 +1,13 @@ class Tournament < ActiveRecord::Base belongs_to :game - has_many :stages, class_name: "TournamentStage" + has_many :tournament_stages has_many :brackets - has_many :settings_raw, class_name: "TournamentSetting" + has_many :tournament_settings has_and_belongs_to_many :players, class_name: "User", association_foreign_key: "player_id", join_table: "players_tournaments" has_and_belongs_to_many :hosts, class_name: "User", association_foreign_key: "host_id", join_table: "hosts_tournaments" + alias_attribute :stages, :tournament_stages + # Settings ################################################################# def settings @@ -25,7 +27,7 @@ class Tournament < ActiveRecord::Base end def [](setting_name) - tournament_setting = @tournament.settings_raw.find_by_name(setting_name) + tournament_setting = @tournament.tournament_settings.find{|s|s.name==setting_name} if tournament_setting.nil? return nil else @@ -34,13 +36,13 @@ class Tournament < ActiveRecord::Base end def []=(setting_name, val) - tournament_setting = @tournament.settings_raw.find_by_name(setting_name) + tournament_setting = @tournament.tournament_settings.find{|s|s.name==setting_name} if tournament_setting.nil? game_setting = @tournament.game.settings.find_by_name(setting_name) - @tournament.settings_raw.create(name: setting, value: val, - vartype: game_setting.vartype, - type_opt: game_setting.type_opt, - description: game_setting.description, + @tournament.tournament_settings.build(name: setting_name, value: val, + vartype: game_setting.vartype, + type_opt: game_setting.type_opt, + description: game_setting.description, display_order: game_setting.display_order) else tournament_setting.value = val @@ -48,7 +50,7 @@ class Tournament < ActiveRecord::Base end def keys - @tournament.settings_raw.all.collect { |x| x.name } + @tournament.tournament_settings.all.collect { |x| x.name } end def empty?() keys.empty? end @@ -58,9 +60,9 @@ class Tournament < ActiveRecord::Base def method_missing(name, *args) if name.to_s.ends_with?('=') - self[name.to_s.sub(/=$/, '').to_sym] = args.first + self[name.to_s.sub(/=$/, '').to_s] = args.first else - return self[name.to_sym] + return self[name.to_s] end end end diff --git a/app/models/tournament_setting.rb b/app/models/tournament_setting.rb index b3e6ace..9efaaea 100644 --- a/app/models/tournament_setting.rb +++ b/app/models/tournament_setting.rb @@ -1,3 +1,7 @@ class TournamentSetting < ActiveRecord::Base belongs_to :tournament + + def self.types + GameSetting.types + end end diff --git a/app/views/common/_show_tournament.html.erb b/app/views/common/_show_tournament.html.erb index a9569b6..280d59d 100644 --- a/app/views/common/_show_tournament.html.erb +++ b/app/views/common/_show_tournament.html.erb @@ -1,5 +1,6 @@ <div class="row tournament-listing"> - <div class="col-md-2 col-sm-3 col-xs-6"><%= image_tag('http://www.gravatar.com/avatar/' + Digest::MD5.hexdigest(target.hosts.first.email) + '?s=100&d=mm', class: "t-image") %> + <div class="col-md-2 col-sm-3 col-xs-6"> + <%= image_tag(target.game.name.downcase.tr(" ", "_") + ".png", class: "t-image") %> <p class="t-game"> <%= Game.find(target.game_id).name %></p> </div> <div class="col-md-8 col-sm-7 col-xs-6"> @@ -8,6 +9,7 @@ <div class="row" style="margin-left:2%;"> <div class="col-md-4 host"> Hosted by: <%= target.hosts.first.name %> + <%= image_tag('http://www.gravatar.com/avatar/' + Digest::MD5.hexdigest(target.hosts.first.email) + '?s=45&d=identicon', class: "t-image") %> </div> <div class="col-md-4 things"> <p> Players per team: <%= target.min_players_per_team %></p> diff --git a/app/views/tournaments/_form.html.erb b/app/views/tournaments/_form.html.erb index 2212515..e322601 100644 --- a/app/views/tournaments/_form.html.erb +++ b/app/views/tournaments/_form.html.erb @@ -7,7 +7,7 @@ <p> <%= f.label :game_id, "Select a game type" %> <%= f.select(:game_id, Game.all.map{|game| [game.name, game.id]}) %> - <%= submit_tag("Select", :class => "btn") %> + <%= f.submit("Select") %> </p> <% if @tournament.game.nil? %> @@ -60,32 +60,31 @@ <fieldset><legend style="color:rgb(221, 145, 37)">Settings</legend> <%= f.fields_for :settings do |setting_fields| %> - <% (@tournament.settings.empty? ? @tournament.game.settings : @tournament.settings).each do |setting| %><p> - <% name = setting.name.parameterize.underscore %> - <%= setting_fields.label name %> + <% @tournament.tournament_settings.each do |setting| %><p> + <%= setting_fields.label setting.name %> <br> <% case setting.vartype %> <% when 0 %> - <%= setting_fields.text_field( name ) %> + <%= setting_fields.text_field( setting.name ) %> <% when 1 %> - <%= setting_fields.text_area( name ) %> + <%= setting_fields.text_area( setting.name ) %> <% when 2 %> <ul> <% setting.type_opt.split(',').each do |option|%> - <li><label><%= setting_fields.radio_button( name, option ) %><%= option %></label></li> + <li><label><%= setting_fields.radio_button( setting.name, option ) %><%= option.humanize %></label></li> <% end %> </ul> <% when 3 %> <ul> <% setting.type_opt.split(',').each do |option|%> - <li><label><%= check_box_tag(name, value = option, checked = false, options = {}) %><%= option %></label></li> + <li><label><%= check_box_tag("tournament[settings][#{setting.name}][]", option, setting.value.split(',').include?(option)) %><%= option.humanize %></label></li> <% end %> </ul> <% when 4 %> - <%= setting_fields.radio_button( name, "true" ) %> True - <%= setting_fields.radio_button( name, "false" ) %> False + <%= setting_fields.radio_button( setting.name, "true" ) %> True + <%= setting_fields.radio_button( setting.name, "false" ) %> False <% when 5 %> - <%= setting_fields.select( name, setting.type_opt.split(',') ) %> + <%= setting_fields.select( setting.name, setting.type_opt.split(',') ) %> <% end %> </p><% end %> <% end %> @@ -93,8 +92,8 @@ <%= f.fields_for :stages do |stages_fields| %><fieldset><legend style="color:rgb(221, 145, 37)">Stages</legend> <label for="num_stages">Number of tournament stages</label> - <input type="number" name="num_stages" min="1" value="<%= params[:num_stages] ? params[:num_stages].to_i : 1 %>"> - <%# submit_tag("Set Stages", :class => "btn") %> + <input type="number" name="num_stages" min="1" value="<%= params[:num_stages].to_i %>"> + <%# stage_fields.submit("Set Stages") %> <% for i in 1..(params[:num_stages].to_i) do %> <p> <%= stages_fields.fields_for i.to_s do |stage_fields| %><fieldset><legend style="color:rgb(221, 145, 37)">Stage <%= i %></legend> diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index a67aed9..b408589 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -2,7 +2,7 @@ <h1> <%= @user.user_name %>'s Profile </h1> <p> - <%= image_tag 'http://www.gravatar.com/avatar/' + Digest::MD5.hexdigest(@user.email) + '?s=100&d=mm' %> + <%= image_tag 'http://www.gravatar.com/avatar/' + Digest::MD5.hexdigest(@user.email) + '?s=100&d=identicon' %> </p> <p> |