Facebook
From Little Meerkat, 7 Years ago, written in JavaScript.
Embed
Download Paste or View Raw
Hits: 296
  1. /**
  2.  * jobManager plugin - Jacek Sawczyszyn
  3.  */
  4.  
  5. EasyEditScreens.screen.jobManagerDefault = {
  6.     containerId: null,
  7.     originalValues: null,
  8.     parentIds: null,
  9.     readOnly: false,
  10.     // Stored object for direct children
  11.     directChildList: null,
  12.     sliders: [],
  13.     init: function(containerId, readOnly, callback)
  14.     {
  15.         this.containerId = containerId;
  16.  
  17.         var self = this;
  18.  
  19.         // Store the read only value for use in other functions
  20.         self.readOnly = readOnly;
  21.  
  22.         // Initialise original values if this is a re-render
  23.         self.originalValues = [];
  24.  
  25.         this._getTemplate( function(html) {
  26.  
  27.             var $container = jQuery(self.containerId);
  28.             // Add as last item (append) to container to avoid removing any other divs the container may already use like the 'warning' box.
  29.             $container.append('<div id="ees_editLinking">' + html + '</div>');
  30.  
  31.             self._attachEvents();
  32.             callback.call(this);
  33.         }); // End this._getTemplate.
  34.  
  35.     }, // End init
  36.     _getJobManagerOutput: function(assetId,callback)
  37.     {
  38.         var self = this,
  39.             api  = new EasyEditAPI();
  40.  
  41.             callback.call(self, '');
  42. /*
  43.         api.queue('getKeywordsReplacements',{
  44.             asset_id: assetId,
  45.             keywords_array: ["%linking-%"]
  46.         });
  47.         This is how to queue api requests in Edit+
  48. */
  49.  
  50.     }, // End _getKeywordManagerOutput.
  51.     /**
  52.      *  Return metadata HTML template.
  53.      */
  54.     _getTemplate: function(callback)
  55.     {
  56.         var html = '';
  57.  
  58.         var self = this;
  59.  
  60.         EasyEditAssetManager.getCurrentAsset( function(asset) {
  61.  
  62.             self._getJobManagerOutput(asset.id, function(data) {
  63.  
  64.                 //call html = self._reRender(data); or similar to split out fetching data
  65.                 callback.call(this,data);
  66.  
  67.             }); // End _getJobManagerOutput.
  68.  
  69.         }); // End getCurrentAsset.
  70.  
  71.     }, // End _getTemplate.
  72.     _attachEvents: function()
  73.     {
  74.         var self = this;
  75.  
  76.         // unbind events
  77.  
  78.         // re-bind events
  79.  
  80.     } // End _attachEvents.
  81. }; // End EasyEditScreens.screen.JobManagerDefault.
  82.  
  83. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  84.  
  85. EasyEdit.plugins.jobManager = {
  86.     vars: {
  87.     },
  88.     init: function()
  89.     {
  90.         var self = this;
  91.         EasyEditEventManager.bind('EasyEditAfterLoad', self.initializeFunctions);
  92.     },
  93.     initializeFunctions: function() {
  94.         EasyEdit.plugins.jobManager.addJobManager();
  95.     },
  96.     addJobManager:function() {
  97.  
  98.         var jobManager;
  99.  
  100.         jobManager = {
  101.  
  102.             getConfig: function() {
  103.                 var screens = {
  104.                     "JobManager": {
  105.                         objectName:     "jobManagerDefault",
  106.                         className:      "jobManagerDefault",
  107.                         displayName:    EasyEditLocalise._('Job Manager'),
  108.                         lockType:       ["attributes","links"],
  109.                         isDefault:      false
  110.                     }
  111.                 };
  112.                 return screens;
  113.             }
  114.         };
  115.  
  116.         EasyEditScreens.buildMenu(jobManager,"jobManagerDefault");
  117.  
  118.         if(window.location.hash === "#mode=edit&screen=jobmanager") {
  119.  
  120.             EasyEditAssetManager.getCurrentAsset( function(asset) {
  121.                 //var self =              this,
  122.                 screenType          = 'asset',
  123.                 defaultObjectName   = 'jobManagerDefault',
  124.                 defaultScreen       = (EasyEditConfig.hasOwnProperty('defaultScreen') ? EasyEditConfig.defaultScreen : 'details'),
  125.                 url                 = EasyEditUrl.getURL();
  126.                 var screen = (typeof(url.params.asset_ei_screen) === "string") ? url.params.asset_ei_screen : defaultScreen;
  127.                 screen = (typeof(url.params.screen) === "string") ? url.params.screen : screen;
  128.                 screen = (EasyEditUrl.hash.isset('screen')) ? EasyEditUrl.hash.get('screen') : screen;
  129.                 screen = (typeof(screen) === "undefined") ? defaultScreen : screen;
  130.  
  131.                  // Object names should be type codes
  132.                  var objectName = asset.attribute('type_code');
  133.  
  134.                  // Is the current asset a root node in a workspace?
  135.                 if (EasyEditWorkspaceManager.isWorkspace(asset)) {
  136.                     screenType = 'workspace';
  137.                     var workspace = EasyEditWorkspaceManager.getWorkspaceFromRootNode(asset.id);
  138.                     if (typeof(workspace.type) === "string") {
  139.                         // If the workspace is valid, initialise the workspace screen type instead
  140.                         objectName = workspace.type;
  141.                     }// End if
  142.                 }// End if
  143.  
  144.                 // Lets find out if the screen actually exists
  145.                 var scope = (screenType === "workspace") ? "workspaces" : "assetTypes";
  146.                 objectName = (EasyEditScreens[scope].hasOwnProperty(objectName)) ? objectName : defaultObjectName;
  147.  
  148.                 // We know we have a valid screen
  149.                 //var screenConfig = EasyEditScreens[scope][objectName];
  150.                 var screenConfig = jobManager;
  151.  
  152.                 // Make sure the screen exists in the screen object configuration
  153.                 screen = EasyEditScreens.getValidScreenName(screenConfig.getConfig(),screen.replace(/%20/g,' '),defaultScreen);
  154.                 jQuery('#ees_eesUi').attr('class', screen.toLowerCase());
  155.                 // Output the page template
  156.                 jQuery('#' + EasyEditComponents.contentWrapperId).append(EasyEditScreens._getTemplate());
  157.  
  158.  
  159.  
  160.                 //the building of the menu and initLoadScreen needs separating into their own functions, then, always call build menu but only call initLoadScreen if location hash is true
  161.  
  162.                  // Do the screen load
  163.                  EasyEditScreens.doInitLoadScreen(asset,screenConfig,screen,screenType,function(){
  164.  
  165.                       $("#ees_screenMenujobManagerPageDefault").on("click",function() {
  166.                         EasyEditScreens.loadScreen("jobManagerDefault",function() {
  167.                             //Done
  168.                             //See EasyEditScreens.screen.linkingDefault for how other screens are done
  169.                         })
  170.  
  171.                       })
  172.                  });  
  173.             });
  174.         }
  175.     }
  176. };