Pages now work

Default Pages
Created & Updated Fields for every collection
This commit is contained in:
Simon Martens
2025-02-16 20:41:36 +01:00
parent 993e99f6dc
commit eb4bffdeec
37 changed files with 1276 additions and 10 deletions

View File

@@ -134,23 +134,26 @@ func (app *App) Serve() error {
return err
}
for _, page := range pages {
err := page.Up(e.App)
if err != nil {
page.Down(e.App)
continue
}
app.Pages = append(app.Pages, page)
}
return nil
})
app.PB.OnServe().BindFunc(func(e *core.ServeEvent) error {
e.Router.GET("/assets/{path...}", apis.Static(views.StaticFS, true))
// INFO: we put this here, to make sure all migrations are done
for _, page := range pages {
err := page.Up(e.App)
if err != nil {
app.PB.Logger().Error("Failed to up page %q: %v", "error", err)
page.Down(e.App)
continue
}
app.Pages = append(app.Pages, page)
}
for _, page := range app.Pages {
page.Setup(e.Router, e.App, engine)
}
return e.Next()
})
return app.PB.Start()

View File

@@ -424,6 +424,8 @@ const (
ITEMS_TABLE = "items"
ID_FIELD = "id"
CREATED_FIELD = "created"
UPDATED_FIELD = "updated"
ANNOTATION_FIELD = "annotation"
MUSENALMID_FIELD = "musenalm_id"

View File

@@ -7,6 +7,11 @@ func SetBasicPublicRules(collection *core.Collection) {
collection.ListRule = PUBLIC_LIST_RULE
}
func SetCreatedUpdatedFields(fieldlist *core.FieldsList) {
fieldlist.Add(&core.AutodateField{Name: CREATED_FIELD, OnCreate: true})
fieldlist.Add(&core.AutodateField{Name: UPDATED_FIELD, OnCreate: true, OnUpdate: true})
}
func SetMusenalmIDField(fieldlist *core.FieldsList) {
fieldlist.Add(&core.TextField{Name: MUSENALMID_FIELD, Max: 64, Required: false})
}
@@ -70,6 +75,8 @@ func BasicRelationCollection(app core.App, sourcetablename, targettablename stri
&core.SelectField{Name: RELATION_TYPE_FIELD, Required: true, Values: relations, MaxSelect: 1},
&core.BoolField{Name: RELATION_CONJECTURE_FIELD, Required: false},
&core.BoolField{Name: RELATION_UNCERTAIN_FIELD, Required: false},
&core.AutodateField{Name: CREATED_FIELD, OnCreate: true},
&core.AutodateField{Name: UPDATED_FIELD, OnCreate: true, OnUpdate: true},
)
SetNotesAndAnnotationsField(&fields)

View File

@@ -37,6 +37,7 @@ func placesFields() core.FieldsList {
&core.URLField{Name: dbmodels.URI_FIELD, Required: false, OnlyDomains: []string{"geonames.org"}},
)
dbmodels.SetCreatedUpdatedFields(&fields)
dbmodels.SetMusenalmIDField(&fields)
dbmodels.SetEditorStateField(&fields)
dbmodels.SetNotesAndAnnotationsField(&fields)

View File

@@ -41,6 +41,7 @@ func agentsFields() core.FieldsList {
&core.TextField{Name: dbmodels.REFERENCES_FIELD, Required: false},
)
dbmodels.SetCreatedUpdatedFields(&fields)
dbmodels.SetMusenalmIDField(&fields)
dbmodels.SetEditorStateField(&fields)
dbmodels.SetNotesAndAnnotationsField(&fields)

View File

@@ -37,6 +37,7 @@ func seriesFields() core.FieldsList {
&core.TextField{Name: dbmodels.SERIES_FREQUENCY_FIELD, Required: false},
)
dbmodels.SetCreatedUpdatedFields(&fields)
dbmodels.SetMusenalmIDField(&fields)
dbmodels.SetEditorStateField(&fields)
dbmodels.SetNotesAndAnnotationsField(&fields)

View File

@@ -106,6 +106,7 @@ func entriesFields(app core.App) *core.FieldsList {
&core.JSONField{Name: dbmodels.MUSENALM_DEPRECATED_FIELD, Required: false},
)
dbmodels.SetCreatedUpdatedFields(&fields)
dbmodels.SetMusenalmIDField(&fields)
dbmodels.SetEditorStateField(&fields)
dbmodels.SetNotesAndAnnotationsField(&fields)

View File

@@ -59,6 +59,7 @@ func itemsFields(app core.App) core.FieldsList {
&core.URLField{Name: dbmodels.URI_FIELD, Required: false, Presentable: false},
)
dbmodels.SetCreatedUpdatedFields(&fields)
dbmodels.SetNotesAndAnnotationsField(&fields)
dbmodels.SetEditorStateField(&fields)

View File

@@ -115,6 +115,7 @@ func partialsFields(app core.App) *core.FieldsList {
)
dbmodels.SetMusenalmIDField(&fields)
dbmodels.SetCreatedUpdatedFields(&fields)
dbmodels.SetEditorStateField(&fields)
dbmodels.SetNotesAndAnnotationsField(&fields)

View File

@@ -8,7 +8,12 @@ import (
"github.com/Theodor-Springmann-Stiftung/musenalm/helpers"
_ "github.com/Theodor-Springmann-Stiftung/musenalm/migrations"
_ "github.com/Theodor-Springmann-Stiftung/musenalm/pages"
_ "github.com/Theodor-Springmann-Stiftung/musenalm/pages/migrations_danksagungen"
_ "github.com/Theodor-Springmann-Stiftung/musenalm/pages/migrations_dokumentation"
_ "github.com/Theodor-Springmann-Stiftung/musenalm/pages/migrations_einfuehrung"
_ "github.com/Theodor-Springmann-Stiftung/musenalm/pages/migrations_index"
_ "github.com/Theodor-Springmann-Stiftung/musenalm/pages/migrations_kontakt"
_ "github.com/Theodor-Springmann-Stiftung/musenalm/pages/migrations_literatur"
_ "github.com/Theodor-Springmann-Stiftung/musenalm/pages/migrations_reihen"
"github.com/pocketbase/pocketbase/plugins/migratecmd"
)

33
pagemodels/abk.go Normal file
View File

@@ -0,0 +1,33 @@
package pagemodels
import "github.com/pocketbase/pocketbase/core"
type Abk struct {
core.BaseRecordProxy
}
func (a *Abk) TableName() string {
return GeneratePageTableName(P_DOK_NAME, T_ABK_NAME)
}
func NewAbk(record *core.Record) *Abk {
i := &Abk{}
i.SetProxyRecord(record)
return i
}
func (a *Abk) Abk() string {
return a.GetString(F_ABK)
}
func (a *Abk) SetAbk(abk string) {
a.Set(F_ABK, abk)
}
func (a *Abk) Bedeutung() string {
return a.GetString(F_BEDEUTUNG)
}
func (a *Abk) SetBedeutung(bedeutung string) {
a.Set(F_BEDEUTUNG, bedeutung)
}

85
pagemodels/default.go Normal file
View File

@@ -0,0 +1,85 @@
package pagemodels
import (
"net/http"
"strings"
"github.com/Theodor-Springmann-Stiftung/musenalm/templating"
"github.com/pocketbase/pocketbase/core"
"github.com/pocketbase/pocketbase/tools/router"
)
type DefaultPage struct {
core.BaseRecordProxy
Page
URL string
}
func NewDefaultPage(record *core.Record) *DefaultPage {
i := &DefaultPage{}
i.SetProxyRecord(record)
return i
}
func (r *DefaultPage) Title() string {
return r.GetString(F_TITLE)
}
func (r *DefaultPage) SetTitle(titel string) {
r.Set(F_TITLE, titel)
}
func (r *DefaultPage) Description() string {
return r.GetString(F_DESCRIPTION)
}
func (r *DefaultPage) SetDescription(beschreibung string) {
r.Set(F_DESCRIPTION, beschreibung)
}
func (r *DefaultPage) Keywords() string {
return r.GetString(F_TAGS)
}
func (r *DefaultPage) SetKeywords(keywords string) {
r.Set(F_TAGS, keywords)
}
func (r *DefaultPage) Text() string {
return r.GetString(F_TEXT)
}
func (r *DefaultPage) SetText(text string) {
r.Set(F_TEXT, text)
}
func (r *DefaultPage) Up(app core.App) error {
record := &core.Record{}
err := app.RecordQuery(GeneratePageTableName(r.Name)).
OrderBy("created").
One(record)
if err != nil {
return err
}
r.SetProxyRecord(record)
return nil
}
func (p *DefaultPage) Setup(router *router.Router[*core.RequestEvent], app core.App, engine *templating.Engine) error {
router.GET(p.URL, func(e *core.RequestEvent) error {
data := make(map[string]interface{})
data["title"] = p.Title()
data["description"] = p.Description()
data["keywords"] = p.Keywords()
data["text"] = p.Text()
var builder strings.Builder
err := engine.Render(&builder, p.Template, data, p.Layout)
if err != nil {
return e.HTML(http.StatusInternalServerError, err.Error())
}
return e.HTML(http.StatusOK, builder.String())
})
return nil
}

View File

@@ -9,7 +9,7 @@ func BasePageCollection(pagename string) *core.Collection {
c := core.NewBaseCollection(GeneratePageTableName(pagename))
c.ListRule = dbmodels.PUBLIC_LIST_RULE
c.ViewRule = dbmodels.PUBLIC_VIEW_RULE
c.Fields = StandardPageFields()
c.Fields = append(c.Fields, StandardPageFields()...)
return c
}
@@ -19,6 +19,8 @@ func StandardPageFields() core.FieldsList {
EditorField(F_DESCRIPTION),
TextField(F_TAGS),
)
ret = append(ret, CreatedUpdatedFields()...)
return ret
}
@@ -63,3 +65,10 @@ func RequiredImageField(name string, multiselect bool) *core.FileField {
Thumbs: []string{"0x300", "0x500", "0x1000", "300x0", "500x0", "1000x0"},
}
}
func CreatedUpdatedFields() core.FieldsList {
return core.NewFieldsList(
&core.AutodateField{Name: dbmodels.CREATED_FIELD, OnCreate: true},
&core.AutodateField{Name: dbmodels.UPDATED_FIELD, OnCreate: true, OnUpdate: true},
)
}

View File

@@ -5,7 +5,17 @@ const (
T_INDEX_BILDER = "bilder"
T_INDEX_TEXTE = "texte"
P_REIHEN_NAME = "reihen"
P_REIHEN_NAME = "reihen"
P_DANK_NAME = "danksagungen"
P_KONTAKT_NAME = "kontakt"
P_LIT_NAME = "literatur"
P_EINFUEHRUNG_NAME = "einfuehrung"
P_DOK_NAME = "dokumentation"
T_ABK_NAME = "abkuerzungen"
F_ABK = "Abkuerzung"
F_BEDEUTUNG = "Bedeutung"
F_TITLE = "Titel"
F_DESCRIPTION = "Beschreibung"

View File

@@ -0,0 +1,40 @@
package migrations_danksagungen
import (
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/Theodor-Springmann-Stiftung/musenalm/pagemodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
var reihen_fields = core.NewFieldsList(
pagemodels.EditorField(pagemodels.F_TEXT),
)
func init() {
m.Register(func(app core.App) error {
collection := pageCollection()
if err := app.Save(collection); err != nil {
app.Logger().Error("Failed to save collection:", "error", err, "collection", collection)
return err
}
return nil
}, func(app core.App) error {
collection, err := app.FindCollectionByNameOrId(
pagemodels.GeneratePageTableName(pagemodels.P_DANK_NAME))
if err == nil && collection != nil {
if err := app.Delete(collection); err != nil {
app.Logger().Error("Failed to delete collection:", "error", err, "collection", collection)
return err
}
}
return nil
})
}
func pageCollection() *core.Collection {
c := pagemodels.BasePageCollection(pagemodels.P_DANK_NAME)
c.Fields = append(c.Fields, reihen_fields...)
dbmodels.SetBasicPublicRules(c)
return c
}

View File

@@ -0,0 +1,48 @@
package migrations_danksagungen
import (
"github.com/Theodor-Springmann-Stiftung/musenalm/pagemodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
const TEXT = `<div>
<p>Der bibliographische Auftrieb auf die Musenalm bedarf der Unterst&uuml;tzung durch ihre Nutzer und insbesondere durch die Besitzer seltener und wenig bekannter, kaum auffindbarer Almanache und Taschenb&uuml;cher des gew&auml;hlten Zeitraumes von etwa 1750 bis 1870. Sie helfen uns durch Hinweise, Leihgaben auf kurze Frist, sowie durch Benennung von Fehlern und Unstimmigkeiten, die uns unterlaufen m&ouml;gen, sich aber auch aus Eigen- und Abarten untersuchter Exemplare herleiten k&ouml;nnen.</p>
<p>F&uuml;r viele geleistete Hilfen danken wir:</p>
<p>Frau <strong>Susanne Koppel</strong><br>Antiquariat Susanne Koppel<br>Parkallee 4<br>20144 Hamburg<br><a href="http://www.antiquariat-koppel.de" target="_blank" rel="noreferrer noopener">www.antiquariat-koppel.de</a><br><a href="mailto:info@antiquariat-koppel.de">info@antiquariat-koppel.de</a></p>
<p>Herrn <strong>Thomas Rezek</strong><br>Antiquariat Thomas Rezek<br>Amalienstra&szlig;e 63<br>80799 M&uuml;nchen<br><a href="http://www.a-rezek.de" target="_blank" rel="noreferrer noopener">www.a-rezek.de</a><br><a href="mailto:arezek@web.de">arezek@web.de</a></p>
<p>Herrn <strong>G&uuml;nther Trauzettel-Loibl</strong><br>Antiquariat Trauzettel<br>Haum&uuml;hle 8<br>52223 Stolberg<br><a href="http://www.antiquariat-trauzettel.de" target="_blank" rel="noreferrer noopener">www.antiquariat-trauzettel.de</a><br><a href="mailto:antiquariat.trauzettel@t-online.de">antiquariat.trauzettel@t-online.de</a></p>
<p>Herrn <strong>Uwe Turszynski</strong><br>Antiquariat Turszynski<br>Herzogstra&szlig;e 66<br>80803 M&uuml;nchen<br><a href="http://www.turszynski.de" target="_blank" rel="noreferrer noopener">www.turszynski.de</a><br><a href="mailto:antiquariat@turszynski.de">antiquariat@turszynski.de</a></p>
<p>Herrn <strong>Dieter Zipprich</strong><br>Antiquariat Zipprich<br>Karolinenstra&szlig;e 18<br>96049 Bamberg<br><a href="mailto:antiquariat.zipprich@freenet.de">antiquariat.zipprich@freenet.de</a></p>
<p>Frau Mag. <strong>Rita Robosch</strong><br>Matthaeus Truppe Buchhandlung &amp; Antiquariat<br>Stubenberggasse 7<br>A-8010 Graz<br>Austria<br><a href="mailto:truppe@aon.at">truppe@aon.at</a></p>
</div>`
func init() {
m.Register(func(app core.App) error {
collection, err := app.FindCollectionByNameOrId(
pagemodels.GeneratePageTableName(pagemodels.P_DANK_NAME))
if err != nil {
app.Logger().Error("Could not find Table Danksagungen! You need to execute table migrations first!")
return err
}
record := pagemodels.NewDefaultPage(core.NewRecord(collection))
record.SetTitle("Danksagungen")
record.SetText(TEXT)
if err := app.Save(record); err != nil {
app.Logger().Error("Failed to save record", "error", err, "record", record)
return err
}
return nil
}, func(app core.App) error {
coll, err := app.FindCollectionByNameOrId(
pagemodels.GeneratePageTableName(pagemodels.P_DANK_NAME))
if err == nil && coll != nil {
app.DB().NewQuery("DELETE FROM " + coll.TableName()).Execute()
}
return nil
})
}

View File

@@ -0,0 +1,65 @@
package migrations_dokumentation
import (
"errors"
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/Theodor-Springmann-Stiftung/musenalm/pagemodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
var reihen_fields = core.NewFieldsList(
pagemodels.EditorField(pagemodels.F_TEXT),
)
func init() {
m.Register(func(app core.App) error {
collection := pageCollection()
if err := app.Save(collection); err != nil {
app.Logger().Error("Failed to save collection:", "error", err, "collection", collection)
return err
}
abk := abkCollection()
if err := app.Save(abk); err != nil {
app.Logger().Error("Failed to save collection:", "error", err, "collection", abk)
return err
}
return nil
}, func(app core.App) error {
collection, err := app.FindCollectionByNameOrId(
pagemodels.GeneratePageTableName(pagemodels.P_DOK_NAME))
if err == nil && collection != nil {
if err := app.Delete(collection); err != nil {
app.Logger().Error("Failed to delete collection:", "error", err, "collection", collection)
}
}
collection_abk, err2 := app.FindCollectionByNameOrId(
pagemodels.GeneratePageTableName(pagemodels.P_DOK_NAME, pagemodels.T_ABK_NAME))
if err == nil && collection_abk != nil {
if err := app.Delete(collection_abk); err != nil {
app.Logger().Error("Failed to delete collection:", "error", err, "collection", collection_abk)
}
}
return errors.Join(err, err2)
})
}
func pageCollection() *core.Collection {
c := pagemodels.BasePageCollection(pagemodels.P_DOK_NAME)
c.Fields = append(c.Fields, reihen_fields...)
return c
}
func abkCollection() *core.Collection {
c := core.NewBaseCollection(pagemodels.GeneratePageTableName(pagemodels.P_DOK_NAME, pagemodels.T_ABK_NAME))
c.Fields = core.NewFieldsList(
pagemodels.RequiredTextField(pagemodels.F_ABK),
pagemodels.RequiredTextField(pagemodels.F_BEDEUTUNG),
)
dbmodels.SetBasicPublicRules(c)
return c
}

View File

@@ -0,0 +1,575 @@
package migrations_dokumentation
import (
"bufio"
"errors"
"fmt"
"os"
"strings"
"github.com/Theodor-Springmann-Stiftung/musenalm/pagemodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
const START = `<h3>Sortierung der Reihentitel</h3>
<p>Wir sortieren die Reihentitel nach dem Kopf der Nominalphrase, den wir zu diesem Zweck ggf. an den Anfang stellen und mit Kommas abtrennen.</p>
<p>Somit wird:</p>
<p><em>Wiener Musenalmach</em></p>
<p>bei uns gef&uuml;hrt unter:</p>
<p><em>Musenalmanach, Wiener</em>.</p>
<p>Ebenso findet sich:</p>
<p><em>Des Churbayerischen Hohen Ritterordens S. Georgii Wappenkalender </em></p>
<p>Unter &sbquo;W&lsquo; einsortiert als:</p>
<p><em>Wappenkalender, Des Churbayerischen Hohen Ritterordens S. Georgii </em></p>
<p>Aus diesem Grund empfehlen wir, nicht per ("&hellip;") nach genauen Zeichenketten zu suchen.</p>
<p>Bei manchen Almanachen geben wir zur leichteren Findbarkeit den autoptischen Titel und verweisen von dort auf den systematischen. Etwa:</p>
<p><em>Baltisches Album, s. u. Album, Baltisches</em></p>
<h3>Umschl&auml;ge</h3>
<p>Alle k&uuml;nstlerisch gestalteten Umschl&auml;ge sind mit einem Bild erfasst. Nicht erfasst sind Verlagsbroschuren und unauff&auml;llige Privateinb&auml;nde. Auf Nachfrage fertigen wir von allen Umschl&auml;gen Scans an.</p>
<p>&nbsp;</p>
<h3>Die Zeilen &sbquo;Struktur&lsquo; und &sbquo;Nachweis&lsquo;</h3>
<p>Die Zeile &sbquo;Struktur&lsquo; am Einzelband dient dazu, den Aufbau und die Ausstattung eines Almanachs auf einen Blick zu erfassen.</p>
<p>Eine Erl&auml;uterung der in dieser Zeile verwendeten Abk&uuml;rzungen findet sich unten.</p>
<p>In der Zeile &sbquo;Nachweis&lsquo; geben wir an, wo der Almanach in den einschl&auml;gigen Nachschlagewerken belegt ist. Die Aufl&ouml;sung der Siglen, die wir hierbei verwenden findet sich im <a href="/redaktion/literatur">Literaturverzeichnis</a>.</p>
<h3>Sammlungen</h3>
<p>H&auml;ufig finden sich in Almanachen verschiedene Objekte desselben Typs durch eine gemeinsame &Uuml;berschrift zusammengefasst. In diesem Fall sprechen wir von einer Sammlung. Dies kann alle Arten von Objekten betreffen: Es gibt Sammlungen von Gedichten, Prosast&uuml;cken, Graphiken oder Musikbeilagen.</p>
<p>So enth&auml;lt bspw. das <em>Taschenbuch der Liebe und Freundschaft</em> gewidmet von 1805 neun unter der &Uuml;berschrift <em>Gedichte</em> zusammengefasste Gedichte von H&ouml;lderlin. Der Jahrgang 1822 der <em>Minerva</em> enth&auml;lt unter dem Titel <em>Gallerie zu G&ouml;the&rsquo;s Werken</em> eine Sammlung von sieben Gedichten und sieben Illustrationen.</p>
<p>Jede Sammlung ist von uns mit einer Anmerkung versehen, die Auskunft gibt, welche Objekte zu ihr geh&ouml;ren. Umgekehrt ist an den betreffenden Objekten jeweils die Zugeh&ouml;rigkeit zu der Sammlung vermerkt.</p>
<h3>s. a., s. u., Titelauflage</h3>
<p>&sbquo;s.a.&lsquo; weist in den Anmerkungen zu Reihentiteln darauf hin, dass ein Almanach noch unter einem anderen Titel erschienen ist. So wird etwa in den Anmerkungen zum <em>Almanach historique de la Revolution Fran&ccedil;oise</em> auf die deutsche &Uuml;bersetzung des Almanachs hingewiesen: &bdquo;s. a. die &uuml;bersetzte Ausgabe: <em>Taschenbuch der Franken, enthaltend die Geschichte der franz&ouml;sischen Revolution, von Hrn. Rabaut de St. Etienne</em> [&hellip;].&ldquo;</p>
<p style="text-align: left;">Bisweilen liegen uns inhaltsgleiche Almanache unter verschiedenen Titeln vor. Wir legen uns dann auf einen f&uuml;r die Sortierung ma&szlig;geblichen Titel fest und st&uuml;tzen uns bei dieser Entscheidung auf die relevanten Nachschlagewerke, die im Literaturverzeichnis aufgelistet sind. Mithilfe von &sbquo;s. u.&lsquo; verweisen wir von den alternativen auf den ma&szlig;geblichen Titel. Etwa:</p>
<p style="text-align: center;">Blumenlese, He&szlig;ische Poetische<br>s. u. Musenalmanach, Hessischer</p>
<p>Dass ein Almanach unter abweichenden Titeln erscheint, kann verschiedene Gr&uuml;nde haben, die von uns nicht immer rekonstruierbar sind. Ein Sonderfall dieses Sachverhalts ist die sog. Titelauflage: Ein Almanach wird (nahezu) inhaltsgleich unter einem anderen Titel ein zweites Mal publiziert. Hierauf weisen wir in den Anmerkungen zur Reihe und zu dem betreffenden Jahrgang eigens hin. So etwa bei dem <em>Almanach f&uuml;r die Geschichte der Menschheit 1796</em>. Zu diesem Almanach ist vermerkt, dass unter dem Titel <em>Darstellung aus der Geschichte der Menschheit</em> eine &bdquo;Titelauflage ohne Nachtitel, Vorwort und Kalendarium&ldquo; erschien.</p>
<p>&nbsp;</p>
<h3><strong>Abk&uuml;rzungen</strong></h3>
<p>&nbsp;</p>
<table style="width: 96.2254%;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Titel</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Titel des Almanachs ohne &Auml;nderungen, Auslassungen oder K&uuml;rzungen. Schreibweise: wie im Almanach</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Reihentitel</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Der Reihentitel wird pragmatisch vergeben, er dient dazu, zusammengeh&ouml;rige B&auml;nde trotz &Auml;nderungen des Titels etc. unter einem einheitlichen Namen zu erfassen. Der Reihentitel, auch Kurztitel genannt, dient als Suchtitel.</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Herausgeber</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Name des Herausgebers, wie im Almanach zu finden</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Realname</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Der gedeutete Name in &uuml;berlieferter Schreibweise</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Ort</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Verlagsort(e) wie im Almanach angegeben.</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Jahr</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Jahr, auf das sich der Almanach im Titel bezieht.</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>AlmanachNr</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Eindeutige Referenznummer des Almanachs</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Struktur</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Reihenfolge der tats&auml;chlich in diesem Band vorliegenden Inhaltsobjekte, wobei diese nur nach ihrer Kategorie, nicht nach den Details, aufgelistet werden.</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Norm</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Reihenfolge der tats&auml;chlichen oder vermutlich beabsichtigten Inhaltsobjekte; Aufbau des Almanachs</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Anmerkungen</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Anmerkungen zum Band bzw. zum Beitrag</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Autor</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Der angezeigte Name des Autors (auch Pseudonyme und K&uuml;rzel oder &raquo;unbezeichnet&laquo;), wie im Almanach zu finden</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Realname</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Der gedeutete Name in &uuml;berlieferter Schreibweise</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Titel</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Titel des Objekts</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Incipit</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Textanfang (ca zwei Zeilen)</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Objekt</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Um was handelt es sich? Z. B. Gedicht, Text, Prosabeitrag. Vgl. dazu auch die Tabelle Objekte unten</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Abbildung</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Ja/Nein f&uuml;r Foto des Objekts vorhanden/nicht vorhanden.</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Paginierung</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>r&ouml;mische/arabische Paginierung</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Seite</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Seitennummer nach arabischer oder r&ouml;mischer Paginierung</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Objektz&auml;hler</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Unabh&auml;ngig von Art oder vorhandener Paginierung wird jedem Inhalt seine relative Position zugewiesen.</p>
</td>
</tr>
<tr>
<td style="width: 37.11%;" valign="top" width="170">
<p>Inhaltsnummer</p>
</td>
<td style="width: 62.8597%;" valign="top" width="434">
<p>Eindeutige Datensatznummer</p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h3>Abk&uuml;rzungen in der Zeile &sbquo;Struktur&lsquo;</h3>
<p>&nbsp;</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top">
<p>Anm.</p>
</td>
<td valign="top">
<p>Anmerkung</p>
</td>
</tr>
<tr>
<td valign="top">
<p>ar, ar1, ar2</p>
</td>
<td valign="top">
<p>arabische Paginierung (ggf mehrere)</p>
</td>
</tr>
<tr>
<td valign="top">
<p>B; BB</p>
</td>
<td valign="top">
<p>Blatt; Bl&auml;tter</p>
</td>
</tr>
<tr>
<td valign="top">
<p>C</p>
</td>
<td valign="top">
<p>Corrigenda</p>
</td>
</tr>
<tr>
<td valign="top">
<p>Diagr</p>
</td>
<td valign="top">
<p>Diagramm</p>
</td>
</tr>
<tr>
<td valign="top">
<p>G; GG</p>
</td>
<td valign="top">
<p>Graphik; Graphiken</p>
</td>
</tr>
<tr>
<td valign="top">
<p>UG r, v</p>
</td>
<td valign="top">
<p>Umschlaggraphik recto, verso</p>
</td>
</tr>
<tr>
<td valign="top">
<p>TG r, v</p>
</td>
<td valign="top">
<p>Titelgraphik, Titelportrait etc</p>
</td>
</tr>
<tr>
<td valign="top">
<p>gA</p>
</td>
<td valign="top">
<p>graphische Anleitung</p>
</td>
</tr>
<tr>
<td valign="top">
<p>gTzA</p>
</td>
<td valign="top">
<p>graphische Tanzanleitung</p>
</td>
</tr>
<tr>
<td valign="top">
<p>G-Verz</p>
</td>
<td valign="top">
<p>Verzeichnis der Kupfer u. &auml;.</p>
</td>
</tr>
<tr>
<td valign="top">
<p>Hrsg</p>
</td>
<td valign="top">
<p>Herausgeber</p>
</td>
</tr>
<tr>
<td valign="top">
<p>I-Verz</p>
</td>
<td valign="top">
<p>Inhaltsverzeichnis</p>
</td>
</tr>
<tr>
<td valign="top">
<p>Kal</p>
</td>
<td valign="top">
<p>Kalendarium</p>
</td>
</tr>
<tr>
<td valign="top">
<p>Kr</p>
</td>
<td valign="top">
<p>Karte</p>
</td>
</tr>
<tr>
<td valign="top">
<p>MusB; MusBB</p>
</td>
<td valign="top">
<p>Musikbeigabe; Musikbeigaben</p>
</td>
</tr>
<tr>
<td valign="top">
<p>r&ouml;m, r&ouml;m1, r&ouml;m2</p>
</td>
<td valign="top">
<p>r&ouml;mische Paginierung (ggf. mehrere)</p>
</td>
</tr>
<tr>
<td valign="top">
<p>S; SS</p>
</td>
<td valign="top">
<p>Seite; Seiten</p>
</td>
</tr>
<tr>
<td valign="top">
<p>Sp</p>
</td>
<td valign="top">
<p>Spiegel</p>
</td>
</tr>
<tr>
<td valign="top">
<p>T</p>
</td>
<td valign="top">
<p>Titel</p>
</td>
</tr>
<tr>
<td valign="top">
<p>gT</p>
</td>
<td valign="top">
<p>graphischer Titel</p>
</td>
</tr>
<tr>
<td valign="top">
<p>vT</p>
</td>
<td valign="top">
<p>Vortitel</p>
</td>
</tr>
<tr>
<td valign="top">
<p>nT</p>
</td>
<td valign="top">
<p>Nachtitel</p>
</td>
</tr>
<tr>
<td valign="top">
<p>zT</p>
</td>
<td valign="top">
<p>Zwischentitel</p>
</td>
</tr>
<tr>
<td valign="top">
<p>Tab</p>
</td>
<td valign="top">
<p>Tabelle</p>
</td>
</tr>
<tr>
<td valign="top">
<p>VB</p>
</td>
<td valign="top">
<p>Vorsatzblatt</p>
</td>
</tr>
<tr>
<td valign="top">
<p>Vf</p>
</td>
<td valign="top">
<p>Verfasser</p>
</td>
</tr>
<tr>
<td valign="top">
<p>VrlgM</p>
</td>
<td valign="top">
<p>Verlagsmitteilung</p>
</td>
</tr>
<tr>
<td valign="top">
<p>Vrwrt</p>
</td>
<td valign="top">
<p>Vorwort</p>
</td>
</tr>
<tr>
<td valign="top">
<p>#</p>
</td>
<td valign="top">
<p>Hinweis auf weitere Informationen in der Anmerkung.</p>
</td>
</tr>
<tr>
<td valign="top">
<p>&sect;&sect;</p>
</td>
<td valign="top">
<p>Hinweis auf M&auml;ngel im Almanach (Besch&auml;digungen, fehlende Graphiken od. Beitr&auml;ge, unvollst&auml;ndige Sammlungen etc) in der Anmerkung</p>
</td>
</tr>
<tr>
<td valign="top">
<p>+++</p>
</td>
<td valign="top">
<p>Inhalte aus mehreren Almanachen interpoliert</p>
</td>
</tr>
<tr>
<td valign="top">
<p>$</p>
</td>
<td valign="top">
<p>vermutlich</p>
</td>
</tr>
</tbody>
</table>`
const ABK_PATH = "data/abkuerzungen.txt"
func init() {
m.Register(func(app core.App) error {
collection, err := app.FindCollectionByNameOrId(
pagemodels.GeneratePageTableName(pagemodels.P_DOK_NAME))
if err != nil {
app.Logger().Error("Could not find Table Dokumentation! You need to execute table migrations first!")
return err
}
record := pagemodels.NewDefaultPage(core.NewRecord(collection))
record.SetTitle("Dokumentation")
record.SetText(START)
if err := app.Save(record); err != nil {
app.Logger().Error("Failed to save record", "error", err, "record", record)
return err
}
abk, err := seed_abkuerzungen(app)
if err != nil {
app.Logger().Error("Failed to seed abkuerzungen", "error", err)
return err
}
for _, a := range abk {
if err := app.Save(a); err != nil {
app.Logger().Error("Failed to save abk", "error", err, "abk", a)
}
}
return nil
}, func(app core.App) error {
coll, err := app.FindCollectionByNameOrId(
pagemodels.GeneratePageTableName(pagemodels.P_DOK_NAME))
if err == nil && coll != nil {
app.DB().NewQuery("DELETE FROM " + coll.TableName()).Execute()
}
coll_abk, err2 := app.FindCollectionByNameOrId(
pagemodels.GeneratePageTableName(pagemodels.P_DOK_NAME, pagemodels.T_ABK_NAME))
if err == nil && coll_abk != nil {
app.DB().NewQuery("DELETE FROM " + coll_abk.TableName()).Execute()
}
return errors.Join(err, err2)
})
}
func seed_abkuerzungen(app core.App) ([]*pagemodels.Abk, error) {
collection, err := app.FindCollectionByNameOrId(pagemodels.GeneratePageTableName(pagemodels.P_DOK_NAME, pagemodels.T_ABK_NAME))
if err != nil {
return nil, err
}
if _, err := os.Stat(ABK_PATH); err != nil {
return nil, err
}
file, err := os.Open(ABK_PATH)
if err != nil {
return nil, err
}
defer file.Close()
scanner := bufio.NewScanner(file)
abk := make(map[string]string)
for scanner.Scan() {
line := scanner.Text()
split := strings.Split(line, ":")
if len(split) <= 1 {
fmt.Println("Abkürzung nicht definiert: " + line)
continue
}
besch := strings.Join(split[1:], ":")
abk[split[0]] = strings.TrimSpace(besch)
}
ret := make([]*pagemodels.Abk, 0, len(abk))
for a, b := range abk {
r := pagemodels.NewAbk(core.NewRecord(collection))
r.SetAbk(a)
r.SetBedeutung(b)
ret = append(ret, r)
}
return ret, nil
}

View File

@@ -0,0 +1,40 @@
package migrations_einfuehrung
import (
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/Theodor-Springmann-Stiftung/musenalm/pagemodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
var reihen_fields = core.NewFieldsList(
pagemodels.EditorField(pagemodels.F_TEXT),
)
func init() {
m.Register(func(app core.App) error {
collection := pageCollection()
if err := app.Save(collection); err != nil {
app.Logger().Error("Failed to save collection:", "error", err, "collection", collection)
return err
}
return nil
}, func(app core.App) error {
collection, err := app.FindCollectionByNameOrId(
pagemodels.GeneratePageTableName(pagemodels.P_EINFUEHRUNG_NAME))
if err == nil && collection != nil {
if err := app.Delete(collection); err != nil {
app.Logger().Error("Failed to delete collection:", "error", err, "collection", collection)
return err
}
}
return nil
})
}
func pageCollection() *core.Collection {
c := pagemodels.BasePageCollection(pagemodels.P_EINFUEHRUNG_NAME)
c.Fields = append(c.Fields, reihen_fields...)
dbmodels.SetBasicPublicRules(c)
return c
}

View File

@@ -0,0 +1,61 @@
package migrations_einfuehrung
import (
"github.com/Theodor-Springmann-Stiftung/musenalm/pagemodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
const START = `<h2 class="wp-block-heading">Vorbemerkung</h2>
<p>Dies ist eine Bibliographie der deutschen Almanache und Taschenb&uuml;cher, die neben der Erfassung der Reihen und ihrer Jahrg&auml;nge die Inhalte selbst erkennbar macht. In der Regel werden folgende Merkmale erfa&szlig;t und sind in verschiedenen Suchabfragen und Listen abrufbar:</p>
<ul>
<li>Reihen- und Einzeltitel des Druckwerks sowie Strukturdarstellung des autopsierten Einzelbandes.</li>
<li>Namen der Herausgeber und Verfasser, gegebenfalls zus&auml;tzlich Schreibvarianten oder Pseudonyme.</li>
<li>Literarische Beitr&auml;ge mit Titel und Incipit.</li>
<li>Nichtliterarische Beitr&auml;ge (Illustrationen, Musikbeilagen und andere Zutaten) werden als Vollbild gegeben.</li>
</ul>
<p>Erfa&szlig;t werden in erster Linie die literarischen Taschenb&uuml;cher, die von 1770 bis etwa 1870 erschienen sind. Angesichts der raschen modischen Entwicklung des Almanachwesens, das sich schnell auf viele und auch entlegene Themengebiete ausdehnte, ist eine klare Abgrenzung der literarischen zu anders ausgerichteten Erscheinungen schwierig und wird von uns nicht angestrebt. Vielmehr sind wir bem&uuml;ht, das ganze Spektrum des Almanachwesens sichtbar zu machen, und wir nehmen ebenfalls, wenn auch zun&auml;chst nur ausgew&auml;hlt und nicht vollz&auml;hlig, unliterarische Taschenbuchreihen auf, die wir zumeist allerdings nicht in inhaltlicher Aufgliederung, sondern nur unter dem Titel bibliographieren, unter Beif&uuml;gung einer kurzen allgemeinen Beschreibung. Graphische Darstellungen in solchen Reihen sollen jedoch ebenfalls bildlich aufgenommen werden, sofern sie nicht als vergleichsweise unbedeutend erscheinen.</p>
<p>Ausgegegrenzt bleiben die eigentlichen Land- und Volkskalender, die vorwiegend im Quart-Format, im Verlauf des 19. Jahrhunderts zunehmend aber auch im Oktav-Format erschienen sind.</p>
<p>Das Vorhaben wird von der <a href="https://musenalm.de/kontakt.html">THEODOR SPRINGMANN STIFTUNG</a> betrieben und greift zun&auml;chst auf deren umfangreichen Sammlungsbestand zur&uuml;ck, im weiteren Verlauf werden wir auf die Einbeziehung anderer Bibliotheken nicht verzichten k&ouml;nnen; vielfach wird es auch n&ouml;tig sein, M&auml;ngel und Fehlstellen einzelner vorhandener St&uuml;cke zu erg&auml;nzen.</p>
<p>Wir bitten um Anregungen und Korrekturen. Auch Hilfen durch methodische bibliographische Aufnahmen sind hochwillkommen und tragen zur Verk&uuml;rzung des langwierigen Verfahrens bei. Hierzu k&ouml;nnen entsprechende Formulare bei uns angefordert werden.</p>
<p>Das Inhaltsverzeichnis der deutschen Almanache wird erarbeitet von Wolfgang Binnig und Martin Sietzen und herausgegeben von Adrian Braunbehrens.</p>
<h1 class="wp-block-heading">Einleitung in das Inhaltsverzeichnis deutscher Almanache</h1>
<p>Seit Kalender geschrieben und gedruckt wurden, finden wir sie verquickt mit anderen Momenten der Jahreszeitlichkeit. Hierzu z&auml;hlen astronomische und astrologische Angaben, die Nennung guter und b&ouml;ser Tage, praktische Regeln zu den Jahreszeiten und ihrer Witterung und nicht zuletzt Texte zu musischem und geselligem Zeitvertreib. Dies f&uuml;hrte zur Ausbildung besonderer Typen, die einzelne dieser Momente ausf&uuml;hrlicher vorstellten. Zu den eigenartigsten und reizvollsten z&auml;hlen die poetischen Musenalmanache und literarisch unterhaltenden Taschenb&uuml;cher. Ihre Epoche begann in Deutschland &ndash; franz&ouml;sischen Vorbildern folgend &ndash; um 1770 und endete gegen 1848. Sie wurden zur wohl h&uuml;bschesten und zugleich langlebigsten Modeerscheinung auf dem deutschen Buchmarkt.</p>
<p>In Paris erschien 1765 der ALMANACH DES MUSES OU CHOIX DE PO&Eacute;SIES FUGITIVES, eine Bl&uuml;tenlese neuerer Dichtung, dessen Reihe sich in j&auml;hrlicher Ausgabe bis ins 19. Jahrhundert fortsetzte. Er fand alsbald auch in Deutschland Beachtung und zum Jahr 1770 erschien, herausgegeben von Heinrich Christian Boie und verlegt von J. C. Dieterich der G&Ouml;TTINGER MUSENALMANACH. Klopstock z&auml;hlte neben vielen anderen zu seinen Beitr&auml;gern. Der 1772 gegr&uuml;ndete G&ouml;ttinger Dichterbund fand in ihm ein Organ. Johann Heinrich Voss &uuml;bernahm 1774 f&uuml;r kurze Zeit die Redaktion, begann indes 1776 in Hamburg mit einem eigenen Musenalmanach, der nun &ndash; in recht &auml;hnlichem Erscheinungsbild &ndash; neben dem G&ouml;ttinger bestand. Von diesen Keimzellen aus entwickelte sich in Deutschland ein literarisches Almanach- und Taschenbuchwesen, das in vief&auml;ltiger Unterschiedenheit eine kaum &uuml;bersehbare, nach Tausenden zu z&auml;hlende, oft kurzlebige, teils auch in langen Jahresreihen sich fortsetzende F&uuml;lle hervorbrachte. Die Epoche des literarischen Taschenbuches war zugleich eine Hochzeit dichterischer Entfaltung in Deutschland, in den H&ouml;hen neuer Findung ebenso wie in den Senken der Trivialit&auml;t; und es war eine Periode umfassender sozialer Ver&auml;nderungen. Das Taschenbuch als gesellschaftliche Modeerscheinung und seine Wandlungen stehen in engem Bezug zu diesen Entwicklungen.- Eine umfassende Geschichte des Taschenbuches unter ausf&uuml;hrlicher Ber&uuml;cksichtigung dieser Bez&uuml;ge ist noch nicht geschrieben worden.</p>
<p>Die Mannigfaltigkeit des periodischen Taschenbuches zeigt so viele Facetten, da&szlig; es schwer h&auml;lt, eine best&auml;ndige Gattung auszumachen. Beschreiben lassen sich wiederkehrende Einzelmerkmale, die in unterschiedlicher H&auml;ufung, kaum aber in ihrer Gesamtheit beim jeweiligen Exemplar vorkommen. Unsicher ist schon die Verwendung der Ausdr&uuml;cke ALMANACH und TASCHENBUCH oder auch KALENDER; sie &uuml;berschneiden sich gro&szlig;enteils, ohne sich ganz zu decken. Es k&ouml;nnte sich empfehlen, im Taschenbuch den Oberbegriff zu sehen, wenn nicht heutzutage unter dem Taschenbuch eine ganz andere Produktform des Buches bezeichnet w&auml;re.</p>
<p>Das Wort ALMANACH (arabischen Ursprungs) ist eine Bezeichnung f&uuml;r Kalender, und mit dem Kalender hat das hier dargestellte Taschenbuch die angelegte J&auml;hrlichkeit gemein, auch wenn so manche Erscheinung &uuml;ber den ersten Jahrgang nicht hinauskommt. Oftmals, aber keineswegs immer und immer seltener werdend, ist ein Kalender dem Textteil vorgebunden. Regional erhobene Kalender-Stempelsteuern konnten hier prohibitiv wirken. Einige besonders erfolgreiche Almanache erfuhren noch Jahre nach dem Erstdruck Folgeauflagen, in denen dann der &uuml;berfl&uuml;ssig gewordene Kalender, nicht jedoch die urspr&uuml;ngliche Jahresdatierung, entfallen konnte. &ndash; Seiner Entwicklungsgeschichte nach ist das Taschenbuch durchaus vom Kalender herzuleiten, aber es emanzipiert sich gleichsam von diesem und l&auml;&szlig;t seine Herkunft vergessen. Was bleibt ist die Taschenhandlichkeit des Formates: Sedez oder Duodez, seltener Octav (aber auch hierzu in der Sp&auml;tzeit die seltene Ausnahme des Gro&szlig;octav). Und es scheint, da&szlig; die Almanache, Kalendern gleich, meist keinen Ruheplatz in den B&uuml;cherschr&auml;nken gefunden haben, sondern zur Hand genommen und vernutzt wurden; die bis heute erhalten gebliebenen Exemplare sind nicht selten ramponiert, zum Schaden f&uuml;r den zierlich gestalteten Einband.</p>
<p>Welche Art von Texten f&uuml;llte die Almanache und Taschenb&uuml;cher? Anfangs war es Lyrik, sehr bald aber, als die Mode grassierte: quodlibet, alles was beliebt; unterhalten sollte es, in Spa&szlig; oder Ernst. Nur selten mischt Belehrendes sich ein, im Unterschied zum gr&ouml;&szlig;er formatierten aber sehr viel schmaleren Land- oder Volkskalender. Sieht man in das Register der vorz&uuml;glichen <em>Geschichte der deutschen Taschenb&uuml;cher und Almanache aus der klassisch-romantischen Zeit</em> von LANCKORONSKA und R&Uuml;MANN, so findet man schon in den Titeln die Hinweise auf jede nur denkbare Art von Adressaten und zugeh&ouml;rigen Inhalten: Wanderer, Reiter, Bienenfreunde, K&uuml;nstler, Scheidek&uuml;nstler und Apotheker, Liebende, Tollh&auml;usler, Ketzer, &Auml;rzte und Nicht&auml;rzte, Charadenfreunde, Kaufleute, Lottospieler u.v.a.m.. Vor allem aber wird die Weiblichkeit angesprochen, seien es Frauenzimmer oder Damen, Dienstm&auml;dchen, das Sch&ouml;ne Geschlecht, Kammerjungfern, Grabennymphen, Edle Weiber und M&auml;dchen. Selbst wenn es der Titel nicht verr&auml;t, ist &ouml;fter an die Leserin gedacht als an den Herrn, sie hatte wohl mehr gesellige Mu&szlig;e, und sie war der gemeinte Empf&auml;nger des h&uuml;bschen kleinen Geschenks. Denn zum Schenken war er bestimmt und dazu f&uuml;gte sich der Erscheinungstermin zur Michaelismesse, rechtzeitig zu Weihnachten und Neujahr.</p>
<p>Schwerpunkt der bibliographischen Erfassung und inhaltlichen Erschlie&szlig;ung sind zun&auml;chst die literarischen Almanache &ndash; ungeachtet ihres Niveaus. Sie sind Versammlungsort nicht nur der Gro&szlig;en, sondern vorz&uuml;glich derjenigen Dichter und Prosaisten, deren Schriften heute &ndash; zu Recht oder zu Unrecht&ndash; vergessen sind, die aber aus manchen Gr&uuml;nden gelegentlich doch in den Blick des Interesses r&uuml;cken. Das Verzeichnis soll sie, die bislang nur unter Schwierigkeiten aufzufinden waren, zug&auml;nglich machen. Besonders wichtig, weil eine Wahrnehmungsl&uuml;cke f&uuml;llend, erschien uns daneben die Registrierung der Zeichner und Stecher, deren Graphiken wir als Vollbild wiedergeben wollen. Da&szlig; gerade in diesem Bereich die vorliegenden Exemplare oft unvollst&auml;ndig sind, f&uuml;hrt gelegentlich zu Fehlstellen in unserer Darstellung (die aber auf Dauer geschlossen werden); es unterstreicht zugleich die Notwendigkeit des gesetzten Ziels. Indes werden nicht nur die Vorlagen M&auml;ngel aufweisen, auch in der Bearbeitung werden unvermeidbar Fehler entstehen. Wir bitten aufmerksame Benutzer, uns hier&uuml;ber zu informieren und dadurch zur Besserung zu verhelfen.</p>
<p>Auf l&auml;ngere Sicht sollen alle periodisch angelegten Almanache und Taschenb&uuml;cher des 18. und 19. Jahrhunderts aufgenommen werden, um das gesamte Spektrum dieser Publikationsart sichtbar zu machen. Im nicht-literarischen Bereich werden wir uns jedoch zumeist beschr&auml;nken auf die bibliographische Registrierung und eine kurze Beschreibung der Einzelb&auml;nde und wir werden hierbei auf die ausf&uuml;hrliche Inhalts&uuml;bersicht verzichten und uns mit der Wiedergabe eines Inhaltsverzeichnisses begn&uuml;gen.</p>
<p>Grunds&auml;tzlich ist Voraussetzung unserer bibliographischen Erfassung die Autopsie des Einzelemplares. Dies sch&uuml;tzt indes nicht immer vor Verwirrung: Variante Doppeldrucke (etwa bei unbezeichnetet Folgeauflagen oder nach Zensureingriffen), fehlende Bl&auml;tter und andere Fehlerquellen sind nicht in jedem Fall wahrnehmbar. Auf alles auff&auml;llig Sonderliche wird anmerkend hingewiesen. Um uns m&ouml;glicher Vollst&auml;ndigkeit anzun&auml;hern, behalten wir uns vor, im Einzelfall auch ohne Autopsie nach bibliographischen Vorgaben aufzunehmen; wir werden dies jedoch immer unter Nennung der Quelle ausdr&uuml;cklich anmerken.</p>
<p>Adrian Braunbehrens</p>`
func init() {
m.Register(func(app core.App) error {
collection, err := app.FindCollectionByNameOrId(
pagemodels.GeneratePageTableName(pagemodels.P_EINFUEHRUNG_NAME))
if err != nil {
app.Logger().Error("Could not find Table Einführung! You need to execute table migrations first!")
return err
}
record := pagemodels.NewDefaultPage(core.NewRecord(collection))
record.SetTitle("Einführung")
record.SetText(START)
if err := app.Save(record); err != nil {
app.Logger().Error("Failed to save record", "error", err, "record", record)
return err
}
return nil
}, func(app core.App) error {
coll, err := app.FindCollectionByNameOrId(
pagemodels.GeneratePageTableName(pagemodels.P_EINFUEHRUNG_NAME))
if err == nil && coll != nil {
app.DB().NewQuery("DELETE FROM " + coll.TableName()).Execute()
}
return nil
})
}

View File

@@ -56,11 +56,14 @@ func bilderCollection() *core.Collection {
pagemodels.RequiredImageField(pagemodels.F_PREVIEW, false),
)
dbmodels.SetBasicPublicRules(c)
return c
}
func texteCollection() *core.Collection {
c := pagemodels.BasePageCollection(pagemodels.P_INDEX_NAME)
c.Fields = append(c.Fields, texte_fields...)
c.Fields = append(c.Fields, pagemodels.CreatedUpdatedFields()...)
dbmodels.SetBasicPublicRules(c)
return c
}

View File

@@ -0,0 +1,38 @@
package migrations_kontakt
import (
"github.com/Theodor-Springmann-Stiftung/musenalm/pagemodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
var reihen_fields = core.NewFieldsList(
pagemodels.EditorField(pagemodels.F_TEXT),
)
func init() {
m.Register(func(app core.App) error {
collection := pageCollection()
if err := app.Save(collection); err != nil {
app.Logger().Error("Failed to save collection:", "error", err, "collection", collection)
return err
}
return nil
}, func(app core.App) error {
collection, err := app.FindCollectionByNameOrId(
pagemodels.GeneratePageTableName(pagemodels.P_KONTAKT_NAME))
if err == nil && collection != nil {
if err := app.Delete(collection); err != nil {
app.Logger().Error("Failed to delete collection:", "error", err, "collection", collection)
return err
}
}
return nil
})
}
func pageCollection() *core.Collection {
c := pagemodels.BasePageCollection(pagemodels.P_KONTAKT_NAME)
c.Fields = append(c.Fields, reihen_fields...)
return c
}

View File

@@ -0,0 +1,39 @@
package migrations_kontakt
import (
"github.com/Theodor-Springmann-Stiftung/musenalm/pagemodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
const START = `<p>Martin Sietzen und Dr. Jakob Br&uuml;ssermann<br>Theodor-Springmann-Stiftung<br>Hirschgasse 2 <br><br>69120 Heidelberg<br><a href="mailto:info@musenalm.de">info@musenalm.de</a></p>`
func init() {
m.Register(func(app core.App) error {
collection, err := app.FindCollectionByNameOrId(
pagemodels.GeneratePageTableName(pagemodels.P_KONTAKT_NAME))
if err != nil {
app.Logger().Error("Could not find Table Reihen! You need to execute table migrations first!")
return err
}
record := pagemodels.NewDefaultPage(core.NewRecord(collection))
record.SetTitle("Kontakt")
record.SetText(START)
if err := app.Save(record); err != nil {
app.Logger().Error("Failed to save record", "error", err, "record", record)
return err
}
return nil
}, func(app core.App) error {
coll, err := app.FindCollectionByNameOrId(
pagemodels.GeneratePageTableName(pagemodels.P_KONTAKT_NAME))
if err == nil && coll != nil {
app.DB().NewQuery("DELETE FROM " + coll.TableName()).Execute()
}
return nil
})
}

View File

@@ -0,0 +1,40 @@
package migrations_literatur
import (
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/Theodor-Springmann-Stiftung/musenalm/pagemodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
var reihen_fields = core.NewFieldsList(
pagemodels.EditorField(pagemodels.F_TEXT),
)
func init() {
m.Register(func(app core.App) error {
collection := pageCollection()
if err := app.Save(collection); err != nil {
app.Logger().Error("Failed to save collection:", "error", err, "collection", collection)
return err
}
return nil
}, func(app core.App) error {
collection, err := app.FindCollectionByNameOrId(
pagemodels.GeneratePageTableName(pagemodels.P_LIT_NAME))
if err == nil && collection != nil {
if err := app.Delete(collection); err != nil {
app.Logger().Error("Failed to delete collection:", "error", err, "collection", collection)
return err
}
}
return nil
})
}
func pageCollection() *core.Collection {
c := pagemodels.BasePageCollection(pagemodels.P_LIT_NAME)
c.Fields = append(c.Fields, reihen_fields...)
dbmodels.SetBasicPublicRules(c)
return c
}

View File

@@ -0,0 +1,139 @@
package migrations_literatur
import (
"github.com/Theodor-Springmann-Stiftung/musenalm/pagemodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
)
const START = `<h2>Ausstellungs- und Bibliothekskataloge</h2>
<p><span style="font-variant: small-caps;">Baumg&auml;rtel</span>, Ehrfried (Hg.): <em>Die Almanache, Kalender und Taschenb&uuml;cher (1750&ndash;1860) der Landesbibliothek Coburg.</em>&nbsp;Wiesbaden 1970.</p>
<p><span style="font-variant: small-caps;">Bernhardt</span>, Ursula;&nbsp;<span style="font-variant: small-caps;">Reuter-Rautenberg</span>, <span style="text-decoration: none;">Anneliese (Hgg.): </span><em>Bild und Buch. Rheinbl&uuml;then, Moosrosen und Vergi&szlig;meinnicht: Taschenb&uuml;cher f&uuml;r Frauenzimmer von Bildung</em>. Eine Studioausstellung in Zusammenarbeit mit der Badischen Landesbiliothek.&nbsp;Staatliche Kunsthalle Karlsruhe 1995.</p>
<p><span style="font-variant: small-caps;">Braunbehrens</span>, Adrian et al. (Hgg.): <em>Kalender im Wandel der Zeiten. Eine Ausstellung der Badischen Landesbibliothek zur Erinnerung an die Kalenderreform durch Papst Gregor XIII. im Jahr 1582.</em>&nbsp;Ausstellungskatalog, Bad. Landesbibliothek 1982.</p>
<p><span style="font-variant: small-caps;">Drescher</span>, Georg (Hg.): <em>O sehet her! die allerliebsten Dingerchen. Friedrich R&uuml;ckert und der Almanach</em>.&nbsp;Eine Ausstellung der Bibliothek Otto Sch&auml;fer, des Stadtarchivs Schweinfurt, der St&auml;dtischen Sammlungen Schweinfurt und der R&uuml;ckert-Gesellschaft e.V. W&uuml;rzburg 2000.</p>
<p><span style="font-variant: small-caps;">Fallbacher</span>, Karl-Heinz (Hg.): <em>Taschenb&uuml;cher im 19. Jahrhundert</em>.&nbsp;Ausstellung im Schiller-Nationalmuseum Marbach zwischen November 1992 und Februar 1993. Dt. Schillergesellschaft, Marbach am Neckar 1992.</p>
<p><span style="font-variant: small-caps;">Marwinski</span>, Felicitas (Hg.): <em>Almanache, Taschenb&uuml;cher, Taschenkalender.</em>&nbsp;Weimar 1967. Katalog der Sammlung der Th&uuml;ringischen Landesbibliothek Weimar mit 816 Nummern, 8 Abbildungen.</p>
<p><span style="font-variant: small-caps;">Mix</span>, York-Gothart (Hg.): <em>Kalender? Ey, wie viel Kalender! Literarische Almanache zwischen Rokoko und Klassizismus</em>. Ausstellung im Zeughaus der Herzog August Bibliothek in Wolfenb&uuml;ttel vom 15. Juni bis 5. November 1986. Ausstellungskataloge der Herzog August Bibliothek Nr. 50. Wolfenb&uuml;ttel 1986.</p>
<p><span style="font-variant: small-caps;">Patzer</span>, Franz (Hg.): <em>Wiener Kalender, Almanache und Taschenb&uuml;cher aus f&uuml;nf Jahrhunderten (1495&ndash;1977)</em>&nbsp;Wechselausstellung der Wiener Stadt- u. Landesbibliothek, Rathaus, Dezember 1976&ndash;J&auml;nner 1977. Wiener Stadt- u. Landesbibliothek. Wien 1976.</p>
<p><span style="font-variant: small-caps;">Schieth</span>, Lydia (Hg.): F&uuml;rs sch&ouml;ne Geschlecht. Frauenalmanache zwischen 1800 und 1850.&nbsp;Ausstellung der Universit&auml;t Bamberg in Zusammenarbeit mit der Staatsbibliothek Bamberg 12. November 1992 &ndash; 27. Februar 1993. Bamberg o. J.</p>
<p>&nbsp;</p>
<h2>Sekund&auml;rliteratur</h2>
<p><span style="font-variant: small-caps;">Ananieva</span>, Anna; <span style="font-variant: small-caps;">B&ouml;ck</span>, Dorothea; <span style="font-variant: small-caps;">Pompe</span>, Hedwig (Hgg.):&nbsp;<em>Geselliges Vergn&uuml;gen. Kulturelle Praktiken von Unterhaltung im langen 19. Jahrhundert</em>.&nbsp;Bielefeld 2011.</p>
<p><span style="font-variant: small-caps;">Anderle</span>, Martin:&nbsp;<em>Wiener Lyrik im 18. Jahrhundert. Die Gedichte des &raquo;Wiener Musenalmanachs 1777-1796&laquo;</em>.&nbsp;Stuttgart 1996.</p>
<p><span style="font-variant: small-caps;">Benjamin</span>, Walter:&nbsp;<em>Was die Deutschen lasen, w&auml;hrend ihre Klassiker schrieben</em>&nbsp;[H&ouml;rst&uuml;ck]. Ges. Werke hrsg. von Rolf Tiedeman u. Hermann Schweppenh&auml;user. Bd IV/1; Frankfurt/Main 1972, S. 641.</p>
<p><span style="font-variant: small-caps;">Boehn</span>, Max von:&nbsp;&sbquo;Der Almanach&lsquo;.&nbsp;in:&nbsp;Das Antiquariat&nbsp;7 (1951), S. 3.</p>
<p><span style="font-variant: small-caps;">Bunzel</span>, Wolfgang:&nbsp;&sbquo;Almanache und Taschenb&uuml;cher&lsquo;.&nbsp;in:&nbsp;FISCHER, Ernst; HAEFS, Wilhelm; MIX, York-Gothart (Hgg.):&nbsp;<em>Von Almanach bis Zeitung. Ein Handbuch der Medien in Deutschland 1700-1800</em>.&nbsp;M&uuml;nchen 1999, S. 24-35.</p>
<p><span style="font-variant: small-caps;">Bunzel</span>, Wolfgang:&nbsp;<em>Poetik und Publikation. Goethes Ver&ouml;ffentlichungen in Musenalmanachen und literarischen Taschenb&uuml;chern. Mit einer Bibliographie der Erst- und autorisierten Folgedrucke literarischer Texte Goethes im Almanach (1773-1832).</em>&nbsp;Weimar 1997.</p>
<p><span style="font-variant: small-caps;">Casser</span>, Paul:&nbsp;<em>Die westf&auml;lischen Musenalmanache und poetischen Taschenb&uuml;cher: ein Beitrag zur Geschichte Westfalens in der ersten H&auml;lfte des 19. Jahrhunderts</em>.&nbsp;Diss., M&uuml;nster 1928. Mikrofiche-Ausg.: Egelsbach 1992.</p>
<p><span style="font-variant: small-caps;">Dickenberger</span>, Udo (Hg.):&nbsp;<em>Der Tod und die Dichter. Scherzgedichte in den Musenalmanachen um 1800. Eine Sammlung von 220 Spottgrabinschriften</em>&nbsp;Hildesheim 1991.</p>
<p><span style="font-variant: small-caps;">Engelsing</span>, Rolf:&nbsp;&sbquo;Die Perioden der Lesergeschichte in der Neuzeit. Das statistische Ausma&szlig; und die soziokulturelle Bedeutung der Lekt&uuml;re&lsquo;.&nbsp;in: AGB 10 (1970), S. 946-1002.</p>
<p><span style="font-variant: small-caps;">Fischer</span>, Bernhard:&nbsp;<em>Der Verleger Johann Friedrich Cotta. Chronologische Verlagsbibliographie 1787-1814. Aus den Quellen bearbeitet</em>.&nbsp;3 Bde., M&uuml;nchen 2003.</p>
<p><span style="font-variant: small-caps;">Fischer</span>, Bernhard:&nbsp;&sbquo;Cottas &raquo;Morgenblatt f&uuml;r gebildete St&auml;nde&laquo; in der Zeit von 1807 bis 1823 und die Mitarbeit Therese Hubers&lsquo;.&nbsp;in:&nbsp;AGB&nbsp;43 (1995), S. 203-239.</p>
<p><span style="font-variant: small-caps;">Fischer</span>, Ernst; <span style="font-variant: small-caps;">Haefs</span>, Wilhelm; <span style="font-variant: small-caps;">Mix</span>, York-Gothart:&nbsp;&sbquo;Einleitung: Aufkl&auml;rung, &Ouml;ffentlichkeit und Medienkultur in Deutschland im 18. Jahrhundert&lsquo;&nbsp;in:&nbsp;<span style="font-variant: small-caps;">Fischer</span>, Ernst; <span style="font-variant: small-caps;">Haefs</span>, Wilhelm; <span style="font-variant: small-caps;">Mix</span>, York-Gothart (Hgg.):&nbsp;<em>Von Almanach bis Zeitung. Ein Handbuch der Medien in Deutschland 1700-1800</em>.&nbsp;M&uuml;nchen 1999, S. 9-23.</p>
<p><span style="font-variant: small-caps;">Friedl&auml;nder</span>, Max:&nbsp;<em>Gedichte von Goethe in Compositionen seiner Zeitgenossen</em>.&nbsp;Weimar 1896. Reprint Hildesheim 1975.</p>
<p><span style="font-variant: small-caps;">Fritsch</span>, Thomas Freiherr von:&nbsp;<em>Die Gothaischen Taschenb&uuml;cher, Hofkalender und Almanach</em>.&nbsp;Limburg an der Lahn 1968.</p>
<p><span style="font-variant: small-caps;">F&uuml;rst</span>, Rainer:&nbsp;<em>&raquo;F&uuml;r edle Weiber und M&auml;dchen.&laquo; Wilhelmine M&uuml;ller geb. Maisch, Verfasserin und F&ouml;rderin der Almanachliteratur um 1800. Ein Beitrag zur Verlagsgeschichte</em>.&nbsp;Heidelberg 1995.</p>
<p><span style="font-variant: small-caps;">Gladt</span>, Karl:&nbsp;Almanache und Taschenb&uuml;cher aus Wien.&nbsp;Wien 1971</p>
<p><span style="font-variant: small-caps;">Gleissner</span>, Stephanie; <span style="font-variant: small-caps;">Husic</span>, Mirela; <span style="font-variant: small-caps;">Kaminski</span>, Nicola; <span style="font-variant: small-caps;">Mergenthaler</span>, Volker:&nbsp;<em>Optische Auftritte. Marktszenen in der medialen Konkurrenz von Journal-, Almanachs- und B&uuml;cherliteratur</em>.&nbsp;Hannover 2019 [=&nbsp;Journalliteratur,&nbsp;2].</p>
<p><span style="font-variant: small-caps;">Goldschmidt</span>, Arthur:&nbsp;<em>Goethe im Almanach</em>.&nbsp;Leipzig 1932.</p>
<p><span style="font-variant: small-caps;">Grantzow</span>, Hans:&nbsp;<em>Geschichte des G&ouml;ttinger und des Vossischen Musenalmanachs</em> [Kap. 1-4].&nbsp;Diss., Berlin 1909.</p>
<p><span style="font-variant: small-caps;">Haefs</span>, Wilhelm:&nbsp;&sbquo;Ein Kalender f&uuml;r die &raquo;mitleidigen Schwestern der Venus&laquo;? Die Literarisierung der Prostitution im Wiener &raquo;Taschenbuch f&uuml;r Grabennymphen auf das Jahr 1787&laquo;&lsquo;.&nbsp;in: Jahrbuch der R&uuml;ckert- Gesellschaft e. V. 15 (2003), S. 101-110.</p>
<p><span style="font-variant: small-caps;">Haefs</span>, Wilhelm; <span style="font-variant: small-caps;">Mix</span>, York-Gothart:&nbsp;&sbquo;Der Musenhort in der Provinz. Literarische Almanache in den Kronl&auml;ndern der &ouml;sterreichischen Monarchie im ausgehenden 18. und beginnenden 19. Jahrhundert&lsquo;.&nbsp;in:&nbsp;AGB&nbsp;27 (1986), S. 171-194.</p>
<p><span style="font-variant: small-caps;">Haferkorn</span>, Hans J&uuml;rgen:&nbsp;&sbquo;Der freie Schriftsteller. Eine literatur-soziologische Studie &uuml;ber seine Entstehung und Lage in Deutschland zwischen 1750 und 1800&lsquo;.&nbsp;in:&nbsp;AGB&nbsp;5 (1964), S. 523-713.</p>
<p><span style="font-variant: small-caps;">Hay</span>, Gerhard:&nbsp;<em>Die Beitr&auml;ger des Voss'schen Musenalmanaches. Ein Verzeichnis</em>.&nbsp;Hildesheim 1975.</p>
<p><span style="font-variant: small-caps;">Herzog</span>, Rudolph:&nbsp;<em>Die schlesischen Musenalmanache von 1773-1823</em>.&nbsp;Breslau 1912.</p>
<p><span style="font-variant: small-caps;">Klussmann</span>, Paul Gerhard; <span style="font-variant: small-caps;">Mix</span>, York-Gothart (Hgg.):&nbsp;<em>Literarische Leitmedien. Almanach und Taschenbuch im kulturwissenschaftlichen Kontext</em>.&nbsp;Wiesbaden 1998<em> </em></p>
<p><span style="font-variant: small-caps;">Kossmann</span>, E. F.:&nbsp;<em>Der deutsche Musenalmanach 1833-1839</em>.&nbsp;Haag 1909.</p>
<p><span style="font-variant: small-caps;">Lanckaronska</span>, Maria; <span style="font-variant: small-caps;">R&uuml;mann</span>, Arthur<em>:&nbsp;Geschichte der deutschen Taschenb&uuml;cher und Almanache aus der klassisch-romantischen Zeit</em>.&nbsp;M&uuml;nchen 1957. Neudruck Osnabr&uuml;ck 1985.</p>
<p><span style="font-variant: small-caps;">Lieres</span>, Vita von:&nbsp;&sbquo;Kalender und Almanache&lsquo;.&nbsp;in:&nbsp;Zeitschrift f&uuml;r B&uuml;cherfreunde&nbsp;18 (1926), S. 101-114.</p>
<p><span style="font-variant: small-caps;">Ludin</span>, Alfred:&nbsp;<em>Der schweizerische Musenalmanach &raquo;Alpenrosen&laquo; und seine Vorg&auml;nger (1780-1830)</em>.&nbsp;Diss. Z&uuml;rich 1902.</p>
<p><span style="font-variant: small-caps;">L&uuml;sebrink</span>, Hans-J&uuml;rgen; Mix, York-Gothart u. a. (Hg.):&nbsp;<em>Franz&ouml;sische Almanachkultur im deutschen Sprachraum (1700-1815). Gattungsstrukturen, komparatistische Aspekte, Diskursformen</em>.&nbsp;G&ouml;ttingen 2013 [=&nbsp;Deutschland und Frankreich im wissenschaftlichen Dialog,&nbsp;3].</p>
<p><span style="font-variant: small-caps;">Mix</span>, York-Gothart<em>:&nbsp;Alamanach- und Taschenbuchkultur des 18. und 19. Jahrhunderts</em>.&nbsp;Wiesbaden 1996. [= Wolfenb&uuml;tteler Forschungen, Bd. 69]</p>
<p><span style="font-variant: small-caps;">Mix</span>, York-Gothart:&nbsp;<em>Die deutschen Musenalmanache des 18. Jahrhunderts</em>.&nbsp;M&uuml;nchen 1987.</p>
<p><span style="font-variant: small-caps;">Mix</span>, York-Gothart:&nbsp;&sbquo;Geselligkeitskultur, Gattungskonvention und Publikumsinteresse. Zur Intention und Funktion von C. M. Wielands und J. W. v. Goethes &raquo;Taschenbuch auf das Jahr 1804&laquo; und O. J. Bierbaums &raquo;Modernem Musen-Almanach&laquo;&lsquo;.&nbsp;in:&nbsp;Jahrbuch des Wiener Goethe-Vereins&nbsp;97/98 (1993), S. 35-45.</p>
<p><span style="font-variant: small-caps;">Obenaus</span>, Sibylle:&nbsp;&sbquo;Die deutschen allgemeinen kritischen Zeitschriften in der ersten H&auml;lfte des 19. Jahrhunderts&lsquo;.&nbsp;in:&nbsp;AGB&nbsp;14 (1974), S. 2-122.</p>
<p><span style="font-variant: small-caps;">Peperkorn</span>, G&uuml;nter:&nbsp;<em>Dieses ephemerische Werckchen: Georg Christoph Lichtenberg und der G&ouml;ttinger Taschen Calender</em>.&nbsp;G&ouml;ttingen [St&auml;dt. Museum] 1992.</p>
<p><span style="font-variant: small-caps;">Pissin</span>, Raimund:&nbsp;<em>Almanache der Romantik</em>.&nbsp;Berlin-Zehlendorf 1910.</p>
<p><span style="font-variant: small-caps;">Pfeiffer</span>, Emil:&nbsp;&sbquo;Bibliographie der Schillerschen Musenalmanache 1796-1800&lsquo;.&nbsp;in:&nbsp;Jahresbericht des Schw&auml;bischer Schillerverein.&nbsp;Marbach 1916, S. 35-48</p>
<p><span style="font-variant: small-caps;">Pfister</span>, Karl:&nbsp;<em>Das Prinzip der Gedichtanordnung in Schillers Musenalmanachen 1796/1800</em>.&nbsp;Diss., Bern 1937.</p>
<p><span style="font-variant: small-caps;">Pr&uuml;sener</span>, Marlies:&nbsp;&sbquo;Lesegesellschaften im 18. Jahrhundert&lsquo;.&nbsp;in:&nbsp;AGB&nbsp;13 (1973), S. 371-594.</p>
<p><span style="font-variant: small-caps;">Prutz</span>, Robert:&nbsp;<em>Der G&ouml;ttinger Dichterbund. Zur Geschichte der deutschen Literatur</em>.&nbsp;Leipzig 1841.</p>
<p><span style="font-variant: small-caps;">Prutz</span>, Robert:&nbsp;<em>Neue Schriften. Zur deutschen Literatur- und Kulturgeschichte</em>.&nbsp;2 Bde.; Halle 1847. bes.: Bd. I. S. 105-165:&nbsp;&sbquo;Die Musenalmanache und Taschenb&uuml;cher in Deutschland&lsquo;.</p>
<p><span style="font-variant: small-caps;">Raabe</span>, Paul:&nbsp;&sbquo;Zeitschriften und Almanache&lsquo;.&nbsp;in: <span style="font-variant: small-caps;">Hauswedel</span>, Ernst und <span style="font-variant: small-caps;">Vogt</span>, Christian (Hgg.):&nbsp;<em>Buchkunst und Literatur in Deutschland 1750 bis 1850</em>. Hamburg 1977, Bd. 1. S. 145-195 [mit ausf&uuml;hrlichem Abbildungsteil in Bd. 2. S. 108-140].</p>
<p><span style="font-variant: small-caps;">Redlich</span>, Carl Christian:&nbsp;<em>Versuch eines Chiffernlexikons zu den G&ouml;ttinger, Vo&szlig;ischen, Schillerschen und Schlegel-Tieckschen Musenalmanachen</em>.&nbsp;Hamburg 1875.</p>
<p><span style="font-variant: small-caps;">Rommel</span>, Otto:&nbsp;&sbquo;Der Wiener Musenalmanach&lsquo;.&nbsp;in:&nbsp;Euphorion&nbsp;6. Erg&auml;nzungsheft,1906.</p>
<p><span style="font-variant: small-caps;">Schr&ouml;der</span>, Rolf:&nbsp;&sbquo;Zur Struktur des &raquo;Taschenbuchs&laquo; im Biedermeier&lsquo;.&nbsp;in:&nbsp;Germanisch-Romanische Monatsschrift&nbsp;41 (1960), S. 442-448.</p>
<p><span style="font-variant: small-caps;">Schwerdtfeger</span>, Walter:&nbsp;<em>Die litteraturhistorische Bedeutung der Schillerschen Musenalmanache 1796-1800</em>.&nbsp;Leipzig 1899.</p>
<p><span style="font-variant: small-caps;">Seyffert</span>, Wolfgang:&nbsp;<em>Schillers Musenalmanache</em>.&nbsp;Berlin 1913.</p>
<p><span style="font-variant: small-caps;">Skreb</span>, Zdenko:&nbsp;<em>Das Epigramm in deutschen Musenalmanachen und Taschenb&uuml;chern um 1800</em>.&nbsp;Wien, 1977 [=&nbsp;&Ouml;sterreichische Akademie der Wissenschaften, Philosophisch-historische Klasse, Sitzungsberichte,&nbsp;331].</p>
<p><span style="font-variant: small-caps;">Skreb</span>, Zdenko:&nbsp;<em>Gattungsdominanz im deutschsprachigen literarischen Taschenbuch oder vom Sieg der Erz&auml;hlprosa</em>,&nbsp;Wien 1986 [=&nbsp;&Ouml;sterreichische Akademie der Wissenschaften, Philosophisch-historische Klasse, Sitzungsberichte,&nbsp;471].</p>
<p><span style="font-variant: small-caps;">Steig</span>, Reinhold:&nbsp;&sbquo;Ueber den G&ouml;ttingischen Musen-Almanach f&uuml;r das Jahr 1803&lsquo;.&nbsp;in:&nbsp;Euphorion&nbsp;2 (1895), S. 312-323</p>
<p><span style="font-variant: small-caps;">Stolpe</span>, Heinz:&nbsp;<em>Zeitschriften und Almanache der deutschen Klassik</em>.&nbsp;Weimar 1959.</p>
<p><span style="font-variant: small-caps;">Willnat</span>, Elisabeth:&nbsp;&sbquo;Johann Christian Dieterich. Ein Verlagsbuchh&auml;ndler und Drucker in der Zeit der Aufkl&auml;rung&lsquo;.&nbsp;in:&nbsp;AGB&nbsp;39 (1993), S. 1-254.</p>
<p><span style="font-variant: small-caps;">Wittmann</span>, Reinhard:&nbsp;&sbquo;Der Verleger Johann Friedrich Weygand in Briefen des G&ouml;ttinger Hains&lsquo;.&nbsp;in: AGB 10 (1970), S. 319-343.</p>
<p><span style="font-variant: small-caps;">Zuber</span>, Margarete:&nbsp;&sbquo;Die deutschen Musenalmanache und sch&ouml;ngeistigen Taschenb&uuml;cher des Biedermeier 1815- 1848&lsquo;.&nbsp;in:&nbsp;AGB&nbsp;1 (1958), S. 398-489.</p>
<p>&nbsp;</p>
<h2>Graphik, Einband etc.</h2>
<p><span style="font-variant: small-caps;">Barge</span>, Hermann:&nbsp;<em>Geschichte der Buchdruckerkunst</em>.&nbsp;Leipzig 1940.</p>
<p><span style="font-variant: small-caps;">Bauer</span>, Jens-Heiner:&nbsp;<em>Daniel Nikolaus Chodowiecki. Das druckgraphische Werk. Die Sammlung Wilhelm Burggraf zu Dohna-Schlobitten. Ein Bildband mit 2340 Abbildungen in Erg&auml;nzung zum Werkverzeichnis von Wilhelm Engelmann</em>.&nbsp;Hannover 1982.</p>
<p><span style="font-variant: small-caps;">Dorn</span>, Wilhelm:&nbsp;<em>Meil-Bibliographie. Verzeichnis der von dem Radierer Johann Wilhelm Meil illustrierten B&uuml;cher und Almanache.</em>&nbsp;Berlin 1928.</p>
<p><span style="font-variant: small-caps;">Focke</span>, Rudolf [Hg.]:&nbsp;<em>Chodowiecki und Lichtenberg.</em> <em>Daniel Chodowiecki&rsquo;s Monatskupfer zum &raquo;G&ouml;ttinger Taschen Calender&laquo; nach Georg Christoph Lichtenberg's Erkl&auml;rungen (1778-1783), mit einer kunst- und litterargeschichtlichen Einleitung</em>.&nbsp;Leipzig 1901.</p>
<p><span style="font-variant: small-caps;">Forster-Hahn</span>, Franziska:&nbsp;<em>Johann Heinrich Ramberg als Karikaturist und Satiriker</em>.&nbsp;Diss. Univ. Bonn 1963. [o. O.] [o. J.] [=&nbsp;Sonderdruck aus Hann. Geschichtsbl&auml;ttern,&nbsp;NF 17 (1963)].</p>
<p><span style="font-variant: small-caps;">Haldenwang</span>, Hasso von:&nbsp;<em>Christian Haldenwang, Kupferstecher (1770-1831)</em>.&nbsp;Diss. Johann-Wolfgang-Goethe-Univ. Frankfurt am Main 1995, Frankfurt am Main 1997 [=&nbsp;Frankfurter Fundamente der Kunstgeschichte,&nbsp;14].</p>
<p><span style="font-variant: small-caps;">Hauswedell</span>, Ernst L.; VOIGT, Christian (Hgg.):&nbsp;<em>Buchkunst und Literatur in Deutschland 1750 bis 1850</em>.&nbsp;2 Bde., Hamburg 1977.</p>
<p><span style="font-variant: small-caps;">Hogarth</span>, William; <span style="font-variant: small-caps;">Lichtenberg</span>, Georg Christoph: <em>Sammlung Hogarthscher Kupfer-Stiche</em>.&nbsp;Neue wohlfeile Ausg., G&ouml;ttingen [o. J.].</p>
<p><span style="font-variant: small-caps;">Ko</span><span style="font-variant: small-caps;">&scaron;</span><span style="font-variant: small-caps;">enina</span>, Alexander (Hg.):&nbsp;<em>Literatur &mdash; Bilder. Johann Heinrich Ramberg als Buchillustrator der Goethezeit</em>.&nbsp;Hannover 2013.</p>
<p><span style="font-variant: small-caps;">Lanckaronska</span>, Maria; <span style="font-variant: small-caps;">Oehler</span>, Richard:&nbsp;<em>Die Buchillustration dex XVIII. Jahrhunderts in Deutschland, &Ouml;sterreich und der Schweiz</em>.&nbsp;3 Bde., Leipzig 1932-1934.</p>
<p><span style="font-variant: small-caps;">Rodenberg</span>, J.:&nbsp;&sbquo;Geschichte der Illustration von 1800 bis heute&lsquo;.&nbsp;in:&nbsp;<span style="font-variant: small-caps;">Leih</span>, G. (Hg.):&nbsp;<em>Handbuch der Bibliothekswissenschaft</em>.&nbsp;2. Aufl. Stuttgart 1950, Bd. 1.</p>
<p><span style="font-variant: small-caps;">Rhein</span>, Adolf:&nbsp;&sbquo;Die fr&uuml;hen Verlagseinb&auml;nde. Eine technische Entwicklung 1735-1850&lsquo;.&nbsp;in:&nbsp;Gutenberg-Jahrbuch,&nbsp;Mainz 1962, S. 519-532.</p>
<p><span style="font-variant: small-caps;">R&uuml;mann</span>, Arthur:&nbsp;<em>Das illustrierte Buch des XIX. Jahrhunderts in England, Frankreich und Deutschland 1790-1860</em>.&nbsp;Nachdruck der Ausgabe des Insel Verlages 1930, Osnabr&uuml;ck 1975.</p>
<p><span style="font-variant: small-caps;">R&uuml;mann</span>, Arthur:&nbsp;<em>Die illustrierten deutschen B&uuml;cher des 18. Jahrhunderts</em>.&nbsp;Stuttgart 1927.</p>
<p><span style="font-variant: small-caps;">R&uuml;mann</span>, Arthur:&nbsp;<em>Die illustrierten deutschen B&uuml;cher des 19. Jahrhunderts</em>.&nbsp;Stuttgart 1926.</p>
<p><span style="font-variant: small-caps;">R&uuml;mann</span>, Arthur:&nbsp;<em>Das deutsche illustrierte Buch des XVIII. Jahrhunderts</em>.&nbsp;Stra&szlig;burg 1931 [=&nbsp;Studien zur deutschen Kunstgeschichte,&nbsp;Heft 282].</p>
<p><span style="font-variant: small-caps;">Schumacher</span>, Doris:&nbsp;<em>Kupfer und Poesie. Die Illustrationskunst um 1800 im Spiegel der zeitgen&ouml;ssischen deutschen Kritik</em>.&nbsp;K&ouml;ln 2000 [=&nbsp;Pictura et Poesis,&nbsp;13].</p>
<p><span style="font-variant: small-caps;">Shesgrenn</span>, Sean (Hg.):&nbsp;<em>Engravings by Hogarth. 101 Prints</em>.&nbsp;New York 1973.</p>
<p><span style="font-variant: small-caps;">Stubbe</span>, Wolf:&nbsp;&sbquo;Illustrationen und Illustratoren&lsquo;.&nbsp;in:&nbsp;<span style="font-variant: small-caps;">Hauswedell</span>, Ernst; <span style="font-variant: small-caps;">Voigt</span>, Christian (Hgg.):&nbsp;<em>Buchkunst und Literatur in Deutschland 1750 bis 1850</em>.&nbsp;Bd. 1., Hamburg 1977, S. 58-144 [mit ausf&uuml;hrlichem Abbildungsteil Bd. 2. S. 49-106]</p>
<p><span style="font-variant: small-caps;">Stuttmann</span>, Ferdinand:&nbsp;<em>Johann Heinrich Ramberg</em>. M&uuml;nchen 1929.</p>
<p>&nbsp;</p>
<h2>Bibliographien und Nachschlagewerke (mit Siglen)</h2>
<p><em>Allgemeine Deutsche Biographie.</em>&nbsp;Hg. v. der Historischen Commission bei der K&ouml;niglichen Akademie der Wissenschaften. 55 Bde., Leipzig 1875-1910. Sigle: ADB.</p>
<p><em>Brockhaus&rsquo; Conversations-Lexikon. Allgemeine deutsche Real-Encyklop&auml;die.</em>&nbsp;13. vollst. umgearb. Aufl., Leipzig 1883-1888. Sigle: Brockh 13.</p>
<p><span style="font-variant: small-caps;">Gorzny</span>, Willy:&nbsp;<em>Deutscher Biographischer Index</em>.&nbsp;Bearb. v. Hans-Albrecht Koch, Uta Koch und Angelika Koller, 4 Bde., M&uuml;nchen 1986 [Register zu:&nbsp;GORZNY, Willy (Hg.)&nbsp;Deutsches Biographisches Archiv.&nbsp;M&uuml;nchen 1985]. Sigle: DBI.</p>
<p><span style="font-variant: small-caps;">Eymer</span>, Wilfried:&nbsp;<em>Eymers Pseudonymen Lexikon. Realnamen und Pseudonyme in der deutschen Literatur</em>.&nbsp;Bonn 1997. Sigle: E.</p>
<p><span style="font-variant: small-caps;">Goldschmidt</span>, Arthur:&nbsp;<em>Goethe im Almanach</em>.&nbsp;Leipzig 1932. Sigle: G.</p>
<p><span style="font-variant: small-caps;">Grand-Carteret</span>, John:&nbsp;<em>Les Almanachs Fran&ccedil;ais. Bibliographie &ndash; Iconographie 1600-1895</em>.&nbsp;Paris 1896. Sigle: G-C.</p>
<p><span style="font-variant: small-caps;">Goedeke</span>, Karl et al.:&nbsp;<em>Grundri&szlig; zur Geschichte der deutschen Dichtung</em>.&nbsp;13 Bde., 2. Aufl, Dresden 1884 ff.; (Bd. IV/1-4 in der dritten neubearbeiteten Aufl., Dresden 1896-1913. Neudruck Berlin 1955; Bd. IV/5 in der ersten Aufl. D&uuml;sseldorf 1957-1960; au&szlig;erdem die &bdquo;Neue Folge&ldquo;, N. F. Bd. I, Berlin 1955ff.). Sigle: Goed</p>
<p><span style="font-variant: small-caps;">Hayn</span> Hugo;<span style="font-variant: small-caps;">Gotendorf</span>, Alfred N. (Hgg.):&nbsp;<em>Bibliotheca Germanorum Erotica &amp; Curiosa. Verzeichnis der gesamten deutschen erotischen Literatur mit Einschlu&szlig; der &Uuml;bersetzungen, nebst Beif&uuml;gung der Originale</em>.&nbsp;9 Bde., Unver&auml;nd. Nachdr. d. 3. ungemein verm. Aufl. Hanau [o. J.], Hanau 1968. Sigle: H.-G.</p>
<p><span style="font-variant: small-caps;">Hirschberg</span>, Leopold:&nbsp;<em>Der Taschengoedeke. Bibliographie deutscher Erstausgaben</em>.&nbsp;M&uuml;nchen 1970. Sigle: Goed (H).</p>
<p><span style="font-variant: small-caps;">Holzmann</span>, Michael; BOHATTA, Hanns:&nbsp;Deutsches Pseudonymen-Lexikon. Aus den Quellen bearbeitet von Michael Holzmann und Hanns Bohatta.&nbsp;Hildesheim 1970. Sigle: H/B.</p>
<p><span style="font-variant: small-caps;">K&ouml;hring</span>, Hans (Hg.):&nbsp;<em>Bibliographie der Almanache, Kalender und Taschenb&uuml;cher f&uuml;r die Zeit von ca. 1750-1860</em>.&nbsp;Hamburg 1929. Neudruck Bad Karlshafen 1987. Sigle: K.</p>
<p><span style="font-variant: small-caps;">Lanckaronska</span>, Maria; <span style="font-variant: small-caps;">R&uuml;mann</span>, Arthur:&nbsp;<em>Geschichte der deutschen Taschenb&uuml;cher und Almanache aus der klassisch-romantischen Zeit</em>.&nbsp;M&uuml;nchen 1957. Neudruck Osnabr&uuml;ck 1985. Sigle: L/R.</p>
<p><span style="font-variant: small-caps;">Redlich</span>, Carl Christian:&nbsp;<em>Versuch eines Chiffernlexikons zu den G&ouml;ttinger, Vo&szlig;ischen, Schillerschen und Schlegel-Tieckschen Musenalmanachen</em>.&nbsp;Hamburg 1875. Sigle: Re.</p>
<p><span style="font-variant: small-caps;">R&uuml;mann</span>, Arthur:&nbsp;<em>Die illustrierten deutschen B&uuml;cher des 18. Jahrhunderts</em>.&nbsp;Stuttgart 1927. Sigle: R&uuml;.</p>
<p><span style="font-variant: small-caps;">Thieme</span>, Ulrich; <span style="font-variant: small-caps;">Becker</span>, Felix [Hg.]:&nbsp;<em>Allgemeines Lexikon der bildenden K&uuml;nstler von der Antike bis zur Gegenwart</em>.&nbsp;37 Bde., Leipzig 1907-1950. Neudruck Leipzig 1999. Sigle: T/B.</p>
<p><span style="font-variant: small-caps;">Ziegler</span>, Konrad; <span style="font-variant: small-caps;">Sontheimer</span>, Walther (Hgg.):&nbsp;<em>Der kleine Pauly. Lexikon der Antike</em>.&nbsp;5 Bde., M&uuml;nchen 1979. Sigle: P.</p>`
func init() {
m.Register(func(app core.App) error {
collection, err := app.FindCollectionByNameOrId(
pagemodels.GeneratePageTableName(pagemodels.P_LIT_NAME))
if err != nil {
app.Logger().Error("Could not find Table Literatur! You need to execute table migrations first!")
return err
}
record := pagemodels.NewDefaultPage(core.NewRecord(collection))
record.SetTitle("Literatur")
record.SetText(START)
return app.Save(record)
}, func(app core.App) error {
coll, err := app.FindCollectionByNameOrId(
pagemodels.GeneratePageTableName(pagemodels.P_LIT_NAME))
if err == nil && coll != nil {
app.DB().NewQuery("DELETE FROM " + coll.TableName()).Execute()
}
return nil
})
}

View File

@@ -1,6 +1,7 @@
package migrations_reihen
import (
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
"github.com/Theodor-Springmann-Stiftung/musenalm/pagemodels"
"github.com/pocketbase/pocketbase/core"
m "github.com/pocketbase/pocketbase/migrations"
@@ -35,5 +36,6 @@ func init() {
func pageCollection() *core.Collection {
c := pagemodels.BasePageCollection(pagemodels.P_REIHEN_NAME)
c.Fields = append(c.Fields, reihen_fields...)
dbmodels.SetBasicPublicRules(c)
return c
}

View File

@@ -8,6 +8,10 @@ import (
func init() {
RegisterStaticPage("/datenschutz/")
RegisterDefaultPage("/edition/kontakt/", pagemodels.P_KONTAKT_NAME)
RegisterDefaultPage("/edition/danksagungen/", pagemodels.P_DANK_NAME)
RegisterDefaultPage("/edition/literatur/", pagemodels.P_LIT_NAME)
RegisterDefaultPage("/edition/einfuehrung/", pagemodels.P_EINFUEHRUNG_NAME)
}
func RegisterStaticPage(url string) {
@@ -17,3 +21,14 @@ func RegisterStaticPage(url string) {
Template: url,
})
}
func RegisterDefaultPage(url string, name string) {
app.Register(&pagemodels.DefaultPage{
Page: pagemodels.Page{
Name: name,
Layout: templating.DEFAULT_LAYOUT_NAME,
Template: url,
},
URL: url,
})
}

View File

@@ -0,0 +1 @@
Hello from Kontakt!

View File