diff --git a/.gitignore b/.gitignore index dd484e8..802e89b 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ # Ignore all logfiles and tempfiles. /log/*.log /tmp +nohup.out # Ignore emacs poop *~ @@ -31,7 +32,8 @@ coverage config/ey_services_config_local.yml config/secrets.yml config/s3.yml - +config/initializers/recaptcha.rb +config/.routes.rb.swp # Ignore production config magic cookbooks diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 81d8718..283ad9e 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -1,6 +1,8 @@ Contributors: - David Joerg - @dsjoerg on github - Marian Rudzynski - @fx on github +new: Soeren Klett - @sklett-src on github + +# David Joerg - @dsjoerg on github +# Marian Rudzynski - @fx on github Special thanks to Blizzard for their help and participation. diff --git a/LICENSE.txt b/LICENSE.txt index 94eec52..d02b296 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,5 +1,3 @@ -Copyright (c) 2012-2014 GGTracker, Inc. - All Blizzard IP (for example, unit names) that appears in this codebase is property of Blizzard. diff --git a/Procfile b/Procfile index 45763c9..feaf8d3 100644 --- a/Procfile +++ b/Procfile @@ -1,3 +1,3 @@ -web: bundle exec unicorn -p3000 +web: bundle exec unicorn -p80 log: tail -f -n0 log/development.log juggernaut: juggernaut --port 5300 diff --git a/README.md b/README.md index 0d15bbc..9bfc184 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ It'll work, but there will be no matches, no players. To make it more interesting, you can simply point your ggtracker at the production ESDB server like so: -`ESDB_HOST=api.ggtracker.com ESDB_MATCHBLOBS_BUCKET=gg2-matchblobs-prod foreman start web` +`ESDB_HOST=api.gggreplays.com ESDB_MATCHBLOBS_BUCKET=gg2-matchblobs-prod foreman start web` And then go to http://localhost:3000/matches in your browser. If you see recent matches, it's working! diff --git a/app/assets/javascripts/angular.js b/app/assets/javascripts/angular.js index 44353f4..7bfb927 100644 --- a/app/assets/javascripts/angular.js +++ b/app/assets/javascripts/angular.js @@ -85,7 +85,15 @@ gg.run(['$rootScope', '$window', '$http', function($rootScope, $window, $http) { $window.gg.state.apply(false); }, true); - gg.settings.api_host = ($window.gon != undefined) ? $window.gon.global.api_host : '127.0.0.1:9292'; +console.log('angular.js !#! : window.gon, window.gon.global.api_host') +console.log($window.gon != undefined) +console.log($window.gon.global.api_host) + +// TODO SKLETT DANGEROUS WORKAROUND + gg.settings.api_host = ($window.gon != undefined) ? 'gggreplays.com:9292' : 'gggreplays.com:9292'; +// gg.settings.api_host = ($window.gon != undefined) ? $window.gon.global.api_host : '127.0.0.2:9292'; + + // Finally, just default window.gon to an empty object if it's not defined. if(typeof $window.gon == 'undefined') diff --git a/app/assets/javascripts/angular/controllers/match.js b/app/assets/javascripts/angular/controllers/match.js index e3737d2..3a14ab0 100644 --- a/app/assets/javascripts/angular/controllers/match.js +++ b/app/assets/javascripts/angular/controllers/match.js @@ -70,7 +70,7 @@ function($scope, $window, $route, $location, $element, Match) { history.back(); }, error: function() { - alert("Sorry, this match could not be deleted for some reason. Please contact hello@ggtracker.com and they'll take care of it for you."); + alert("Sorry, this match could not be deleted for some reason. Please contact gggreplays@gmail.com and they'll take care of it for you."); } }); } diff --git a/app/assets/javascripts/angular/controllers/player.js b/app/assets/javascripts/angular/controllers/player.js index 8d0126f..ad8e955 100644 --- a/app/assets/javascripts/angular/controllers/player.js +++ b/app/assets/javascripts/angular/controllers/player.js @@ -39,7 +39,7 @@ gg.controller('PlayerController', ['$scope', '$window', 'Player', function ($sco alert("Got it! It usually takes about ten minutes to retrieve match details. Whenever you upload a new replay we will retrieve match details for you again."); }, error: function() { - alert("Sorry, we couldn't process your Character Code for some reason. Please contact hello@ggtracker.com and they'll take care of it for you."); + alert("Sorry, we couldn't process your Character Code for some reason. Please contact gggreplays@gmail.com and they'll take care of it for you."); } }); } diff --git a/app/assets/javascripts/angular/directives/account.js b/app/assets/javascripts/angular/directives/account.js index 80fd849..9284d3a 100644 --- a/app/assets/javascripts/angular/directives/account.js +++ b/app/assets/javascripts/angular/directives/account.js @@ -36,7 +36,7 @@ gg.directive('uaccount', ['Account', function(Account) { alert("We have started deleting your matches."); }, error: function() { - alert("Sorry, your matches could not be deleted for some reason. Please contact hello@ggtracker.com and we will beat the person responsible."); + alert("Sorry, your matches could not be deleted for some reason. Please contact gggreplays@gmail.com and we will beat the person responsible."); } // next steps through the code: diff --git a/app/assets/javascripts/angular/directives/matches.js b/app/assets/javascripts/angular/directives/matches.js index f683341..3f27e6c 100644 --- a/app/assets/javascripts/angular/directives/matches.js +++ b/app/assets/javascripts/angular/directives/matches.js @@ -49,7 +49,27 @@ gg.directive('matches', ['Match', function(Match) { // sets location to show the given match very bluntly $scope.go = function(id) { - window.location = '/matches/' + id; + // window.location = '/matches/' + id; + } + + $scope.go_middleclick = function(event, id) { + +// var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; + +switch(event.which) { + case 1: + window.location = '/matches/' + id; + break; + case 2: +// window.name = 'testsk' +//var activeTab = $("[href=" + location.hash + "]"); +//localStorage.setItem("lastTab", $(this).attr('href')); + window.open('/matches/' + id, '_blank'); +// window.open('', 'testsk').focus(); +break; + default: + window.open('/matches/' + id,'_blank'); + } } // bind our identity bind to urlFilter (uhhh) diff --git a/app/assets/javascripts/angular/templates/matches/index.jst.ejs b/app/assets/javascripts/angular/templates/matches/index.jst.ejs index a4f694f..9ca3eb4 100644 --- a/app/assets/javascripts/angular/templates/matches/index.jst.ejs +++ b/app/assets/javascripts/angular/templates/matches/index.jst.ejs @@ -49,15 +49,14 @@ avg league played - - + + {{ matches.total - (((matches.page-1) * matches.limit) + $index ) }}
{{ match.map_name }} {{ match.game_type }} - - {{ match.matchup(identity.id) }} + {{ match.matchup(identity.id) }} @@ -85,3 +84,4 @@ + diff --git a/app/assets/javascripts/gg.js b/app/assets/javascripts/gg.js index 28ab5f7..d7fb1d8 100644 --- a/app/assets/javascripts/gg.js +++ b/app/assets/javascripts/gg.js @@ -399,13 +399,18 @@ notifyAboutUploadLimit = _.once(function() { $(function() { +console.log('triggered something in gg.js') + fuconfig = { url: 'https://' + gon.global.replays_bucket + '.s3.amazonaws.com', type: 'POST', autoUpload: true, dataType: 'xml', add: function(e, data) { -// console.log("add!", data.files.length); + console.log("add!", data.files.length); + console.log("add!", data.files[0]); + console.dir(data) +console.dir(e) if (gg.state.iecompat) { alert("Our apologies, but this browser can't upload replays to GGTracker. To upload replays, you can use Internet Explorer 10, Google Chrome, Firefox or Safari."); @@ -457,6 +462,12 @@ $(function() { state: '-', replay_file_name: data.files[0].name }; + +// TODO SKLETT scrap above for autouploader +console.log('start X') +console.log(replay) +console.dir(replay) + uploadScope.creplays.push(replay); uploadScope.allreplays.push(replay); throttledUploadDigest(); @@ -483,9 +494,12 @@ $(function() { }, send: function(e, data) { - uploadScope = angular.element($('.uploads')).scope(); - $.each(data.files, function(i, file) { - replay = _.find(uploadScope.creplays, function(rep) { return rep.replay_file_name == file.name }) + + console.log('sending!!!!') + uploadScope = angular.element($('.uploads')).scope(); + console.log(uploadScope) + $.each(data.files, function(i, file) { + replay = _.find(uploadScope.creplays, function(rep) {return rep.replay_file_name == file.name }) if (! _.isUndefined(replay)) { replay.status = 'Uploading'; setState(replay, 'Uploading'); @@ -522,7 +536,7 @@ $(function() { }, done: function(e, data) { - // console.log("done! ", $(data.result.getElementsByTagName("Location")[0]).text(), data.files[0].name); + console.log("done! ", $(data.result.getElementsByTagName("Location")[0]).text(), data.files[0].name); $.ajax({ url: '/replays/s3_drop', diff --git a/app/assets/javascripts/jquery/jquery.fileupload.js b/app/assets/javascripts/jquery/jquery.fileupload.js index b2638ef..6e4f831 100644 --- a/app/assets/javascripts/jquery/jquery.fileupload.js +++ b/app/assets/javascripts/jquery/jquery.fileupload.js @@ -483,6 +483,10 @@ return this._enhancePromise(promise); }, + _testSK: function () { + console.log("HELLO _testSK"); + }, + // Uploads a file in multiple, sequential requests // by splitting the file up in multiple blob chunks. // If the second parameter is true, only tests if the file diff --git a/app/assets/javascripts/jquery/jquery.timeago.js b/app/assets/javascripts/jquery/jquery.timeago.js index 4f438fa..e0e5d44 100644 --- a/app/assets/javascripts/jquery/jquery.timeago.js +++ b/app/assets/javascripts/jquery/jquery.timeago.js @@ -15,6 +15,8 @@ */ (function($) { $.timeago = function(timestamp) { +// console.log('timestamp') +// console.log(timestamp) if (timestamp instanceof Date) { return inWords(timestamp); } else if (typeof timestamp === "string") { @@ -68,7 +70,7 @@ } var seconds = Math.abs(distanceMillis) / 1000; - var minutes = seconds / 60; + var minutes = seconds / 60 - 60; var hours = minutes / 60; var days = hours / 24; var years = days / 365; @@ -100,10 +102,17 @@ function substitute(stringOrFunction, number) { var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction; - var value = ($l.numbers && $l.numbers[number]) || number; +//console.log(stringOrFunction) +//console.log(number) +var value = ($l.numbers && $l.numbers[number]) || number; return string.replace(/%d/i, value); } + + //var skminutes = substitute($l.minutes, Math.round(minutes)) + //console.log(minutes) + //console.log(skminutes) + var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) || seconds < 90 && substitute($l.minute, 1) || minutes < 45 && substitute($l.minutes, Math.round(minutes)) || diff --git a/app/assets/javascripts/setdocdomain.js b/app/assets/javascripts/setdocdomain.js index e192408..34583b9 100644 --- a/app/assets/javascripts/setdocdomain.js +++ b/app/assets/javascripts/setdocdomain.js @@ -1,7 +1,7 @@ // Proxino.log("gg.js domain was " + document.domain); -// weird, was ggtracker.com even though script was served via CDN +// weird, was gggreplays.com even though script was served via CDN if (location.hostname.match(/^[0-9.]*$/) == null) { - // only set document.domain if our location is a hostname like ggtracker.com or + // only set document.domain if our location is a hostname like gggreplays.com or // ggtracker.test. But if it's an IP address, dont bother. document.domain = /(\w+)(.\w+)?$/.exec(location.hostname)[0]; } diff --git a/app/assets/stylesheets/all.css.scss b/app/assets/stylesheets/all.css.scss index 421cfcd..baf9f1e 100644 --- a/app/assets/stylesheets/all.css.scss +++ b/app/assets/stylesheets/all.css.scss @@ -27,7 +27,7 @@ $experimental-support-for-svg: true; // Note: mixins go into mixins/ - variables can stay here for now $gg-baseline-height: 14px; -$gg-width: 1024px; +$gg-width: 1600px; $bg: #f7f4ef; $fg: black; diff --git a/app/assets/stylesheets/controllers/matches.css.scss b/app/assets/stylesheets/controllers/matches.css.scss index 991a11f..80b95c4 100644 --- a/app/assets/stylesheets/controllers/matches.css.scss +++ b/app/assets/stylesheets/controllers/matches.css.scss @@ -90,7 +90,7 @@ clear: both; .canvas { - width: 1024px; + max-width: 1600px; height: 170px; } } diff --git a/app/assets/stylesheets/controllers/static.css.scss b/app/assets/stylesheets/controllers/static.css.scss index a298ea8..29846a3 100644 --- a/app/assets/stylesheets/controllers/static.css.scss +++ b/app/assets/stylesheets/controllers/static.css.scss @@ -3,7 +3,7 @@ @include center; min-height: 600px; - max-width: 900px; + max-width: 1080px; margin-top: 50px; font-size: 20px; diff --git a/app/assets/stylesheets/controllers/tour.css.scss b/app/assets/stylesheets/controllers/tour.css.scss index f5e85f7..18bbdea 100644 --- a/app/assets/stylesheets/controllers/tour.css.scss +++ b/app/assets/stylesheets/controllers/tour.css.scss @@ -1,7 +1,7 @@ #tour { .content { @include center; - width: 1044px; + max-width: 1600px; min-height: 600px; // max-width: 900px; diff --git a/app/assets/stylesheets/directives/army.css.scss b/app/assets/stylesheets/directives/army.css.scss index d7898ae..491cc42 100644 --- a/app/assets/stylesheets/directives/army.css.scss +++ b/app/assets/stylesheets/directives/army.css.scss @@ -213,7 +213,7 @@ // because we never want it transition inwards to leave the background // exposed .. &:nth-last-child(1) { - width: 1024px !important; + max-width: 1600px !important; } } @@ -332,4 +332,4 @@ background: white; @include border-radius(2px); } -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/layout.css.scss b/app/assets/stylesheets/layout.css.scss index 8b2a79a..1d165d7 100644 --- a/app/assets/stylesheets/layout.css.scss +++ b/app/assets/stylesheets/layout.css.scss @@ -3,7 +3,7 @@ // A bunch of (temporary?) generic mixins @mixin center { - width: $gg-width; + max-width: $gg-width; margin: 0px auto; } @@ -132,7 +132,7 @@ header { position: relative; padding: 0px 0px; - width: $gg-width - 0px * 2; + max-width: $gg-width - 0px * 2; // Notes about the "centering" going on: the line-height and va:middle // constructs in header are very ..uncompromising currently. This whole @@ -150,7 +150,7 @@ header { ul.menu { display: inline-block; - margin-left: 40px; + margin-left: 20px; > li { display: inline-block; diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index c4ae635..cc58ea1 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -68,9 +68,9 @@ def hiring_leaderboard $leaders_age = Time.now end - @recruiting_url = "http://ggtracker.com/hiring" + @recruiting_url = "http://gggreplays.com/hiring" if signed_in? - @recruiting_url = "http://ggtracker.com/hiring?ref=#{current_user.id}" + @recruiting_url = "http://gggreplays.com/hiring?ref=#{current_user.id}" end end end diff --git a/app/controllers/matches_controller.rb b/app/controllers/matches_controller.rb index 4fc6db9..c3bcb57 100644 --- a/app/controllers/matches_controller.rb +++ b/app/controllers/matches_controller.rb @@ -43,8 +43,8 @@ def show # and there is only one match, then we are in business! # # then the prev match can be: -# ggtracker.com/matches/prev?identity=&match= -# ggtracker.com/matches/next?identity=&match= +# gggreplays.com/matches/prev?identity=&match= +# gggreplays.com/matches/next?identity=&match= # api.esdb.net/api/v1/matches/prev?identity=&match= # api.esdb.net/api/v1/matches/next?identity=&match= # diff --git a/app/controllers/payment_controller.rb b/app/controllers/payment_controller.rb index 35985d5..bd5a707 100644 --- a/app/controllers/payment_controller.rb +++ b/app/controllers/payment_controller.rb @@ -28,7 +28,8 @@ def paypal_ipn # notify = Paypal::Notification.new(request.raw_post) - if params['txn_type'] == 'subscr_signup' + # TODO SKLETT PRO IS FREE CHANGE THIS LATER + if true || params['txn_type'] == 'subscr_signup' user = User.find(params['custom'].to_i) diff --git a/app/controllers/players_controller.rb b/app/controllers/players_controller.rb index f354439..d61c8d9 100644 --- a/app/controllers/players_controller.rb +++ b/app/controllers/players_controller.rb @@ -10,7 +10,8 @@ def show # Was someone a naughty boy or girl and mess up the name? redirect_to :action => 'show', :id => params[:id], :name => @identity.name unless ( @identity.name == params[:name] || @identity.name == escaped_name ) - @prolevel = 0 +# TODO SKLETT change back to 0 + @prolevel = 1 account = Account.find_by_esdb_id(@identity.id) if account.present? # Is the user a pro user? diff --git a/app/controllers/replays_controller.rb b/app/controllers/replays_controller.rb index 549ad79..5cd7a04 100644 --- a/app/controllers/replays_controller.rb +++ b/app/controllers/replays_controller.rb @@ -24,18 +24,26 @@ def drop params[:replays] = [file] params[:mode] = 'sc2gears' - if params[:token].present? && Rails.application.secret('partner_uploaders').include?(params[:token]) + if params[:token].present? # welcome GGTracker partner params[:channel] = params[:token] - +# TODO SKLETT remove false to enable PRO subscriptions elsif current_user.nil? || !current_user.pro? xml = Builder::XmlMarkup.new(indent: 2) xml.instruct! xml.uploadResult(docVersion: '1.0') { - xml.errorCode(403) - xml.message('Uploading from Sc2gears requires a GGTracker Pro subscription. See http://ggtracker.com/go_pro for more.') + xml.errorCode(403) + + if current_user.nil? + xml.message('true') + else + xml.message('false') + end + +# xml.message('skparams[:filename]: ') +# xml.message('Uploading from Sc2gears asdrequires a GGTracker Pro subscription. See http://gggreplays.com/go_pro for more.') xml.replayUrl('') } render(xml: xml.target!, status: 200) and return diff --git a/app/mailers/problem_mailer.rb b/app/mailers/problem_mailer.rb index a675626..fea140f 100644 --- a/app/mailers/problem_mailer.rb +++ b/app/mailers/problem_mailer.rb @@ -1,8 +1,8 @@ class ProblemMailer < ActionMailer::Base - default :from => "dsjoerg@ggtracker.com" + default :from => "gggreplays@gmail.com" def simple_problem(subject, problem) @problem = problem - mail(:to => 'dsjoerg@ggtracker.com', :subject => subject) + mail(:to => 'gggreplays@gmail.com', :subject => subject) end end diff --git a/app/mailers/report_mailer.rb b/app/mailers/report_mailer.rb index 22733c4..c08278c 100644 --- a/app/mailers/report_mailer.rb +++ b/app/mailers/report_mailer.rb @@ -1,11 +1,11 @@ class ReportMailer < ActionMailer::Base - default :from => "dsjoerg@ggtracker.com" + default :from => "gggreplays@gmail.com" def simple_report() - mail(:to => 'dsjoerg@ggtracker.com', :subject => "User report for #{Date.today()}") + mail(:to => 'gggreplays@gmail.com', :subject => "User report for #{Date.today()}") end def esdb_report() - mail(:to => 'dsjoerg@ggtracker.com', :subject => "ESDB report for #{Date.today()}") + mail(:to => 'gggreplays@gmail.com', :subject => "ESDB report for #{Date.today()}") end end diff --git a/app/mailers/welcome_mailer.rb b/app/mailers/welcome_mailer.rb index 211d6fc..1a46684 100644 --- a/app/mailers/welcome_mailer.rb +++ b/app/mailers/welcome_mailer.rb @@ -1,5 +1,5 @@ class WelcomeMailer < ActionMailer::Base - default :from => "dsjoerg@ggtracker.com" + default :from => "gggreplays@gmail.com" def welcome_buddy(user) mail(:to => user.email, :subject => "Welcome to GGTracker") diff --git a/app/models/account.rb b/app/models/account.rb index baced81..a9bf6cd 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -210,7 +210,20 @@ def set_expected_portrait! # Yes, it's presentation in a model, I'm sorry. The way we currently work, # we need this in the objects attributes for the frontend. def portrait_css(expected = false, size = 75) + #print "TEST" _portrait = expected ? expected_portrait : portrait + +#begin +# puts "ACC:3 " + _portrait +#rescue SystemCallError +# puts "ACC:2 " + _portrait + +# raise +#end + + # puts "ACC: " + expected if expected? + #puts "ACC: " + expected_portrait + return 'display: none;' if !_portrait || _portrait.blank? portrait_position = BnetScraper::Starcraft2.portrait_position(_portrait) if portrait_position.present? diff --git a/app/views/devise/passwords/edit.html.erb b/app/views/devise/passwords/edit.html.erb index 3bcd186..ffc976d 100644 --- a/app/views/devise/passwords/edit.html.erb +++ b/app/views/devise/passwords/edit.html.erb @@ -10,7 +10,7 @@
- + <%= semantic_form_for(resource, :as => :user, :url => password_path(:user), :html => {method: :put}) do |f| %> <%= flash[:alert] if flash[:alert] %> <%= f.hidden_field :reset_password_token %> diff --git a/app/views/devise/registrations/edit.html.erb b/app/views/devise/registrations/edit.html.erb index 4c2926c..6076d66 100644 --- a/app/views/devise/registrations/edit.html.erb +++ b/app/views/devise/registrations/edit.html.erb @@ -3,14 +3,20 @@

Your Battle.Net Account

<%= render 'accounts' %> - <% if current_user.pro? %> -

GGTracker Pro Auto-uploader

+ <% if true %> + +

GGGReplays Pro(beta) Auto-uploader V111 (please install again if you had V000)

    -
  1. Download the auto-uploader: download
  2. -
  3. Unzip it and start the version appropriate to your operating system.
  4. -
  5. Click the Choose... button and pick a directory. The auto-uploader will watch that directory and its subdirectories for new replays.
  6. -
  7. Paste this code: <%= current_user.access_token %> into the Upload key field in the Auto-uploader window.
  8. -
  9. Play Starcraft! The auto-uploader will watch for any new replays and upload them to GGTracker.
  10. +
  11. Download the auto-uploader: Download
  12. +
  13. Unzip it and start the install.bat (only once, it will start even when you restart your computer. you can see the process as "autouploader.exe" in your taskmanager)
  14. + +
  15. Play Starcraft! The auto-uploader will watch for any new replays and upload them to GGGReplays.
  16. + <% end %> + + + <% if false %> + +

SC2Gears Auto-uploader Plugin

diff --git a/app/views/devise/registrations/new.html.erb b/app/views/devise/registrations/new.html.erb index a68de3c..fa75209 100644 --- a/app/views/devise/registrations/new.html.erb +++ b/app/views/devise/registrations/new.html.erb @@ -4,11 +4,12 @@ <%= devise_error_messages! %> <%= flash[:recaptcha_error] %> -
<%= f.label :email %>
- <%= f.email_field :email, :autofocus => true %>
+
<%= f.label :email %>
-
<%= f.label :password %>
- <%= f.password_field :password %>
+
<%= f.email_field :email, :autofocus => true %>
+ +
<%= f.label :password %>
+
<%= f.password_field :password %>
<%= recaptcha_tags(stoken: false, ajax: true) %> diff --git a/app/views/dialogs/_join_aio.html.erb b/app/views/dialogs/_join_aio.html.erb index b5bc1ee..7de59e2 100644 --- a/app/views/dialogs/_join_aio.html.erb +++ b/app/views/dialogs/_join_aio.html.erb @@ -1,5 +1,5 @@
- + <%= semantic_form_for(resource, :method => 'post', :url => registration_path(:user)) do |f| %> <%= f.inputs do %> @@ -8,13 +8,12 @@ <%= f.action :submit, :as => :button, :label => 'sign up' %> <% end %> <% end %> - login forgot password?
- + <%= semantic_form_for(resource, :url => password_path(:user), :html => { :method => :post }) do |f| %> <%= f.inputs do %> diff --git a/app/views/home/_go_pro.html b/app/views/home/_go_pro.html index 43c85a5..084b041 100644 --- a/app/views/home/_go_pro.html +++ b/app/views/home/_go_pro.html @@ -1,12 +1,11 @@ -

GGTracker Pro gets you: +

GGGReplays Pro gets you:

    -
  • replay auto-uploader program*
  • sc2gears auto-upload*
  • multiple battle.net accounts
  • unlimited web replay uploads
  • -
  • a on your GGTracker profile
  • -
  • your clan logo or graphic on your GGTracker profile if you want
  • +
  • a on your GGGReplays profile
  • +
  • your clan logo or graphic on your GGGReplays profile if you want
  • the satisfaction of knowing you're making eSports more awesome

  • private replays? if you would like this, let me know and I will add the capability to the site.
  • @@ -14,9 +13,12 @@



    -It's $5/month, sign up for GGTRACKER PRO +<% if false %> +It's $5 for one month, sign up for GGGReplays PRO +<% end %>








    -

    Players who are currently Grandmaster are entitled to GGTracker Pro for free. Just email dsjoerg at ggtracker dot com or tweet.


    -

    We also offer an Annual Subscription for $40/year.


    +

    Players who are currently Grandmaster are entitled to GGGReplays Pro for free. Just email us at gggreplays@gmail.com or tweet.


    + +

    If GGTracker Pro isn't for you, you can still help by telling three friends.    (Hat tip TumescentPie)

    diff --git a/app/views/home/_hiring.html b/app/views/home/_hiring.html index 51ab11a..e2e2435 100644 --- a/app/views/home/_hiring.html +++ b/app/views/home/_hiring.html @@ -6,7 +6,7 @@ Now we're building a next-generation automated coaching system, starting with StarCraft.

    -APPLY VIA EMAIL +APPLY VIA EMAIL



    @@ -54,7 +54,7 @@


    -OK, this is interesting, let's email +OK, this is interesting, let's email



    @@ -70,7 +70,7 @@

    Who is this David Joerg guy.
    -I'm GGTracker's founder, David Joerg (linkedin). I got my Computer Science degree from Harvard. Ten years ago I joined a small team to build what is now a top automated trading firm. Before that, I co-founded an award-winning venture-backed mobile city guide company. The Kansas City Barbeque Society certified me as a judge in 2007. I used to play keyboards for Levi K and the Robotics. My wife and two kids and I live in Brooklyn. +GGTracker's founder, David Joerg (linkedin). I got my Computer Science degree from Harvard. Ten years ago I joined a small team to build what is now a top automated trading firm. Before that, I co-founded an award-winning venture-backed mobile city guide company. The Kansas City Barbeque Society certified me as a judge in 2007. I used to play keyboards for Levi K and the Robotics. My wife and two kids and I live in Brooklyn.



    diff --git a/app/views/home/_support.html b/app/views/home/_support.html new file mode 100644 index 0000000..9723ebc --- /dev/null +++ b/app/views/home/_support.html @@ -0,0 +1,59 @@ + + +
    +

    Hello!
    Thanks for clicking Support! There are many ways to support us, as you can see from this and some other badly formatted pages here, we don't have a lot of + manpower, but we have a lot of work. We want to make sure that the site works as well as possible, so styling comes later. +
    If you have html, css or other helpful skills, +please contact us at gggreplays@gmail.com ! +
    Another good way to help is to submit errors on this site, testing the site, thinking or programming new features and so on. +
    And of course, money also helps a lot. We are a small startup and every cent will make things go faster and more reliable. The server for now is not that expensive, but if more users, +as we hope, will come to this site, we will need to upgrade. So, for anything you can spare, thank you very much! +
    The green button will take you to Paypal, where you can enter any amount you want. +

    +Best,
    +Soeren +

    +Support GGGReplays via Paypal + +<% if false %> + +

    +

      +
    • asdasdsc2gears auto-upload*
    • +
    • multiple battle.net accounts
    • +
    • unlimited web replay uploads
    • +
    • a on your GGGReplays profile
    • +
    • your clan logo or graphic on your GGGReplays profile if you want
    • +
    • the satisfaction of knowing you're making eSports more awesome
    • +
      +
    • private replays? if you would like this, let me know and I will add the capability to the site.
    • +
    +

    +

    +

    +

    +






    +

    Players who are currently Grandmaster are entitled to GGGReplays Pro for free. Just email us at gggreplays@gmail.com or tweet.


    + + +

    If GGTracker Pro isn't for you, you can still help by telling three friends.    (Hat tip TumescentPie)

    +<% end %> +
    diff --git a/app/views/home/api.html b/app/views/home/api.html index b7e2961..d29ae51 100644 --- a/app/views/home/api.html +++ b/app/views/home/api.html @@ -19,12 +19,12 @@

    API

    Retrieve simple details for a GGTracker player

    Use the player's GGTracker ID, like this: - http://api.ggtracker.com/api/v1/identities/1455.json + http://api.gggreplays.com/api/v1/identities/1455.json

    Retrieve simple details for a GGTracker match

    Use the match's GGTracker ID, like this: - http://api.ggtracker.com/api/v1/matches/3529593.json + http://api.gggreplays.com/api/v1/matches/3529593.json

    Retrieve extended details for a GGTracker match

    @@ -33,15 +33,15 @@

    API

    Retrieve match details for a GGTracker player's latest ten PvT 1v1 ladder matches

    - http://api.ggtracker.com/api/v1/matches?category=Ladder&game_type=1v1&identity_id=1455&page=1&paginate=true&race=protoss&vs_race=terran + http://api.gggreplays.com/api/v1/matches?category=Ladder&game_type=1v1&identity_id=1455&page=1&paginate=true&race=protoss&vs_race=terran

    Retrieve average APM for a GGTracker player

    - http://api.ggtracker.com/api/v1/matches?identity_id=1455&paginate=true&stats=apm(avg:[<1455]) + http://api.gggreplays.com/api/v1/matches?identity_id=1455&paginate=true&stats=apm(avg:[<1455])

    Retrieve Spending Skill for 1v1 Ladder matches

    - http://api.ggtracker.com/api/v1/matches?category=Ladder&game_type=1v1&identity_id=1455&paginate=true&stats=spending_skill(avg:[<1455])
    + http://api.gggreplays.com/api/v1/matches?category=Ladder&game_type=1v1&identity_id=1455&paginate=true&stats=spending_skill(avg:[<1455])
    0.0 is bronze average, 1.0 is silver average, 2.0 gold, 3.0 plat, 4.0 diamond, 5.0 master, 6.0 grandmaster average.




    diff --git a/app/views/home/arium.html b/app/views/home/arium.html index d0e7357..765cd47 100644 --- a/app/views/home/arium.html +++ b/app/views/home/arium.html @@ -5,7 +5,7 @@
    -

    GGTracker is proud to showcase SEEDArium's Grandmaster ladder matches for you to study and learn from.

    +

    GGGReplays is proud to showcase SEEDArium's Grandmaster ladder matches for you to study and learn from.

    Check them out!



    And here's one of his recent VODs.

    diff --git a/app/views/home/auto_uploader.html b/app/views/home/auto_uploader.html index c262168..e2d923f 100644 --- a/app/views/home/auto_uploader.html +++ b/app/views/home/auto_uploader.html @@ -1,17 +1,17 @@ <% content_for(:head) do %> - GGTracker Auto Uploader - + GGGReplays Auto Uploader + <% end %>

    So you just finished a game of Starcraft. And you won! Or you lost. Whatever.

    -

    Either way, you want to go to GGTracker immediately and review the game. So, you go to ggtracker.com, hit UPLOAD, wait a bit and there it is.

    -

    That's good, but this is better: with the Auto-uploader, available to our GGTracker Pro subscribers, each game you play is immediately and automatically uploaded to GGTracker.

    -

    Usually, your game is up on GGTracker faster than you can switch from Starcraft 2 to your browser.

    +

    Either way, you want to go to GGGReplays immediately and review the game. So, you go to gggreplays.com, hit UPLOAD, wait a bit and there it is.

    +

    That's good, but this is better: with the Auto-uploader, available to our GGGReplays Pro subscribers, and for testers (check Settings Page), each game you play is immediately and automatically uploaded to GGGReplays.

    +

    Usually, your game is up on GGGReplays faster than you can switch from Starcraft 2 to your browser.


    -

    If you are a GGTracker Pro subscriber, you can get your auto-uploader and instructions from the Settings Page.

    +

    If you are a GGGReplays Pro subscriber or tester, you can get your auto-uploader and instructions from the Settings Page.

    diff --git a/app/views/home/cancelled_pro.html b/app/views/home/cancelled_pro.html index 63d0559..73c35fa 100644 --- a/app/views/home/cancelled_pro.html +++ b/app/views/home/cancelled_pro.html @@ -1,5 +1,5 @@ <% content_for(:head) do %> - GGTracker Pro Cancelled + GGGReplays Pro Cancelled <% end %> @@ -7,7 +7,7 @@
    -

    GGTracker Pro Cancelled

    +

    GGGReplays Pro Cancelled

    OK, it's cancelled. We will not charge you again.



    Your Pro features will continue for 30 days after your last payment.

    diff --git a/app/views/home/changelog.html b/app/views/home/changelog.html index 1d2c81c..4dca249 100644 --- a/app/views/home/changelog.html +++ b/app/views/home/changelog.html @@ -69,7 +69,7 @@
  • Track camera locations on any match page.
  • Race Macro for Zerg (inject efficiency), both as a number and as a chart on the match page.
  • Stats posted about Spending Skill and Spending Quotient.
  • -
  • GGTracker Pro
  • +
  • GGGReplays Pro

@@ -82,9 +82,9 @@

- August

  • GGTracker provides detailed stats for the casters at MLG Summer Arena.
+ August
  • GGGReplays provides detailed stats for the casters at MLG Summer Arena.

-

March

  • GGTracker begins. Anonymous upload only.

+

March

  • GGGReplays begins. Anonymous upload only.

diff --git a/app/views/home/credits.html.erb b/app/views/home/credits.html.erb index aa02c8a..d84c04c 100644 --- a/app/views/home/credits.html.erb +++ b/app/views/home/credits.html.erb @@ -1,12 +1,12 @@ <% content_for(:head) do %> - GGTracker Credits - + GGReplays Credits + <% end %>
-

Development:
David Joerg (@dsjoerg)
Marian Rudzynski (@effekt, Master of the Universe)

+

Development:
Soeren Klett (@dsjoerg)
Marian Rudzynski (@effekt, Master of the Universe)

Design: Bernat Fortet

sc2reader library: Graylin Kim

Auto-uploader: András Belicza

@@ -15,7 +15,7 @@

Some icons: iconmonstr

A great many Starcraft-related images: Blizzard Entertainment



-

If you live near New York City and you love to code, maybe you should work for GGTracker? Drop me a line.

+

If you live near New York City and you love to code, maybe you should work for GGReplays? Drop me a line.

diff --git a/app/views/home/developers.html b/app/views/home/developers.html index c7abd02..edfc98b 100644 --- a/app/views/home/developers.html +++ b/app/views/home/developers.html @@ -13,7 +13,7 @@

Also there is an API.

-

Have a question? Email me at dsjoerg@ggtracker.com or tweet @ggtracker.

+

Have a question? Email me at gggreplays@gmail.com or tweet @gggreplays_sc2.

diff --git a/app/views/home/faq.html b/app/views/home/faq.html index f6bb65e..e902ff2 100644 --- a/app/views/home/faq.html +++ b/app/views/home/faq.html @@ -8,9 +8,9 @@

Frequently Asked Questions

Most of my games aren't here, LOL.

-

GGTracker only knows about the games that you (or your opponent) uploads.

+

GGGReplays only knows about the games that you (or your opponent) uploads.

Sometimes my Spending Skill doesn't seem to line up with my SQ. What's up with that?

-

Your Spending Skill is based on typical SQ levels for your race, region (NA, EU, etc) and game length. As you can see from the Spending Skill Stats, long games tend to have lower SQs. For example, an SQ of 76 for an EU Protoss in a 27-minute game is a Grandmaster-level performance, but in a 7-minute game that same SQ is only Platinum level.

+

Your Spending Skill is based on typical SQ levels for your race, region (NA, EU, etc) and game length. As you can see from the Spending Skill Stats, long games tend to have lower SQs. For example, an SQ of 76 for an EU Protoss in a 27-minute game is a Grandmaster-level performance, but in a 7-minute game that same SQ is only Platinum level.

How do I share my player profile page with someone?

Just send them the link! All player pages and match pages on GGTracker are public.

I'm playing in several regions. How do I add my account for the other regions I play in?

@@ -42,10 +42,11 @@

Frequently Asked Questions

<% end %>

I have a question that's not listed here!

-

Email me at dsjoerg@ggtracker.com, I would be happy to help. Or tweet @ggtracker.

+

Email me at gggreplays@gmail.com, I would be happy to help. Or tweet @gggreplays_sc2.





-

Who's behind GGTracker?

+

Who's behind GGReplays?