/* INVITES JS FILE */ $('body').arrive('#activeInfo', {onceOnly: true}, function() { inviteLaunch(); }); // FUNCTIONS function inviteLaunch(){ var menuList = ''; var htmlDOM = `
`; if(activeInfo.plugins["INVITES-enabled"] == true){ if (activeInfo.user.loggedin === true && activeInfo.user.groupID <= activeInfo.plugins.includes["INVITES-Auth-include"]) { menuList = `
  • Manage Invites
  • `; htmlDOM += `
    New Invite
    `; }else if (activeInfo.user.loggedin === false){ menuList = `
  • Use Invite Code
  • `; } $('.append-menu').after(menuList); $('.organizr-area').after(htmlDOM); pageLoad(); getInvite(); } } function joinPlex(){ var username = $('#invitePlexJoinUsername'); var email = $('#invitePlexJoinEmail'); var password = $('#invitePlexJoinPassword'); if(username.val() == ''){ username.focus(); message('Invite Error',' Please Enter Username',activeInfo.settings.notifications.position,'#FFF','warning','5000'); }else if(email.val() == ''){ email.focus(); message('Invite Error',' Please Enter Email',activeInfo.settings.notifications.position,'#FFF','warning','5000'); }else if(password.val() == ''){ password.focus(); message('Invite Error',' Please Enter Password',activeInfo.settings.notifications.position,'#FFF','warning','5000'); } if(email.val() !== '' && username.val() !== '' && password.val() !== ''){ organizrAPI2('POST','api/v2/plex/register',{username:username.val(), email:email.val(), password:password.val()}).success(function(data) { var response = data.response; if(response.result === 'success'){ $('.invite-step-3-plex-no').toggleClass('hidden'); $('.invite-step-3-plex-yes').toggleClass('hidden'); message('Invite Function',' User Created',activeInfo.settings.notifications.position,'#FFF','success','5000'); $('#inviteUsernameInvite').val(username.val()); hasPlexUsername(); }else{ message('Invite Error',' '+response.message,activeInfo.settings.notifications.position,'#FFF','warning','5000'); } }).fail(function(xhr) { OrganizrApiError(xhr, 'Plex Signup Error'); }); } } function joinEmby(){ var username = $('#inviteEmbyJoinUsername'); var email = $('#inviteEmbyJoinEmail'); var password = $('#inviteEmbyJoinPassword'); if(username.val() == ''){ username.focus(); message('Invite Error',' Please Enter Username',activeInfo.settings.notifications.position,'#FFF','warning','5000'); }else if(email.val() == ''){ email.focus(); message('Invite Error',' Please Enter Email',activeInfo.settings.notifications.position,'#FFF','warning','5000'); }else if(password.val() == ''){ password.focus(); message('Invite Error',' Please Enter Password',activeInfo.settings.notifications.position,'#FFF','warning','5000'); } if(email.val() !== '' && username.val() !== '' && password.val() !== ''){ organizrAPI2('POST','api/v2/emby/register',{username:username.val(), email:email.val(), password:password.val()}).success(function(data) { var response = data.response; if(response.result === 'success'){ $('.invite-step-3-emby-no').toggleClass('hidden'); $('.invite-step-3-emby-yes').toggleClass('hidden'); message('Invite Function',' User Created',activeInfo.settings.notifications.position,'#FFF','success','5000'); $('#inviteUsernameInviteEmby').val(username.val()); hasEmbyUsername(); }else{ message('Invite Error',' '+response.message,activeInfo.settings.notifications.position,'#FFF','warning','5000'); } }).fail(function(xhr) { OrganizrApiError(xhr, 'Emby Signup Error'); }); } } function inviteHasAccount(type,value){ switch (type) { case 'plex': if(value){ $('.invite-step-2').toggleClass('hidden'); $('.invite-step-3-plex-yes').toggleClass('hidden'); }else{ $('.invite-step-2').toggleClass('hidden'); $('.invite-step-3-plex-no').toggleClass('hidden'); } break; case 'emby' : if(value){ $('.invite-step-2').toggleClass('hidden'); $('.invite-step-3-emby-yes').toggleClass('hidden'); }else{ $('.invite-step-2').toggleClass('hidden'); $('.invite-step-3-emby-no').toggleClass('hidden'); } break; default: alert(type+' is not set up yet'); } } function hasPlexUsername(){ var code = $('#inviteCodeInput').val().toUpperCase(); var username = $('#inviteUsernameInvite'); if(username.val() == ''){ username.focus(); message('Invite Error',' Please Enter Username',activeInfo.settings.notifications.position,'#FFF','warning','5000'); }else{ var post = { usedby:username.val() }; ajaxloader(".content-wrap","in"); organizrAPI2('POST','api/v2/plugins/invites/' + code,post).success(function(data) { var response = data.response; if(response.result === 'success'){ $('.invite-step-3-plex-yes').toggleClass('hidden'); $('.invite-step-4-plex-accept').toggleClass('hidden'); if(local('get', 'invite')){ local('remove', 'invite'); } }else{ message('Invite Error',response.message,activeInfo.settings.notifications.position,'#FFF','warning','5000'); } ajaxloader();; }).fail(function(xhr) { OrganizrApiError(xhr); ajaxloader(); }); } } function hasEmbyUsername(){ var code = $('#inviteCodeInput').val().toUpperCase(); var username = $('#inviteUsernameInviteEmby'); if(username.val() == ''){ username.focus(); message('Invite Error',' Please Enter Username',activeInfo.settings.notifications.position,'#FFF','warning','5000'); }else{ var post = { usedby:username.val() }; ajaxloader(".content-wrap","in"); organizrAPI2('POST','api/v2/plugins/invites/' + code,post).success(function(data) { var response = data.response; if(response.result === 'success'){ $('.invite-step-3-emby-yes').toggleClass('hidden'); $('.invite-step-4-emby-accept').toggleClass('hidden'); if(local('get', 'invite')){ local('remove', 'invite'); } }else{ message('Invite Error',response.message,activeInfo.settings.notifications.position,'#FFF','warning','5000'); } ajaxloader();; }).fail(function(xhr) { OrganizrApiError(xhr); ajaxloader(); }); } } function verifyInvite(){ var code = $('#inviteCodeInput').val().toUpperCase(); ajaxloader(".content-wrap","in"); organizrAPI2('GET','api/v2/plugins/invites/'+code).success(function(data) { var response = data.response; if(response.result === 'success'){ $('.invite-step-1').toggleClass('hidden'); $('.invite-step-2').toggleClass('hidden'); }else{ message('Invite Error',response.message,activeInfo.settings.notifications.position,'#FFF','warning','5000'); } if(local('get', 'invite')){ local('remove', 'invite'); } ajaxloader();; }).fail(function(xhr) { OrganizrApiError(xhr); ajaxloader(); }); } function getInvite(invite=null){ if(invite){ local('set','invite',invite); } if($.urlParam('invite') !== null){ local('set','invite',$.urlParam('invite')); } if(local('get', 'invite')){ //show error page $('.inviteModal').trigger('click'); $('#inviteCodeInput').val(local('get', 'invite')); window.history.pushState({}, document.title, "./" ); local('remove', 'invite'); } } function createNewInvite(){ var username = $('#new-invite-form-inputUsername'); var email = $('#new-invite-form-inputEmail'); if(username.val() == ''){ username.focus(); message('Invite Error',' Please Enter Username',activeInfo.settings.notifications.position,'#FFF','warning','5000'); }else if(email.val() == ''){ email.focus(); message('Invite Error',' Please Enter Email',activeInfo.settings.notifications.position,'#FFF','warning','5000'); } if(email.val() !== '' && username.val() !== ''){ var post = { code:createRandomString(6).toUpperCase(), email:email.val(), username:username.val(), }; ajaxloader(".content-wrap","in"); organizrAPI2('POST','api/v2/plugins/invites',post).success(function(data) { var response = data.response; $.magnificPopup.close(); ajaxloader(); message('Invite',' Invite Created',activeInfo.settings.notifications.position,'#FFF','success','5000'); }).fail(function(xhr) { OrganizrApiError(xhr); ajaxloader(); message('Invite Error',' An Error Occured',activeInfo.settings.notifications.position,'#FFF','error','5000'); }); } } function deleteInvite(code, id){ ajaxloader(".content-wrap","in"); organizrAPI2('DELETE','api/v2/plugins/invites/' + code).success(function(data) { var response = data.response; $('#inviteItem-'+id).remove(); //$.magnificPopup.close(); ajaxloader(); message('Invite',' Invite Deleted',activeInfo.settings.notifications.position,'#FFF','success','5000'); }).fail(function(xhr) { console.error("Organizr Function: API Connection Failed"); ajaxloader(); message('Invite Error',' An Error Occured',activeInfo.settings.notifications.position,'#FFF','error','5000'); }); } // EVENTS and LISTENERS function buildInvites(array){ if(array.length == 0){ return '

    No Invites

    '; } var invites = ''; $.each(array, function(i,v) { v.dateused = (v.dateused) ? v.dateused : '-'; v.usedby = (v.usedby) ? v.usedby : '-'; v.ip = (v.ip) ? v.ip : '-'; v.date = typeof v.date == 'object' ? v.date.date : v.date; let m = moment.tz(v.date, activeInfo.timezone); v.date = moment(m).format('LLL'); invites += ` `+v.id+` `+v.username+` `+v.email+` `+v.code+` `+v.date+` `+v.dateused+` `+v.usedby+` `+v.ip+` `+v.invitedby+` `+v.valid+` `; }); return invites; } $(document).on('click', '.inviteModal', function() { var htmlDOM = ''; if (activeInfo.user.loggedin === true && activeInfo.user.groupID <= activeInfo.plugins.includes["INVITES-Auth-include"]) { ajaxloader(".content-wrap","in"); organizrAPI2('GET','api/v2/plugins/invites').success(function(data) { var response = data.response; var htmlDOM = ''; htmlDOM = `
    Manage Invites
    `+buildInvites(response.data)+`
    # USERNAME EMAIL INVITE CODE DATE SENT DATE USED USED BY IP ADDRESS INVITED BY VALID DELETE
    `; $('.invite-div').html(htmlDOM); if (activeInfo.plugins.includes["INVITES-allow-delete-include"] === false && activeInfo.user.groupID > 1) { $('.deleteButton').hide(); } }).fail(function(xhr) { console.error("Organizr Function: API Connection Failed"); }); ajaxloader(); }else if (activeInfo.user.loggedin === false){ htmlDOM = `
    Use Invite Code

    `; $('.invite-div').html(htmlDOM); } });