public ActionResult UploadPackage(FormCollection form, string returnUrl = "") { if (returnUrl.IsEmpty()) { returnUrl = _services.WebHelper.GetUrlReferrer(); } bool isTheme = false; try { var file = Request.Files["packagefile"]; if (file != null && file.ContentLength > 0) { var requiredPermission = (isTheme = PackagingUtils.IsTheme(file.FileName)) ? StandardPermissionProvider.ManageThemes : StandardPermissionProvider.ManagePlugins; if (!_services.Permissions.Authorize(requiredPermission)) { return(AccessDeniedView()); } if (!Path.GetExtension(file.FileName).IsCaseInsensitiveEqual(".nupkg")) { NotifyError(T("Admin.Packaging.NotAPackage")); return(Redirect(returnUrl)); } var location = CommonHelper.MapPath("~/App_Data"); var appPath = CommonHelper.MapPath("~/"); var packageInfo = _packageManager.Install(file.InputStream, location, appPath); } else { NotifyError(T("Admin.Common.UploadFile")); return(Redirect(returnUrl)); } if (!isTheme) { _services.WebHelper.RestartAppDomain(); } NotifySuccess(T("Admin.Packaging.InstallSuccess")); return(Redirect(returnUrl)); } catch (Exception exc) { NotifyError(exc); return(Redirect(returnUrl)); } }
public ActionResult UploadPackage(FormCollection form, string returnUrl = "") { if (returnUrl.IsEmpty()) { returnUrl = _services.WebHelper.GetUrlReferrer(); } bool isTheme = false; try { var file = Request.Files["packagefile"].ToPostedFileResult(); if (file != null) { var requiredPermission = (isTheme = PackagingUtils.IsTheme(file.FileName)) ? StandardPermissionProvider.ManageThemes : StandardPermissionProvider.ManagePlugins; if (!_services.Permissions.Authorize(requiredPermission)) { return(AccessDeniedView()); } if (!file.FileExtension.IsCaseInsensitiveEqual(".nupkg")) { NotifyError(T("Admin.Packaging.NotAPackage")); return(Redirect(returnUrl)); } var location = CommonHelper.MapPath("~/App_Data"); var appPath = CommonHelper.MapPath("~/"); if (isTheme) { // avoid getting terrorized by IO events _themeRegistry.Value.StopMonitoring(); } var packageInfo = _packageManager.Install(file.Stream, location, appPath); if (isTheme) { // create manifest if (packageInfo != null) { var manifest = ThemeManifest.Create(packageInfo.ExtensionDescriptor.Path); if (manifest != null) { _themeRegistry.Value.AddThemeManifest(manifest); } } // SOFT start IO events again _themeRegistry.Value.StartMonitoring(false); } } else { NotifyError(T("Admin.Common.UploadFile")); return(Redirect(returnUrl)); } if (!isTheme) { _services.WebHelper.RestartAppDomain(); } NotifySuccess(T("Admin.Packaging.InstallSuccess")); return(Redirect(returnUrl)); } catch (Exception exc) { NotifyError(exc); Logger.Error(exc); return(Redirect(returnUrl)); } }
public ActionResult UploadPackage(string returnUrl = "") { var isTheme = false; var success = false; string message = null; string tempFile = ""; try { var file = Request.ToPostedFileResult(); if (file != null) { var requiredPermission = (isTheme = PackagingUtils.IsTheme(file.FileName)) ? Permissions.Configuration.Theme.Upload : Permissions.Configuration.Plugin.Upload; if (!Services.Permissions.Authorize(requiredPermission)) { message = T("Admin.AccessDenied.Description"); return(Json(new { success, file.FileName, message })); } if (!file.FileExtension.IsCaseInsensitiveEqual(".nupkg")) { return(Json(new { success, file.FileName, T("Admin.Packaging.NotAPackage").Text, returnUrl })); } var location = CommonHelper.MapPath("~/App_Data"); var appPath = CommonHelper.MapPath("~/"); if (isTheme) { // Avoid getting terrorized by IO events. _themeRegistry.Value.StopMonitoring(); } var packageInfo = _packageManager.Install(file.Stream, location, appPath); if (isTheme) { // Create manifest. if (packageInfo != null) { var manifest = ThemeManifest.Create(packageInfo.ExtensionDescriptor.Path); if (manifest != null) { _themeRegistry.Value.AddThemeManifest(manifest); } } // SOFT start IO events again. _themeRegistry.Value.StartMonitoring(false); } } else { return(Json(new { success, file.FileName, T("Admin.Common.UploadFile").Text, returnUrl })); } if (!isTheme) { message = T("Admin.Packaging.InstallSuccess").Text; Services.WebHelper.RestartAppDomain(); } else { message = T("Admin.Packaging.InstallSuccess.Theme").Text; } success = true; } catch (Exception ex) { message = ex.Message; Logger.Error(ex); } return(Json(new { success, tempFile, message, returnUrl })); }