Example #1
0
        public ActionResult InstallGallery(string packageId, string version, int sourceId, string redirectUrl)
        {
            if (_shellSettings.Name != ShellSettings.DefaultName || !Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not authorized to add sources")))
            {
                return(new HttpUnauthorizedResult());
            }

            var source = _packagingSourceManager.GetSources().FirstOrDefault(s => s.Id == sourceId);

            if (source == null)
            {
                return(HttpNotFound());
            }

            try {
                PackageInfo packageInfo = _packageManager.Install(packageId, version, source.FeedUrl, MapAppRoot());

                if (DefaultExtensionTypes.IsTheme(packageInfo.ExtensionType))
                {
                    Services.Notifier.Information(T("The theme has been successfully installed. It can be enabled in the \"Themes\" page accessible from the menu."));
                }
                else if (DefaultExtensionTypes.IsModule(packageInfo.ExtensionType))
                {
                    Services.Notifier.Information(T("The module has been successfully installed."));

                    IPackageRepository  packageRepository   = PackageRepositoryFactory.Default.CreateRepository(new PackageSource(source.FeedUrl, "Default"));
                    IPackage            package             = packageRepository.FindPackage(packageId);
                    ExtensionDescriptor extensionDescriptor = package.GetExtensionDescriptor(packageInfo.ExtensionType);

                    return(InstallPackageDetails(extensionDescriptor, redirectUrl));
                }
            }
            catch (OrchardException e) {
                Services.Notifier.Error(T("Package installation failed: {0}", e.Message));
                return(View("InstallPackageFailed"));
            }
            catch (Exception) {
                Services.Notifier.Error(T("Package installation failed."));
                return(View("InstallPackageFailed"));
            }

            return(Redirect(redirectUrl));
        }