mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
First separation commit.
Added LICENSE, README.md, CONTRIBUTORS.md
This commit is contained in:
parent
09513af31b
commit
4678528d00
657 changed files with 422 additions and 0 deletions
63
src/bower_components/emby-webcomponents/pluginmanager.js
vendored
Normal file
63
src/bower_components/emby-webcomponents/pluginmanager.js
vendored
Normal file
|
@ -0,0 +1,63 @@
|
|||
define(["events"], function(events) {
|
||||
"use strict";
|
||||
|
||||
function loadStrings(plugin, globalize) {
|
||||
var strings = plugin.getTranslations ? plugin.getTranslations() : [];
|
||||
return globalize.loadStrings({
|
||||
name: plugin.id || plugin.packageName,
|
||||
strings: strings
|
||||
})
|
||||
}
|
||||
|
||||
function definePluginRoute(pluginManager, route, plugin) {
|
||||
route.contentPath = pluginManager.mapPath(plugin, route.path), route.path = pluginManager.mapRoute(plugin, route), Emby.App.defineRoute(route, plugin.id)
|
||||
}
|
||||
|
||||
function PluginManager() {
|
||||
this.pluginsList = []
|
||||
}
|
||||
var cacheParam = (new Date).getTime();
|
||||
return PluginManager.prototype.loadPlugin = function(url) {
|
||||
console.log("Loading plugin: " + url);
|
||||
var instance = this;
|
||||
return new Promise(function(resolve, reject) {
|
||||
require([url, "globalize", "appRouter"], function(pluginFactory, globalize, appRouter) {
|
||||
var plugin = new pluginFactory;
|
||||
if (instance.pluginsList.filter(function(p) {
|
||||
return p.id === plugin.id
|
||||
})[0]) return void resolve(url);
|
||||
plugin.installUrl = url;
|
||||
var urlLower = url.toLowerCase(); - 1 === urlLower.indexOf("http:") && -1 === urlLower.indexOf("https:") && -1 === urlLower.indexOf("file:") && 0 !== url.indexOf(appRouter.baseUrl()) && (url = appRouter.baseUrl() + "/" + url);
|
||||
var separatorIndex = Math.max(url.lastIndexOf("/"), url.lastIndexOf("\\"));
|
||||
plugin.baseUrl = url.substring(0, separatorIndex);
|
||||
var paths = {};
|
||||
paths[plugin.id] = plugin.baseUrl, requirejs.config({
|
||||
waitSeconds: 0,
|
||||
paths: paths
|
||||
}), instance.register(plugin), plugin.getRoutes && plugin.getRoutes().forEach(function(route) {
|
||||
definePluginRoute(instance, route, plugin)
|
||||
}), "skin" === plugin.type ? resolve(plugin) : loadStrings(plugin, globalize).then(function() {
|
||||
resolve(plugin)
|
||||
}, reject)
|
||||
})
|
||||
})
|
||||
}, PluginManager.prototype.register = function(obj) {
|
||||
this.pluginsList.push(obj), events.trigger(this, "registered", [obj])
|
||||
}, PluginManager.prototype.ofType = function(type) {
|
||||
return this.pluginsList.filter(function(o) {
|
||||
return o.type === type
|
||||
})
|
||||
}, PluginManager.prototype.plugins = function() {
|
||||
return this.pluginsList
|
||||
}, PluginManager.prototype.mapRoute = function(plugin, route) {
|
||||
return "string" == typeof plugin && (plugin = this.pluginsList.filter(function(p) {
|
||||
return (p.id || p.packageName) === plugin
|
||||
})[0]), route = route.path || route, 0 === route.toLowerCase().indexOf("http") ? route : "/plugins/" + plugin.id + "/" + route
|
||||
}, PluginManager.prototype.mapPath = function(plugin, path, addCacheParam) {
|
||||
"string" == typeof plugin && (plugin = this.pluginsList.filter(function(p) {
|
||||
return (p.id || p.packageName) === plugin
|
||||
})[0]);
|
||||
var url = plugin.baseUrl + "/" + path;
|
||||
return addCacheParam && (url += -1 === url.indexOf("?") ? "?" : "&", url += "v=" + cacheParam), url
|
||||
}, new PluginManager
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue