Blame view

sources/settings/js/apps.js 8.78 KB
03e52840d   Kload   Init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
  /**
   * 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 || {
  	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('span.score').html(app.score);
  		page.find('p.description').text(app.description);
  		page.find('img.preview').attr('src', app.preview);
  		if (app.preview && app.preview.length) {
  			page.find('img.preview').show();
  		} else {
  			page.find('img.preview').hide();
  		}
  		page.find('small.externalapp').attr('style', 'visibility:visible');
  		page.find('span.author').text(app.author);
03e52840d   Kload   Init
30

31b7f2792   Kload   Upgrade to ownclo...
31
32
33
34
35
36
37
38
39
40
  		// FIXME licenses of downloaded apps go into app.licence, licenses of not-downloaded apps into app.license
  		var appLicense = '';
  		if (typeof(app.licence) !== 'undefined') {
  			appLicense = app.licence;
  		} else if (typeof(app.license) !== 'undefined') {
  			appLicense = app.license;
  		}
  		page.find('span.licence').text(appLicense);
  
  		if (app.update !== false) {
03e52840d   Kload   Init
41
42
43
44
45
46
47
48
49
50
51
  			page.find('input.update').show();
  			page.find('input.update').data('appid', app.id);
  			page.find('input.update').attr('value',t('settings', 'Update to {appversion}', {appversion:app.update}));
  		} else {
  			page.find('input.update').hide();
  		}
  
  		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);
31b7f2792   Kload   Upgrade to ownclo...
52
  		if (app.internal === false) {
03e52840d   Kload   Init
53
54
55
56
57
58
59
60
  			page.find('span.score').show();
  			page.find('p.appslink').show();
  			page.find('a').attr('href', 'http://apps.owncloud.com/content/show.php?content=' + app.id);
  			page.find('small.externalapp').hide();
  		} else {
  			page.find('p.appslink').hide();
  			page.find('span.score').hide();
  		}
31b7f2792   Kload   Upgrade to ownclo...
61
62
63
64
65
66
  		if (typeof($('#leftcontent li[data-id="'+app.id+'"]').data('errormsg')) !== "undefined") {
  			page.find(".warning").show();
  			page.find(".warning").text($('#leftcontent li[data-id="'+app.id+'"]').data('errormsg'));
  		} else {
  			page.find(".warning").hide();
  		}
03e52840d   Kload   Init
67
68
69
70
  	},
  	enableApp:function(appid, active, element) {
  		console.log('enableApp:', appid, active, element);
  		var appitem=$('#leftcontent li[data-id="'+appid+'"]');
03e52840d   Kload   Init
71
72
73
  		element.val(t('settings','Please wait....'));
  		if(active) {
  			$.post(OC.filePath('settings','ajax','disableapp.php'),{appid:appid},function(result) {
31b7f2792   Kload   Upgrade to ownclo...
74
75
76
77
78
79
80
81
82
83
  				if(!result || result.status !== 'success') {
  					if (result.data && result.data.message) {
  						OC.Settings.Apps.showErrorMessage(result.data.message);
  						appitem.data('errormsg', result.data.message);
  					} else {
  						OC.Settings.Apps.showErrorMessage(t('settings', 'Error while disabling app'));
  						appitem.data('errormsg', t('settings', 'Error while disabling app'));
  					}
  					element.val(t('settings','Disable'));
  					appitem.addClass('appwarning');
03e52840d   Kload   Init
84
85
  				}
  				else {
31b7f2792   Kload   Upgrade to ownclo...
86
  					appitem.data('active',false);
03e52840d   Kload   Init
87
88
  					element.data('active',false);
  					OC.Settings.Apps.removeNavigation(appid);
31b7f2792   Kload   Upgrade to ownclo...
89
  					appitem.removeClass('active');
03e52840d   Kload   Init
90
91
92
  					element.val(t('settings','Enable'));
  				}
  			},'json');
03e52840d   Kload   Init
93
94
  		} else {
  			$.post(OC.filePath('settings','ajax','enableapp.php'),{appid:appid},function(result) {
31b7f2792   Kload   Upgrade to ownclo...
95
96
97
98
99
100
101
102
103
104
105
  				if(!result || result.status !== 'success') {
  					if (result.data && result.data.message) {
  						OC.Settings.Apps.showErrorMessage(result.data.message);
  						appitem.data('errormsg', result.data.message);
  					} else {
  						OC.Settings.Apps.showErrorMessage(t('settings', 'Error while enabling app'));
  						appitem.data('errormsg', t('settings', 'Error while disabling app'));
  					}
  					element.val(t('settings','Enable'));
  					appitem.addClass('appwarning');
  				} else {
03e52840d   Kload   Init
106
  					OC.Settings.Apps.addNavigation(appid);
31b7f2792   Kload   Upgrade to ownclo...
107
  					appitem.data('active',true);
03e52840d   Kload   Init
108
  					element.data('active',true);
31b7f2792   Kload   Upgrade to ownclo...
109
  					appitem.addClass('active');
03e52840d   Kload   Init
110
111
112
113
  					element.val(t('settings','Disable'));
  				}
  			},'json')
  			.fail(function() { 
31b7f2792   Kload   Upgrade to ownclo...
114
115
116
117
  				OC.Settings.Apps.showErrorMessage(t('settings', 'Error while enabling app'));
  				appitem.data('errormsg', t('settings', 'Error while enabling app'));
  				appitem.data('active',false);
  				appitem.addClass('appwarning');
03e52840d   Kload   Init
118
119
120
  				OC.Settings.Apps.removeNavigation(appid);
  				element.val(t('settings','Enable'));
  			});
03e52840d   Kload   Init
121
122
123
124
125
126
  		}
  	},
  	updateApp:function(appid, element) {
  		console.log('updateApp:', appid, element);
  		element.val(t('settings','Updating....'));
  		$.post(OC.filePath('settings','ajax','updateapp.php'),{appid:appid},function(result) {
31b7f2792   Kload   Upgrade to ownclo...
127
128
129
  			if(!result || result.status !== 'success') {
  				OC.Settings.Apps.showErrorMessage(t('settings','Error while updating app'),t('settings','Error'));
  				element.val(t('settings','Update'));
03e52840d   Kload   Init
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
  			}
  			else {
  				element.val(t('settings','Updated'));
  				element.hide();
  			}
  		},'json');
  	},
  
  	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;
  	},
  	removeNavigation: function(appid){
  		$.getJSON(OC.filePath('settings', 'ajax', 'navigationdetect.php'), {app: appid}).done(function(response){
  			if(response.status === 'success'){
  				var navIds=response.nav_ids;
  				for(var i=0; i< navIds.length; i++){
31b7f2792   Kload   Upgrade to ownclo...
163
  					$('#apps .wrapper').children('li[data-id="'+navIds[i]+'"]').remove();
03e52840d   Kload   Init
164
165
166
167
168
169
170
171
172
173
  				}
  			}
  		});
  	},
  	addNavigation: function(appid){
  		$.getJSON(OC.filePath('settings', 'ajax', 'navigationdetect.php'), {app: appid}).done(function(response){
  			if(response.status === 'success'){
  				var navEntries=response.nav_entries;
  				for(var i=0; i< navEntries.length; i++){
  					var entry = navEntries[i];
31b7f2792   Kload   Upgrade to ownclo...
174
  					var container = $('#apps .wrapper');
03e52840d   Kload   Init
175
176
177
178
179
180
181
182
183
184
185
  
  					if(container.children('li[data-id="'+entry.id+'"]').length === 0){
  						var li=$('<li></li>');
  						li.attr('data-id', entry.id);
  						var img= $('<img class="icon"/>').attr({ src: entry.icon});
  						var a=$('<a></a>').attr('href', entry.href);
  						var filename=$('<span></span>');
  						filename.text(entry.name);
  						a.prepend(filename);
  						a.prepend(img);
  						li.append(a);
31b7f2792   Kload   Upgrade to ownclo...
186
187
188
189
190
191
  						// append the new app as last item in the list (.push is from sticky footer)
  						$('#apps .wrapper .push').before(li);
  						// scroll the app navigation down so the newly added app is seen
  						$('#navigation').animate({ scrollTop: $('#navigation').height() }, 'slow');
  						// draw attention to the newly added app entry by flashing it twice
  						container.children('li[data-id="'+entry.id+'"]').animate({opacity:.3}).animate({opacity:1}).animate({opacity:.3}).animate({opacity:1});
03e52840d   Kload   Init
192
193
194
195
196
197
198
199
  						if (!SVGSupport() && entry.icon.match(/\.svg$/i)) {
  							$(img).addClass('svg');
  							replaceSVG();
  						}
  					}
  				}
  			}
  		});
31b7f2792   Kload   Upgrade to ownclo...
200
201
202
203
  	},
  	showErrorMessage: function(message) {
  		$('.appinfo .warning').show();
  		$('.appinfo .warning').text(message);
03e52840d   Kload   Init
204
205
206
207
208
209
210
211
212
213
  	}
  };
  
  $(document).ready(function(){
  	$('#leftcontent li').each(function(index,li){
  		var app = OC.get('appData_'+$(li).data('id'));
  		$(li).data('app',app);
  		$(this).find('span.hidden').remove();
  	});
  	$('#leftcontent li').keydown(function(event) {
31b7f2792   Kload   Upgrade to ownclo...
214
  		if (event.which === 13 || event.which === 32) {
03e52840d   Kload   Init
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
  			$(event.target).click();
  		}
  		return false;
  	});
  
  	$(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 appid=$(this).data('appid');
  		var active=$(this).data('active');
  		if(appid) {
  			OC.Settings.Apps.enableApp(appid, active, element);
  		}
  	});
  	$('#rightcontent input.update').click(function(){
  		var element = $(this);
  		var appid=$(this).data('appid');
  		if(appid) {
  			OC.Settings.Apps.updateApp(appid, element);
  		}
  	});
  
  	if(appid) {
  		var item = $('#leftcontent li[data-id="'+appid+'"]');
  		if(item) {
  			item.trigger('click');
  			item.addClass('active');
  			$('#leftcontent').animate({scrollTop: $(item).offset().top-70}, 'slow','swing');
  		}
  	}
  });