| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- (function ($, Drupal) {
- "use strict";
- var plugins = [];
- Drupal.openlayers.pluginManager = {
- attach: function (context, settings) {
- for (var i in plugins) {
- var plugin = plugins[i];
- if (typeof plugin.attach === 'function') {
- plugin.attach(context, settings);
- }
- }
- },
- detach: function (context, settings) {
- for (var i in plugins) {
- var plugin = plugins[i];
- if (typeof plugin.detach === 'function') {
- plugin.detach(context, settings);
- }
- }
- },
- alter: function () {
- // @todo: alter hook
- },
- getPlugin: function (factoryService) {
- if (this.isRegistered(factoryService)) {
- return plugins[factoryService];
- }
- return false;
- },
- getPlugins: function () {
- return Object.keys(plugins);
- },
- register: function (plugin) {
- if ((typeof plugin !== 'object') || (plugin === null)) {
- return false;
- }
- if (typeof plugin.init !== 'function') {
- return false;
- }
- if (!plugin.hasOwnProperty('fs')) {
- return false;
- }
- plugins[plugin.fs] = plugin;
- },
- createInstance: function (factoryService, data) {
- if (!this.isRegistered(factoryService)) {
- return false;
- }
- try {
- var obj = plugins[factoryService].init(data);
- } catch (e) {
- if (console !== undefined) {
- Drupal.openlayers.console.log(e.message);
- Drupal.openlayers.console.log(e.stack);
- }
- else {
- $(this).text('Error during map rendering: ' + e.message);
- $(this).text('Stack: ' + e.stack);
- }
- }
- var objType = typeof obj;
- if ((objType === 'object') && (objType !== null) || (objType === 'function')) {
- obj.mn = data.data.mn;
- return obj;
- }
- return false;
- },
- isRegistered: function (factoryService) {
- return (factoryService in plugins);
- }
- };
- }(jQuery, Drupal));
|