78 lines
2.0 KiB
JavaScript
78 lines
2.0 KiB
JavaScript
|
ReferralBanner = function(ref)
|
||
|
{
|
||
|
/* Stop if > privileged: */
|
||
|
if(User.get_current_user_level() > 30)
|
||
|
{
|
||
|
this.container = null;
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
this.container = ref;
|
||
|
if(!ref)
|
||
|
return;
|
||
|
|
||
|
this.container.down(".close-button").on("click", function(e) {
|
||
|
e.stop();
|
||
|
this.container.removeClassName("shown");
|
||
|
}.bind(this));
|
||
|
}
|
||
|
|
||
|
ReferralBanner.prototype.show_referral = function()
|
||
|
{
|
||
|
if(!this.container)
|
||
|
return;
|
||
|
|
||
|
this.container.show();
|
||
|
|
||
|
/* If we don't defer after removing display: none, the -webkit-transition won't transition
|
||
|
* from the correct position. */
|
||
|
(function() {
|
||
|
this.container.addClassName("shown");
|
||
|
}).bind(this).defer();
|
||
|
}
|
||
|
|
||
|
|
||
|
ReferralBanner.prototype.increment_view_count = function()
|
||
|
{
|
||
|
var view_count = Cookie.get_int("viewed");
|
||
|
++view_count;
|
||
|
|
||
|
Cookie.put("viewed", view_count);
|
||
|
return view_count;
|
||
|
}
|
||
|
|
||
|
ReferralBanner.prototype.increment_views_and_check_referral = function()
|
||
|
{
|
||
|
var delay_between_referral_reset = 60*60*24;
|
||
|
var view_count_before_referral = 9999;
|
||
|
|
||
|
var view_count = this.increment_view_count();
|
||
|
|
||
|
/* sref is the last time we showed the referral. As long as it's set, we won't show
|
||
|
* it again. */
|
||
|
var referral_last_shown = Cookie.get_int("sref");
|
||
|
var now = new Date().getTime() / 1000;
|
||
|
|
||
|
/* If the last time the referral was shown was a long time ago, clear everything and start over.
|
||
|
* Once we clear this, vref is set and we'll start counting views from there.
|
||
|
*
|
||
|
* Also clear the timer if it's in the future; this can happen if the clock was adjusted. */
|
||
|
if(referral_last_shown && (referral_last_shown > now || now - referral_last_shown >= delay_between_referral_reset))
|
||
|
{
|
||
|
Cookie.put("sref", 0);
|
||
|
referral_last_shown = 0;
|
||
|
Cookie.put("vref", view_count - 1);
|
||
|
}
|
||
|
|
||
|
if(referral_last_shown)
|
||
|
return;
|
||
|
|
||
|
var view_count_start = Cookie.get_int("vref");
|
||
|
if(view_count >= view_count_start && view_count - view_count_start < view_count_before_referral)
|
||
|
return;
|
||
|
|
||
|
Cookie.put("sref", now);
|
||
|
this.show_referral();
|
||
|
}
|
||
|
|