$(document).ready(function () { $('body').addClass('module-appstore'); var appstore = { storage: {} }; appstore.search = $('#appstore-search'); appstore.categoryPage = $('.category-page'); appstore.categoryBlock = $('.appstore-categories'); appstore.popularBlock = $('.popular'); appstore.categoryBack = $('.category-page-back'); appstore.tabs = $('span.appstore-tab'); appstore.activePhrase = ''; appstore.activeCategory = ''; if($('#modulesJson').length > 0) { appstore.storage.apps = JSON.parse($('#modulesJson').html()); } appstore.tabs.on("click touch", function () { var self = $(this); appstore.tabs.removeClass('appstore-tab-active'); self.addClass('appstore-tab-active'); appTypeVisibility(self.data("filter")); }); appstore.categoryBack.on("click touch", function () { window.history.back(); }); if(appstore.categoryPage.length > 0){ $('#appstore .popular').hide(); } /** * * @param {String} filter */ function appTypeVisibility(filter){ var overview = $('#appstore .overview'), popularApps = overview.find('.popular'), availableApps = overview.find('.available-apps') if(filter === 'installed'){ popularApps.hide(); availableApps.hide(); } if(filter === 'all'){ popularApps.show(); if(availableApps.children().length > 0){ availableApps.show(); } } if(appstore.categoryPage.length > 0){ popularApps.hide(); } } // Testversion anfragen $('.testversion').on('click', function (e) { e.preventDefault(); var hash = $(this).data('hash'); if (typeof hash == 'undefined') { var $modulediv = $(this).parents('div.module').first(); hash = typeof $modulediv[0].id != 'undefined' ? $modulediv[0].id : $modulediv.id; } getanfrage(hash); }); // Suchen beim Tippen im Suchfeld appstore.search.on('keyup', function () { appstore.activePhrase = $(this).val() searchAppsByPhrase(appstore.activePhrase, appstore.activeCategory, appstore.categoryBlock, appstore.popularBlock); }); /** * Dropdown-Button */ $('.dropdown').each(function () { var $container = $(this); var $link = $container.children('a.dropdown-link'); var $sublinks = $container.find('a.dropdown-sublink'); var $caret = $link.children('.caret'); // Dropdown öffen/schließen $caret.on('click', function (e) { e.preventDefault(); $container.toggleClass('open'); }); // Dropdown schließen, wenn Fokus verloren geht $link.on('focusout', function () { setTimeout(function () { $container.removeClass('open'); }, 300); }); // Bei Button-Click: Dropdown öffnen, wenn Linkziel '#' ist; ansonsten Link folgen $link.on('click', function (e) { var linkTarget = $(this).attr('href'); if (linkTarget === '#') { $container.addClass('open'); e.preventDefault(); } }); // Dropdown-Links öffnen für iOs-Geräte $sublinks.on('touchend', function (e) { e.preventDefault(); var linkTarget = $(this).attr('href'); if (linkTarget !== '#') { window.open(linkTarget); } setTimeout(function () { $container.removeClass('open'); }, 300); }); }); $('#anfragepopup').dialog( { modal: true, autoOpen: false, minWidth: 940, title: 'Testmodul anfragen', buttons: { 'Testmodul anfragen': function () { if (!confirmAppTest(false)) { confirmAppTest(true); } }, 'Abbrechen': function () { $(this).dialog('close'); } }, close: function (event, ui) { } } ); $('#anfrageokpopup').dialog( { modal: true, autoOpen: false, minWidth: 940, title: 'Testmodul anfragen', buttons: { OK: function () { $(this).dialog('close'); } }, close: function (event, ui) { } } ); $('a.activate').on('click', function (e) { e.preventDefault(); $.ajax({ url: 'index.php?module=appstore&action=list&cmd=' + ($(this).hasClass('deactivate') ? 'deactivate' : 'activate'), type: 'POST', dataType: 'json', data: { module: $(this).data('module') } }).done(function (data) { if (typeof data.status != 'undefined' && data.status == 1 && typeof data.module != 'undefined') { var $moda = $('*').find('[data-module=\'' + data.module + '\']'); if ($moda.length) { $($moda).toggleClass('activate'); $($moda).toggleClass('deactivate'); if ($($moda).hasClass('deactivate')) { $($moda).html('Deaktivieren'); $($moda).parents('div.dropdown').first().find('a.dropdown-link').first().toggleClass( 'deactivated', false); $($moda).parents('div.dropdown').first().find('a.dropdown-link').first().toggleClass( 'activated', true); } else { $($moda).html('Aktivieren'); $($moda).parents('div.dropdown').first().find('a.dropdown-link').first().toggleClass( 'deactivated', true); $($moda).parents('div.dropdown').first().find('a.dropdown-link').first().toggleClass( 'activated', false); } } } else if (typeof data.error != 'undefined') { alert($data.error); } }); }); $('a.deactivate').on('click', function (e) { e.preventDefault(); $.ajax({ url: 'index.php?module=appstore&action=list&cmd=' + ($(this).hasClass('deactivate') ? 'deactivate' : 'activate'), type: 'POST', dataType: 'json', data: { module: $(this).data('module') } }).done(function (data) { if (typeof data.status != 'undefined' && data.status == 1 && typeof data.module != 'undefined') { var $moda = $('*').find('[data-module=\'' + data.module + '\']'); if ($moda.length) { $($moda).toggleClass('activate'); $($moda).toggleClass('deactivate'); if ($($moda).hasClass('deactivate')) { $($moda).html('Deaktivieren'); $($moda).parents('div.dropdown').first().find('a.dropdown-link').first().toggleClass( 'deactivated', false); $($moda).parents('div.dropdown').first().find('a.dropdown-link').first().toggleClass( 'activated', true); } else { $($moda).html('Aktivieren'); $($moda).parents('div.dropdown').first().find('a.dropdown-link').first().toggleClass( 'deactivated', true); $($moda).parents('div.dropdown').first().find('a.dropdown-link').first().toggleClass( 'activated', false); } } } else if (typeof data.error != 'undefined') { alert($data.error); } }); }); }); function confirmAppTest(showError) { var ok = false; $.ajax({ url: 'index.php?module=appstore&action=list', type: 'POST', dataType: 'json', async: false, data: {modulbestaetigen: $('#anfragemd5').val(), testen: 1}, success: function (data) { if (typeof data.html != 'undefined' && data.html != '') { $('#anfragepopup').dialog('close'); $('#anfragemd5').val(''); $('#anfrageokpopup').dialog('open'); $('#anfrageoknachricht').html(data.html); ok = true; } else { if (showError) { $('#anfragepopup').dialog('close'); $('#anfragemd5').val(''); $('#anfrageokpopup').dialog('open'); $('#anfrageoknachricht').html( '
Es ist ein Fehler bei der Anfrage aufgetreten.
' ); } } }, beforeSend: function () { } }); return ok; } function getanfrage(anfragemd5) { $('#anfragemd5').val(anfragemd5); $('#anfragepopup').dialog('open'); } /** * * @param {String} phrase * @param {String} category * @param {jQuery} categoryBlock * @param {jQuery} popularBlock */ function searchAppsByPhrase(phrase, category, categoryBlock, popularBlock) { $.ajax({ url: 'index.php?module=appstore&action=list&cmd=suche', type: 'POST', dataType: 'json', data: { val: phrase, category: category } }) .done(function (data) { if (typeof data === 'undefined' || data === null) { return; } if (typeof data.ausblenden !== 'undefined' && data.ausblenden !== null) { $.each(data.ausblenden, function (k, v) { if (k != '') { $('#' + k).hide(); } }); } if (typeof data.anzeigen !== 'undefined' && data.anzeigen !== null) { $.each(data.anzeigen, function (k, v) { if (k != '') { $('#' + k).show(); } }); } if (typeof data.katausblenden !== 'undefined' && data.katausblenden !== null) { $.each(data.katausblenden, function (k, v) { if (k != '') { $('#' + k).hide(); } }); } if (typeof data.kateinblenden !== 'undefined' && data.kateinblenden !== null) { $.each(data.kateinblenden, function (k, v) { if (k != '') { $('#' + k).show(); } }); } // Meldung anzeigen wenn keine Module gefunden wurden if (typeof data.installiertgefunden !== 'undefined' && data.installiertgefunden !== null) { if (parseInt(data.installiertgefunden) === 0) { $('.purchases').hide(); } else { $('.purchases').show(); } } // "Käufe" ein-/ausblenden if (typeof data.kaufbargefunden !== 'undefined' && data.kaufbargefunden !== null) { if (parseInt(data.kaufbargefunden) === 0) { $('#no-apps-found').show(); } else { $('#no-apps-found').hide(); } } if(phrase.length > 0){ categoryBlock.hide(); categoryBlock.prev('h2').hide(); popularBlock.hide(); } else { categoryBlock.show(); categoryBlock.prev('h2').show(); popularBlock.show(); } }); }