diff --git a/.github/phpstan.neon b/.github/phpstan.neon new file mode 100644 index 0000000..622743e --- /dev/null +++ b/.github/phpstan.neon @@ -0,0 +1,8 @@ +parameters: + ignoreErrors: + - '#Call to an undefined method Kitodo\\Dlf\\Domain\\Repository\\[a-zA-Z]+Repository::findByIsListed\(\)\.#' + - '#Call to an undefined method Kitodo\\Dlf\\Domain\\Repository\\[a-zA-Z]+Repository::findByIsSortable\(\)\.#' + level: 5 + paths: + - ../Classes/ + treatPhpDocTypesAsCertain: false diff --git a/.github/workflows/npm-grunt.yml b/.github/workflows/npm-grunt.yml new file mode 100644 index 0000000..a07f907 --- /dev/null +++ b/.github/workflows/npm-grunt.yml @@ -0,0 +1,47 @@ +name: GruntComparison + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [12.x] + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: npm + cache-dependency-path: './Build/package-lock.json' + + - name: Install and run Grunt + working-directory: ./Build + run: | + npm install -g grunt-cli + npm audit fix + echo "Running `grunt less`" + grunt less + echo "Running `grunt terser`" + grunt terser + + - name: Test for changes + working-directory: ./ + run: | + git diff -- ./Resources/Public/ + if [ -n "$(git status --porcelain -- ./Resources/Public/)" ]; then + echo "Changes detected in compiled files" + exit 1 + else + echo "No changes detected in compiled files" + fi diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml new file mode 100644 index 0000000..8d88615 --- /dev/null +++ b/.github/workflows/phpstan.yml @@ -0,0 +1,25 @@ +name: PHPStan + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + phpstan: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Install dependencies + uses: php-actions/composer@v6 + with: + command: update + php_version: "7.4" + + - name: PHPStan Static Analysis + uses: php-actions/phpstan@v3 + with: + configuration: ./.github/phpstan.neon diff --git a/Build/package-lock.json b/Build/package-lock.json index 04a7871..92fc47b 100644 --- a/Build/package-lock.json +++ b/Build/package-lock.json @@ -17,12 +17,82 @@ "terser": "^5" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, + "node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -100,21 +170,21 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "node_modules/bytes": { @@ -410,9 +480,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -1248,9 +1318,9 @@ } }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -1480,9 +1550,9 @@ "optional": true }, "node_modules/qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, "dependencies": { "side-channel": "^1.0.4" @@ -1642,9 +1712,9 @@ } }, "node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "dependencies": { "buffer-from": "^1.0.0", @@ -1706,14 +1776,15 @@ } }, "node_modules/terser": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz", - "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" + "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" @@ -1722,15 +1793,6 @@ "node": ">=10" } }, - "node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/tiny-lr": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", @@ -1849,12 +1911,67 @@ } }, "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -1920,18 +2037,18 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "bytes": { @@ -2177,9 +2294,9 @@ } }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "requires": { "to-regex-range": "^5.0.1" @@ -2831,9 +2948,9 @@ "optional": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -3006,9 +3123,9 @@ "optional": true }, "qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, "requires": { "side-channel": "^1.0.4" @@ -3118,9 +3235,9 @@ "dev": true }, "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -3167,22 +3284,15 @@ "dev": true }, "terser": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz", - "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } + "source-map-support": "~0.5.20" } }, "tiny-lr": { diff --git a/Classes/Controller/SingleCollectionController.php b/Classes/Controller/SingleCollectionController.php index 547edcd..32c311b 100644 --- a/Classes/Controller/SingleCollectionController.php +++ b/Classes/Controller/SingleCollectionController.php @@ -96,7 +96,7 @@ public function injectMetadataRepository(MetadataRepository $metadataRepository) /** * initializeAction * - * @return + * @return void */ protected function initializeAction() { @@ -139,7 +139,7 @@ public function showAction() $listedMetadata = $this->metadataRepository->findByIsListed(true); // find all documents from Solr - $solrSearch = $this->documentRepository->findSolrByCollection($collections, $this->settings, $searchParams, $listedMetadata); + $solrSearch = $this->documentRepository->findSolrByCollections($collections, $this->settings, $searchParams, $listedMetadata); // get all sortable Metadata from Kitodo.Presentation $metadata = $this->metadataRepository->findByIsSortable(true); @@ -165,7 +165,7 @@ public function showAction() * * @param string $parameterName * - * @return null|string + * @return null|string|array */ protected function getParametersSafely($parameterName) { diff --git a/Classes/ViewHelpers/CalcViewHelper.php b/Classes/ViewHelpers/CalcViewHelper.php index a5b1c71..46ec981 100644 --- a/Classes/ViewHelpers/CalcViewHelper.php +++ b/Classes/ViewHelpers/CalcViewHelper.php @@ -23,7 +23,6 @@ * * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ -use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface; use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper; @@ -66,6 +65,7 @@ public static function renderStatic( $val1 = $arguments['val1']; $val2 = $arguments['val2']; $operator = $arguments['operator']; + $result = ''; switch ($operator) { case '+': $result = (int)$val1 + (int)$val2; diff --git a/Classes/ViewHelpers/ExtractFulltextViewHelper.php b/Classes/ViewHelpers/ExtractFulltextViewHelper.php index d7120f5..c96fb4e 100644 --- a/Classes/ViewHelpers/ExtractFulltextViewHelper.php +++ b/Classes/ViewHelpers/ExtractFulltextViewHelper.php @@ -23,7 +23,6 @@ * * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ -use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface; use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper; @@ -62,13 +61,9 @@ public static function renderStatic( RenderingContextInterface $renderingContext ) { $file= $arguments['file']; - + $rawText = ''; $altoXml = @simplexml_load_file($file); - if($altoXml === FALSE) - { - // fulltext not accessible - $rawText = ''; - } else { + if($altoXml !== FALSE) { $altoXml->registerXPathNamespace('alto', 'http://www.loc.gov/standards/alto/ns-v2#'); // Get all (presumed) words of the text. $words = $altoXml->xpath('./alto:Layout/alto:Page/alto:PrintSpace//alto:TextBlock/alto:TextLine/alto:String/@CONTENT'); @@ -77,7 +72,6 @@ public static function renderStatic( } } return $rawText; - } } diff --git a/Classes/ViewHelpers/PageInfoViewHelper.php b/Classes/ViewHelpers/PageInfoViewHelper.php index 5326fbb..0d49f88 100644 --- a/Classes/ViewHelpers/PageInfoViewHelper.php +++ b/Classes/ViewHelpers/PageInfoViewHelper.php @@ -65,10 +65,10 @@ public static function renderStatic( ) { $pageUid = $arguments['uid']; $field = $arguments['field']; - if (0 === $uid) { + if (0 === $pageUid) { $pageUid = $GLOBALS['TSFE']->id; } - $pageRepository = GeneralUtility::makeInstance(\TYPO3\CMS\Frontend\Page\PageRepository::class); + $pageRepository = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Domain\Repository\PageRepository::class); $page = $pageRepository->getPage($pageUid); $output = $page[$field]; diff --git a/Classes/ViewHelpers/XpathViewHelper.php b/Classes/ViewHelpers/XpathViewHelper.php index df26ff5..672240f 100644 --- a/Classes/ViewHelpers/XpathViewHelper.php +++ b/Classes/ViewHelpers/XpathViewHelper.php @@ -31,7 +31,6 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper; use Kitodo\Dlf\Common\MetsDocument; -use Kitodo\Dlf\Domain\Model\Document; use Kitodo\Dlf\Domain\Repository\DocumentRepository; /** @@ -102,37 +101,37 @@ public static function renderStatic( $document = self::getDocumentRepository()->findOneByParameters($parameters); - if ($document === null || $document->getDoc() === null || !($document->getDoc() instanceof MetsDocument)) { + if ($document === null || $document->getCurrentDocument() === null || !($document->getCurrentDocument() instanceof MetsDocument)) { return; } + $currentDocument = $document->getCurrentDocument(); + $currentDocument->mets->registerXPathNamespace('mets', 'http://www.loc.gov/METS/'); + $currentDocument->mets->registerXPathNamespace('mods', 'http://www.loc.gov/mods/v3'); + $currentDocument->mets->registerXPathNamespace('dv', 'http://dfg-viewer.de/'); + $currentDocument->mets->registerXPathNamespace('slub', 'http://slub-dresden.de/'); - $document->getDoc()->mets->registerXPathNamespace('mets', 'http://www.loc.gov/METS/'); - $document->getDoc()->mets->registerXPathNamespace('mods', 'http://www.loc.gov/mods/v3'); - $document->getDoc()->mets->registerXPathNamespace('dv', 'http://dfg-viewer.de/'); - $document->getDoc()->mets->registerXPathNamespace('slub', 'http://slub-dresden.de/'); + $result = $currentDocument->mets->xpath($xpath); - $result = $document->getDoc()->mets->xpath($xpath); + if ($returnArray) { + $output = []; + } else { + $output = ''; + } if (is_array($result)) { - foreach ($result as $row) { - if ($returnArray) { - $output[] = $htmlspecialchars ? htmlspecialchars(trim($row)) : trim($row); - } else { - $output .= $htmlspecialchars ? htmlspecialchars(trim($row)) : trim($row) . ' '; + foreach ($result as $row) { + if ($returnArray) { + $output[] = $htmlspecialchars ? htmlspecialchars(trim($row)) : trim($row); + } else { + $output .= $htmlspecialchars ? htmlspecialchars(trim($row)) : trim($row) . ' '; + } } - } - } else { - if ($returnArray) { - $output[] = $htmlspecialchars ? htmlspecialchars(trim($row)) : trim($row); - } else { - $output = $htmlspecialchars ? htmlspecialchars(trim($row)) : trim($row); - } } - if (! $returnArray) { - return trim($output); - } else { + if ($returnArray) { return $output; + } else { + return trim($output); } } diff --git a/Configuration/TCA/Overrides/tt_content.php b/Configuration/TCA/Overrides/tt_content.php index b43102a..9f0343e 100644 --- a/Configuration/TCA/Overrides/tt_content.php +++ b/Configuration/TCA/Overrides/tt_content.php @@ -2,7 +2,7 @@ defined('TYPO3_MODE') or die(); TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin( - 'Slub.SlubDigitalcollections', + 'SlubDigitalcollections', 'SingleCollection', 'LLL:EXT:slub_digitalcollections/Resources/Private/Language/locallang.xlf:plugins.single_collection_view' ); diff --git a/Configuration/TypoScript/Plugin/Kitodo/setup.typoscript b/Configuration/TypoScript/Plugin/Kitodo/setup.typoscript index 11ae691..aba4a16 100644 --- a/Configuration/TypoScript/Plugin/Kitodo/setup.typoscript +++ b/Configuration/TypoScript/Plugin/Kitodo/setup.typoscript @@ -158,7 +158,7 @@ plugin.tx_dlf_fulltexttool { settings { tools = fulltexttool activateFullTextInitially = 0 - fullTextScrollElement = html, body + fullTextScrollElement = #tx-dlf-fulltextselection } } @@ -188,6 +188,7 @@ plugin.tx_dlf_searchindocumenttool { settings { tools = searchindocumenttool idInputName = tx_dlf[id] + pidInputName = tx_dlf[pid] queryInputName = tx_dlf[query] startInputName = tx_dlf[start] pageInputName = tx_dlf[page] diff --git a/Resources/Private/Language/de.locallang_kitodo.xlf b/Resources/Private/Language/de.locallang_kitodo.xlf index fb0f6c6..93a7727 100644 --- a/Resources/Private/Language/de.locallang_kitodo.xlf +++ b/Resources/Private/Language/de.locallang_kitodo.xlf @@ -349,10 +349,6 @@ - - - - @@ -369,10 +365,6 @@ - - - - diff --git a/Resources/Private/Language/locallang_kitodo.xlf b/Resources/Private/Language/locallang_kitodo.xlf index a369434..41264d1 100644 --- a/Resources/Private/Language/locallang_kitodo.xlf +++ b/Resources/Private/Language/locallang_kitodo.xlf @@ -279,12 +279,6 @@ Date of Publication - - Part of a Manuscript - - - Multipart Manuscript - Kitodo Process Number diff --git a/Resources/Private/Less/Modules/Fulltext.less b/Resources/Private/Less/Modules/Fulltext.less index 1301545..005040d 100644 --- a/Resources/Private/Less/Modules/Fulltext.less +++ b/Resources/Private/Less/Modules/Fulltext.less @@ -73,5 +73,10 @@ max-width: 50%; } } +// keep line breaks +.fulltext-container span.textline, +#tx-dlf-fulltextselection span.textline { + display: block; +} // EOF diff --git a/Resources/Private/Less/Modules/Pagegrid.less b/Resources/Private/Less/Modules/Pagegrid.less index af9eb03..a8a9f37 100644 --- a/Resources/Private/Less/Modules/Pagegrid.less +++ b/Resources/Private/Less/Modules/Pagegrid.less @@ -87,7 +87,7 @@ body.gridview { } } -.tx-dlf-pagegrid .f3-widget-paginator { +.tx-dlf-pagegrid .pagination { position: absolute; bottom: 15px; height: 1px; @@ -168,6 +168,14 @@ body.gridview { display: none; } } + li.next, li.previous { + a, + a:first-child, + a:last-child { + width: 60px; + height: 30px; + } + } } @media screen and (min-width: @desktopViewportWidth) { font-size: 18px; @@ -178,6 +186,14 @@ body.gridview { width: 40px; height: 40px; } + li.next, li.previous { + a, + a:first-child, + a:last-child { + width: 90px; + height: 40px; + } + } } } diff --git a/Resources/Private/Partials/KitodoDocumentFunctions.html b/Resources/Private/Partials/KitodoDocumentFunctions.html new file mode 100644 index 0000000..dda3fa6 --- /dev/null +++ b/Resources/Private/Partials/KitodoDocumentFunctions.html @@ -0,0 +1,395 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Titel + + {docTitle} + + Autor + + + + + + + + + Links + + + "> + + " + class="persistence-document" + target="_blank" + title=" + "> + + + + + + + + /{gp-page}" + class="persistence-page" + target="_blank" + title=" + "> + + + + + /{gp-page} + + + + + + + "> + + "> + + " + class="local-catalog" + target="_blank" + title=" + "> + + + + + " + class="local-catalog" + target="_blank" + title=" + "> + + + + + + + + + + + + + {dc:pageInfo(uid:'{settings.termsOfUsePid}', field:'title')} + + + + + + + + + Downloads + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "> + + + + + " + class="download-fulltext fulltext left" + target="_blank" + title=" + + "> + + + " + class="download-fulltext fulltext right" + target="_blank" + title=" + "> + + + + + + + + " + class="download-fulltext ocr" + target="_blank" + title=" + "> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "> + + + + + + + + + + + + + + + + + + + + + + + + + + "> + + + Search + + + + + + + \ No newline at end of file diff --git a/Resources/Private/Partials/KitodoNewspaper.html b/Resources/Private/Partials/KitodoNewspaper.html new file mode 100644 index 0000000..2e66547 --- /dev/null +++ b/Resources/Private/Partials/KitodoNewspaper.html @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Resources/Private/Partials/KitodoPageView.html b/Resources/Private/Partials/KitodoPageView.html index fdf1b67..5b619f0 100644 --- a/Resources/Private/Partials/KitodoPageView.html +++ b/Resources/Private/Partials/KitodoPageView.html @@ -1,481 +1,42 @@ + xmlns:dc="http://typo3.org/ns/Slub/SlubDigitalcollections/ViewHelpers" data-namespace-typo3-fluid="true" lang="en"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - Titel - - {docTitle} - - Autor - - - - - - - - Links - - - "> - - " - class="persistence-document" - target="_blank" - title=""> - - - - - - /{gp-page}" - class="persistence-page" - target="_blank" - title=""> - - /{gp-page} - - - - - - "> - - - - " - class="local-catalog" - target="_blank" - title=""> - - - - - - - - "> - - "> - - " - class="local-catalog" - target="_blank" - title=""> - - - - - " - class="local-catalog" - target="_blank" - title=""> - - - - - - - - - - - - - - {dc:pageInfo(uid:'{settings.termsOfUsePid}', field:'title')} - - - - - - - - - Downloads - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - "> - - - - - " - class="download-fulltext fulltext left" - target="_blank" - title=""> - - " - class="download-fulltext fulltext right" - target="_blank" - title=""> - - - - - - - " - class="download-fulltext ocr" - target="_blank" - title=""> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "> - - - - - + + + - - - - - - - - + + + + + + - - - - - - "> - - - - - - - - - - - - - - - - - - - - - "> - - - - - - - - - - - - - - - - + - - "> - - - Search - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - +