/// <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") }); }
/// <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); }
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)); }