Added pull document function in UI.

pull/2826/head
maliming 6 years ago
parent 232186aada
commit f0d9083aa6

@ -6,11 +6,13 @@
"Permission:Edit": "Edit",
"Permission:Delete": "Delete",
"Permission:Create": "Create",
"Permission:Documents": "Documents",
"Menu:DocumentManagement": "Documents",
"Menu:ProjectManagement": "Projects",
"CreateANewProject": "Create new project",
"Edit": "Edit",
"Create": "Create",
"Pull": "Pull",
"Projects": "Projects",
"Name": "Name",
"ShortName": "ShortName",
@ -27,6 +29,9 @@
"DisplayName:LatestVersionBranchName": "Latest version branch name",
"DisplayName:GitHubRootUrl": "GitHub root URL",
"DisplayName:GitHubAccessToken": "GitHub access token",
"DisplayName:GitHubUserAgent": "GitHub user agent"
"DisplayName:GitHubUserAgent": "GitHub user agent",
"DisplayName:All": "Pull all",
"DisplayName:LanguageCode": "Language code",
"DisplayName:Version": "Version"
}
}

@ -6,11 +6,13 @@
"Permission:Edit": "Düzenle",
"Permission:Delete": "Sil",
"Permission:Create": "Oluştur",
"Permission:Documents": "Döküman",
"Menu:DocumentManagement": "Dökümanlar",
"Menu:ProjectManagement": "Projeler",
"CreateANewProject": "Yeni proje oluştur",
"Edit": "Düzenle",
"Create": "Yeni oluştur",
"Pull": "çekme",
"Projects": "Projeler",
"Name": "İsim",
"ShortName": "Kısa isim",
@ -26,6 +28,9 @@
"DisplayName:MainWebsiteUrl": "Ana web site URL",
"DisplayName:LatestVersionBranchName": "Son versiyon Branch adı",
"DisplayName:GitHubRootUrl": "GitHub kök adresi",
"DisplayName:GitHubAccessToken": "GitHub erişim token"
"DisplayName:GitHubAccessToken": "GitHub erişim token",
"DisplayName:All": "Çekme bütün",
"DisplayName:LanguageCode": "Dil kodu",
"DisplayName:Version": "versiyon"
}
}

@ -6,11 +6,13 @@
"Permission:Edit": "编辑",
"Permission:Delete": "删除",
"Permission:Create": "创建",
"Permission:Documents": "文档",
"Menu:DocumentManagement": "文档",
"Menu:ProjectManagement": "项目",
"CreateANewProject": "创建新项目",
"Edit": "编辑",
"Create": "创建",
"Pull": "拉取",
"Projects": "项目",
"Name": "名称",
"ShortName": "简称",
@ -27,6 +29,9 @@
"DisplayName:LatestVersionBranchName": "最新版本的分支名称",
"DisplayName:GitHubRootUrl": "GitHub根网址",
"DisplayName:GitHubAccessToken": "GitHub访问令牌",
"DisplayName:GitHubUserAgent": "GitHub用户代理"
"DisplayName:GitHubUserAgent": "GitHub用户代理",
"DisplayName:All": "拉取所有",
"DisplayName:LanguageCode": "语言代码",
"DisplayName:Version": "版本"
}
}

@ -6,11 +6,13 @@
"Permission:Edit": "編輯",
"Permission:Delete": "刪除",
"Permission:Create": "建立",
"Permission:Documents": "文件",
"Menu:DocumentManagement": "文件管理",
"Menu:ProjectManagement": "專案管理",
"CreateANewProject": "建立新專案",
"Edit": "編輯",
"Create": "建立",
"Pull": "拉取",
"Projects": "專案",
"Name": "名稱",
"ShortName": "簡稱",
@ -27,6 +29,9 @@
"DisplayName:LatestVersionBranchName": "最新版本的分支名稱",
"DisplayName:GitHubRootUrl": "GitHub根網址",
"DisplayName:GitHubAccessToken": "GitHub 存取Token ",
"DisplayName:GitHubUserAgent": "GitHub 使用者代理"
"DisplayName:GitHubUserAgent": "GitHub 使用者代理",
"DisplayName:All": "拉取所有",
"DisplayName:LanguageCode": "語言代碼",
"DisplayName:Version": "版本"
}
}

@ -1,5 +1,6 @@
using AutoMapper;
using Volo.Abp.AutoMapper;
using Volo.Docs.Admin.Documents;
using Volo.Docs.Admin.Pages.Docs.Admin.Projects;
using Volo.Docs.Admin.Projects;
@ -15,6 +16,9 @@ namespace Volo.Docs.Admin
CreateMap<ProjectDto, EditModel.EditGithubProjectViewModel > ()
.Ignore(x => x.GitHubAccessToken).Ignore(x => x.GitHubRootUrl).Ignore(x => x.GitHubUserAgent);
CreateMap<PullModel.PullDocumentViewModel, PullAllDocumentInput>();
CreateMap<PullModel.PullDocumentViewModel, PullDocumentInput>();
}
}
}

@ -20,6 +20,7 @@
<abp-script src="/Pages/Docs/Admin/Projects/index.js" />
<abp-script src="/Pages/Docs/Admin/Projects/create.js" />
<abp-script src="/Pages/Docs/Admin/Projects/edit.js" />
<abp-script src="/Pages/Docs/Admin/Projects/pull.js" />
}
<abp-card>

@ -0,0 +1,22 @@
@page
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal
@using Volo.Docs.Admin.Pages.Docs.Admin.Projects
@inherits Volo.Docs.Admin.Pages.Docs.Admin.DocsAdminPage
@model Volo.Docs.Admin.Pages.Docs.Admin.Projects.PullModel
@{
Layout = null;
}
@if (Model.PullDocument != null)
{
<abp-dynamic-form submit-button="false" abp-model="@Model.PullDocument" asp-page="/Docs/Admin/Projects/Pull">
<abp-modal size="@(AbpModalSize.Default)">
<abp-modal-header title="@L["Pull"].Value"></abp-modal-header>
<abp-modal-body>
<abp-form-content />
</abp-modal-body>
<abp-modal-footer buttons="@(AbpModalButtons.Cancel|AbpModalButtons.Save)">
</abp-modal-footer>
</abp-modal>
</abp-dynamic-form>
}

@ -0,0 +1,75 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Docs.Admin.Documents;
using Volo.Docs.Admin.Projects;
using Volo.Docs.Documents;
namespace Volo.Docs.Admin.Pages.Docs.Admin.Projects
{
public class PullModel : DocsAdminPageModel
{
[BindProperty]
public PullDocumentViewModel PullDocument { get; set; }
private readonly IProjectAdminAppService _projectAppService;
private readonly IDocumentAdminAppService _documentAppService;
public PullModel(IProjectAdminAppService projectAppService,
IDocumentAdminAppService documentAppService)
{
_projectAppService = projectAppService;
_documentAppService = documentAppService;
}
public async Task<ActionResult> OnGetAsync(Guid id)
{
var project = await _projectAppService.GetAsync(id);
PullDocument = new PullDocumentViewModel()
{
ProjectId = project.Id,
All = false
};
return Page();
}
public async Task<IActionResult> OnPostAsync()
{
if (PullDocument.All)
{
await _documentAppService.PullAllAsync(
ObjectMapper.Map<PullDocumentViewModel, PullAllDocumentInput>(PullDocument));
}
else
{
await _documentAppService.PullAsync(
ObjectMapper.Map<PullDocumentViewModel, PullDocumentInput>(PullDocument));
}
return NoContent();
}
public class PullDocumentViewModel
{
[HiddenInput]
public Guid ProjectId { get; set; }
public bool All { get; set; }
[Required]
[StringLength(DocumentConsts.MaxNameLength)]
public string Name { get; set; }
[Required]
[StringLength(DocumentConsts.MaxLanguageCodeNameLength)]
public string LanguageCode { get; set; }
[Required]
[StringLength(DocumentConsts.MaxVersionNameLength)]
public string Version { get; set; }
}
}
}

@ -0,0 +1,23 @@
var abp = abp || {};
$(function () {
abp.modals.projectPull = function () {
var initModal = function (publicApi, args) {
var $form = publicApi.getForm();
var fg = $form.find("#PullDocument_Name").parent();
var nameInput = fg.html();
$form.find("input:checkbox").change(function() {
if ($(this).prop("checked")) {
fg.html("");
} else {
fg.html(nameInput);
}
});
};
return {
initModal: initModal
};
};
});

@ -12,6 +12,11 @@
modalClass: 'projectEdit'
});
var _pullModal = new abp.ModalManager({
viewUrl: abp.appPath + 'Docs/Admin/Projects/Pull',
modalClass: 'projectPull'
});
var _dataTable = $('#ProjectsTable').DataTable(abp.libs.datatables.normalizeConfiguration({
processing: true,
@ -48,6 +53,15 @@
_dataTable.ajax.reload();
});
}
},
{
text: l('Pull'),
visible: abp.auth.isGranted('Docs.Admin.Documents'),
action: function (data) {
_pullModal.open({
Id: data.record.id
});
}
}
]
}

@ -172,16 +172,15 @@ namespace Volo.Docs.Documents
return CreateDocumentWithDetailsDto(project, sourceDocument);
}
/*
if (HostEnvironment.IsDevelopment())
{
return await GetDocumentAsync();
}*/
}
var document = await _documentRepository.FindAsync(project.Id, documentName, languageCode, version);
//TODO: Configurable cache time?
if (document == null || document.LastCachedTime + TimeSpan.FromHours(12) < DateTime.Now)
if (document == null || document.LastCachedTime + TimeSpan.FromDays(30) < DateTime.Now)
{
return await GetDocumentAsync();
}

@ -34,7 +34,7 @@ namespace Volo.Docs.GitHub.Documents
var userAgent = project.GetGithubUserAgentOrNull();
var rawRootUrl = CalculateRawRootUrlWithLanguageCode(rootUrl, languageCode);
var rawDocumentUrl = rawRootUrl + documentName;
var commitHistoryUrl = project.GetGitHubUrlForCommitHistory() + documentName;
var commitHistoryUrl = project.GetGitHubUrlForCommitHistory() + languageCode + "/" + documentName;
var isNavigationDocument = documentName == project.NavigationDocumentName;
var isParameterDocument = documentName == project.ParametersDocumentName;
var editLink = rootUrl.ReplaceFirst("/tree/", "/blob/") + languageCode + "/" + documentName;
@ -49,7 +49,7 @@ namespace Volo.Docs.GitHub.Documents
var fileCommits = await GetFileCommitsAsync(project, version, $"docs/{languageCode}/{documentName}");
return new Document(GuidGenerator.Create(),
var document= new Document(GuidGenerator.Create(),
project.Id,
documentName,
version,
@ -64,6 +64,23 @@ namespace Volo.Docs.GitHub.Documents
fileCommits.FirstOrDefault()?.Commit.Author.Date.DateTime ?? DateTime.MinValue,
fileCommits.Count,
DateTime.Now);
var authors = fileCommits
.Where(x => x.Author != null)
.Select(x => x.Author)
.GroupBy(x => x.Id)
.OrderByDescending(x => x.Count())
.Select(x => x.FirstOrDefault()).ToList();
if (!isNavigationDocument && !isParameterDocument)
{
foreach (var author in authors)
{
document.AddContributor(author.Login, author.HtmlUrl, author.AvatarUrl);
}
}
return document;
}
public async Task<List<VersionInfo>> GetVersionsAsync(Project project)
@ -195,40 +212,6 @@ namespace Volo.Docs.GitHub.Documents
}
}
/*
private async Task<List<DocumentContributor>> GetContributors(string url, string token, string userAgent)
{
var contributors = new List<DocumentContributor>();
try
{
var commitsJsonAsString = await DownloadWebContentAsStringAsync(url, token, userAgent);
var commits = JArray.Parse(commitsJsonAsString);
foreach (var commit in commits)
{
var author = commit["author"];
contributors.Add(new DocumentContributor
{
Username = (string)author["login"],
UserProfileUrl = (string)author["html_url"],
AvatarUrl = (string)author["avatar_url"]
});
}
contributors = contributors.GroupBy(c => c.Username).OrderByDescending(c=>c.Count())
.Select( c => c.FirstOrDefault()).ToList();
}
catch (Exception ex)
{
Logger.LogWarning(ex.Message);
}
return contributors;
}
*/
private static string CalculateRawRootUrlWithLanguageCode(string rootUrl, string languageCode)
{
return (rootUrl

Loading…
Cancel
Save