mirror of
https://github.com/osmarks/mycorrhiza.git
synced 2025-01-05 17:40:26 +00:00
Fix textual hypha creation
This commit is contained in:
parent
6fc5cf994e
commit
ee233b9577
@ -21,7 +21,7 @@ func Index(path string) {
|
||||
for nh := range ch {
|
||||
switch oh := ByName(nh.CanonicalName()).(type) {
|
||||
case *EmptyHypha:
|
||||
insert(nh)
|
||||
Insert(nh)
|
||||
default:
|
||||
// In case of conflicts the newer hypha overwrites the previous
|
||||
switch nh, oh := nh.(*NonEmptyHypha), oh.(*NonEmptyHypha); {
|
||||
|
@ -60,8 +60,8 @@ func RenameHyphaTo(h Hypher, newName string) {
|
||||
h.Unlock()
|
||||
}
|
||||
|
||||
// insert inserts the hypha into the storage, possibly overwriting the previous hypha with the same name. Count incrementation is done if needed.
|
||||
func insert(h Hypher) (madeNewRecord bool) {
|
||||
// Insert inserts the hypha into the storage, possibly overwriting the previous hypha with the same name. Count incrementation is done if needed.
|
||||
func Insert(h Hypher) (madeNewRecord bool) {
|
||||
_, recorded := byNames[h.CanonicalName()]
|
||||
|
||||
byNamesMutex.Lock()
|
||||
@ -79,7 +79,7 @@ func insert(h Hypher) (madeNewRecord bool) {
|
||||
func InsertIfNew(h Hypher) (madeNewRecord bool) {
|
||||
switch ByName(h.CanonicalName()).(type) {
|
||||
case *EmptyHypha:
|
||||
return insert(h)
|
||||
return Insert(h)
|
||||
default:
|
||||
return false
|
||||
}
|
||||
|
@ -35,13 +35,7 @@ func historyMessageForTextUpload(h hyphae.Hypher, userMessage string) string {
|
||||
return fmt.Sprintf("%s ‘%s’: %s", verb, h.CanonicalName(), userMessage)
|
||||
}
|
||||
|
||||
func writeTextToDiskForEmptyHypha(eh *hyphae.EmptyHypha, data []byte) error {
|
||||
h := hyphae.FillEmptyHyphaUpToTextualHypha(eh, filepath.Join(files.HyphaeDir(), eh.CanonicalName()+".myco"))
|
||||
|
||||
return writeTextToDiskForNonEmptyHypha(h, data)
|
||||
}
|
||||
|
||||
func writeTextToDiskForNonEmptyHypha(h *hyphae.NonEmptyHypha, data []byte) error {
|
||||
func writeTextToDisk(h *hyphae.NonEmptyHypha, data []byte, hop *history.Op) error {
|
||||
if err := os.MkdirAll(filepath.Dir(h.TextPartPath()), 0777); err != nil {
|
||||
return err
|
||||
}
|
||||
@ -49,6 +43,8 @@ func writeTextToDiskForNonEmptyHypha(h *hyphae.NonEmptyHypha, data []byte) error
|
||||
if err := os.WriteFile(h.TextPartPath(), data, 0666); err != nil {
|
||||
return err
|
||||
}
|
||||
hop.WithFiles(h.TextPartPath())
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -56,7 +52,8 @@ func writeTextToDiskForNonEmptyHypha(h *hyphae.NonEmptyHypha, data []byte) error
|
||||
func UploadText(h hyphae.Hypher, data []byte, userMessage string, u *user.User, lc *l18n.Localizer) (hop *history.Op, errtitle string) {
|
||||
hop = history.
|
||||
Operation(history.TypeEditText).
|
||||
WithMsg(historyMessageForTextUpload(h, userMessage))
|
||||
WithMsg(historyMessageForTextUpload(h, userMessage)).
|
||||
WithUser(u)
|
||||
|
||||
// Privilege check
|
||||
if !u.CanProceed("upload-text") {
|
||||
@ -93,12 +90,14 @@ func UploadText(h hyphae.Hypher, data []byte, userMessage string, u *user.User,
|
||||
|
||||
switch h := h.(type) {
|
||||
case *hyphae.EmptyHypha:
|
||||
err := writeTextToDiskForEmptyHypha(h, data)
|
||||
H := hyphae.FillEmptyHyphaUpToTextualHypha(h, filepath.Join(files.HyphaeDir(), h.CanonicalName()+".myco"))
|
||||
|
||||
err := writeTextToDisk(H, data, hop)
|
||||
if err != nil {
|
||||
return hop.WithErrAbort(err), err.Error()
|
||||
}
|
||||
|
||||
hyphae.InsertIfNew(h)
|
||||
hyphae.Insert(H)
|
||||
case *hyphae.NonEmptyHypha:
|
||||
oldText, err := FetchTextPart(h)
|
||||
if err != nil {
|
||||
@ -111,7 +110,7 @@ func UploadText(h hyphae.Hypher, data []byte, userMessage string, u *user.User,
|
||||
return hop.Abort(), ""
|
||||
}
|
||||
|
||||
err = writeTextToDiskForNonEmptyHypha(h, data)
|
||||
err = writeTextToDisk(h, data, hop)
|
||||
if err != nil {
|
||||
return hop.WithErrAbort(err), err.Error()
|
||||
}
|
||||
@ -119,10 +118,7 @@ func UploadText(h hyphae.Hypher, data []byte, userMessage string, u *user.User,
|
||||
backlinks.UpdateBacklinksAfterEdit(h, oldText)
|
||||
}
|
||||
|
||||
return hop.
|
||||
WithFiles(h.TextPartPath()).
|
||||
WithUser(u).
|
||||
Apply(), ""
|
||||
return hop.Apply(), ""
|
||||
}
|
||||
|
||||
// UploadBinary edits the hypha's media part and makes a history record about that.
|
||||
|
@ -51,7 +51,7 @@ var (
|
||||
)
|
||||
|
||||
//line views/readers.qtpl:14
|
||||
func StreamAttachmentMenuHTML(qw422016 *qt422016.Writer, rq *http.Request, h *hyphae.MediaHypha, u *user.User) {
|
||||
func StreamAttachmentMenuHTML(qw422016 *qt422016.Writer, rq *http.Request, h *hyphae.NonEmptyHypha, u *user.User) {
|
||||
//line views/readers.qtpl:14
|
||||
qw422016.N().S(`
|
||||
`)
|
||||
@ -265,7 +265,7 @@ func StreamAttachmentMenuHTML(qw422016 *qt422016.Writer, rq *http.Request, h *hy
|
||||
}
|
||||
|
||||
//line views/readers.qtpl:78
|
||||
func WriteAttachmentMenuHTML(qq422016 qtio422016.Writer, rq *http.Request, h *hyphae.MediaHypha, u *user.User) {
|
||||
func WriteAttachmentMenuHTML(qq422016 qtio422016.Writer, rq *http.Request, h *hyphae.NonEmptyHypha, u *user.User) {
|
||||
//line views/readers.qtpl:78
|
||||
qw422016 := qt422016.AcquireWriter(qq422016)
|
||||
//line views/readers.qtpl:78
|
||||
@ -276,7 +276,7 @@ func WriteAttachmentMenuHTML(qq422016 qtio422016.Writer, rq *http.Request, h *hy
|
||||
}
|
||||
|
||||
//line views/readers.qtpl:78
|
||||
func AttachmentMenuHTML(rq *http.Request, h *hyphae.MediaHypha, u *user.User) string {
|
||||
func AttachmentMenuHTML(rq *http.Request, h *hyphae.NonEmptyHypha, u *user.User) string {
|
||||
//line views/readers.qtpl:78
|
||||
qb422016 := qt422016.AcquireByteBuffer()
|
||||
//line views/readers.qtpl:78
|
||||
|
@ -1020,7 +1020,7 @@ func StreamHyphaListHTML(qw422016 *qt422016.Writer, lc *l18n.Localizer) {
|
||||
qw422016.N().S(`
|
||||
`)
|
||||
//line views/stuff.qtpl:265
|
||||
hypha := hyphae.ByName(hyphaName).(*hyphae.MediaHypha)
|
||||
hypha := hyphae.ByName(hyphaName).(*hyphae.NonEmptyHypha)
|
||||
|
||||
//line views/stuff.qtpl:265
|
||||
qw422016.N().S(`
|
||||
|
Loading…
Reference in New Issue
Block a user