2013-08-28 16:53:55 +00:00
"use strict" ;
2015-01-18 01:43:37 +00:00
angular . module ( 'habitrpg' ) . controller ( "FooterCtrl" ,
[ '$scope' , '$rootScope' , 'User' , '$http' , 'Notification' , 'ApiUrl' ,
function ( $scope , $rootScope , User , $http , Notification , ApiUrl ) {
2013-08-28 16:53:55 +00:00
2015-01-27 14:48:57 +00:00
if ( env . isStaticPage ) {
2015-01-18 01:43:37 +00:00
$scope . languages = env . avalaibleLanguages ;
$scope . selectedLanguage = _ . find ( env . avalaibleLanguages , { code : env . language . code } ) ;
2014-08-03 16:23:13 +00:00
2015-01-18 01:43:37 +00:00
$rootScope . selectedLanguage = $scope . selectedLanguage ;
$scope . changeLang = function ( ) {
window . location = '?lang=' + $scope . selectedLanguage . code ;
2014-08-03 16:23:13 +00:00
}
2015-01-18 01:43:37 +00:00
}
2014-08-03 16:23:13 +00:00
2015-01-18 01:43:37 +00:00
/ * *
External Scripts
JS files not needed right away ( google charts ) or entirely optional ( analytics )
Each file gets loaded async via $ . getScript , so it doesn ' t bog page - load
* /
$scope . deferredScripts = function ( ) {
2013-08-28 16:53:55 +00:00
2015-01-18 01:43:37 +00:00
// Stripe
$ . getScript ( '//checkout.stripe.com/v2/checkout.js' ) ;
2013-08-28 16:53:55 +00:00
2015-01-18 01:43:37 +00:00
// Google Analytics, only in production
2015-03-20 23:02:45 +00:00
if ( window . env . NODE _ENV === 'production' ) {
2015-03-20 20:44:18 +00:00
// Get experiments API
$ . getScript ( '//www.google-analytics.com/cx/api.js?experiment=OPMHlSzSTj2gVYwUS72wlQ' , function ( ) {
2015-03-30 22:43:26 +00:00
$rootScope . variant = cxApi . chooseVariation ( ) ;
2015-03-20 20:44:18 +00:00
$rootScope . $apply ( ) ;
( function ( i , s , o , g , r , a , m ) { i [ 'GoogleAnalyticsObject' ] = r ; i [ r ] = i [ r ] || function ( ) {
( i [ r ] . q = i [ r ] . q || [ ] ) . push ( arguments ) } , i [ r ] . l = 1 * new Date ( ) ; a = s . createElement ( o ) ,
m = s . getElementsByTagName ( o ) [ 0 ] ; a . async = 1 ; a . src = g ; m . parentNode . insertBefore ( a , m )
} ) ( window , document , 'script' , '//www.google-analytics.com/analytics.js' , 'ga' ) ;
ga ( 'create' , window . env . GA _ID , { userId : User . user . _id } ) ;
ga ( 'require' , 'displayfeatures' ) ;
ga ( 'send' , 'pageview' ) ;
} )
2015-01-18 01:43:37 +00:00
}
2013-08-28 16:53:55 +00:00
2015-01-18 01:43:37 +00:00
// Scripts only for desktop
if ( ! window . env . IS _MOBILE ) {
// Add This
//$.getScript("//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5016f6cc44ad68a4"); //FIXME why isn't this working when here? instead it's now in <head>
var addthisServices = 'facebook,twitter,googleplus,tumblr,' + window . env . BASE _URL . replace ( 'https://' , '' ) . replace ( 'http://' , '' ) ;
window . addthis _config = {
ui _click : true ,
services _custom : {
name : "Download" ,
url : window . env . BASE _URL + "/export/avatar-" + User . user . _id + ".png" ,
icon : window . env . BASE _URL + "/favicon.ico"
} ,
services _expanded : addthisServices ,
services _compact : addthisServices
} ;
2013-08-28 16:53:55 +00:00
2015-01-18 01:43:37 +00:00
// Google Charts
$ . getScript ( "//www.google.com/jsapi" , function ( ) {
google . load ( "visualization" , "1" , {
packages : [ "corechart" ] ,
callback : function ( ) { }
2013-08-28 16:53:55 +00:00
} ) ;
2015-01-18 01:43:37 +00:00
} ) ;
2013-10-31 22:14:19 +00:00
}
2015-01-18 01:43:37 +00:00
}
2013-08-28 16:53:55 +00:00
2015-01-18 01:43:37 +00:00
/ * *
* Debug functions . Note that the server route for gems is only available if process . env . DEBUG = true
* /
if ( _ . contains ( [ 'development' , 'test' ] , window . env . NODE _ENV ) ) {
$scope . setHealthLow = function ( ) {
User . set ( {
'stats.hp' : 1
} ) ;
}
2015-03-07 08:39:43 +00:00
$scope . addMissedDay = function ( numberOfDays ) {
if ( ! confirm ( "Are you sure you want to reset the day by " + numberOfDays + " day(s)?" ) ) return ;
var dayBefore = moment ( User . user . lastCron ) . subtract ( numberOfDays , 'days' ) . toDate ( ) ;
2015-01-18 01:43:37 +00:00
User . set ( { 'lastCron' : dayBefore } ) ;
2015-03-07 08:39:43 +00:00
Notification . text ( '-' + numberOfDays + ' day(s), remember to refresh' ) ;
2015-01-18 01:43:37 +00:00
}
$scope . addTenGems = function ( ) {
$http . post ( ApiUrl . get ( ) + '/api/v2/user/addTenGems' ) . success ( function ( ) {
User . log ( { } ) ;
} )
}
$scope . addGold = function ( ) {
User . set ( {
'stats.gp' : User . user . stats . gp + 500 ,
} ) ;
}
2015-03-13 03:52:54 +00:00
$scope . addMana = function ( ) {
User . set ( {
'stats.mp' : User . user . stats . mp + 500 ,
} ) ;
}
2015-01-18 01:43:37 +00:00
$scope . addLevelsAndGold = function ( ) {
User . set ( {
'stats.exp' : User . user . stats . exp + 10000 ,
'stats.gp' : User . user . stats . gp + 10000 ,
'stats.mp' : User . user . stats . mp + 10000
} ) ;
}
$scope . addOneLevel = function ( ) {
User . set ( {
'stats.exp' : User . user . stats . exp + ( Math . round ( ( ( Math . pow ( User . user . stats . lvl , 2 ) * 0.25 ) + ( 10 * User . user . stats . lvl ) + 139.75 ) / 10 ) * 10 )
} ) ;
}
$scope . addBossQuestProgressUp = function ( ) {
User . set ( {
'party.quest.progress.up' : User . user . party . quest . progress . up + 1000
} ) ;
2013-12-31 04:56:01 +00:00
}
2015-01-18 01:43:37 +00:00
}
} ] )