2022-04-23 20:35:36 +00:00
package hypview
import (
"embed"
"github.com/bouncepaw/mycorrhiza/cfg"
"github.com/bouncepaw/mycorrhiza/viewutil"
"log"
"strings"
)
var (
//go:embed *.html
2022-04-24 11:11:53 +00:00
fs embed . FS
ruTranslation = `
{ { define "empty heading" } } Эта гифа не существует { { end } }
{ { define "empty no rights" } } У вас нет прав для создания новых гиф . Вы можете : { { end } }
{ { define "empty log in" } } Войти в свою учётную запись , если она у вас есть { { end } }
{ { define "empty register" } } Создать новую учётную запись { { end } }
{ { define "write a text" } } Написать текст { { end } }
{ { define "write a text tip" } } Напишите заметку , дневник , статью , рассказ или иной текст с помощью < a href = "/help/en/mycomarkup" class = "shy-link" > микоразметки < / a > . Сохраняется полная история правок документа . { { end } }
{ { define "write a text writing conventions" } } Н е забывайте следовать правилам оформления этой вики , если они имеются . { { end } }
{ { define "write a text btn" } } Создать { { end } }
{ { define "upload a media" } } Загрузить медиа { { end } }
{ { define "upload a media tip" } } Загрузите изображение , видео или аудио . Распространённые форматы можно просматривать из браузера , остальные – просто скачать . Позже вы можете дописать пояснение к этому медиа . { { end } }
{ { define "upload a media btn" } } Загрузить { { end } }
2022-06-16 11:05:30 +00:00
{ { define "delete hypha?" } } Удалить { { beautifulName . } } ? { { end } }
{ { define "delete [[hypha]]?" } } Удалить < a href = "/hypha/{{.}}" > { { beautifulName . } } < / a > ? { { end } }
{ { define "want to delete?" } } Вы действительно хотите удалить эту гифу ? { { end } }
{ { define "delete tip" } } Нельзя отменить удаление гифы , но её история останется доступной . { { end } }
2022-06-16 11:19:42 +00:00
{ { define "rename hypha?" } } Переименовать { { beautifulName . } } ? { { end } }
{ { define "rename [[hypha]]?" } } Переименовать < a href = "/hypha/{{.}}" > { { beautifulName . } } < / a > ? { { end } }
{ { define "new name" } } Новое название : { { end } }
{ { define "rename recursively" } } Также переименовать подгифы { { end } }
{ { define "rename tip" } } Если вы переименуете эту гифу , сломаются все ссылки , ведущие на неё , а также исходящие относительные ссылки . Также вы потеряете всю текущую историю для нового названия . Переименовывайте аккуратно . { { end } }
2022-04-24 11:11:53 +00:00
`
2022-06-16 11:05:30 +00:00
chainNaviTitle viewutil . Chain
chainEmptyHypha viewutil . Chain
chainDeleteHypha viewutil . Chain
2022-06-16 11:19:42 +00:00
chainRenameHypha viewutil . Chain
2022-04-23 20:35:36 +00:00
)
func Init ( ) {
2022-05-18 16:58:24 +00:00
chainNaviTitle = viewutil . CopyEnRuWith ( fs , "view_navititle.html" , "" )
chainEmptyHypha = viewutil . CopyEnRuWith ( fs , "view_empty_hypha.html" , ruTranslation )
2022-06-16 11:05:30 +00:00
chainDeleteHypha = viewutil . CopyEnRuWith ( fs , "view_delete.html" , ruTranslation )
2022-06-16 11:19:42 +00:00
chainRenameHypha = viewutil . CopyEnRuWith ( fs , "view_rename.html" , ruTranslation )
2022-06-16 11:05:30 +00:00
}
2022-06-16 11:19:42 +00:00
type deleteRenameData struct {
2022-06-16 11:05:30 +00:00
* viewutil . BaseData
HyphaName string
}
2022-06-16 11:19:42 +00:00
func RenameHypha ( meta viewutil . Meta , hyphaName string ) {
viewutil . ExecutePage ( meta , chainRenameHypha , deleteRenameData {
BaseData : & viewutil . BaseData {
Addr : "/rename/" + hyphaName ,
} ,
HyphaName : hyphaName ,
} )
}
2022-06-16 11:05:30 +00:00
func DeleteHypha ( meta viewutil . Meta , hyphaName string ) {
2022-06-16 11:19:42 +00:00
viewutil . ExecutePage ( meta , chainDeleteHypha , deleteRenameData {
2022-06-16 11:05:30 +00:00
BaseData : & viewutil . BaseData {
Addr : "/delete/" + hyphaName ,
} ,
HyphaName : hyphaName ,
} )
2022-04-24 11:11:53 +00:00
}
type emptyHyphaData struct {
2022-04-29 09:21:45 +00:00
Meta viewutil . Meta
2022-04-24 11:11:53 +00:00
HyphaName string
AllowRegistration bool
UseAuth bool
}
func EmptyHypha ( meta viewutil . Meta , hyphaName string ) string {
var buf strings . Builder
if err := chainEmptyHypha . Get ( meta ) . ExecuteTemplate ( & buf , "empty hypha card" , emptyHyphaData {
2022-04-29 09:21:45 +00:00
Meta : meta ,
2022-04-24 11:11:53 +00:00
HyphaName : hyphaName ,
AllowRegistration : cfg . AllowRegistration ,
UseAuth : cfg . UseAuth ,
} ) ; err != nil {
log . Println ( err )
}
return buf . String ( )
2022-04-23 20:35:36 +00:00
}
type naviTitleData struct {
HyphaNameParts [ ] string
HyphaNamePartsWithParents [ ] string
Icon string
HomeHypha string
}
func NaviTitle ( meta viewutil . Meta , hyphaName string ) string {
parts , partsWithParents := naviTitleify ( hyphaName )
var buf strings . Builder
err := chainNaviTitle . Get ( meta ) . ExecuteTemplate ( & buf , "navititle" , naviTitleData {
HyphaNameParts : parts ,
HyphaNamePartsWithParents : partsWithParents ,
Icon : cfg . NaviTitleIcon ,
HomeHypha : cfg . HomeHypha ,
} )
if err != nil {
log . Println ( err )
}
return buf . String ( )
}
func naviTitleify ( hyphaName string ) ( [ ] string , [ ] string ) {
var (
prevAcc = "/hypha"
parts = strings . Split ( hyphaName , "/" )
partsWithParents [ ] string
)
for _ , part := range parts {
prevAcc += "/" + part
partsWithParents = append ( partsWithParents , prevAcc )
}
return parts , partsWithParents
}