openlayers.pluginManager.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. (function ($, Drupal) {
  2. "use strict";
  3. var plugins = [];
  4. Drupal.openlayers.pluginManager = {
  5. attach: function (context, settings) {
  6. for (var i in plugins) {
  7. var plugin = plugins[i];
  8. if (typeof plugin.attach === 'function') {
  9. plugin.attach(context, settings);
  10. }
  11. }
  12. },
  13. detach: function (context, settings) {
  14. for (var i in plugins) {
  15. var plugin = plugins[i];
  16. if (typeof plugin.detach === 'function') {
  17. plugin.detach(context, settings);
  18. }
  19. }
  20. },
  21. alter: function () {
  22. // @todo: alter hook
  23. },
  24. getPlugin: function (factoryService) {
  25. if (this.isRegistered(factoryService)) {
  26. return plugins[factoryService];
  27. }
  28. return false;
  29. },
  30. getPlugins: function () {
  31. return Object.keys(plugins);
  32. },
  33. register: function (plugin) {
  34. if ((typeof plugin !== 'object') || (plugin === null)) {
  35. return false;
  36. }
  37. if (typeof plugin.init !== 'function') {
  38. return false;
  39. }
  40. if (!plugin.hasOwnProperty('fs')) {
  41. return false;
  42. }
  43. plugins[plugin.fs] = plugin;
  44. },
  45. createInstance: function (factoryService, data) {
  46. if (!this.isRegistered(factoryService)) {
  47. return false;
  48. }
  49. try {
  50. var obj = plugins[factoryService].init(data);
  51. } catch (e) {
  52. if (console !== undefined) {
  53. Drupal.openlayers.console.log(e.message);
  54. Drupal.openlayers.console.log(e.stack);
  55. }
  56. else {
  57. $(this).text('Error during map rendering: ' + e.message);
  58. $(this).text('Stack: ' + e.stack);
  59. }
  60. }
  61. var objType = typeof obj;
  62. if ((objType === 'object') && (objType !== null) || (objType === 'function')) {
  63. obj.mn = data.data.mn;
  64. return obj;
  65. }
  66. return false;
  67. },
  68. isRegistered: function (factoryService) {
  69. return (factoryService in plugins);
  70. }
  71. };
  72. }(jQuery, Drupal));