Skip to content
This repository has been archived by the owner on Aug 25, 2021. It is now read-only.

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
unknown authored and unknown committed Apr 21, 2013
2 parents b1daa7b + 395a82b commit 9e7ec2f
Show file tree
Hide file tree
Showing 7 changed files with 222 additions and 115 deletions.
82 changes: 51 additions & 31 deletions ajax.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@

require_once 'support/config.php';
require_once 'support/partials.php';

header('Content-Type: application/json');
startSession();
require_once 'support/proxy.php';

if (FORCE_SSL && !usingSSL()) die;

header('Content-Type: application/json');


$cmd = isset($_REQUEST["cmd"]) ? $_REQUEST["cmd"] : "";
$game = isset($_REQUEST["game"]) ? $_REQUEST["game"] : "";
Expand All @@ -39,6 +39,8 @@
if ($cmd == 'login') {
$username = isset($_REQUEST["username"]) ? $_REQUEST["username"] : "";
$password = isset($_REQUEST["password"]) ? $_REQUEST["password"] : "";
$recaptcha_challenge = isset($_REQUEST["recaptcha_challenge"]) ? $_REQUEST["recaptcha_challenge"] : "";
$recaptcha_response = isset($_REQUEST["recaptcha_response"]) ? $_REQUEST["recaptcha_response"] : "";
$realm = isset($_REQUEST["realm"]) ? $_REQUEST["realm"] : "";
}

Expand All @@ -49,7 +51,7 @@
return;
}

if ( $cmd != 'login' && (!isset($_SESSION['cookies']) || !isset($_SESSION['realm']) || !isset($_SESSION['case'])) )
if ( $cmd != 'login' && $cmd != 'getRecaptcha' && (!isset($_SESSION['cookies']) || !isset($_SESSION['realm']) || !isset($_SESSION['case'])) )
{
die('{"status":"nosess"}');
return;
Expand All @@ -66,9 +68,17 @@
echo json_encode(array('status' => 'ok'));
break;

case 'getRecaptcha':
$result = tribGetRecaptcha($ch, "na");
if ( $result === false )
echo '{"status":"failed"}';
else
echo json_encode($result);
break;

case 'login':
$feedback = array();
if (empty($username) || empty($password) || empty($realm)) {
if (empty($username) || empty($password) || empty($realm) || (empty($recaptcha_response)&&$realm=="na") ) {
$feedback[] = 'You must fill out all fields.';
} else {
// validate submission
Expand All @@ -91,37 +101,47 @@
$_SESSION['realm'] = $realm;

// perform login
if ($result = tribInit($username, $password, $_SESSION['realm'], $ch))
{
// save important info
$_SESSION['cookies'] = $result['cookies'];
$_SESSION['case'] = $result['case'];
switch ($result['case'])
{
case 'finished':
echo '{"status":"finished"}';
break;

case 'underlevel':
echo '{"status":"underlevel"}';
break;

case 'recess':
echo '{"status":"recess"}';
break;

default:
echo '{"status":"ok","case":"' . $result["case"] . '","numGames":' . $result["numGames"] . '}';
$result = tribLogin($username, $password, $_SESSION['realm'], $recaptcha_challenge, $recaptcha_response, $ch);
if ( $result === false )
$feedback[] = 'An unknown error occurred during login';
elseif( $result["status"] != "success" )
$feedback[] = $result["status"]=="userpass"?'Invalid username/password':'Incorrect recaptcha response';
else {
$result = tribInit($_SESSION['realm'], $result['cookies'], $ch);
if ( $result === false )
$feedback[] = 'Login succeeded but an unknown error occurred while starting the Tribunal';
else {
// save important info
$_SESSION['cookies'] = $result['cookies'];
$_SESSION['case'] = $result['case'];
switch ($result['case'])
{
case 'finished':
echo '{"status":"finished"}';
break;

case 'underlevel':
echo '{"status":"underlevel"}';
break;

case 'recess':
echo '{"status":"recess"}';
break;

case 'unknown':
echo '{"status":"unknown"}';
break;

default:
echo '{"status":"ok","case":"' . $result["case"] . '","numGames":' . $result["numGames"] . '}';
break;
}
}
break;
}
else
{
$feedback[] = 'Riot rejected your login.';
}
}
}
echo json_encode(array( 'status' => 'error', 'feedback' => $feedback));
if( !empty($feedback) )
echo json_encode(array( 'status' => 'error', 'feedback' => $feedback));
break;

case "getCase":
Expand Down
98 changes: 65 additions & 33 deletions assets/javascripts/mobiletrib.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ $(function() {
$('#username').val($.store.get('username'));
$.store.clear('password'); // just in case they used the original version

//handle recaptcha display
$('#realm').change(function() { displayRecaptcha();});

// logout handler
$('#logout').click(doLogout);

Expand Down Expand Up @@ -90,6 +93,7 @@ $(function() {
data: { cmd: 'getCase' },
success: function (data) {
if (data.status === 'failed' || data.status === 'nosess') {
displayRecaptcha();
return showOnly('login');
}
if ( data.status === 'finished' ) {
Expand All @@ -115,7 +119,7 @@ function urlPrefix() {
}

function formatImageUrl(url) {
return url.replace('/tribunal/bundles/riothelper/game_data/1.0.0.148', urlPrefix()+'/sites/default/files/game_data/1.0.0.146');
return url.replace('/tribunal/bundles/riothelper/game_data/3.03.0.1/', urlPrefix()+'/tribunal/bundles/riothelper/game_data/3.03.0.1/');
}

// shows only one component of the app and hides all the others
Expand Down Expand Up @@ -169,7 +173,9 @@ function submitLogin(event) {
cmd: 'login',
username: $('#username').val(),
password: $('#password').val(),
realm: $('#realm').val()
realm: $('#realm').val(),
recaptcha_response: $('#recaptcha_response').val(),
recaptcha_challenge: $('#recaptcha_challenge').val()
},
success: processLoginResult
});
Expand All @@ -184,6 +190,8 @@ function processLoginResult(data) {
} else if (data.status === 'error') {
// put each elemnt of response.feedback as a paragraph in #feedback
$('#feedback').html(data.feedback.join('<br>'));
if( $('#realm').val() == 'na' )
loadRecaptcha();
showOnly('login');
} else {
showOnly(data.status);
Expand All @@ -194,14 +202,17 @@ function processCaseSubmissionResult(data) {
showOnly('submit');
if (data.status === 'failed') {
alert('Error communicating with Riot servers');
} else if (data.status === 'captchafail') {
}
else if (data.status === 'captchafail') {
alert('Incorrect captcha');
} else if (data.status === 'finished') {
}
else if (data.status === 'finished') {
showOnly('finished'); // TODO have a button to retry that checks if you are still expired
} else if (data.status === 'nosess') {
$('#feedback').html('Your session has expired.');
showOnly('login');
} else if (data.status === 'ok') {
}
else if (data.status === 'nosess') {
showOnly('login'); // TODO show login form instead of reloading
}
else if (data.status === 'ok') {
loadCase(data);
}
}
Expand All @@ -224,6 +235,30 @@ function reloadCaptcha() {
}
}

function loadRecaptcha() {
$('#recaptcha_img').attr('src','');
$.ajax({
type: 'POST',
dataType: 'json',
url: 'ajax.php',
data: { cmd: 'getRecaptcha' },
success: function(data) {
$('#recaptcha_img').attr('src',data.image);
$('#recaptcha_challenge').val(data.challenge);
$('#recaptcha_response').val('');
}
});
}

function displayRecaptcha() {
if( $('#realm').val() == 'na' ) {
loadRecaptcha();
$('#recaptcha').show();
}
else
$('#recaptcha').hide();
}

function loadCase(data) {
showOnly('loading');
//window.captchaLoaded = false;
Expand All @@ -245,7 +280,7 @@ function loadCase(data) {
// create the list of games
$('#games').empty();
for (var i=1; i<=num; i++) {
$('<li onclick="void(0)"></li>').attr('value',i).html('<img src="assets/images/unknownplayer.png"> Game '+i).appendTo('#games');
$('<li onclick="void(0)"></li>').attr('value',i).html('Game '+i).appendTo('#games');
}

$('#caseid').html(data['case']);
Expand Down Expand Up @@ -291,25 +326,30 @@ function loadGame(gameNumber) {

// performs some parsing and caches the result of a fetched game
function initData(gameData, gameNumber) {

//quick fix: gameData.offender is now an element of gameData.players, so we'll find the offender and recreate gameData.offender
for( var i = 0; i < gameData.players.length; i++ ) {
if( gameData.players[i].association_to_offender == 'offender' )
gameData.offender = gameData.players[i];
}
// calculate a regular timestamp
var minutes = gameData.offender.time_played % 60;
if (minutes < 10) minutes = '0' + minutes;
gameData.time_played = Math.floor(gameData.offender.time_played / 60) + ':' + minutes;
// cache the fixed data
window.cachedGames[gameNumber] = gameData;
// apply champion portrait in games list
$('#games img')[gameNumber-1].src = formatImageUrl(gameData.offender.champion_url);
// apply champion portrait in games list - removed because riot doesn't send individual images anymore
//$('#games img')[gameNumber-1].src = formatImageUrl(gameData.offender.champion_url);
return gameData;
}

function applyData(gameData) {
var i, item;
// expand the data into the #game div
$('#portrait img').attr('src', formatImageUrl(gameData.offender.champion_url));
$('#portrait img').attr('alt', gameData.offender.champion_name);
$('#portrait-img').attr('style', gameData.offender.champion_icon);
$('#champname span').text(gameData.offender.champion_name);
$('#summoner1').attr('src', formatImageUrl(gameData.offender.summoner_spell_1));
$('#summoner2').attr('src', formatImageUrl(gameData.offender.summoner_spell_2));
$('#summoner1').attr('style', gameData.offender.summoner_spell_1_icon);
$('#summoner2').attr('style', gameData.offender.summoner_spell_2_icon);

$('#level').text(gameData.offender.level);
$('#time').text(gameData.time_played);
Expand All @@ -326,15 +366,11 @@ function applyData(gameData) {

// setup inventory-container
$('#inventory-container').empty();
for (i=0; i<gameData.offender.items.length; i++) {
item = gameData.offender.items[i];
if (item.id !== '0')
$('<img>')
.attr('src', formatImageUrl(item.icon))
.attr('title', item.name)
.attr('alt', item.name)
.data('info', item)
.appendTo('#inventory-container');
for (i=0; i<gameData.offender.item_icons.length; i++) {
item = gameData.offender.item_icons[i];
$('<div>')
.attr('style', item)
.appendTo('#inventory-container');
}

//display teammates
Expand All @@ -344,21 +380,17 @@ function applyData(gameData) {
if (player.association_to_offender === 'ally') {
var teammate = $('#teammates thead tr.template').clone();
teammate.removeClass('template').addClass('teammate');
teammate.find('.port img').attr('src', formatImageUrl(player.champion_url));
teammate.find('.port div').attr('style', player.champion_icon);
teammate.find('.level').html(player.level);
teammate.find('.champname').html(player.champion_name);
teammate.find('.score').html(player.scores.kills +'/'+ player.scores.deaths +'/'+ player.scores.assists);
teammate.find('.summ1').attr('src', formatImageUrl(player.summoner_spell_1));
teammate.find('.summ2').attr('src', formatImageUrl(player.summoner_spell_2));
teammate.find('.summ1').attr('style',player.summoner_spell_1_icon);
teammate.find('.summ2').attr('style',player.summoner_spell_2_icon);
teammate.find('.gold').html(player.gold_earned > 1000 ? (Math.round(player.gold_earned / 1000) + 'k') : player.gold_earned);
teammate.find('.cs').html(player.minions_killed);
for (i = player.items.length - 1; i >= 0; i--) {
for (i = player.item_icons.length - 1; i >= 0; i--) {
item = teammate.find('.item'+i);
if (player.items[i].id !== '0') {
item.attr('src', formatImageUrl(player.items[i].icon));
} else {
item.attr('src', 'assets/images/itemslot.png');
}
item.attr('style', player.item_icons[i]);
}
teammate.appendTo('#teammates tbody');
}
Expand Down
32 changes: 20 additions & 12 deletions assets/layouts/mobiletrib.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
};
</script>
<script type="text/javascript" src="assets/javascripts/json2.min.js"></script>
<script type="text/javascript" src="https://ssl.google-analytics.com/ga.js" async="true"></script>
<script type="text/javascript" src="assets/javascripts/jquery.min.js"></script>
<script type="text/javascript" src="assets/javascripts/jquery.store.patched.js"></script>
<script type="text/javascript" src="assets/javascripts/jquery.tappable.js"></script>
Expand Down Expand Up @@ -50,6 +51,13 @@
</div>
<div class="input"><label for="username">Username</label> <input name="username" id="username" type="text" autofocus></div>
<div class="input"><label for="password">Password</label> <input name="password" id="password" type="password"></div>
<div id="recaptcha" class="input">
<label for="recaptcha_response">Recaptcha</label>
<img id="recaptcha_img" src="assets/images/blank.gif">
<input name="recaptcha_challenge" id="recaptcha_challenge" type="hidden">
<br />
<input name="recaptcha_response" id="recaptcha_response" type="text">
</div>
<div><input type="submit" value="Login"></div>
</section></form>
</div>
Expand All @@ -58,7 +66,7 @@
<div id="game-selector">
<span id="game-selected">Game 1</span>
<ul id="games">
<li value="1" onclick="void(0)"><img src="assets/images/unknownplayer.png"> Game 1</li>
<li value="1" onclick="void(0)">Game 1</li>
</ul>
</div>
<div id="verdict" class="req-by-game exc-by-submit">Submit Verdict <time>in 60s</time></div>
Expand All @@ -72,11 +80,11 @@
<div id="champname" class="title"><span></span></div>
<div id="portraitandsummoners">
<div id="portrait">
<img src="assets/images/blank.gif">
<div id="portrait-img"></div>
<div id="level"></div>
</div>
<div id="summoners">
<img src="" id="summoner1"><img src="" id="summoner2">
<div id="summoner1"></div><div id="summoner2"></div>
</div>
</div>
<div id="inventory">
Expand Down Expand Up @@ -122,19 +130,19 @@
<th><img src="assets/images/minion.png"></th>
</tr>
<tr class="template">
<td class="port"><img src=""> <span class="level"></span><br><span class="champname"></span></td>
<td class="port"><div></div> <span class="level"></span><br><span class="champname"></span></td>
<td class="score"></td>
<td>
<img class="summ1" src="">
<img class="summ2" src="">
<div class="summ1"></div>
<div class="summ2"></div>
</td>
<td>
<img class="item0" src="">
<img class="item1" src="">
<img class="item2" src="">
<img class="item3" src="">
<img class="item4" src="">
<img class="item5" src="">
<div class="item0"></div>
<div class="item1"></div>
<div class="item2"></div>
<div class="item3"></div>
<div class="item4"></div>
<div class="item5"></div>
</td>
<td class="gold"></td>
<td class="cs"></td>
Expand Down
Loading

0 comments on commit 9e7ec2f

Please sign in to comment.