diff --git a/.env.local b/.env.local new file mode 100644 index 0000000000000000000000000000000000000000..9f83decc5ccf9dc1eb3c66814b75ebf3a2c60f56 --- /dev/null +++ b/.env.local @@ -0,0 +1,13 @@ +# Dependencies for grunt task (scss => css) +GRUNT_SASS=^3.1.0 +JIT_GRUNT=^0.10.0 +NODE_SASS=^7.0.1 + +# Dependencies for composer task (loads files for vendor): composer1 | composer2 +COMPOSER_VERSION=composer1 + +# Version for php in PHP container: php7_2 | php8_0 +PHP_VERSION=php7_2 + +# Version for database in db container: mariadb_10_3 | mariadb_10_11 +DB_VERSION=mariadb_10_3 \ No newline at end of file diff --git a/.gitignore b/.gitignore index e4470733f05d64cf9b1ef79bc6efc2d8872bba0b..41716f3023ade14790878b5d3d18136dc5d11631 100644 --- a/.gitignore +++ b/.gitignore @@ -33,5 +33,8 @@ themes/boss/ themes/finc-dbis/ themes/vufind-results-grouping/ themes/worldcat/ +**/compiled.css.map +**/print.css +themes/*/css module/finc/tests/selenium/vendor/ module/finc/tests/selenium/logs/ \ No newline at end of file diff --git a/Gruntfile.js b/Gruntfile.js index 07ed2f91640615e709111118ff8b6b2f46c0cd50..0c867c09ee2d69b27f7834bd9ceb56c3fc3015ee 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,3 +1,4 @@ +const sass = require('node-sass'); module.exports = function(grunt) { const fs = require("fs"); @@ -149,7 +150,7 @@ module.exports = function(grunt) { order: 4 }, { // Inline &:extends converted - pattern: /&:extend\(([^\)]+)\)/gi, + pattern: /&:extend\(([^\)]+?)( all)?\)/gi, replacement: '@extend $1', order: 4 }, @@ -183,7 +184,9 @@ module.exports = function(grunt) { tasks: ['lessdev'] }, scss: { - files: 'themes/*/scss/**/*.scss', + // finc-specific exclude sandal and bootprint theme, we don't use it in finc + files: ['themes/*/scss/**/*.scss', '!themes/sandal/scss/**/*.scss', '!themes/bootprint3/scss/**/*.scss'], + // finc-specific - END tasks: ['scss'] } } @@ -218,9 +221,16 @@ module.exports = function(grunt) { * Define mapping of input (scss) to output files (css) for following sass task */ for (var i in themeList) { + // finc-specific exclude sandal and bootprint theme, we don't use it in finc + if (themeList[i] === 'sandal' || themeList[i] === 'bootprint3') { + continue; + } + // finc-specific - END var config = { options: { - outputStyle: 'compressed' + outputStyle: 'compressed', + implementation: sass, + sourceMap: true }, files: [{ expand: true, diff --git a/composer.json b/composer.json index 501b78036c118becc67533614b9ffef14e69a4f9..db42315cf38decd4af085c072b21261fba4f98a1 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,11 @@ "platform": { "php": "7.2" }, - "process-timeout": 0 + "process-timeout": 0, + "allow-plugins": { + "laminas/laminas-dependency-plugin": true, + "wikimedia/composer-merge-plugin": true + } }, "require": { "php": ">=7.2", diff --git a/composer.lock b/composer.lock index b3e8b3f15843df2921fabf06a33c1127700d7333..515c3b0e78785225bd59bec3d378522f4e9862fe 100644 --- a/composer.lock +++ b/composer.lock @@ -3075,6 +3075,14 @@ "resources", "translations" ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-i18n-resources/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-i18n-resources/issues", + "rss": "https://github.com/laminas/laminas-i18n-resources/releases.atom", + "source": "https://github.com/laminas/laminas-i18n-resources" + }, "time": "2019-12-31T17:11:35+00:00" }, { @@ -6455,6 +6463,11 @@ "jCard", "vCard" ], + "support": { + "forum": "https://groups.google.com/group/sabredav-discuss", + "issues": "https://github.com/sabre-io/vobject/issues", + "source": "https://github.com/fruux/sabre-vobject" + }, "time": "2016-10-07T03:20:40+00:00" }, { @@ -6836,6 +6849,9 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v3.4.47" + }, "time": "2020-10-24T10:57:07+00:00" }, { diff --git a/devops/docker/composer/Dockerfile b/devops/docker/composer1/Dockerfile similarity index 100% rename from devops/docker/composer/Dockerfile rename to devops/docker/composer1/Dockerfile diff --git a/devops/docker/composer/entrypoint.sh b/devops/docker/composer1/entrypoint.sh similarity index 100% rename from devops/docker/composer/entrypoint.sh rename to devops/docker/composer1/entrypoint.sh diff --git a/devops/docker/composer2/Dockerfile b/devops/docker/composer2/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..f17777c477a159266f5f047d470584416e90e474 --- /dev/null +++ b/devops/docker/composer2/Dockerfile @@ -0,0 +1,23 @@ +# Copyright (C) 2020 Leipzig University Library +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +# @author Sebastian Kehr <kehr@ub.uni-leipzig.de> +# @license https://opensource.org/licenses/GPL-3.0 GNU GPLv3 + +FROM composer:2.5.8 +RUN apk add --no-cache freetype-dev libxml2-dev icu-dev \ + && docker-php-ext-install gd \ + && docker-php-ext-install soap \ + && docker-php-ext-install intl \ No newline at end of file diff --git a/devops/docker/composer2/entrypoint.sh b/devops/docker/composer2/entrypoint.sh new file mode 100755 index 0000000000000000000000000000000000000000..041fc1a907e5feb803525fbf0ec759506f6c143c --- /dev/null +++ b/devops/docker/composer2/entrypoint.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env sh +# Copyright (C) 2020 Leipzig University Library +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +# @author Sebastian Kehr <kehr@ub.uni-leipzig.de> +# @license https://opensource.org/licenses/GPL-3.0 GNU GPLv3 + +if [ "$(whoami)" = "php" ]; then + mkdir -p "$COMPOSER_HOME" + exec /docker-entrypoint.sh "$@" + exit +fi + +until ! (ping -c1 env >/dev/null 2>&1) && [ -f ./data/docker/env/composer ]; do :; done +set -a; . ./data/docker/env/composer; set +a + +composer --version + +: "${UIDGID:=$(stat -c '%u' .):$(stat -c '%g' .)}" +echo "php:x:$UIDGID:php:$(pwd):/bin/sh" >> /etc/passwd +chown "$UIDGID" "$(command -v composer)" +su -p -c "exec $0 $*" php \ No newline at end of file diff --git a/devops/docker/db/mariadb_10_11/Dockerfile b/devops/docker/db/mariadb_10_11/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..8a4b1e5ecf7d3aad0a9a6ee19427d666da88a7d5 --- /dev/null +++ b/devops/docker/db/mariadb_10_11/Dockerfile @@ -0,0 +1,19 @@ +# Copyright (C) 2023 Leipzig University Library +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +# @author Sebastian Kehr <kehr@ub.uni-leipzig.de> +# @license https://opensource.org/licenses/GPL-3.0 GNU GPLv3 + +FROM mariadb:10.11.5 \ No newline at end of file diff --git a/devops/docker/db/entrypoint.sh b/devops/docker/db/mariadb_10_11/entrypoint.sh similarity index 87% rename from devops/docker/db/entrypoint.sh rename to devops/docker/db/mariadb_10_11/entrypoint.sh index 168bb590f52fe4830dbfef5134481a9fe9c68e25..8be1f15524b89bf8d6a9b6638a28e322142a24b3 100755 --- a/devops/docker/db/entrypoint.sh +++ b/devops/docker/db/mariadb_10_11/entrypoint.sh @@ -18,6 +18,12 @@ # @license https://opensource.org/licenses/GPL-3.0 GNU GPLv3 until ! (ping -c1 env >/dev/null 2>&1) && [ -f ./data/docker/env/db ]; do :; done +while ! grep -q MYSQL_ROOT_PASSWORD ./data/docker/env/db +do + echo "wait for MYSQL_ROOT_PASSWORD" + sleep 1 +done set -a; . ./data/docker/env/db; set +a +echo "set up db" exec docker-entrypoint.sh "$@" \ No newline at end of file diff --git a/devops/docker/db/mariadb_10_3/Dockerfile b/devops/docker/db/mariadb_10_3/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..ac070a85ff23d2f500ba5880575a1f5a9833ab9d --- /dev/null +++ b/devops/docker/db/mariadb_10_3/Dockerfile @@ -0,0 +1,19 @@ +# Copyright (C) 2023 Leipzig University Library +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +# @author Sebastian Kehr <kehr@ub.uni-leipzig.de> +# @license https://opensource.org/licenses/GPL-3.0 GNU GPLv3 + +FROM mariadb:10.3.17 \ No newline at end of file diff --git a/devops/docker/db/mariadb_10_3/entrypoint.sh b/devops/docker/db/mariadb_10_3/entrypoint.sh new file mode 100755 index 0000000000000000000000000000000000000000..8be1f15524b89bf8d6a9b6638a28e322142a24b3 --- /dev/null +++ b/devops/docker/db/mariadb_10_3/entrypoint.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env sh +# Copyright (C) 2020 Leipzig University Library +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +# @author Sebastian Kehr <kehr@ub.uni-leipzig.de> +# @license https://opensource.org/licenses/GPL-3.0 GNU GPLv3 + +until ! (ping -c1 env >/dev/null 2>&1) && [ -f ./data/docker/env/db ]; do :; done +while ! grep -q MYSQL_ROOT_PASSWORD ./data/docker/env/db +do + echo "wait for MYSQL_ROOT_PASSWORD" + sleep 1 +done +set -a; . ./data/docker/env/db; set +a + +echo "set up db" +exec docker-entrypoint.sh "$@" \ No newline at end of file diff --git a/devops/docker/env/entrypoint.sh b/devops/docker/env/entrypoint.sh index d623d231f24177d753340bc6d484c817144d338c..f0d0a9bbce2653f09e992fe158fd7161e92b72d6 100755 --- a/devops/docker/env/entrypoint.sh +++ b/devops/docker/env/entrypoint.sh @@ -15,20 +15,16 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # # @author Sebastian Kehr <kehr@ub.uni-leipzig.de> +# @author Robert Lange <lange@ub.uni-leipzig.de> # @license https://opensource.org/licenses/GPL-3.0 GNU GPLv3 +apk update && apk add jq + # Taken from http://www.etalabs.net/sh_tricks.html quote () { printf %s\\n "$1" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/'/" ; } - -if ! [ "$(whoami)" = "dev" ]; then - : "${UIDGID:=$(stat -c '%u' .):$(stat -c '%g' .)}" - echo "dev:x:$UIDGID:dev:$(pwd):/bin/sh" >> /etc/passwd - su -p -c "exec $0 $*" dev - exit -fi - mkdir -p "${DIR=data/docker/env}" +# create files from docker-env.*.yml in data/docker/env # shellcheck disable=SC2046 JSON=$(spruce merge $(find docker-env.*.yml) | spruce json) for KEY in $(echo "$JSON" | jq -r 'keys | join(" ")'); do @@ -37,4 +33,16 @@ for KEY in $(echo "$JSON" | jq -r 'keys | join(" ")'); do VAL=$(echo "$JSON" | jq -r ".\"$KEY\".\"$VAR\"") echo "$VAR=$(quote "$VAL")" >> "$FILE" done -done \ No newline at end of file +done + +# change owner to user dev if not already +# to write files not as root +if ! [ "$(whoami)" = "dev" ]; then + : "${UIDGID:=$(stat -c '%u' .):$(stat -c '%g' .)}" + echo "dev:x:$UIDGID:dev:$(pwd):/bin/sh" >> /etc/passwd + #su -p -c "exec $0 $*" dev + chown "$UIDGID" data + chown "$UIDGID" data/docker + chown -R "$UIDGID" "${DIR}" +fi +exit \ No newline at end of file diff --git a/devops/docker/grunt/Dockerfile b/devops/docker/grunt/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..03490f4c8ba11ef51b417d283f733e04ea09befb --- /dev/null +++ b/devops/docker/grunt/Dockerfile @@ -0,0 +1,20 @@ +# Copyright (C) 2020 Leipzig University Library +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +# @author Robert Lange <lange@ub.uni-leipzig.de> +# @license https://opensource.org/licenses/GPL-3.0 GNU GPLv3 + +FROM node:19.9.0-alpine +RUN apk --no-cache --update add git python3 openssh alpine-sdk diff --git a/devops/docker/grunt/entrypoint.sh b/devops/docker/grunt/entrypoint.sh index b2ca391b650a42c36fbf0e3417bd28e143843a99..eb69e0e55a1dda49dd6dae23cdc00b43ed6dbcd0 100755 --- a/devops/docker/grunt/entrypoint.sh +++ b/devops/docker/grunt/entrypoint.sh @@ -30,7 +30,7 @@ term_grunt () { if [ "$(whoami)" = "node" ]; then mkdir -p "$HOME" - PREFIX="$HOME" npm install + PREFIX="$HOME" npm install grunt-sass@${GRUNT_SASS:-3.1.0} jit-grunt@${JIT_GRUNT:-0.10.0} node-sass@${NODE_SASS:-7.0.3} grunt-contrib-watch@1.1.0 --no-shrinkwrap --no-save node_modules/.bin/grunt "$@" exit fi diff --git a/devops/docker/httpd/Dockerfile b/devops/docker/httpd/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..400eb4270e093026e2aeff1b815a14cc288b2660 --- /dev/null +++ b/devops/docker/httpd/Dockerfile @@ -0,0 +1,40 @@ +FROM httpd:2.4 +#ENTRYPOINT [ "/docker-entrypoint" ] +CMD ["apache2ctl", "-D", "FOREGROUND"] + +ENV SHIB_HANDLER_URL=/Shibboleth.sso \ + APACHE_RUN_DIR=/var/run/apache2 \ + APACHE_RUN_USER=www-data \ + APACHE_RUN_GROUP=www-data \ + APACHE_DOC_ROOT=/var/www/html + +ADD assets/*.conf /etc/apache2/conf-available/ + +#RUN chmod a+x /docker-entrypoint \ +RUN apt-get update \ + && apt-get install -y --no-install-recommends openssl apache2 \ + && openssl genrsa -out /etc/ssl/private/ssl-cert-snakeoil.key 2048 \ + #https://stackoverflow.com/questions/63195304/difference-between-pem-crt-key-files#:~:text=According%20to%20this%20answer%2C.crt%20keeps%20a%20signed%20certificate%2C,a%20key%2C%20certificate%2C...%29%20is%20Base64%20encoded.%20%E2%80%93%20Wolfson + && openssl req -nodes -new -x509 -newkey rsa:2048 -subj "/CN=localhost" -keyout /etc/ssl/certs/ssl-vufind.key -out /etc/ssl/certs/ssl-vufind.crt -days 3650 \ + && apt-get purge -y openssl \ + && apt-get autoremove -y --purge \ + && sed -e 's!^\(ErrorLog\).*$!\1 /proc/self/fd/2!' -i /etc/apache2/apache2.conf \ + && sed -e 's!^\(PidFile.*\)$!#\1!' -i /etc/apache2/apache2.conf \ + && sed -e 's!/var/www/html!${APACHE_DOC_ROOT}!g' -i /etc/apache2/sites-available/000-default.conf \ + && sed -e 's!^\(\s*ErrorLog\).*$!\1 /proc/self/fd/2!' -i /etc/apache2/sites-available/000-default.conf \ + && sed -e 's!^\(\s*CustomLog\).*$!\1 /proc/self/fd/1 combined!' -i /etc/apache2/sites-available/000-default.conf \ + && sed -e 's!/var/www/html!${APACHE_DOC_ROOT}!g' -i /etc/apache2/sites-available/default-ssl.conf \ + && sed -e 's!^\(\s*ErrorLog\).*$!\1 /proc/self/fd/2!' -i /etc/apache2/sites-available/default-ssl.conf \ + && sed -e 's!^\(\s*CustomLog\).*$!\1 /proc/self/fd/1 combined!' -i /etc/apache2/sites-available/default-ssl.conf \ + && a2disconf serve-cgi-bin other-vhosts-access-log \ + && a2enmod rewrite proxy_fcgi \ + && a2enmod ssl \ + && a2enconf debug ssl \ + && rm -r /var/lib/apt/lists/* + +ENV BASE_PATH="" \ + FCGI_TARGET="php:9000" + +ADD vufind.conf /etc/apache2/sites-available/vufind.conf + +RUN a2ensite vufind \ No newline at end of file diff --git a/devops/docker/httpd/assets/debug.conf b/devops/docker/httpd/assets/debug.conf new file mode 100644 index 0000000000000000000000000000000000000000..a0425c0ce818a5b9a3670555c506b2d43ee98a0c --- /dev/null +++ b/devops/docker/httpd/assets/debug.conf @@ -0,0 +1,3 @@ +<IfDefine debug> + ProxyTimeout 3600 +</IfDefine> diff --git a/devops/docker/httpd/assets/ssl.conf b/devops/docker/httpd/assets/ssl.conf new file mode 100644 index 0000000000000000000000000000000000000000..4118c8c591ee847ba3c2552f47d39723968c22c3 --- /dev/null +++ b/devops/docker/httpd/assets/ssl.conf @@ -0,0 +1,6 @@ +<IfDefine ssl> + LoadModule socache_shmcb_module /usr/lib/apache2/modules/mod_socache_shmcb.so + LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so + IncludeOptional mods-available/ssl.conf + Listen 443 +</IfDefine> diff --git a/devops/docker/httpd/vufind.conf b/devops/docker/httpd/vufind.conf new file mode 100644 index 0000000000000000000000000000000000000000..5f112bfa61e520d1e9dcdaa806a6c3871ae4d132 --- /dev/null +++ b/devops/docker/httpd/vufind.conf @@ -0,0 +1,79 @@ +# vufind.conf for finc development +<FilesMatch \.php$> + SetHandler "proxy:fcgi://${FCGI_TARGET}" +</FilesMatch> + +# Configuration for theme-specific resources: +AliasMatch ^${BASE_PATH}/themes/([0-9a-zA-Z-_]*)/css/(.*)$ /usr/local/vufind/themes/$1/css/$2 +AliasMatch ^${BASE_PATH}/themes/([0-9a-zA-Z-_]*)/images/(.*)$ /usr/local/vufind/themes/$1/images/$2 +AliasMatch ^${BASE_PATH}/themes/([0-9a-zA-Z-_]*)/js/(.*)$ /usr/local/vufind/themes/$1/js/$2 +<Directory ~ "^/usr/local/vufind/themes/([0-9a-zA-Z-_]*)/(css|images|js)/"> + <IfModule !mod_authz_core.c> + Order allow,deny + Allow from all + </IfModule> + <IfModule mod_authz_core.c> + Require all granted + </IfModule> + AllowOverride All +</Directory> + +# Configuration for public cache (used for asset pipeline minification) +AliasMatch ^${BASE_PATH}/cache/(.*)$ /var/cache/vufind/public/$1 +<Directory /var/cache/vufind/public/> + <IfModule !mod_authz_core.c> + Order allow,deny + Allow from all + </IfModule> + <IfModule mod_authz_core.c> + Require all granted + </IfModule> + AllowOverride All +</Directory> + +# Configuration for general VuFind base: +Alias ${BASE_PATH}/ /usr/local/vufind/public/ +<Directory /usr/local/vufind/public/> + <IfModule !mod_authz_core.c> + Order allow,deny + Allow from all + </IfModule> + <IfModule mod_authz_core.c> + Require all granted + </IfModule> + AllowOverride All + + # If you wish to use the Shibboleth authentication, uncomment the following lines + # AND comment out the "Require all granted" line above. There must not be any other + # "Require" lines in this configuration section for the "Require shibboleth" + # directive to be effective. + #AuthType shibboleth + #Require shibboleth +</Directory> + +<Location ${BASE_PATH}/> + RewriteEngine On +# RewriteBase ${BASE_PATH}/ + + RewriteCond %{REQUEST_FILENAME} -s [OR] + RewriteCond %{REQUEST_FILENAME} -l [OR] + RewriteCond %{REQUEST_FILENAME} -d + RewriteRule ^.*$ - [NC,L] + RewriteRule ^.*$ index.php [NC,L] + +</Location> + +# Having a configured shibboleth-handler +<Location ${SHIB_HANDLER_URL}> + RewriteEngine On + RewriteRule .* - [L] +</Location> + +<VirtualHost *:443> + ServerName localhost + DocumentRoot /usr/local/vufind/public/ + + SSLEngine on + SSLCertificateFile /etc/ssl/certs/ssl-vufind.crt + SSLCertificateKeyFile /etc/ssl/certs/ssl-vufind.key +</VirtualHost> \ No newline at end of file diff --git a/devops/docker/php/Dockerfile b/devops/docker/php7_2/Dockerfile similarity index 100% rename from devops/docker/php/Dockerfile rename to devops/docker/php7_2/Dockerfile diff --git a/devops/docker/php/entrypoint.sh b/devops/docker/php7_2/entrypoint.sh similarity index 100% rename from devops/docker/php/entrypoint.sh rename to devops/docker/php7_2/entrypoint.sh diff --git a/devops/docker/php/php.ini b/devops/docker/php7_2/php.ini similarity index 100% rename from devops/docker/php/php.ini rename to devops/docker/php7_2/php.ini diff --git a/devops/docker/php8_0/Dockerfile b/devops/docker/php8_0/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..361d18e935ce8c245e201288e6e05807cba27be3 --- /dev/null +++ b/devops/docker/php8_0/Dockerfile @@ -0,0 +1,39 @@ +# Copyright (C) 2023 Leipzig University Library +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +# @author Sebastian Kehr <kehr@ub.uni-leipzig.de> +# @license https://opensource.org/licenses/GPL-3.0 GNU GPLv3 + +FROM php:8.0-fpm-alpine +RUN apk add --no-cache $PHPIZE_DEPS freetype-dev libxml2-dev icu-dev libxslt-dev \ + && pecl install xdebug-3.0.0 \ + && docker-php-ext-enable xdebug \ + && docker-php-ext-install mysqli \ + && docker-php-ext-install pdo_mysql \ + && docker-php-ext-install soap \ + && docker-php-ext-install intl \ + && docker-php-ext-install dom \ + && docker-php-ext-install xsl + +RUN apk add --no-cache \ + libjpeg-turbo-dev \ + libpng-dev \ + libwebp-dev \ + freetype-dev + +RUN docker-php-ext-configure gd --with-jpeg --with-webp --with-freetype +RUN docker-php-ext-install gd + +COPY php.ini /usr/local/etc/php/conf.d/php.ini \ No newline at end of file diff --git a/devops/docker/php8_0/entrypoint.sh b/devops/docker/php8_0/entrypoint.sh new file mode 100755 index 0000000000000000000000000000000000000000..927b845f7d11d2f22a194b0751fbeb40957722d7 --- /dev/null +++ b/devops/docker/php8_0/entrypoint.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env sh +# Copyright (C) 2020 Leipzig University Library +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +# @author Sebastian Kehr <kehr@ub.uni-leipzig.de> +# @license https://opensource.org/licenses/GPL-3.0 GNU GPLv3 + +until ! (ping -c1 env >/dev/null 2>&1) && [ -f ./data/docker/env/php ]; do :; done +set -a; . ./data/docker/env/php; set +a + +: "${UIDGID:=$(stat -c '%u' .):$(stat -c '%g' .)}" +sed -i "s/$(id -u www-data):$(id -g www-data)/$UIDGID/" /etc/passwd +exec docker-php-entrypoint "$@" diff --git a/devops/docker/php8_0/php.ini b/devops/docker/php8_0/php.ini new file mode 100644 index 0000000000000000000000000000000000000000..36c1f7030eb4e49c4c15bf9c1582926ca3d81579 --- /dev/null +++ b/devops/docker/php8_0/php.ini @@ -0,0 +1,28 @@ +; Copyright (C) 2020 Leipzig University Library +; +; This program is free software: you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation, either version 3 of the License, or +; (at your option) any later version. +; +; This program is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program. If not, see <http://www.gnu.org/licenses/>. +; +; @author Sebastian Kehr <kehr@ub.uni-leipzig.de> +; @license https://opensource.org/licenses/GPL-3.0 GNU GPLv3 + +; See https://www.php.net/manual/en/function.error-reporting.php for more details. +error_reporting = E_ALL + +; See https://xdebug.org/docs/all_settings for more details. +xdebug.mode=debug +xdebug.start_with_request=yes +xdebug.remote_handler=dbgp +xdebug.discover_client_host=1 +xdebug.client_port=9000 +short_open_tag=Off; \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 1e244e2e990973150e01e4285d8a08590ca324d8..b7ac4f464b3130889c1942eef6d4cda8a8912d23 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,14 +2,14 @@ version: '2.4' services: env: - image: linkyard/yaml:1.1.1 + image: governmentpaas/spruce:826b547c6411b0fd22ac0b07bde11eed5523879c volumes: - .:/usr/local/vufind:rw working_dir: /usr/local/vufind entrypoint: ["devops/docker/env/entrypoint.sh"] composer: - build: devops/docker/composer + build: devops/docker/${COMPOSER_VERSION:-composer1} working_dir: /usr/local/vufind volumes: - .:/usr/local/vufind:rw @@ -17,31 +17,33 @@ services: - $HOME/.ssh/known_hosts:/etc/ssh/ssh_known_hosts depends_on: - env - entrypoint: ["devops/docker/composer/entrypoint.sh"] + entrypoint: devops/docker/${COMPOSER_VERSION:-composer1}/entrypoint.sh command: ["install"] php: - build: devops/docker/php + build: devops/docker/${PHP_VERSION:-php7_2} working_dir: /usr/local/vufind volumes: - ./:/usr/local/vufind depends_on: - env - db - entrypoint: ["devops/docker/php/entrypoint.sh"] + entrypoint: devops/docker/${PHP_VERSION:-php7_2}/entrypoint.sh command: ["php-fpm"] httpd: - image: ubleipzig/vufind-httpd:2.4-5 + build: devops/docker/httpd ports: - 127.0.0.1:${HTTPD_PORT:-11100}:80 + - 127.0.0.1:${HTTPD_PORT:-11105}:443 volumes: - ./:/usr/local/vufind:ro depends_on: - php + tty: true db: - image: mariadb:10.3.17 + build: devops/docker/db/${DB_VERSION:-mariadb_10_3} ports: - 127.0.0.1:${DB_PORT:-11101}:3306 working_dir: /usr/local/vufind @@ -50,7 +52,8 @@ services: - db-data:/var/lib/mysql depends_on: - env - entrypoint: ["devops/docker/db/entrypoint.sh"] + - autoconfig + entrypoint: devops/docker/db/${DB_VERSION:-mariadb_10_3}/entrypoint.sh command: [ "mysqld", "--character-set-server=utf8mb4", @@ -72,14 +75,16 @@ services: command: ["run"] grunt: - image: node:7.10.1-slim + build: devops/docker/grunt working_dir: /usr/local/vufind volumes: - ./:/usr/local/vufind:rw depends_on: - env + - composer + env_file: .env entrypoint: ["devops/docker/grunt/entrypoint.sh"] - command: ["watch"] + command: ["watch:scss"] autoconfig: image: node:7.10.1-alpine @@ -88,7 +93,6 @@ services: - ./:/usr/local/vufind:rw depends_on: - env - - db entrypoint: ["devops/docker/autoconfig/entrypoint.sh"] command: ["vufind", "deploy"] diff --git a/fid/languages/de.ini b/fid/languages/de.ini index 4815f041c6afcd2bc6b8f2c12489dc36b969514c..ed4424a97a0d8691b735f64bf189665fc732293c 100644 --- a/fid/languages/de.ini +++ b/fid/languages/de.ini @@ -139,7 +139,7 @@ Antiquarian Booksellers Association of America = "<span lang="en">Antiquarian Bo UNESCO Atlas of the Worlds Languages in Danger = "<span lang="en">UNESCO Atlas of the Worlds Languages in Danger</span>" Cyberabstracts = "<span lang="en">Cyberabstracts</span>" TextGrid Repository = "<span lang="en">TextGrid Repository</span>" -Basel Register of Thesauri, Ontologies & Classifications = "<span lang=""en>Basel Register of Thesauri, Ontologies & Classifications</span>" +Basel Register of Thesauri, Ontologies & Classifications = "<span lang="en">Basel Register of Thesauri, Ontologies & Classifications</span>" Statcounter GlobalStats = "<span lang="en">Statcounter GlobalStats</span>" Oxyrhynchus Online = "<span lang="en">Oxyrhynchus Online</span>" Norske Bøker 1519–1850 : Bibliografi = "<span lang="no">Norske Bøker 1519-1850 : Bibliografi</span>" @@ -161,150 +161,150 @@ FactGrid : a Database for Historians = "<span lang="en">FactGrid : a Database fo E-LIS : E-Prints in Library and Information Science = "<span lang="en">E-LIS : E-Prints in Library and Information Science</span>" # 'Translated' Sources -British Library Catalogue (Profil FID BBI) = "<span lang="en">British Library Catalogue (Profil FID BBI)</span>" -Australian and New Zealand Student Services Association Inc. (CrossRef) = "<span lang="en">Australian and New Zealand Student Services Association Inc. (CrossRef)</span>" -Open Grey (OG) = "<span lang="en">Open Grey (OG)</span>" -University of Michigan Press (CrossRef) = "<span lang="en">University of Michigan Press (CrossRef)</span>" -IGI Global (CrossRef) = "<span lang="en">IGI Global (CrossRef)</span>" -Journal of Critical Library and Information Studies = "<span lang="en">Journal of Critical Library and Information Studies</span>" -Springer Publishing Company (CrossRef) = "<span lang="en">Springer Publishing Company (CrossRef)</span>" -University of Pennsylvania Press (CrossRef) = "<span lang="en">University of Pennsylvania Press (CrossRef)</span>" -Brill Academic Publishers (CrossRef) = "<span lang="en">Brill Academic Publishers (CrossRef)</span>" -Stuttgart Media University: HdM ePub = "<span lang="en">Stuttgart Media University: HdM ePub</span>" -John Benjamins Publishing Company (CrossRef) = "<span lang="en">John Benjamins Publishing Company (CrossRef)</span>" -IOS Press (CrossRef) = "<span lang="en">IOS Press (CrossRef)</span>" -Institutional Repository of Leibniz Universität Hannover = "<span lang="en">Institutional Repository of Leibniz Universität Hannover</span>" -Practical Academic Librarianship: The International Journal of the SLA Academic Division (Texas Digital Library - TDL E-Journals) = "<span lang="en">Practical Academic Librarianship: The International Journal of the SLA Academic Division (Texas Digital Library - TDL E-Journals)</span>" -Stellenbosch University (CrossRef) = "<span lang="en">Stellenbosch University (CrossRef)</span>" -Dokumentenrepositorium der RUB / RUB-Repository (Ruhr-Universität Bochum) = "Dokumentenrepositorium der RUB / <span lang="en">RUB-Repository (Ruhr-Universität Bochum)</span>" -American Library Association (CrossRef) = "<span lang="en">American Library Association (CrossRef)</span>" -University of Toronto Press (CrossRef) = "<span lang="en">University of Toronto Press (CrossRef)</span>" -Universidad Complutense de Madrid (UCM) (CrossRef) = "<span lang="es">Universidad Complutense de Madrid (UCM)/span> (CrossRef)<" -World Scientific Pub Co Pte Lt (CrossRef) = "<span lang="en">World Scientific Pub Co Pte Lt (CrossRef)</span>" -Center for Open Science - Open Science Framework (Preprints) = "<span lang="en">Center for Open Science - Open Science Framework (Preprints)</span>" -Association for Information Systems (CrossRef) = "<span lang="en">Association for Information Systems (CrossRef)</span>" -CAIRN (CrossRef) = "<span lang="en">CAIRN (CrossRef)</span>" -University of Malaya Press (CrossRef) = "<span lang="en">University of Malaya Press (CrossRef)</span>" -Springer Lecture Notes Archiv 1964-1996 = "<span lang="en">Springer Lecture Notes Archiv 1964-1996</span>" -JSTOR (CrossRef) = "<span lang="en">JSTOR (CrossRef)</span>" -Imprensa da Universidade de Coimbra (CrossRef) = "<span lang="es">Imprensa da Universidade de Coimbra</span> (CrossRef)" -Croatian Library Association (CrossRef) = "<span lang="en">Croatian Library Association (CrossRef)</span>" -TH Köln: ePublications = "<span lang="en">TH Köln: ePublications</span>" -University Library System, University of Pittsburgh (CrossRef) = "<span lang="en">University Library System, University of Pittsburgh (CrossRef)</span>" -British Library Catalogue = "<span lang="en">British Library Catalogue</span>" -Hamburg University of Applied Sciences (HAW): Publications = "<span lang="en">Hamburg University of Applied Sciences (HAW): Publications</span>" -Crossref = "<span lang="en">Crossref</span>" -Informa UK Limited (CrossRef) = "<span lang="en">Informa UK Limited (CrossRef)</span>" -Cambridge University Press (CrossRef) = "<span lang="en">Cambridge University Press (CrossRef)</span>" -University of Guelph (CrossRef) = "<span lang="en">University of Guelph (CrossRef)</span>" -perspectivia.net - The publication platform of the Max Weber Foundation = "<span lang="en">perspectivia.net - The publication platform of the Max Weber Foundation</span>" -International Journal of Librarianship = "<span lang="en">International Journal of Librarianship</span>" -Institute of Electrical & Electronics Engineers (IEEE) (CrossRef) = "<span lang="en">Institute of Electrical & Electronics Engineers (IEEE) (CrossRef)</span>" -Nature Publishing Group (CrossRef) = "<span lang="en">Nature Publishing Group (CrossRef)</span>" -TH Köln: Cologne Open Science = "<span lang="en">TH Köln: Cologne Open Science</span>" -Canadian Health Libraries Association (CrossRef) = "<span lang="en">Canadian Health Libraries Association (CrossRef)</span>" -San José State University: SJSU ScholarWorks = "<span lang="en">San José State University: SJSU ScholarWorks</span>" -Editorial Universidad de Sevilla (CrossRef) = "<span lang="es">Editorial Universidad de Sevilla</span> (CrossRef)" -EPI SCP (El Profesional de la Informacion) (CrossRef) = "<span lang="es">EPI SCP (El Profesional de la Informacion)</span> (CrossRef)" -Johns Hopkins University Press (CrossRef) = "<span lang="en">Johns Hopkins University Press (CrossRef)</span>" -E-LIS: Eprints in Library and Information Science = "<span lang="en">E-LIS: Eprints in Library and Information Science</span>" -Directory of Open Access Journals: DOAJ Articles = "<span lang="en">Directory of Open Access Journals: DOAJ Articles</span>" -Journal of Data and Information Science (CrossRef) = "<span lang="en">Journal of Data and Information Science (CrossRef)</span>" -Bibliothèque nationale de France (BnF): Gallica = "<span lang="fr">Bibliothèque nationale de France (BnF): Gallica</span>" -University and Research Librarians' Association (CrossRef) = "<span lang="en">University and Research Librarians' Association (CrossRef)</span>" -Informing Science Institute (CrossRef) = "<span lang="en">Informing Science Institute (CrossRef)</span>" -The Pennsylvania State University Press (CrossRef) = "<span lang="en">The Pennsylvania State University Press (CrossRef)</span>" -Levy Library Press (CrossRef) = "<span lang="en">Levy Library Press (CrossRef)</span>" -Inderscience Publishers (CrossRef) = "<span lang="en">Inderscience Publishers (CrossRef)</span>" -The Haworth Press (CrossRef) = "<span lang="en">The Haworth Press (CrossRef)</span>" -University of Potsdam: publish.UP = "<span lang="en">University of Potsdam: publish.UP</span>" -Pontificia Universidad Catolica de Chile (CrossRef) = "<span lang="es">Pontificia Universidad Catolica de Chile</span> (CrossRef)" -Springer Nature (CrossRef) = "<span lang="en">Springer Nature (CrossRef)</span>" -Enssib: Bibliothèque Numérique (École Nationale Supérieure des Sciences de l'Information et des Bibliothèques) = "<span lang="fr">Enssib: Bibliothèque Numérique (École Nationale Supérieure des Sciences de l'Information et des Bibliothèques)</span>" -John Rylands University Library (CrossRef) = "<span lang="en">John Rylands University Library (CrossRef)</span>" -Harrassowitz Publishing House (CrossRef) = "<span lang="en">Harrassowitz Publishing House (CrossRef)</span>" -Hathi Trust = "<span lang="en">Hathi Trust</span>" -IGI Global InfoSci Journals Archive 2000 - 2015 = "<span lang="en">IGI Global InfoSci Journals Archive 2000 - 2015</span>" -BASE Bielefeld Academic Search Engine = "<span lang="en">BASE Bielefeld Academic Search Engine</span>" -University of Konstanz: Konstanz Online Publication Server (KOPS) = "<span lang="en">University of Konstanz: Konstanz Online Publication Server (KOPS)</span>" -Directory of Open Access Books (DOAB) = "<span lang="en">Directory of Open Access Books (DOAB)</span>" -NeuroQuantology Journal (CrossRef) = "<span lang="en">NeuroQuantology Journal (CrossRef)</span>" -University of Chicago Press (CrossRef) = "<span lang="en">University of Chicago Press (CrossRef)</span>" -TravesÃa - recursos digitales para la cooperación bibliotecaria (Ministerio del Cultura) = "<span lang="es">TravesÃa - recursos digitales para la cooperación bibliotecaria (Ministerio del Cultura)</span>" -Eighteenth Century Collections Online / ECCO = "<span lang="en">Eighteenth Century Collections Online / ECCO</span>" -Institute of Information Science, IZUM (CrossRef) = "<span lang="en">Institute of Information Science, IZUM (CrossRef)</span>" -Universidad Nacional Autónoma de México (CrossRef) = "<span lang="es">Universidad Nacional Autónoma de México</span> (CrossRef)" -Association of Austrian Librarians (CrossRef) = "<span lang="en">Association of Austrian Librarians (CrossRef)</span>" -Addleton Academic Publishers (CrossRef) = "<span lang="en">Addleton Academic Publishers (CrossRef)</span>" -McFarland and Company, Inc., Publishers (CrossRef) = "<span lang="en">McFarland and Company, Inc., Publishers (CrossRef)</span>" -American Library Association Institutional Repository (ALAIR) = "<span lang="en">American Library Association Institutional Repository (ALAIR)</span>" -Hildesheim University: HilDok = "<span lang="en">Hildesheim University: HilDok</span>" -Cologne University: KUPS = "<span lang="en">Cologne University: KUPS</span>" -Eberhard Karls University Tübingen: Publication System = "<span lang="en">Eberhard Karls University Tübingen: Publication System</span>" -PubPub (CrossRef) = "<span lang="en">PubPub (CrossRef)</span>" -The International Academic Forum (IAFOR) (CrossRef) = "<span lang="en">The International Academic Forum (IAFOR) (CrossRef)</span>" -Academic Publishing House Researcher (CrossRef) = "<span lang="en">Academic Publishing House Researcher (CrossRef)</span>" -Universidad de Antioquia (CrossRef) = "<span lang="es">Universidad de Antioquia</span> (CrossRef)" -Figshare = "<span lang="en">Figshare</span>" -British National Bibliography (Profil FID BBI) = "<span lang="en">British National Bibliography</span> (Profil FID BBI)" -PubMed Central (PMC) = "<span lang="en">PubMed Central (PMC)</span>" -Universidade Federal de Santa Catarina (UFSC) (CrossRef) = "<span lang="es">Universidade Federal de Santa Catarina (UFSC)</span> (CrossRef)" -CILIP Information Literacy Group (CrossRef) = "<span lang="en">CILIP Information Literacy Group (CrossRef)</span>" -University of Edinburgh: Edinburgh Research Archive (ERA) = "<span lang="en">University of Edinburgh: Edinburgh Research Archive (ERA)</span>" -Journal of Radical Librarianship = "<span lang="en">Journal of Radical Librarianship</span>" -Institute for Operations Research and the Management Sciences (INFORMS) (CrossRef) = "<span lang="en">Institute for Operations Research and the Management Sciences (INFORMS) (CrossRef)</span>" -Institute of Information and Book Studies, University of Warsaw: Digital Library of Book Studies / Instytut Informacji Naukowej i Studiów Bibliologicznych UW, Bibliologiczna Biblioteka Cyfrowa = "<span lang="en">Institute of Information and Book Studies, University of Warsaw: Digital Library of Book Studies</span> / <span lang="pl">Instytut Informacji Naukowej i Studiów Bibliologicznych UW, Bibliologiczna Biblioteka Cyfrowa</span>" -JLIS.it (Italian Journal of Library, Archives, and Information Science / Rivista italiana di biblioteconomia, archivistica e scienza dell'informazione) = "<span lang="en">JLIS.it (Italian Journal of Library, Archives, and Information Science</span> / <span lang="it">Rivista italiana di biblioteconomia, archivistica e scienza dell'informazione)</span>" -Nanyang Technological Univ (CrossRef) = "<span lang="en">Nanyang Technological Univ (CrossRef)</span>" -Tomsk State University (CrossRef) = "<span lang="en">Tomsk State University (CrossRef)</span>" -British National Bibliography = "<span lang=""en>British National Bibliography</span>" -EManuscript Services (CrossRef) = "<span lang="en">EManuscript Services (CrossRef)</span>" -Türk KütüphaneciliÄŸi / Turkish Librarianship (Turkish Librarians’ Association) = "<span lang="tr">Türk KütüphaneciliÄŸi</span> / <span lang="en">TTurkish Librarianship (Turkish Librarians’ Association)</span>" -Coimbra University Press (CrossRef) = "<span lang="en">Coimbra University Press (CrossRef)</span>" -Edinburgh University (CrossRef) = "<span lang="en">Edinburgh University (CrossRef)</span>" -Ubiquity Press, Ltd. (CrossRef) = "<span lang="en">Ubiquity Press, Ltd. (CrossRef)</span>" -Bilgi Dünyası / Information World (E-Journal, University and Research Librarians Association, UNAK) = "<span lang="tr">Bilgi Dünyası</span> / <span lang="en">Information World (E-Journal, University and Research Librarians Association, UNAK)</span>" -Defence Scientific Information and Documentation Centre (CrossRef) = "<span lang="en">Defence Scientific Information and Documentation Centre (CrossRef)</span>" -OpenEdition (CrossRef) = "<span lang="en">OpenEdition (CrossRef)</span>" -MDPI AG (CrossRef) = "<span lang="en">MDPI AG (CrossRef)</span>" -Vilnius University Press (CrossRef) = "<span lang="en">Vilnius University Press (CrossRef)</span>" -Wiley-Blackwell (CrossRef) = "<span lang="en">Wiley-Blackwell (CrossRef)</span>" -Brepols Publishers NV (CrossRef) = "<span lang="en">Brepols Publishers NV (CrossRef)</span>" -Publicações BAD (Bibliotecários, Arquivistas e Documentalistas - E-Journals) = "<span lang="pt">Publicações BAD (Bibliotecários, Arquivistas e Documentalistas - E-Journals)</span>" -Ruhr-Universität Bochum (RUB): Dissertations and Theses = "Ruhr-Universität Bochum (RUB): <span lang="en">Dissertations and Theses</span>" -Manchester University Press (CrossRef) = "<span lang="en">Manchester University Press (CrossRef)</span>" -DataCite Metadata Store (German National Library of Science and Technology) = "<span lang="en">DataCite Metadata Store (German National Library of Science and Technology)</span>" -Medical Library Association (CrossRef) = "<span lang="en">Medical Library Association (CrossRef)</span>" -National Taiwan University (CrossRef) = "<span lang=en"">National Taiwan University (CrossRef)</span>" -Common Ground Research Networks (CrossRef) = "<span lang="en">Common Ground Research Networks (CrossRef)</span>" -Ediciones Profesionales de la Informacion SL (CrossRef) = "<span lang="es">Ediciones Profesionales de la Informacion SL (CrossRef)</span>" -027.7 Zeitschrift für Bibliothekskultur / Journal for Library Culture = "027.7 Zeitschrift für Bibliothekskultur / <span lang="en">Journal for Library Culture</span>" -African Journals Online (AJOL) (CrossRef) = "<span lang="en">African Journals Online (AJOL) (CrossRef)</span>" -Portland State University Library (CrossRef) = "<span lang="en">Portland State University Library (CrossRef)</span>" -Masaryk University Press (CrossRef) = "<span lang="en">Masaryk University Press (CrossRef)</span>" -Universidade Estadual de Campinas (CrossRef) = "<span lang="es">Universidade Estadual de Campinas</span> (CrossRef)" -Directory of Open Access Journals: DOAJ Journals = "<span lang="en">Directory of Open Access Journals: DOAJ Journals</span>" -Journal of Digital Information (Texas Digital Library - TDL E-Journals) = "<span lang="en">Journal of Digital Information (Texas Digital Library - TDL E-Journals)</span>" -Emerald (CrossRef) = "<span lang="en">Emerald (CrossRef)</span>" -Penn State Press c/o Project Muse (CrossRef) = "<span lang="en">Penn State Press c/o Project Muse (CrossRef)</span>" -University of Regensburg Publication Server = "<span lang="en">University of Regensburg Publication Server</span>" -International Journal of Information Science and Management (IJISM) = "<span lang="en">International Journal of Information Science and Management (IJISM)</span>" -Society of American Archivists (CrossRef) = "<span lang="en">Society of American Archivists (CrossRef)</span>" -Library Leadership & Management (Texas Digital Library - TDL E-Journals) = "<span lang="en">Library Leadership & Management (Texas Digital Library - TDL E-Journals)</span>" -Universidad de Alicante Servicio de Publicaciones (CrossRef) = "<span lang="es">Universidad de Alicante Servicio de Publicaciones </span>(CrossRef)" -o-bib (E-Journal, VDB - The Association of German Librarians) = "<span lang="en">o-bib (E-Journal, VDB - The Association of German Librarians)</span>" -Oxford University Press (OUP) (CrossRef) = "<span lang="en">Oxford University Press (OUP) (CrossRef)</span>" -SAGE Publications (CrossRef) = "<span lang="en">SAGE Publications (CrossRef)</span>" -Science Alert (CrossRef) = "<span lang="en">Science Alert (CrossRef)</span>" -Open Access Repository of the TH Wildau = "<span lang="en">Open Access Repository of the TH Wildau</span>" -University of Alberta (CrossRef) = "<span lang="en">University of Alberta (CrossRef)</span>" -Liverpool University Press (CrossRef) = "<span lang="en">Liverpool University Press (CrossRef)</span>" -Openings: Studies in Book Art (E-Journal) = "<span lang="en">Openings: Studies in Book Art (E-Journal)</span>" -Taylor & Francis (CrossRef) = "<span lang="en">Taylor & Francis (CrossRef)</span>" -University of Texas Press (CrossRef) = "<span lang="en">University of Texas Press (CrossRef)</span>" -Bamberg University: OPUS Publication Server = "<span lang="en">Bamberg University: OPUS Publication Server</span>" -Brill / Book Sales Catalogues Online = "<span lang="en">Brill / Book Sales Catalogues Online</span>" -Book History Online = "<span lang="en">Book History Online</span>" -Palgrave Macmillan (CrossRef) = "<span lang="en">Palgrave Macmillan (CrossRef)</span>" -Natural Sciences Publishing (CrossRef) = "<span lang="en">Natural Sciences Publishing (CrossRef)</span>" -OPUS FAU - Online publication system of Friedrich-Alexander-Universität Erlangen-Nürnberg = "<span lang="en">OPUS FAU - Online publication system of </span>Friedrich-Alexander-Universität Erlangen-Nürnberg" +British Library Catalogue (Profil FID BBI) = <span lang="en">British Library Catalogue (Profil FID BBI)</span> +Australian and New Zealand Student Services Association Inc. (CrossRef) = <span lang="en">Australian and New Zealand Student Services Association Inc. (CrossRef)</span> +Open Grey (OG) = <span lang="en">Open Grey (OG)</span> +University of Michigan Press (CrossRef) = <span lang="en">University of Michigan Press (CrossRef)</span> +IGI Global (CrossRef) = <span lang="en">IGI Global (CrossRef)</span> +Journal of Critical Library and Information Studies = <span lang="en">Journal of Critical Library and Information Studies</span> +Springer Publishing Company (CrossRef) = <span lang="en">Springer Publishing Company (CrossRef)</span> +University of Pennsylvania Press (CrossRef) = <span lang="en">University of Pennsylvania Press (CrossRef)</span> +Brill Academic Publishers (CrossRef) = <span lang="en">Brill Academic Publishers (CrossRef)</span> +Stuttgart Media University: HdM ePub = <span lang="en">Stuttgart Media University: HdM ePub</span> +John Benjamins Publishing Company (CrossRef) = <span lang="en">John Benjamins Publishing Company (CrossRef)</span> +IOS Press (CrossRef) = <span lang="en">IOS Press (CrossRef)</span> +Institutional Repository of Leibniz Universität Hannover = <span lang="en">Institutional Repository of Leibniz Universität Hannover</span> +Practical Academic Librarianship: The International Journal of the SLA Academic Division (Texas Digital Library - TDL E-Journals) = <span lang="en">Practical Academic Librarianship: The International Journal of the SLA Academic Division (Texas Digital Library - TDL E-Journals)</span> +Stellenbosch University (CrossRef) = <span lang="en">Stellenbosch University (CrossRef)</span> +Dokumentenrepositorium der RUB / RUB-Repository (Ruhr-Universität Bochum) = Dokumentenrepositorium der RUB / <span lang="en">RUB-Repository (Ruhr-Universität Bochum)</span> +American Library Association (CrossRef) = <span lang="en">American Library Association (CrossRef)</span> +University of Toronto Press (CrossRef) = <span lang="en">University of Toronto Press (CrossRef)</span> +Universidad Complutense de Madrid (UCM) (CrossRef) = <span lang="es">Universidad Complutense de Madrid (UCM)</span> (CrossRef) +World Scientific Pub Co Pte Lt (CrossRef) = <span lang="en">World Scientific Pub Co Pte Lt (CrossRef)</span> +Center for Open Science - Open Science Framework (Preprints) = <span lang="en">Center for Open Science - Open Science Framework (Preprints)</span> +Association for Information Systems (CrossRef) = <span lang="en">Association for Information Systems (CrossRef)</span> +CAIRN (CrossRef) = <span lang="en">CAIRN (CrossRef)</span> +University of Malaya Press (CrossRef) = <span lang="en">University of Malaya Press (CrossRef)</span> +Springer Lecture Notes Archiv 1964-1996 = <span lang="en">Springer Lecture Notes Archiv 1964-1996</span> +JSTOR (CrossRef) = <span lang="en">JSTOR (CrossRef)</span> +Imprensa da Universidade de Coimbra (CrossRef) = <span lang="es">Imprensa da Universidade de Coimbra</span> (CrossRef) +Croatian Library Association (CrossRef) = <span lang="en">Croatian Library Association (CrossRef)</span> +TH Köln: ePublications = <span lang="en">TH Köln: ePublications</span> +University Library System, University of Pittsburgh (CrossRef) = <span lang="en">University Library System, University of Pittsburgh (CrossRef)</span> +British Library Catalogue = <span lang="en">British Library Catalogue</span> +Hamburg University of Applied Sciences (HAW): Publications = <span lang="en">Hamburg University of Applied Sciences (HAW): Publications</span> +Crossref = <span lang="en">Crossref</span> +Informa UK Limited (CrossRef) = <span lang="en">Informa UK Limited (CrossRef)</span> +Cambridge University Press (CrossRef) = <span lang="en">Cambridge University Press (CrossRef)</span> +University of Guelph (CrossRef) = <span lang="en">University of Guelph (CrossRef)</span> +perspectivia.net - The publication platform of the Max Weber Foundation = <span lang="en">perspectivia.net - The publication platform of the Max Weber Foundation</span> +International Journal of Librarianship = <span lang="en">International Journal of Librarianship</span> +Institute of Electrical & Electronics Engineers (IEEE) (CrossRef) = <span lang="en">Institute of Electrical & Electronics Engineers (IEEE) (CrossRef)</span> +Nature Publishing Group (CrossRef) = <span lang="en">Nature Publishing Group (CrossRef)</span> +TH Köln: Cologne Open Science = <span lang="en">TH Köln: Cologne Open Science</span> +Canadian Health Libraries Association (CrossRef) = <span lang="en">Canadian Health Libraries Association (CrossRef)</span> +San José State University: SJSU ScholarWorks = <span lang="en">San José State University: SJSU ScholarWorks</span> +Editorial Universidad de Sevilla (CrossRef) = <span lang="es">Editorial Universidad de Sevilla</span> (CrossRef) +EPI SCP (El Profesional de la Informacion) (CrossRef) = <span lang="es">EPI SCP (El Profesional de la Informacion)</span> (CrossRef) +Johns Hopkins University Press (CrossRef) = <span lang="en">Johns Hopkins University Press (CrossRef)</span> +E-LIS: Eprints in Library and Information Science = <span lang="en">E-LIS: Eprints in Library and Information Science</span> +Directory of Open Access Journals: DOAJ Articles = <span lang="en">Directory of Open Access Journals: DOAJ Articles</span> +Journal of Data and Information Science (CrossRef) = <span lang="en">Journal of Data and Information Science (CrossRef)</span> +Bibliothèque nationale de France (BnF): Gallica = <span lang="fr">Bibliothèque nationale de France (BnF): Gallica</span> +University and Research Librarians' Association (CrossRef) = <span lang="en">University and Research Librarians' Association (CrossRef)</span> +Informing Science Institute (CrossRef) = <span lang="en">Informing Science Institute (CrossRef)</span> +The Pennsylvania State University Press (CrossRef) = <span lang="en">The Pennsylvania State University Press (CrossRef)</span> +Levy Library Press (CrossRef) = <span lang="en">Levy Library Press (CrossRef)</span> +Inderscience Publishers (CrossRef) = <span lang="en">Inderscience Publishers (CrossRef)</span> +The Haworth Press (CrossRef) = <span lang="en">The Haworth Press (CrossRef)</span> +University of Potsdam: publish.UP = <span lang="en">University of Potsdam: publish.UP</span> +Pontificia Universidad Catolica de Chile (CrossRef) = <span lang="es">Pontificia Universidad Catolica de Chile</span> (CrossRef) +Springer Nature (CrossRef) = <span lang="en">Springer Nature (CrossRef)</span> +Enssib: Bibliothèque Numérique (École Nationale Supérieure des Sciences de l'Information et des Bibliothèques) = <span lang="fr">Enssib: Bibliothèque Numérique (École Nationale Supérieure des Sciences de l'Information et des Bibliothèques)</span> +John Rylands University Library (CrossRef) = <span lang="en">John Rylands University Library (CrossRef)</span> +Harrassowitz Publishing House (CrossRef) = <span lang="en">Harrassowitz Publishing House (CrossRef)</span> +Hathi Trust = <span lang="en">Hathi Trust</span> +IGI Global InfoSci Journals Archive 2000 - 2015 = <span lang="en">IGI Global InfoSci Journals Archive 2000 - 2015</span> +BASE Bielefeld Academic Search Engine = <span lang="en">BASE Bielefeld Academic Search Engine</span> +University of Konstanz: Konstanz Online Publication Server (KOPS) = <span lang="en">University of Konstanz: Konstanz Online Publication Server (KOPS)</span> +Directory of Open Access Books (DOAB) = <span lang="en">Directory of Open Access Books (DOAB)</span> +NeuroQuantology Journal (CrossRef) = <span lang="en">NeuroQuantology Journal (CrossRef)</span> +University of Chicago Press (CrossRef) = <span lang="en">University of Chicago Press (CrossRef)</span> +TravesÃa - recursos digitales para la cooperación bibliotecaria (Ministerio del Cultura) = <span lang="es">TravesÃa - recursos digitales para la cooperación bibliotecaria (Ministerio del Cultura)</span> +Eighteenth Century Collections Online / ECCO = <span lang="en">Eighteenth Century Collections Online / ECCO</span> +Institute of Information Science, IZUM (CrossRef) = <span lang="en">Institute of Information Science, IZUM (CrossRef)</span> +Universidad Nacional Autónoma de México (CrossRef) = <span lang="es">Universidad Nacional Autónoma de México</span> (CrossRef) +Association of Austrian Librarians (CrossRef) = <span lang="en">Association of Austrian Librarians (CrossRef)</span> +Addleton Academic Publishers (CrossRef) = <span lang="en">Addleton Academic Publishers (CrossRef)</span> +McFarland and Company, Inc., Publishers (CrossRef) = <span lang="en">McFarland and Company, Inc., Publishers (CrossRef)</span> +American Library Association Institutional Repository (ALAIR) = <span lang="en">American Library Association Institutional Repository (ALAIR)</span> +Hildesheim University: HilDok = <span lang="en">Hildesheim University: HilDok</span> +Cologne University: KUPS = <span lang="en">Cologne University: KUPS</span> +Eberhard Karls University Tübingen: Publication System = <span lang="en">Eberhard Karls University Tübingen: Publication System</span> +PubPub (CrossRef) = <span lang="en">PubPub (CrossRef)</span> +The International Academic Forum (IAFOR) (CrossRef) = <span lang="en">The International Academic Forum (IAFOR) (CrossRef)</span> +Academic Publishing House Researcher (CrossRef) = <span lang="en">Academic Publishing House Researcher (CrossRef)</span> +Universidad de Antioquia (CrossRef) = <span lang="es">Universidad de Antioquia</span> (CrossRef) +Figshare = <span lang="en">Figshare</span> +British National Bibliography (Profil FID BBI) = <span lang="en">British National Bibliography</span> (Profil FID BBI) +PubMed Central (PMC) = <span lang="en">PubMed Central (PMC)</span> +Universidade Federal de Santa Catarina (UFSC) (CrossRef) = <span lang="es">Universidade Federal de Santa Catarina (UFSC)</span> (CrossRef) +CILIP Information Literacy Group (CrossRef) = <span lang="en">CILIP Information Literacy Group (CrossRef)</span> +University of Edinburgh: Edinburgh Research Archive (ERA) = <span lang="en">University of Edinburgh: Edinburgh Research Archive (ERA)</span> +Journal of Radical Librarianship = <span lang="en">Journal of Radical Librarianship</span> +Institute for Operations Research and the Management Sciences (INFORMS) (CrossRef) = <span lang="en">Institute for Operations Research and the Management Sciences (INFORMS) (CrossRef)</span> +Institute of Information and Book Studies, University of Warsaw: Digital Library of Book Studies / Instytut Informacji Naukowej i Studiów Bibliologicznych UW, Bibliologiczna Biblioteka Cyfrowa = <span lang="en">Institute of Information and Book Studies, University of Warsaw: Digital Library of Book Studies</span> / <span lang="pl">Instytut Informacji Naukowej i Studiów Bibliologicznych UW, Bibliologiczna Biblioteka Cyfrowa</span> +JLIS.it (Italian Journal of Library, Archives, and Information Science / Rivista italiana di biblioteconomia, archivistica e scienza dell'informazione) = <span lang="en">JLIS.it (Italian Journal of Library, Archives, and Information Science</span> / <span lang="it">Rivista italiana di biblioteconomia, archivistica e scienza dell'informazione)</span> +Nanyang Technological Univ (CrossRef) = <span lang="en">Nanyang Technological Univ (CrossRef)</span> +Tomsk State University (CrossRef) = <span lang="en">Tomsk State University (CrossRef)</span> +British National Bibliography = <span lang="en">British National Bibliography</span> +EManuscript Services (CrossRef) = <span lang="en">EManuscript Services (CrossRef)</span> +Türk KütüphaneciliÄŸi / Turkish Librarianship (Turkish Librarians’ Association) = <span lang="tr">Türk KütüphaneciliÄŸi</span> / <span lang="en">TTurkish Librarianship (Turkish Librarians’ Association)</span> +Coimbra University Press (CrossRef) = <span lang="en">Coimbra University Press (CrossRef)</span> +Edinburgh University (CrossRef) = <span lang="en">Edinburgh University (CrossRef)</span> +Ubiquity Press, Ltd. (CrossRef) = <span lang="en">Ubiquity Press, Ltd. (CrossRef)</span> +Bilgi Dünyası / Information World (E-Journal, University and Research Librarians Association, UNAK) = <span lang="tr">Bilgi Dünyası</span> / <span lang="en">Information World (E-Journal, University and Research Librarians Association, UNAK)</span> +Defence Scientific Information and Documentation Centre (CrossRef) = <span lang="en">Defence Scientific Information and Documentation Centre (CrossRef)</span> +OpenEdition (CrossRef) = <span lang="en">OpenEdition (CrossRef)</span> +MDPI AG (CrossRef) = <span lang="en">MDPI AG (CrossRef)</span> +Vilnius University Press (CrossRef) = <span lang="en">Vilnius University Press (CrossRef)</span> +Wiley-Blackwell (CrossRef) = <span lang="en">Wiley-Blackwell (CrossRef)</span> +Brepols Publishers NV (CrossRef) = <span lang="en">Brepols Publishers NV (CrossRef)</span> +Publicações BAD (Bibliotecários, Arquivistas e Documentalistas - E-Journals) = <span lang="pt">Publicações BAD (Bibliotecários, Arquivistas e Documentalistas - E-Journals)</span> +Ruhr-Universität Bochum (RUB): Dissertations and Theses = "Ruhr-Universität Bochum (RUB): <span lang="en">Dissertations and Theses</span> +Manchester University Press (CrossRef) = <span lang="en">Manchester University Press (CrossRef)</span> +DataCite Metadata Store (German National Library of Science and Technology) = <span lang="en">DataCite Metadata Store (German National Library of Science and Technology)</span> +Medical Library Association (CrossRef) = <span lang="en">Medical Library Association (CrossRef)</span> +National Taiwan University (CrossRef) = <span lang="en">National Taiwan University (CrossRef)</span> +Common Ground Research Networks (CrossRef) = <span lang="en">Common Ground Research Networks (CrossRef)</span> +Ediciones Profesionales de la Informacion SL (CrossRef) = <span lang="es">Ediciones Profesionales de la Informacion SL (CrossRef)</span> +027.7 Zeitschrift für Bibliothekskultur / Journal for Library Culture = 027.7 Zeitschrift für Bibliothekskultur / <span lang="en">Journal for Library Culture</span> +African Journals Online (AJOL) (CrossRef) = <span lang="en">African Journals Online (AJOL) (CrossRef)</span> +Portland State University Library (CrossRef) = <span lang="en">Portland State University Library (CrossRef)</span> +Masaryk University Press (CrossRef) = <span lang="en">Masaryk University Press (CrossRef)</span> +Universidade Estadual de Campinas (CrossRef) = <span lang="es">Universidade Estadual de Campinas</span> (CrossRef) +Directory of Open Access Journals: DOAJ Journals = <span lang="en">Directory of Open Access Journals: DOAJ Journals</span> +Journal of Digital Information (Texas Digital Library - TDL E-Journals) = <span lang="en">Journal of Digital Information (Texas Digital Library - TDL E-Journals)</span> +Emerald (CrossRef) = <span lang="en">Emerald (CrossRef)</span> +Penn State Press c/o Project Muse (CrossRef) = <span lang="en">Penn State Press c/o Project Muse (CrossRef)</span> +University of Regensburg Publication Server = <span lang="en">University of Regensburg Publication Server</span> +International Journal of Information Science and Management (IJISM) = <span lang="en">International Journal of Information Science and Management (IJISM)</span> +Society of American Archivists (CrossRef) = <span lang="en">Society of American Archivists (CrossRef)</span> +Library Leadership & Management (Texas Digital Library - TDL E-Journals) = <span lang="en">Library Leadership & Management (Texas Digital Library - TDL E-Journals)</span> +Universidad de Alicante Servicio de Publicaciones (CrossRef) = <span lang="es">Universidad de Alicante Servicio de Publicaciones </span>(CrossRef) +o-bib (E-Journal, VDB - The Association of German Librarians) = <span lang="en">o-bib (E-Journal, VDB - The Association of German Librarians)</span> +Oxford University Press (OUP) (CrossRef) = <span lang="en">Oxford University Press (OUP) (CrossRef)</span> +SAGE Publications (CrossRef) = <span lang="en">SAGE Publications (CrossRef)</span> +Science Alert (CrossRef) = <span lang="en">Science Alert (CrossRef)</span> +Open Access Repository of the TH Wildau = <span lang="en">Open Access Repository of the TH Wildau</span> +University of Alberta (CrossRef) = <span lang="en">University of Alberta (CrossRef)</span> +Liverpool University Press (CrossRef) = <span lang="en">Liverpool University Press (CrossRef)</span> +Openings: Studies in Book Art (E-Journal) = <span lang="en">Openings: Studies in Book Art (E-Journal)</span> +Taylor & Francis (CrossRef) = <span lang="en">Taylor & Francis (CrossRef)</span> +University of Texas Press (CrossRef) = <span lang="en">University of Texas Press (CrossRef)</span> +Bamberg University: OPUS Publication Server = <span lang="en">Bamberg University: OPUS Publication Server</span> +Brill / Book Sales Catalogues Online = <span lang="en">Brill / Book Sales Catalogues Online</span> +Book History Online = <span lang="en">Book History Online</span> +Palgrave Macmillan (CrossRef) = <span lang="en">Palgrave Macmillan (CrossRef)</span> +Natural Sciences Publishing (CrossRef) = <span lang="en">Natural Sciences Publishing (CrossRef)</span> +OPUS FAU - Online publication system of Friedrich-Alexander-Universität Erlangen-Nürnberg = <span lang="en">OPUS FAU - Online publication system of </span>Friedrich-Alexander-Universität Erlangen-Nürnberg diff --git a/local/config/vufind/facets.ini b/local/config/vufind/facets.ini index ebe013d173f1e99b142856191be59598522e85cc..31a37c6a4959641e9e3a3015d3c2447c34823eed 100644 --- a/local/config/vufind/facets.ini +++ b/local/config/vufind/facets.ini @@ -116,6 +116,11 @@ dateRange[] = publishDateSort ; language files appropriately. ; ; Leave the section empty if you do not need checkbox facets. + +[SpecialFacetsDisplaySettings] +; finc: dispaly always date range values, even if no preselection is made by user +dateRangeShowAlways = false + [CheckboxFacets] ;edition:1st* = "First Edition" ; Contrived hypothetical example diff --git a/module/fid/src/Controller/CustomTraits/FidAcquisitionTrait.php b/module/fid/src/Controller/CustomTraits/FidAcquisitionTrait.php index 05070f93c58d6d4b071c54bd008219e032e637fc..b0b475fca03b277b03f998d7d65ddda97983f2c3 100644 --- a/module/fid/src/Controller/CustomTraits/FidAcquisitionTrait.php +++ b/module/fid/src/Controller/CustomTraits/FidAcquisitionTrait.php @@ -65,7 +65,7 @@ trait FidAcquisitionTrait protected $type; /** - * ZendForm form configuration assigned in module.config.php + * LaminasForm form configuration assigned in module.config.php * * @var string */ diff --git a/module/fid/src/Helper/TranslatorDelegator.php b/module/fid/src/Helper/TranslatorDelegator.php index d63177de76504e54937da876bad70db9afc6b66a..948e2b9185675854f7280ffc95c5d3adf088ea50 100644 --- a/module/fid/src/Helper/TranslatorDelegator.php +++ b/module/fid/src/Helper/TranslatorDelegator.php @@ -28,7 +28,7 @@ namespace fid\Helper; use Psr\Container\ContainerInterface; -use Zend\I18n\Translator\Resources; +use Laminas\I18n\Translator\Resources; /** * Translator Delegator diff --git a/module/fid/src/View/Helper/Root/FormLabel.php b/module/fid/src/View/Helper/Root/FormLabel.php index 659885ca41bcff20b0ee29e6258e5b9891294e18..80cc907a2f9b2ed47ed30c4ea815999311017a87 100644 --- a/module/fid/src/View/Helper/Root/FormLabel.php +++ b/module/fid/src/View/Helper/Root/FormLabel.php @@ -1,6 +1,6 @@ <?php /** - * Zend Form Label View Helper + * Laminas Form Label View Helper * * Copyright (C) 2019 Leipzig University Library * @@ -33,7 +33,7 @@ use Laminas\Form\ElementInterface; use Laminas\Form\View\Helper\FormLabel as Base; /** - * Improved Zend Form Label View Helper by adding attributes + * Improved Laminas Form Label View Helper by adding attributes * * @category VuFind * @package View_Helpers diff --git a/module/finc/src/finc/Controller/CustomTraits/HistoricLoansTrait.php b/module/finc/src/finc/Controller/CustomTraits/HistoricLoansTrait.php index 36b5d90f838f78d91c97dcaa3b9e2dcc298795f5..33976f867f7ba01f4646b6da79d1688e6ceecf6c 100644 --- a/module/finc/src/finc/Controller/CustomTraits/HistoricLoansTrait.php +++ b/module/finc/src/finc/Controller/CustomTraits/HistoricLoansTrait.php @@ -151,7 +151,13 @@ trait HistoricLoansTrait return $ilsResults; } $barcodeSolrField = 'barcode_' . $config->CustomIndex->indexExtension; - $query_barcode_part = implode(' OR ', $barcodeIds); + + $escapedBarcodeIds = []; + foreach ($barcodeIds as $id) { + $escapedBarcodeIds[] = addcslashes($id, ':'); + } + + $query_barcode_part = implode(' OR ', $escapedBarcodeIds); $query = new \VuFindSearch\Query\Query( $barcodeSolrField . ':(' . $query_barcode_part . ')' ); diff --git a/package.json b/package.json index 9acd163a3dc3de9f3f81d1cce0580563b4e8cf42..157e12049fe9b41a4cdbd8b6e8347d48f3e9425b 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "dependencies": { "grunt": "^1.0.4", "grunt-contrib-less": "^2.0.0", - "grunt-less-to-sass": "duvillierA/grunt-less-to-sass#0.0.11", + "grunt-less-to-sass": "https://registry.npmjs.org/grunt-less-to-sass/-/grunt-less-to-sass-0.0.10.tgz", "grunt-sass": "^2.0.0", "jit-grunt": "^0.9.1", "node-sass": "^4.11.0" diff --git a/themes/fid/templates/fid/user/address-fieldset.phtml b/themes/fid/templates/fid/user/address-fieldset.phtml index cead3aa0a75121029a9ea9799702c58bad484d1c..ca636bb760c43139c441fb2aa267aa61f8832ef1 100644 --- a/themes/fid/templates/fid/user/address-fieldset.phtml +++ b/themes/fid/templates/fid/user/address-fieldset.phtml @@ -118,4 +118,4 @@ $elemCountry->setAttributes(['class' => 'form-control']); <?= $this->formElement($elemCountry) ?> <?= $this->formElementErrors($elemCountry) ?> </div> -<!-- fid: fid - user - address-fieldset --> +<!-- fid: fid - user - address-fieldset - END --> diff --git a/themes/fid/templates/myresearch/databases.phtml b/themes/fid/templates/myresearch/databases.phtml index 97015daa9f0cbff53d45c97a0fc3fe0ec2f393d3..31007f98a8ac8046b50f71e20e8ea4b6e1312e1c 100644 --- a/themes/fid/templates/myresearch/databases.phtml +++ b/themes/fid/templates/myresearch/databases.phtml @@ -9,7 +9,7 @@ * - database page (usage with and without login) * - displays: * - 1. fid licences - * - 2. debis: licences by user's library (using debis module) + * - 2. dbis: licences by user's library (using debis module) * - url: /Myresearch/databases * * modified for fid: diff --git a/themes/fid/templates/myresearch/dbis-content.phtml b/themes/fid/templates/myresearch/dbis-content.phtml index 368e288afd4f1c17fe27de89e3531eeff4a21185..9de63df367c107696c08a1b7572ac3941ed7f3f4 100644 --- a/themes/fid/templates/myresearch/dbis-content.phtml +++ b/themes/fid/templates/myresearch/dbis-content.phtml @@ -1,4 +1,21 @@ <!-- fid: myresearch - dbis-content --> +<?php +/** + * origin: self + * + * called by view helper/controller: -- + * + * usage: + * - dbis: licences by user's library (using dbis module) + * - url: /Myresearch/databases + * + * modified for fid: -- + * + * parent template: myresearch/databases.phtml + * + * configured in: -- + */ +?> <br/> <h3><?= $this->translate('dbis_name') ?></h3> <div class="dbis_description"> diff --git a/themes/finc-accessibility/css/.gitignore b/themes/finc-accessibility/css/.gitignore deleted file mode 100644 index ecd34d2f94d3375699b58fb65ea6fa5b0aba96d1..0000000000000000000000000000000000000000 --- a/themes/finc-accessibility/css/.gitignore +++ /dev/null @@ -1 +0,0 @@ -compiled.css \ No newline at end of file diff --git a/themes/finc/js/lightbox.js b/themes/finc/js/lightbox.js index fb9ce55c1f81ab27c07119899e206b55761769ac..febc29b3017d0db0733651dd9b43abed756ab7a3 100644 --- a/themes/finc/js/lightbox.js +++ b/themes/finc/js/lightbox.js @@ -291,6 +291,8 @@ VuFind.register('lightbox', function Lightbox() { _lightboxTitle = $(this).data('lightbox-title') || false; _modalParams = $(this).data(); VuFind.modal('show'); + // Copied finc #17984 + setOrigin($(this)); ajax(obj); _currentUrl = this.href; return false; diff --git a/themes/finc/templates/Recommend/SideFacets/range-slider.phtml b/themes/finc/templates/Recommend/SideFacets/range-slider.phtml index 8dfd0377a5dd5e065e231cfd33dce77d3303d7d4..9c5f09756f70fe5681fe2b7cf2ed21409116ee51 100644 --- a/themes/finc/templates/Recommend/SideFacets/range-slider.phtml +++ b/themes/finc/templates/Recommend/SideFacets/range-slider.phtml @@ -1,7 +1,22 @@ <!-- finc - recommend - sidefacets - rangeslider --> <?php - /** this is a copy of the bootstrap3 version and adds an aria-label to the - * slider-container element + /** + * origin: bootstrap3 + * + * called by view helper/controller: + * + * usage: result lists facets + * + * modified for finc: + ** #22135, #22511 usability date range slider + *** calculate min/max values by results value range + *** use html min / max attributes + ** #24304 show publish date range always (default = false) + * + * configured in: facets.ini + ** [SpecialFacets] -> dateRange[] = publishDateSort + ** [Results_Settings] -> facet_limit_by_field[publishDateSort] = -1 + ** [SpecialFacetsDisplaySettings] -> dateRangeShowAlways = false */ ?> <?php @@ -11,14 +26,19 @@ * if date range filter is applied additionaly: lowest and highest record years can be within filter values */ foreach ($cluster['list'] as $facet) { - $years[] = $facet['value']; + // casting year to int to prevent years like '0000' + $years[] = (int)$facet['value']; } - $facetmin = min($years); - $facetmax = max($years); - $low = $facetmin; - $min = !empty($this->facet['values'][0]) ? $this->facet['values'][0] : $facetmin; - $high = $facetmax; - $max = !empty($this->facet['values'][1]) ? $this->facet['values'][1] : $facetmax; + // results min + $low = min($years); + // (pre)selected min + $min = !empty($this->facet['values'][0]) ? $this->facet['values'][0] : $low; + // results max + $high = max($years); + // (pre)selected max + $max = !empty($this->facet['values'][1]) ? $this->facet['values'][1] : $high; + // finc: show date (publication year) range values always, even if no preselection is made by user #24304 + $showAlways = $this->config()->get('facets')->SpecialFacetsDisplaySettings->dateRangeShowAlways ?? false; ?> <?php /* finc changes div into li for compatibility with facet list structure */ ?> <li class="facet"> @@ -42,15 +62,31 @@ <label id="from-label" for="<?=$this->escapeHtmlAttr($this->title)?>from"> <?=$this->transEsc('date_from')?>: </label> - <?php /* finc: usability date range slider #22135, #22511: change input type and value */ ?> - <input type="number" class="form-control" name="<?=$this->escapeHtmlAttr($this->title)?>from" id="<?=$this->escapeHtmlAttr($this->title)?>from" value="<?=!empty($this->facet['values'][0]) ? $this->escapeHtmlAttr($low) : ''?>" <?=$extraInputAttribs?>/> + <?php /* finc: usability date range slider #22135, #22511: change input type and value + finc: show date (publication year) range values always, even if no preselection is made by user #24304 */ ?> + <input + type="number" + class="form-control" + name="<?=$this->escapeHtmlAttr($this->title)?>from" + id="<?=$this->escapeHtmlAttr($this->title)?>from" + value="<?=($showAlways || !empty($this->facet['values'][0])) ? $this->escapeHtmlAttr($low) : ''?>" + <?=$extraInputAttribs?> + /> </div> <div class="date-to"> <label id="to-label" for="<?=$this->escapeHtmlAttr($this->title)?>to"> <?=$this->transEsc('date_to')?>: </label> - <?php /* finc: usability date range slider #22135, #22511: change input type and value input */ ?> - <input type="number" class="form-control" name="<?=$this->escapeHtmlAttr($this->title)?>to" id="<?=$this->escapeHtmlAttr($this->title)?>to" value="<?=!empty($this->facet['values'][1]) ? $this->escapeHtmlAttr($high) : ''?>" <?=$extraInputAttribs?>/> + <?php /* finc: usability date range slider #22135, #22511: change input type and value input + finc: show date (publication year) range values always, even if no preselection is made by user #24304 */ ?> + <input + type="number" + class="form-control" + name="<?=$this->escapeHtmlAttr($this->title)?>to" + id="<?=$this->escapeHtmlAttr($this->title)?>to" + value="<?=($showAlways || !empty($this->facet['values'][1])) ? $this->escapeHtmlAttr($high) : ''?>" + <?=$extraInputAttribs?> + /> </div> </div> <?php if ($this->facet['type'] == 'date'): ?> diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/data-hierarchyParentTitle.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/data-hierarchyParentTitle.phtml index c94fdc31745b45b890eb16dd2f62008fc663f436..419f2b1d9f5026a042c55f891e21854c8be59ac1 100644 --- a/themes/finc/templates/RecordDriver/DefaultRecord/data-hierarchyParentTitle.phtml +++ b/themes/finc/templates/RecordDriver/DefaultRecord/data-hierarchyParentTitle.phtml @@ -1,11 +1,30 @@ <!-- finc: RecordDriver - DefaultRecord - data-hierarchyParentTitle --> +<?php +/** +* +* origin: self +* +* called by view helper/controller: +* +* usage: +* - Shows parent collection title in RECORD VIEW (left-hand side) under 'Teil von:' +* - Linking to parent title (default by parent-id, if missing by title-string itself) +* +* modified for finc: -- +* +* configured in: -- +* +**/ +?> <?php if (!empty($data)): ?> <?php $hierarchyParentId = $this->driver->tryMethod('getHierarchyParentID'); ?> <?php foreach ($data as $key => $title): ?> <?php if (isset($hierarchyParentId[$key])): ?> <a href="<?=$this->recordLink()->getUrl($hierarchyParentId[$key], $hierarchyParentId[$key], 'ParentID');?>"><?=$this->escapeHtml($title)?></a> <?php else: ?> - <?=$this->escapeHtml($title)?> + <?php /* #24409 fallback: if record has no hierarchyParentId start new Series-search on title */ ?> + <?php $url = $this->url('search-results', [], ['query'=>['type' => 'Series','lookfor' => $title]])?> + <a href="<?=$url?>"><?=$this->escapeHtml($title)?></a> <?php endif; ?> <br/> <?php endforeach; ?> diff --git a/themes/finc/templates/record/checkbox.phtml b/themes/finc/templates/record/checkbox.phtml index bf979045036f84c7d740a719723e22a63017e79f..66857ea859ac6d49712f1f5cb0b2d36052f9127c 100644 --- a/themes/finc/templates/record/checkbox.phtml +++ b/themes/finc/templates/record/checkbox.phtml @@ -2,13 +2,12 @@ <?php /* finc adds php for more specific labels, #18754 */ ?> <?php $label = isset($this->context) ? 'select_item_' . $this->context : 'select_item'; ?> <label class="record-checkbox hidden-print"> - <?php /* finc adds aria-label and -describedby */ ?> + <?php /* finc adds aria-label and -describedby and space in front of form attribute */ ?> <input class="checkbox-select-item" type="checkbox" name="ids[]" - value="<?=$this->id?>" - <?php if (isset($this->formAttr)): ?>form="<?=$this->formAttr ?>"<?php endif; ?> + value="<?=$this->id?>"<?php if (isset($this->formAttr)): ?> form="<?=$this->formAttr ?>"<?php endif; ?> aria-describedby="<?=$this->id?>" aria-label="<?=$this->transEscAttr($label)?>" /> diff --git a/themes/finc/templates/search/advanced/ranges.phtml b/themes/finc/templates/search/advanced/ranges.phtml index 80bf13a087b9db0c207879368f13f0351d9fe939..7f7ab09225be17115968d3bd9adb08de8792a7c2 100644 --- a/themes/finc/templates/search/advanced/ranges.phtml +++ b/themes/finc/templates/search/advanced/ranges.phtml @@ -3,10 +3,14 @@ <?php $params = $this->searchParams($this->searchClassId); ?> <?php foreach ($this->ranges as $current): $escField = $this->escapeHtmlAttr($current['field']); ?> <?php /* finc: usability date range slider #22511:: calculate variables at the beginning */ + // (pre)selected min $min = !empty($current['values'][0]) ? min($current['values'][0], 1400) : 1400; $future = date('Y', time() + 31536000); + // (pre)selected max $max = !empty($current['values'][1]) ? max($future, $current['values'][1]) : $future; + // results min $low = !empty($current['values'][0]) ? $current['values'][0] : $min; + // results max $high = !empty($current['values'][1]) ? $current['values'][1] : $max; ?> <?php /* finc: usability date range slider #22511: use previously calculated min-/max-values to limit inputs */ ?> diff --git a/themes/finc/templates/search/bulk-action-buttons.phtml b/themes/finc/templates/search/bulk-action-buttons.phtml index bbdd94824c14ce4ae34b79b1d3c5b93ed3db53f4..0fb58cd2a089a0ee7a6c06d0086ed4e0ac7d9132 100644 --- a/themes/finc/templates/search/bulk-action-buttons.phtml +++ b/themes/finc/templates/search/bulk-action-buttons.phtml @@ -30,7 +30,7 @@ <?php endif; ?> <?php if (isset($this->showCartControls) && $this->showCartControls): ?> <li> - <button id="<?=$this->idPrefix?><?=$this->idPrefix?>updateCart" type="submit" class="toolbar-btn btn-type-add" name="add" value="1"<?php if ($this->formAttr): ?> form="<?=$this->escapeHtmlAttr($this->formAttr) ?>"<?php endif; ?>><?=$this->transEsc('Add to Book Bag')?></button> + <button id="<?=$this->idPrefix?>updateCart" type="submit" class="toolbar-btn btn-type-add" name="add" value="1"<?php if ($this->formAttr): ?> form="<?=$this->escapeHtmlAttr($this->formAttr) ?>"<?php endif; ?>><?=$this->transEsc('Add to Book Bag')?></button> </li> <?php endif; ?> </ul>