/* TEST SHIT */
// Create language switcher instance
var lang = new Lang();
//lang.dynamic(language(moment.locale(navigator.languages[0])), 'js/langpack/'+language(moment.locale(navigator.languages[0]))+'.json');
lang.dynamic('th', 'js/langpack/th.json');
lang.dynamic('de', 'js/langpack/de.json');
lang.dynamic('nb', 'js/langpack/nb.json');
lang.init({
defaultLang: 'en',
currentLang: language(moment.locale(navigator.languages[0])),
cookie: {
name: 'organizrLanguage',
expiry: 365,
path: '/'
},
allowCookieOverride: true
});
// Start Organizr
launch();
/* NORMAL FUNCTIONS */
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function timerIncrement() {
idleTime = idleTime + 1;
if (idleTime > 19) { // 20 minutes
//window.location.reload();
}
//check for cookieExpiry
if(hasCookie){
if(getCookie('organizrToken')){
//do nothing
}else{
location.reload();
};
}
}
function ajaxloader(element=null, action='out'){
var loader = `
`;
switch (action) {
case 'in':
case 'fadein':
$(loader).appendTo(element);
break;
case 'out':
case 'fadeout':
$('.ajaxloader').remove();
break;
default:
}
}
function getDefault(tabName,tabType){
if(getHash() === false){
if(tabName !== null && tabType !== null){
switchTab(tabName,tabType);
}else{
$('#side-menu').children().first().children().click()
}
}else{
var hashTab = getHash();
var hashType = getTabType(hashTab);
if (typeof hashTab !== 'undefined' && typeof hashType !== 'undefined') {
switchTab(hashTab,hashType);
}else{
console.warn("Tab Function: "+hashTab+" is not a defined tab");
}
}
}
function getTabType(tabName){
var tabType = $('#menu-'+tabName);
if (typeof tabType !== 'undefined') {
return tabType.attr('type');
}else{
return false;
}
}
function getHash(){
if ($(location).attr('hash')){
return $(location).attr('hash').substr(1);
}
return false;
}
function setHash(hash){
window.location.hash = '#'+hash;
}
function getQueryVariable(variable){
var query = window.location.search.substring(1);
console.log(query);
var vars = query.split("&");
console.log(vars);
for (var i=0;i';
}else{
return '';
}
}else{
return '';
}
}
function cleanClass(string){
return string.replace(/ +/g, "-").replace(/\W+/g, "-");
}
function noTabs(arrayItems){
if (arrayItems.data.user.loggedin === true) {
organizrConnect('api/?v1/no_tabs').success(function(data) {
var json = JSON.parse(data);
console.log("Organizr Function: No Tabs Available");
$(json.data).appendTo($('.organizr-area'));
}).fail(function(xhr) {
console.error("Organizr Function: API Connection Failed");
});
}else {
buildLogin();
}
}
function logout(){
message('',' Goodbye!','bottom-right','#FFF','success','10000')
organizrAPI('GET','api/?v1/logout').success(function(data) {
var html = JSON.parse(data);
if(html.data == true){
location.reload();
}else{
$.toast().reset('all');
message('Logout Error',' An Error Occured','bottom-right','#FFF','warning','10000');
console.error('Organizr Function: Logout failed');
}
}).fail(function(xhr) {
console.error("Organizr Function: Logout Failed");
});
}
function reloadOrganizr(){
location.reload();
}
function hideFrames(){
$(".iFrame-listing div[class^='frame-container']").addClass("hidden").removeClass('show');
}
function closeSideMenu(){
$('.fix-header').removeClass('show-sidebar');
}
function removeMenuActive(){
$("#side-menu a").removeClass('active');
}
function swapDisplay(type){
switch (type) {
case 'internal':
$('.iFrame-listing').addClass('hidden').removeClass('show');
$('.internal-listing').addClass('show').removeClass('hidden');
$('.login-area').addClass('hidden').removeClass('show');
break;
case 'iframe':
$('.iFrame-listing').addClass('show').removeClass('hidden');
$('.internal-listing').addClass('hidden').removeClass('show');
$('.login-area').addClass('hidden').removeClass('show');
break;
case 'login':
$('.iFrame-listing').addClass('hidden').removeClass('show');
$('.internal-listing').addClass('hidden').removeClass('show');
$('.login-area').addClass('show').removeClass('hidden');
break;
default:
}
}
function toggleParentActive(tab){
var childTab = $('#menu-'+tab);
if(childTab.parent().hasClass('nav-second-level')){
if(!childTab.parent().hasClass('in')){
childTab.parent().addClass('collapse in');
childTab.parent().parent().addClass('active');
}
}
}
function switchTab(tab, type){
hideFrames();
closeSideMenu();
removeMenuActive();
toggleParentActive(tab);
switch (type) {
case 0:
case '0':
case 'internal':
swapDisplay('internal');
$('#menu-'+cleanClass(tab)).find('a').addClass("active");
var newTab = $('#internal-'+tab);
var tabURL = newTab.attr('data-url');
if(newTab.hasClass('loaded')){
console.log('Tab Function: Switching to tab: '+tab);
newTab.addClass("show").removeClass('hidden');
}else{
$("#preloader").fadeIn();
console.log('Tab Function: Loading new tab for: '+tab);
newTab.addClass("show loaded").removeClass('hidden');
loadInternal(tabURL,cleanClass(tab));
$("#preloader").fadeOut();
}
break;
case 1:
case '1':
case 'iframe':
swapDisplay('iframe');
var newTab = $('#container-'+tab);
var tabURL = newTab.attr('data-url');
$('#menu-'+cleanClass(tab)).find('a').addClass("active");
if(newTab.hasClass('loaded')){
console.log('Tab Function: Switching to tab: '+tab);
newTab.addClass("show").removeClass('hidden');
}else{
$("#preloader").fadeIn();
console.log('Tab Function: Loading new tab for: '+tab);
newTab.addClass("show loaded").removeClass('hidden');
$(buildFrame(tab,tabURL)).appendTo(newTab);
$("#preloader").fadeOut();
}
break;
case 2:
case 3:
case '2':
case '3':
case '_blank':
case 'popout':
popTab(cleanClass(tab), type);
break;
default:
console.error('Tab Function: Action not set');
}
setHash(tab);
}
function popTab(tab, type){
switch (type) {
case 0:
case '0':
case 'internal':
console.warn('Tab Function: New window not supported for tab: '+tab);
break;
case 1:
case '1':
case 'iframe':
case 2:
case 3:
case '2':
case '3':
case '_blank':
case 'popout':
console.log('Tab Function: Creating New Window for tab: '+tab);
var url = $('#container-'+cleanClass(tab)).attr('data-url');
window.open(url, '_blank');
break;
default:
console.error('Tab Function: Action not set');
}
}
function closeTab(tab, type){
}
function reloadTab(tab, type){
$("#preloader").fadeIn();
console.log('Tab Function: Reloading tab: '+tab);
switch (type) {
case 0:
case '0':
case 'internal':
break;
case 1:
case '1':
case 'iframe':
$('#frame-'+cleanClass(tab)).attr('src', $('#frame-'+cleanClass(tab)).attr('src'));
break;
case 2:
case 3:
case '2':
case '3':
case '_blank':
case 'popout':
break;
default:
console.error('Tab Function: Action not set');
}
$("#preloader").fadeOut();
}
function reloadCurrentTab(){
$("#preloader").fadeIn();
console.log('Tab Function: Reloading Current tab');
var iframe = $('.iFrame-listing').find('.show');
var internal = $('.internal-listing').find('.show');
if(iframe.length > 0){
var type = 'iframe';
}else if(internal.length > 0){
var type = 'internal';
}else{
var type = 'not set';
}
switch (type) {
case 0:
case '0':
case 'internal':
var activeInternal = $('.internal-listing').find('.show');
$(activeInternal).html('');
loadInternal(activeInternal.attr('data-url'),activeInternal.attr('data-name'));
break;
case 1:
case '1':
case 'iframe':
var activeFrame = $('.iFrame-listing').find('.show').children('iframe');
activeFrame.attr('src', activeFrame.attr('src'));
break;
case 2:
case 3:
case '2':
case '3':
case '_blank':
case 'popout':
break;
default:
console.error('Tab Function: Action not set');
}
$("#preloader").fadeOut();
}
function loadNextTab(){
var next = $('.iFrame-listing').find('.loaded').attr('data-name');
if (typeof next !== 'undefined') {
var type = $('.iFrame-listing').find('.loaded').attr('data-type');
switchTab(next,type);
}else{
console.log("Tab Function: No Available Tab to open");
}
}
function closeCurrentTab(){
var iframe = $('.iFrame-listing').find('.show');
var internal = $('.internal-listing').find('.show');
if(iframe.length > 0){
var type = 'iframe';
}else if(internal.length > 0){
var type = 'internal';
}else{
var type = 'not set';
}
switch (type) {
case 0:
case '0':
case 'internal':
var tab = $('.internal-listing').find('.show').attr('data-name');
console.log('Tab Function: Closing tab: '+tab);
$('#internal-'+cleanClass(tab)).html('');
$('#internal-'+cleanClass(tab)).removeClass("loaded show");
$('#menu-'+cleanClass(tab)).removeClass("active");
loadNextTab();
break;
case 1:
case '1':
case 'iframe':
var tab = $('.iFrame-listing').find('.show').children('iframe').attr('data-name');
console.log('Tab Function: Closing tab: '+tab);
$('#menu-'+cleanClass(tab)).removeClass("active");
$('#container-'+cleanClass(tab)).removeClass("loaded show");
$('#frame-'+cleanClass(tab)).remove();
loadNextTab();
break;
case 2:
case 3:
case '2':
case '3':
case '_blank':
case 'popout':
break;
default:
console.error('Tab Function: Action not set');
}
}
function message(heading,text,position,color,icon,timeout){
$.toast({
heading: heading,
text: text,
position: position,
loaderBg: color,
icon: icon,
hideAfter: timeout,
stack: 6,
showHideTransition: 'slide',
});
}
function messageSingle(heading,text,position,color,icon,timeout){
$.toast({
heading: heading,
text: text,
position: position,
loaderBg: color,
icon: icon,
hideAfter: timeout,
stack: 1,
showHideTransition: 'slide',
});
}
function tabActions(event,name, type){
if(event.ctrlKey){
popTab(cleanClass(name), type);
}else if(event.altKey){
console.log('alt key');
}else if(event.shiftKey){
reloadTab(cleanClass(name), type);
}else{
switchTab(cleanClass(name), type);
}
}
function reverseObject(object) {
var newObject = {};
var keys = [];
for (var key in object) {
keys.push(key);
}
for (var i = keys.length - 1; i >= 0; i--) {
var value = object[keys[i]];
newObject[keys[i]]= value;
}
return newObject;
}
function hasValue(test){
if(Array.isArray(test) && test[0] !== ''){
return true;
}else{
return false;
}
return false;
}
/* END NORMAL FUNCTIONS */
/* BUILD FUNCTIONS */
/* END BUILD FUNCTIONS */
/* ORGANIZR API FUNCTIONS */
function buildFormItem(item){
var placeholder = (item.placeholder) ? ' placeholder="'+item.placeholder+'"' : '';
var id = (item.id) ? ' id="'+item.placeholder+'"' : '';
var value = (item.value) ? ' value="'+item.value+'"' : '';
var name = (item.name) ? ' name="'+item.name+'"' : '';
var extraClass = (item.class) ? ' '+item.class : '';
var disabled = (item.disabled) ? ' disabled' : '';
//+tof(item.value,'c')+`
switch (item.type) {
case 'input':
return '';
break;
case 'switch':
case 'checkbox':
return '';
break;
default:
return false;
}
}
function buildCustomizeAppearanceItem(array){
if (Array.isArray(array.config)) {
var preRowConfig = `
';
}
return customizeItems;
}
function buildImageManagerViewItem(array){
var imageListing = '';
if (Array.isArray(array)) {
$.each(array, function(i,v) {
var filepath = v.split("/");
var name = filepath[3].split(".");
imageListing += `
`+name[0]+`
`;
});
}
return imageListing;
}
function buildImageManagerView(){
ajaxloader(".content-wrap","in");
organizrAPI('GET','api/?v1/image/list').success(function(data) {
var response = JSON.parse(data);
$('#settings-image-manager-list').html(buildImageManagerViewItem(response.data));
;
}).fail(function(xhr) {
console.error("Organizr Function: API Connection Failed");
});
ajaxloader();
}
function buildCustomizeAppearance(){
ajaxloader(".content-wrap","in");
organizrAPI('GET','api/?v1/customize/appearance').success(function(data) {
var response = JSON.parse(data);
$('#customize-appearance-form').html(buildCustomizeAppearanceItem(response.data));
;
}).fail(function(xhr) {
console.error("Organizr Function: API Connection Failed");
});
ajaxloader();
}
function buildUserManagement(){
ajaxloader(".content-wrap","in");
organizrAPI('GET','api/?v1/user/list').success(function(data) {
var response = JSON.parse(data);
$('#manageUserTable').html(buildUserManagementItem(response.data));
}).fail(function(xhr) {
console.error("Organizr Function: API Connection Failed");
});
ajaxloader();
}
function buildGroupManagement(){
ajaxloader(".content-wrap","in");
organizrAPI('GET','api/?v1/user/list').success(function(data) {
var response = JSON.parse(data);
$('#manageGroupTable').html(buildGroupManagementItem(response.data));
}).fail(function(xhr) {
console.error("Organizr Function: API Connection Failed");
});
ajaxloader();
}
function buildTabEditor(){
ajaxloader(".content-wrap","in");
organizrAPI('GET','api/?v1/tab/list').success(function(data) {
var response = JSON.parse(data);
$('#tabEditorTable').html(buildTabEditorItem(response.data));
}).fail(function(xhr) {
console.error("Organizr Function: API Connection Failed");
});
ajaxloader();
}
function buildCategoryEditor(){
ajaxloader(".content-wrap","in");
organizrAPI('GET','api/?v1/tab/list').success(function(data) {
var response = JSON.parse(data);
$('#categoryEditorTable').html(buildCategoryEditorItem(response.data));
}).fail(function(xhr) {
console.error("Organizr Function: API Connection Failed");
});
ajaxloader();
}
function settingsAPI(post, callbacks=null){
ajaxloader(".content-wrap","in");
organizrAPI('POST',post.api,post).success(function(data) {
var response = JSON.parse(data);
console.log(response);
message(post.messageTitle,post.messageBody,"bottom-right","#FFF","success","5000");
if(callbacks){ callbacks.fire(); console.log('fired'); }
}).fail(function(xhr) {
console.error(post.error);
});
ajaxloader();
}
/* END ORGANIZR API FUNCTIONS */
function buildLanguage(replace=false,newLang=null){
var languages = {
'en':{
'lang':'English',
'image':'plugins/images/languages/en.png'
},
'de':{
'lang':'Deutsch',
'image':'plugins/images/languages/de.png'
},
'nb':{
'lang':'Bokmål',
'image':'plugins/images/languages/nb.png'
}
};
var languageItems = '';
var currentLanguage = (getCookie('organizrLanguage')) ? getCookie('organizrLanguage') : window.lang.currentLang;
$.each(languages, function(i,v) {
var active = (i == currentLanguage) ? '' : '';
languageItems += `