├── .ddev ├── site │ └── .gitignore ├── commands │ ├── web │ │ ├── churn │ │ ├── test │ │ ├── kitodo-publication-reindex │ │ └── first-install │ └── host │ │ └── metrics ├── config.yaml ├── docker-compose.fcrepo.yaml ├── docker-compose.elasticsearch.yaml └── docker-compose.environment.yaml ├── Resources ├── Private │ ├── .htaccess │ ├── Templates │ │ ├── Gnd │ │ │ └── Search.json │ │ ├── DocumentType │ │ │ └── List.html │ │ ├── AjaxDocumentForm │ │ │ ├── PrimaryUpload.html │ │ │ ├── Group.html │ │ │ ├── SecondaryUpload.html │ │ │ ├── Field.html │ │ │ └── DeleteFile.html │ │ ├── Workspace │ │ │ └── ListWorkspace.html │ │ ├── SearchFE │ │ │ ├── NextResults.html │ │ │ └── ShowSearchForm.html │ │ ├── DocumentForm │ │ │ └── Edit.html │ │ └── ExternalMetadataImport │ │ │ ├── UploadedDocuments.html │ │ │ └── BulkImportedDocuments.html │ ├── Language │ │ ├── locallang_csh_tx_dpf_domain_model_processnumber.xlf │ │ ├── locallang_csh_tx_dpf_domain_model_transformationfile.xlf │ │ ├── de.locallang_csh_tx_dpf_domain_model_processnumber.xlf │ │ ├── de.locallang_csh_tx_dpf_domain_model_transformationfile.xlf │ │ ├── locallang_csh_tx_dpf_domain_model_inputoptionlist.xlf │ │ ├── locallang_csh_tx_dpf_domain_model_documenttype.xlf │ │ ├── locallang_csh_tx_dpf_domain_model_metadatapage.xlf │ │ ├── locallang_csh_tx_dpf_domain_model_documenttransferlog.xlf │ │ ├── de.locallang_csh_tx_dpf_domain_model_documenttype.xlf │ │ ├── de.locallang_csh_tx_dpf_domain_model_inputoptionlist.xlf │ │ ├── de.locallang_csh_tx_dpf_domain_model_metadatapage.xlf │ │ ├── LogEntryTranslations.xml │ │ ├── de.locallang_csh_tx_dpf_domain_model_documenttransferlog.xlf │ │ └── locallang_csh_tx_dpf_domain_model_file.xlf │ ├── Layouts │ │ ├── BackendAdmin.html │ │ ├── Default.html │ │ └── DocumentFormBackoffice.html │ ├── Partials │ │ ├── Search │ │ │ ├── FisModalDialog.html │ │ │ ├── StateSelect.html │ │ │ ├── InputOptionListSelect.html │ │ │ ├── LanguageSelect.html │ │ │ └── SearchControl.html │ │ ├── Workspace │ │ │ ├── Pagination.html │ │ │ ├── ListItemActions.html │ │ │ ├── Creator.html │ │ │ ├── HideDiscarded.html │ │ │ ├── ShowBookmarksOnly.html │ │ │ └── UploadError.html │ │ ├── Document │ │ │ ├── MyPublicationsList.html │ │ │ └── AlertModal.html │ │ ├── DocumentType │ │ │ └── List.html │ │ ├── FormErrors.html │ │ ├── Suggestion │ │ │ └── ChangedField.html │ │ ├── DocumentForm │ │ │ ├── Edit.html │ │ │ ├── FieldLabel.html │ │ │ └── FileUploadField.html │ │ └── SearchFE │ │ │ └── SearchControl.html │ └── Backend │ │ └── Templates │ │ └── BackendAdmin │ │ └── ChangeClient.html └── Public │ ├── Icons │ ├── default.gif │ └── relation.gif │ ├── images │ ├── addbtnbg.gif │ ├── clearbtn.gif │ ├── gobtns.gif │ ├── rembtnbg.gif │ ├── be_bglogo_smooth.png │ └── ui-anim_basic_16x16.gif │ ├── JavaScript │ ├── editormd │ │ ├── images │ │ │ ├── loading.gif │ │ │ ├── logos │ │ │ │ ├── vi.png │ │ │ │ ├── editormd-logo-16x16.png │ │ │ │ ├── editormd-logo-24x24.png │ │ │ │ ├── editormd-logo-32x32.png │ │ │ │ ├── editormd-logo-48x48.png │ │ │ │ ├── editormd-logo-57x57.png │ │ │ │ ├── editormd-logo-64x64.png │ │ │ │ ├── editormd-logo-72x72.png │ │ │ │ ├── editormd-logo-96x96.png │ │ │ │ ├── editormd-favicon-16x16.ico │ │ │ │ ├── editormd-favicon-24x24.ico │ │ │ │ ├── editormd-favicon-32x32.ico │ │ │ │ ├── editormd-favicon-48x48.ico │ │ │ │ ├── editormd-favicon-64x64.ico │ │ │ │ ├── editormd-logo-114x114.png │ │ │ │ ├── editormd-logo-120x120.png │ │ │ │ ├── editormd-logo-144x144.png │ │ │ │ ├── editormd-logo-180x180.png │ │ │ │ ├── editormd-logo-240x240.png │ │ │ │ └── editormd-logo-320x320.png │ │ │ ├── loading@2x.gif │ │ │ └── loading@3x.gif │ │ ├── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── editormd-logo.eot │ │ │ ├── editormd-logo.ttf │ │ │ ├── editormd-logo.woff │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ ├── fontawesome-webfont.woff2 │ │ │ └── editormd-logo.svg │ │ ├── lib │ │ │ ├── codemirror │ │ │ │ ├── theme │ │ │ │ │ ├── ambiance-mobile.css │ │ │ │ │ ├── neat.css │ │ │ │ │ ├── elegant.css │ │ │ │ │ ├── neo.css │ │ │ │ │ ├── eclipse.css │ │ │ │ │ ├── cobalt.css │ │ │ │ │ └── monokai.css │ │ │ │ ├── addon │ │ │ │ │ ├── display │ │ │ │ │ │ └── fullscreen.css │ │ │ │ │ ├── search │ │ │ │ │ │ └── matchesonscrollbar.css │ │ │ │ │ ├── fold │ │ │ │ │ │ └── foldgutter.css │ │ │ │ │ ├── dialog │ │ │ │ │ │ └── dialog.css │ │ │ │ │ ├── hint │ │ │ │ │ │ └── show-hint.css │ │ │ │ │ ├── mode │ │ │ │ │ │ └── multiplex_test.js │ │ │ │ │ ├── lint │ │ │ │ │ │ ├── yaml-lint.js │ │ │ │ │ │ ├── json-lint.js │ │ │ │ │ │ ├── css-lint.js │ │ │ │ │ │ └── coffeescript-lint.js │ │ │ │ │ ├── edit │ │ │ │ │ │ └── trailingspace.js │ │ │ │ │ ├── tern │ │ │ │ │ │ └── worker.js │ │ │ │ │ ├── runmode │ │ │ │ │ │ └── colorize.js │ │ │ │ │ └── scroll │ │ │ │ │ │ └── simplescrollbars.css │ │ │ │ ├── mode │ │ │ │ │ ├── tiddlywiki │ │ │ │ │ │ └── tiddlywiki.css │ │ │ │ │ ├── ruby │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── tiki │ │ │ │ │ │ └── tiki.css │ │ │ │ │ ├── diff │ │ │ │ │ │ └── diff.js │ │ │ │ │ ├── ntriples │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── spreadsheet │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── http │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── solr │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── z80 │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── ecl │ │ │ │ │ │ └── index.html │ │ │ │ │ └── rust │ │ │ │ │ │ └── index.html │ │ │ │ ├── bower.json │ │ │ │ ├── README.md │ │ │ │ ├── package.json │ │ │ │ └── LICENSE │ │ │ └── jquery.flowchart.min.js │ │ └── css │ │ │ └── editormd.logo.min.css │ ├── FileSaver │ │ └── LICENSE.md │ ├── select2 │ │ └── LICENSE.md │ └── mdeditor.js │ └── CSS │ └── fontawesome │ └── webfonts │ ├── fa-solid-900.eot │ ├── fa-solid-900.ttf │ ├── fa-brands-400.eot │ ├── fa-brands-400.ttf │ ├── fa-brands-400.woff │ ├── fa-brands-400.woff2 │ ├── fa-regular-400.eot │ ├── fa-regular-400.ttf │ ├── fa-regular-400.woff │ ├── fa-solid-900.woff │ ├── fa-solid-900.woff2 │ └── fa-regular-400.woff2 ├── EFRE_EU.jpg ├── Documentation ├── Readme.rst ├── Images │ ├── Manager.png │ ├── Documenttype.png │ ├── Client_Dataset.png │ └── Manager_Search.png ├── index.rst ├── Includes.txt ├── Developer │ └── Index.rst ├── Settings.yml ├── Introduction │ └── Index.rst └── Administrator │ └── Index.rst ├── ext_icon.gif ├── Classes ├── Services │ ├── Email │ │ └── ActiveMessageException.php │ ├── Api │ │ └── InvalidJson.php │ ├── Suggestion │ │ └── Change.php │ ├── FeUser │ │ ├── RorDataService.php │ │ ├── AbstractDataService.php │ │ ├── ZdbDataService.php │ │ └── OrcidDataService.php │ ├── File │ │ └── FileValidatorInterface.php │ ├── Storage │ │ ├── Exception │ │ │ ├── IngestDocumentException.php │ │ │ └── ConnectionException.php │ │ └── Fedora │ │ │ └── Exception │ │ │ └── FedoraException.php │ ├── Settings │ │ └── PluginSettings.php │ ├── Identifier │ │ └── Identifier.php │ ├── Transformer │ │ └── DocumentTransformer.php │ └── Logger │ │ └── Logger.php ├── Domain │ ├── Repository │ │ ├── StoredSearchRepository.php │ │ ├── FrontendUserGroupRepository.php │ │ ├── FileRepository.php │ │ ├── MetadataPageRepository.php │ │ ├── InputOptionListRepository.php │ │ ├── DepositLicenseLogRepository.php │ │ ├── DocumentTransferLogRepository.php │ │ ├── MetadataObjectRepository.php │ │ ├── MessageRepository.php │ │ ├── FrontendUserRepository.php │ │ ├── ClientRepository.php │ │ ├── DepositLicenseRepository.php │ │ ├── MetadataGroupRepository.php │ │ └── EditingLockRepository.php │ └── Model │ │ ├── MetadataMandatoryInterface.php │ │ └── Viewer.php ├── Exceptions │ ├── DPFExceptionInterface.php │ ├── DocumentMaxSizeErrorException.php │ ├── ElasticSearchConnectionErrorException.php │ └── ElasticSearchMissingConfigurationException.php ├── Plugins │ ├── RelatedListTool │ │ └── template.tmpl │ └── DownloadTool │ │ └── template.tmpl ├── ViewHelpers │ ├── GetTypo3ModeViewHelper.php │ ├── JavaScriptConstantsViewHelper.php │ ├── IsDoiViewHelper.php │ ├── Security │ │ └── KitodoRoleViewHelper.php │ ├── IsUrnViewHelper.php │ ├── IsFisIdMissingViewHelper.php │ ├── LanguageViewHelper.php │ ├── InArrayViewHelper.php │ ├── ArrayViewHelper.php │ ├── ImplodeArrayViewHelper.php │ ├── ExplodeStringViewHelper.php │ ├── GetDepositLicenseViewHelper.php │ ├── Format │ │ └── MicrotimeViewHelper.php │ ├── IsValidDepositLicenseViewHelper.php │ ├── FailedMessagesCountViewHelper.php │ ├── ShowStatusViewHelper.php │ └── ShowDocumentTypeViewHelper.php ├── Helper │ ├── DateTimePrecision.php │ └── MetadataItemId.php ├── Controller │ └── DocumentTypeController.php └── Configuration │ └── Settings.php ├── .gitignore ├── phpstan.neon ├── phpstan-bootstrap.php ├── .scrutinizer.yml ├── .vscode └── launch.json ├── Configuration ├── TypoScript │ └── Api │ │ ├── constants.txt │ │ └── setup.txt ├── Commands.php └── TCA │ └── Overrides │ └── sys_template.php ├── .editorconfig ├── Tests └── Unit │ ├── Services │ └── IdentifierTest.php │ └── Helper │ └── DateTimePrecisionTest.php ├── .github └── workflows │ └── php-code-scanning.yml ├── ext_emconf.php └── ext_conf_template.txt /.ddev/site/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !composer.json -------------------------------------------------------------------------------- /Resources/Private/.htaccess: -------------------------------------------------------------------------------- 1 | deny from all 2 | -------------------------------------------------------------------------------- /EFRE_EU.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kitodo/kitodo-publication/HEAD/EFRE_EU.jpg -------------------------------------------------------------------------------- /Documentation/Readme.rst: -------------------------------------------------------------------------------- 1 | Extension Dokumentation 2 | ======================= 3 | 4 | -------------------------------------------------------------------------------- /ext_icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kitodo/kitodo-publication/HEAD/ext_icon.gif -------------------------------------------------------------------------------- /Documentation/Images/Manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kitodo/kitodo-publication/HEAD/Documentation/Images/Manager.png -------------------------------------------------------------------------------- /Resources/Public/Icons/default.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kitodo/kitodo-publication/HEAD/Resources/Public/Icons/default.gif -------------------------------------------------------------------------------- /Resources/Public/Icons/relation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kitodo/kitodo-publication/HEAD/Resources/Public/Icons/relation.gif -------------------------------------------------------------------------------- /Resources/Public/images/addbtnbg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kitodo/kitodo-publication/HEAD/Resources/Public/images/addbtnbg.gif -------------------------------------------------------------------------------- /Resources/Public/images/clearbtn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kitodo/kitodo-publication/HEAD/Resources/Public/images/clearbtn.gif -------------------------------------------------------------------------------- /Resources/Public/images/gobtns.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kitodo/kitodo-publication/HEAD/Resources/Public/images/gobtns.gif -------------------------------------------------------------------------------- /Resources/Public/images/rembtnbg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kitodo/kitodo-publication/HEAD/Resources/Public/images/rembtnbg.gif -------------------------------------------------------------------------------- /Documentation/Images/Documenttype.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kitodo/kitodo-publication/HEAD/Documentation/Images/Documenttype.png -------------------------------------------------------------------------------- /Documentation/Images/Client_Dataset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kitodo/kitodo-publication/HEAD/Documentation/Images/Client_Dataset.png -------------------------------------------------------------------------------- /Documentation/Images/Manager_Search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kitodo/kitodo-publication/HEAD/Documentation/Images/Manager_Search.png -------------------------------------------------------------------------------- /Resources/Public/images/be_bglogo_smooth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kitodo/kitodo-publication/HEAD/Resources/Public/images/be_bglogo_smooth.png -------------------------------------------------------------------------------- /Resources/Public/images/ui-anim_basic_16x16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kitodo/kitodo-publication/HEAD/Resources/Public/images/ui-anim_basic_16x16.gif -------------------------------------------------------------------------------- /Classes/Services/Email/ActiveMessageException.php: -------------------------------------------------------------------------------- 1 | /dev/null && vendor/bin/churn run $src 11 | -------------------------------------------------------------------------------- /.ddev/commands/web/test: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ## Description: Run unit tests inside web container 4 | ## Usage: test [options] 5 | 6 | executable="vendor/phpunit/phpunit/phpunit" 7 | options="-c vendor/nimut/testing-framework/res/Configuration/UnitTests.xml" 8 | 9 | $executable $options ../kitodo-publication/Tests $@ 10 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/mode/tiddlywiki/tiddlywiki.css: -------------------------------------------------------------------------------- 1 | span.cm-underlined { 2 | text-decoration: underline; 3 | } 4 | span.cm-strikethrough { 5 | text-decoration: line-through; 6 | } 7 | span.cm-brace { 8 | color: #170; 9 | font-weight: bold; 10 | } 11 | span.cm-table { 12 | color: blue; 13 | font-weight: bold; 14 | } 15 | -------------------------------------------------------------------------------- /.scrutinizer.yml: -------------------------------------------------------------------------------- 1 | build: 2 | dependencies: 3 | before: 4 | - sudo apt-get install -y ca-certificates 5 | - composer config repositories.t3ter composer https://composer.typo3.org 6 | - composer config minimum-stability dev 7 | - composer config prefer-stable true 8 | 9 | filter: 10 | excluded_paths: 11 | - "Lib/" 12 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "codemirror", 3 | "version":"5.0.0", 4 | "main": ["lib/codemirror.js", "lib/codemirror.css"], 5 | "ignore": [ 6 | "**/.*", 7 | "node_modules", 8 | "components", 9 | "bin", 10 | "demo", 11 | "doc", 12 | "test", 13 | "index.html", 14 | "package.json" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Listen for XDebug 3", 6 | "type": "php", 7 | "request": "launch", 8 | "port": 9003, 9 | "pathMappings": { 10 | "/var/www/kitodo-publication": "${workspaceRoot}" 11 | }, 12 | "ignore": [ 13 | "**/vendor/**/*.php", 14 | "**/typo3temp/**/*.php" 15 | ] 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /.ddev/commands/host/metrics: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ## Description: Run phpmetrics to analyze the source code. Opens a browser to view it. 4 | ## Usage: metrics 5 | 6 | executable="vendor/phpmetrics/phpmetrics/bin/phpmetrics" 7 | sourcedir="/var/www/kitodo-publication" 8 | options="$@ --report-html=$DDEV_DOCROOT/phpmetrics \ 9 | --exclude=.ddev" 10 | 11 | ddev exec rm -rf $DDEV_DOCROOT/phpmetrics && \ 12 | ddev exec $executable $options $sourcedir && \ 13 | ddev launch phpmetrics 14 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/addon/fold/foldgutter.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-foldmarker { 2 | color: blue; 3 | text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px; 4 | font-family: arial; 5 | line-height: .3; 6 | cursor: pointer; 7 | } 8 | .CodeMirror-foldgutter { 9 | width: .7em; 10 | } 11 | .CodeMirror-foldgutter-open, 12 | .CodeMirror-foldgutter-folded { 13 | cursor: pointer; 14 | } 15 | .CodeMirror-foldgutter-open:after { 16 | content: "\25BE"; 17 | } 18 | .CodeMirror-foldgutter-folded:after { 19 | content: "\25B8"; 20 | } 21 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/mode/ruby/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({indentUnit: 2}, "ruby"); 6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } 7 | 8 | MT("divide_equal_operator", 9 | "[variable bar] [operator /=] [variable foo]"); 10 | 11 | MT("divide_equal_operator_no_spacing", 12 | "[variable foo][operator /=][number 42]"); 13 | 14 | })(); 15 | -------------------------------------------------------------------------------- /Classes/Services/Api/InvalidJson.php: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | {namespace dpf = EWW\Dpf\ViewHelpers} 16 | 17 | -------------------------------------------------------------------------------- /Configuration/TypoScript/Api/constants.txt: -------------------------------------------------------------------------------- 1 | plugin.tx_dpf.settings.api { 2 | # cat=plugin.tx_dpf/api; type=string; label=Comma separated list of hosts allowed to access internal actions 3 | allowedHosts = localhost 4 | 5 | # cat=plugin.tx_dpf/api; type=string; label=METS dissemination URI: Format string. Use $pid as identifier placeholder. 6 | metsDisseminationUri = http://localhost:8080/mets?pid=$pid 7 | 8 | # cat=plugin.tx_dpf/api; type=string; label=ZIP dissemination URI: Format string. Use $metsUri as METS dissemination placeholder. 9 | zipDisseminationUri = http://localhost:8080/zip?xmdpfilter=true&metsurl=$metsUri 10 | } 11 | 12 | -------------------------------------------------------------------------------- /Resources/Private/Language/locallang_csh_tx_dpf_domain_model_processnumber.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | LFEditor 6 |
7 | 8 | 9 | Counter 10 | 11 | 12 | Owner ID 13 | 14 | 15 | Year 16 | 17 | 18 |
19 |
-------------------------------------------------------------------------------- /Documentation/Includes.txt: -------------------------------------------------------------------------------- 1 | .. ================================================== 2 | .. FOR YOUR INFORMATION 3 | .. -------------------------------------------------- 4 | .. -*- coding: utf-8 -*- with BOM. 5 | 6 | .. This is 'Includes.txt'. It is included at the very top of each and 7 | every ReST source file in this documentation project (= manual). 8 | 9 | 10 | .. ================================================== 11 | .. DEFINE SOME TEXT ROLES 12 | .. -------------------------------------------------- 13 | 14 | .. role:: typoscript(code) 15 | 16 | .. role:: ts(typoscript) 17 | :class: typoscript 18 | 19 | .. role:: php(code) 20 | 21 | .. highlight:: php 22 | -------------------------------------------------------------------------------- /.ddev/config.yaml: -------------------------------------------------------------------------------- 1 | name: ddev-kitodo-publication-typo3-9 2 | type: php 3 | docroot: public 4 | php_version: "7.2" 5 | webserver_type: apache-fpm 6 | router_http_port: "80" 7 | router_https_port: "443" 8 | xdebug_enabled: false 9 | additional_hostnames: [] 10 | additional_fqdns: [] 11 | mariadb_version: "10.2" 12 | mysql_version: "" 13 | provider: default 14 | use_dns_when_possible: true 15 | composer_version: "" 16 | no_project_mount: true 17 | hooks: 18 | post-import-db: 19 | - exec: "vendor/bin/typo3cms database:updateschema" 20 | - exec: "vendor/bin/typo3cms cleanup:updatereferenceindex" 21 | pre-stop: 22 | - exec: rm fcrepo-home/data/*.lock.db 23 | service: fcrepo 24 | -------------------------------------------------------------------------------- /Classes/Domain/Repository/FileRepository.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | LFEditor 6 |
7 | 8 | 9 | label 10 | 11 | 12 | title 13 | 14 | 15 | File 16 | 17 | 18 |
19 |
-------------------------------------------------------------------------------- /Resources/Private/Layouts/BackendAdmin.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Resources/Private/Templates/DocumentType/List.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Classes/Services/Suggestion/Change.php: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | {namespace dpf=EWW\Dpf\ViewHelpers} 17 | 18 |
19 | 20 | 21 | 22 |
-------------------------------------------------------------------------------- /Resources/Private/Templates/AjaxDocumentForm/PrimaryUpload.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Classes/Domain/Repository/MetadataPageRepository.php: -------------------------------------------------------------------------------- 1 | $out 20 | 21 | # Index URL list 22 | vendor/bin/typo3cms dpf:indexByFile -L -u $auth $clientId $out 23 | -------------------------------------------------------------------------------- /Classes/Domain/Repository/InputOptionListRepository.php: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | 18 | 19 | -------------------------------------------------------------------------------- /Resources/Private/Templates/Workspace/ListWorkspace.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | {namespace dpf = EWW\Dpf\ViewHelpers} 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Resources/Private/Templates/AjaxDocumentForm/SecondaryUpload.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Classes/Plugins/RelatedListTool/template.tmpl: -------------------------------------------------------------------------------- 1 | 13 | 14 |
15 | 16 |
    17 | 18 |
  • ###ITEM###
  • 19 | 20 |
21 |
22 |
23 | 24 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/theme/neat.css: -------------------------------------------------------------------------------- 1 | .cm-s-neat span.cm-comment { color: #a86; } 2 | .cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color: blue; } 3 | .cm-s-neat span.cm-string { color: #a22; } 4 | .cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color: #077; } 5 | .cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color: #0aa; } 6 | .cm-s-neat span.cm-variable { color: black; } 7 | .cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; } 8 | .cm-s-neat span.cm-meta {color: #555;} 9 | .cm-s-neat span.cm-link { color: #3a3; } 10 | 11 | .cm-s-neat .CodeMirror-activeline-background {background: #e8f2ff !important;} 12 | .cm-s-neat .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} 13 | -------------------------------------------------------------------------------- /Classes/Services/FeUser/RorDataService.php: -------------------------------------------------------------------------------- 1 | getApiUrl() . '?query=' . $this->searchTermReplacement($searchTerm)) 14 | ->send(); 15 | 16 | return ['entries' => $response->body->items]; 17 | } 18 | 19 | public function getOrganisationData($rorId) { 20 | $response = Request::get($this->getApiUrl() . '/' . $rorId) 21 | ->send(); 22 | 23 | return $response->body; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /Documentation/Developer/Index.rst: -------------------------------------------------------------------------------- 1 | .. ================================================== 2 | .. FOR YOUR INFORMATION 3 | .. -------------------------------------------------- 4 | .. -*- coding: utf-8 -*- with BOM. 5 | 6 | 7 | .. _developer: 8 | 9 | Developer 10 | ================ 11 | 12 | .. _developer-tests: 13 | 14 | Tests 15 | ----- 16 | 17 | This extension uses the nimut/testing-framework to run and write unit tests. The test cases are located in the "Tests" directory. 18 | To run the tests use the following command inside the extension root path: 19 | 20 | .. code-block:: console 21 | 22 | vendor/phpunit/phpunit/phpunit -c vendor/nimut/testing-framework/res/Configuration/UnitTests.xml Tests/ 23 | 24 | .. important:: 25 | 26 | (Notice: It is necessary that all dev dependencies are loaded) 27 | -------------------------------------------------------------------------------- /Resources/Private/Partials/Search/FisModalDialog.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Resources/Private/Templates/AjaxDocumentForm/Field.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 |
17 | 19 |
20 |
21 | -------------------------------------------------------------------------------- /Resources/Private/Layouts/DocumentFormBackoffice.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | {namespace dpf=EWW\Dpf\ViewHelpers} 17 | 18 |
19 | 20 |
21 | 22 | 23 | 24 |
25 | 26 |
27 | -------------------------------------------------------------------------------- /Classes/ViewHelpers/GetTypo3ModeViewHelper.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | LFEditor 6 |
7 | 8 | 9 | Counter 10 | Zähler 11 | 12 | 13 | Owner ID 14 | Besitzer ID 15 | 16 | 17 | Year 18 | Jahr 19 | 20 | 21 |
22 |
-------------------------------------------------------------------------------- /Documentation/Settings.yml: -------------------------------------------------------------------------------- 1 | # This is the project specific Settings.yml file. 2 | # Place Sphinx specific build information here. 3 | # Settings given here will replace the settings of 'conf.py'. 4 | 5 | # Below is an example of intersphinx mapping declaration 6 | # Add more mappings depending on what manual you want to link to 7 | # Remove entirely if you don't need cross-linking 8 | 9 | --- 10 | conf.py: 11 | copyright: 2014 12 | project: Kitodo.Publication 13 | version: 14 | release: 15 | intersphinx_mapping: 16 | t3tsref: 17 | - http://docs.typo3.org/typo3cms/TyposcriptReference/ 18 | - null 19 | latex_documents: 20 | - - Index 21 | - dpf.tex 22 | - Kitoto.Publication 23 | - 24 | - manual 25 | latex_elements: 26 | papersize: a4paper 27 | pointsize: 10pt 28 | preamble: \usepackage 29 | ... 30 | -------------------------------------------------------------------------------- /Resources/Private/Language/de.locallang_csh_tx_dpf_domain_model_transformationfile.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | LFEditor 6 |
7 | 8 | 9 | label 10 | Label 11 | 12 | 13 | title 14 | Titel 15 | 16 | 17 | File 18 | Datei 19 | 20 | 21 |
22 |
-------------------------------------------------------------------------------- /Classes/Exceptions/DocumentMaxSizeErrorException.php: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 |

9 | 10 |

11 |
12 | 13 | 14 | 15 |

16 | 17 | 18 | 19 |

20 |
21 | 22 | -------------------------------------------------------------------------------- /Classes/Domain/Repository/MetadataObjectRepository.php: -------------------------------------------------------------------------------- 1 | \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING); 24 | } 25 | -------------------------------------------------------------------------------- /Configuration/Commands.php: -------------------------------------------------------------------------------- 1 | [ 24 | 'class' => IndexByFile::class 25 | ], 26 | 'dpf:indexByDatabase' => [ 27 | 'class' => IndexByDatabase::class 28 | ], 29 | ]; 30 | -------------------------------------------------------------------------------- /Resources/Private/Partials/Workspace/Pagination.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | {namespace dpf = EWW\Dpf\ViewHelpers} 16 | 17 | 21 | 22 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/theme/elegant.css: -------------------------------------------------------------------------------- 1 | .cm-s-elegant span.cm-number, .cm-s-elegant span.cm-string, .cm-s-elegant span.cm-atom {color: #762;} 2 | .cm-s-elegant span.cm-comment {color: #262; font-style: italic; line-height: 1em;} 3 | .cm-s-elegant span.cm-meta {color: #555; font-style: italic; line-height: 1em;} 4 | .cm-s-elegant span.cm-variable {color: black;} 5 | .cm-s-elegant span.cm-variable-2 {color: #b11;} 6 | .cm-s-elegant span.cm-qualifier {color: #555;} 7 | .cm-s-elegant span.cm-keyword {color: #730;} 8 | .cm-s-elegant span.cm-builtin {color: #30a;} 9 | .cm-s-elegant span.cm-link {color: #762;} 10 | .cm-s-elegant span.cm-error {background-color: #fdd;} 11 | 12 | .cm-s-elegant .CodeMirror-activeline-background {background: #e8f2ff !important;} 13 | .cm-s-elegant .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} 14 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/README.md: -------------------------------------------------------------------------------- 1 | # CodeMirror 2 | [![Build Status](https://travis-ci.org/codemirror/CodeMirror.svg)](https://travis-ci.org/codemirror/CodeMirror) 3 | [![NPM version](https://img.shields.io/npm/v/codemirror.svg)](https://www.npmjs.org/package/codemirror) 4 | [Funding status: ![maintainer happiness](https://marijnhaverbeke.nl/fund/status_s.png)](https://marijnhaverbeke.nl/fund/) 5 | 6 | CodeMirror is a JavaScript component that provides a code editor in 7 | the browser. When a mode is available for the language you are coding 8 | in, it will color your code, and optionally help with indentation. 9 | 10 | The project page is http://codemirror.net 11 | The manual is at http://codemirror.net/doc/manual.html 12 | The contributing guidelines are in [CONTRIBUTING.md](https://github.com/codemirror/CodeMirror/blob/master/CONTRIBUTING.md) 13 | -------------------------------------------------------------------------------- /Classes/Plugins/DownloadTool/template.tmpl: -------------------------------------------------------------------------------- 1 | 13 | 14 |
15 | 16 |
    17 | 18 |
  • 19 | ###FILE### 20 | ###VGWORT### 21 |
  • 22 | 23 |
24 |
25 |
26 | 27 | -------------------------------------------------------------------------------- /.ddev/docker-compose.elasticsearch.yaml: -------------------------------------------------------------------------------- 1 | version: '3.6' 2 | services: 3 | elasticsearch: 4 | container_name: ddev-${DDEV_SITENAME}-elasticsearch 5 | hostname: ${DDEV_SITENAME}-elasticsearch 6 | image: elasticsearch:7.6.1 7 | ports: 8 | - "9200" 9 | - "9300" 10 | environment: 11 | - cluster.name=docker-cluster 12 | - discovery.type=single-node 13 | - bootstrap.memory_lock=true 14 | - "ES_JAVA_OPTS=-Xms512m -Xmx512m" 15 | - VIRTUAL_HOST=$DDEV_HOSTNAME 16 | - HTTP_EXPOSE=9200:9200 17 | - HTTPS_EXPOSE=9201:9200 18 | labels: 19 | com.ddev.site-name: ${DDEV_SITENAME} 20 | com.ddev.approot: $DDEV_APPROOT 21 | volumes: 22 | - elasticsearch:/usr/share/elasticsearch/data 23 | - ".:/mnt/ddev_config" 24 | web: 25 | links: 26 | - elasticsearch:elasticsearch 27 | 28 | volumes: 29 | elasticsearch: -------------------------------------------------------------------------------- /Classes/Exceptions/ElasticSearchConnectionErrorException.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | LFEditor 6 |
7 | 8 | 9 | Default value 10 | 11 | 12 | Display name 13 | 14 | 15 | Name 16 | 17 | 18 | Value label list 19 | 20 | 21 | Value list 22 | 23 | 24 |
25 |
-------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/addon/hint/show-hint.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-hints { 2 | position: absolute; 3 | z-index: 10; 4 | overflow: hidden; 5 | list-style: none; 6 | 7 | margin: 0; 8 | padding: 2px; 9 | 10 | -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 11 | -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 12 | box-shadow: 2px 3px 5px rgba(0,0,0,.2); 13 | border-radius: 3px; 14 | border: 1px solid silver; 15 | 16 | background: white; 17 | font-size: 90%; 18 | font-family: monospace; 19 | 20 | max-height: 20em; 21 | overflow-y: auto; 22 | } 23 | 24 | .CodeMirror-hint { 25 | margin: 0; 26 | padding: 0 4px; 27 | border-radius: 2px; 28 | max-width: 19em; 29 | overflow: hidden; 30 | white-space: pre; 31 | color: black; 32 | cursor: pointer; 33 | } 34 | 35 | li.CodeMirror-hint-active { 36 | background: #08f; 37 | color: white; 38 | } 39 | -------------------------------------------------------------------------------- /Resources/Private/Language/locallang_csh_tx_dpf_domain_model_documenttype.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | LFEditor 6 |
7 | 8 | 9 | displayName 10 | 11 | 12 | virtual 13 | 14 | 15 | hide in list 16 | 17 | 18 | metadataPage 19 | 20 | 21 | name 22 | 23 | 24 |
25 |
26 | -------------------------------------------------------------------------------- /Resources/Private/Language/locallang_csh_tx_dpf_domain_model_metadatapage.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | LFEditor 6 |
7 | 8 | 9 | Access restriction roles 10 | 11 | 12 | displayName 13 | 14 | 15 | metadataGroup 16 | 17 | 18 | name 19 | 20 | 21 | pageNumber 22 | 23 | 24 |
25 |
-------------------------------------------------------------------------------- /Classes/ViewHelpers/JavaScriptConstantsViewHelper.php: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | {namespace dpf = EWW\Dpf\ViewHelpers} 16 | 17 | 18 | -------------------------------------------------------------------------------- /Resources/Private/Partials/Workspace/ListItemActions.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | {namespace dpf = EWW\Dpf\ViewHelpers} 16 | 17 | 18 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Classes/Domain/Model/MetadataMandatoryInterface.php: -------------------------------------------------------------------------------- 1 | self::MANDATORY, 24 | 'mandatory_file_only' => self::MANDATORY_FILE_ONLY 25 | ]; 26 | 27 | public function getMandatory(); 28 | public function setMandatory($mandatory); 29 | } -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: http://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | # Unix-style newlines with a newline ending every file 7 | [*] 8 | charset = utf-8 9 | end_of_line = lf 10 | indent_style = space 11 | indent_size = 4 12 | insert_final_newline = true 13 | trim_trailing_whitespace = true 14 | 15 | # TS/JS-Files 16 | [*.{ts,js}] 17 | indent_size = 2 18 | 19 | # JSON-Files 20 | [*.json] 21 | indent_style = tab 22 | 23 | # ReST-Files 24 | [*.rst] 25 | indent_size = 3 26 | max_line_length = 80 27 | 28 | # YAML-Files 29 | [*.{yaml,yml}] 30 | indent_size = 2 31 | 32 | # package.json 33 | [package.json] 34 | indent_size = 2 35 | 36 | # TypoScript 37 | [*.{typoscript,tsconfig}] 38 | indent_size = 2 39 | 40 | # XLF-Files 41 | [*.xlf] 42 | indent_style = tab 43 | 44 | # SQL-Files 45 | [*.sql] 46 | indent_style = tab 47 | indent_size = 2 48 | 49 | # .htaccess 50 | [{_.htaccess,.htaccess}] 51 | indent_style = tab 52 | -------------------------------------------------------------------------------- /Classes/Services/File/FileValidatorInterface.php: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | {namespace dpf = EWW\Dpf\ViewHelpers} 16 | 17 |
18 |

{f:translate(key: 'manager.control.myPublications')}

19 |
20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Classes/Services/Storage/Exception/IngestDocumentException.php: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 |
    17 | 18 | 19 |
  1. 20 | {documentType.displayName} 21 | 22 |
  2. 23 |
    24 |
    25 |
26 | -------------------------------------------------------------------------------- /Classes/Services/Storage/Exception/ConnectionException.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | LFEditor 6 |
7 | 8 | 9 | action 10 | 11 | 12 | curlError 13 | 14 | 15 | date 16 | 17 | 18 | document uid 19 | 20 | 21 | object identifier 22 | 23 | 24 | response 25 | 26 | 27 |
28 |
-------------------------------------------------------------------------------- /Documentation/Introduction/Index.rst: -------------------------------------------------------------------------------- 1 | .. ================================================== 2 | .. FOR YOUR INFORMATION 3 | .. -------------------------------------------------- 4 | .. -*- coding: utf-8 -*- with BOM. 5 | 6 | 7 | .. _introduction: 8 | 9 | Introduction 10 | ============ 11 | 12 | .. _about: 13 | 14 | About Kitodo.Publication 15 | ------------------------ 16 | 17 | Kitodo.Publication is a typo3 extension and can be used to record for example publications or other documents. 18 | The metadata are recorded with a configured form, which is shown in the frontend. 19 | Every document type can base on different configurations. The recorded data are saved in the typo3 backend and can be published to a repository after the data is checked. 20 | 21 | 22 | .. _screenshots: 23 | 24 | Screenshots 25 | ----------- 26 | 27 | Some Screenshots from Kitodo.Publication BE and FE 28 | 29 | .. figure:: ../Images/Manager.png 30 | :alt: Kitodo.Publication Manager 31 | 32 | Kitodo.Publication Manager -------------------------------------------------------------------------------- /Classes/Helper/DateTimePrecision.php: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | {namespace dpf = EWW\Dpf\ViewHelpers} 16 | 17 | 18 | 19 | 25 | -------------------------------------------------------------------------------- /.ddev/docker-compose.environment.yaml: -------------------------------------------------------------------------------- 1 | version: "3.6" 2 | services: 3 | web: 4 | environment: 5 | - TYPO3_INSTALL_DB_DRIVER=mysqli 6 | - TYPO3_INSTALL_DB_USER=db 7 | - TYPO3_INSTALL_DB_PASSWORD=db 8 | - TYPO3_INSTALL_DB_HOST=db 9 | - TYPO3_INSTALL_DB_PORT=3306 10 | - TYPO3_INSTALL_DB_UNIX_SOCKET= 11 | - TYPO3_INSTALL_DB_USE_EXISTING=1 12 | - TYPO3_INSTALL_ADMIN_USER=admin 13 | - TYPO3_INSTALL_ADMIN_PASSWORD=adminadmin 14 | - TYPO3_INSTALL_SITE_NAME=EXT:dpf Dev Environment 15 | - TYPO3_INSTALL_SITE_SETUP_TYPE=site 16 | - TYPO3_INSTALL_WEB_SERVER_CONFIG=apache 17 | volumes: 18 | - type: bind 19 | source: ../ 20 | target: /var/www/kitodo-publication 21 | consistency: cached 22 | - type: bind 23 | source: ./site/ 24 | target: /var/www/html 25 | consistency: delegated 26 | -------------------------------------------------------------------------------- /Configuration/TypoScript/Api/setup.txt: -------------------------------------------------------------------------------- 1 | api = PAGE 2 | api { 3 | typeNum = 0 4 | config { 5 | disableAllHeaderCode = 1 6 | disableCharsetHeader = 1 7 | additionalHeaders > 8 | xhtml_cleaning = 0 9 | admPanel = 0 10 | debug = 0 11 | no_cache = 1 12 | } 13 | 10 < tt_content.list.20.dpf_getfile 14 | } 15 | 16 | plugin.tx_dpf.settings.api { 17 | allowedHosts = {$plugin.tx_dpf.settings.api.allowedHosts} 18 | metsDisseminationUri = {$plugin.tx_dpf.settings.api.metsDisseminationUri} 19 | zipDisseminationUri = {$plugin.tx_dpf.settings.api.zipDisseminationUri} 20 | } 21 | 22 | # Actions, only allowed for developers and configured hosts 23 | [IP=devIP][hostname={$plugin.tx_dpf.settings.api.allowedHosts}] 24 | plugin.tx_dpf.settings.allowedActions { 25 | 1 = mets 26 | } 27 | [end] 28 | 29 | # Actions which are always allowed 30 | plugin.tx_dpf.settings.allowedActions { 31 | 3 = dataCite 32 | 4 = attachment 33 | 5 = zip 34 | } 35 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/addon/mode/multiplex_test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | CodeMirror.defineMode("markdown_with_stex", function(){ 6 | var inner = CodeMirror.getMode({}, "stex"); 7 | var outer = CodeMirror.getMode({}, "markdown"); 8 | 9 | var innerOptions = { 10 | open: '$', 11 | close: '$', 12 | mode: inner, 13 | delimStyle: 'delim', 14 | innerStyle: 'inner' 15 | }; 16 | 17 | return CodeMirror.multiplexingMode(outer, innerOptions); 18 | }); 19 | 20 | var mode = CodeMirror.getMode({}, "markdown_with_stex"); 21 | 22 | function MT(name) { 23 | test.mode( 24 | name, 25 | mode, 26 | Array.prototype.slice.call(arguments, 1), 27 | 'multiplexing'); 28 | } 29 | 30 | MT( 31 | "stexInsideMarkdown", 32 | "[strong **Equation:**] [delim $][inner&tag \\pi][delim $]"); 33 | })(); 34 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "codemirror", 3 | "version":"5.0.0", 4 | "main": "lib/codemirror.js", 5 | "description": "In-browser code editing made bearable", 6 | "licenses": [{"type": "MIT", 7 | "url": "http://codemirror.net/LICENSE"}], 8 | "directories": {"lib": "./lib"}, 9 | "scripts": {"test": "node ./test/run.js"}, 10 | "devDependencies": {"node-static": "0.6.0", 11 | "phantomjs": "1.9.2-5", 12 | "blint": ">=0.1.1"}, 13 | "bugs": "http://github.com/codemirror/CodeMirror/issues", 14 | "keywords": ["JavaScript", "CodeMirror", "Editor"], 15 | "homepage": "http://codemirror.net", 16 | "maintainers":[{"name": "Marijn Haverbeke", 17 | "email": "marijnh@gmail.com", 18 | "web": "http://marijnhaverbeke.nl"}], 19 | "repository": {"type": "git", 20 | "url": "https://github.com/codemirror/CodeMirror.git"} 21 | } 22 | -------------------------------------------------------------------------------- /Classes/Domain/Repository/MessageRepository.php: -------------------------------------------------------------------------------- 1 | createQuery(); 28 | $query->setOrderings(array('tstamp' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING)); 29 | return $query->execute(); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/addon/lint/yaml-lint.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | // Depends on js-yaml.js from https://github.com/nodeca/js-yaml 15 | 16 | // declare global: jsyaml 17 | 18 | CodeMirror.registerHelper("lint", "yaml", function(text) { 19 | var found = []; 20 | try { jsyaml.load(text); } 21 | catch(e) { 22 | var loc = e.mark; 23 | found.push({ from: CodeMirror.Pos(loc.line, loc.column), to: CodeMirror.Pos(loc.line, loc.column), message: e.message }); 24 | } 25 | return found; 26 | }); 27 | 28 | }); 29 | -------------------------------------------------------------------------------- /Classes/Domain/Repository/FrontendUserRepository.php: -------------------------------------------------------------------------------- 1 | objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\Typo3QuerySettings'); 15 | $querySettings->setRespectStoragePage(false); 16 | $this->setDefaultQuerySettings($querySettings); 17 | $query = $this->createQuery(); 18 | 19 | $constraintsAnd[] = $query->equals('uid', $feUserUid); 20 | $constraintsAnd[] = $query->equals('pid', $clientPid); 21 | $query->matching($query->logicalAnd($constraintsAnd)); 22 | 23 | return $query->execute()->count() > 0; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Classes/Domain/Repository/ClientRepository.php: -------------------------------------------------------------------------------- 1 | createQuery(); 30 | $query->getQuerySettings()->setRespectStoragePage(false); 31 | $query->matching($query->equals('pid', $pid)); 32 | return $query->execute(); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /Classes/ViewHelpers/IsDoiViewHelper.php: -------------------------------------------------------------------------------- 1 | registerArgument('value', 'string', '', true); 24 | } 25 | 26 | /** 27 | * @return string 28 | */ 29 | public function render() 30 | { 31 | $value = trim($this->arguments['value']); 32 | return strpos($value, '10.') === 0; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Resources/Private/Templates/AjaxDocumentForm/DeleteFile.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | -------------------------------------------------------------------------------- /Resources/Private/Templates/SearchFE/NextResults.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | {namespace dpf = EWW\Dpf\ViewHelpers} 16 | 17 | obsolete template 18 | 19 | 20 | 21 | 22 | 23 |
24 | {f:translate(key: 25 | 'search.resultList.more')} 26 | 27 |
28 |
29 | -------------------------------------------------------------------------------- /Tests/Unit/Services/IdentifierTest.php: -------------------------------------------------------------------------------- 1 | assertTrue(Identifier::isUid(2345)); 27 | } 28 | 29 | /** 30 | * @test 31 | */ 32 | public function Identifies_process_number() { 33 | $this->assertTrue(Identifier::isProcessNumber("FOO-23-5")); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /.ddev/commands/web/first-install: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ## Description: Install TYPO3 and the Extension using typo3cms command 4 | ## Usage: first-install 5 | 6 | composer install 7 | vendor/bin/typo3cms install:setup -n --use-existing-database --database-name db 8 | vendor/bin/typo3cms configuration:set 'BE/debug' 1 9 | vendor/bin/typo3cms configuration:set 'FE/debug' 1 10 | vendor/bin/typo3cms configuration:set 'SYS/devIPmask' '*' 11 | vendor/bin/typo3cms configuration:set 'SYS/displayErrors' 1 12 | vendor/bin/typo3cms configuration:set 'SYS/systemLogLevel' 0 13 | vendor/bin/typo3cms configuration:set 'SYS/trustedHostsPattern' '.*.*' 14 | vendor/bin/typo3cms configuration:set 'MAIL/transport' 'smtp' 15 | vendor/bin/typo3cms configuration:set 'MAIL/transport_smtp_server' 'localhost:1025' 16 | vendor/bin/typo3cms configuration:set 'GFX/processor' 'ImageMagick' 17 | vendor/bin/typo3cms configuration:set 'GFX/processor_path' '/usr/bin/' 18 | vendor/bin/typo3cms configuration:set 'GFX/processor_path_lzw' '/usr/bin/' 19 | vendor/bin/typo3cms install:generatepackagestates 20 | vendor/bin/typo3cms cache:flush -------------------------------------------------------------------------------- /Resources/Private/Partials/FormErrors.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | 17 |
    18 | 19 |
  • 20 | {propertyPath}: 21 |
      22 |
    • {error}
    • 23 |
    24 |
  • 25 |
    26 |
27 |
28 |
-------------------------------------------------------------------------------- /Resources/Private/Partials/Workspace/Creator.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | {namespace dpf = EWW\Dpf\ViewHelpers} 16 | 17 | 18 | 19 | 20 | 21 | 23 | {f:translate(key: 'manager.workspace.creator.{creatorRole}')} 24 | 25 | 26 | 27 | - 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /Classes/ViewHelpers/Security/KitodoRoleViewHelper.php: -------------------------------------------------------------------------------- 1 | security->getUserRole(); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/fonts/editormd-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by IcoMoon 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Classes/ViewHelpers/IsUrnViewHelper.php: -------------------------------------------------------------------------------- 1 | registerArgument('value', 'string', '', true); 24 | } 25 | 26 | /** 27 | * @return string 28 | */ 29 | public function render() 30 | { 31 | $value = $this->arguments['value']; 32 | 33 | if (strpos(strtolower($value), 'urn') === 0) { 34 | return TRUE; 35 | } 36 | return FALSE; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /Resources/Private/Partials/Suggestion/ChangedField.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | DELETED 21 | 22 | 23 | {fieldChange.newField.value} 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | {field.value} 32 | 33 | 34 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/addon/lint/json-lint.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | // Depends on jsonlint.js from https://github.com/zaach/jsonlint 5 | 6 | // declare global: jsonlint 7 | 8 | (function(mod) { 9 | if (typeof exports == "object" && typeof module == "object") // CommonJS 10 | mod(require("../../lib/codemirror")); 11 | else if (typeof define == "function" && define.amd) // AMD 12 | define(["../../lib/codemirror"], mod); 13 | else // Plain browser env 14 | mod(CodeMirror); 15 | })(function(CodeMirror) { 16 | "use strict"; 17 | 18 | CodeMirror.registerHelper("lint", "json", function(text) { 19 | var found = []; 20 | jsonlint.parseError = function(str, hash) { 21 | var loc = hash.loc; 22 | found.push({from: CodeMirror.Pos(loc.first_line - 1, loc.first_column), 23 | to: CodeMirror.Pos(loc.last_line - 1, loc.last_column), 24 | message: str}); 25 | }; 26 | try { jsonlint.parse(text); } 27 | catch(e) {} 28 | return found; 29 | }); 30 | 31 | }); 32 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/FileSaver/LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright © 2016 [Eli Grey][1]. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | 11 | [1]: http://eligrey.com 12 | -------------------------------------------------------------------------------- /Resources/Private/Language/de.locallang_csh_tx_dpf_domain_model_documenttype.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | LFEditor 6 |
7 | 8 | 9 | displayName 10 | Anzeigename 11 | 12 | 13 | virtual 14 | Virtuell 15 | 16 | 17 | hide in list 18 | In Liste verbergen 19 | 20 | 21 | metadataPage 22 | Metadaten-Seite 23 | 24 | 25 | name 26 | Name 27 | 28 | 29 |
30 |
31 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/theme/neo.css: -------------------------------------------------------------------------------- 1 | /* neo theme for codemirror */ 2 | 3 | /* Color scheme */ 4 | 5 | .cm-s-neo.CodeMirror { 6 | background-color:#ffffff; 7 | color:#2e383c; 8 | line-height:1.4375; 9 | } 10 | .cm-s-neo .cm-comment {color:#75787b} 11 | .cm-s-neo .cm-keyword, .cm-s-neo .cm-property {color:#1d75b3} 12 | .cm-s-neo .cm-atom,.cm-s-neo .cm-number {color:#75438a} 13 | .cm-s-neo .cm-node,.cm-s-neo .cm-tag {color:#9c3328} 14 | .cm-s-neo .cm-string {color:#b35e14} 15 | .cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier {color:#047d65} 16 | 17 | 18 | /* Editor styling */ 19 | 20 | .cm-s-neo pre { 21 | padding:0; 22 | } 23 | 24 | .cm-s-neo .CodeMirror-gutters { 25 | border:none; 26 | border-right:10px solid transparent; 27 | background-color:transparent; 28 | } 29 | 30 | .cm-s-neo .CodeMirror-linenumber { 31 | padding:0; 32 | color:#e0e2e5; 33 | } 34 | 35 | .cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; } 36 | .cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; } 37 | 38 | .cm-s-neo div.CodeMirror-cursor { 39 | width: auto; 40 | border: 0; 41 | background: rgba(155,157,162,0.37); 42 | z-index: 1; 43 | } 44 | -------------------------------------------------------------------------------- /Resources/Private/Language/de.locallang_csh_tx_dpf_domain_model_inputoptionlist.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | LFEditor 6 |
7 | 8 | 9 | Default value 10 | Standardwert 11 | 12 | 13 | Display name 14 | Anzeigename 15 | 16 | 17 | Name 18 | Name 19 | 20 | 21 | Value label list 22 | Wertelabel-Liste 23 | 24 | 25 | Value list 26 | Werteliste 27 | 28 | 29 |
30 |
-------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/addon/edit/trailingspace.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | CodeMirror.defineOption("showTrailingSpace", false, function(cm, val, prev) { 13 | if (prev == CodeMirror.Init) prev = false; 14 | if (prev && !val) 15 | cm.removeOverlay("trailingspace"); 16 | else if (!prev && val) 17 | cm.addOverlay({ 18 | token: function(stream) { 19 | for (var l = stream.string.length, i = l; i && /\s/.test(stream.string.charAt(i - 1)); --i) {} 20 | if (i > stream.pos) { stream.pos = i; return null; } 21 | stream.pos = l; 22 | return "trailingspace"; 23 | }, 24 | name: "trailingspace" 25 | }); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /Classes/Services/FeUser/AbstractDataService.php: -------------------------------------------------------------------------------- 1 | apiUrl) { 30 | $settings = new Settings(); 31 | $apiUrl = $settings->getSettingByName(lcfirst((new \ReflectionClass($this))->getShortName()).'Url'); 32 | if (is_string($apiUrl)) { 33 | $this->apiUrl = trim($apiUrl, '/'); 34 | } 35 | } 36 | 37 | return $this->apiUrl; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Classes/ViewHelpers/IsFisIdMissingViewHelper.php: -------------------------------------------------------------------------------- 1 | security->getFisPersId() || 36 | $this->security->getUserRole() != Security::ROLE_RESEARCHER 37 | ); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Classes/Domain/Repository/DepositLicenseRepository.php: -------------------------------------------------------------------------------- 1 | findByUid($uid); 33 | if ($depositLicense) { 34 | $licences[] = $depositLicense; 35 | } 36 | } 37 | 38 | return $licences; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Resources/Private/Partials/Search/LanguageSelect.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | {namespace dpf = EWW\Dpf\ViewHelpers} 16 | 17 | 18 | -------------------------------------------------------------------------------- /Classes/Services/FeUser/ZdbDataService.php: -------------------------------------------------------------------------------- 1 | getApiUrl() . '/tit.jsonld?q=' . $this->searchTermReplacement($searchTerm)) 20 | ->send(); 21 | 22 | return ['entries' => $response->body->member]; 23 | } 24 | 25 | public function getDataRequest($zdbId) { 26 | $response = Request::get($this->getApiUrl() . '/tit/' . $zdbId .'.jsonld') 27 | ->send(); 28 | 29 | return $response->body->member[0]; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Resources/Private/Language/de.locallang_csh_tx_dpf_domain_model_metadatapage.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | LFEditor 6 |
7 | 8 | 9 | Access restriction roles 10 | Zugriffsbeschränkungsrollen 11 | 12 | 13 | displayName 14 | Anzeigename 15 | 16 | 17 | metadataGroup 18 | Metadatengruppe 19 | 20 | 21 | name 22 | Name 23 | 24 | 25 | pageNumber 26 | Seitenzahl 27 | 28 | 29 |
30 |
-------------------------------------------------------------------------------- /Resources/Private/Partials/DocumentForm/Edit.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2014 by Marijn Haverbeke and others 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Classes/Services/FeUser/OrcidDataService.php: -------------------------------------------------------------------------------- 1 | getApiUrl() . '/expanded-search/?q=' . $this->searchTermReplacement($searchTerm)) 16 | ->expectsJson() 17 | ->addHeader('Accept','*/*') 18 | ->addHeader('Content-Type', 'application/vnd.orcid+json') 19 | ->send(); 20 | 21 | return ['entries' => $response->body->{'expanded-result'}]; 22 | } 23 | 24 | public function getPersonData($orcidId) { 25 | $response = Request::get($this->getApiUrl() . '/expanded-search/?q=orcid:' . $orcidId) 26 | ->expectsJson() 27 | ->addHeader('Accept','*/*') 28 | ->addHeader('Content-Type', 'application/vnd.orcid+json') 29 | ->send(); 30 | 31 | return $response->body->{'expanded-result'}[0]; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /Classes/ViewHelpers/LanguageViewHelper.php: -------------------------------------------------------------------------------- 1 | config['config']['language'])) { 24 | return $GLOBALS['TSFE']->config['config']['language']; 25 | } 26 | } elseif (strlen($GLOBALS['BE_USER']->uc['lang']) > 0) { 27 | return $GLOBALS['BE_USER']->uc['lang']; 28 | } 29 | return 'en'; //default 30 | } 31 | 32 | public function render() 33 | { 34 | return $this->getLanguage(); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /Resources/Private/Language/LogEntryTranslations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | 7 | Log Entry 8 | 9 | 10 | Request ID 11 | 12 | 13 | Time (microseconds) 14 | 15 | 16 | Component 17 | 18 | 19 | Level 20 | 21 | 22 | Message 23 | 24 | 25 | Data 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /Resources/Private/Partials/Workspace/HideDiscarded.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | 17 |
18 | 22 | 25 |
26 |
27 | -------------------------------------------------------------------------------- /Resources/Private/Partials/Workspace/ShowBookmarksOnly.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | 17 |
18 | 22 | 25 |
26 |
27 | -------------------------------------------------------------------------------- /Classes/Domain/Repository/MetadataGroupRepository.php: -------------------------------------------------------------------------------- 1 | createQuery(); 25 | 26 | $constraints = array(); 27 | $constraints[] = $query->like('group_type', '%Person%'); 28 | $constraints[] = $query->like('group_type', '%Fis%'); 29 | 30 | if (count($constraints)) { 31 | $query->matching( 32 | $query->logicalOr($constraints) 33 | ); 34 | } 35 | 36 | return $query->execute()->getFirst(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Classes/Services/Settings/PluginSettings.php: -------------------------------------------------------------------------------- 1 | configurationManager->getConfiguration( 34 | \TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK 35 | ); 36 | return $frameworkConfiguration['settings']; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/select2/LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /Classes/Domain/Model/Viewer.php: -------------------------------------------------------------------------------- 1 | feUserUid; 37 | } 38 | 39 | /** 40 | * Sets the feUserUid 41 | * 42 | * @param int $feUserUid 43 | * @return void 44 | */ 45 | public function setFeUserUid($feUserUid) 46 | { 47 | $this->feUserUid = $feUserUid; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Resources/Private/Templates/DocumentForm/Edit.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | 17 | 18 | 19 |

20 | 21 |

22 | 23 | 24 | 25 | 26 | 27 | {f:translate(key: 'form_button.cancel')} 28 | 29 | 30 | 31 |
32 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/theme/eclipse.css: -------------------------------------------------------------------------------- 1 | .cm-s-eclipse span.cm-meta {color: #FF1717;} 2 | .cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; } 3 | .cm-s-eclipse span.cm-atom {color: #219;} 4 | .cm-s-eclipse span.cm-number {color: #164;} 5 | .cm-s-eclipse span.cm-def {color: #00f;} 6 | .cm-s-eclipse span.cm-variable {color: black;} 7 | .cm-s-eclipse span.cm-variable-2 {color: #0000C0;} 8 | .cm-s-eclipse span.cm-variable-3 {color: #0000C0;} 9 | .cm-s-eclipse span.cm-property {color: black;} 10 | .cm-s-eclipse span.cm-operator {color: black;} 11 | .cm-s-eclipse span.cm-comment {color: #3F7F5F;} 12 | .cm-s-eclipse span.cm-string {color: #2A00FF;} 13 | .cm-s-eclipse span.cm-string-2 {color: #f50;} 14 | .cm-s-eclipse span.cm-qualifier {color: #555;} 15 | .cm-s-eclipse span.cm-builtin {color: #30a;} 16 | .cm-s-eclipse span.cm-bracket {color: #cc7;} 17 | .cm-s-eclipse span.cm-tag {color: #170;} 18 | .cm-s-eclipse span.cm-attribute {color: #00c;} 19 | .cm-s-eclipse span.cm-link {color: #219;} 20 | .cm-s-eclipse span.cm-error {color: #f00;} 21 | 22 | .cm-s-eclipse .CodeMirror-activeline-background {background: #e8f2ff !important;} 23 | .cm-s-eclipse .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} 24 | -------------------------------------------------------------------------------- /Classes/ViewHelpers/InArrayViewHelper.php: -------------------------------------------------------------------------------- 1 | registerArgument('needle', 'mixed', 'The searched value.', true); 24 | $this->registerArgument('array', 'array', 'The array.', true); 25 | } 26 | 27 | /** 28 | * @return bool 29 | */ 30 | public function render() 31 | { 32 | $needle = $this->arguments['needle']; 33 | $array = $this->arguments['array']; 34 | 35 | if (is_array($array)) { 36 | return in_array($needle, $array); 37 | } 38 | return false; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /Classes/ViewHelpers/ArrayViewHelper.php: -------------------------------------------------------------------------------- 1 | registerArgument('key', 'mixed', 'The searched value.', true); 24 | $this->registerArgument('array', 'array', 'The array.', true); 25 | } 26 | 27 | /** 28 | * @return bool 29 | */ 30 | public function render() 31 | { 32 | $key = $this->arguments['key']; 33 | $array = $this->arguments['array']; 34 | 35 | if (array_key_exists($key, $array)) { 36 | return $array[$key]; 37 | } else { 38 | return ""; 39 | } 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /Resources/Private/Partials/DocumentForm/FieldLabel.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | {namespace eww=EWW\Dpf\ViewHelpers} 16 | 17 | 29 | -------------------------------------------------------------------------------- /Resources/Private/Language/de.locallang_csh_tx_dpf_domain_model_documenttransferlog.xlf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | LFEditor 6 |
7 | 8 | 9 | action 10 | Aktion 11 | 12 | 13 | curlError 14 | curl Fehler 15 | 16 | 17 | date 18 | Datum 19 | 20 | 21 | document uid 22 | Dokumenten UID 23 | 24 | 25 | object identifier 26 | Obektkennung 27 | 28 | 29 | response 30 | Antwort 31 | 32 | 33 |
34 |
-------------------------------------------------------------------------------- /Classes/ViewHelpers/ImplodeArrayViewHelper.php: -------------------------------------------------------------------------------- 1 | registerArgument('array', 'mixed', '', true); 24 | $this->registerArgument('glue', 'string', '', true); 25 | } 26 | 27 | /** 28 | * Implodes the given array. 29 | * 30 | * @return string 31 | */ 32 | public function render() 33 | { 34 | $glue = $this->arguments['glue']; 35 | $array = $this->arguments['array']; 36 | 37 | if (is_array($array) && sizeof($array) > 0) { 38 | return implode($glue, $array); 39 | } 40 | 41 | return ""; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Classes/ViewHelpers/ExplodeStringViewHelper.php: -------------------------------------------------------------------------------- 1 | registerArgument('string', 'string', '', true); 24 | $this->registerArgument('glue', 'string', '', true); 25 | } 26 | 27 | /** 28 | * Explodes the given string. 29 | * 30 | * @return array 31 | */ 32 | public function render() 33 | { 34 | $string = $this->arguments['string']; 35 | $glue = $this->arguments['glue']; 36 | 37 | if (is_string($string) && !empty($string)) { 38 | return explode($glue, $string); 39 | } 40 | 41 | return []; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Resources/Private/Templates/SearchFE/ShowSearchForm.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | obsolete template 17 | 18 | 19 | 20 | 21 | 22 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /Resources/Private/Templates/ExternalMetadataImport/UploadedDocuments.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | {namespace dpf = EWW\Dpf\ViewHelpers} 16 | 17 | 18 | 19 | 20 | 21 |
22 |

{f:translate(key: 'manager.bulkImport.headerImported', default: 'Importierte Publikationen')}

23 |
24 | 25 | 26 | 27 | 28 | 29 | 31 | {f:translate(key: 'manager.bulkImport.complete')} 32 | 33 | 34 |
35 | -------------------------------------------------------------------------------- /Resources/Private/Templates/ExternalMetadataImport/BulkImportedDocuments.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | {namespace dpf = EWW\Dpf\ViewHelpers} 16 | 17 | 18 | 19 | 20 | 21 |
22 |

{f:translate(key: 'manager.bulkImport.headerImported', default: 'Importierte Publikationen')}

23 |
24 | 25 | 26 | 27 | 28 | 29 | 31 | {f:translate(key: 'manager.bulkImport.complete')} 32 | 33 | 34 |
35 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/addon/lint/css-lint.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | // Depends on csslint.js from https://github.com/stubbornella/csslint 5 | 6 | // declare global: CSSLint 7 | 8 | (function(mod) { 9 | if (typeof exports == "object" && typeof module == "object") // CommonJS 10 | mod(require("../../lib/codemirror")); 11 | else if (typeof define == "function" && define.amd) // AMD 12 | define(["../../lib/codemirror"], mod); 13 | else // Plain browser env 14 | mod(CodeMirror); 15 | })(function(CodeMirror) { 16 | "use strict"; 17 | 18 | CodeMirror.registerHelper("lint", "css", function(text) { 19 | var found = []; 20 | if (!window.CSSLint) return found; 21 | var results = CSSLint.verify(text), messages = results.messages, message = null; 22 | for ( var i = 0; i < messages.length; i++) { 23 | message = messages[i]; 24 | var startLine = message.line -1, endLine = message.line -1, startCol = message.col -1, endCol = message.col; 25 | found.push({ 26 | from: CodeMirror.Pos(startLine, startCol), 27 | to: CodeMirror.Pos(endLine, endCol), 28 | message: message.message, 29 | severity : message.type 30 | }); 31 | } 32 | return found; 33 | }); 34 | 35 | }); 36 | -------------------------------------------------------------------------------- /Classes/Domain/Repository/EditingLockRepository.php: -------------------------------------------------------------------------------- 1 | createQuery(); 31 | 32 | $dateTimeObj= new \DateTime(); 33 | $dateTimeObj->sub(new \DateInterval("PT".$timeout."S")); 34 | 35 | $query->matching( 36 | $query->lessThan('tstamp', $dateTimeObj->getTimestamp()) 37 | ); 38 | 39 | return $query->execute(); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /Classes/Services/Identifier/Identifier.php: -------------------------------------------------------------------------------- 1 | 0; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/mode/diff/diff.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | CodeMirror.defineMode("diff", function() { 15 | 16 | var TOKEN_NAMES = { 17 | '+': 'positive', 18 | '-': 'negative', 19 | '@': 'meta' 20 | }; 21 | 22 | return { 23 | token: function(stream) { 24 | var tw_pos = stream.string.search(/[\t ]+?$/); 25 | 26 | if (!stream.sol() || tw_pos === 0) { 27 | stream.skipToEnd(); 28 | return ("error " + ( 29 | TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, ''); 30 | } 31 | 32 | var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd(); 33 | 34 | if (tw_pos === -1) { 35 | stream.skipToEnd(); 36 | } else { 37 | stream.pos = tw_pos; 38 | } 39 | 40 | return token_name; 41 | } 42 | }; 43 | }); 44 | 45 | CodeMirror.defineMIME("text/x-diff", "diff"); 46 | 47 | }); 48 | -------------------------------------------------------------------------------- /Classes/Helper/MetadataItemId.php: -------------------------------------------------------------------------------- 1 | id = explode('-', $id); 18 | } else { 19 | throw new \Exception("Invalid Metadata-Item-Id: " . $id); 20 | } 21 | } 22 | 23 | public function getPart($index) { 24 | if (isset($this->id[$index])) { 25 | return is_numeric($this->id[$index]) ? $this->id[$index] : "error"; 26 | } else { 27 | throw new \Exception("Metadata-Item-Id: Invalid index " . $index); 28 | } 29 | } 30 | 31 | public function getGroupId() { 32 | return $this->getPart(0); 33 | 34 | } 35 | 36 | public function getGroupIndex() 37 | { 38 | return $this->getPart(1); 39 | } 40 | 41 | public function getFieldId() 42 | { 43 | return $this->getPart(2); 44 | } 45 | 46 | public function getFieldIndex() 47 | { 48 | return $this->getPart(3); 49 | } 50 | 51 | public function __toString() 52 | { 53 | return implode('-', $this->id); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /Classes/Controller/DocumentTypeController.php: -------------------------------------------------------------------------------- 1 | documentTypeRepository->findByUidList($this->settings['documentTypes']); 34 | 35 | if ($this->request->getPluginName() == "BackofficeDocumentTypes") { 36 | $this->view->assign('controller', 'DocumentFormBackoffice'); 37 | } else { 38 | $this->view->assign('controller', 'DocumentForm'); 39 | } 40 | 41 | $this->view->assign('documentTypes', $docTypes); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/jquery.flowchart.min.js: -------------------------------------------------------------------------------- 1 | /*! jQuery.flowchart.js v1.1.0 | jquery.flowchart.min.js | jQuery plugin for flowchart.js. | MIT License | By: Pandao | https://github.com/pandao/jquery.flowchart.js | 2015-03-09 */ 2 | (function(factory){if(typeof require==="function"&&typeof exports==="object"&&typeof module==="object"){module.exports=factory}else{if(typeof define==="function"){factory(jQuery,flowchart)}else{factory($,flowchart)}}}(function(jQuery,flowchart){(function($){$.fn.flowChart=function(options){options=options||{};var defaults={"x":0,"y":0,"line-width":2,"line-length":50,"text-margin":10,"font-size":14,"font-color":"black","line-color":"black","element-color":"black","fill":"white","yes-text":"yes","no-text":"no","arrow-end":"block","symbols":{"start":{"font-color":"black","element-color":"black","fill":"white"},"end":{"class":"end-element"}},"flowstate":{"past":{"fill":"#CCCCCC","font-size":12},"current":{"fill":"black","font-color":"white","font-weight":"bold"},"future":{"fill":"white"},"request":{"fill":"blue"},"invalid":{"fill":"#444444"},"approved":{"fill":"#58C4A3","font-size":12,"yes-text":"APPROVED","no-text":"n/a"},"rejected":{"fill":"#C45879","font-size":12,"yes-text":"n/a","no-text":"REJECTED"}}};return this.each(function(){var $this=$(this);var diagram=flowchart.parse($this.text());var settings=$.extend(true,defaults,options);$this.html("");diagram.drawSVG(this,settings)})}})(jQuery)})); -------------------------------------------------------------------------------- /.github/workflows/php-code-scanning.yml: -------------------------------------------------------------------------------- 1 | name: PHP Code Scanning 2 | 3 | on: 4 | push: 5 | branches: 6 | - '*' # Trigger on commits to any branch 7 | pull_request: 8 | branches: 9 | - 'master' # Trigger for PRs targeting the 'master' branch 10 | 11 | jobs: 12 | phpstan: 13 | runs-on: ubuntu-22.04 14 | 15 | steps: 16 | # Check out the code from the repository 17 | - name: Checkout code 18 | uses: actions/checkout@v3 19 | 20 | # Set up PHP 7.4 21 | - name: Set up PHP 22 | uses: shivammathur/setup-php@v2 23 | with: 24 | php-version: '7.4' 25 | 26 | # Install dependencies (including PHPStan) 27 | - name: Install dependencies 28 | run: | 29 | composer install --no-interaction --prefer-dist 30 | 31 | # Run PHPStan with the github error format 32 | - name: Run PHPStan (Errors Only) 33 | run: | 34 | vendor/bin/phpstan --error-format=github --no-progress 35 | continue-on-error: true # Continue even if PHPStan finds warnings 36 | 37 | # Check if PHPStan found errors and fail if so 38 | - name: Fail on Errors (if any) 39 | run: | 40 | if grep -q 'ERROR' phpstan.log; then 41 | echo "PHPStan found errors, failing the job!"; 42 | exit 1; 43 | fi 44 | continue-on-error: false # This step will fail the job if errors are found 45 | -------------------------------------------------------------------------------- /Resources/Private/Partials/SearchFE/SearchControl.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | obsolete template 17 | 18 |
19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
33 |
34 | -------------------------------------------------------------------------------- /Classes/Services/Transformer/DocumentTransformer.php: -------------------------------------------------------------------------------- 1 | load($xslt); 24 | 25 | $xmlDoc = new \DOMDocument(); 26 | $xmlDoc->loadXML($xml); 27 | 28 | $processor = new \XSLTProcessor(); 29 | 30 | foreach ($params as $key => $value) { 31 | $processor->setParameter('', $key, $value); 32 | } 33 | 34 | libxml_use_internal_errors(true); 35 | $result = $processor->importStyleSheet($xslDoc); 36 | if (!$result) { 37 | foreach (libxml_get_errors() as $error) { 38 | echo "Libxml error: {$error->message}\n"; 39 | } 40 | } 41 | libxml_use_internal_errors(false); 42 | 43 | return $processor->transformToXml($xmlDoc); 44 | } 45 | 46 | } -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/addon/tern/worker.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | // declare global: tern, server 5 | 6 | var server; 7 | 8 | this.onmessage = function(e) { 9 | var data = e.data; 10 | switch (data.type) { 11 | case "init": return startServer(data.defs, data.plugins, data.scripts); 12 | case "add": return server.addFile(data.name, data.text); 13 | case "del": return server.delFile(data.name); 14 | case "req": return server.request(data.body, function(err, reqData) { 15 | postMessage({id: data.id, body: reqData, err: err && String(err)}); 16 | }); 17 | case "getFile": 18 | var c = pending[data.id]; 19 | delete pending[data.id]; 20 | return c(data.err, data.text); 21 | default: throw new Error("Unknown message type: " + data.type); 22 | } 23 | }; 24 | 25 | var nextId = 0, pending = {}; 26 | function getFile(file, c) { 27 | postMessage({type: "getFile", name: file, id: ++nextId}); 28 | pending[nextId] = c; 29 | } 30 | 31 | function startServer(defs, plugins, scripts) { 32 | if (scripts) importScripts.apply(null, scripts); 33 | 34 | server = new tern.Server({ 35 | getFile: getFile, 36 | async: true, 37 | defs: defs, 38 | plugins: plugins 39 | }); 40 | } 41 | 42 | var console = { 43 | log: function(v) { postMessage({type: "debug", message: v}); } 44 | }; 45 | -------------------------------------------------------------------------------- /Classes/ViewHelpers/GetDepositLicenseViewHelper.php: -------------------------------------------------------------------------------- 1 | registerArgument('uri', 'string', '', true); 32 | } 33 | 34 | /** 35 | * @return bool 36 | */ 37 | public function render() 38 | { 39 | $uri = $this->arguments['uri']; 40 | 41 | /** @var \EWW\Dpf\Domain\Model\DepositLicense $depositLicense */ 42 | $depositLicense = $this->depositLicenseRepository->findOneByUri($uri); 43 | return $depositLicense; 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /ext_emconf.php: -------------------------------------------------------------------------------- 1 | 'Kitodo.Publication', 21 | 'description' => '', 22 | 'category' => 'plugin', 23 | 'author' => 'effective WEBWORK GmbH', 24 | 'author_email' => 'info@effective-webwork.de', 25 | 'state' => 'stable', 26 | 'internal' => '', 27 | 'uploadfolder' => '1', 28 | 'createDirs' => 'uploads/tx_dpf', 29 | 'clearCacheOnLoad' => 0, 30 | 'version' => '5.2.2', 31 | 'constraints' => array( 32 | 'depends' => array( 33 | 'typo3' => '9.5.0-9.5.99', 34 | 'vhs' => '6.0.5', 35 | ), 36 | 'conflicts' => array( 37 | ), 38 | 'suggests' => array( 39 | ), 40 | ), 41 | ); 42 | -------------------------------------------------------------------------------- /Classes/Services/Logger/Logger.php: -------------------------------------------------------------------------------- 1 | getData(); 15 | 16 | $fieldValues = [ 17 | 'request_id' => $record->getRequestId(), 18 | 'time_micro' => $record->getCreated(), 19 | 'component' => $record->getComponent(), 20 | 'level' => $record->getLevel(), 21 | 'message' => $record->getMessage(), 22 | 'data' => json_encode($data) 23 | ]; 24 | 25 | $clientRepository = GeneralUtility::makeInstance(ClientRepository::class); 26 | $client = $clientRepository->findAll()->current(); 27 | 28 | if ($client) { 29 | $fieldValues['client_id'] = $client->getUid(); 30 | } else { 31 | throw new \Exception('Error: No client found.'); 32 | } 33 | 34 | $connection = GeneralUtility::makeInstance(ConnectionPool::class) 35 | ->getConnectionForTable($this->logTable); 36 | 37 | $connection->insert( 38 | $this->logTable, 39 | $fieldValues 40 | ); 41 | 42 | return true; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/mdeditor.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | loadMdEditor(); 3 | loadMdPreview(); 4 | }); 5 | 6 | var loadMdEditor = function () { 7 | $("div[id^=markdown_area_]").each(function () { 8 | var editorSettings = { 9 | height : "500px", 10 | path : "typo3conf/ext/dpf/Resources/Public/JavaScript/editormd/lib/", 11 | toolbarIcons : function() { 12 | // Using "||" set icons align right. 13 | return ["undo", "redo", "|", "bold", "del", "italic", "quote", "|", "h1", "h2", "h3", "h4", "h5", "h6", "|", "list-ul", "list-ol", "hr", "code", "preformatted-text", "code-block", "|", "help", "info", "||", "watch", "preview", "fullscreen"] 14 | }, 15 | }; 16 | 17 | if ($(this).find('textarea').attr('readonly') == 'readonly') { 18 | editorSettings.readOnly = true; 19 | } 20 | 21 | var editor = editormd($(this).attr('id'), editorSettings); 22 | }); 23 | } 24 | 25 | var loadMdPreview = function () { 26 | $("div[id^=markdown_preview_]").each(function () { 27 | var editor = editormd($(this).attr('id'), { 28 | height: "500px", 29 | readOnly: true, 30 | path: "typo3conf/ext/dpf/Resources/Public/JavaScript/editormd/lib/", 31 | toolbarIcons: function () { 32 | // Using "||" set icons align right. 33 | return [] 34 | }, 35 | }); 36 | }); 37 | } -------------------------------------------------------------------------------- /Documentation/Administrator/Index.rst: -------------------------------------------------------------------------------- 1 | .. ================================================== 2 | .. FOR YOUR INFORMATION 3 | .. -------------------------------------------------- 4 | .. -*- coding: utf-8 -*- with BOM. 5 | 6 | .. _admin-manual: 7 | 8 | Administrator Manual 9 | ==================== 10 | 11 | * Elasticsearch 1.3 12 | * Fedora 13 | * SWORD 14 | * Kitodo.Presentation (optional) 15 | 16 | .. _admin-installation: 17 | 18 | Installation 19 | ------------ 20 | 21 | #. Copy the extension to /typo3conf/ext/dpf/ and use composer to install all needed dependancies. 22 | #. Load the static template 23 | #. Add a folder to the page tree for configuration data 24 | #. Add a client dataset and set the configuration for your installation 25 | #. Add typoscript configuration (see configuration part in the documentation) 26 | #. Create document and form configuration (see configuration part in the documentation) 27 | 28 | Client dataset 29 | 30 | .. figure:: ../Images/Client_Dataset.png 31 | :width: 500px 32 | :alt: Client dataset 33 | 34 | Client dataset 35 | 36 | 37 | .. _admin-configuration: 38 | 39 | Configuration 40 | ------------- 41 | 42 | * Typoscript configuration 43 | 44 | .. code-block:: typoscript 45 | :linenos: 46 | 47 | plugin.tx_dpf { 48 | persistence { 49 | # cat=module.tx_dpf/link; type=int+; label=Default storage PID 50 | storagePid = 22 51 | } 52 | } 53 | module.tx_dpf.persistence < plugin.tx_dpf.persistence 54 | 55 | 56 | * Client data 57 | -------------------------------------------------------------------------------- /Classes/ViewHelpers/Format/MicrotimeViewHelper.php: -------------------------------------------------------------------------------- 1 | registerArgument('microtime', 'string', 'The microtime to format', true); 26 | $this->registerArgument('format', 'string', 'The format to use', false, 'd.m.Y H:i:s.u'); 27 | } 28 | 29 | public function render() 30 | { 31 | $microtime = (float)$this->arguments['microtime']; 32 | $format = $this->arguments['format']; 33 | 34 | $seconds = floor($microtime); 35 | $microseconds = sprintf("%06d", ($microtime - $seconds) * 1000000); 36 | 37 | $dateTime = new \DateTime(); 38 | $dateTime->setTimestamp($seconds); 39 | return $dateTime->format(str_replace('u', $microseconds, $format)); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/addon/lint/coffeescript-lint.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | // Depends on coffeelint.js from http://www.coffeelint.org/js/coffeelint.js 5 | 6 | // declare global: coffeelint 7 | 8 | (function(mod) { 9 | if (typeof exports == "object" && typeof module == "object") // CommonJS 10 | mod(require("../../lib/codemirror")); 11 | else if (typeof define == "function" && define.amd) // AMD 12 | define(["../../lib/codemirror"], mod); 13 | else // Plain browser env 14 | mod(CodeMirror); 15 | })(function(CodeMirror) { 16 | "use strict"; 17 | 18 | CodeMirror.registerHelper("lint", "coffeescript", function(text) { 19 | var found = []; 20 | var parseError = function(err) { 21 | var loc = err.lineNumber; 22 | found.push({from: CodeMirror.Pos(loc-1, 0), 23 | to: CodeMirror.Pos(loc, 0), 24 | severity: err.level, 25 | message: err.message}); 26 | }; 27 | try { 28 | var res = coffeelint.lint(text); 29 | for(var i = 0; i < res.length; i++) { 30 | parseError(res[i]); 31 | } 32 | } catch(e) { 33 | found.push({from: CodeMirror.Pos(e.location.first_line, 0), 34 | to: CodeMirror.Pos(e.location.last_line, e.location.last_column), 35 | severity: 'error', 36 | message: e.message}); 37 | } 38 | return found; 39 | }); 40 | 41 | }); 42 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/addon/runmode/colorize.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror"), require("./runmode")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror", "./runmode"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | var isBlock = /^(p|li|div|h\\d|pre|blockquote|td)$/; 15 | 16 | function textContent(node, out) { 17 | if (node.nodeType == 3) return out.push(node.nodeValue); 18 | for (var ch = node.firstChild; ch; ch = ch.nextSibling) { 19 | textContent(ch, out); 20 | if (isBlock.test(node.nodeType)) out.push("\n"); 21 | } 22 | } 23 | 24 | CodeMirror.colorize = function(collection, defaultMode) { 25 | if (!collection) collection = document.body.getElementsByTagName("pre"); 26 | 27 | for (var i = 0; i < collection.length; ++i) { 28 | var node = collection[i]; 29 | var mode = node.getAttribute("data-lang") || defaultMode; 30 | if (!mode) continue; 31 | 32 | var text = []; 33 | textContent(node, text); 34 | node.innerHTML = ""; 35 | CodeMirror.runMode(text.join(""), mode, node); 36 | 37 | node.className += " cm-s-default"; 38 | } 39 | }; 40 | }); 41 | -------------------------------------------------------------------------------- /Classes/ViewHelpers/IsValidDepositLicenseViewHelper.php: -------------------------------------------------------------------------------- 1 | registerArgument('uri', 'string', '', true); 32 | } 33 | 34 | /** 35 | * @return bool 36 | */ 37 | public function render() 38 | { 39 | $uri = $this->arguments['uri']; 40 | 41 | /** @var \EWW\Dpf\Domain\Model\DepositLicense $depositLicense */ 42 | $depositLicense = $this->depositLicenseRepository->findOneByUri($uri); 43 | return $depositLicense && $depositLicense instanceof \EWW\Dpf\Domain\Model\DepositLicense; 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /Classes/ViewHelpers/FailedMessagesCountViewHelper.php: -------------------------------------------------------------------------------- 1 | get(Security::class); 33 | 34 | /** @var MessageRepository $messageRepository */ 35 | $messageRepository = $objectManager->get(MessageRepository::class); 36 | 37 | if ($security->getUser()->getUserRole() === Security::ROLE_LIBRARIAN) { 38 | return $messageRepository->findAll()->count(); 39 | } else { 40 | return 0; 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Classes/Configuration/Settings.php: -------------------------------------------------------------------------------- 1 | settings = $configurationManager->getConfiguration( 35 | ConfigurationManagerInterface::CONFIGURATION_TYPE_FULL_TYPOSCRIPT 36 | ); 37 | } 38 | 39 | /** 40 | * @param $settingName 41 | * @return mixed|null 42 | */ 43 | function getSettingByName($settingName) { 44 | if (isset($this->settings['plugin.']['tx_dpf.']['settings.'][$settingName])) { 45 | return $this->settings['plugin.']['tx_dpf.']['settings.'][$settingName]; 46 | } 47 | 48 | return null; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /ext_conf_template.txt: -------------------------------------------------------------------------------- 1 | # cat=Fedora; type=string; label=LLL:EXT:dpf/Resources/Private/Language/locallang.xlf:config.fedoraHost 2 | fedoraHost = localhost 3 | 4 | # cat=Fedora; type=string; label=LLL:EXT:dpf/Resources/Private/Language/locallang.xlf:config.fedoraUser 5 | fedoraUser = user 6 | 7 | # cat=Fedora; type=string; label=LLL:EXT:dpf/Resources/Private/Language/locallang.xlf:config.fedoraPassword 8 | fedoraPassword = password 9 | 10 | # cat=Fedora; type=string; label=LLL:EXT:dpf/Resources/Private/Language/locallang.xlf:config.fedoraEndpoint 11 | fedoraEndpoint = fcrepo 12 | 13 | # cat=Fedora; type=string; label=LLL:EXT:dpf/Resources/Private/Language/locallang.xlf:config.fedoraRootContainer 14 | fedoraRootContainer = rest 15 | 16 | # cat=Fedora; type=string; label=LLL:EXT:dpf/Resources/Private/Language/locallang.xlf:config.fedoraCollectionNamespace 17 | fedoraCollectionNamespace = qucosa:all 18 | 19 | # cat=Elastic Search; type=string; label=LLL:EXT:dpf/Resources/Private/Language/locallang.xlf:config.elasticSearchHost 20 | elasticSearchHost = localhost 21 | 22 | # cat=Elastic Search; type=string; label=LLL:EXT:dpf/Resources/Private/Language/locallang.xlf:config.elasticSearchPort 23 | elasticSearchPort = 9200 24 | 25 | # cat=Upload; type=string; label=LLL:EXT:dpf/Resources/Private/Language/locallang.xlf:config.uploadDirectory 26 | uploadDirectory = uploads/tx_dpf 27 | 28 | # cat=Upload; type=string; label=LLL:EXT:dpf/Resources/Private/Language/locallang.xlf:config.uploadDomain 29 | uploadDomain = 30 | 31 | # cat=E-Mail; type=string; label=no reply email address 32 | noReplyAddress = noreply@qucosa.de 33 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/mode/ntriples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: NTriples mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 28 | 29 |
30 |

NTriples mode

31 |
32 | 39 |
40 | 41 | 44 |

MIME types defined: text/n-triples.

45 |
46 | -------------------------------------------------------------------------------- /Tests/Unit/Helper/DateTimePrecisionTest.php: -------------------------------------------------------------------------------- 1 | assertEquals("2024-06-12T08:31:11.570355Z", DateTimePrecision::reducePrecision($datetime)); 28 | } 29 | 30 | /** 31 | * @test 32 | */ 33 | public function No_truncation_on_six_digit_precision_() { 34 | $datetime = "2024-06-12T08:31:11.570355Z"; 35 | $this->assertEquals("2024-06-12T08:31:11.570355Z", DateTimePrecision::reducePrecision($datetime)); 36 | } 37 | 38 | /** 39 | * @test 40 | */ 41 | public function No_truncation_on_less_than_six_digit_precision_() { 42 | $datetime = "2024-06-12T08:31:11.570Z"; 43 | $this->assertEquals("2024-06-12T08:31:11.570Z", DateTimePrecision::reducePrecision($datetime)); 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /Classes/Services/Storage/Fedora/Exception/FedoraException.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | LFEditor 6 |
7 | 8 | 9 | archive 10 | 11 | 12 | contentType 13 | 14 | 15 | datastream identifier 16 | 17 | 18 | document 19 | 20 | 21 | download 22 | 23 | 24 | label 25 | 26 | 27 | link 28 | 29 | 30 | primary file 31 | 32 | 33 | status 34 | 35 | 36 | title 37 | 38 | 39 | File identifier 40 | 41 | 42 | Validation result 43 | 44 | 45 |
46 |
47 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/mode/spreadsheet/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Spreadsheet mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

Spreadsheet mode

28 |
29 | 30 | 37 | 38 |

MIME types defined: text/x-spreadsheet.

39 | 40 |

The Spreadsheet Mode

41 |

Created by Robert Plummer

42 |
43 | -------------------------------------------------------------------------------- /Classes/ViewHelpers/ShowStatusViewHelper.php: -------------------------------------------------------------------------------- 1 | registerArgument('status', 'string', 'The document state', true); 26 | } 27 | 28 | /** 29 | * Maps the internal states to more user friendly and localized state names. 30 | * @return string 31 | */ 32 | public function render() 33 | { 34 | $status = $this->arguments['status']; 35 | 36 | $aliasState = DocumentWorkflow::getAliasStateByLocalOrRepositoryState($status); 37 | 38 | if (empty($aliasState)) { 39 | // The status is likely to be an alias status. 40 | $aliasState = $status; 41 | } 42 | 43 | return \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate( 44 | "manager.documentList.state.".$aliasState, 45 | 'dpf', 46 | $arguments = null 47 | ); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/mode/http/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: HTTP mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

HTTP mode

27 | 28 | 29 |
39 | 40 | 43 | 44 |

MIME types defined: message/http.

45 |
46 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/theme/cobalt.css: -------------------------------------------------------------------------------- 1 | .cm-s-cobalt.CodeMirror { background: #002240; color: white; } 2 | .cm-s-cobalt div.CodeMirror-selected { background: #b36539 !important; } 3 | .cm-s-cobalt.CodeMirror ::selection { background: rgba(179, 101, 57, .99); } 4 | .cm-s-cobalt.CodeMirror ::-moz-selection { background: rgba(179, 101, 57, .99); } 5 | .cm-s-cobalt .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } 6 | .cm-s-cobalt .CodeMirror-guttermarker { color: #ffee80; } 7 | .cm-s-cobalt .CodeMirror-guttermarker-subtle { color: #d0d0d0; } 8 | .cm-s-cobalt .CodeMirror-linenumber { color: #d0d0d0; } 9 | .cm-s-cobalt .CodeMirror-cursor { border-left: 1px solid white !important; } 10 | 11 | .cm-s-cobalt span.cm-comment { color: #08f; } 12 | .cm-s-cobalt span.cm-atom { color: #845dc4; } 13 | .cm-s-cobalt span.cm-number, .cm-s-cobalt span.cm-attribute { color: #ff80e1; } 14 | .cm-s-cobalt span.cm-keyword { color: #ffee80; } 15 | .cm-s-cobalt span.cm-string { color: #3ad900; } 16 | .cm-s-cobalt span.cm-meta { color: #ff9d00; } 17 | .cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff; } 18 | .cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def { color: white; } 19 | .cm-s-cobalt span.cm-bracket { color: #d8d8d8; } 20 | .cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; } 21 | .cm-s-cobalt span.cm-link { color: #845dc4; } 22 | .cm-s-cobalt span.cm-error { color: #9d1e15; } 23 | 24 | .cm-s-cobalt .CodeMirror-activeline-background {background: #002D57 !important;} 25 | .cm-s-cobalt .CodeMirror-matchingbracket {outline:1px solid grey;color:white !important} 26 | -------------------------------------------------------------------------------- /Classes/ViewHelpers/ShowDocumentTypeViewHelper.php: -------------------------------------------------------------------------------- 1 | registerArgument('docType', 'string', 'The document type name', true); 32 | } 33 | 34 | /** 35 | * Gets the localized display name of the given document type. 36 | * @return string 37 | */ 38 | public function render() 39 | { 40 | $docType = $this->arguments['docType']; 41 | 42 | /** @var \EWW\Dpf\Domain\Model\DocumentType $documentType */ 43 | $documentType = $this->documentTypeRepository->findOneByName($docType); 44 | 45 | if ($documentType) { 46 | return $documentType->getDisplayName(); 47 | } 48 | 49 | return "-"; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Resources/Private/Partials/DocumentForm/FileUploadField.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | {namespace eww=EWW\Dpf\ViewHelpers} 16 | 17 | 18 | 19 | 20 | {f:translate(key: 'form_legend.primaryFile')} 21 | 22 | 23 | {f:translate(key: 'form_legend.secondaryFile')} 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/css/editormd.logo.min.css: -------------------------------------------------------------------------------- 1 | /*! Editor.md v1.5.0 | editormd.logo.min.css | Open source online markdown editor. | MIT License | By: Pandao | https://github.com/pandao/editor.md | 2015-06-09 */ 2 | /*! prefixes.scss v0.1.0 | Author: Pandao | https://github.com/pandao/prefixes.scss | MIT license | Copyright (c) 2015 */@font-face{font-family:editormd-logo;src:url(../fonts/editormd-logo.eot?-5y8q6h);src:url(.../fonts/editormd-logo.eot?#iefix-5y8q6h)format("embedded-opentype"),url(../fonts/editormd-logo.woff?-5y8q6h)format("woff"),url(../fonts/editormd-logo.ttf?-5y8q6h)format("truetype"),url(../fonts/editormd-logo.svg?-5y8q6h#icomoon)format("svg");font-weight:400;font-style:normal}.editormd-logo,.editormd-logo-1x,.editormd-logo-2x,.editormd-logo-3x,.editormd-logo-4x,.editormd-logo-5x,.editormd-logo-6x,.editormd-logo-7x,.editormd-logo-8x{font-family:editormd-logo;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;font-size:inherit;line-height:1;display:inline-block;text-rendering:auto;vertical-align:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.editormd-logo-1x:before,.editormd-logo-2x:before,.editormd-logo-3x:before,.editormd-logo-4x:before,.editormd-logo-5x:before,.editormd-logo-6x:before,.editormd-logo-7x:before,.editormd-logo-8x:before,.editormd-logo:before{content:"\e1987"}.editormd-logo-1x{font-size:1em}.editormd-logo-lg{font-size:1.2em}.editormd-logo-2x{font-size:2em}.editormd-logo-3x{font-size:3em}.editormd-logo-4x{font-size:4em}.editormd-logo-5x{font-size:5em}.editormd-logo-6x{font-size:6em}.editormd-logo-7x{font-size:7em}.editormd-logo-8x{font-size:8em}.editormd-logo-color{color:#2196F3} -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/mode/solr/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Solr mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 20 | 33 | 34 |
35 |

Solr mode

36 | 37 |
38 | 47 |
48 | 49 | 55 | 56 |

MIME types defined: text/x-solr.

57 |
58 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/mode/z80/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Z80 assembly mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Z80 assembly mode

27 | 28 | 29 |
44 | 45 | 50 | 51 |

MIME type defined: text/x-z80.

52 |
53 | -------------------------------------------------------------------------------- /Resources/Private/Partials/Search/SearchControl.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 |
17 |

{f:translate(key: 'manager.control.search')}

18 |
19 |
20 | 22 | 23 | 24 | 25 | 27 | 28 | 29 | 30 |
31 |
32 |
-------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/mode/ecl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: ECL mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

ECL mode

27 |
45 | 48 | 49 |

Based on CodeMirror's clike mode. For more information see HPCC Systems web site.

50 |

MIME types defined: text/x-ecl.

51 | 52 |
53 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/mode/rust/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Rust mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Rust mode

27 | 28 | 29 |
52 | 53 | 58 | 59 |

MIME types defined: text/x-rustsrc.

60 |
61 | -------------------------------------------------------------------------------- /Resources/Private/Partials/Document/AlertModal.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | 17 | 37 | 38 | -------------------------------------------------------------------------------- /Resources/Private/Partials/Workspace/UploadError.html: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | 17 | 26 | 27 | 28 | 29 | 42 | 43 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/addon/scroll/simplescrollbars.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-simplescroll-horizontal div, .CodeMirror-simplescroll-vertical div { 2 | position: absolute; 3 | background: #ccc; 4 | -moz-box-sizing: border-box; 5 | box-sizing: border-box; 6 | border: 1px solid #bbb; 7 | border-radius: 2px; 8 | } 9 | 10 | .CodeMirror-simplescroll-horizontal, .CodeMirror-simplescroll-vertical { 11 | position: absolute; 12 | z-index: 6; 13 | background: #eee; 14 | } 15 | 16 | .CodeMirror-simplescroll-horizontal { 17 | bottom: 0; left: 0; 18 | height: 8px; 19 | } 20 | .CodeMirror-simplescroll-horizontal div { 21 | bottom: 0; 22 | height: 100%; 23 | } 24 | 25 | .CodeMirror-simplescroll-vertical { 26 | right: 0; top: 0; 27 | width: 8px; 28 | } 29 | .CodeMirror-simplescroll-vertical div { 30 | right: 0; 31 | width: 100%; 32 | } 33 | 34 | 35 | .CodeMirror-overlayscroll .CodeMirror-scrollbar-filler, .CodeMirror-overlayscroll .CodeMirror-gutter-filler { 36 | display: none; 37 | } 38 | 39 | .CodeMirror-overlayscroll-horizontal div, .CodeMirror-overlayscroll-vertical div { 40 | position: absolute; 41 | background: #bcd; 42 | border-radius: 3px; 43 | } 44 | 45 | .CodeMirror-overlayscroll-horizontal, .CodeMirror-overlayscroll-vertical { 46 | position: absolute; 47 | z-index: 6; 48 | } 49 | 50 | .CodeMirror-overlayscroll-horizontal { 51 | bottom: 0; left: 0; 52 | height: 6px; 53 | } 54 | .CodeMirror-overlayscroll-horizontal div { 55 | bottom: 0; 56 | height: 100%; 57 | } 58 | 59 | .CodeMirror-overlayscroll-vertical { 60 | right: 0; top: 0; 61 | width: 6px; 62 | } 63 | .CodeMirror-overlayscroll-vertical div { 64 | right: 0; 65 | width: 100%; 66 | } 67 | -------------------------------------------------------------------------------- /Resources/Public/JavaScript/editormd/lib/codemirror/theme/monokai.css: -------------------------------------------------------------------------------- 1 | /* Based on Sublime Text's Monokai theme */ 2 | 3 | .cm-s-monokai.CodeMirror {background: #272822; color: #f8f8f2;} 4 | .cm-s-monokai div.CodeMirror-selected {background: #49483E !important;} 5 | .cm-s-monokai.CodeMirror ::selection { background: rgba(73, 72, 62, .99); } 6 | .cm-s-monokai.CodeMirror ::-moz-selection { background: rgba(73, 72, 62, .99); } 7 | .cm-s-monokai .CodeMirror-gutters {background: #272822; border-right: 0px;} 8 | .cm-s-monokai .CodeMirror-guttermarker { color: white; } 9 | .cm-s-monokai .CodeMirror-guttermarker-subtle { color: #d0d0d0; } 10 | .cm-s-monokai .CodeMirror-linenumber {color: #d0d0d0;} 11 | .cm-s-monokai .CodeMirror-cursor {border-left: 1px solid #f8f8f0 !important;} 12 | 13 | .cm-s-monokai span.cm-comment {color: #75715e;} 14 | .cm-s-monokai span.cm-atom {color: #ae81ff;} 15 | .cm-s-monokai span.cm-number {color: #ae81ff;} 16 | 17 | .cm-s-monokai span.cm-property, .cm-s-monokai span.cm-attribute {color: #a6e22e;} 18 | .cm-s-monokai span.cm-keyword {color: #f92672;} 19 | .cm-s-monokai span.cm-string {color: #e6db74;} 20 | 21 | .cm-s-monokai span.cm-variable {color: #a6e22e;} 22 | .cm-s-monokai span.cm-variable-2 {color: #9effff;} 23 | .cm-s-monokai span.cm-def {color: #fd971f;} 24 | .cm-s-monokai span.cm-bracket {color: #f8f8f2;} 25 | .cm-s-monokai span.cm-tag {color: #f92672;} 26 | .cm-s-monokai span.cm-link {color: #ae81ff;} 27 | .cm-s-monokai span.cm-error {background: #f92672; color: #f8f8f0;} 28 | 29 | .cm-s-monokai .CodeMirror-activeline-background {background: #373831 !important;} 30 | .cm-s-monokai .CodeMirror-matchingbracket { 31 | text-decoration: underline; 32 | color: white !important; 33 | } 34 | --------------------------------------------------------------------------------