diff --git a/api/v1/openapi/schemas/facets.yaml b/api/v1/openapi/schemas/facets.yaml index 0b0a3d3a1..0f1c836bd 100644 --- a/api/v1/openapi/schemas/facets.yaml +++ b/api/v1/openapi/schemas/facets.yaml @@ -25,6 +25,7 @@ enum: - placenames - places - pubPlace + - publisher - repository - residences - sender diff --git a/catalogues/dictionary_de.xml b/catalogues/dictionary_de.xml index bb980b392..1dc945ca0 100644 --- a/catalogues/dictionary_de.xml +++ b/catalogues/dictionary_de.xml @@ -590,6 +590,7 @@ Kategorie (Detail) Kategorie Druckort + Verlag/Druckerei erhalten Beschreibungen Übermittelter Brief diff --git a/catalogues/dictionary_en.xml b/catalogues/dictionary_en.xml index c7d215c84..62f6bb2e4 100644 --- a/catalogues/dictionary_en.xml +++ b/catalogues/dictionary_en.xml @@ -560,6 +560,7 @@ Category (Detail) Category Place of Publication + Publisher received Descriptions Sent letter diff --git a/modules/api.xqm b/modules/api.xqm index 7fa30470c..497e7a239 100644 --- a/modules/api.xqm +++ b/modules/api.xqm @@ -978,6 +978,16 @@ declare function api:validate-pubPlace($model as map(*)) as map(*)? { else error($api:INVALID_PARAMETER, 'Unsupported value for parameter "pubPlace". It must be a WeGA place ID.' ) }; +(:~ + : Check parameter publisher + : multiple values allowed as input, either by providing multiple URL parameters + : or by sending a comma separated list as the value of one URL parameter +~:) +declare function api:validate-publisher($model as map(*)) as map(*)? { + if(every $i in $model?publisher ! tokenize(., ',') satisfies wdt:personsPlus($i)('check')()) then map { 'publisher': $model?publisher ! tokenize(., ',') } + else error($api:INVALID_PARAMETER, 'Unsupported value for parameter "publisher". It must be a WeGA org or person ID.' ) +}; + (:~ : Check parameter placenames (NB: this is supposed to be a string value, not a WeGA ID) : multiple values allowed as input, either by providing multiple URL parameters diff --git a/modules/facets.xqm b/modules/facets.xqm index 1b54b4952..1458f74d9 100644 --- a/modules/facets.xqm +++ b/modules/facets.xqm @@ -119,7 +119,7 @@ declare %private function facets:display-term($facet as xs:string, $term as xs:s switch($facet) case 'persons' case 'personsPlus' case 'sender' case 'addressee' case 'dedicatees' case 'lyricists' case 'librettists' - case 'composers' case 'authors' case 'editors' return + case 'composers' case 'authors' case 'editors' case 'publisher' return if(wdt:persons($term)('check')()) then wdt:persons($term)('label-facets')() (:$facets:persons-norm-file//norm:entry[range:eq(@docID,$term)]/normalize-space():) else wdt:orgs($term)('label-facets')() case 'works' return wdt:works($term)('label-facets')() diff --git a/modules/query.xqm b/modules/query.xqm index e5bae05d0..1df1d35c3 100644 --- a/modules/query.xqm +++ b/modules/query.xqm @@ -359,6 +359,7 @@ declare function query:get-facets($collection as node()*, $facet as xs:string) a case 'forenames' return $collection//tei:forename[not(@full)] case 'surnames' return $collection//tei:surname | $collection//tei:orgName[@type] case 'pubPlace' return ($collection//mei:pubPlace/@codedval | $collection//tei:pubPlace/@key) + case 'publisher' return ($collection//mei:publisher[parent::mei:pubStmt]/@codedval | $collection//tei:publisher[parent::tei:imprint]/@key) case 'sources-details-cat' return ($collection//mei:termList[@label='sources-details-cat']/mei:term | $collection//tei:keywords[@scheme='sources-details-cat']/tei:term) case 'sources-meta-cat' return ($collection//mei:termList[@label='sources-meta-cat']/mei:term | $collection//tei:keywords[@scheme='sources-meta-cat']/tei:term) case 'placenames' return $collection//tei:placeName[@type='reg'] diff --git a/templates/ajax/sources.html b/templates/ajax/sources.html index 608c8740d..2722174b9 100644 --- a/templates/ajax/sources.html +++ b/templates/ajax/sources.html @@ -15,8 +15,8 @@

sources-details-cat

pubPlace