mirror of
https://github.com/Theodor-Springmann-Stiftung/musenalm.git
synced 2025-10-29 17:25:32 +00:00
Lesekabinett & Startseite
This commit is contained in:
@@ -159,16 +159,4 @@ func (r *AlmanachResult) Collections() {
|
||||
}
|
||||
}
|
||||
|
||||
ccontentcollectionmap := map[int][]dbmodels.CollectionInfo{}
|
||||
ccollectioncontentmap := map[string]dbmodels.CollectionInfo{}
|
||||
for _, v := range collections {
|
||||
cinfo := dbmodels.ParseAnnotation(v, v.Annotation(), ids)
|
||||
ccollectioncontentmap[v.Id] = cinfo
|
||||
for _, c := range cinfo.Singles {
|
||||
ccontentcollectionmap[c] = append(ccontentcollectionmap[c], cinfo)
|
||||
}
|
||||
}
|
||||
|
||||
r.CInfoByCollection = ccollectioncontentmap
|
||||
r.CInfoByContent = ccontentcollectionmap
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package pages
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/Theodor-Springmann-Stiftung/musenalm/app"
|
||||
"github.com/Theodor-Springmann-Stiftung/musenalm/pagemodels"
|
||||
"github.com/Theodor-Springmann-Stiftung/musenalm/templating"
|
||||
"github.com/pocketbase/pocketbase/core"
|
||||
"github.com/pocketbase/pocketbase/tools/router"
|
||||
"math/rand"
|
||||
)
|
||||
|
||||
func init() {
|
||||
@@ -27,12 +27,36 @@ type IndexPage struct {
|
||||
// TODO:
|
||||
func (p *IndexPage) Setup(router *router.Router[*core.RequestEvent], app core.App, engine *templating.Engine) error {
|
||||
router.GET("/{$}", func(e *core.RequestEvent) error {
|
||||
var builder strings.Builder
|
||||
err := engine.Render(&builder, "/", nil, "blank")
|
||||
bilder := []*pagemodels.IndexBilder{}
|
||||
err := app.RecordQuery(pagemodels.GeneratePageTableName(pagemodels.P_INDEX_NAME, pagemodels.T_INDEX_BILDER)).
|
||||
All(&bilder)
|
||||
if err != nil {
|
||||
return err
|
||||
return engine.Response404(e, err, nil)
|
||||
}
|
||||
return e.HTML(http.StatusOK, builder.String())
|
||||
texte := []*pagemodels.IndexTexte{}
|
||||
err = app.RecordQuery(pagemodels.GeneratePageTableName(pagemodels.P_INDEX_NAME)).
|
||||
All(&texte)
|
||||
if err != nil {
|
||||
return engine.Response404(e, err, nil)
|
||||
}
|
||||
|
||||
Shuffle(bilder)
|
||||
data := map[string]interface{}{
|
||||
"bilder": bilder,
|
||||
"texte": texte[0],
|
||||
}
|
||||
|
||||
return engine.Response200(e, "/", data, "blank")
|
||||
|
||||
})
|
||||
return nil
|
||||
}
|
||||
|
||||
func Shuffle[T any](arr []T) {
|
||||
rand.Seed(time.Now().UnixNano()) // Ensure random seed
|
||||
n := len(arr)
|
||||
for i := n - 1; i > 0; i-- {
|
||||
j := rand.Intn(i + 1) // Get a random index
|
||||
arr[i], arr[j] = arr[j], arr[i] // Swap
|
||||
}
|
||||
}
|
||||
|
||||
63
pages/migrations_lesekabinett/1739220544_kabinett.go
Normal file
63
pages/migrations_lesekabinett/1739220544_kabinett.go
Normal file
@@ -0,0 +1,63 @@
|
||||
package migrations_index
|
||||
|
||||
import (
|
||||
"github.com/Theodor-Springmann-Stiftung/musenalm/pagemodels"
|
||||
"github.com/pocketbase/pocketbase/core"
|
||||
m "github.com/pocketbase/pocketbase/migrations"
|
||||
)
|
||||
|
||||
var text = `<h1>Texte zum Almanachwesen</h1>
|
||||
<p><em>Joseph Franz von Ratschky:</em> Vorbericht. in: Wiener Musenalmanach. 1779, S. 3-6. [↓<a href="/assets/Lesekabinett/ratschky_in_wiener_1779.pdf" target="_blank" rel="noopener">Download</a>]</p>
|
||||
<p><em>Gottfried August Bürger:</em> Nothgedrungene Nachrede. in: Göttinger Musenalmanach. 1782, S. 184-192. [↓<a href="/assets/Lesekabinett/buerger_in_goettinger_1782.pdf" target="_blank" rel="noopener">Download</a>]</p>
|
||||
<p><em>Christian Cay Lorenz Hirschfeld: </em>An die Leser. in: Gartenkalender. 1783, S. 272. [↓<a href="/assets/Lesekabinett/hirschfeld_in_gartenkalender_1783.pdf" target="_blank" rel="noopener">Download</a>]</p>
|
||||
<p><em>Johann Heinrich Voß:</em> Ankündigung. in: Hamburger Musenalmanach. 1784, S. 222ff. [↓<a href="/assets/Lesekabinett/voss_in_hamburger_1784.pdf" target="_blank" rel="noopener">Download</a>]</p>
|
||||
<p><em>Gotthold Friedrich Stäudlin: </em>Nachrede. in: Schwäbischer Musenalmanach. 1786 [o. S.]. [↓<a href="/assets/Lesekabinett/staeudlin_in_schwaebischer_1786.pdf" target="_blank" rel="noopener">Download</a>]</p>
|
||||
<p><em>Gottfried August Bürger:</em> Fürbitte eines ans peinliche Kreuz der Verlegenheit genagelten Herausgebers eines Musenalmanachs. in: Göttinger Musenalmanach. 1789, S. 104. [↓<a href="/assets/Lesekabinett/buerger_in_goettinger_1789.pdf" target="_blank" rel="noopener">Download</a>]</p>
|
||||
<p><em>Anonymus: </em>Die deutschen Almanache. in: Bibliothek der redenden und bildenden Künste. Zweyten Bandes erstes Stück. Leipzig, in der Dyckischen Buchhandlung, 1806, S. 207-217. [↓<a href="/assets/Lesekabinett/anonymus.pdf" target="_blank" rel="noopener">Download</a>]</p>
|
||||
<p><em>Stephan Schütze:</em> Die Neujahrsversammlung. Ein dramatischer Prolog. in: Taschenbuch der Liebe und Freundschaft gewidmet. 1813, S. 1-20. [↓<a href="/assets/Lesekabinett/schuetze_in_taschenbuch_1813.pdf" target="_blank" rel="noopener">Download</a>]</p>
|
||||
<p><em>N. B. E.: </em>Die deutschen Taschenbücher für 1820. in: Hermes oder kritisches Jahrbuch der Literatur. Zweites Stück für das Jahr 1820. Amsterdam, in der Verlags-Expedition des Hermes, S. 191-235. [↓<em><a href="/assets/Lesekabinett/nbe_in_hermes_1820.pdf" target="_blank" rel="noopener">Download</a>]</em></p>
|
||||
<p><em>Ferdinand Johannes Wit:</em> Die Almanachomanie. in: Politisches Taschenbuch. 1831, S. 102-111. [↓<a href="/assets/Lesekabinett/wit_in_politaschenbuch_1831.pdf" target="_blank" rel="noopener">Download</a>]</p>
|
||||
<p><em>August Wilhelm Schlegel:</em> Recept. in: Deutscher Musenalmanach (Chamisso, Schwab, Gaudy). 1836, S. 18. [↓<a href="/assets/Lesekabinett/schlegel_in_deutscher_1836.pdf" target="_blank" rel="noopener">Download</a>]</p>
|
||||
<p><em>Robert Eduard Prutz:</em> Die Musenalmanache und Taschenbücher in Deutschland. in: Neue Schriften. Zur deutschen Literatur- und Kulturgeschichte. Erster Band, Halle, G. Schwetschke'scher Verlag, 1854, S. 105-165. [↓<a href="/assets/Lesekabinett/prutz_in_musenalmanache_1854.pdf" target="_blank" rel="noopener">Download</a>]</p>
|
||||
<h1>Allotria und Kuriosa</h1>
|
||||
<p><em>Anonymus:</em> Woher das Wort Almanach komme. in: Neues Wochenblatt zum Nuzzen und zur Unterhaltung für Kinder und junge Leute. Erstes Bändchen, erstes Stück, Leipzig, in der Sommerschen Buchhandlung 1794, S. 8f. [↓<a href="/assets/Lesekabinett/allatroia_anonymus_wochenblatt_1794.pdf" target="_blank" rel="noopener">Download</a>]</p>`
|
||||
|
||||
var texte_fields = core.NewFieldsList(
|
||||
pagemodels.EditorField(pagemodels.F_TEXT),
|
||||
)
|
||||
|
||||
func init() {
|
||||
m.Register(func(app core.App) error {
|
||||
collection_t := texteCollection()
|
||||
if err := app.Save(collection_t); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
r := core.NewRecord(collection_t)
|
||||
page := pagemodels.NewTextPage(r)
|
||||
page.SetText(text)
|
||||
page.SetTitle("Lesekabinett")
|
||||
|
||||
if err := app.Save(r); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
|
||||
}, func(app core.App) error {
|
||||
|
||||
collection_t, err := app.FindCollectionByNameOrId(
|
||||
pagemodels.GeneratePageTableName(pagemodels.P_KABINETT_NAME))
|
||||
if err == nil && collection_t != nil {
|
||||
if err := app.Delete(collection_t); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func texteCollection() *core.Collection {
|
||||
c := pagemodels.BasePageCollection(pagemodels.P_KABINETT_NAME)
|
||||
c.Fields = append(c.Fields, texte_fields...)
|
||||
return c
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
"github.com/pocketbase/pocketbase/tools/router"
|
||||
)
|
||||
|
||||
// INFO: V0 of these
|
||||
const (
|
||||
URL_PERSONEN = "/personen/"
|
||||
PARAM_FILTER = "filter"
|
||||
@@ -86,17 +87,22 @@ func (p *PersonenPage) FilterRequest(app core.App, engine *templating.Engine, e
|
||||
if err != nil {
|
||||
return engine.Response404(e, err, data)
|
||||
}
|
||||
dbmodels.SortAgentsByName(agents)
|
||||
dbmodels.Sort_Agents_Name(agents)
|
||||
data["agents"] = agents
|
||||
data["filter"] = filter
|
||||
data["letter"] = letter
|
||||
|
||||
bcount, err := dbmodels.CountAgentsBaende(app)
|
||||
ids := []any{}
|
||||
for _, a := range agents {
|
||||
ids = append(ids, a.Id)
|
||||
}
|
||||
|
||||
bcount, err := dbmodels.CountAgentsBaende(app, ids)
|
||||
if err == nil {
|
||||
data["bcount"] = bcount
|
||||
}
|
||||
|
||||
count, err := dbmodels.CountAgentsContents(app)
|
||||
count, err := dbmodels.CountAgentsContents(app, ids)
|
||||
if err == nil {
|
||||
data["ccount"] = count
|
||||
}
|
||||
@@ -135,19 +141,28 @@ func (p *PersonenPage) SearchRequest(app core.App, engine *templating.Engine, e
|
||||
data["FTS"] = true
|
||||
}
|
||||
|
||||
dbmodels.SortAgentsByName(agents)
|
||||
dbmodels.SortAgentsByName(altagents)
|
||||
dbmodels.Sort_Agents_Name(agents)
|
||||
dbmodels.Sort_Agents_Name(altagents)
|
||||
|
||||
data["search"] = search
|
||||
data["agents"] = agents
|
||||
data["altagents"] = altagents
|
||||
|
||||
bcount, err := dbmodels.CountAgentsBaende(app)
|
||||
ids := []any{}
|
||||
for _, a := range agents {
|
||||
ids = append(ids, a.Id)
|
||||
}
|
||||
|
||||
for _, a := range altagents {
|
||||
ids = append(ids, a.Id)
|
||||
}
|
||||
|
||||
bcount, err := dbmodels.CountAgentsBaende(app, ids)
|
||||
if err == nil {
|
||||
data["bcount"] = bcount
|
||||
}
|
||||
|
||||
count, err := dbmodels.CountAgentsContents(app)
|
||||
count, err := dbmodels.CountAgentsContents(app, ids)
|
||||
if err == nil {
|
||||
data["ccount"] = count
|
||||
}
|
||||
|
||||
@@ -208,7 +208,7 @@ func NewCommonReihenData(app core.App) CommonReihenData {
|
||||
if err != nil {
|
||||
app.Logger().Error("Failed to fetch places", "error", err)
|
||||
}
|
||||
dbmodels.SortPlacesByName(places)
|
||||
dbmodels.Sort_Places_Name(places)
|
||||
|
||||
rec := []core.Record{}
|
||||
err = app.RecordQuery(dbmodels.ENTRIES_TABLE).
|
||||
|
||||
@@ -8,11 +8,12 @@ import (
|
||||
|
||||
func init() {
|
||||
RegisterStaticPage("/datenschutz/", pagemodels.P_DATENSCHUTZ_NAME)
|
||||
RegisterTextPage("/edition/kontakt/", pagemodels.P_KONTAKT_NAME)
|
||||
RegisterTextPage("/edition/danksagungen/", pagemodels.P_DANK_NAME)
|
||||
RegisterTextPage("/edition/literatur/", pagemodels.P_LIT_NAME)
|
||||
RegisterTextPage("/edition/einfuehrung/", pagemodels.P_EINFUEHRUNG_NAME)
|
||||
RegisterTextPage("/edition/dokumentation/", pagemodels.P_DOK_NAME)
|
||||
RegisterTextPage("/redaktion/kontakt/", pagemodels.P_KONTAKT_NAME)
|
||||
RegisterTextPage("/redaktion/danksagungen/", pagemodels.P_DANK_NAME)
|
||||
RegisterTextPage("/redaktion/literatur/", pagemodels.P_LIT_NAME)
|
||||
RegisterTextPage("/redaktion/einfuehrung/", pagemodels.P_EINFUEHRUNG_NAME)
|
||||
RegisterTextPage("/redaktion/dokumentation/", pagemodels.P_DOK_NAME)
|
||||
RegisterTextPage("/redaktion/lesekabinett/", pagemodels.P_KABINETT_NAME)
|
||||
}
|
||||
|
||||
func RegisterStaticPage(url, name string) {
|
||||
|
||||
Reference in New Issue
Block a user