pinclub/pinclub

View on GitHub
public/javascripts/main.js

Summary

Maintainability
B
4 hrs
Test Coverage
$(document).ready(function () {
    var windowHeight = $(window).height();
    var $backtotop = $('#backtotop');
    var top = windowHeight - $backtotop.height() - 200;


    function moveBacktotop() {
        $backtotop.css({top: top, right: 0});
    }

    function footerFixBottom() {
        if ($(document.body).height() < windowHeight) {
            $("#footer").addClass('fix-bottom');
        } else {
            $("#footer").removeClass('fix-bottom');
        }
    }

    $backtotop.click(function () {
        $('html,body').animate({scrollTop: 0});
        return false;
    });
    $(window).scroll(function () {
        var windowHeight = $(window).scrollTop();
        if (windowHeight > 200) {
            $backtotop.fadeIn();
        } else {
            $backtotop.fadeOut();
        }
    });

    moveBacktotop();
    footerFixBottom();
    $(window).resize(moveBacktotop);
    $(window).resize(footerFixBottom);

    $('.topic_content a,.reply_content a').attr('target', '_blank');

    // pretty code
    prettyPrint();

    // data-loading-text="提交中"
    $('.submit_btn').click(function () {
        $(this).button('loading');
    });

    // 广告的统计信息
    $('.sponsor_outlink').click(function () {
        var $this = $(this);
        var label = $this.data('label');
        ga('send', 'event', 'banner', 'click', label, 1.00, {'nonInteraction': 1});
    });

    // ajax 登录
    $('#signin_modal_button').click(function(e) {
        var loginname = $('#signin_modal_name').val();
        var password = $('#signin_modal_pass').val();
        $.ajax({
            type: "POST",
            url: "/api/v2/auth/signin",
            data: {
                loginname: loginname,
                password: password
            }
        }).done(function (response) {
            if (!response.success) {
                console.error('signin error ', response);
                $('#signin_message').html(response.err_message);
            }
            if (response.two_factor) {
                $('.modal').modal('hide');
                $('#two_factor_modal').modal('show');
                $('#two_factor_name').val(loginname);
            } else {
                localStorage.jiuyanlouUser = response.user;
                location.reload();
            }
        }).error(function(response){
            console.error('signin error ', response);
            var resJson = response.responseJSON;
            $('#signin_message').html(resJson.err_message);
        });
    });

    $('#signin_two_factor_button').click(function (e) {
        var tfv = $('#two_factor_code').val();
        var loginname = $('#two_factor_name').val();
        $.ajax({
            type: "POST",
            url: "/api/v2/auth/signin/two_factor",
            data: {
                tfv: tfv,
                name: loginname
            }
        }).done(function (response) {
            if (!response.success) {
                console.error('signin error ', response);
            } else {
                // FIXME not save this localStorage if user singin from /signin page
                localStorage.jiuyanlouUser = response.user;
                location.reload();
            }
        }).error(function(response){
            console.error('two factor error ', response);
        });
    });
});

function auth(callback) {
    if (localStorage.jiuyanlouUser) {

        $.ajax({
            type: "POST",
            url: "/api/v2/auth/check"
        }).done(function (response) {
            if (!response.success) {
                $('.modal').modal('hide');
                $('#signin_modal').modal('show');
                callback(false);
            } else {
                callback(true);
            }
        }).error(function(response){
            $('.modal').modal('hide');
            $('#signin_modal').modal('show');
            callback(false);
        });
    } else {
        callback(true);
    }
}

function signout() {
    $.ajax({
        type: "POST",
        url: "/signout"
    }).done(function (response) {
        localStorage.removeItem('jiuyanlouUser');
        location.reload();
    }).error(function(response){
        console.error('signout error ', response);
    });
}

function avatarPath(avatar, size) {
    if (!avatar || !size) {
        return avatar;
    }
    var file_path = '';
    // FIXME: can not find pic if photo uploaded to 7niu
    if (avatar.indexOf('images.shiyix.org') > -1) {
        file_path = avatar + '_' + size;
    } else if (avatar.indexOf('githubusercontent.com') > -1 || avatar.indexOf('gravatar.com') > -1) {
        file_path = avatar;
    } else {
        var extname = avatar.substring(avatar.lastIndexOf('.') + 1);
        var path = avatar.substring(0, avatar.lastIndexOf('.'));
        file_path = path + '_' + size + '.' + extname;
    }
    return file_path;
}