Browse Source

Включение/выключение компетенций работает корректно #128

в сырое содержимое выводим преобразованную информацию с найти.
При сохранении изменений в БД удаляем ссылку на найти.
В сырое содержимое (rawContent) выводим ссылку на найти,
иначе неправильно будут вычисляться data-source-position.
Был альтернативный вариант,
вычислять data-source-position на основании трансформированного содержимого (с найти),
но сохранять в сырое содержимое изначальное, нетрансформированное, содержимое.
pull/150/head
Artur Galyamov 2 years ago
parent
commit
c3da3fd388
  1. 19
      routers/web/repo/competence.go
  2. 8
      routers/web/repo/resource.go
  3. 2
      templates/repo/competences/list.tmpl

19
routers/web/repo/competence.go

@ -7,6 +7,7 @@ import (
"code.gitea.io/gitea/modules/markup"
"code.gitea.io/gitea/modules/markup/markdown"
"net/http"
"regexp"
)
const (
@ -18,7 +19,7 @@ func Competences(ctx *context.Context) {
repo := ctx.Data["Repository"]
var err error
ctx.Data["RenderedCompetences"], err = GetRenderedTrustPropsWithSearchLinks(ctx, repo, "Competences")
ctx.Data["RenderedCompetences"], ctx.Data["TransformedTrustProps"], err = GetRenderedTrustPropsWithSearchLinks(ctx, repo, "Competences")
if err != nil {
ctx.ServerError("Render", err)
@ -48,7 +49,12 @@ func ToggleCompetences(ctx *context.Context) {
return
}
repo.Competences = toggledContent
repo.Competences, err = trimSearchLinks(toggledContent)
if err != nil {
ctx.ServerError("trimSearchLinks", err)
return
}
err = repo_model.UpdateRepositoryCols(repo, "competences")
if err != nil {
ctx.ServerError("ToggleCompetences", err)
@ -64,3 +70,12 @@ func ToggleCompetences(ctx *context.Context) {
responseBody,
)
}
func trimSearchLinks(content string) (string, error) {
regExp, err := regexp.Compile(`\s*\[найти\]\(.+\s*\)`)
if err != nil {
return "", err
}
trimmedSearchLink := regExp.ReplaceAllString(content, "")
return trimmedSearchLink, nil
}

8
routers/web/repo/resource.go

@ -19,7 +19,7 @@ func Resources(ctx *context.Context) {
repo := ctx.Data["Repository"]
var err error
ctx.Data["RenderedResources"], err = GetRenderedTrustPropsWithSearchLinks(ctx, repo, "Resources")
ctx.Data["RenderedResources"], ctx.Data["TransformedTrustProps"], err = GetRenderedTrustPropsWithSearchLinks(ctx, repo, "Resources")
if err != nil {
ctx.ServerError("Render", err)
@ -29,7 +29,7 @@ func Resources(ctx *context.Context) {
ctx.HTML(http.StatusOK, tplResources)
}
func GetRenderedTrustPropsWithSearchLinks(ctx *context.Context, repo interface{}, fieldName string) (string, error) {
func GetRenderedTrustPropsWithSearchLinks(ctx *context.Context, repo interface{}, fieldName string) (string, string, error) {
trustProps := user.GetTextField(repo, fieldName)
var regExp *regexp.Regexp
@ -37,7 +37,7 @@ func GetRenderedTrustPropsWithSearchLinks(ctx *context.Context, repo interface{}
regExp, err = regexp.Compile(`- \[ \] (.+)`)
if err != nil {
return "", err
return "", "", err
}
trustPropNamesMatches := regExp.FindAllStringSubmatch(trustProps, -1)
@ -66,5 +66,5 @@ func GetRenderedTrustPropsWithSearchLinks(ctx *context.Context, repo interface{}
var renderedTrustPropsWithSafeURLs string
renderedTrustPropsWithSafeURLs, err = user.GetRenderedTextFieldByValue(ctx, repo, transformedTrustProps)
renderedTrustPropsWithTargetBlank := strings.ReplaceAll(renderedTrustPropsWithSafeURLs, "<a", "<a target='blank'")
return renderedTrustPropsWithTargetBlank, err
return renderedTrustPropsWithTargetBlank, transformedTrustProps, err
}

2
templates/repo/competences/list.tmpl

@ -6,7 +6,7 @@
<div class="render-content markup" data-can-edit="true">
{{$.RenderedCompetences | Str2html}}
</div>
<div class="raw-content hide">{{.Repository.Competences}}</div>
<div class="raw-content hide">{{$.TransformedTrustProps}}</div>
<div class="edit-content-zone hide" data-update-url="{{$.RepoLink}}/competences" data-context="{{.RepoLink}}"></div>
</div>
</div>

Loading…
Cancel
Save