From 24af2e8078147578bd435983c1d9a11f13dae8c1 Mon Sep 17 00:00:00 2001 From: Thomas Tanghus Date: Sat, 4 Aug 2012 20:12:18 +0200 Subject: Load OCS apps in an ajax call to avoid blocking the WUI. --- settings/js/apps.js | 99 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 72 insertions(+), 27 deletions(-) (limited to 'settings/js') diff --git a/settings/js/apps.js b/settings/js/apps.js index 7b608956ed3..3f6ff66c6dd 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -1,13 +1,51 @@ /** * Copyright (c) 2011, Robin Appelman + * Copyright (c) 2012, Thomas Tanghus * This file is licensed under the Affero General Public License version 3 or later. * See the COPYING-README file. */ +OC.Settings = OC.Settings || {}; +OC.Settings.Apps = OC.Settings.Apps || { + loadOCS:function() { + $.getJSON(OC.filePath('settings', 'ajax', 'apps/ocs.php'), function(jsondata) { + if(jsondata.status == 'success'){ + var apps = jsondata.data; + $.each(apps, function(b, appdata) { + OC.Settings.Apps.insertApp(appdata); + }); + } else { + OC.dialogs.alert(jsondata.data.message, t('core', 'Error')); + } + }); + }, + insertApp:function(appdata) { + var applist = $('#leftcontent li'); + var app = + $('
  • ' + + '' + + appdata.name+'3rd party
  • '); + app.data('app', appdata); + var added = false; + applist.each(function() { + if(!parseInt($(this).data('installed')) && $(this).find('a').text().toLowerCase() > appdata.name.toLowerCase()) { + $(this).before(app); + added = true; + return false; // dang, remember this to get out of loop + } + }); + if(!added) { + applist.last().after(app); + } + return app; + } +} + $(document).ready(function(){ $('#leftcontent li').each(function(index,li){ - var app=$.parseJSON($(this).children('span').text()); + var app = $.parseJSON($(this).children('span').text()); $(li).data('app',app); + $(this).find('span.hidden').remove(); }); $('#leftcontent li').keydown(function(event) { if (event.which == 13 || event.which == 32) { @@ -15,31 +53,36 @@ $(document).ready(function(){ } return false; }); - $('#leftcontent li').click(function(){ - var app=$(this).data('app'); - $('#rightcontent p.license').show(); - $('#rightcontent span.name').text(app.name); - $('#rightcontent small.externalapp').text(app.internallabel); - if (app.version) { - $('#rightcontent span.version').text(app.version); - } else { - $('#rightcontent span.version').text(''); - } - $('#rightcontent p.description').text(app.description); - $('#rightcontent img.preview').attr('src',app.preview); - $('#rightcontent small.externalapp').attr('style','visibility:visible'); - $('#rightcontent span.author').text(app.author); - $('#rightcontent span.licence').text(app.licence); - - $('#rightcontent input.enable').show(); - $('#rightcontent input.enable').val((app.active)?t('settings','Disable'):t('settings','Enable')); - $('#rightcontent input.enable').data('appid',app.id); - $('#rightcontent input.enable').data('active',app.active); - if ( app.internal == false ) { - $('#rightcontent p.appslink').show(); - $('#rightcontent a').attr('href','http://apps.owncloud.com/content/show.php?content='+app.id); - } else { - $('#rightcontent p.appslink').hide(); + + $(document).on('click', '#leftcontent', function(event){ + var tgt = $(event.target); + if (tgt.is('li') || tgt.is('a')) { + var item = tgt.is('li') ? $(tgt) : $(tgt).parent(); + var app = item.data('app'); + $('#rightcontent p.license').show(); + $('#rightcontent span.name').text(app.name); + $('#rightcontent small.externalapp').text(app.internallabel); + if (app.version) { + $('#rightcontent span.version').text(app.version); + } else { + $('#rightcontent span.version').text(''); + } + $('#rightcontent p.description').text(app.description); + $('#rightcontent img.preview').attr('src',app.preview); + $('#rightcontent small.externalapp').attr('style','visibility:visible'); + $('#rightcontent span.author').text(app.author); + $('#rightcontent span.licence').text(app.licence); + + $('#rightcontent input.enable').show(); + $('#rightcontent input.enable').val((app.active)?t('settings','Disable'):t('settings','Enable')); + $('#rightcontent input.enable').data('appid',app.id); + $('#rightcontent input.enable').data('active',app.active); + if ( app.internal == false ) { + $('#rightcontent p.appslink').show(); + $('#rightcontent a').attr('href','http://apps.owncloud.com/content/show.php?content='+app.id); + } else { + $('#rightcontent p.appslink').hide(); + } } return false; }); @@ -77,7 +120,7 @@ $(document).ready(function(){ } } }); - + if(appid) { var item = $('#leftcontent li[data-id="'+appid+'"]'); if(item) { @@ -86,4 +129,6 @@ $(document).ready(function(){ $('#leftcontent').animate({scrollTop: $(item).offset().top-70}, 'slow','swing'); } } + + OC.Settings.Apps.loadOCS(); }); -- cgit v1.2.3