Esempio n. 1
0
        /// <summary>
        /// Save Plugin
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public ResponseModel SavePluginManageModel(PluginInformationModel model)
        {
            try
            {
                var siteConfig = SiteInitializer.GetConfiguration();

                var plugin = siteConfig.Plugins.FirstOrDefault(m => m.Name.Equals(model.Name));
                if (plugin == null)
                {
                    if (model.IsInstalled)
                    {
                        var pluginInformation = GetByName(model.Name);
                        plugin = new Plugin
                        {
                            Name             = pluginInformation.Name,
                            ConnectionString = model.ConnectionString,
                            Folder           = pluginInformation.Folder
                        };

                        siteConfig.Plugins.Add(plugin);
                        EzWorkContext.IsSystemChanged = true;
                    }
                }
                else
                {
                    if (model.IsInstalled)
                    {
                        plugin.ConnectionString = model.ConnectionString;
                    }
                    else
                    {
                        siteConfig.Plugins.Remove(plugin);
                    }

                    EzWorkContext.IsSystemChanged = true;
                }

                SiteInitializer.SaveConfiguration(siteConfig, false);
            }
            catch (Exception exception)
            {
                EzWorkContext.IsSystemChanged = false;
                return(new ResponseModel
                {
                    Success = true,
                    Message = T("Plugin_Message_UpdateFailure")
                });
            }

            return(new ResponseModel
            {
                Success = true,
                Message = T("Plugin_Message_UpdateSuccessfully")
            });
        }
Esempio n. 2
0
        /// <summary>
        /// Parse the plugin description from a string
        /// </summary>
        /// <param name="manifestText">Input string text of the description</param>
        /// <param name="folder"></param>
        /// <returns>Plugin description</returns>
        public static PluginInformationModel ParseFromString(string manifestText, string folder)
        {
            var pluginDescription = new PluginInformationModel
            {
                IsInstalled      = false,
                Folder           = folder,
                ConnectionString = string.Empty
            };

            using (var reader = new StringReader(manifestText))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    var field       = line.Split(new[] { ":" }, 2, StringSplitOptions.None);
                    var fieldLength = field.Length;

                    if (fieldLength != 2)
                    {
                        continue;
                    }

                    for (var i = 0; i < fieldLength; i++)
                    {
                        field[i] = field[i].Trim();
                    }
                    switch (field[0])
                    {
                    case Name:
                        pluginDescription.Name = field[1];
                        break;

                    case Description:
                        pluginDescription.Description = field[1];
                        break;

                    case Version:
                        pluginDescription.Version = field[1];
                        break;

                    case Author:
                        pluginDescription.Author = field[1];
                        break;
                    }
                }
            }

            return(pluginDescription);
        }
Esempio n. 3
0
        public ActionResult Config(PluginInformationModel model, SubmitType submit)
        {
            if (ModelState.IsValid)
            {
                var response = _pluginService.SavePluginManageModel(model);
                SetResponseMessage(response);
                if (response.Success)
                {
                    switch (submit)
                    {
                    case SubmitType.Save:
                        return(RedirectToAction("Index"));

                    default:
                        return(RedirectToAction("Config", new { name = model.Name }));
                    }
                }
            }
            return(View(model));
        }