private IDictionary <string, object> GetExtensionSettings(PersonaBarExtension extension)
        {
            var extensionController = GetExtensionController(extension);
            var settings            = extensionController?.GetSettings(extension);

            return(settings);
        }
        private string GetExtensionPathByController(PersonaBarExtension extension)
        {
            var menuItem = PersonaBarRepository.Instance.GetMenuItem(extension.MenuId);

            if (menuItem == null)
            {
                return(extension.Path);
            }

            var extensionController = GetExtensionController(extension);
            var path = extensionController?.GetPath(extension);

            return(!string.IsNullOrEmpty(path) ? path : extension.Path);
        }
        public void SaveExtension(PersonaBarExtension extension)
        {
            this._dataService.SavePersonaBarExtension(
                extension.Identifier,
                extension.MenuId,
                extension.FolderName,
                extension.Controller,
                extension.Container,
                extension.Path,
                extension.Order,
                extension.Enabled,
                UserController.Instance.GetCurrentUserInfo().UserID);

            this.ClearCache();
        }
        private void ReadExtensionsFromManifest(XPathNavigator menuNavigator)
        {
            var extension = new PersonaBarExtension()
            {
                Identifier = Util.ReadElement(menuNavigator, "identifier"),
                FolderName = Util.ReadElement(menuNavigator, "folderName"),
                Controller = Util.ReadElement(menuNavigator, "controller"),
                Container  = Util.ReadElement(menuNavigator, "container"),
                Path       = Util.ReadElement(menuNavigator, "path"),
                Order      = Convert.ToInt32(Util.ReadElement(menuNavigator, "order", "0")),
                Enabled    = true,
            };

            this._extensions.Add(extension);
            this._extensionMenus.Add(extension.Identifier, Util.ReadElement(menuNavigator, "menu"));
        }
        private IExtensionController GetExtensionController(PersonaBarExtension extension)
        {
            var identifier = extension.Identifier;
            var controller = extension.Controller;

            if (string.IsNullOrEmpty(controller))
            {
                return(null);
            }

            try
            {
                var cacheKey = $"PersonaBarExtensionController_{identifier}";
                return(Reflection.CreateObject(controller, cacheKey) as IExtensionController);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                return(null);
            }
        }
        private bool IsVisible(PersonaBarExtension extension)
        {
            var extensionController = GetExtensionController(extension);

            return(extensionController == null || extensionController.Visible(extension));
        }
 public void DeleteExtension(PersonaBarExtension extension)
 {
     DeleteExtension(extension.Identifier);
 }