├── .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 |
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 |
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 |
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 |
27 |
--------------------------------------------------------------------------------
/Classes/ViewHelpers/GetTypo3ModeViewHelper.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
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 |
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 | [](https://travis-ci.org/codemirror/CodeMirror)
3 | [](https://www.npmjs.org/package/codemirror)
4 | [Funding status: ](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 |
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 |
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 |
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 |
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 | Status
18 |
19 |
20 |
21 | {stateName}
22 |
23 |
--------------------------------------------------------------------------------
/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 |
20 | {documentType.displayName}
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Classes/Services/Storage/Exception/ConnectionException.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
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 | {listName}
18 |
19 |
20 |
21 |
22 | {label}
23 |
24 |
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 |
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 |
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 |
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 | Sprache
18 |
19 |
20 |
23 | {f:translate(key: 'manager.locallang.{language}')}
24 |
25 |
--------------------------------------------------------------------------------
/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 |
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 |
23 | {f:translate(key: 'manager.workspace.hideDiscarded')}
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Resources/Private/Partials/Workspace/ShowBookmarksOnly.html:
--------------------------------------------------------------------------------
1 |
2 |
14 |
15 |
16 |
17 |
18 |
22 |
23 | {f:translate(key: 'manager.workspace.showBookmarksOnly')}
24 |
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 | {fieldItem.displayName}
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | *
27 |
28 |
29 |
--------------------------------------------------------------------------------
/Resources/Private/Language/de.locallang_csh_tx_dpf_domain_model_documenttransferlog.xlf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
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 |
23 |
24 |
26 |
27 |
29 |
30 |
31 | {f:translate(key: 'search.form.button.search')}
32 |
33 |
34 |
35 |
36 |
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 |
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 |
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 |
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 | =IF(A1:B2, TRUE, FALSE) / 100
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 |
30 | POST /somewhere HTTP/1.1
31 | Host: example.com
32 | If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
33 | Content-Type: application/x-www-form-urlencoded;
34 | charset=utf-8
35 | User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.11 (KHTML, like Gecko) Ubuntu/12.04 Chromium/20.0.1132.47 Chrome/20.0.1132.47 Safari/536.11
36 |
37 | This is the request body!
38 |
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 |
41 |
42 | {f:translate(key: 'form_button.remove_file', arguments: {0: ''})}
43 |
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 | author:Camus
39 |
40 | title:"The Rebel" and author:Camus
41 |
42 | philosophy:Existentialism -author:Kierkegaard
43 |
44 | hardToSpell:Dostoevsky~
45 |
46 | published:[194* TO 1960] and author:(Sartre or "Simone de Beauvoir")
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 |
30 | #include "ti83plus.inc"
31 | #define progStart $9D95
32 | .org progStart-2
33 | .db $BB,$6D
34 | bcall(_ClrLCDFull)
35 | ld HL, 0
36 | ld (PenCol), HL
37 | ld HL, Message
38 | bcall(_PutS) ; Displays the string
39 | bcall(_NewLine)
40 | ret
41 | Message:
42 | .db "Hello world!",0
43 |
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 |
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 |
28 | /*
29 | sample useless code to demonstrate ecl syntax highlighting
30 | this is a multiline comment!
31 | */
32 |
33 | // this is a singleline comment!
34 |
35 | import ut;
36 | r :=
37 | record
38 | string22 s1 := '123';
39 | integer4 i1 := 123;
40 | end;
41 | #option('tmp', true);
42 | d := dataset('tmp::qb', r, thor);
43 | output(d);
44 |
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 |
30 | // Demo code.
31 |
32 | type foo = int;
33 | enum bar {
34 | some(int, foo),
35 | none
36 | }
37 |
38 | fn check_crate(x: int) {
39 | let v = 10;
40 | alt foo {
41 | 1 to 3 {
42 | print_foo();
43 | if x {
44 | blah() + 10;
45 | }
46 | }
47 | (x, y) { "bye" }
48 | _ { "hi" }
49 | }
50 | }
51 |
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 |
--------------------------------------------------------------------------------