public void AllowInstallingPackageWithToolsFolderDoNotThrow()
        {
            // Arrange
            var projectManager = new Mock<IProjectManager>();
            projectManager.Setup(p => p.AddPackageReference("A", new SemanticVersion("1.0"), false, false)).Verifiable();

            var webProjectManager = new WebProjectManager(projectManager.Object, @"x:\")
            {
                DoNotAddBindingRedirects = true
            };

            var packageFile1 = new Mock<IPackageFile>();
            packageFile1.Setup(p => p.Path).Returns("tools\\install.ps1");

            var packageFile2 = new Mock<IPackageFile>();
            packageFile2.Setup(p => p.Path).Returns("content\\A.txt");

            var package = new Mock<IPackage>();
            package.Setup(p => p.Id).Returns("A");
            package.Setup(p => p.Version).Returns(new SemanticVersion("1.0"));
            package.Setup(p => p.GetFiles()).Returns(new[] { packageFile1.Object, packageFile2.Object });

            // Act
            webProjectManager.InstallPackage(package.Object, appDomain: null);

            // Assert
            projectManager.Verify();
        }
        private static string GetPostUrl(View view, IPackage package, WebProjectManager projectManager)
        {
            switch (view)
            {
            case View.Online:
                return(projectManager.IsPackageInstalled(package) ? "Uninstall" : "Install");

            case View.Updates:
                return("Update");

            default:
                return("Uninstall");
            }
        }
        private static string GetSubmitText(View view, IPackage package, WebProjectManager projectManager)
        {
            switch (view)
            {
            case View.Online:
                return(projectManager.IsPackageInstalled(package) ? PackageManagerResources.UninstallPackage : PackageManagerResources.InstallPackage);

            case View.Updates:
                return(PackageManagerResources.UpdatePackage);

            default:
                return(PackageManagerResources.UninstallPackage);
            }
        }
        public override void Execute()
        {
            WriteLiteral("\r\n\r\n");



            WriteLiteral("\r\n");


            DefineSection("PackageHead", () => {
                WriteLiteral(" \r\n    <script type=\"text/javascript\" src=\"");


                Write(Href("scripts/PackageAction.js"));

                WriteLiteral("\"></script>\r\n    <noscript>");


                Write(PackageManagerResources.JavascriptRequired);

                WriteLiteral("</noscript>\r\n");
            });

            WriteLiteral("\r\n\r\n");



            // Read from request
            var packageId = Request["package"];
            var version   = Request["version"];

            WebProjectManager projectManager;

            try {
                projectManager = new WebProjectManager(PackageManagerModule.ActiveSource.Source, PackageManagerModule.SiteRoot);
            } catch (Exception exception) {
                WriteLiteral("        <div class=\"error message\">");


                Write(exception.Message);

                WriteLiteral("</div>\r\n");


                return;
            }

            IPackage package = projectManager.LocalRepository.FindPackage(packageId, version != null ? SemanticVersion.Parse(version) : null);

            if (package == null)
            {
                ModelState.AddFormError(PackageManagerResources.BadRequest);

                Write(Html.ValidationSummary());


                return;
            }

            // Set up layout values
            var packagesHomeUrl = Href(PageUtils.GetPackagesHome(), Request.Url.Query);

            Page.SectionTitle = String.Format(CultureInfo.CurrentCulture, PackageManagerResources.UninstallPackageDesc, package.GetDisplayName());

            if (IsPost)
            {
                AntiForgery.Validate();
                bool removeDependencies = Request.Form["removeDependencies"].AsBool(false);
                try {
                    projectManager.UninstallPackage(package, removeDependencies: removeDependencies);
                } catch (Exception exception) {
                    ModelState.AddFormError(exception.Message);
                }

                if (ModelState.IsValid)
                {
                    Response.Redirect(packagesHomeUrl + "&action-completed=Uninstall");
                }
                else
                {
                    Write(Html.ValidationSummary(String.Format(CultureInfo.CurrentCulture, PackageManagerResources.PackageUninstallationError, package.GetDisplayName())));
                }
                return;
            }



            var encodedPackageName = Html.Encode(package.GetDisplayName());

            WriteLiteral("    <h4>");


            Write(Html.Raw(String.Format(CultureInfo.CurrentCulture, PackageManagerResources.AreYouSureUninstall, encodedPackageName)));

            WriteLiteral("</h4>\r\n");



            WriteLiteral("<form method=\"post\" action=\"\" id=\"submitForm\">\r\n<fieldset class=\"no-border\">\r\n   " +
                         " ");


            Write(AntiForgery.GetHtml());

            WriteLiteral("\r\n    <input type=\"hidden\" name=\"package\" value=\"");


            Write(packageId);

            WriteLiteral("\" />\r\n    <input type=\"hidden\" name=\"version\" value=\"");


            Write(version);

            WriteLiteral("\" />\r\n");


            if (package.Dependencies.Any())
            {
                WriteLiteral("        <div>\r\n            <label><input type=\"checkbox\" name=\"removeDependencies" +
                             "\" value=\"true\" checked=\"checked\"/>");


                Write(PackageManagerResources.RemoveDependencies);

                WriteLiteral("</label>\r\n        </div>\r\n");



                WriteLiteral("        <br />\r\n");
            }

            WriteLiteral("    <input type=\"submit\" value=\"");


            Write(PackageManagerResources.UninstallPackage);

            WriteLiteral("\" />\r\n    &nbsp;\r\n    <input type=\"reset\" value=\"");


            Write(PackageManagerResources.Cancel);

            WriteLiteral("\" data-returnurl=\"");


            Write(packagesHomeUrl);

            WriteLiteral("\" />\r\n</fieldset>\r\n</form>");
        }
        public override void Execute()
        {


WriteLiteral("\r\n\r\n");




WriteLiteral("\r\n");


DefineSection("PackageHead", () => {

WriteLiteral(" \r\n    <script type=\"text/javascript\" src=\"");


                                   Write(Href("scripts/PackageAction.js"));

WriteLiteral("\"></script>\r\n    <noscript>");


         Write(PackageManagerResources.JavascriptRequired);

WriteLiteral("</noscript>\r\n");


});

WriteLiteral("\r\n");


  
    // Read params from request
    var sourceName = Request["source"];
    var packageId = Request["package"];
    var versionString = Request["version"];
    var packageSource = PageUtils.GetPackageSource(sourceName);

    var version = !versionString.IsEmpty() ? SemanticVersion.Parse(versionString) : null;
    
    WebProjectManager projectManager;
    try {
        projectManager = new WebProjectManager(packageSource.Source, PackageManagerModule.SiteRoot);
    } catch (Exception exception) {

WriteLiteral("        <div class=\"error message\">");


                              Write(exception.Message);

WriteLiteral("</div>\r\n");


        return;
    }
    var updatePackage = projectManager.SourceRepository.FindPackage(packageId, version);
    if (updatePackage == null) {
        ModelState.AddFormError(PackageManagerResources.BadRequest);
        
   Write(Html.ValidationSummary());

                                 
        return; 
    }

    var package = projectManager.LocalRepository.FindPackage(packageId);

    // Layout
    Page.SectionTitle = String.Format(CultureInfo.CurrentCulture, PackageManagerResources.UpdatePackageDesc, package.GetDisplayName(), updatePackage.Version);
    var packagesHomeUrl = Href(PageUtils.GetPackagesHome(), Request.Url.Query);

    if (IsPost) {
        AntiForgery.Validate();
        try { 
            projectManager.UpdatePackage(updatePackage);   
        } catch (Exception exception) {
            ModelState.AddFormError(exception.Message);
        }

        if (ModelState.IsValid) {
            Response.Redirect(packagesHomeUrl + "&action-completed=Update");
        }
        else {
            
       Write(Html.ValidationSummary(String.Format(CultureInfo.CurrentCulture, PackageManagerResources.PackageUpdateError, package.GetDisplayName())));

                                                                                                                                                    
        }
        return;
    }


WriteLiteral("\r\n");


Write(RenderPage("_PackageDetails.cshtml", new Dictionary<string, object>{ {"Package", updatePackage} }));

WriteLiteral("\r\n<br />\r\n<form method=\"post\" action=\"\" id=\"submitForm\">\r\n    ");


Write(AntiForgery.GetHtml());

WriteLiteral("\r\n    <input type=\"hidden\" name=\"source\" value=\"");


                                         Write(sourceName);

WriteLiteral("\" />\r\n    <input type=\"hidden\" name=\"package\" value=\"");


                                          Write(packageId);

WriteLiteral("\" />\r\n    <input type=\"hidden\" name=\"version\" value=\"");


                                          Write(version);

WriteLiteral("\" />\r\n\r\n    <input type=\"submit\" value=\"");


                           Write(PackageManagerResources.UpdatePackage);

WriteLiteral("\" />\r\n    <input type=\"reset\" value=\"");


                          Write(PackageManagerResources.Cancel);

WriteLiteral("\" data-returnurl=\"");


                                                                           Write(packagesHomeUrl);

WriteLiteral("\" />\r\n    <br /><br />\r\n</form>");


        }
        public override void Execute()
        {
            WriteLiteral("\r\n\r\n");



            WriteLiteral("\r\n");


            DefineSection("PackageHead", () => {
                WriteLiteral(" \r\n    <script type=\"text/javascript\" src=\"");



            #line 9 "..\..\packages\Install.cshtml"
                Write(Href("scripts/PackageAction.js"));


            #line default
            #line hidden
                WriteLiteral("\"></script>\r\n    <noscript>");



            #line 10 "..\..\packages\Install.cshtml"
                Write(PackageManagerResources.JavascriptRequired);


            #line default
            #line hidden
                WriteLiteral("</noscript>\r\n");
            });

            WriteLiteral("\r\n");



            #line 12 "..\..\packages\Install.cshtml"

            // Read params from request
            var sourceName = Request["source"];
            var packageId  = Request["package"];
            var version    = Request["version"];

            var packageSource = PageUtils.GetPackageSource(sourceName);

            WebProjectManager projectManager;
            try {
                projectManager = new WebProjectManager(packageSource.Source, PackageManagerModule.SiteRoot);
            } catch (Exception exception) {
            #line default
            #line hidden
                WriteLiteral("        <div class=\"error message\">");



            #line 24 "..\..\packages\Install.cshtml"
                Write(exception.Message);


            #line default
            #line hidden
                WriteLiteral("</div>\r\n");



            #line 25 "..\..\packages\Install.cshtml"
                return;
            }
            IPackage package = projectManager.SourceRepository.FindPackage(packageId, version != null ? SemanticVersion.Parse(version) : null);

            if (package == null)
            {
                ModelState.AddFormError(PackageManagerResources.BadRequest);


            #line default
            #line hidden

            #line 31 "..\..\packages\Install.cshtml"
                Write(Html.ValidationSummary());


            #line default
            #line hidden

            #line 31 "..\..\packages\Install.cshtml"

                return;
            }

            Page.SectionTitle = String.Format(CultureInfo.CurrentCulture, PackageManagerResources.InstallPackageDesc, package.GetDisplayName());

            var packagesHomeUrl = Href(PageUtils.GetPackagesHome(), Request.Url.Query);
            if (IsPost)
            {
                AntiForgery.Validate();
                try {
                    projectManager.InstallPackage(package);
                } catch (Exception exception) {
                    ModelState.AddFormError(exception.Message);
                }

                if (ModelState.IsValid)
                {
                    Response.Redirect(packagesHomeUrl + "&action-completed=Install");
                }
                else
                {
            #line default
            #line hidden

            #line 50 "..\..\packages\Install.cshtml"
                    Write(Html.ValidationSummary(String.Format(CultureInfo.CurrentCulture, PackageManagerResources.PackageInstallationError, package.GetDisplayName())));


            #line default
            #line hidden

            #line 50 "..\..\packages\Install.cshtml"

                    return;
                }
            }



            #line default
            #line hidden
            WriteLiteral("\r\n");



            #line 56 "..\..\packages\Install.cshtml"
            Write(RenderPage("_PackageDetails.cshtml", new Dictionary <string, object> {
                { "Package", package }
            }));


            #line default
            #line hidden
            WriteLiteral("\r\n\r\n");



            #line 58 "..\..\packages\Install.cshtml"

            var licensePackages = projectManager.GetPackagesRequiringLicenseAcceptance(package);
            if (licensePackages.Any())
            {
            #line default
            #line hidden
                WriteLiteral("       <hr />\r\n");



                WriteLiteral("       <ul>\r\n");



            #line 63 "..\..\packages\Install.cshtml"
                foreach (var licensePackage in licensePackages.Where(p => PageUtils.IsValidLicenseUrl(p.LicenseUrl)))
                {
            #line default
            #line hidden
                    WriteLiteral("                <li>\r\n                    <strong>");



            #line 65 "..\..\packages\Install.cshtml"
                    Write(licensePackage.Id);


            #line default
            #line hidden
                    WriteLiteral(" ");



            #line 65 "..\..\packages\Install.cshtml"
                    Write(licensePackage.Version);


            #line default
            #line hidden
                    WriteLiteral("</strong> \r\n                    (");



            #line 66 "..\..\packages\Install.cshtml"
                    Write(PackageManagerResources.AuthorsLabel);


            #line default
            #line hidden
                    WriteLiteral(": <span class=\"package-author\">");



            #line 66 "..\..\packages\Install.cshtml"
                    Write(String.Join(PackageManagerResources.WordSeparator, licensePackage.Authors));


            #line default
            #line hidden
                    WriteLiteral("</span>)\r\n                    <br />\r\n                    <a href=\"");



            #line 68 "..\..\packages\Install.cshtml"
                    Write(licensePackage.LicenseUrl);


            #line default
            #line hidden
                    WriteLiteral("\" target=\"_blank\">");



            #line 68 "..\..\packages\Install.cshtml"
                    Write(PackageManagerResources.ViewLicenseTerms);


            #line default
            #line hidden
                    WriteLiteral("</a>\r\n                </li>\r\n");



            #line 70 "..\..\packages\Install.cshtml"
                }


            #line default
            #line hidden
                WriteLiteral("       </ul>   \r\n");



            #line 72 "..\..\packages\Install.cshtml"
            }
            else
            {
            #line default
            #line hidden
                WriteLiteral("        <br />\r\n");



                WriteLiteral("        <hr />\r\n");



            #line 75 "..\..\packages\Install.cshtml"
            }



            #line default
            #line hidden
            WriteLiteral("\r\n<form method=\"post\" action=\"\" id=\"submitForm\">\r\n<p>");



            #line 79 "..\..\packages\Install.cshtml"
            Write(PackageManagerResources.Disclaimer);


            #line default
            #line hidden
            WriteLiteral("</p>    \r\n<fieldset class=\"no-border install\">\r\n    <input type=\"hidden\" name=\"so" +
                         "urce\" value=\"");



            #line 81 "..\..\packages\Install.cshtml"
            Write(sourceName);


            #line default
            #line hidden
            WriteLiteral("\" />\r\n    <input type=\"hidden\" name=\"package\" value=\"");



            #line 82 "..\..\packages\Install.cshtml"
            Write(packageId);


            #line default
            #line hidden
            WriteLiteral("\" />\r\n    <input type=\"hidden\" name=\"version\" value=\"");



            #line 83 "..\..\packages\Install.cshtml"
            Write(version);


            #line default
            #line hidden
            WriteLiteral("\" />\r\n    ");



            #line 84 "..\..\packages\Install.cshtml"
            Write(AntiForgery.GetHtml());


            #line default
            #line hidden
            WriteLiteral("\r\n\r\n    <input type=\"submit\" value=\"");



            #line 86 "..\..\packages\Install.cshtml"
            Write(PackageManagerResources.InstallPackage);


            #line default
            #line hidden
            WriteLiteral("\" />\r\n    <input type=\"reset\" value=\"");



            #line 87 "..\..\packages\Install.cshtml"
            Write(PackageManagerResources.Cancel);


            #line default
            #line hidden
            WriteLiteral("\" data-returnurl=\"");



            #line 87 "..\..\packages\Install.cshtml"
            Write(packagesHomeUrl);


            #line default
            #line hidden
            WriteLiteral("\" />\r\n</fieldset>\r\n    \r\n\r\n</form>");
        }
Example #7
0
        public override void Execute()
        {
            WriteLiteral("\r\n\r\n");



            WriteLiteral("\r\n");


            DefineSection("PackageHead", () => {
                WriteLiteral(" \r\n    <script type=\"text/javascript\" src=\"");



            #line 8 "..\..\packages\Update.cshtml"
                Write(Href("scripts/PackageAction.js"));


            #line default
            #line hidden
                WriteLiteral("\"></script>\r\n    <noscript>");



            #line 9 "..\..\packages\Update.cshtml"
                Write(PackageManagerResources.JavascriptRequired);


            #line default
            #line hidden
                WriteLiteral("</noscript>\r\n");
            });

            WriteLiteral("\r\n");



            #line 11 "..\..\packages\Update.cshtml"

            // Read params from request
            var sourceName    = Request["source"];
            var packageId     = Request["package"];
            var versionString = Request["version"];
            var packageSource = PageUtils.GetPackageSource(sourceName);

            var version = !versionString.IsEmpty() ? SemanticVersion.Parse(versionString) : null;

            WebProjectManager projectManager;
            try {
                projectManager = new WebProjectManager(packageSource.Source, PackageManagerModule.SiteRoot);
            } catch (Exception exception) {
            #line default
            #line hidden
                WriteLiteral("        <div class=\"error message\">");



            #line 24 "..\..\packages\Update.cshtml"
                Write(exception.Message);


            #line default
            #line hidden
                WriteLiteral("</div>\r\n");



            #line 25 "..\..\packages\Update.cshtml"
                return;
            }
            var updatePackage = projectManager.SourceRepository.FindPackage(packageId, version);
            if (updatePackage == null)
            {
                ModelState.AddFormError(PackageManagerResources.BadRequest);


            #line default
            #line hidden

            #line 30 "..\..\packages\Update.cshtml"
                Write(Html.ValidationSummary());


            #line default
            #line hidden

            #line 30 "..\..\packages\Update.cshtml"

                return;
            }

            var package = projectManager.LocalRepository.FindPackage(packageId);

            // Layout
            Page.SectionTitle = String.Format(CultureInfo.CurrentCulture, PackageManagerResources.UpdatePackageDesc, package.GetDisplayName(), updatePackage.Version);
            var packagesHomeUrl = Href(PageUtils.GetPackagesHome(), Request.Url.Query);

            if (IsPost)
            {
                AntiForgery.Validate();
                try {
                    projectManager.UpdatePackage(updatePackage);
                } catch (Exception exception) {
                    ModelState.AddFormError(exception.Message);
                }

                if (ModelState.IsValid)
                {
                    Response.Redirect(packagesHomeUrl + "&action-completed=Update");
                }
                else
                {
            #line default
            #line hidden

            #line 52 "..\..\packages\Update.cshtml"
                    Write(Html.ValidationSummary(String.Format(CultureInfo.CurrentCulture, PackageManagerResources.PackageUpdateError, package.GetDisplayName())));


            #line default
            #line hidden

            #line 52 "..\..\packages\Update.cshtml"
                }
                return;
            }



            #line default
            #line hidden
            WriteLiteral("\r\n");



            #line 58 "..\..\packages\Update.cshtml"
            Write(RenderPage("_PackageDetails.cshtml", new Dictionary <string, object> {
                { "Package", updatePackage }
            }));


            #line default
            #line hidden
            WriteLiteral("\r\n<br />\r\n<form method=\"post\" action=\"\" id=\"submitForm\">\r\n    ");



            #line 61 "..\..\packages\Update.cshtml"
            Write(AntiForgery.GetHtml());


            #line default
            #line hidden
            WriteLiteral("\r\n    <input type=\"hidden\" name=\"source\" value=\"");



            #line 62 "..\..\packages\Update.cshtml"
            Write(sourceName);


            #line default
            #line hidden
            WriteLiteral("\" />\r\n    <input type=\"hidden\" name=\"package\" value=\"");



            #line 63 "..\..\packages\Update.cshtml"
            Write(packageId);


            #line default
            #line hidden
            WriteLiteral("\" />\r\n    <input type=\"hidden\" name=\"version\" value=\"");



            #line 64 "..\..\packages\Update.cshtml"
            Write(version);


            #line default
            #line hidden
            WriteLiteral("\" />\r\n\r\n    <input type=\"submit\" value=\"");



            #line 66 "..\..\packages\Update.cshtml"
            Write(PackageManagerResources.UpdatePackage);


            #line default
            #line hidden
            WriteLiteral("\" />\r\n    <input type=\"reset\" value=\"");



            #line 67 "..\..\packages\Update.cshtml"
            Write(PackageManagerResources.Cancel);


            #line default
            #line hidden
            WriteLiteral("\" data-returnurl=\"");



            #line 67 "..\..\packages\Update.cshtml"
            Write(packagesHomeUrl);


            #line default
            #line hidden
            WriteLiteral("\" />\r\n    <br /><br />\r\n</form>");
        }
        public override void Execute()
        {
            WriteLiteral("\r\n\r\n");



            WriteLiteral("\r\n");


            DefineSection("PackageHead", () => {
                WriteLiteral("\r\n    <script type=\"text/javascript\" src=\"");



            #line 7 "..\..\packages\Default.cshtml"
                Write(Href("scripts/Default.js"));


            #line default
            #line hidden
                WriteLiteral("\"></script>\r\n    <noscript>");



            #line 8 "..\..\packages\Default.cshtml"
                Write(PackageManagerResources.JavascriptRequired);


            #line default
            #line hidden
                WriteLiteral("</noscript>\r\n");
            });

            WriteLiteral("\r\n");



            #line 10 "..\..\packages\Default.cshtml"

            Page.SectionTitle = PackageManagerResources.SectionTitle;
            // Page Constants
            const int    PackagesPerPage  = 10;
            const string FilterCookieName = "packagesFilter";

            // Request parameters
            var view              = GetView(PageUtils.GetFilterValue(Request, FilterCookieName, "view"));
            var searchTerm        = Request.QueryString["search"];
            var packageSourceName = PageUtils.GetFilterValue(Request, FilterCookieName, "source");

            var packageSource = PageUtils.GetPackageSource(packageSourceName);

            PageUtils.PersistFilter(Response, FilterCookieName, new Dictionary <string, string> {
                { "view", view.ToString() },
                { "source", packageSourceName },
            });

            // Add values to ModelState
            ModelState.SetModelValue("view", view.ToString());

            WebProjectManager projectManager;
            WebGrid           grid;
            int totalPackages = 0;

            try {
                // This entire block needs ot be inside a try catch block. This is necessary because exceptions could be fired at two places
                // 1. When trying to connect to the remote repository. 2. When executing the Linq expression

                IEnumerable <IPackage> packages;

                projectManager = new WebProjectManager(packageSource.Source, PackageManagerModule.SiteRoot);
                // Read packages
                switch (view)
                {
                case View.Updates:
                    packages = projectManager.GetPackagesWithUpdates(searchTerm, packageSource.FilterPreferredPackages);
                    break;

                case View.Online:
                    IQueryable <IPackage> remotePackages = projectManager.GetRemotePackages(searchTerm, packageSource.FilterPreferredPackages);
                    totalPackages = remotePackages.Count();
                    packages      = WebProjectManager.CollapseVersions(remotePackages);
                    break;

                default:
                    packages = projectManager.GetInstalledPackages(searchTerm);
                    break;
                }
                if (view != View.Online)
                {
                    totalPackages = packages.Count();
                }

                grid = new WebGrid(rowsPerPage: PackagesPerPage, pageFieldName: "page");

                packages = packages.Skip(grid.PageIndex * PackagesPerPage)
                           .Take(PackagesPerPage);

                grid.Bind(packages.ToList(), columnNames: Enumerable.Empty <string>(), autoSortAndPage: false, rowCount: totalPackages);
            }
            catch (Exception exception) {
            #line default
            #line hidden
                WriteLiteral("        <div class=\"error message\">");



            #line 69 "..\..\packages\Default.cshtml"
                Write(exception.Message);


            #line default
            #line hidden
                WriteLiteral("</div>\r\n");



            #line 70 "..\..\packages\Default.cshtml"
                return;
            }



            #line default
            #line hidden
            WriteLiteral("\r\n");



            #line 74 "..\..\packages\Default.cshtml"

            var completedAction = Request.QueryString["action-completed"];
            if (!completedAction.IsEmpty())
            {
                var    packageName = Html.Encode(Request.QueryString["packageName"]);
                string message     = null;
                if (completedAction.Equals("Install", StringComparison.OrdinalIgnoreCase))
                {
                    message = String.Format(CultureInfo.CurrentCulture, PackageManagerResources.InstallSuccess, packageName);
                }
                else if (completedAction.Equals("Uninstall", StringComparison.OrdinalIgnoreCase))
                {
                    message = String.Format(CultureInfo.CurrentCulture, PackageManagerResources.UninstallSuccess, packageName);
                }
                else if (completedAction.Equals("Update", StringComparison.OrdinalIgnoreCase))
                {
                    message = String.Format(CultureInfo.CurrentCulture, PackageManagerResources.UpdateSuccess, packageName);
                }

                if (message != null)
                {
            #line default
            #line hidden
                    WriteLiteral("            <div class=\"success message\">\r\n                <img class=\"inline\" sr" +
                                 "c=\"");



            #line 91 "..\..\packages\Default.cshtml"
                    Write(Href(SiteAdmin.GetVirtualPath("~/images/ok.png")));


            #line default
            #line hidden
                    WriteLiteral("\" alt=\"");



            #line 91 "..\..\packages\Default.cshtml"
                    Write(Html.Raw(message));


            #line default
            #line hidden
                    WriteLiteral("\" />&nbsp;");



            #line 91 "..\..\packages\Default.cshtml"
                    Write(Html.Raw(message));


            #line default
            #line hidden
                    WriteLiteral("\r\n            </div>\r\n");



                    WriteLiteral("            <br />\r\n");



            #line 94 "..\..\packages\Default.cshtml"
                }
            }



            #line default
            #line hidden
            WriteLiteral("<form method=\"get\" action=\"\" class=\"group\">\r\n    <div class=\"left form-actions\">\r" +
                         "\n        <label>");



            #line 99 "..\..\packages\Default.cshtml"
            Write(PackageManagerResources.ShowLabel);


            #line default
            #line hidden
            WriteLiteral(":\r\n        ");



            #line 100 "..\..\packages\Default.cshtml"
            Write(Html.DropDownList("view", from v in new[] { View.Installed, View.Online, View.Updates }
                                    select new SelectListItem {
                Text = GetViewName(v), Value = v.ToString()
            }));


            #line default
            #line hidden
            WriteLiteral("\r\n        </label>                           \r\n   \r\n");



            #line 104 "..\..\packages\Default.cshtml"
            if (PackageManagerModule.PackageSources.Count() > 1)
            {
            #line default
            #line hidden


            #line 105 "..\..\packages\Default.cshtml"
                WriteLiteral("            <span ");


            #line default
            #line hidden

            #line 105 "..\..\packages\Default.cshtml"
                if (view == View.Installed)
                {
            #line default
            #line hidden

            #line 105 "..\..\packages\Default.cshtml"
                    Write(Html.Raw("style=\"display: none\""));


            #line default
            #line hidden

            #line 105 "..\..\packages\Default.cshtml"
                    ;
                }

            #line default
            #line hidden
                WriteLiteral(">\r\n                &nbsp;\r\n                <label>");



            #line 108 "..\..\packages\Default.cshtml"
                Write(PackageManagerResources.PackageSourceLabel);


            #line default
            #line hidden
                WriteLiteral(":</label>\r\n                ");



            #line 109 "..\..\packages\Default.cshtml"
                Write(Html.DropDownList("source", from f in PackageManagerModule.PackageSources.OrderBy(p => p.Name)
                                        select new SelectListItem {
                    Value    = f.Name,
                    Text     = f.Name,
                    Selected = f.Name.Equals(packageSourceName, StringComparison.OrdinalIgnoreCase)
                }
                                        ));


            #line default
            #line hidden
                WriteLiteral("\r\n            </span>\r\n");



            #line 117 "..\..\packages\Default.cshtml"
            }


            #line default
            #line hidden
            WriteLiteral("    </div>\r\n\r\n    <div class=\"right\">\r\n        <fieldset class=\"no-border\">\r\n    " +
                         "        <input type=\"text\" id=\"search\" name=\"search\" size=\"30\" value=\"");



            #line 122 "..\..\packages\Default.cshtml"
            Write(searchTerm);


            #line default
            #line hidden
            WriteLiteral("\" />\r\n            <input type=\"submit\" value=\"");



            #line 123 "..\..\packages\Default.cshtml"
            Write(PackageManagerResources.SearchLabel);


            #line default
            #line hidden
            WriteLiteral("\" />\r\n            <input type=\"reset\" id=\"searchReset\" value=\"");



            #line 124 "..\..\packages\Default.cshtml"
            Write(PackageManagerResources.ClearLabel);


            #line default
            #line hidden
            WriteLiteral("\" />\r\n        </fieldset>\r\n    </div>\r\n</form>\r\n\r\n");



            #line 129 "..\..\packages\Default.cshtml"
            if (view != View.Online && !projectManager.LocalRepository.GetPackages().Any())
            {
                var onlineLink = Href(PageUtils.GetPackagesHome()) + "?view=" + View.Online;


            #line default
            #line hidden

            #line 131 "..\..\packages\Default.cshtml"
                Write(Html.Raw(String.Format(CultureInfo.CurrentCulture, PackageManagerResources.NoPackagesInstalled, Html.Encode(onlineLink))));


            #line default
            #line hidden

            #line 131 "..\..\packages\Default.cshtml"

                return;
            }


            #line default
            #line hidden
            WriteLiteral("\r\n");



            #line 135 "..\..\packages\Default.cshtml"
            if (!grid.Rows.Any())
            {
            #line default
            #line hidden
                WriteLiteral("    <h3>");



            #line 136 "..\..\packages\Default.cshtml"
                Write(PackageManagerResources.NoPackagesFound);


            #line default
            #line hidden
                WriteLiteral("</h3>\r\n");



            #line 137 "..\..\packages\Default.cshtml"
            }
            else
            {
            #line default
            #line hidden
                WriteLiteral("    <ul id=\"package-list\">\r\n");



            #line 140 "..\..\packages\Default.cshtml"
                var dataDictionary = new Dictionary <string, object>(1);


            #line default
            #line hidden


            #line 141 "..\..\packages\Default.cshtml"
                foreach (var item in grid.Rows)
                {
                    IPackage package = item.Value;
                    dataDictionary["package"] = package;


            #line default
            #line hidden
                    WriteLiteral("        <li>\r\n            <div class=\"column-left\">\r\n                ");



            #line 146 "..\..\packages\Default.cshtml"
                    Write(RenderPage("_Package.cshtml", dataDictionary));


            #line default
            #line hidden
                    WriteLiteral("\r\n            </div>\r\n            <div class=\"right\">\r\n                <form meth" +
                                 "od=\"get\" action=\"");



            #line 149 "..\..\packages\Default.cshtml"
                    Write(Href(GetPostUrl(view, package, projectManager)));


            #line default
            #line hidden
                    WriteLiteral("\">\r\n                    <input type=\"hidden\" name=\"page\" value=\"");



            #line 150 "..\..\packages\Default.cshtml"
                    Write(grid.PageIndex + 1);


            #line default
            #line hidden
                    WriteLiteral("\" />\r\n                    <input type=\"hidden\" name=\"package\" value=\"");



            #line 151 "..\..\packages\Default.cshtml"
                    Write(package.Id);


            #line default
            #line hidden
                    WriteLiteral("\" />\r\n                    <input type=\"hidden\" name=\"version\" value=\"");



            #line 152 "..\..\packages\Default.cshtml"
                    Write(package.Version);


            #line default
            #line hidden
                    WriteLiteral("\" />\r\n                    <input type=\"hidden\" name=\"packageName\" value=\"");



            #line 153 "..\..\packages\Default.cshtml"
                    Write(package.GetDisplayName());


            #line default
            #line hidden
                    WriteLiteral("\" />\r\n                    <input class=\"formatted\" type=\"submit\" value=\"");



            #line 154 "..\..\packages\Default.cshtml"
                    Write(GetSubmitText(view, package, projectManager));


            #line default
            #line hidden
                    WriteLiteral("\" />\r\n                </form>\r\n            </div>\r\n            <div class=\"clear\"" +
                                 "></div>\r\n        </li>\r\n");



            #line 159 "..\..\packages\Default.cshtml"
                }


            #line default
            #line hidden
                WriteLiteral("    </ul>\r\n");



            #line 161 "..\..\packages\Default.cshtml"
            }


            #line default
            #line hidden


            #line 162 "..\..\packages\Default.cshtml"
            if (totalPackages > PackagesPerPage)
            {
            #line default
            #line hidden
                WriteLiteral("    <div class=\"pager\">\r\n        <strong>");



            #line 164 "..\..\packages\Default.cshtml"
                Write(PackageManagerResources.PageLabel);


            #line default
            #line hidden
                WriteLiteral(": </strong>\r\n        ");



            #line 165 "..\..\packages\Default.cshtml"
                Write(grid.Pager(WebGridPagerModes.FirstLast | WebGridPagerModes.NextPrevious,
                                 nextText: PackageManagerResources.NextText,
                                 previousText: PackageManagerResources.PreviousText));


            #line default
            #line hidden
                WriteLiteral("\r\n    </div>\r\n");



            #line 169 "..\..\packages\Default.cshtml"
            }


            #line default
            #line hidden
            WriteLiteral("\r\n\r\n");
        }
        public override void Execute()
        {


WriteLiteral("\r\n\r\n");





WriteLiteral("\r\n");


DefineSection("PackageHead", () => {

WriteLiteral(" \r\n    <script type=\"text/javascript\" src=\"");


                                   Write(Href("scripts/PackageAction.js"));

WriteLiteral("\"></script>\r\n    <noscript>");


         Write(PackageManagerResources.JavascriptRequired);

WriteLiteral("</noscript>\r\n");


});

WriteLiteral("\r\n");


  
    // Read params from request
    var sourceName = Request["source"];
    var packageId = Request["package"];
    var version = Request["version"];

    var packageSource = PageUtils.GetPackageSource(sourceName);
    
    WebProjectManager projectManager;
    try {
        projectManager = new WebProjectManager(packageSource.Source, PackageManagerModule.SiteRoot);
    } catch (Exception exception) {

WriteLiteral("        <div class=\"error message\">");


                              Write(exception.Message);

WriteLiteral("</div>\r\n");


        return;
    }
    IPackage package = projectManager.SourceRepository.FindPackage(packageId, version != null ? SemanticVersion.Parse(version) : null);

    if (package == null) {
        ModelState.AddFormError(PackageManagerResources.BadRequest);
        
   Write(Html.ValidationSummary());

                                 
        return; 
    } 
    
    Page.SectionTitle = String.Format(CultureInfo.CurrentCulture, PackageManagerResources.InstallPackageDesc, package.GetDisplayName());

    var packagesHomeUrl = Href(PageUtils.GetPackagesHome(), Request.Url.Query);
    if (IsPost) {
        AntiForgery.Validate();
        try {
            projectManager.InstallPackage(package);   
        } catch (Exception exception) {
            ModelState.AddFormError(exception.Message);
        }
        
        if (ModelState.IsValid) {
            Response.Redirect(packagesHomeUrl + "&action-completed=Install");
        }
        else {
            
       Write(Html.ValidationSummary(String.Format(CultureInfo.CurrentCulture, PackageManagerResources.PackageInstallationError, package.GetDisplayName())));

                                                                                                                                                          
            return;
        }
    }


WriteLiteral("\r\n");


Write(RenderPage("_PackageDetails.cshtml", new Dictionary<string, object>{ {"Package", package} }));

WriteLiteral("\r\n\r\n");


  
    var licensePackages = projectManager.GetPackagesRequiringLicenseAcceptance(package);
    if (licensePackages.Any()) {

WriteLiteral("       <hr />\r\n");



WriteLiteral("       <ul>\r\n");


             foreach(var licensePackage in licensePackages.Where(p => PageUtils.IsValidLicenseUrl(p.LicenseUrl))){

WriteLiteral("                <li>\r\n                    <strong>");


                       Write(licensePackage.Id);

WriteLiteral(" ");


                                          Write(licensePackage.Version);

WriteLiteral("</strong> \r\n                    (");


                Write(PackageManagerResources.AuthorsLabel);

WriteLiteral(": <span class=\"package-author\">");


                                                                                    Write(String.Join(PackageManagerResources.WordSeparator, licensePackage.Authors));

WriteLiteral("</span>)\r\n                    <br />\r\n                    <a href=\"");


                        Write(licensePackage.LicenseUrl);

WriteLiteral("\" target=\"_blank\">");


                                                                    Write(PackageManagerResources.ViewLicenseTerms);

WriteLiteral("</a>\r\n                </li>\r\n");


            }

WriteLiteral("       </ul>   \r\n");


    }else {

WriteLiteral("        <br />\r\n");



WriteLiteral("        <hr />\r\n");


    }


WriteLiteral("\r\n<form method=\"post\" action=\"\" id=\"submitForm\">\r\n<p>");


Write(PackageManagerResources.Disclaimer);

WriteLiteral("</p>    \r\n<fieldset class=\"no-border install\">\r\n    <input type=\"hidden\" name=\"so" +
"urce\" value=\"");


                                         Write(sourceName);

WriteLiteral("\" />\r\n    <input type=\"hidden\" name=\"package\" value=\"");


                                          Write(packageId);

WriteLiteral("\" />\r\n    <input type=\"hidden\" name=\"version\" value=\"");


                                          Write(version);

WriteLiteral("\" />\r\n    ");


Write(AntiForgery.GetHtml());

WriteLiteral("\r\n\r\n    <input type=\"submit\" value=\"");


                           Write(PackageManagerResources.InstallPackage);

WriteLiteral("\" />\r\n    <input type=\"reset\" value=\"");


                          Write(PackageManagerResources.Cancel);

WriteLiteral("\" data-returnurl=\"");


                                                                           Write(packagesHomeUrl);

WriteLiteral("\" />\r\n</fieldset>\r\n    \r\n\r\n</form>");


        }
        public override void Execute()
        {


WriteLiteral("\r\n\r\n");




WriteLiteral("\r\n");


DefineSection("PackageHead", () => {

WriteLiteral(" \r\n    <script type=\"text/javascript\" src=\"");


                                   Write(Href("scripts/PackageAction.js"));

WriteLiteral("\"></script>\r\n    <noscript>");


         Write(PackageManagerResources.JavascriptRequired);

WriteLiteral("</noscript>\r\n");


});

WriteLiteral("\r\n\r\n");


  
    // Read from request  
    var packageId = Request["package"];
    var version = Request["version"];

    WebProjectManager projectManager;
    try {
        projectManager = new WebProjectManager(PackageManagerModule.ActiveSource.Source, PackageManagerModule.SiteRoot);
    } catch (Exception exception) {

WriteLiteral("        <div class=\"error message\">");


                              Write(exception.Message);

WriteLiteral("</div>\r\n");


        return;
    }

    IPackage package = projectManager.LocalRepository.FindPackage(packageId, version != null ? SemanticVersion.Parse(version) : null);

    if (package == null) {
        ModelState.AddFormError(PackageManagerResources.BadRequest);
        
   Write(Html.ValidationSummary());

                                 
        return; 
    }

    // Set up layout values
    var packagesHomeUrl = Href(PageUtils.GetPackagesHome(), Request.Url.Query);
    Page.SectionTitle = String.Format(CultureInfo.CurrentCulture, PackageManagerResources.UninstallPackageDesc, package.GetDisplayName());

    if (IsPost) {
        AntiForgery.Validate();
        bool removeDependencies = Request.Form["removeDependencies"].AsBool(false);
        try { 
            projectManager.UninstallPackage(package, removeDependencies: removeDependencies);
        } catch (Exception exception) {
            ModelState.AddFormError(exception.Message);
        }
        
        if (ModelState.IsValid) {
            Response.Redirect(packagesHomeUrl + "&action-completed=Uninstall");
        }
        else {
            
       Write(Html.ValidationSummary(String.Format(CultureInfo.CurrentCulture, PackageManagerResources.PackageUninstallationError, package.GetDisplayName())));

                                                                                                                                                            
        }
        return;
    }



  
    var encodedPackageName = Html.Encode(package.GetDisplayName());

WriteLiteral("    <h4>");


   Write(Html.Raw(String.Format(CultureInfo.CurrentCulture, PackageManagerResources.AreYouSureUninstall, encodedPackageName)));

WriteLiteral("</h4>\r\n");




WriteLiteral("<form method=\"post\" action=\"\" id=\"submitForm\">\r\n<fieldset class=\"no-border\">\r\n   " +
" ");


Write(AntiForgery.GetHtml());

WriteLiteral("\r\n    <input type=\"hidden\" name=\"package\" value=\"");


                                          Write(packageId);

WriteLiteral("\" />\r\n    <input type=\"hidden\" name=\"version\" value=\"");


                                          Write(version);

WriteLiteral("\" />\r\n");


     if (package.Dependencies.Any()) {

WriteLiteral("        <div>\r\n            <label><input type=\"checkbox\" name=\"removeDependencies" +
"\" value=\"true\" checked=\"checked\"/>");


                                                                                               Write(PackageManagerResources.RemoveDependencies);

WriteLiteral("</label>\r\n        </div>\r\n");



WriteLiteral("        <br />\r\n");


    }

WriteLiteral("    <input type=\"submit\" value=\"");


                           Write(PackageManagerResources.UninstallPackage);

WriteLiteral("\" />\r\n    &nbsp;\r\n    <input type=\"reset\" value=\"");


                          Write(PackageManagerResources.Cancel);

WriteLiteral("\" data-returnurl=\"");


                                                                           Write(packagesHomeUrl);

WriteLiteral("\" />\r\n</fieldset>\r\n</form>");


        }