From 606d2839aff19da1593c5cab4297342398b626aa Mon Sep 17 00:00:00 2001 From: RaNaN Date: Sun, 24 Nov 2013 22:01:21 +0100 Subject: render addon menu for packages --- pyload/web/app/scripts/models/AddonHandler.js | 55 +++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 pyload/web/app/scripts/models/AddonHandler.js (limited to 'pyload/web/app/scripts/models/AddonHandler.js') diff --git a/pyload/web/app/scripts/models/AddonHandler.js b/pyload/web/app/scripts/models/AddonHandler.js new file mode 100644 index 000000000..8a138b45d --- /dev/null +++ b/pyload/web/app/scripts/models/AddonHandler.js @@ -0,0 +1,55 @@ +define(['jquery', 'backbone', 'underscore', 'app', 'utils/apitypes'], + function($, Backbone, _, App, Api) { + 'use strict'; + + return Backbone.Model.extend({ + + // cache results for 1 min + CACHE: 60 * 1000, + + defaults: { + timestamp: 0, + // dict with all addon handlers + data: null + }, + + fetch: function(options) { + return Backbone.Model.prototype.fetch.call(this, + App.apiRequest('getAddonHandler', null, options)); + }, + + parse: function(resp) { + this.set('timestamp', new Date().getTime()); + return {data: resp}; + }, + + // available addon handler for package or media types + // async when callback is set + getForType: function(pack, media, callback) { + var self = this; + + if (callback && (!this.has('data') || this.get('timestamp') + this.CACHE < new Date().getTime())) { + this.fetch({success: function() { + callback(self.getForType(pack, media)); + }}); + return; + } + + var addons = this.get('data'); + + // TODO: filter accordingly + + if (_.isFunction(callback)) { + callback(addons); + } + else { + return addons; + } + }, + + // dispatches call to the plugin + invoke: function(plugin, func, args, success) { + console.log(plugin, func, args); + } + }); + }); \ No newline at end of file -- cgit v1.2.3