diff options
Diffstat (limited to 'settings/js/apps.js')
-rw-r--r-- | settings/js/apps.js | 161 |
1 files changed, 109 insertions, 52 deletions
diff --git a/settings/js/apps.js b/settings/js/apps.js index cfef894c6fb..cfddf4a48a1 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -1,13 +1,108 @@ /** * Copyright (c) 2011, Robin Appelman <icewind1991@gmail.com> + * Copyright (c) 2012, Thomas Tanghus <thomas@tanghus.net> * 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')); + } + }); + }, + loadApp:function(app) { + var page = $('#rightcontent'); + page.find('p.license').show(); + page.find('span.name').text(app.name); + page.find('small.externalapp').text(app.internallabel); + if (app.version) { + page.find('span.version').text(app.version); + } else { + page.find('span.version').text(''); + } + page.find('p.description').text(app.description); + page.find('img.preview').attr('src', app.preview); + page.find('small.externalapp').attr('style', 'visibility:visible'); + page.find('span.author').text(app.author); + page.find('span.licence').text(app.licence); + + page.find('input.enable').show(); + page.find('input.enable').val((app.active) ? t('settings', 'Disable') : t('settings', 'Enable')); + page.find('input.enable').data('appid', app.id); + page.find('input.enable').data('active', app.active); + if (app.internal == false) { + page.find('p.appslink').show(); + page.find('a').attr('href', 'http://apps.owncloud.com/content/show.php?content=' + app.id); + } else { + page.find('p.appslink').hide(); + } + }, + enableApp:function(appid, active, element) { + console.log('enableApp:', appid, active, element); + var appitem=$('#leftcontent li[data-id="'+appid+'"]'); + appData = appitem.data('app'); + appData.active = !active; + appitem.data('app', appData); + if(active) { + $.post(OC.filePath('settings','ajax','disableapp.php'),{appid:appid},function(result) { + if(!result || result.status!='success') { + OC.dialogs.alert('Error while disabling app','Error'); + } + else { + element.data('active',false); + element.val(t('settings','Enable')); + } + },'json'); + $('#leftcontent li[data-id="'+appid+'"]').removeClass('active'); + } else { + $.post(OC.filePath('settings','ajax','enableapp.php'),{appid:appid},function(result) { + if(!result || result.status!='success') { + OC.dialogs.alert('Error while enabling app','Error'); + } + else { + element.data('active',true); + element.val(t('settings','Disable')); + } + },'json'); + $('#leftcontent li[data-id="'+appid+'"]').addClass('active'); + } + }, + insertApp:function(appdata) { + var applist = $('#leftcontent li'); + var app = + $('<li data-id="' + appdata.id + '" data-type="external" data-installed="0">' + + '<a class="app externalapp" href="' + OC.filePath('settings', 'apps', 'index.php') + '&appid=' + appdata.id+'">' + + appdata.name+'</a><small class="externalapp list">3rd party</small></li>'); + 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,65 +110,25 @@ $(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); - $('#rightcontent span.version').text(app.version); - $('#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'); + OC.Settings.Apps.loadApp(app); } return false; }); $('#rightcontent input.enable').click(function(){ var element = $(this); - var app=$(this).data('appid'); + var appid=$(this).data('appid'); var active=$(this).data('active'); - if(app){ - if(active){ - $.post(OC.filePath('settings','ajax','disableapp.php'),{appid:app},function(result){ - if(!result || result.status!='success'){ - OC.dialogs.alert('Error while disabling app','Error'); - } - else { - element.data('active',false); - element.val(t('settings','Enable')); - var appData=$('#leftcontent li[data-id="'+app+'"]'); - appData.active=false; - } - },'json'); - $('#leftcontent li[data-id="'+app+'"]').removeClass('active'); - }else{ - $.post(OC.filePath('settings','ajax','enableapp.php'),{appid:app},function(result){ - if(!result || result.status!='success'){ - OC.dialogs.alert('Error while enabling app','Error'); - } - else { - element.data('active',true); - element.val(t('settings','Disable')); - var appData=$('#leftcontent li[data-id="'+app+'"]'); - appData.active=true; - } - },'json'); - $('#leftcontent li[data-id="'+app+'"]').addClass('active'); - } + if(appid) { + OC.Settings.Apps.enableApp(appid, active, element); } }); - + if(appid) { var item = $('#leftcontent li[data-id="'+appid+'"]'); if(item) { @@ -82,4 +137,6 @@ $(document).ready(function(){ $('#leftcontent').animate({scrollTop: $(item).offset().top-70}, 'slow','swing'); } } + + OC.Settings.Apps.loadOCS(); }); |