diff --git a/src/NuGet.Services.Entities/Package.cs b/src/NuGet.Services.Entities/Package.cs index f536dfb102..9c5d8e988a 100644 --- a/src/NuGet.Services.Entities/Package.cs +++ b/src/NuGet.Services.Entities/Package.cs @@ -156,6 +156,18 @@ public bool HasReadMe } } + /// + /// Signifies whether or not the embedded Readme exists + /// + [NotMapped] + public bool HasEmbeddedReadme + { + get + { + return HasReadMe && EmbeddedReadmeType != EmbeddedReadmeFileType.Absent; + } + } + public bool RequiresLicenseAcceptance { get; set; } public bool DevelopmentDependency { get; set; } diff --git a/src/NuGetGallery/Helpers/ViewModelExtensions/ManagePackageViewModelFactory.cs b/src/NuGetGallery/Helpers/ViewModelExtensions/ManagePackageViewModelFactory.cs index 6356f4cf4e..1f0c3052a5 100644 --- a/src/NuGetGallery/Helpers/ViewModelExtensions/ManagePackageViewModelFactory.cs +++ b/src/NuGetGallery/Helpers/ViewModelExtensions/ManagePackageViewModelFactory.cs @@ -86,8 +86,6 @@ private ManagePackageViewModel SetupInternal( var versionDeprecationStateDictionary = new Dictionary(); viewModel.VersionDeprecationStateDictionary = versionDeprecationStateDictionary; - var submitUrlTemplate = url.PackageVersionActionTemplate("Edit"); - var getReadMeUrlTemplate = url.PackageVersionActionTemplate("GetReadMeMd"); foreach (var versionSelectPackage in versionSelectPackages) { var text = PackageHelper.GetSelectListText(versionSelectPackage); @@ -106,10 +104,7 @@ private ManagePackageViewModel SetupInternal( var model = new TrivialPackageVersionModel(versionSelectPackage); versionReadMeStateDictionary.Add( value, - new ManagePackageViewModel.VersionReadMeState( - submitUrlTemplate.Resolve(model), - getReadMeUrlTemplate.Resolve(model), - null)); + GetVersionReadMeState(model, url)); versionDeprecationStateDictionary.Add( value, @@ -118,7 +113,7 @@ private ManagePackageViewModel SetupInternal( // Update edit model with the readme.md data. viewModel.ReadMe = new EditPackageVersionReadMeRequest(); - if (package.HasReadMe) + if (package.HasReadMe && package.EmbeddedReadmeType == EmbeddedReadmeFileType.Absent) { viewModel.ReadMe.ReadMe.SourceType = ReadMeService.TypeWritten; viewModel.ReadMe.ReadMe.SourceText = readMe; @@ -157,5 +152,21 @@ private static ManagePackageViewModel.VersionDeprecationState GetVersionDeprecat return result; } + + private static ManagePackageViewModel.VersionReadMeState GetVersionReadMeState( + TrivialPackageVersionModel model, + UrlHelper url) + { + var submitUrlTemplate = url.PackageVersionActionTemplate("Edit"); + var getReadMeUrlTemplate = url.PackageVersionActionTemplate("GetReadMeMd"); + + var result = new ManagePackageViewModel.VersionReadMeState( + submitUrlTemplate.Resolve(model), + getReadMeUrlTemplate.Resolve(model), + readMe: null); + + result.HasEmbeddedReadme = model.HasEmbeddedReadme; + return result; + } } } \ No newline at end of file diff --git a/src/NuGetGallery/Scripts/gallery/page-edit-readme.js b/src/NuGetGallery/Scripts/gallery/page-edit-readme.js index 00eeacebac..2257953c51 100644 --- a/src/NuGetGallery/Scripts/gallery/page-edit-readme.js +++ b/src/NuGetGallery/Scripts/gallery/page-edit-readme.js @@ -14,14 +14,15 @@ _submitted = false; _viewModel = model; _changedState = {}; + + _selectVersion = $('.page-edit-package #input-select-readme'); + var defaultVersion = _selectVersion.val(); + BindReadMeDataManager.init(previewUrl); bindData(_viewModel); $(window).on('beforeunload', confirmLeave); - - _selectVersion = $('.page-edit-package #input-select-readme'); - var defaultVersion = _selectVersion.val(); _selectVersion.change(function () { var selectedVersion = $(this).val(); @@ -184,6 +185,21 @@ if (model === null || !model.IsSymbolsPackage) { BindReadMeDataManager.bindReadMeData(model); } + + var selectedVersion = _selectVersion.val(); + + if (!selectedVersion) { + // No version is selected. + return; + } + + if (model.Versions[selectedVersion].HasEmbeddedReadme) { + $('#edit-markdown-button').addClass('hidden'); + $('#verify-submit-button').addClass('hidden'); + } else { + $('#edit-markdown-button').removeClass('hidden'); + $('#verify-submit-button').removeClass('hidden'); + } } }; }()); diff --git a/src/NuGetGallery/ViewModels/DisplayPackageViewModel.cs b/src/NuGetGallery/ViewModels/DisplayPackageViewModel.cs index d91cfeee36..77aa462788 100644 --- a/src/NuGetGallery/ViewModels/DisplayPackageViewModel.cs +++ b/src/NuGetGallery/ViewModels/DisplayPackageViewModel.cs @@ -38,6 +38,7 @@ public class DisplayPackageViewModel : ListPackageItemViewModel public bool IsPackageDependentsEnabled { get; set; } public NuGetPackageGitHubInformation GitHubDependenciesInformation { get; set; } public bool HasEmbeddedIcon { get; set; } + public bool HasEmbeddedReadmeFile { get; set; } public PackageDependents PackageDependents { get; set; } public bool HasNewerPrerelease diff --git a/src/NuGetGallery/ViewModels/ManagePackageViewModel.cs b/src/NuGetGallery/ViewModels/ManagePackageViewModel.cs index 3ea41bcfe4..92d772ea3f 100644 --- a/src/NuGetGallery/ViewModels/ManagePackageViewModel.cs +++ b/src/NuGetGallery/ViewModels/ManagePackageViewModel.cs @@ -50,6 +50,7 @@ public VersionReadMeState(string submitUrl, string getReadMeUrl, string readMe) public string SubmitUrl { get; } public string GetReadMeUrl { get; } public string ReadMe { get; } + public bool HasEmbeddedReadme { get; set; } } /// diff --git a/src/NuGetGallery/ViewModels/TrivialPackageVersionModel.cs b/src/NuGetGallery/ViewModels/TrivialPackageVersionModel.cs index 6b6b4d76e6..a48d3e1aaf 100644 --- a/src/NuGetGallery/ViewModels/TrivialPackageVersionModel.cs +++ b/src/NuGetGallery/ViewModels/TrivialPackageVersionModel.cs @@ -10,6 +10,7 @@ public TrivialPackageVersionModel(Package package) { Id = package.PackageRegistration.Id; Version = package.NormalizedVersion; + HasEmbeddedReadme = package.HasEmbeddedReadme; } public TrivialPackageVersionModel(string id, string version) @@ -20,5 +21,6 @@ public TrivialPackageVersionModel(string id, string version) public string Id { get; set; } public string Version { get; set; } + public bool HasEmbeddedReadme { get; set; } } } \ No newline at end of file diff --git a/src/NuGetGallery/Views/Packages/Manage.cshtml b/src/NuGetGallery/Views/Packages/Manage.cshtml index 9139534e2e..af3e1370f4 100644 --- a/src/NuGetGallery/Views/Packages/Manage.cshtml +++ b/src/NuGetGallery/Views/Packages/Manage.cshtml @@ -105,7 +105,7 @@ EditReadMeManager.init( readMeModel, '@Url.PreviewReadMe()'); - + // Set up delete section var deleteVersionSelect = $('.page-delete-package #input-select-version'); deleteVersionSelect.change(function () { @@ -141,4 +141,4 @@ @Scripts.Render("~/Scripts/gallery/page-manage-deprecation.min.js") @Scripts.Render("~/Scripts/gallery/page-delete-package.min.js") @Scripts.Render("~/Scripts/gallery/page-edit-readme.min.js") -} +} \ No newline at end of file diff --git a/src/NuGetGallery/Views/Packages/_ManageDocumentation.cshtml b/src/NuGetGallery/Views/Packages/_ManageDocumentation.cshtml index 9546ebbfae..60dbec160d 100644 --- a/src/NuGetGallery/Views/Packages/_ManageDocumentation.cshtml +++ b/src/NuGetGallery/Views/Packages/_ManageDocumentation.cshtml @@ -62,7 +62,7 @@ - @Html.Partial("_EditForm") + @Html.Partial("_EditForm", Model) \ No newline at end of file