Didn't have the chance to migrate //all// templates just yet. We'll get there.
* Implement yet another template system
* Move orphans to the new system and fix a bug in it
* Link orphans in the admin panel
* Move the backlink handlers to the web package
* Move auth routing to web
* Move /user-list to the new system
* Move change password and translate it
* Move stuff
* Move admin-related stuff to the web
* Move a lot of files into internal dir
Outside of it are web and stuff that needs further refactoring
* Fix static not loading and de-qtpl tree
* Move tree to internal
* Keep the globe on the same line #230
* Revert "Keep the globe on the same line #230"
This reverts commit ae78e5e459.
* Migrate templates from hypview: delete, edit, start empty and existing WIP
The delete media view was removed, I didn't even know it still existed as a GET. A rudiment.
* Make views multi-file and break compilation
* Megarefactoring of hypha views
* Auth-related stuffs
* Fix some of those weird imports
* Migrate cat views
* Fix cat js
* Lower standards
* Internalize trauma
52 lines
1.9 KiB
Go
52 lines
1.9 KiB
Go
package backlinks
|
|
|
|
import (
|
|
"git.sr.ht/~bouncepaw/mycomarkup/v5"
|
|
"git.sr.ht/~bouncepaw/mycomarkup/v5/links"
|
|
"git.sr.ht/~bouncepaw/mycomarkup/v5/mycocontext"
|
|
"git.sr.ht/~bouncepaw/mycomarkup/v5/tools"
|
|
"github.com/bouncepaw/mycorrhiza/internal/hyphae"
|
|
"github.com/bouncepaw/mycorrhiza/mycoopts"
|
|
)
|
|
|
|
// UpdateBacklinksAfterEdit is a creation/editing hook for backlinks index
|
|
func UpdateBacklinksAfterEdit(h hyphae.Hypha, oldText string) {
|
|
oldLinks := extractHyphaLinksFromContent(h.CanonicalName(), oldText)
|
|
newLinks := extractHyphaLinks(h)
|
|
backlinkConveyor <- backlinkIndexEdit{h.CanonicalName(), oldLinks, newLinks}
|
|
}
|
|
|
|
// UpdateBacklinksAfterDelete is a deletion hook for backlinks index
|
|
func UpdateBacklinksAfterDelete(h hyphae.Hypha, oldText string) {
|
|
oldLinks := extractHyphaLinksFromContent(h.CanonicalName(), oldText)
|
|
backlinkConveyor <- backlinkIndexDeletion{h.CanonicalName(), oldLinks}
|
|
}
|
|
|
|
// UpdateBacklinksAfterRename is a renaming hook for backlinks index
|
|
func UpdateBacklinksAfterRename(h hyphae.Hypha, oldName string) {
|
|
actualLinks := extractHyphaLinks(h)
|
|
backlinkConveyor <- backlinkIndexRenaming{oldName, h.CanonicalName(), actualLinks}
|
|
}
|
|
|
|
// extractHyphaLinks extracts hypha links from a desired hypha
|
|
func extractHyphaLinks(h hyphae.Hypha) []string {
|
|
return extractHyphaLinksFromContent(h.CanonicalName(), fetchText(h))
|
|
}
|
|
|
|
// extractHyphaLinksFromContent extracts local hypha links from the provided text.
|
|
func extractHyphaLinksFromContent(hyphaName string, contents string) []string {
|
|
ctx, _ := mycocontext.ContextFromStringInput(contents, mycoopts.MarkupOptions(hyphaName))
|
|
linkVisitor, getLinks := tools.LinkVisitor(ctx)
|
|
// Ignore the result of BlockTree because we call it for linkVisitor.
|
|
_ = mycomarkup.BlockTree(ctx, linkVisitor)
|
|
foundLinks := getLinks()
|
|
var result []string
|
|
for _, link := range foundLinks {
|
|
switch link := link.(type) {
|
|
case *links.LocalLink:
|
|
result = append(result, link.Target(ctx))
|
|
}
|
|
}
|
|
return result
|
|
}
|