mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-09 19:13:08 +00:00
Merge branch 'master' into w2p-64961_Edit-bitstream-page
Conflicts: resources/i18n/en.json5 src/app/+item-page/edit-item-page/edit-item-page.module.ts src/app/core/data/item-data.service.ts src/app/shared/shared.module.ts
This commit is contained in:
@@ -20,8 +20,10 @@ before_install:
|
|||||||
- git clone https://github.com/DSpace-Labs/DSpace-Docker-Images.git
|
- git clone https://github.com/DSpace-Labs/DSpace-Docker-Images.git
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- docker-compose version
|
# Start up DSpace 7 using the entities database dump
|
||||||
- docker-compose -f DSpace-Docker-Images/docker-compose-files/dspace-compose/d7.travis.yml up -d
|
- docker-compose -f DSpace-Docker-Images/docker-compose-files/dspace-compose-v2/d7.travis.ci.yml up -d
|
||||||
|
# Use the dspace-cli image to populate the assetstore. Trigger a discovery and oai update
|
||||||
|
- docker-compose -f DSpace-Docker-Images/docker-compose-files/dspace-compose-v2/d7.cli.yml -f DSpace-Docker-Images/docker-compose-files/dspace-compose-v2/d7.cli.assetstore.yml run --rm dspace-cli
|
||||||
- travis_retry yarn install
|
- travis_retry yarn install
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
@@ -30,13 +32,14 @@ before_script:
|
|||||||
#- curl http://localhost:8080/
|
#- curl http://localhost:8080/
|
||||||
|
|
||||||
after_script:
|
after_script:
|
||||||
- docker-compose -f DSpace-Docker-Images/docker-compose-files/dspace-compose/d7.travis.yml down
|
- docker-compose -f DSpace-Docker-Images/docker-compose-files/dspace-compose-v2/d7.travis.ci.yml down
|
||||||
|
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
sources:
|
sources:
|
||||||
- google-chrome
|
- google-chrome
|
||||||
packages:
|
packages:
|
||||||
|
- dpkg
|
||||||
- google-chrome-stable
|
- google-chrome-stable
|
||||||
|
|
||||||
language: node_js
|
language: node_js
|
||||||
|
@@ -10,6 +10,9 @@
|
|||||||
"engines": {
|
"engines": {
|
||||||
"node": "8.* || >= 10.*"
|
"node": "8.* || >= 10.*"
|
||||||
},
|
},
|
||||||
|
"resolutions": {
|
||||||
|
"set-value": ">= 2.0.1"
|
||||||
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"global": "npm install -g @angular/cli marked node-gyp nodemon node-nightly npm-check-updates npm-run-all rimraf typescript ts-node typedoc webpack webpack-bundle-analyzer pm2 rollup",
|
"global": "npm install -g @angular/cli marked node-gyp nodemon node-nightly npm-check-updates npm-run-all rimraf typescript ts-node typedoc webpack webpack-bundle-analyzer pm2 rollup",
|
||||||
"clean:coverage": "rimraf coverage",
|
"clean:coverage": "rimraf coverage",
|
||||||
@@ -112,6 +115,7 @@
|
|||||||
"https": "1.0.0",
|
"https": "1.0.0",
|
||||||
"js-cookie": "2.2.0",
|
"js-cookie": "2.2.0",
|
||||||
"js.clone": "0.0.3",
|
"js.clone": "0.0.3",
|
||||||
|
"json5": "^2.1.0",
|
||||||
"jsonschema": "1.2.2",
|
"jsonschema": "1.2.2",
|
||||||
"jwt-decode": "^2.2.0",
|
"jwt-decode": "^2.2.0",
|
||||||
"methods": "1.1.2",
|
"methods": "1.1.2",
|
||||||
@@ -157,6 +161,7 @@
|
|||||||
"@types/hammerjs": "2.0.35",
|
"@types/hammerjs": "2.0.35",
|
||||||
"@types/jasmine": "^2.8.6",
|
"@types/jasmine": "^2.8.6",
|
||||||
"@types/js-cookie": "2.1.0",
|
"@types/js-cookie": "2.1.0",
|
||||||
|
"@types/json5": "^0.0.30",
|
||||||
"@types/lodash": "^4.14.110",
|
"@types/lodash": "^4.14.110",
|
||||||
"@types/memory-cache": "0.2.0",
|
"@types/memory-cache": "0.2.0",
|
||||||
"@types/mime": "2.0.0",
|
"@types/mime": "2.0.0",
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
"404.help": "Nepodařilo se najít stránku, kterou hledáte. Je možné, že stránka byla přesunuta nebo smazána. Pomocí tlačítka níže můžete přejít na domovskou stránku. ",
|
"404.help": "Nepodařilo se najít stránku, kterou hledáte. Je možné, že stránka byla přesunuta nebo smazána. Pomocí tlačítka níže můžete přejít na domovskou stránku. ",
|
||||||
"404.link.home-page": "Přejít na domovskou stránku",
|
"404.link.home-page": "Přejít na domovskou stránku",
|
||||||
"404.page-not-found": "stránka nenalezena",
|
"404.page-not-found": "stránka nenalezena",
|
||||||
|
|
||||||
"admin.registries.bitstream-formats.description": "Tento seznam formátů souborů poskytuje informace o známých formátech a o úrovni jejich podpory.",
|
"admin.registries.bitstream-formats.description": "Tento seznam formátů souborů poskytuje informace o známých formátech a o úrovni jejich podpory.",
|
||||||
"admin.registries.bitstream-formats.formats.no-items": "Žádné formáty souborů.",
|
"admin.registries.bitstream-formats.formats.no-items": "Žádné formáty souborů.",
|
||||||
"admin.registries.bitstream-formats.formats.table.internal": "interní",
|
"admin.registries.bitstream-formats.formats.table.internal": "interní",
|
||||||
@@ -13,29 +14,36 @@
|
|||||||
"admin.registries.bitstream-formats.formats.table.supportLevel.head": "Úroveň podpory",
|
"admin.registries.bitstream-formats.formats.table.supportLevel.head": "Úroveň podpory",
|
||||||
"admin.registries.bitstream-formats.head": "Registr formátů souborů",
|
"admin.registries.bitstream-formats.head": "Registr formátů souborů",
|
||||||
"admin.registries.bitstream-formats.title": "DSpace Angular :: Registr formátů souborů",
|
"admin.registries.bitstream-formats.title": "DSpace Angular :: Registr formátů souborů",
|
||||||
"admin.registries.metadata.description": "Registr metadat je seznam všech metadatových polí dostupných v repozitáři. Tyto pole mohou být rozdělena do více schémat. DSpace však vyžaduje použití schématu kvalifikový Dublin Core.",
|
|
||||||
|
"admin.registries.metadata.description": "Registr metadat je seznam všech metadatových polí dostupných v repozitáři. Tyto pole mohou být rozdělena do více schémat. DSpace však vyžaduje použití schématu Kvalifikovaný Dublin Core.",
|
||||||
"admin.registries.metadata.head": "Registr metadat",
|
"admin.registries.metadata.head": "Registr metadat",
|
||||||
"admin.registries.metadata.schemas.no-items": "Žádná schémata metadat.",
|
"admin.registries.metadata.schemas.no-items": "Žádná schémata metadat.",
|
||||||
"admin.registries.metadata.schemas.table.id": "ID",
|
"admin.registries.metadata.schemas.table.id": "ID",
|
||||||
"admin.registries.metadata.schemas.table.name": "Název",
|
"admin.registries.metadata.schemas.table.name": "Název",
|
||||||
"admin.registries.metadata.schemas.table.namespace": "Jmenný prostor",
|
"admin.registries.metadata.schemas.table.namespace": "Jmenný prostor",
|
||||||
"admin.registries.metadata.title": "DSpace Angular :: Registr metadat",
|
"admin.registries.metadata.title": "DSpace Angular :: Registr metadat",
|
||||||
|
|
||||||
"admin.registries.schema.description": "Toto je schéma metadat pro „{{namespace}}“.",
|
"admin.registries.schema.description": "Toto je schéma metadat pro „{{namespace}}“.",
|
||||||
"admin.registries.schema.fields.head": "Pole schématu metadat",
|
"admin.registries.schema.fields.head": "Pole schématu metadat",
|
||||||
"admin.registries.schema.fields.no-items": "Žádná metadatová pole.",
|
"admin.registries.schema.fields.no-items": "Žádná metadatová pole.",
|
||||||
"admin.registries.schema.fields.table.field": "Pole",
|
"admin.registries.schema.fields.table.field": "Pole",
|
||||||
"admin.registries.schema.fields.table.scopenote": "Poznámka o rozsahu",
|
"admin.registries.schema.fields.table.scopenote": "Poznámka o rozsahu",
|
||||||
"admin.registries.schema.head": "Metadata Schema",
|
"admin.registries.schema.head": "Schéma metadat",
|
||||||
"admin.registries.schema.title": "DSpace Angular :: Registr schémat metadat",
|
"admin.registries.schema.title": "DSpace Angular :: Registr schémat metadat",
|
||||||
|
|
||||||
"auth.errors.invalid-user": "Neplatná e-mailová adresa nebo heslo.",
|
"auth.errors.invalid-user": "Neplatná e-mailová adresa nebo heslo.",
|
||||||
"auth.messages.expired": "Vaše relace vypršela. Prosím, znova se přihlaste.",
|
"auth.messages.expired": "Vaše relace vypršela. Prosím, znova se přihlaste.",
|
||||||
|
|
||||||
"browse.title": "Prohlížíte {{ collection }} dle {{ field }} {{ value }}",
|
"browse.title": "Prohlížíte {{ collection }} dle {{ field }} {{ value }}",
|
||||||
|
|
||||||
"collection.page.browse.recent.head": "Poslední příspěvky",
|
"collection.page.browse.recent.head": "Poslední příspěvky",
|
||||||
"collection.page.license": "Licence",
|
"collection.page.license": "Licence",
|
||||||
"collection.page.news": "Novinky",
|
"collection.page.news": "Novinky",
|
||||||
|
|
||||||
"community.page.license": "Licence",
|
"community.page.license": "Licence",
|
||||||
"community.page.news": "Novinky",
|
"community.page.news": "Novinky",
|
||||||
"community.sub-collection-list.head": "Kolekce v této komunitě",
|
"community.sub-collection-list.head": "Kolekce v této komunitě",
|
||||||
|
|
||||||
"error.browse-by": "Chyba během stahování záznamů",
|
"error.browse-by": "Chyba během stahování záznamů",
|
||||||
"error.collection": "Chyba během stahování kolekce",
|
"error.collection": "Chyba během stahování kolekce",
|
||||||
"error.community": "Chyba během stahování komunity",
|
"error.community": "Chyba během stahování komunity",
|
||||||
@@ -48,9 +56,11 @@
|
|||||||
"error.top-level-communities": "Chyba během stahování komunit nejvyšší úrovně",
|
"error.top-level-communities": "Chyba během stahování komunit nejvyšší úrovně",
|
||||||
"error.validation.license.notgranted": "Pro dokončení zaslání Musíte udělit licenci. Pokud v tuto chvíli tuto licenci nemůžete udělit, můžete svou práci uložit a později se k svému příspěveku vrátit nebo jej smazat.",
|
"error.validation.license.notgranted": "Pro dokončení zaslání Musíte udělit licenci. Pokud v tuto chvíli tuto licenci nemůžete udělit, můžete svou práci uložit a později se k svému příspěveku vrátit nebo jej smazat.",
|
||||||
"error.validation.pattern": "Tento vstup je omezen dle vzoru: {{ pattern }}.",
|
"error.validation.pattern": "Tento vstup je omezen dle vzoru: {{ pattern }}.",
|
||||||
|
|
||||||
"footer.copyright": "copyright © 2002-{{ year }}",
|
"footer.copyright": "copyright © 2002-{{ year }}",
|
||||||
"footer.link.dspace": "software DSpace",
|
"footer.link.dspace": "software DSpace",
|
||||||
"footer.link.duraspace": "DuraSpace",
|
"footer.link.duraspace": "DuraSpace",
|
||||||
|
|
||||||
"form.cancel": "Zrušit",
|
"form.cancel": "Zrušit",
|
||||||
"form.first-name": "Křestní jméno",
|
"form.first-name": "Křestní jméno",
|
||||||
"form.group-collapse": "Sbalit",
|
"form.group-collapse": "Sbalit",
|
||||||
@@ -64,11 +74,13 @@
|
|||||||
"form.remove": "Smazat",
|
"form.remove": "Smazat",
|
||||||
"form.search": "Hledat",
|
"form.search": "Hledat",
|
||||||
"form.submit": "Odeslat",
|
"form.submit": "Odeslat",
|
||||||
|
|
||||||
"home.description": "",
|
"home.description": "",
|
||||||
"home.title": "DSpace Angular :: Domů",
|
"home.title": "DSpace Angular :: Domů",
|
||||||
"home.top-level-communities.head": "Komunity v DSpace",
|
"home.top-level-communities.head": "Komunity v DSpace",
|
||||||
"home.top-level-communities.help": "Vybráním komunity můžete prohlížet její kolekce.",
|
"home.top-level-communities.help": "Vybráním komunity můžete prohlížet její kolekce.",
|
||||||
"item.page.abstract": "Abstract",
|
|
||||||
|
"item.page.abstract": "Abstrakt",
|
||||||
"item.page.author": "Autor",
|
"item.page.author": "Autor",
|
||||||
"item.page.collections": "Kolekce",
|
"item.page.collections": "Kolekce",
|
||||||
"item.page.date": "Datum",
|
"item.page.date": "Datum",
|
||||||
@@ -81,6 +93,7 @@
|
|||||||
"item.page.link.full": "Úplný záznam",
|
"item.page.link.full": "Úplný záznam",
|
||||||
"item.page.link.simple": "Minimální záznam",
|
"item.page.link.simple": "Minimální záznam",
|
||||||
"item.page.uri": "URI",
|
"item.page.uri": "URI",
|
||||||
|
|
||||||
"loading.browse-by": "Načítají se záznamy...",
|
"loading.browse-by": "Načítají se záznamy...",
|
||||||
"loading.collection": "Načítá se kolekce...",
|
"loading.collection": "Načítá se kolekce...",
|
||||||
"loading.community": "Načítá se komunita...",
|
"loading.community": "Načítá se komunita...",
|
||||||
@@ -91,6 +104,7 @@
|
|||||||
"loading.search-results": "Načítají se výsledky hledání...",
|
"loading.search-results": "Načítají se výsledky hledání...",
|
||||||
"loading.sub-collections": "Načítají se subkolekce...",
|
"loading.sub-collections": "Načítají se subkolekce...",
|
||||||
"loading.top-level-communities": "Načítají se komunity nejvyšší úrovně...",
|
"loading.top-level-communities": "Načítají se komunity nejvyšší úrovně...",
|
||||||
|
|
||||||
"login.form.email": "E-mailová adresa",
|
"login.form.email": "E-mailová adresa",
|
||||||
"login.form.forgot-password": "Zapomněli jste své heslo?",
|
"login.form.forgot-password": "Zapomněli jste své heslo?",
|
||||||
"login.form.header": "Prosím, přihlaste se do DSpace",
|
"login.form.header": "Prosím, přihlaste se do DSpace",
|
||||||
@@ -98,22 +112,29 @@
|
|||||||
"login.form.password": "Heslo",
|
"login.form.password": "Heslo",
|
||||||
"login.form.submit": "Přihlásit se",
|
"login.form.submit": "Přihlásit se",
|
||||||
"login.title": "Přihlásit se",
|
"login.title": "Přihlásit se",
|
||||||
|
|
||||||
"logout.form.header": "Odhlásit se z DSpace",
|
"logout.form.header": "Odhlásit se z DSpace",
|
||||||
"logout.form.submit": "Odhlásit se",
|
"logout.form.submit": "Odhlásit se",
|
||||||
"logout.title": "Odhlásit se",
|
"logout.title": "Odhlásit se",
|
||||||
|
|
||||||
"nav.home": "Domů",
|
"nav.home": "Domů",
|
||||||
"nav.login": "Přihlásit se",
|
"nav.login": "Přihlásit se",
|
||||||
"nav.logout": "Odhlásit se",
|
"nav.logout": "Odhlásit se",
|
||||||
|
|
||||||
"pagination.results-per-page": "Výsledků na stránku",
|
"pagination.results-per-page": "Výsledků na stránku",
|
||||||
"pagination.showing.detail": "{{ range }} z {{ total }}",
|
"pagination.showing.detail": "{{ range }} z {{ total }}",
|
||||||
"pagination.showing.label": "Zobrazují se záznamy ",
|
"pagination.showing.label": "Zobrazují se záznamy ",
|
||||||
"pagination.sort-direction": "Seřazení",
|
"pagination.sort-direction": "Seřazení",
|
||||||
|
|
||||||
"search.description": "",
|
"search.description": "",
|
||||||
|
"search.title": "DSpace Angular :: Hledat",
|
||||||
|
|
||||||
"search.filters.applied.f.author": "Autor",
|
"search.filters.applied.f.author": "Autor",
|
||||||
"search.filters.applied.f.dateIssued.max": "Do data",
|
"search.filters.applied.f.dateIssued.max": "Do data",
|
||||||
"search.filters.applied.f.dateIssued.min": "Od data",
|
"search.filters.applied.f.dateIssued.min": "Od data",
|
||||||
"search.filters.applied.f.has_content_in_original_bundle": "Má soubory",
|
"search.filters.applied.f.has_content_in_original_bundle": "Má soubory",
|
||||||
"search.filters.applied.f.subject": "Předmět",
|
"search.filters.applied.f.subject": "Předmět",
|
||||||
|
|
||||||
"search.filters.filter.author.head": "Autor",
|
"search.filters.filter.author.head": "Autor",
|
||||||
"search.filters.filter.author.placeholder": "Jméno autora",
|
"search.filters.filter.author.placeholder": "Jméno autora",
|
||||||
"search.filters.filter.dateIssued.head": "Datum",
|
"search.filters.filter.dateIssued.head": "Datum",
|
||||||
@@ -126,12 +147,16 @@
|
|||||||
"search.filters.filter.show-more": "Zobrazit více",
|
"search.filters.filter.show-more": "Zobrazit více",
|
||||||
"search.filters.filter.subject.head": "Předmět",
|
"search.filters.filter.subject.head": "Předmět",
|
||||||
"search.filters.filter.subject.placeholder": "Předmět",
|
"search.filters.filter.subject.placeholder": "Předmět",
|
||||||
|
|
||||||
"search.filters.head": "Filtry",
|
"search.filters.head": "Filtry",
|
||||||
"search.filters.reset": "Obnovit filtry",
|
"search.filters.reset": "Obnovit filtry",
|
||||||
|
|
||||||
"search.form.search": "Hledat",
|
"search.form.search": "Hledat",
|
||||||
"search.form.search_dspace": "Hledat v DSpace",
|
"search.form.search_dspace": "Hledat v DSpace",
|
||||||
|
|
||||||
"search.results.head": "Výsledky hledání",
|
"search.results.head": "Výsledky hledání",
|
||||||
"search.results.no-results": "Nebyli nalezeny žádné výsledky",
|
"search.results.no-results": "Nebyli nalezeny žádné výsledky",
|
||||||
|
|
||||||
"search.sidebar.close": "Zpět na výsledky",
|
"search.sidebar.close": "Zpět na výsledky",
|
||||||
"search.sidebar.filters.title": "Filtry",
|
"search.sidebar.filters.title": "Filtry",
|
||||||
"search.sidebar.open": "Vyhledávací nástroje",
|
"search.sidebar.open": "Vyhledávací nástroje",
|
||||||
@@ -139,11 +164,13 @@
|
|||||||
"search.sidebar.settings.rpp": "Výsledků na stránku",
|
"search.sidebar.settings.rpp": "Výsledků na stránku",
|
||||||
"search.sidebar.settings.sort-by": "Řadit dle",
|
"search.sidebar.settings.sort-by": "Řadit dle",
|
||||||
"search.sidebar.settings.title": "Nastavení",
|
"search.sidebar.settings.title": "Nastavení",
|
||||||
"search.title": "DSpace Angular :: Hledat",
|
|
||||||
"search.view-switch.show-grid": "Zobrazit mřížku",
|
"search.view-switch.show-grid": "Zobrazit mřížku",
|
||||||
"search.view-switch.show-list": "Zobrazit seznam",
|
"search.view-switch.show-list": "Zobrazit seznam",
|
||||||
|
|
||||||
"sorting.dc.title.ASC": "Název vzestupně",
|
"sorting.dc.title.ASC": "Název vzestupně",
|
||||||
"sorting.dc.title.DESC": "Název sestupně",
|
"sorting.dc.title.DESC": "Název sestupně",
|
||||||
"sorting.score.DESC": "Relevance",
|
"sorting.score.DESC": "Relevance",
|
||||||
"title": "DSpace"
|
|
||||||
|
"title": "DSpace",
|
||||||
}
|
}
|
@@ -2,6 +2,7 @@
|
|||||||
"404.help": "Die Seite, die Sie aufrufen wollten, konnte nicht gefunden werden. Sie könnte verschoben oder gelöscht worden sein. Mit dem Link unten kommen Sie zurück zur Startseite. ",
|
"404.help": "Die Seite, die Sie aufrufen wollten, konnte nicht gefunden werden. Sie könnte verschoben oder gelöscht worden sein. Mit dem Link unten kommen Sie zurück zur Startseite. ",
|
||||||
"404.link.home-page": "Zurück zur Startseite",
|
"404.link.home-page": "Zurück zur Startseite",
|
||||||
"404.page-not-found": "Seite nicht gefunden",
|
"404.page-not-found": "Seite nicht gefunden",
|
||||||
|
|
||||||
"admin.registries.bitstream-formats.description": "Diese Liste enhtält die in diesem Repositorium zulässigen Dateiformate und den jeweiligen Unterstützungsgrad.",
|
"admin.registries.bitstream-formats.description": "Diese Liste enhtält die in diesem Repositorium zulässigen Dateiformate und den jeweiligen Unterstützungsgrad.",
|
||||||
"admin.registries.bitstream-formats.formats.no-items": "Es gibt keine Formate in dieser Referenzliste.",
|
"admin.registries.bitstream-formats.formats.no-items": "Es gibt keine Formate in dieser Referenzliste.",
|
||||||
"admin.registries.bitstream-formats.formats.table.internal": "intern",
|
"admin.registries.bitstream-formats.formats.table.internal": "intern",
|
||||||
@@ -13,6 +14,7 @@
|
|||||||
"admin.registries.bitstream-formats.formats.table.supportLevel.head": "Unterstützungsgrad",
|
"admin.registries.bitstream-formats.formats.table.supportLevel.head": "Unterstützungsgrad",
|
||||||
"admin.registries.bitstream-formats.head": "Referenzliste der Dateiformate",
|
"admin.registries.bitstream-formats.head": "Referenzliste der Dateiformate",
|
||||||
"admin.registries.bitstream-formats.title": "DSpace Angular :: Referenzliste der Dateiformate",
|
"admin.registries.bitstream-formats.title": "DSpace Angular :: Referenzliste der Dateiformate",
|
||||||
|
|
||||||
"admin.registries.metadata.description": "Die Metadatenreferenzliste beinhaltet alle Metadatenfelder, die zur Verfügung stehen. Die Felder können in unterschiedlichen Schemata enthalten sein. Nichtsdestotrotz benötigt DSpace mindestens qualifiziertes Dublin Core.",
|
"admin.registries.metadata.description": "Die Metadatenreferenzliste beinhaltet alle Metadatenfelder, die zur Verfügung stehen. Die Felder können in unterschiedlichen Schemata enthalten sein. Nichtsdestotrotz benötigt DSpace mindestens qualifiziertes Dublin Core.",
|
||||||
"admin.registries.metadata.head": "Metadatenreferenzliste",
|
"admin.registries.metadata.head": "Metadatenreferenzliste",
|
||||||
"admin.registries.metadata.schemas.no-items": "Es gbit keine Metadatenschemata.",
|
"admin.registries.metadata.schemas.no-items": "Es gbit keine Metadatenschemata.",
|
||||||
@@ -20,6 +22,7 @@
|
|||||||
"admin.registries.metadata.schemas.table.name": "Name",
|
"admin.registries.metadata.schemas.table.name": "Name",
|
||||||
"admin.registries.metadata.schemas.table.namespace": "Namensraum",
|
"admin.registries.metadata.schemas.table.namespace": "Namensraum",
|
||||||
"admin.registries.metadata.title": "DSpace Angular :: Metadatenreferenzliste",
|
"admin.registries.metadata.title": "DSpace Angular :: Metadatenreferenzliste",
|
||||||
|
|
||||||
"admin.registries.schema.description": "Dies ist das Metadatenschema für \"{{namespace}}\".",
|
"admin.registries.schema.description": "Dies ist das Metadatenschema für \"{{namespace}}\".",
|
||||||
"admin.registries.schema.fields.head": "Felder in diesem Schema",
|
"admin.registries.schema.fields.head": "Felder in diesem Schema",
|
||||||
"admin.registries.schema.fields.no-items": "Es gibt keine Felder in diesem Schema.",
|
"admin.registries.schema.fields.no-items": "Es gibt keine Felder in diesem Schema.",
|
||||||
@@ -27,15 +30,19 @@
|
|||||||
"admin.registries.schema.fields.table.scopenote": "Gültigkeitsbereich",
|
"admin.registries.schema.fields.table.scopenote": "Gültigkeitsbereich",
|
||||||
"admin.registries.schema.head": "Metadatenschemata",
|
"admin.registries.schema.head": "Metadatenschemata",
|
||||||
"admin.registries.schema.title": "DSpace Angular :: Referenzliste der Metadatenschemata",
|
"admin.registries.schema.title": "DSpace Angular :: Referenzliste der Metadatenschemata",
|
||||||
|
|
||||||
"auth.errors.invalid-user": "Ungültige E-Mail-Adresse oder Passwort.",
|
"auth.errors.invalid-user": "Ungültige E-Mail-Adresse oder Passwort.",
|
||||||
"auth.messages.expired": "Ihre Sitzung ist abgelaufen, bitte melden Sie sich erneut an.",
|
"auth.messages.expired": "Ihre Sitzung ist abgelaufen, bitte melden Sie sich erneut an.",
|
||||||
|
|
||||||
"browse.title": "Anzeige {{ collection }} nach {{ field }} {{ value }}",
|
"browse.title": "Anzeige {{ collection }} nach {{ field }} {{ value }}",
|
||||||
"collection.page.browse.recent.head": "Aktuellste Veröffentlichungen",
|
"collection.page.browse.recent.head": "Aktuellste Veröffentlichungen",
|
||||||
"collection.page.license": "Lizenz",
|
"collection.page.license": "Lizenz",
|
||||||
"collection.page.news": "Neuigkeiten",
|
"collection.page.news": "Neuigkeiten",
|
||||||
|
|
||||||
"community.page.license": "Lizenz",
|
"community.page.license": "Lizenz",
|
||||||
"community.page.news": "Neuigkeiten",
|
"community.page.news": "Neuigkeiten",
|
||||||
"community.sub-collection-list.head": "Sammlungen in diesem Bereich",
|
"community.sub-collection-list.head": "Sammlungen in diesem Bereich",
|
||||||
|
|
||||||
"error.browse-by": "Fehler beim Laden der Ressourcen",
|
"error.browse-by": "Fehler beim Laden der Ressourcen",
|
||||||
"error.collection": "Fehler beim Laden der Sammlung.",
|
"error.collection": "Fehler beim Laden der Sammlung.",
|
||||||
"error.community": "Fehler beim Laden des Bereiches.",
|
"error.community": "Fehler beim Laden des Bereiches.",
|
||||||
@@ -48,9 +55,11 @@
|
|||||||
"error.top-level-communities": "Fehler beim Laden der Hauptbereiche.",
|
"error.top-level-communities": "Fehler beim Laden der Hauptbereiche.",
|
||||||
"error.validation.license.notgranted": "Sie müssen der Lizenz zustimmen, um die Ressource einzureichen. Wenn dies zur Zeit nicht geht, können Sie die Einreichung speichern und später wiederaufnehmen oder löschen.",
|
"error.validation.license.notgranted": "Sie müssen der Lizenz zustimmen, um die Ressource einzureichen. Wenn dies zur Zeit nicht geht, können Sie die Einreichung speichern und später wiederaufnehmen oder löschen.",
|
||||||
"error.validation.pattern": "Die Eingabe kann nur folgendes Muster haben: {{ pattern }}.",
|
"error.validation.pattern": "Die Eingabe kann nur folgendes Muster haben: {{ pattern }}.",
|
||||||
|
|
||||||
"footer.copyright": "Copyright © 2002-{{ year }}",
|
"footer.copyright": "Copyright © 2002-{{ year }}",
|
||||||
"footer.link.dspace": "DSpace Software",
|
"footer.link.dspace": "DSpace Software",
|
||||||
"footer.link.duraspace": "DuraSpace",
|
"footer.link.duraspace": "DuraSpace",
|
||||||
|
|
||||||
"form.cancel": "Abbrechen",
|
"form.cancel": "Abbrechen",
|
||||||
"form.first-name": "Vorname",
|
"form.first-name": "Vorname",
|
||||||
"form.group-collapse": "Weniger",
|
"form.group-collapse": "Weniger",
|
||||||
@@ -64,10 +73,12 @@
|
|||||||
"form.remove": "Löschen",
|
"form.remove": "Löschen",
|
||||||
"form.search": "Suchen",
|
"form.search": "Suchen",
|
||||||
"form.submit": "Los",
|
"form.submit": "Los",
|
||||||
|
|
||||||
"home.description": "",
|
"home.description": "",
|
||||||
"home.title": "DSpace Angular :: Startseite",
|
"home.title": "DSpace Angular :: Startseite",
|
||||||
"home.top-level-communities.head": "Bereiche in DSpace",
|
"home.top-level-communities.head": "Bereiche in DSpace",
|
||||||
"home.top-level-communities.help": "Wählen Sie einen Bereich, um seine Sammlungen einzusehen.",
|
"home.top-level-communities.help": "Wählen Sie einen Bereich, um seine Sammlungen einzusehen.",
|
||||||
|
|
||||||
"item.page.abstract": "Kurzfassung",
|
"item.page.abstract": "Kurzfassung",
|
||||||
"item.page.author": "Autor",
|
"item.page.author": "Autor",
|
||||||
"item.page.collections": "Sammlungen",
|
"item.page.collections": "Sammlungen",
|
||||||
@@ -81,6 +92,7 @@
|
|||||||
"item.page.link.full": "Vollanzeige",
|
"item.page.link.full": "Vollanzeige",
|
||||||
"item.page.link.simple": "Kurzanzeige",
|
"item.page.link.simple": "Kurzanzeige",
|
||||||
"item.page.uri": "URI",
|
"item.page.uri": "URI",
|
||||||
|
|
||||||
"loading.browse-by": "Die Ressourcen werden geladen ...",
|
"loading.browse-by": "Die Ressourcen werden geladen ...",
|
||||||
"loading.collection": "Die Sammlung wird geladen ...",
|
"loading.collection": "Die Sammlung wird geladen ...",
|
||||||
"loading.community": "Der Bereich wird geladen ...",
|
"loading.community": "Der Bereich wird geladen ...",
|
||||||
@@ -91,6 +103,7 @@
|
|||||||
"loading.search-results": "Die Suchergebnisse werden geladen ...",
|
"loading.search-results": "Die Suchergebnisse werden geladen ...",
|
||||||
"loading.sub-collections": "Die untergeordneten Sammlungen werden geladen ...",
|
"loading.sub-collections": "Die untergeordneten Sammlungen werden geladen ...",
|
||||||
"loading.top-level-communities": "Die Hauptbereiche werden geladen ...",
|
"loading.top-level-communities": "Die Hauptbereiche werden geladen ...",
|
||||||
|
|
||||||
"login.form.email": "E-Mail-Adresse",
|
"login.form.email": "E-Mail-Adresse",
|
||||||
"login.form.forgot-password": "Haben Sie Ihr Passwort vergessen?",
|
"login.form.forgot-password": "Haben Sie Ihr Passwort vergessen?",
|
||||||
"login.form.header": "Bitte Loggen Sie sich ein.",
|
"login.form.header": "Bitte Loggen Sie sich ein.",
|
||||||
@@ -98,22 +111,29 @@
|
|||||||
"login.form.password": "Passwort",
|
"login.form.password": "Passwort",
|
||||||
"login.form.submit": "Einloggen",
|
"login.form.submit": "Einloggen",
|
||||||
"login.title": "Einloggen",
|
"login.title": "Einloggen",
|
||||||
|
|
||||||
"logout.form.header": "Ausloggen aus DSpace",
|
"logout.form.header": "Ausloggen aus DSpace",
|
||||||
"logout.form.submit": "Ausloggen",
|
"logout.form.submit": "Ausloggen",
|
||||||
"logout.title": "Ausloggen",
|
"logout.title": "Ausloggen",
|
||||||
|
|
||||||
"nav.home": "Zur Startseite",
|
"nav.home": "Zur Startseite",
|
||||||
"nav.login": "Anmelden",
|
"nav.login": "Anmelden",
|
||||||
"nav.logout": "Abmelden",
|
"nav.logout": "Abmelden",
|
||||||
|
|
||||||
"pagination.results-per-page": "Ergebnisse pro Seite",
|
"pagination.results-per-page": "Ergebnisse pro Seite",
|
||||||
"pagination.showing.detail": "{{ range }} bis {{ total }}",
|
"pagination.showing.detail": "{{ range }} bis {{ total }}",
|
||||||
"pagination.showing.label": "Anzeige der Treffer ",
|
"pagination.showing.label": "Anzeige der Treffer ",
|
||||||
"pagination.sort-direction": "Sortiermöglichkeiten",
|
"pagination.sort-direction": "Sortiermöglichkeiten",
|
||||||
|
|
||||||
"search.description": "",
|
"search.description": "",
|
||||||
|
"search.title": "DSpace Angular :: Suche",
|
||||||
|
|
||||||
"search.filters.applied.f.author": "Autor",
|
"search.filters.applied.f.author": "Autor",
|
||||||
"search.filters.applied.f.dateIssued.max": "Enddatum",
|
"search.filters.applied.f.dateIssued.max": "Enddatum",
|
||||||
"search.filters.applied.f.dateIssued.min": "Anfangsdatum",
|
"search.filters.applied.f.dateIssued.min": "Anfangsdatum",
|
||||||
"search.filters.applied.f.has_content_in_original_bundle": "Besitzt Dateien",
|
"search.filters.applied.f.has_content_in_original_bundle": "Besitzt Dateien",
|
||||||
"search.filters.applied.f.subject": "Thema",
|
"search.filters.applied.f.subject": "Thema",
|
||||||
|
|
||||||
"search.filters.filter.author.head": "Autor",
|
"search.filters.filter.author.head": "Autor",
|
||||||
"search.filters.filter.author.placeholder": "Autor",
|
"search.filters.filter.author.placeholder": "Autor",
|
||||||
"search.filters.filter.dateIssued.head": "Datum",
|
"search.filters.filter.dateIssued.head": "Datum",
|
||||||
@@ -126,12 +146,16 @@
|
|||||||
"search.filters.filter.show-more": "Zeige mehr",
|
"search.filters.filter.show-more": "Zeige mehr",
|
||||||
"search.filters.filter.subject.head": "Schlagwort",
|
"search.filters.filter.subject.head": "Schlagwort",
|
||||||
"search.filters.filter.subject.placeholder": "Schlagwort",
|
"search.filters.filter.subject.placeholder": "Schlagwort",
|
||||||
|
|
||||||
"search.filters.head": "Filter",
|
"search.filters.head": "Filter",
|
||||||
"search.filters.reset": "Filter zurücksetzen",
|
"search.filters.reset": "Filter zurücksetzen",
|
||||||
|
|
||||||
"search.form.search": "Suche",
|
"search.form.search": "Suche",
|
||||||
"search.form.search_dspace": "DSpace durchsuchen",
|
"search.form.search_dspace": "DSpace durchsuchen",
|
||||||
|
|
||||||
"search.results.head": "Suchergebnisse",
|
"search.results.head": "Suchergebnisse",
|
||||||
"search.results.no-results": "Zu dieser Suche gibt es keine Treffer.",
|
"search.results.no-results": "Zu dieser Suche gibt es keine Treffer.",
|
||||||
|
|
||||||
"search.sidebar.close": "Zurück zu den Ergebnissen",
|
"search.sidebar.close": "Zurück zu den Ergebnissen",
|
||||||
"search.sidebar.filters.title": "Filter",
|
"search.sidebar.filters.title": "Filter",
|
||||||
"search.sidebar.open": "Suchwerkzeuge",
|
"search.sidebar.open": "Suchwerkzeuge",
|
||||||
@@ -139,11 +163,13 @@
|
|||||||
"search.sidebar.settings.rpp": "Treffer pro Seite",
|
"search.sidebar.settings.rpp": "Treffer pro Seite",
|
||||||
"search.sidebar.settings.sort-by": "Sortiere nach",
|
"search.sidebar.settings.sort-by": "Sortiere nach",
|
||||||
"search.sidebar.settings.title": "Einstellungen",
|
"search.sidebar.settings.title": "Einstellungen",
|
||||||
"search.title": "DSpace Angular :: Suche",
|
|
||||||
"search.view-switch.show-grid": "Zeige als Raster",
|
"search.view-switch.show-grid": "Zeige als Raster",
|
||||||
"search.view-switch.show-list": "Zeige als Liste",
|
"search.view-switch.show-list": "Zeige als Liste",
|
||||||
|
|
||||||
"sorting.dc.title.ASC": "Titel aufsteigend",
|
"sorting.dc.title.ASC": "Titel aufsteigend",
|
||||||
"sorting.dc.title.DESC": "Titel absteigend",
|
"sorting.dc.title.DESC": "Titel absteigend",
|
||||||
"sorting.score.DESC": "Relevanz",
|
"sorting.score.DESC": "Relevanz",
|
||||||
"title": "DSpace"
|
|
||||||
|
"title": "DSpace",
|
||||||
}
|
}
|
@@ -2,6 +2,7 @@
|
|||||||
"404.help": "We can't find the page you're looking for. The page may have been moved or deleted. You can use the button below to get back to the home page. ",
|
"404.help": "We can't find the page you're looking for. The page may have been moved or deleted. You can use the button below to get back to the home page. ",
|
||||||
"404.link.home-page": "Take me to the home page",
|
"404.link.home-page": "Take me to the home page",
|
||||||
"404.page-not-found": "page not found",
|
"404.page-not-found": "page not found",
|
||||||
|
|
||||||
"admin.registries.bitstream-formats.create.failure.content": "An error occurred while creating the new bitstream format.",
|
"admin.registries.bitstream-formats.create.failure.content": "An error occurred while creating the new bitstream format.",
|
||||||
"admin.registries.bitstream-formats.create.failure.head": "Failure",
|
"admin.registries.bitstream-formats.create.failure.head": "Failure",
|
||||||
"admin.registries.bitstream-formats.create.head": "Create Bitstream format",
|
"admin.registries.bitstream-formats.create.head": "Create Bitstream format",
|
||||||
@@ -44,6 +45,7 @@
|
|||||||
"admin.registries.bitstream-formats.table.supportLevel.UNKNOWN": "Unknown",
|
"admin.registries.bitstream-formats.table.supportLevel.UNKNOWN": "Unknown",
|
||||||
"admin.registries.bitstream-formats.table.supportLevel.head": "Support Level",
|
"admin.registries.bitstream-formats.table.supportLevel.head": "Support Level",
|
||||||
"admin.registries.bitstream-formats.title": "DSpace Angular :: Bitstream Format Registry",
|
"admin.registries.bitstream-formats.title": "DSpace Angular :: Bitstream Format Registry",
|
||||||
|
|
||||||
"admin.registries.metadata.description": "The metadata registry maintains a list of all metadata fields available in the repository. These fields may be divided amongst multiple schemas. However, DSpace requires the qualified Dublin Core schema.",
|
"admin.registries.metadata.description": "The metadata registry maintains a list of all metadata fields available in the repository. These fields may be divided amongst multiple schemas. However, DSpace requires the qualified Dublin Core schema.",
|
||||||
"admin.registries.metadata.form.create": "Create metadata schema",
|
"admin.registries.metadata.form.create": "Create metadata schema",
|
||||||
"admin.registries.metadata.form.edit": "Edit metadata schema",
|
"admin.registries.metadata.form.edit": "Edit metadata schema",
|
||||||
@@ -56,6 +58,7 @@
|
|||||||
"admin.registries.metadata.schemas.table.name": "Name",
|
"admin.registries.metadata.schemas.table.name": "Name",
|
||||||
"admin.registries.metadata.schemas.table.namespace": "Namespace",
|
"admin.registries.metadata.schemas.table.namespace": "Namespace",
|
||||||
"admin.registries.metadata.title": "DSpace Angular :: Metadata Registry",
|
"admin.registries.metadata.title": "DSpace Angular :: Metadata Registry",
|
||||||
|
|
||||||
"admin.registries.schema.description": "This is the metadata schema for \"{{namespace}}\".",
|
"admin.registries.schema.description": "This is the metadata schema for \"{{namespace}}\".",
|
||||||
"admin.registries.schema.fields.head": "Schema metadata fields",
|
"admin.registries.schema.fields.head": "Schema metadata fields",
|
||||||
"admin.registries.schema.fields.no-items": "No metadata fields to show.",
|
"admin.registries.schema.fields.no-items": "No metadata fields to show.",
|
||||||
@@ -80,8 +83,10 @@
|
|||||||
"admin.registries.schema.notification.success": "Success",
|
"admin.registries.schema.notification.success": "Success",
|
||||||
"admin.registries.schema.return": "Return",
|
"admin.registries.schema.return": "Return",
|
||||||
"admin.registries.schema.title": "DSpace Angular :: Metadata Schema Registry",
|
"admin.registries.schema.title": "DSpace Angular :: Metadata Schema Registry",
|
||||||
|
|
||||||
"auth.errors.invalid-user": "Invalid email address or password.",
|
"auth.errors.invalid-user": "Invalid email address or password.",
|
||||||
"auth.messages.expired": "Your session has expired. Please log in again.",
|
"auth.messages.expired": "Your session has expired. Please log in again.",
|
||||||
|
|
||||||
"bitstream.edit.bitstream": "Bitstream: ",
|
"bitstream.edit.bitstream": "Bitstream: ",
|
||||||
"bitstream.edit.form.description.hint": "Optionally, provide a brief description of the file, for example \"<i>Main article</i>\" or \"<i>Experiment data readings</i>\".",
|
"bitstream.edit.form.description.hint": "Optionally, provide a brief description of the file, for example \"<i>Main article</i>\" or \"<i>Experiment data readings</i>\".",
|
||||||
"bitstream.edit.form.description.label": "Description",
|
"bitstream.edit.form.description.label": "Description",
|
||||||
@@ -99,6 +104,7 @@
|
|||||||
"bitstream.edit.notifications.saved.content": "Your changes to this bitstream were saved.",
|
"bitstream.edit.notifications.saved.content": "Your changes to this bitstream were saved.",
|
||||||
"bitstream.edit.notifications.saved.title": "Bitstream saved",
|
"bitstream.edit.notifications.saved.title": "Bitstream saved",
|
||||||
"bitstream.edit.title": "Edit bitstream",
|
"bitstream.edit.title": "Edit bitstream",
|
||||||
|
|
||||||
"browse.comcol.by.author": "By Author",
|
"browse.comcol.by.author": "By Author",
|
||||||
"browse.comcol.by.dateissued": "By Issue Date",
|
"browse.comcol.by.dateissued": "By Issue Date",
|
||||||
"browse.comcol.by.subject": "By Subject",
|
"browse.comcol.by.subject": "By Subject",
|
||||||
@@ -129,7 +135,9 @@
|
|||||||
"browse.startsWith.type_date": "Or type in a date (year-month):",
|
"browse.startsWith.type_date": "Or type in a date (year-month):",
|
||||||
"browse.startsWith.type_text": "Or enter first few letters:",
|
"browse.startsWith.type_text": "Or enter first few letters:",
|
||||||
"browse.title": "Browsing {{ collection }} by {{ field }} {{ value }}",
|
"browse.title": "Browsing {{ collection }} by {{ field }} {{ value }}",
|
||||||
|
|
||||||
"chips.remove": "Remove chip",
|
"chips.remove": "Remove chip",
|
||||||
|
|
||||||
"collection.create.head": "Create a Collection",
|
"collection.create.head": "Create a Collection",
|
||||||
"collection.create.sub-head": "Create a Collection for Community {{ parent }}",
|
"collection.create.sub-head": "Create a Collection for Community {{ parent }}",
|
||||||
"collection.delete.cancel": "Cancel",
|
"collection.delete.cancel": "Cancel",
|
||||||
@@ -152,6 +160,7 @@
|
|||||||
"collection.page.browse.recent.empty": "No items to show",
|
"collection.page.browse.recent.empty": "No items to show",
|
||||||
"collection.page.license": "License",
|
"collection.page.license": "License",
|
||||||
"collection.page.news": "News",
|
"collection.page.news": "News",
|
||||||
|
|
||||||
"community.create.head": "Create a Community",
|
"community.create.head": "Create a Community",
|
||||||
"community.create.sub-head": "Create a Sub-Community for Community {{ parent }}",
|
"community.create.sub-head": "Create a Sub-Community for Community {{ parent }}",
|
||||||
"community.delete.cancel": "Cancel",
|
"community.delete.cancel": "Cancel",
|
||||||
@@ -172,6 +181,7 @@
|
|||||||
"community.page.news": "News",
|
"community.page.news": "News",
|
||||||
"community.sub-collection-list.head": "Collections of this Community",
|
"community.sub-collection-list.head": "Collections of this Community",
|
||||||
"community.sub-community-list.head": "Communities of this Community",
|
"community.sub-community-list.head": "Communities of this Community",
|
||||||
|
|
||||||
"dso-selector.create.collection.head": "New collection",
|
"dso-selector.create.collection.head": "New collection",
|
||||||
"dso-selector.create.community.head": "New community",
|
"dso-selector.create.community.head": "New community",
|
||||||
"dso-selector.create.community.sub-level": "Create a new community in",
|
"dso-selector.create.community.sub-level": "Create a new community in",
|
||||||
@@ -182,6 +192,7 @@
|
|||||||
"dso-selector.edit.item.head": "Edit item",
|
"dso-selector.edit.item.head": "Edit item",
|
||||||
"dso-selector.no-results": "No {{ type }} found",
|
"dso-selector.no-results": "No {{ type }} found",
|
||||||
"dso-selector.placeholder": "Search for a {{ type }}",
|
"dso-selector.placeholder": "Search for a {{ type }}",
|
||||||
|
|
||||||
"error.browse-by": "Error fetching items",
|
"error.browse-by": "Error fetching items",
|
||||||
"error.collection": "Error fetching collection",
|
"error.collection": "Error fetching collection",
|
||||||
"error.community": "Error fetching community",
|
"error.community": "Error fetching community",
|
||||||
@@ -196,9 +207,11 @@
|
|||||||
"error.top-level-communities": "Error fetching top-level communities",
|
"error.top-level-communities": "Error fetching top-level communities",
|
||||||
"error.validation.license.notgranted": "You must grant this license to complete your submission. If you are unable to grant this license at this time you may save your work and return later or remove the submission.",
|
"error.validation.license.notgranted": "You must grant this license to complete your submission. If you are unable to grant this license at this time you may save your work and return later or remove the submission.",
|
||||||
"error.validation.pattern": "This input is restricted by the current pattern: {{ pattern }}.",
|
"error.validation.pattern": "This input is restricted by the current pattern: {{ pattern }}.",
|
||||||
|
|
||||||
"footer.copyright": "copyright © 2002-{{ year }}",
|
"footer.copyright": "copyright © 2002-{{ year }}",
|
||||||
"footer.link.dspace": "DSpace software",
|
"footer.link.dspace": "DSpace software",
|
||||||
"footer.link.duraspace": "DuraSpace",
|
"footer.link.duraspace": "DuraSpace",
|
||||||
|
|
||||||
"form.cancel": "Cancel",
|
"form.cancel": "Cancel",
|
||||||
"form.clear": "Clear",
|
"form.clear": "Clear",
|
||||||
"form.clear-help": "Click here to remove the selected value",
|
"form.clear-help": "Click here to remove the selected value",
|
||||||
@@ -220,15 +233,18 @@
|
|||||||
"form.search": "Search",
|
"form.search": "Search",
|
||||||
"form.search-help": "Click here to looking for an existing correspondence",
|
"form.search-help": "Click here to looking for an existing correspondence",
|
||||||
"form.submit": "Submit",
|
"form.submit": "Submit",
|
||||||
|
|
||||||
"home.description": "",
|
"home.description": "",
|
||||||
"home.title": "DSpace Angular :: Home",
|
"home.title": "DSpace Angular :: Home",
|
||||||
"home.top-level-communities.head": "Communities in DSpace",
|
"home.top-level-communities.head": "Communities in DSpace",
|
||||||
"home.top-level-communities.help": "Select a community to browse its collections.",
|
"home.top-level-communities.help": "Select a community to browse its collections.",
|
||||||
|
|
||||||
"item.bitstreams.upload.bundle-name": "Bundle Name",
|
"item.bitstreams.upload.bundle-name": "Bundle Name",
|
||||||
"item.bitstreams.upload.drop-message": "Drop a file to upload",
|
"item.bitstreams.upload.drop-message": "Drop a file to upload",
|
||||||
"item.bitstreams.upload.failed": "Upload failed. Please verify the content before retrying.",
|
"item.bitstreams.upload.failed": "Upload failed. Please verify the content before retrying.",
|
||||||
"item.bitstreams.upload.item": "Item: ",
|
"item.bitstreams.upload.item": "Item: ",
|
||||||
"item.bitstreams.upload.title": "Upload bitstream",
|
"item.bitstreams.upload.title": "Upload bitstream",
|
||||||
|
|
||||||
"item.edit.bitstreams.discard-button": "Discard",
|
"item.edit.bitstreams.discard-button": "Discard",
|
||||||
"item.edit.bitstreams.edit.buttons.download": "Download",
|
"item.edit.bitstreams.edit.buttons.download": "Download",
|
||||||
"item.edit.bitstreams.edit.buttons.edit": "Edit",
|
"item.edit.bitstreams.edit.buttons.edit": "Edit",
|
||||||
@@ -250,6 +266,7 @@
|
|||||||
"item.edit.bitstreams.reinstate-button": "Undo",
|
"item.edit.bitstreams.reinstate-button": "Undo",
|
||||||
"item.edit.bitstreams.save-button": "Save",
|
"item.edit.bitstreams.save-button": "Save",
|
||||||
"item.edit.bitstreams.upload-button": "Upload",
|
"item.edit.bitstreams.upload-button": "Upload",
|
||||||
|
|
||||||
"item.edit.delete.cancel": "Cancel",
|
"item.edit.delete.cancel": "Cancel",
|
||||||
"item.edit.delete.confirm": "Delete",
|
"item.edit.delete.confirm": "Delete",
|
||||||
"item.edit.delete.description": "Are you sure this item should be completely deleted? Caution: At present, no tombstone would be left.",
|
"item.edit.delete.description": "Are you sure this item should be completely deleted? Caution: At present, no tombstone would be left.",
|
||||||
@@ -257,6 +274,7 @@
|
|||||||
"item.edit.delete.header": "Delete item: {{ id }}",
|
"item.edit.delete.header": "Delete item: {{ id }}",
|
||||||
"item.edit.delete.success": "The item has been deleted",
|
"item.edit.delete.success": "The item has been deleted",
|
||||||
"item.edit.head": "Edit Item",
|
"item.edit.head": "Edit Item",
|
||||||
|
|
||||||
"item.edit.metadata.add-button": "Add",
|
"item.edit.metadata.add-button": "Add",
|
||||||
"item.edit.metadata.discard-button": "Discard",
|
"item.edit.metadata.discard-button": "Discard",
|
||||||
"item.edit.metadata.edit.buttons.edit": "Edit",
|
"item.edit.metadata.edit.buttons.edit": "Edit",
|
||||||
@@ -278,27 +296,44 @@
|
|||||||
"item.edit.metadata.notifications.saved.title": "Metadata saved",
|
"item.edit.metadata.notifications.saved.title": "Metadata saved",
|
||||||
"item.edit.metadata.reinstate-button": "Undo",
|
"item.edit.metadata.reinstate-button": "Undo",
|
||||||
"item.edit.metadata.save-button": "Save",
|
"item.edit.metadata.save-button": "Save",
|
||||||
|
|
||||||
"item.edit.modify.overview.field": "Field",
|
"item.edit.modify.overview.field": "Field",
|
||||||
"item.edit.modify.overview.language": "Language",
|
"item.edit.modify.overview.language": "Language",
|
||||||
"item.edit.modify.overview.value": "Value",
|
"item.edit.modify.overview.value": "Value",
|
||||||
|
|
||||||
|
"item.edit.move.cancel": "Cancel",
|
||||||
|
"item.edit.move.description": "Select the collection you wish to move this item to. To narrow down the list of displayed collections, you can enter a search query in the box.",
|
||||||
|
"item.edit.move.error": "An error occured when attempting to move the item",
|
||||||
|
"item.edit.move.head": "Move item: {{id}}",
|
||||||
|
"item.edit.move.inheritpolicies.checkbox": "Inherit policies",
|
||||||
|
"item.edit.move.inheritpolicies.description": "Inherit the default policies of the destination collection",
|
||||||
|
"item.edit.move.move": "Move",
|
||||||
|
"item.edit.move.processing": "Moving...",
|
||||||
|
"item.edit.move.search.placeholder": "Enter a search query to look for collections",
|
||||||
|
"item.edit.move.success": "The item has been moved succesfully",
|
||||||
|
"item.edit.move.title": "Move item",
|
||||||
|
|
||||||
"item.edit.private.cancel": "Cancel",
|
"item.edit.private.cancel": "Cancel",
|
||||||
"item.edit.private.confirm": "Make it Private",
|
"item.edit.private.confirm": "Make it Private",
|
||||||
"item.edit.private.description": "Are you sure this item should be made private in the archive?",
|
"item.edit.private.description": "Are you sure this item should be made private in the archive?",
|
||||||
"item.edit.private.error": "An error occurred while making the item private",
|
"item.edit.private.error": "An error occurred while making the item private",
|
||||||
"item.edit.private.header": "Make item private: {{ id }}",
|
"item.edit.private.header": "Make item private: {{ id }}",
|
||||||
"item.edit.private.success": "The item is now private",
|
"item.edit.private.success": "The item is now private",
|
||||||
|
|
||||||
"item.edit.public.cancel": "Cancel",
|
"item.edit.public.cancel": "Cancel",
|
||||||
"item.edit.public.confirm": "Make it Public",
|
"item.edit.public.confirm": "Make it Public",
|
||||||
"item.edit.public.description": "Are you sure this item should be made public in the archive?",
|
"item.edit.public.description": "Are you sure this item should be made public in the archive?",
|
||||||
"item.edit.public.error": "An error occurred while making the item public",
|
"item.edit.public.error": "An error occurred while making the item public",
|
||||||
"item.edit.public.header": "Make item public: {{ id }}",
|
"item.edit.public.header": "Make item public: {{ id }}",
|
||||||
"item.edit.public.success": "The item is now public",
|
"item.edit.public.success": "The item is now public",
|
||||||
|
|
||||||
"item.edit.reinstate.cancel": "Cancel",
|
"item.edit.reinstate.cancel": "Cancel",
|
||||||
"item.edit.reinstate.confirm": "Reinstate",
|
"item.edit.reinstate.confirm": "Reinstate",
|
||||||
"item.edit.reinstate.description": "Are you sure this item should be reinstated to the archive?",
|
"item.edit.reinstate.description": "Are you sure this item should be reinstated to the archive?",
|
||||||
"item.edit.reinstate.error": "An error occurred while reinstating the item",
|
"item.edit.reinstate.error": "An error occurred while reinstating the item",
|
||||||
"item.edit.reinstate.header": "Reinstate item: {{ id }}",
|
"item.edit.reinstate.header": "Reinstate item: {{ id }}",
|
||||||
"item.edit.reinstate.success": "The item was reinstated successfully",
|
"item.edit.reinstate.success": "The item was reinstated successfully",
|
||||||
|
|
||||||
"item.edit.relationships.discard-button": "Discard",
|
"item.edit.relationships.discard-button": "Discard",
|
||||||
"item.edit.relationships.edit.buttons.remove": "Remove",
|
"item.edit.relationships.edit.buttons.remove": "Remove",
|
||||||
"item.edit.relationships.edit.buttons.undo": "Undo changes",
|
"item.edit.relationships.edit.buttons.undo": "Undo changes",
|
||||||
@@ -311,6 +346,7 @@
|
|||||||
"item.edit.relationships.notifications.saved.title": "Relationships saved",
|
"item.edit.relationships.notifications.saved.title": "Relationships saved",
|
||||||
"item.edit.relationships.reinstate-button": "Undo",
|
"item.edit.relationships.reinstate-button": "Undo",
|
||||||
"item.edit.relationships.save-button": "Save",
|
"item.edit.relationships.save-button": "Save",
|
||||||
|
|
||||||
"item.edit.tabs.bitstreams.head": "Item Bitstreams",
|
"item.edit.tabs.bitstreams.head": "Item Bitstreams",
|
||||||
"item.edit.tabs.bitstreams.title": "Item Edit - Bitstreams",
|
"item.edit.tabs.bitstreams.title": "Item Edit - Bitstreams",
|
||||||
"item.edit.tabs.curate.head": "Curate",
|
"item.edit.tabs.curate.head": "Curate",
|
||||||
@@ -344,12 +380,14 @@
|
|||||||
"item.edit.tabs.status.title": "Item Edit - Status",
|
"item.edit.tabs.status.title": "Item Edit - Status",
|
||||||
"item.edit.tabs.view.head": "View Item",
|
"item.edit.tabs.view.head": "View Item",
|
||||||
"item.edit.tabs.view.title": "Item Edit - View",
|
"item.edit.tabs.view.title": "Item Edit - View",
|
||||||
|
|
||||||
"item.edit.withdraw.cancel": "Cancel",
|
"item.edit.withdraw.cancel": "Cancel",
|
||||||
"item.edit.withdraw.confirm": "Withdraw",
|
"item.edit.withdraw.confirm": "Withdraw",
|
||||||
"item.edit.withdraw.description": "Are you sure this item should be withdrawn from the archive?",
|
"item.edit.withdraw.description": "Are you sure this item should be withdrawn from the archive?",
|
||||||
"item.edit.withdraw.error": "An error occurred while withdrawing the item",
|
"item.edit.withdraw.error": "An error occurred while withdrawing the item",
|
||||||
"item.edit.withdraw.header": "Withdraw item: {{ id }}",
|
"item.edit.withdraw.header": "Withdraw item: {{ id }}",
|
||||||
"item.edit.withdraw.success": "The item was withdrawn successfully",
|
"item.edit.withdraw.success": "The item was withdrawn successfully",
|
||||||
|
|
||||||
"item.page.abstract": "Abstract",
|
"item.page.abstract": "Abstract",
|
||||||
"item.page.author": "Authors",
|
"item.page.author": "Authors",
|
||||||
"item.page.citation": "Citation",
|
"item.page.citation": "Citation",
|
||||||
@@ -367,10 +405,12 @@
|
|||||||
"item.page.person.search.title": "Articles by this author",
|
"item.page.person.search.title": "Articles by this author",
|
||||||
"item.page.subject": "Keywords",
|
"item.page.subject": "Keywords",
|
||||||
"item.page.uri": "URI",
|
"item.page.uri": "URI",
|
||||||
|
|
||||||
"item.select.confirm": "Confirm selected",
|
"item.select.confirm": "Confirm selected",
|
||||||
"item.select.table.author": "Author",
|
"item.select.table.author": "Author",
|
||||||
"item.select.table.collection": "Collection",
|
"item.select.table.collection": "Collection",
|
||||||
"item.select.table.title": "Title",
|
"item.select.table.title": "Title",
|
||||||
|
|
||||||
"journal.listelement.badge": "Journal",
|
"journal.listelement.badge": "Journal",
|
||||||
"journal.page.description": "Description",
|
"journal.page.description": "Description",
|
||||||
"journal.page.editor": "Editor-in-Chief",
|
"journal.page.editor": "Editor-in-Chief",
|
||||||
@@ -379,6 +419,7 @@
|
|||||||
"journal.page.titleprefix": "Journal: ",
|
"journal.page.titleprefix": "Journal: ",
|
||||||
"journal.search.results.head": "Journal Search Results",
|
"journal.search.results.head": "Journal Search Results",
|
||||||
"journal.search.title": "DSpace Angular :: Journal Search",
|
"journal.search.title": "DSpace Angular :: Journal Search",
|
||||||
|
|
||||||
"journalissue.listelement.badge": "Journal Issue",
|
"journalissue.listelement.badge": "Journal Issue",
|
||||||
"journalissue.page.description": "Description",
|
"journalissue.page.description": "Description",
|
||||||
"journalissue.page.issuedate": "Issue Date",
|
"journalissue.page.issuedate": "Issue Date",
|
||||||
@@ -387,11 +428,13 @@
|
|||||||
"journalissue.page.keyword": "Keywords",
|
"journalissue.page.keyword": "Keywords",
|
||||||
"journalissue.page.number": "Number",
|
"journalissue.page.number": "Number",
|
||||||
"journalissue.page.titleprefix": "Journal Issue: ",
|
"journalissue.page.titleprefix": "Journal Issue: ",
|
||||||
|
|
||||||
"journalvolume.listelement.badge": "Journal Volume",
|
"journalvolume.listelement.badge": "Journal Volume",
|
||||||
"journalvolume.page.description": "Description",
|
"journalvolume.page.description": "Description",
|
||||||
"journalvolume.page.issuedate": "Issue Date",
|
"journalvolume.page.issuedate": "Issue Date",
|
||||||
"journalvolume.page.titleprefix": "Journal Volume: ",
|
"journalvolume.page.titleprefix": "Journal Volume: ",
|
||||||
"journalvolume.page.volume": "Volume",
|
"journalvolume.page.volume": "Volume",
|
||||||
|
|
||||||
"loading.bitstream": "Loading bitstream...",
|
"loading.bitstream": "Loading bitstream...",
|
||||||
"loading.browse-by": "Loading items...",
|
"loading.browse-by": "Loading items...",
|
||||||
"loading.browse-by-page": "Loading page...",
|
"loading.browse-by-page": "Loading page...",
|
||||||
@@ -406,6 +449,7 @@
|
|||||||
"loading.sub-collections": "Loading sub-collections...",
|
"loading.sub-collections": "Loading sub-collections...",
|
||||||
"loading.sub-communities": "Loading sub-communities...",
|
"loading.sub-communities": "Loading sub-communities...",
|
||||||
"loading.top-level-communities": "Loading top-level communities...",
|
"loading.top-level-communities": "Loading top-level communities...",
|
||||||
|
|
||||||
"login.form.email": "Email address",
|
"login.form.email": "Email address",
|
||||||
"login.form.forgot-password": "Have you forgotten your password?",
|
"login.form.forgot-password": "Have you forgotten your password?",
|
||||||
"login.form.header": "Please log in to DSpace",
|
"login.form.header": "Please log in to DSpace",
|
||||||
@@ -413,15 +457,19 @@
|
|||||||
"login.form.password": "Password",
|
"login.form.password": "Password",
|
||||||
"login.form.submit": "Log in",
|
"login.form.submit": "Log in",
|
||||||
"login.title": "Login",
|
"login.title": "Login",
|
||||||
|
|
||||||
"logout.form.header": "Log out from DSpace",
|
"logout.form.header": "Log out from DSpace",
|
||||||
"logout.form.submit": "Log out",
|
"logout.form.submit": "Log out",
|
||||||
"logout.title": "Logout",
|
"logout.title": "Logout",
|
||||||
|
|
||||||
"menu.header.admin": "Admin",
|
"menu.header.admin": "Admin",
|
||||||
"menu.header.image.logo": "Repository logo",
|
"menu.header.image.logo": "Repository logo",
|
||||||
|
|
||||||
"menu.section.access_control": "Access Control",
|
"menu.section.access_control": "Access Control",
|
||||||
"menu.section.access_control_authorizations": "Authorizations",
|
"menu.section.access_control_authorizations": "Authorizations",
|
||||||
"menu.section.access_control_groups": "Groups",
|
"menu.section.access_control_groups": "Groups",
|
||||||
"menu.section.access_control_people": "People",
|
"menu.section.access_control_people": "People",
|
||||||
|
|
||||||
"menu.section.browse_community": "This Community",
|
"menu.section.browse_community": "This Community",
|
||||||
"menu.section.browse_community_by_author": "By Author",
|
"menu.section.browse_community_by_author": "By Author",
|
||||||
"menu.section.browse_community_by_issue_date": "By Issue Date",
|
"menu.section.browse_community_by_issue_date": "By Issue Date",
|
||||||
@@ -432,21 +480,26 @@
|
|||||||
"menu.section.browse_global_by_subject": "By Subject",
|
"menu.section.browse_global_by_subject": "By Subject",
|
||||||
"menu.section.browse_global_by_title": "By Title",
|
"menu.section.browse_global_by_title": "By Title",
|
||||||
"menu.section.browse_global_communities_and_collections": "Communities & Collections",
|
"menu.section.browse_global_communities_and_collections": "Communities & Collections",
|
||||||
|
|
||||||
"menu.section.control_panel": "Control Panel",
|
"menu.section.control_panel": "Control Panel",
|
||||||
"menu.section.curation_task": "Curation Task",
|
"menu.section.curation_task": "Curation Task",
|
||||||
|
|
||||||
"menu.section.edit": "Edit",
|
"menu.section.edit": "Edit",
|
||||||
"menu.section.edit_collection": "Collection",
|
"menu.section.edit_collection": "Collection",
|
||||||
"menu.section.edit_community": "Community",
|
"menu.section.edit_community": "Community",
|
||||||
"menu.section.edit_item": "Item",
|
"menu.section.edit_item": "Item",
|
||||||
|
|
||||||
"menu.section.export": "Export",
|
"menu.section.export": "Export",
|
||||||
"menu.section.export_collection": "Collection",
|
"menu.section.export_collection": "Collection",
|
||||||
"menu.section.export_community": "Community",
|
"menu.section.export_community": "Community",
|
||||||
"menu.section.export_item": "Item",
|
"menu.section.export_item": "Item",
|
||||||
"menu.section.export_metadata": "Metadata",
|
"menu.section.export_metadata": "Metadata",
|
||||||
|
|
||||||
"menu.section.find": "Find",
|
"menu.section.find": "Find",
|
||||||
"menu.section.find_items": "Items",
|
"menu.section.find_items": "Items",
|
||||||
"menu.section.find_private_items": "Private Items",
|
"menu.section.find_private_items": "Private Items",
|
||||||
"menu.section.find_withdrawn_items": "Withdrawn Items",
|
"menu.section.find_withdrawn_items": "Withdrawn Items",
|
||||||
|
|
||||||
"menu.section.icon.access_control": "Access Control menu section",
|
"menu.section.icon.access_control": "Access Control menu section",
|
||||||
"menu.section.icon.control_panel": "Control Panel menu section",
|
"menu.section.icon.control_panel": "Control Panel menu section",
|
||||||
"menu.section.icon.curation_task": "Curation Task menu section",
|
"menu.section.icon.curation_task": "Curation Task menu section",
|
||||||
@@ -459,20 +512,27 @@
|
|||||||
"menu.section.icon.registries": "Registries menu section",
|
"menu.section.icon.registries": "Registries menu section",
|
||||||
"menu.section.icon.statistics_task": "Statistics Task menu section",
|
"menu.section.icon.statistics_task": "Statistics Task menu section",
|
||||||
"menu.section.icon.unpin": "Unpin sidebar",
|
"menu.section.icon.unpin": "Unpin sidebar",
|
||||||
|
|
||||||
"menu.section.import": "Import",
|
"menu.section.import": "Import",
|
||||||
"menu.section.import_batch": "Batch Import (ZIP)",
|
"menu.section.import_batch": "Batch Import (ZIP)",
|
||||||
"menu.section.import_metadata": "Metadata",
|
"menu.section.import_metadata": "Metadata",
|
||||||
|
|
||||||
"menu.section.new": "New",
|
"menu.section.new": "New",
|
||||||
"menu.section.new_collection": "Collection",
|
"menu.section.new_collection": "Collection",
|
||||||
"menu.section.new_community": "Community",
|
"menu.section.new_community": "Community",
|
||||||
"menu.section.new_item": "Item",
|
"menu.section.new_item": "Item",
|
||||||
"menu.section.new_item_version": "Item Version",
|
"menu.section.new_item_version": "Item Version",
|
||||||
|
|
||||||
"menu.section.pin": "Pin sidebar",
|
"menu.section.pin": "Pin sidebar",
|
||||||
|
"menu.section.unpin": "Unpin sidebar",
|
||||||
|
|
||||||
"menu.section.registries": "Registries",
|
"menu.section.registries": "Registries",
|
||||||
"menu.section.registries_format": "Format",
|
"menu.section.registries_format": "Format",
|
||||||
"menu.section.registries_metadata": "Metadata",
|
"menu.section.registries_metadata": "Metadata",
|
||||||
|
|
||||||
"menu.section.statistics": "Statistics",
|
"menu.section.statistics": "Statistics",
|
||||||
"menu.section.statistics_task": "Statistics Task",
|
"menu.section.statistics_task": "Statistics Task",
|
||||||
|
|
||||||
"menu.section.toggle.access_control": "Toggle Access Control section",
|
"menu.section.toggle.access_control": "Toggle Access Control section",
|
||||||
"menu.section.toggle.control_panel": "Toggle Control Panel section",
|
"menu.section.toggle.control_panel": "Toggle Control Panel section",
|
||||||
"menu.section.toggle.curation_task": "Toggle Curation Task section",
|
"menu.section.toggle.curation_task": "Toggle Curation Task section",
|
||||||
@@ -483,7 +543,7 @@
|
|||||||
"menu.section.toggle.new": "Toggle New section",
|
"menu.section.toggle.new": "Toggle New section",
|
||||||
"menu.section.toggle.registries": "Toggle Registries section",
|
"menu.section.toggle.registries": "Toggle Registries section",
|
||||||
"menu.section.toggle.statistics_task": "Toggle Statistics Task section",
|
"menu.section.toggle.statistics_task": "Toggle Statistics Task section",
|
||||||
"menu.section.unpin": "Unpin sidebar",
|
|
||||||
"mydspace.description": "",
|
"mydspace.description": "",
|
||||||
"mydspace.general.text-here": "HERE",
|
"mydspace.general.text-here": "HERE",
|
||||||
"mydspace.messages.controller-help": "Select this option to send a message to item's submitter.",
|
"mydspace.messages.controller-help": "Select this option to send a message to item's submitter.",
|
||||||
@@ -521,6 +581,7 @@
|
|||||||
"mydspace.upload.upload-multiple-successful": "{{qty}} new workspace items created.",
|
"mydspace.upload.upload-multiple-successful": "{{qty}} new workspace items created.",
|
||||||
"mydspace.upload.upload-successful": "New workspace item created. Click {{here}} for edit it.",
|
"mydspace.upload.upload-successful": "New workspace item created. Click {{here}} for edit it.",
|
||||||
"mydspace.view-btn": "View",
|
"mydspace.view-btn": "View",
|
||||||
|
|
||||||
"nav.browse.header": "All of DSpace",
|
"nav.browse.header": "All of DSpace",
|
||||||
"nav.community-browse.header": "By Community",
|
"nav.community-browse.header": "By Community",
|
||||||
"nav.language": "Language switch",
|
"nav.language": "Language switch",
|
||||||
@@ -529,6 +590,7 @@
|
|||||||
"nav.mydspace": "MyDSpace",
|
"nav.mydspace": "MyDSpace",
|
||||||
"nav.search": "Search",
|
"nav.search": "Search",
|
||||||
"nav.statistics.header": "Statistics",
|
"nav.statistics.header": "Statistics",
|
||||||
|
|
||||||
"orgunit.listelement.badge": "Organizational Unit",
|
"orgunit.listelement.badge": "Organizational Unit",
|
||||||
"orgunit.page.city": "City",
|
"orgunit.page.city": "City",
|
||||||
"orgunit.page.country": "Country",
|
"orgunit.page.country": "Country",
|
||||||
@@ -536,10 +598,12 @@
|
|||||||
"orgunit.page.description": "Description",
|
"orgunit.page.description": "Description",
|
||||||
"orgunit.page.id": "ID",
|
"orgunit.page.id": "ID",
|
||||||
"orgunit.page.titleprefix": "Organizational Unit: ",
|
"orgunit.page.titleprefix": "Organizational Unit: ",
|
||||||
|
|
||||||
"pagination.results-per-page": "Results Per Page",
|
"pagination.results-per-page": "Results Per Page",
|
||||||
"pagination.showing.detail": "{{ range }} of {{ total }}",
|
"pagination.showing.detail": "{{ range }} of {{ total }}",
|
||||||
"pagination.showing.label": "Now showing ",
|
"pagination.showing.label": "Now showing ",
|
||||||
"pagination.sort-direction": "Sort Options",
|
"pagination.sort-direction": "Sort Options",
|
||||||
|
|
||||||
"person.listelement.badge": "Person",
|
"person.listelement.badge": "Person",
|
||||||
"person.page.birthdate": "Birth Date",
|
"person.page.birthdate": "Birth Date",
|
||||||
"person.page.email": "Email Address",
|
"person.page.email": "Email Address",
|
||||||
@@ -552,6 +616,7 @@
|
|||||||
"person.page.titleprefix": "Person: ",
|
"person.page.titleprefix": "Person: ",
|
||||||
"person.search.results.head": "Person Search Results",
|
"person.search.results.head": "Person Search Results",
|
||||||
"person.search.title": "DSpace Angular :: Person Search",
|
"person.search.title": "DSpace Angular :: Person Search",
|
||||||
|
|
||||||
"project.listelement.badge": "Research Project",
|
"project.listelement.badge": "Research Project",
|
||||||
"project.page.contributor": "Contributors",
|
"project.page.contributor": "Contributors",
|
||||||
"project.page.description": "Description",
|
"project.page.description": "Description",
|
||||||
@@ -561,6 +626,7 @@
|
|||||||
"project.page.keyword": "Keywords",
|
"project.page.keyword": "Keywords",
|
||||||
"project.page.status": "Status",
|
"project.page.status": "Status",
|
||||||
"project.page.titleprefix": "Research Project: ",
|
"project.page.titleprefix": "Research Project: ",
|
||||||
|
|
||||||
"publication.listelement.badge": "Publication",
|
"publication.listelement.badge": "Publication",
|
||||||
"publication.page.description": "Description",
|
"publication.page.description": "Description",
|
||||||
"publication.page.journal-issn": "Journal ISSN",
|
"publication.page.journal-issn": "Journal ISSN",
|
||||||
@@ -570,6 +636,7 @@
|
|||||||
"publication.page.volume-title": "Volume Title",
|
"publication.page.volume-title": "Volume Title",
|
||||||
"publication.search.results.head": "Publication Search Results",
|
"publication.search.results.head": "Publication Search Results",
|
||||||
"publication.search.title": "DSpace Angular :: Publication Search",
|
"publication.search.title": "DSpace Angular :: Publication Search",
|
||||||
|
|
||||||
"relationships.isAuthorOf": "Authors",
|
"relationships.isAuthorOf": "Authors",
|
||||||
"relationships.isIssueOf": "Journal Issues",
|
"relationships.isIssueOf": "Journal Issues",
|
||||||
"relationships.isJournalIssueOf": "Journal Issue",
|
"relationships.isJournalIssueOf": "Journal Issue",
|
||||||
@@ -582,7 +649,11 @@
|
|||||||
"relationships.isSingleJournalOf": "Journal",
|
"relationships.isSingleJournalOf": "Journal",
|
||||||
"relationships.isSingleVolumeOf": "Journal Volume",
|
"relationships.isSingleVolumeOf": "Journal Volume",
|
||||||
"relationships.isVolumeOf": "Journal Volumes",
|
"relationships.isVolumeOf": "Journal Volumes",
|
||||||
|
|
||||||
"search.description": "",
|
"search.description": "",
|
||||||
|
"search.switch-configuration.title": "Show",
|
||||||
|
"search.title": "DSpace Angular :: Search",
|
||||||
|
|
||||||
"search.filters.applied.f.author": "Author",
|
"search.filters.applied.f.author": "Author",
|
||||||
"search.filters.applied.f.dateIssued.max": "End date",
|
"search.filters.applied.f.dateIssued.max": "End date",
|
||||||
"search.filters.applied.f.dateIssued.min": "Start date",
|
"search.filters.applied.f.dateIssued.min": "Start date",
|
||||||
@@ -593,6 +664,7 @@
|
|||||||
"search.filters.applied.f.namedresourcetype": "Status",
|
"search.filters.applied.f.namedresourcetype": "Status",
|
||||||
"search.filters.applied.f.subject": "Subject",
|
"search.filters.applied.f.subject": "Subject",
|
||||||
"search.filters.applied.f.submitter": "Submitter",
|
"search.filters.applied.f.submitter": "Submitter",
|
||||||
|
|
||||||
"search.filters.filter.author.head": "Author",
|
"search.filters.filter.author.head": "Author",
|
||||||
"search.filters.filter.author.placeholder": "Author name",
|
"search.filters.filter.author.placeholder": "Author name",
|
||||||
"search.filters.filter.birthDate.head": "Birth Date",
|
"search.filters.filter.birthDate.head": "Birth Date",
|
||||||
@@ -637,14 +709,18 @@
|
|||||||
"search.filters.filter.subject.placeholder": "Subject",
|
"search.filters.filter.subject.placeholder": "Subject",
|
||||||
"search.filters.filter.submitter.head": "Submitter",
|
"search.filters.filter.submitter.head": "Submitter",
|
||||||
"search.filters.filter.submitter.placeholder": "Submitter",
|
"search.filters.filter.submitter.placeholder": "Submitter",
|
||||||
|
|
||||||
"search.filters.head": "Filters",
|
"search.filters.head": "Filters",
|
||||||
"search.filters.reset": "Reset filters",
|
"search.filters.reset": "Reset filters",
|
||||||
|
|
||||||
"search.form.search": "Search",
|
"search.form.search": "Search",
|
||||||
"search.form.search_dspace": "Search DSpace",
|
"search.form.search_dspace": "Search DSpace",
|
||||||
"search.form.search_mydspace": "Search MyDSpace",
|
"search.form.search_mydspace": "Search MyDSpace",
|
||||||
|
|
||||||
"search.results.head": "Search Results",
|
"search.results.head": "Search Results",
|
||||||
"search.results.no-results": "Your search returned no results. Having trouble finding what you're looking for? Try putting",
|
"search.results.no-results": "Your search returned no results. Having trouble finding what you're looking for? Try putting",
|
||||||
"search.results.no-results-link": "quotes around it",
|
"search.results.no-results-link": "quotes around it",
|
||||||
|
|
||||||
"search.sidebar.close": "Back to results",
|
"search.sidebar.close": "Back to results",
|
||||||
"search.sidebar.filters.title": "Filters",
|
"search.sidebar.filters.title": "Filters",
|
||||||
"search.sidebar.open": "Search Tools",
|
"search.sidebar.open": "Search Tools",
|
||||||
@@ -652,14 +728,15 @@
|
|||||||
"search.sidebar.settings.rpp": "Results per page",
|
"search.sidebar.settings.rpp": "Results per page",
|
||||||
"search.sidebar.settings.sort-by": "Sort By",
|
"search.sidebar.settings.sort-by": "Sort By",
|
||||||
"search.sidebar.settings.title": "Settings",
|
"search.sidebar.settings.title": "Settings",
|
||||||
"search.switch-configuration.title": "Show",
|
|
||||||
"search.title": "DSpace Angular :: Search",
|
|
||||||
"search.view-switch.show-detail": "Show detail",
|
"search.view-switch.show-detail": "Show detail",
|
||||||
"search.view-switch.show-grid": "Show as grid",
|
"search.view-switch.show-grid": "Show as grid",
|
||||||
"search.view-switch.show-list": "Show as list",
|
"search.view-switch.show-list": "Show as list",
|
||||||
|
|
||||||
"sorting.dc.title.ASC": "Title Ascending",
|
"sorting.dc.title.ASC": "Title Ascending",
|
||||||
"sorting.dc.title.DESC": "Title Descending",
|
"sorting.dc.title.DESC": "Title Descending",
|
||||||
"sorting.score.DESC": "Relevance",
|
"sorting.score.DESC": "Relevance",
|
||||||
|
|
||||||
"submission.edit.title": "Edit Submission",
|
"submission.edit.title": "Edit Submission",
|
||||||
"submission.general.cannot_submit": "You have not the privilege to make a new submission.",
|
"submission.general.cannot_submit": "You have not the privilege to make a new submission.",
|
||||||
"submission.general.deposit": "Deposit",
|
"submission.general.deposit": "Deposit",
|
||||||
@@ -670,7 +747,7 @@
|
|||||||
"submission.general.discard.submit": "Discard",
|
"submission.general.discard.submit": "Discard",
|
||||||
"submission.general.save": "Save",
|
"submission.general.save": "Save",
|
||||||
"submission.general.save-later": "Save for later",
|
"submission.general.save-later": "Save for later",
|
||||||
"submission.mydspace": {},
|
|
||||||
"submission.sections.general.add-more": "Add more",
|
"submission.sections.general.add-more": "Add more",
|
||||||
"submission.sections.general.collection": "Collection",
|
"submission.sections.general.collection": "Collection",
|
||||||
"submission.sections.general.deposit_error_notice": "There was an issue when submitting the item, please try again later.",
|
"submission.sections.general.deposit_error_notice": "There was an issue when submitting the item, please try again later.",
|
||||||
@@ -685,6 +762,7 @@
|
|||||||
"submission.sections.general.save_success_notice": "Submission saved successfully.",
|
"submission.sections.general.save_success_notice": "Submission saved successfully.",
|
||||||
"submission.sections.general.search-collection": "Search for a collection",
|
"submission.sections.general.search-collection": "Search for a collection",
|
||||||
"submission.sections.general.sections_not_valid": "There are incomplete sections.",
|
"submission.sections.general.sections_not_valid": "There are incomplete sections.",
|
||||||
|
|
||||||
"submission.sections.submit.progressbar.cclicense": "Creative commons license",
|
"submission.sections.submit.progressbar.cclicense": "Creative commons license",
|
||||||
"submission.sections.submit.progressbar.describe.recycle": "Recycle",
|
"submission.sections.submit.progressbar.describe.recycle": "Recycle",
|
||||||
"submission.sections.submit.progressbar.describe.stepcustom": "Describe",
|
"submission.sections.submit.progressbar.describe.stepcustom": "Describe",
|
||||||
@@ -693,6 +771,7 @@
|
|||||||
"submission.sections.submit.progressbar.detect-duplicate": "Potential duplicates",
|
"submission.sections.submit.progressbar.detect-duplicate": "Potential duplicates",
|
||||||
"submission.sections.submit.progressbar.license": "Deposit license",
|
"submission.sections.submit.progressbar.license": "Deposit license",
|
||||||
"submission.sections.submit.progressbar.upload": "Upload files",
|
"submission.sections.submit.progressbar.upload": "Upload files",
|
||||||
|
|
||||||
"submission.sections.upload.delete.confirm.cancel": "Cancel",
|
"submission.sections.upload.delete.confirm.cancel": "Cancel",
|
||||||
"submission.sections.upload.delete.confirm.info": "This operation can't be undone. Are you sure?",
|
"submission.sections.upload.delete.confirm.info": "This operation can't be undone. Are you sure?",
|
||||||
"submission.sections.upload.delete.confirm.submit": "Yes, I'm sure",
|
"submission.sections.upload.delete.confirm.submit": "Yes, I'm sure",
|
||||||
@@ -716,13 +795,16 @@
|
|||||||
"submission.sections.upload.undo": "Cancel",
|
"submission.sections.upload.undo": "Cancel",
|
||||||
"submission.sections.upload.upload-failed": "Upload failed",
|
"submission.sections.upload.upload-failed": "Upload failed",
|
||||||
"submission.sections.upload.upload-successful": "Upload successful",
|
"submission.sections.upload.upload-successful": "Upload successful",
|
||||||
|
|
||||||
"submission.submit.title": "Submission",
|
"submission.submit.title": "Submission",
|
||||||
|
|
||||||
"submission.workflow.generic.delete": "Delete",
|
"submission.workflow.generic.delete": "Delete",
|
||||||
"submission.workflow.generic.delete-help": "If you would to discard this item, select \"Delete\". You will then be asked to confirm it.",
|
"submission.workflow.generic.delete-help": "If you would to discard this item, select \"Delete\". You will then be asked to confirm it.",
|
||||||
"submission.workflow.generic.edit": "Edit",
|
"submission.workflow.generic.edit": "Edit",
|
||||||
"submission.workflow.generic.edit-help": "Select this option to change the item's metadata.",
|
"submission.workflow.generic.edit-help": "Select this option to change the item's metadata.",
|
||||||
"submission.workflow.generic.view": "View",
|
"submission.workflow.generic.view": "View",
|
||||||
"submission.workflow.generic.view-help": "Select this option to view the item's metadata.",
|
"submission.workflow.generic.view-help": "Select this option to view the item's metadata.",
|
||||||
|
|
||||||
"submission.workflow.tasks.claimed.approve": "Approve",
|
"submission.workflow.tasks.claimed.approve": "Approve",
|
||||||
"submission.workflow.tasks.claimed.approve_help": "If you have reviewed the item and it is suitable for inclusion in the collection, select \"Approve\".",
|
"submission.workflow.tasks.claimed.approve_help": "If you have reviewed the item and it is suitable for inclusion in the collection, select \"Approve\".",
|
||||||
"submission.workflow.tasks.claimed.edit": "Edit",
|
"submission.workflow.tasks.claimed.edit": "Edit",
|
||||||
@@ -735,18 +817,22 @@
|
|||||||
"submission.workflow.tasks.claimed.reject_help": "If you have reviewed the item and found it is <strong>not</strong> suitable for inclusion in the collection, select \"Reject\". You will then be asked to enter a message indicating why the item is unsuitable, and whether the submitter should change something and resubmit.",
|
"submission.workflow.tasks.claimed.reject_help": "If you have reviewed the item and found it is <strong>not</strong> suitable for inclusion in the collection, select \"Reject\". You will then be asked to enter a message indicating why the item is unsuitable, and whether the submitter should change something and resubmit.",
|
||||||
"submission.workflow.tasks.claimed.return": "Return to pool",
|
"submission.workflow.tasks.claimed.return": "Return to pool",
|
||||||
"submission.workflow.tasks.claimed.return_help": "Return the task to the pool so that another user may perform the task.",
|
"submission.workflow.tasks.claimed.return_help": "Return the task to the pool so that another user may perform the task.",
|
||||||
|
|
||||||
"submission.workflow.tasks.generic.error": "Error occurred during operation...",
|
"submission.workflow.tasks.generic.error": "Error occurred during operation...",
|
||||||
"submission.workflow.tasks.generic.processing": "Processing...",
|
"submission.workflow.tasks.generic.processing": "Processing...",
|
||||||
"submission.workflow.tasks.generic.submitter": "Submitter",
|
"submission.workflow.tasks.generic.submitter": "Submitter",
|
||||||
"submission.workflow.tasks.generic.success": "Operation successful",
|
"submission.workflow.tasks.generic.success": "Operation successful",
|
||||||
|
|
||||||
"submission.workflow.tasks.pool.claim": "Claim",
|
"submission.workflow.tasks.pool.claim": "Claim",
|
||||||
"submission.workflow.tasks.pool.claim_help": "Assign this task to yourself.",
|
"submission.workflow.tasks.pool.claim_help": "Assign this task to yourself.",
|
||||||
"submission.workflow.tasks.pool.hide-detail": "Hide detail",
|
"submission.workflow.tasks.pool.hide-detail": "Hide detail",
|
||||||
"submission.workflow.tasks.pool.show-detail": "Show detail",
|
"submission.workflow.tasks.pool.show-detail": "Show detail",
|
||||||
|
|
||||||
"title": "DSpace",
|
"title": "DSpace",
|
||||||
|
|
||||||
"uploader.browse": "browse",
|
"uploader.browse": "browse",
|
||||||
"uploader.drag-message": "Drag & Drop your files here",
|
"uploader.drag-message": "Drag & Drop your files here",
|
||||||
"uploader.or": ", or",
|
"uploader.or": ", or",
|
||||||
"uploader.processing": "Processing",
|
"uploader.processing": "Processing",
|
||||||
"uploader.queue-lenght": "Queue length"
|
"uploader.queue-length": "Queue length",
|
||||||
}
|
}
|
@@ -2,6 +2,7 @@
|
|||||||
"404.help": "De pagina die u zoekt kan niet gevonden worden. De pagina werd mogelijk verplaatst of verwijderd. U kan onderstaande knop gebruiken om terug naar de homepagina te gaan. ",
|
"404.help": "De pagina die u zoekt kan niet gevonden worden. De pagina werd mogelijk verplaatst of verwijderd. U kan onderstaande knop gebruiken om terug naar de homepagina te gaan. ",
|
||||||
"404.link.home-page": "Terug naar de homepagina",
|
"404.link.home-page": "Terug naar de homepagina",
|
||||||
"404.page-not-found": "Pagina niet gevonden",
|
"404.page-not-found": "Pagina niet gevonden",
|
||||||
|
|
||||||
"admin.registries.bitstream-formats.description": "Deze lijst van Bitstream formaten biedt informatie over de formaten die in deze repository zijn toegelaten en op welke manier ze ondersteund worden. De term Bitstream wordt in DSpace gebruikt om een bestand aan te duiden dat samen met metadata onderdeel uitmaakt van een item. De naam bitstream duidt op het feit dat het bestand achterliggend wordt opgeslaan zonder bestandsextensie.",
|
"admin.registries.bitstream-formats.description": "Deze lijst van Bitstream formaten biedt informatie over de formaten die in deze repository zijn toegelaten en op welke manier ze ondersteund worden. De term Bitstream wordt in DSpace gebruikt om een bestand aan te duiden dat samen met metadata onderdeel uitmaakt van een item. De naam bitstream duidt op het feit dat het bestand achterliggend wordt opgeslaan zonder bestandsextensie.",
|
||||||
"admin.registries.bitstream-formats.formats.no-items": "Er kunnen geen bitstreamformaten getoond worden.",
|
"admin.registries.bitstream-formats.formats.no-items": "Er kunnen geen bitstreamformaten getoond worden.",
|
||||||
"admin.registries.bitstream-formats.formats.table.internal": "intern",
|
"admin.registries.bitstream-formats.formats.table.internal": "intern",
|
||||||
@@ -13,6 +14,7 @@
|
|||||||
"admin.registries.bitstream-formats.formats.table.supportLevel.head": "Ondersteuning",
|
"admin.registries.bitstream-formats.formats.table.supportLevel.head": "Ondersteuning",
|
||||||
"admin.registries.bitstream-formats.head": "Bitstream Formaat Register",
|
"admin.registries.bitstream-formats.head": "Bitstream Formaat Register",
|
||||||
"admin.registries.bitstream-formats.title": "DSpace Angular :: Bitstream Formaat Register",
|
"admin.registries.bitstream-formats.title": "DSpace Angular :: Bitstream Formaat Register",
|
||||||
|
|
||||||
"admin.registries.metadata.description": "Het metadataregister omvat de lijst van alle metadatavelden die beschikbaar zijn in het systeem. Deze velden kunnen verspreid zijn over verschillende metadataschema's. Het qualified Dublin Core schema (dc) is een verplicht schema en kan niet worden verwijderd.",
|
"admin.registries.metadata.description": "Het metadataregister omvat de lijst van alle metadatavelden die beschikbaar zijn in het systeem. Deze velden kunnen verspreid zijn over verschillende metadataschema's. Het qualified Dublin Core schema (dc) is een verplicht schema en kan niet worden verwijderd.",
|
||||||
"admin.registries.metadata.head": "Metadata Register",
|
"admin.registries.metadata.head": "Metadata Register",
|
||||||
"admin.registries.metadata.schemas.no-items": "Er kunnen geen metadataschema's getoond worden.",
|
"admin.registries.metadata.schemas.no-items": "Er kunnen geen metadataschema's getoond worden.",
|
||||||
@@ -20,6 +22,7 @@
|
|||||||
"admin.registries.metadata.schemas.table.name": "Naam",
|
"admin.registries.metadata.schemas.table.name": "Naam",
|
||||||
"admin.registries.metadata.schemas.table.namespace": "Naamruimte",
|
"admin.registries.metadata.schemas.table.namespace": "Naamruimte",
|
||||||
"admin.registries.metadata.title": "DSpace Angular :: Metadata Register",
|
"admin.registries.metadata.title": "DSpace Angular :: Metadata Register",
|
||||||
|
|
||||||
"admin.registries.schema.description": "Dit is het metadataschema voor \"{{namespace}}\".",
|
"admin.registries.schema.description": "Dit is het metadataschema voor \"{{namespace}}\".",
|
||||||
"admin.registries.schema.fields.head": "Schema metadatavelden",
|
"admin.registries.schema.fields.head": "Schema metadatavelden",
|
||||||
"admin.registries.schema.fields.no-items": "Er kunnen geen metadatavelden getoond worden.",
|
"admin.registries.schema.fields.no-items": "Er kunnen geen metadatavelden getoond worden.",
|
||||||
@@ -27,15 +30,20 @@
|
|||||||
"admin.registries.schema.fields.table.scopenote": "Opmerking over bereik",
|
"admin.registries.schema.fields.table.scopenote": "Opmerking over bereik",
|
||||||
"admin.registries.schema.head": "Metadata Schema",
|
"admin.registries.schema.head": "Metadata Schema",
|
||||||
"admin.registries.schema.title": "DSpace Angular :: Metadata Schema Register",
|
"admin.registries.schema.title": "DSpace Angular :: Metadata Schema Register",
|
||||||
|
|
||||||
"auth.errors.invalid-user": "Ongeldig e-mailadres of wachtwoord.",
|
"auth.errors.invalid-user": "Ongeldig e-mailadres of wachtwoord.",
|
||||||
"auth.messages.expired": "Uw sessie is vervallen. Gelieve opnieuw aan te melden.",
|
"auth.messages.expired": "Uw sessie is vervallen. Gelieve opnieuw aan te melden.",
|
||||||
|
|
||||||
"browse.title": "Verken {{ collection }} volgens {{ field }} {{ value }}",
|
"browse.title": "Verken {{ collection }} volgens {{ field }} {{ value }}",
|
||||||
|
|
||||||
"collection.page.browse.recent.head": "Recent toegevoegd",
|
"collection.page.browse.recent.head": "Recent toegevoegd",
|
||||||
"collection.page.license": "Licentie",
|
"collection.page.license": "Licentie",
|
||||||
"collection.page.news": "Nieuws",
|
"collection.page.news": "Nieuws",
|
||||||
|
|
||||||
"community.page.license": "Licentie",
|
"community.page.license": "Licentie",
|
||||||
"community.page.news": "Nieuws",
|
"community.page.news": "Nieuws",
|
||||||
"community.sub-collection-list.head": "Collecties in deze Community",
|
"community.sub-collection-list.head": "Collecties in deze Community",
|
||||||
|
|
||||||
"error.browse-by": "Fout bij het ophalen van items",
|
"error.browse-by": "Fout bij het ophalen van items",
|
||||||
"error.collection": "Fout bij het ophalen van een collectie",
|
"error.collection": "Fout bij het ophalen van een collectie",
|
||||||
"error.community": "Fout bij het ophalen van een community",
|
"error.community": "Fout bij het ophalen van een community",
|
||||||
@@ -48,9 +56,11 @@
|
|||||||
"error.top-level-communities": "Fout bij het inladen van communities op het hoogste niveau",
|
"error.top-level-communities": "Fout bij het inladen van communities op het hoogste niveau",
|
||||||
"error.validation.license.notgranted": "U moet de invoerlicentie goedkeuren om de invoer af te werken. Indien u deze licentie momenteel niet kan of mag goedkeuren, kan u uw werk opslaan en de invoer later afwerken. U kunt dit nieuwe item ook verwijderen indien u niet voldoet aan de vereisten van de invoerlicentie.",
|
"error.validation.license.notgranted": "U moet de invoerlicentie goedkeuren om de invoer af te werken. Indien u deze licentie momenteel niet kan of mag goedkeuren, kan u uw werk opslaan en de invoer later afwerken. U kunt dit nieuwe item ook verwijderen indien u niet voldoet aan de vereisten van de invoerlicentie.",
|
||||||
"error.validation.pattern": "Deze invoer is niet toegelaten volgens dit patroon: {{ pattern }}.",
|
"error.validation.pattern": "Deze invoer is niet toegelaten volgens dit patroon: {{ pattern }}.",
|
||||||
|
|
||||||
"footer.copyright": "copyright © 2002-{{ year }}",
|
"footer.copyright": "copyright © 2002-{{ year }}",
|
||||||
"footer.link.dspace": "DSpace software",
|
"footer.link.dspace": "DSpace software",
|
||||||
"footer.link.duraspace": "DuraSpace",
|
"footer.link.duraspace": "DuraSpace",
|
||||||
|
|
||||||
"form.cancel": "Annuleer",
|
"form.cancel": "Annuleer",
|
||||||
"form.first-name": "Voornaam",
|
"form.first-name": "Voornaam",
|
||||||
"form.group-collapse": "Inklappen",
|
"form.group-collapse": "Inklappen",
|
||||||
@@ -64,10 +74,12 @@
|
|||||||
"form.remove": "Verwijder",
|
"form.remove": "Verwijder",
|
||||||
"form.search": "Zoek",
|
"form.search": "Zoek",
|
||||||
"form.submit": "Verstuur",
|
"form.submit": "Verstuur",
|
||||||
|
|
||||||
"home.description": "",
|
"home.description": "",
|
||||||
"home.title": "DSpace Angular :: Home",
|
"home.title": "DSpace Angular :: Home",
|
||||||
"home.top-level-communities.head": "Communities in DSpace",
|
"home.top-level-communities.head": "Communities in DSpace",
|
||||||
"home.top-level-communities.help": "Selecteer een community om diens collecties te verkennen.",
|
"home.top-level-communities.help": "Selecteer een community om diens collecties te verkennen.",
|
||||||
|
|
||||||
"item.page.abstract": "Abstract",
|
"item.page.abstract": "Abstract",
|
||||||
"item.page.author": "Auteur",
|
"item.page.author": "Auteur",
|
||||||
"item.page.collections": "Collecties",
|
"item.page.collections": "Collecties",
|
||||||
@@ -81,6 +93,7 @@
|
|||||||
"item.page.link.full": "Volledige itemweergave",
|
"item.page.link.full": "Volledige itemweergave",
|
||||||
"item.page.link.simple": "Eenvoudige itemweergave",
|
"item.page.link.simple": "Eenvoudige itemweergave",
|
||||||
"item.page.uri": "URI",
|
"item.page.uri": "URI",
|
||||||
|
|
||||||
"loading.browse-by": "Items worden ingeladen...",
|
"loading.browse-by": "Items worden ingeladen...",
|
||||||
"loading.collection": "Collectie wordt ingeladen...",
|
"loading.collection": "Collectie wordt ingeladen...",
|
||||||
"loading.community": "Community wordt ingeladen...",
|
"loading.community": "Community wordt ingeladen...",
|
||||||
@@ -91,6 +104,7 @@
|
|||||||
"loading.search-results": "Zoekresultaten worden ingeladen...",
|
"loading.search-results": "Zoekresultaten worden ingeladen...",
|
||||||
"loading.sub-collections": "De sub-collecties worden ingeladen...",
|
"loading.sub-collections": "De sub-collecties worden ingeladen...",
|
||||||
"loading.top-level-communities": "Inladen van de Communities op het hoogste niveau...",
|
"loading.top-level-communities": "Inladen van de Communities op het hoogste niveau...",
|
||||||
|
|
||||||
"login.form.email": "Email adres",
|
"login.form.email": "Email adres",
|
||||||
"login.form.forgot-password": "Bent u uw wachtwoord vergeten?",
|
"login.form.forgot-password": "Bent u uw wachtwoord vergeten?",
|
||||||
"login.form.header": "Gelieve in te loggen in DSpace",
|
"login.form.header": "Gelieve in te loggen in DSpace",
|
||||||
@@ -98,17 +112,23 @@
|
|||||||
"login.form.password": "Wachtwoord",
|
"login.form.password": "Wachtwoord",
|
||||||
"login.form.submit": "Aanmelden",
|
"login.form.submit": "Aanmelden",
|
||||||
"login.title": "Aanmelden",
|
"login.title": "Aanmelden",
|
||||||
|
|
||||||
"logout.form.header": "Afmelden in DSpace",
|
"logout.form.header": "Afmelden in DSpace",
|
||||||
"logout.form.submit": "Afmelden",
|
"logout.form.submit": "Afmelden",
|
||||||
"logout.title": "Afmelden",
|
"logout.title": "Afmelden",
|
||||||
|
|
||||||
"nav.home": "Home",
|
"nav.home": "Home",
|
||||||
"nav.login": "Log In",
|
"nav.login": "Log In",
|
||||||
"nav.logout": "Log Uit",
|
"nav.logout": "Log Uit",
|
||||||
|
|
||||||
"pagination.results-per-page": "Resultaten per pagina",
|
"pagination.results-per-page": "Resultaten per pagina",
|
||||||
"pagination.showing.detail": "{{ range }} van {{ total }}",
|
"pagination.showing.detail": "{{ range }} van {{ total }}",
|
||||||
"pagination.showing.label": "Resultaten ",
|
"pagination.showing.label": "Resultaten ",
|
||||||
"pagination.sort-direction": "Sorteermogelijkheden",
|
"pagination.sort-direction": "Sorteermogelijkheden",
|
||||||
|
|
||||||
"search.description": "",
|
"search.description": "",
|
||||||
|
"search.title": "DSpace Angular :: Zoek",
|
||||||
|
|
||||||
"search.filters.applied.f.author": "Auteur",
|
"search.filters.applied.f.author": "Auteur",
|
||||||
"search.filters.applied.f.dateIssued.max": "Einddatum",
|
"search.filters.applied.f.dateIssued.max": "Einddatum",
|
||||||
"search.filters.applied.f.dateIssued.min": "Startdatum",
|
"search.filters.applied.f.dateIssued.min": "Startdatum",
|
||||||
@@ -126,12 +146,16 @@
|
|||||||
"search.filters.filter.show-more": "Toon meer",
|
"search.filters.filter.show-more": "Toon meer",
|
||||||
"search.filters.filter.subject.head": "Onderwerp",
|
"search.filters.filter.subject.head": "Onderwerp",
|
||||||
"search.filters.filter.subject.placeholder": "Onderwerp",
|
"search.filters.filter.subject.placeholder": "Onderwerp",
|
||||||
|
|
||||||
"search.filters.head": "Filters",
|
"search.filters.head": "Filters",
|
||||||
"search.filters.reset": "Filters verwijderen",
|
"search.filters.reset": "Filters verwijderen",
|
||||||
|
|
||||||
"search.form.search": "Zoek",
|
"search.form.search": "Zoek",
|
||||||
"search.form.search_dspace": "Zoek in DSpace",
|
"search.form.search_dspace": "Zoek in DSpace",
|
||||||
|
|
||||||
"search.results.head": "Zoekresultaten",
|
"search.results.head": "Zoekresultaten",
|
||||||
"search.results.no-results": "Er waren geen resultaten voor deze zoekopdracht",
|
"search.results.no-results": "Er waren geen resultaten voor deze zoekopdracht",
|
||||||
|
|
||||||
"search.sidebar.close": "Terug naar de resultaten",
|
"search.sidebar.close": "Terug naar de resultaten",
|
||||||
"search.sidebar.filters.title": "Filters",
|
"search.sidebar.filters.title": "Filters",
|
||||||
"search.sidebar.open": "Zoek Tools",
|
"search.sidebar.open": "Zoek Tools",
|
||||||
@@ -139,11 +163,13 @@
|
|||||||
"search.sidebar.settings.rpp": "Resultaten per pagina",
|
"search.sidebar.settings.rpp": "Resultaten per pagina",
|
||||||
"search.sidebar.settings.sort-by": "Sorteer volgens",
|
"search.sidebar.settings.sort-by": "Sorteer volgens",
|
||||||
"search.sidebar.settings.title": "Instellingen",
|
"search.sidebar.settings.title": "Instellingen",
|
||||||
"search.title": "DSpace Angular :: Zoek",
|
|
||||||
"search.view-switch.show-grid": "Toon in raster",
|
"search.view-switch.show-grid": "Toon in raster",
|
||||||
"search.view-switch.show-list": "Toon als lijst",
|
"search.view-switch.show-list": "Toon als lijst",
|
||||||
|
|
||||||
"sorting.dc.title.ASC": "Oplopend op titel",
|
"sorting.dc.title.ASC": "Oplopend op titel",
|
||||||
"sorting.dc.title.DESC": "Aflopend op titel",
|
"sorting.dc.title.DESC": "Aflopend op titel",
|
||||||
"sorting.score.DESC": "Relevantie",
|
"sorting.score.DESC": "Relevantie",
|
||||||
"title": "DSpace"
|
|
||||||
|
"title": "DSpace",
|
||||||
}
|
}
|
@@ -20,6 +20,7 @@ import { ItemRelationshipsComponent } from './item-relationships/item-relationsh
|
|||||||
import { EditRelationshipComponent } from './item-relationships/edit-relationship/edit-relationship.component';
|
import { EditRelationshipComponent } from './item-relationships/edit-relationship/edit-relationship.component';
|
||||||
import { EditRelationshipListComponent } from './item-relationships/edit-relationship-list/edit-relationship-list.component';
|
import { EditRelationshipListComponent } from './item-relationships/edit-relationship-list/edit-relationship-list.component';
|
||||||
import { AbstractItemUpdateComponent } from './abstract-item-update/abstract-item-update.component';
|
import { AbstractItemUpdateComponent } from './abstract-item-update/abstract-item-update.component';
|
||||||
|
import { ItemMoveComponent } from './item-move/item-move.component';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Module that contains all components related to the Edit Item page administrator functionality
|
* Module that contains all components related to the Edit Item page administrator functionality
|
||||||
@@ -49,7 +50,8 @@ import { AbstractItemUpdateComponent } from './abstract-item-update/abstract-ite
|
|||||||
ItemEditBitstreamComponent,
|
ItemEditBitstreamComponent,
|
||||||
EditInPlaceFieldComponent,
|
EditInPlaceFieldComponent,
|
||||||
EditRelationshipComponent,
|
EditRelationshipComponent,
|
||||||
EditRelationshipListComponent
|
EditRelationshipListComponent,
|
||||||
|
ItemMoveComponent,
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class EditItemPageModule {
|
export class EditItemPageModule {
|
||||||
|
@@ -10,6 +10,7 @@ import { ItemDeleteComponent } from './item-delete/item-delete.component';
|
|||||||
import { ItemStatusComponent } from './item-status/item-status.component';
|
import { ItemStatusComponent } from './item-status/item-status.component';
|
||||||
import { ItemMetadataComponent } from './item-metadata/item-metadata.component';
|
import { ItemMetadataComponent } from './item-metadata/item-metadata.component';
|
||||||
import { ItemBitstreamsComponent } from './item-bitstreams/item-bitstreams.component';
|
import { ItemBitstreamsComponent } from './item-bitstreams/item-bitstreams.component';
|
||||||
|
import { ItemMoveComponent } from './item-move/item-move.component';
|
||||||
import { ItemRelationshipsComponent } from './item-relationships/item-relationships.component';
|
import { ItemRelationshipsComponent } from './item-relationships/item-relationships.component';
|
||||||
|
|
||||||
const ITEM_EDIT_WITHDRAW_PATH = 'withdraw';
|
const ITEM_EDIT_WITHDRAW_PATH = 'withdraw';
|
||||||
@@ -17,6 +18,7 @@ const ITEM_EDIT_REINSTATE_PATH = 'reinstate';
|
|||||||
const ITEM_EDIT_PRIVATE_PATH = 'private';
|
const ITEM_EDIT_PRIVATE_PATH = 'private';
|
||||||
const ITEM_EDIT_PUBLIC_PATH = 'public';
|
const ITEM_EDIT_PUBLIC_PATH = 'public';
|
||||||
const ITEM_EDIT_DELETE_PATH = 'delete';
|
const ITEM_EDIT_DELETE_PATH = 'delete';
|
||||||
|
const ITEM_EDIT_MOVE_PATH = 'move';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Routing module that handles the routing for the Edit Item page administrator functionality
|
* Routing module that handles the routing for the Edit Item page administrator functionality
|
||||||
@@ -104,6 +106,14 @@ const ITEM_EDIT_DELETE_PATH = 'delete';
|
|||||||
resolve: {
|
resolve: {
|
||||||
item: ItemPageResolver
|
item: ItemPageResolver
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: ITEM_EDIT_MOVE_PATH,
|
||||||
|
component: ItemMoveComponent,
|
||||||
|
data: { title: 'item.edit.move.title' },
|
||||||
|
resolve: {
|
||||||
|
item: ItemPageResolver
|
||||||
|
}
|
||||||
}])
|
}])
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
<span>{{metadata?.key?.split('.').join('.​')}}</span>
|
<span>{{metadata?.key?.split('.').join('.​')}}</span>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="(editable | async)" class="field-container">
|
<div *ngIf="(editable | async)" class="field-container">
|
||||||
<ds-input-suggestions [suggestions]="(metadataFieldSuggestions | async)"
|
<ds-filter-input-suggestions [suggestions]="(metadataFieldSuggestions | async)"
|
||||||
[(ngModel)]="metadata.key"
|
[(ngModel)]="metadata.key"
|
||||||
(submitSuggestion)="update(suggestionControl)"
|
(submitSuggestion)="update(suggestionControl)"
|
||||||
(clickSuggestion)="update(suggestionControl)"
|
(clickSuggestion)="update(suggestionControl)"
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
[valid]="(valid | async) !== false"
|
[valid]="(valid | async) !== false"
|
||||||
dsAutoFocus autoFocusSelector=".suggestion_input"
|
dsAutoFocus autoFocusSelector=".suggestion_input"
|
||||||
[ngModelOptions]="{standalone: true}"
|
[ngModelOptions]="{standalone: true}"
|
||||||
></ds-input-suggestions>
|
></ds-filter-input-suggestions>
|
||||||
</div>
|
</div>
|
||||||
<small class="text-danger"
|
<small class="text-danger"
|
||||||
*ngIf="(valid | async) === false">{{"item.edit.metadata.metadatafield.invalid" | translate}}</small>
|
*ngIf="(valid | async) === false">{{"item.edit.metadata.metadatafield.invalid" | translate}}</small>
|
||||||
|
@@ -10,7 +10,6 @@ import { By } from '@angular/platform-browser';
|
|||||||
import { FormsModule } from '@angular/forms';
|
import { FormsModule } from '@angular/forms';
|
||||||
import { SharedModule } from '../../../../shared/shared.module';
|
import { SharedModule } from '../../../../shared/shared.module';
|
||||||
import { getTestScheduler } from 'jasmine-marbles';
|
import { getTestScheduler } from 'jasmine-marbles';
|
||||||
import { InputSuggestion } from '../../../../shared/input-suggestions/input-suggestions.model';
|
|
||||||
import { TestScheduler } from 'rxjs/testing';
|
import { TestScheduler } from 'rxjs/testing';
|
||||||
import { FieldChangeType } from '../../../../core/data/object-updates/object-updates.actions';
|
import { FieldChangeType } from '../../../../core/data/object-updates/object-updates.actions';
|
||||||
import { TranslateModule } from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
@@ -18,6 +17,7 @@ import { MetadatumViewModel } from '../../../../core/shared/metadata.models';
|
|||||||
import { MetadataSchema } from '../../../../core/metadata/metadata-schema.model';
|
import { MetadataSchema } from '../../../../core/metadata/metadata-schema.model';
|
||||||
import { MetadataField } from '../../../../core/metadata/metadata-field.model';
|
import { MetadataField } from '../../../../core/metadata/metadata-field.model';
|
||||||
import { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils';
|
import { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils';
|
||||||
|
import { InputSuggestion } from '../../../../shared/input-suggestions/input-suggestions.model';
|
||||||
|
|
||||||
let comp: EditInPlaceFieldComponent;
|
let comp: EditInPlaceFieldComponent;
|
||||||
let fixture: ComponentFixture<EditInPlaceFieldComponent>;
|
let fixture: ComponentFixture<EditInPlaceFieldComponent>;
|
||||||
|
@@ -4,13 +4,13 @@ import { RegistryService } from '../../../../core/registry/registry.service';
|
|||||||
import { cloneDeep } from 'lodash';
|
import { cloneDeep } from 'lodash';
|
||||||
import { BehaviorSubject, Observable, of as observableOf } from 'rxjs';
|
import { BehaviorSubject, Observable, of as observableOf } from 'rxjs';
|
||||||
import { map, take } from 'rxjs/operators';
|
import { map, take } from 'rxjs/operators';
|
||||||
import { InputSuggestion } from '../../../../shared/input-suggestions/input-suggestions.model';
|
|
||||||
import { FieldChangeType } from '../../../../core/data/object-updates/object-updates.actions';
|
import { FieldChangeType } from '../../../../core/data/object-updates/object-updates.actions';
|
||||||
import { FieldUpdate } from '../../../../core/data/object-updates/object-updates.reducer';
|
import { FieldUpdate } from '../../../../core/data/object-updates/object-updates.reducer';
|
||||||
import { ObjectUpdatesService } from '../../../../core/data/object-updates/object-updates.service';
|
import { ObjectUpdatesService } from '../../../../core/data/object-updates/object-updates.service';
|
||||||
import { NgModel } from '@angular/forms';
|
import { NgModel } from '@angular/forms';
|
||||||
import { MetadatumViewModel } from '../../../../core/shared/metadata.models';
|
import { MetadatumViewModel } from '../../../../core/shared/metadata.models';
|
||||||
import { MetadataField } from '../../../../core/metadata/metadata-field.model';
|
import { MetadataField } from '../../../../core/metadata/metadata-field.model';
|
||||||
|
import { InputSuggestion } from '../../../../shared/input-suggestions/input-suggestions.model';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
// tslint:disable-next-line:component-selector
|
// tslint:disable-next-line:component-selector
|
||||||
|
@@ -0,0 +1,48 @@
|
|||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12">
|
||||||
|
<h2>{{'item.edit.move.head' | translate: {id: (itemRD$ | async)?.payload?.handle} }}</h2>
|
||||||
|
<p>{{'item.edit.move.description' | translate}}</p>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12">
|
||||||
|
<ds-dso-input-suggestions #f id="search-form"
|
||||||
|
[suggestions]="(collectionSearchResults | async)"
|
||||||
|
[placeholder]="'item.edit.move.search.placeholder'| translate"
|
||||||
|
[action]="getCurrentUrl()"
|
||||||
|
[name]="'item-move'"
|
||||||
|
[(ngModel)]="selectedCollectionName"
|
||||||
|
(clickSuggestion)="onClick($event)"
|
||||||
|
(typeSuggestion)="resetCollection($event)"
|
||||||
|
(findSuggestions)="findSuggestions($event)"
|
||||||
|
(click)="f.open()"
|
||||||
|
ngDefaultControl>
|
||||||
|
</ds-dso-input-suggestions>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12">
|
||||||
|
<p>
|
||||||
|
<input type="checkbox" name="tc" [(ngModel)]="inheritPolicies" id="inheritPoliciesCheckbox">
|
||||||
|
<label for="inheritPoliciesCheckbox">{{'item.edit.move.inheritpolicies.checkbox' |
|
||||||
|
translate}}</label>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
{{'item.edit.move.inheritpolicies.description' | translate}}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button (click)="moveCollection()" class="btn btn-primary" [disabled]=!canSubmit>
|
||||||
|
<span *ngIf="!processing"> {{'item.edit.move.move' | translate}}</span>
|
||||||
|
<span *ngIf="processing"><i class='fas fa-circle-notch fa-spin'></i>
|
||||||
|
{{'item.edit.move.processing' | translate}}
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
<button [routerLink]="['/items/', (itemRD$ | async)?.payload?.id, 'edit']"
|
||||||
|
class="btn btn-outline-secondary">
|
||||||
|
{{'item.edit.move.cancel' | translate}}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
@@ -0,0 +1,172 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { Item } from '../../../core/shared/item.model';
|
||||||
|
import { RouterStub } from '../../../shared/testing/router-stub';
|
||||||
|
import { CommonModule } from '@angular/common';
|
||||||
|
import { RouterTestingModule } from '@angular/router/testing';
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { ItemMoveComponent } from './item-move.component';
|
||||||
|
import { NotificationsServiceStub } from '../../../shared/testing/notifications-service-stub';
|
||||||
|
import { NotificationsService } from '../../../shared/notifications/notifications.service';
|
||||||
|
import { SearchService } from '../../../+search-page/search-service/search.service';
|
||||||
|
import { of as observableOf } from 'rxjs';
|
||||||
|
import { FormsModule } from '@angular/forms';
|
||||||
|
import { ItemDataService } from '../../../core/data/item-data.service';
|
||||||
|
import { RemoteData } from '../../../core/data/remote-data';
|
||||||
|
import { PaginatedList } from '../../../core/data/paginated-list';
|
||||||
|
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||||
|
import { RestResponse } from '../../../core/cache/response.models';
|
||||||
|
import { Collection } from '../../../core/shared/collection.model';
|
||||||
|
|
||||||
|
describe('ItemMoveComponent', () => {
|
||||||
|
let comp: ItemMoveComponent;
|
||||||
|
let fixture: ComponentFixture<ItemMoveComponent>;
|
||||||
|
|
||||||
|
const mockItem = Object.assign(new Item(), {
|
||||||
|
id: 'fake-id',
|
||||||
|
handle: 'fake/handle',
|
||||||
|
lastModified: '2018'
|
||||||
|
});
|
||||||
|
|
||||||
|
const itemPageUrl = `fake-url/${mockItem.id}`;
|
||||||
|
const routerStub = Object.assign(new RouterStub(), {
|
||||||
|
url: `${itemPageUrl}/edit`
|
||||||
|
});
|
||||||
|
|
||||||
|
const mockItemDataService = jasmine.createSpyObj({
|
||||||
|
moveToCollection: observableOf(new RestResponse(true, 200, 'Success'))
|
||||||
|
});
|
||||||
|
|
||||||
|
const mockItemDataServiceFail = jasmine.createSpyObj({
|
||||||
|
moveToCollection: observableOf(new RestResponse(false, 500, 'Internal server error'))
|
||||||
|
});
|
||||||
|
|
||||||
|
const routeStub = {
|
||||||
|
data: observableOf({
|
||||||
|
item: new RemoteData(false, false, true, null, {
|
||||||
|
id: 'item1'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
const collection1 = Object.assign(new Collection(),{
|
||||||
|
uuid: 'collection-uuid-1',
|
||||||
|
name: 'Test collection 1',
|
||||||
|
self: 'self-link-1',
|
||||||
|
});
|
||||||
|
|
||||||
|
const collection2 = Object.assign(new Collection(),{
|
||||||
|
uuid: 'collection-uuid-2',
|
||||||
|
name: 'Test collection 2',
|
||||||
|
self: 'self-link-2',
|
||||||
|
});
|
||||||
|
|
||||||
|
const mockSearchService = {
|
||||||
|
search: () => {
|
||||||
|
return observableOf(new RemoteData(false, false, true, null,
|
||||||
|
new PaginatedList(null, [
|
||||||
|
{
|
||||||
|
indexableObject: collection1,
|
||||||
|
hitHighlights: {}
|
||||||
|
}, {
|
||||||
|
indexableObject: collection2,
|
||||||
|
hitHighlights: {}
|
||||||
|
}
|
||||||
|
])));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const notificationsServiceStub = new NotificationsServiceStub();
|
||||||
|
|
||||||
|
describe('ItemMoveComponent success', () => {
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [CommonModule, FormsModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule.forRoot()],
|
||||||
|
declarations: [ItemMoveComponent],
|
||||||
|
providers: [
|
||||||
|
{provide: ActivatedRoute, useValue: routeStub},
|
||||||
|
{provide: Router, useValue: routerStub},
|
||||||
|
{provide: ItemDataService, useValue: mockItemDataService},
|
||||||
|
{provide: NotificationsService, useValue: notificationsServiceStub},
|
||||||
|
{provide: SearchService, useValue: mockSearchService},
|
||||||
|
], schemas: [
|
||||||
|
CUSTOM_ELEMENTS_SCHEMA
|
||||||
|
]
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(ItemMoveComponent);
|
||||||
|
comp = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
it('should load suggestions', () => {
|
||||||
|
const expected = [
|
||||||
|
collection1,
|
||||||
|
collection2
|
||||||
|
];
|
||||||
|
|
||||||
|
comp.collectionSearchResults.subscribe((value) => {
|
||||||
|
expect(value).toEqual(expected);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
it('should get current url ', () => {
|
||||||
|
expect(comp.getCurrentUrl()).toEqual('fake-url/fake-id/edit');
|
||||||
|
});
|
||||||
|
it('should on click select the correct collection name and id', () => {
|
||||||
|
const data = collection1;
|
||||||
|
|
||||||
|
comp.onClick(data);
|
||||||
|
|
||||||
|
expect(comp.selectedCollectionName).toEqual('Test collection 1');
|
||||||
|
expect(comp.selectedCollection).toEqual(collection1);
|
||||||
|
});
|
||||||
|
describe('moveCollection', () => {
|
||||||
|
it('should call itemDataService.moveToCollection', () => {
|
||||||
|
comp.itemId = 'item-id';
|
||||||
|
comp.selectedCollectionName = 'selected-collection-id';
|
||||||
|
comp.selectedCollection = collection1;
|
||||||
|
comp.moveCollection();
|
||||||
|
|
||||||
|
expect(mockItemDataService.moveToCollection).toHaveBeenCalledWith('item-id', collection1);
|
||||||
|
});
|
||||||
|
it('should call notificationsService success message on success', () => {
|
||||||
|
comp.moveCollection();
|
||||||
|
|
||||||
|
expect(notificationsServiceStub.success).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('ItemMoveComponent fail', () => {
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [CommonModule, FormsModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule.forRoot()],
|
||||||
|
declarations: [ItemMoveComponent],
|
||||||
|
providers: [
|
||||||
|
{provide: ActivatedRoute, useValue: routeStub},
|
||||||
|
{provide: Router, useValue: routerStub},
|
||||||
|
{provide: ItemDataService, useValue: mockItemDataServiceFail},
|
||||||
|
{provide: NotificationsService, useValue: notificationsServiceStub},
|
||||||
|
{provide: SearchService, useValue: mockSearchService},
|
||||||
|
], schemas: [
|
||||||
|
CUSTOM_ELEMENTS_SCHEMA
|
||||||
|
]
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(ItemMoveComponent);
|
||||||
|
comp = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should call notificationsService error message on fail', () => {
|
||||||
|
comp.moveCollection();
|
||||||
|
|
||||||
|
expect(notificationsServiceStub.error).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@@ -0,0 +1,139 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { SearchService } from '../../../+search-page/search-service/search.service';
|
||||||
|
import { first, map } from 'rxjs/operators';
|
||||||
|
import { DSpaceObjectType } from '../../../core/shared/dspace-object-type.model';
|
||||||
|
import { SearchOptions } from '../../../+search-page/search-options.model';
|
||||||
|
import { RemoteData } from '../../../core/data/remote-data';
|
||||||
|
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
|
||||||
|
import { PaginatedList } from '../../../core/data/paginated-list';
|
||||||
|
import { SearchResult } from '../../../+search-page/search-result.model';
|
||||||
|
import { Item } from '../../../core/shared/item.model';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { NotificationsService } from '../../../shared/notifications/notifications.service';
|
||||||
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
import { getSucceededRemoteData } from '../../../core/shared/operators';
|
||||||
|
import { ItemDataService } from '../../../core/data/item-data.service';
|
||||||
|
import { getItemEditPath } from '../../item-page-routing.module';
|
||||||
|
import { Observable, of as observableOf } from 'rxjs';
|
||||||
|
import { RestResponse } from '../../../core/cache/response.models';
|
||||||
|
import { Collection } from '../../../core/shared/collection.model';
|
||||||
|
import { tap } from 'rxjs/internal/operators/tap';
|
||||||
|
import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
|
||||||
|
import { PaginatedSearchOptions } from '../../../+search-page/paginated-search-options.model';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'ds-item-move',
|
||||||
|
templateUrl: './item-move.component.html'
|
||||||
|
})
|
||||||
|
/**
|
||||||
|
* Component that handles the moving of an item to a different collection
|
||||||
|
*/
|
||||||
|
export class ItemMoveComponent implements OnInit {
|
||||||
|
/**
|
||||||
|
* TODO: There is currently no backend support to change the owningCollection and inherit policies,
|
||||||
|
* TODO: when this is added, the inherit policies option should be used.
|
||||||
|
*/
|
||||||
|
|
||||||
|
selectorType = DSpaceObjectType.COLLECTION;
|
||||||
|
|
||||||
|
inheritPolicies = false;
|
||||||
|
itemRD$: Observable<RemoteData<Item>>;
|
||||||
|
collectionSearchResults: Observable<any[]> = observableOf([]);
|
||||||
|
selectedCollectionName: string;
|
||||||
|
selectedCollection: Collection;
|
||||||
|
canSubmit = false;
|
||||||
|
|
||||||
|
itemId: string;
|
||||||
|
processing = false;
|
||||||
|
|
||||||
|
pagination = new PaginationComponentOptions();
|
||||||
|
|
||||||
|
constructor(private route: ActivatedRoute,
|
||||||
|
private router: Router,
|
||||||
|
private notificationsService: NotificationsService,
|
||||||
|
private itemDataService: ItemDataService,
|
||||||
|
private searchService: SearchService,
|
||||||
|
private translateService: TranslateService) {
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.itemRD$ = this.route.data.pipe(map((data) => data.item), getSucceededRemoteData()) as Observable<RemoteData<Item>>;
|
||||||
|
this.itemRD$.subscribe((rd) => {
|
||||||
|
this.itemId = rd.payload.id;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
this.pagination.pageSize = 5;
|
||||||
|
this.loadSuggestions('');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find suggestions based on entered query
|
||||||
|
* @param query - Search query
|
||||||
|
*/
|
||||||
|
findSuggestions(query): void {
|
||||||
|
this.loadSuggestions(query);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load all available collections to move the item to.
|
||||||
|
* TODO: When the API support it, only fetch collections where user has ADD rights to.
|
||||||
|
*/
|
||||||
|
loadSuggestions(query): void {
|
||||||
|
this.collectionSearchResults = this.searchService.search(new PaginatedSearchOptions({
|
||||||
|
pagination: this.pagination,
|
||||||
|
dsoType: DSpaceObjectType.COLLECTION,
|
||||||
|
query: query
|
||||||
|
})).pipe(
|
||||||
|
first(),
|
||||||
|
map((rd: RemoteData<PaginatedList<SearchResult<DSpaceObject>>>) => {
|
||||||
|
return rd.payload.page.map((searchResult) => {
|
||||||
|
return searchResult.indexableObject
|
||||||
|
})
|
||||||
|
}) ,
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the collection name and id based on the selected value
|
||||||
|
* @param data - obtained from the ds-input-suggestions component
|
||||||
|
*/
|
||||||
|
onClick(data: any): void {
|
||||||
|
this.selectedCollection = data;
|
||||||
|
this.selectedCollectionName = data.name;
|
||||||
|
this.canSubmit = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns {string} the current URL
|
||||||
|
*/
|
||||||
|
getCurrentUrl() {
|
||||||
|
return this.router.url;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Moves the item to a new collection based on the selected collection
|
||||||
|
*/
|
||||||
|
moveCollection() {
|
||||||
|
this.processing = true;
|
||||||
|
this.itemDataService.moveToCollection(this.itemId, this.selectedCollection).pipe(first()).subscribe(
|
||||||
|
(response: RestResponse) => {
|
||||||
|
this.router.navigate([getItemEditPath(this.itemId)]);
|
||||||
|
if (response.isSuccessful) {
|
||||||
|
this.notificationsService.success(this.translateService.get('item.edit.move.success'));
|
||||||
|
} else {
|
||||||
|
this.notificationsService.error(this.translateService.get('item.edit.move.error'));
|
||||||
|
}
|
||||||
|
this.processing = false;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resets the can submit when the user changes the content of the input field
|
||||||
|
* @param data
|
||||||
|
*/
|
||||||
|
resetCollection(data: any) {
|
||||||
|
this.canSubmit = false;
|
||||||
|
}
|
||||||
|
}
|
@@ -4,7 +4,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="!operation.disabled" class="col-9 float-left action-button">
|
<div *ngIf="!operation.disabled" class="col-9 float-left action-button">
|
||||||
<a class="btn btn-outline-secondary" href="{{operation.operationUrl}}">
|
<a class="btn btn-outline-secondary" [routerLink]="operation.operationUrl">
|
||||||
{{'item.edit.tabs.status.buttons.' + operation.operationKey + '.button' | translate}}
|
{{'item.edit.tabs.status.buttons.' + operation.operationKey + '.button' | translate}}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -1,8 +1,9 @@
|
|||||||
import {ItemOperation} from './itemOperation.model';
|
import { ItemOperation } from './itemOperation.model';
|
||||||
import {async, TestBed} from '@angular/core/testing';
|
import { async, TestBed } from '@angular/core/testing';
|
||||||
import {ItemOperationComponent} from './item-operation.component';
|
import { ItemOperationComponent } from './item-operation.component';
|
||||||
import {TranslateModule} from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
import {By} from '@angular/platform-browser';
|
import { By } from '@angular/platform-browser';
|
||||||
|
import { RouterTestingModule } from '@angular/router/testing';
|
||||||
|
|
||||||
describe('ItemOperationComponent', () => {
|
describe('ItemOperationComponent', () => {
|
||||||
let itemOperation: ItemOperation;
|
let itemOperation: ItemOperation;
|
||||||
@@ -12,7 +13,7 @@ describe('ItemOperationComponent', () => {
|
|||||||
|
|
||||||
beforeEach(async(() => {
|
beforeEach(async(() => {
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
imports: [TranslateModule.forRoot()],
|
imports: [TranslateModule.forRoot(), RouterTestingModule.withRoutes([])],
|
||||||
declarations: [ItemOperationComponent]
|
declarations: [ItemOperationComponent]
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
}));
|
}));
|
||||||
|
@@ -79,6 +79,7 @@ export class ItemStatusComponent implements OnInit {
|
|||||||
this.operations.push(new ItemOperation('public', this.getCurrentUrl(item) + '/public'));
|
this.operations.push(new ItemOperation('public', this.getCurrentUrl(item) + '/public'));
|
||||||
}
|
}
|
||||||
this.operations.push(new ItemOperation('delete', this.getCurrentUrl(item) + '/delete'));
|
this.operations.push(new ItemOperation('delete', this.getCurrentUrl(item) + '/delete'));
|
||||||
|
this.operations.push(new ItemOperation('move', this.getCurrentUrl(item) + '/move'));
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -82,9 +82,6 @@ describe('MyDSpacePageComponent', () => {
|
|||||||
expand: () => this.isCollapsed = observableOf(false)
|
expand: () => this.isCollapsed = observableOf(false)
|
||||||
};
|
};
|
||||||
const mockFixedFilterService: SearchFixedFilterService = {
|
const mockFixedFilterService: SearchFixedFilterService = {
|
||||||
getQueryByFilterName: (filter: string) => {
|
|
||||||
return observableOf(undefined)
|
|
||||||
}
|
|
||||||
} as SearchFixedFilterService;
|
} as SearchFixedFilterService;
|
||||||
|
|
||||||
beforeEach(async(() => {
|
beforeEach(async(() => {
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
| translate}}</a>
|
| translate}}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ds-input-suggestions [suggestions]="(filterSearchResults | async)"
|
<ds-filter-input-suggestions [suggestions]="(filterSearchResults | async)"
|
||||||
[placeholder]="'search.filters.filter.' + filterConfig.name + '.placeholder'| translate"
|
[placeholder]="'search.filters.filter.' + filterConfig.name + '.placeholder'| translate"
|
||||||
[action]="currentUrl"
|
[action]="currentUrl"
|
||||||
[name]="filterConfig.paramName"
|
[name]="filterConfig.paramName"
|
||||||
@@ -23,5 +23,5 @@
|
|||||||
(submitSuggestion)="onSubmit($event)"
|
(submitSuggestion)="onSubmit($event)"
|
||||||
(clickSuggestion)="onSubmit($event)"
|
(clickSuggestion)="onSubmit($event)"
|
||||||
(findSuggestions)="findSuggestions($event)"
|
(findSuggestions)="findSuggestions($event)"
|
||||||
ngDefaultControl></ds-input-suggestions>
|
ngDefaultControl></ds-filter-input-suggestions>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -21,9 +21,9 @@ import { SearchService } from '../../../search-service/search.service';
|
|||||||
import { FILTER_CONFIG, IN_PLACE_SEARCH, SearchFilterService } from '../search-filter.service';
|
import { FILTER_CONFIG, IN_PLACE_SEARCH, SearchFilterService } from '../search-filter.service';
|
||||||
import { SearchConfigurationService } from '../../../search-service/search-configuration.service';
|
import { SearchConfigurationService } from '../../../search-service/search-configuration.service';
|
||||||
import { getSucceededRemoteData } from '../../../../core/shared/operators';
|
import { getSucceededRemoteData } from '../../../../core/shared/operators';
|
||||||
import { InputSuggestion } from '../../../../shared/input-suggestions/input-suggestions.model';
|
|
||||||
import { SearchOptions } from '../../../search-options.model';
|
import { SearchOptions } from '../../../search-options.model';
|
||||||
import { SEARCH_CONFIG_SERVICE } from '../../../../+my-dspace-page/my-dspace-page.component';
|
import { SEARCH_CONFIG_SERVICE } from '../../../../+my-dspace-page/my-dspace-page.component';
|
||||||
|
import { InputSuggestion } from '../../../../shared/input-suggestions/input-suggestions.model';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-search-facet-filter',
|
selector: 'ds-search-facet-filter',
|
||||||
|
@@ -28,11 +28,7 @@ describe('SearchFilterService', () => {
|
|||||||
pageSize: 2
|
pageSize: 2
|
||||||
});
|
});
|
||||||
|
|
||||||
const mockFixedFilterService: SearchFixedFilterService = {
|
const mockFixedFilterService: SearchFixedFilterService = {} as SearchFixedFilterService
|
||||||
getQueryByFilterName: (filter: string) => {
|
|
||||||
return observableOf(undefined)
|
|
||||||
}
|
|
||||||
} as SearchFixedFilterService
|
|
||||||
const value1 = 'random value';
|
const value1 = 'random value';
|
||||||
// const value2 = 'another value';
|
// const value2 = 'another value';
|
||||||
const store: Store<SearchFiltersState> = jasmine.createSpyObj('store', {
|
const store: Store<SearchFiltersState> = jasmine.createSpyObj('store', {
|
||||||
@@ -264,20 +260,6 @@ describe('SearchFilterService', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the getCurrentFixedFilter method is called', () => {
|
|
||||||
const filter = 'filter';
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
spyOn(routeServiceStub, 'getRouteParameterValue').and.returnValue(observableOf(filter));
|
|
||||||
spyOn(mockFixedFilterService, 'getQueryByFilterName').and.returnValue(observableOf(filter));
|
|
||||||
service.getCurrentFixedFilter().subscribe();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should call getQueryByFilterName on the fixed-filter service with the correct filter', () => {
|
|
||||||
expect(mockFixedFilterService.getQueryByFilterName).toHaveBeenCalledWith(filter);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the getCurrentView method is called', () => {
|
describe('when the getCurrentView method is called', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
spyOn(routeServiceStub, 'getQueryParameterValue');
|
spyOn(routeServiceStub, 'getQueryParameterValue');
|
||||||
|
@@ -113,15 +113,6 @@ export class SearchFilterService {
|
|||||||
return this.routeService.getQueryParamsWithPrefix('f.');
|
return this.routeService.getQueryParamsWithPrefix('f.');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Fetch the current active fixed filter from the route parameters and return the query by filter name
|
|
||||||
* @returns {Observable<string>}
|
|
||||||
*/
|
|
||||||
getCurrentFixedFilter(): Observable<string> {
|
|
||||||
const filter: Observable<string> = this.routeService.getRouteParameterValue('filter');
|
|
||||||
return filter.pipe(mergeMap((f) => this.fixedFilterService.getQueryByFilterName(f)));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetch the current view from the query parameters
|
* Fetch the current view from the query parameters
|
||||||
* @returns {Observable<string>}
|
* @returns {Observable<string>}
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
import { SearchFixedFilterService } from './search-fixed-filter.service';
|
import { SearchFixedFilterService } from './search-fixed-filter.service';
|
||||||
import { RequestService } from '../../../core/data/request.service';
|
import { RequestService } from '../../../core/data/request.service';
|
||||||
import { HALEndpointService } from '../../../core/shared/hal-endpoint.service';
|
|
||||||
import { of as observableOf } from 'rxjs';
|
import { of as observableOf } from 'rxjs';
|
||||||
import { RequestEntry } from '../../../core/data/request.reducer';
|
import { RequestEntry } from '../../../core/data/request.reducer';
|
||||||
import { FilteredDiscoveryQueryResponse } from '../../../core/cache/response.models';
|
import { FilteredDiscoveryQueryResponse } from '../../../core/cache/response.models';
|
||||||
@@ -20,28 +19,9 @@ describe('SearchFixedFilterService', () => {
|
|||||||
response: new FilteredDiscoveryQueryResponse(filterQuery, 200, 'OK')
|
response: new FilteredDiscoveryQueryResponse(filterQuery, 200, 'OK')
|
||||||
}))
|
}))
|
||||||
}) as RequestService;
|
}) as RequestService;
|
||||||
const halServiceStub = Object.assign(new HALEndpointService(requestServiceStub, undefined), {
|
|
||||||
getEndpoint: () => observableOf('fake-url')
|
|
||||||
});
|
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
service = new SearchFixedFilterService(requestServiceStub, halServiceStub);
|
service = new SearchFixedFilterService();
|
||||||
});
|
|
||||||
|
|
||||||
describe('when getQueryByFilterName is called with a filterName', () => {
|
|
||||||
it('should return the filter query', () => {
|
|
||||||
service.getQueryByFilterName('filter').subscribe((query) => {
|
|
||||||
expect(query).toBe(filterQuery);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when getQueryByFilterName is called without a filterName', () => {
|
|
||||||
it('should return undefined', () => {
|
|
||||||
service.getQueryByFilterName(undefined).subscribe((query) => {
|
|
||||||
expect(query).toBeUndefined();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when getQueryByRelations is called', () => {
|
describe('when getQueryByRelations is called', () => {
|
||||||
|
@@ -1,61 +1,10 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { map, switchMap } from 'rxjs/operators';
|
|
||||||
import { Observable, of as observableOf } from 'rxjs';
|
|
||||||
import { HALEndpointService } from '../../../core/shared/hal-endpoint.service';
|
|
||||||
import { GetRequest, RestRequest } from '../../../core/data/request.models';
|
|
||||||
import { RequestService } from '../../../core/data/request.service';
|
|
||||||
import { ResponseParsingService } from '../../../core/data/parsing.service';
|
|
||||||
import { GenericConstructor } from '../../../core/shared/generic-constructor';
|
|
||||||
import { FilteredDiscoveryPageResponseParsingService } from '../../../core/data/filtered-discovery-page-response-parsing.service';
|
|
||||||
import { hasValue } from '../../../shared/empty.util';
|
|
||||||
import { configureRequest, getResponseFromEntry } from '../../../core/shared/operators';
|
|
||||||
import { FilteredDiscoveryQueryResponse } from '../../../core/cache/response.models';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Service for performing actions on the filtered-discovery-pages REST endpoint
|
* Service for performing actions on the filtered-discovery-pages REST endpoint
|
||||||
*/
|
*/
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class SearchFixedFilterService {
|
export class SearchFixedFilterService {
|
||||||
private queryByFilterPath = 'filtered-discovery-pages';
|
|
||||||
|
|
||||||
constructor(protected requestService: RequestService,
|
|
||||||
private halService: HALEndpointService) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the filter query for a certain filter by name
|
|
||||||
* @param {string} filterName Name of the filter
|
|
||||||
* @returns {Observable<string>} Filter query
|
|
||||||
*/
|
|
||||||
getQueryByFilterName(filterName: string): Observable<string> {
|
|
||||||
if (hasValue(filterName)) {
|
|
||||||
const requestUuid = this.requestService.generateRequestId();
|
|
||||||
const requestObs = this.halService.getEndpoint(this.queryByFilterPath).pipe(
|
|
||||||
map((url: string) => {
|
|
||||||
url += ('/' + filterName);
|
|
||||||
const request = new GetRequest(requestUuid, url);
|
|
||||||
return Object.assign(request, {
|
|
||||||
getResponseParser(): GenericConstructor<ResponseParsingService> {
|
|
||||||
return FilteredDiscoveryPageResponseParsingService;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}),
|
|
||||||
configureRequest(this.requestService)
|
|
||||||
);
|
|
||||||
|
|
||||||
const requestEntryObs = requestObs.pipe(
|
|
||||||
switchMap((request: RestRequest) => this.requestService.getByHref(request.href)),
|
|
||||||
);
|
|
||||||
const filterQuery = requestEntryObs.pipe(
|
|
||||||
getResponseFromEntry(),
|
|
||||||
map((response: FilteredDiscoveryQueryResponse) =>
|
|
||||||
response.filterQuery
|
|
||||||
));
|
|
||||||
return filterQuery;
|
|
||||||
}
|
|
||||||
return observableOf(undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the query for looking up items by relation type
|
* Get the query for looking up items by relation type
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
| translate}}</a>
|
| translate}}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ds-input-suggestions [suggestions]="(filterSearchResults | async)"
|
<ds-filter-input-suggestions [suggestions]="(filterSearchResults | async)"
|
||||||
[placeholder]="'search.filters.filter.' + filterConfig.name + '.placeholder'| translate"
|
[placeholder]="'search.filters.filter.' + filterConfig.name + '.placeholder'| translate"
|
||||||
[action]="currentUrl"
|
[action]="currentUrl"
|
||||||
[name]="filterConfig.paramName"
|
[name]="filterConfig.paramName"
|
||||||
@@ -24,5 +24,5 @@
|
|||||||
(clickSuggestion)="onClick($event)"
|
(clickSuggestion)="onClick($event)"
|
||||||
(findSuggestions)="findSuggestions($event)"
|
(findSuggestions)="findSuggestions($event)"
|
||||||
ngDefaultControl
|
ngDefaultControl
|
||||||
></ds-input-suggestions>
|
></ds-filter-input-suggestions>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
| translate}}</a>
|
| translate}}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ds-input-suggestions [suggestions]="(filterSearchResults | async)"
|
<ds-filter-input-suggestions [suggestions]="(filterSearchResults | async)"
|
||||||
[placeholder]="'search.filters.filter.' + filterConfig.name + '.placeholder'| translate"
|
[placeholder]="'search.filters.filter.' + filterConfig.name + '.placeholder'| translate"
|
||||||
[action]="currentUrl"
|
[action]="currentUrl"
|
||||||
[name]="filterConfig.paramName"
|
[name]="filterConfig.paramName"
|
||||||
@@ -23,5 +23,5 @@
|
|||||||
(submitSuggestion)="onSubmit($event)"
|
(submitSuggestion)="onSubmit($event)"
|
||||||
(clickSuggestion)="onClick($event)"
|
(clickSuggestion)="onClick($event)"
|
||||||
(findSuggestions)="findSuggestions($event)"
|
(findSuggestions)="findSuggestions($event)"
|
||||||
ngDefaultControl></ds-input-suggestions>
|
ngDefaultControl></ds-filter-input-suggestions>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -89,11 +89,7 @@ const routeServiceStub = {
|
|||||||
return observableOf('')
|
return observableOf('')
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const mockFixedFilterService: SearchFixedFilterService = {
|
const mockFixedFilterService: SearchFixedFilterService = {} as SearchFixedFilterService;
|
||||||
getQueryByFilterName: (filter: string) => {
|
|
||||||
return observableOf(undefined)
|
|
||||||
}
|
|
||||||
} as SearchFixedFilterService;
|
|
||||||
|
|
||||||
export function configureSearchComponentTestingModule(compType) {
|
export function configureSearchComponentTestingModule(compType) {
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
|
@@ -163,12 +163,4 @@ describe('SearchConfigurationService', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when getCurrentFixedFilter is called', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
service.getCurrentFixedFilter();
|
|
||||||
});
|
|
||||||
it('should call getRouteParameterValue on the routeService with parameter name \'filter\'', () => {
|
|
||||||
expect((service as any).routeService.getRouteParameterValue).toHaveBeenCalledWith('filter');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
@@ -205,15 +205,6 @@ export class SearchConfigurationService implements OnDestroy {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @returns {Observable<string>} Emits the current fixed filter as a string
|
|
||||||
*/
|
|
||||||
getCurrentFixedFilter(): Observable<string> {
|
|
||||||
return this.routeService.getRouteParameterValue('filter').pipe(
|
|
||||||
switchMap((f) => this.fixedFilterService.getQueryByFilterName(f))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @returns {Observable<Params>} Emits the current active filters with their values as they are displayed in the frontend URL
|
* @returns {Observable<Params>} Emits the current active filters with their values as they are displayed in the frontend URL
|
||||||
*/
|
*/
|
||||||
@@ -233,7 +224,6 @@ export class SearchConfigurationService implements OnDestroy {
|
|||||||
this.getQueryPart(defaults.query),
|
this.getQueryPart(defaults.query),
|
||||||
this.getDSOTypePart(),
|
this.getDSOTypePart(),
|
||||||
this.getFiltersPart(),
|
this.getFiltersPart(),
|
||||||
this.getFixedFilterPart()
|
|
||||||
).subscribe((update) => {
|
).subscribe((update) => {
|
||||||
const currentValue: SearchOptions = this.searchOptions.getValue();
|
const currentValue: SearchOptions = this.searchOptions.getValue();
|
||||||
const updatedValue: SearchOptions = Object.assign(currentValue, update);
|
const updatedValue: SearchOptions = Object.assign(currentValue, update);
|
||||||
@@ -255,7 +245,6 @@ export class SearchConfigurationService implements OnDestroy {
|
|||||||
this.getQueryPart(defaults.query),
|
this.getQueryPart(defaults.query),
|
||||||
this.getDSOTypePart(),
|
this.getDSOTypePart(),
|
||||||
this.getFiltersPart(),
|
this.getFiltersPart(),
|
||||||
this.getFixedFilterPart()
|
|
||||||
).subscribe((update) => {
|
).subscribe((update) => {
|
||||||
const currentValue: PaginatedSearchOptions = this.paginatedSearchOptions.getValue();
|
const currentValue: PaginatedSearchOptions = this.paginatedSearchOptions.getValue();
|
||||||
const updatedValue: PaginatedSearchOptions = Object.assign(currentValue, update);
|
const updatedValue: PaginatedSearchOptions = Object.assign(currentValue, update);
|
||||||
@@ -352,16 +341,4 @@ export class SearchConfigurationService implements OnDestroy {
|
|||||||
return { filters }
|
return { filters }
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @returns {Observable<string>} Emits the current fixed filter as a partial SearchOptions object
|
|
||||||
*/
|
|
||||||
private getFixedFilterPart(): Observable<any> {
|
|
||||||
return this.getCurrentFixedFilter().pipe(
|
|
||||||
isNotEmptyOperator(),
|
|
||||||
map((fixedFilter) => {
|
|
||||||
return { fixedFilter }
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
import { distinctUntilChanged, filter, map, switchMap, take } from 'rxjs/operators';
|
import { distinctUntilChanged, filter, map, switchMap, take, find } from 'rxjs/operators';
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
import { isNotEmpty } from '../../shared/empty.util';
|
import { hasValue, isNotEmpty } from '../../shared/empty.util';
|
||||||
import { BrowseService } from '../browse/browse.service';
|
import { BrowseService } from '../browse/browse.service';
|
||||||
import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service';
|
import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service';
|
||||||
import { CoreState } from '../core.reducers';
|
import { CoreState } from '../core.reducers';
|
||||||
@@ -12,11 +12,11 @@ import { URLCombiner } from '../url-combiner/url-combiner';
|
|||||||
import { DataService } from './data.service';
|
import { DataService } from './data.service';
|
||||||
import { RequestService } from './request.service';
|
import { RequestService } from './request.service';
|
||||||
import { HALEndpointService } from '../shared/hal-endpoint.service';
|
import { HALEndpointService } from '../shared/hal-endpoint.service';
|
||||||
import { FindAllOptions, GetRequest, PatchRequest, RestRequest } from './request.models';
|
import { FindAllOptions, GetRequest, PatchRequest, PutRequest, RestRequest } from './request.models';
|
||||||
import { ObjectCacheService } from '../cache/object-cache.service';
|
import { ObjectCacheService } from '../cache/object-cache.service';
|
||||||
import { NotificationsService } from '../../shared/notifications/notifications.service';
|
import { NotificationsService } from '../../shared/notifications/notifications.service';
|
||||||
import { DSOChangeAnalyzer } from './dso-change-analyzer.service';
|
import { DSOChangeAnalyzer } from './dso-change-analyzer.service';
|
||||||
import { HttpClient } from '@angular/common/http';
|
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
||||||
import { NormalizedObjectBuildService } from '../cache/builders/normalized-object-build.service';
|
import { NormalizedObjectBuildService } from '../cache/builders/normalized-object-build.service';
|
||||||
import { configureRequest, getRequestFromRequestHref } from '../shared/operators';
|
import { configureRequest, getRequestFromRequestHref } from '../shared/operators';
|
||||||
import { RequestEntry } from './request.reducer';
|
import { RequestEntry } from './request.reducer';
|
||||||
@@ -24,6 +24,9 @@ import { PaginatedSearchOptions } from '../../+search-page/paginated-search-opti
|
|||||||
import { RemoteData } from './remote-data';
|
import { RemoteData } from './remote-data';
|
||||||
import { PaginatedList } from './paginated-list';
|
import { PaginatedList } from './paginated-list';
|
||||||
import { Bitstream } from '../shared/bitstream.model';
|
import { Bitstream } from '../shared/bitstream.model';
|
||||||
|
import { Collection } from '../shared/collection.model';
|
||||||
|
import { RestResponse } from '../cache/response.models';
|
||||||
|
import { HttpOptions } from '../dspace-rest-v2/dspace-rest-v2.service';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class ItemDataService extends DataService<Item> {
|
export class ItemDataService extends DataService<Item> {
|
||||||
@@ -152,4 +155,42 @@ export class ItemDataService extends DataService<Item> {
|
|||||||
return this.rdbService.buildList<Bitstream>(hrefObs);
|
return this.rdbService.buildList<Bitstream>(hrefObs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the endpoint to move the item
|
||||||
|
* @param itemId
|
||||||
|
*/
|
||||||
|
public getMoveItemEndpoint(itemId: string): Observable<string> {
|
||||||
|
return this.halService.getEndpoint(this.linkPath).pipe(
|
||||||
|
map((endpoint: string) => this.getIDHref(endpoint, itemId)),
|
||||||
|
map((endpoint: string) => `${endpoint}/owningCollection`)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move the item to a different owning collection
|
||||||
|
* @param itemId
|
||||||
|
* @param collection
|
||||||
|
*/
|
||||||
|
public moveToCollection(itemId: string, collection: Collection): Observable<RestResponse> {
|
||||||
|
const options: HttpOptions = Object.create({});
|
||||||
|
let headers = new HttpHeaders();
|
||||||
|
headers = headers.append('Content-Type', 'text/uri-list');
|
||||||
|
options.headers = headers;
|
||||||
|
|
||||||
|
const requestId = this.requestService.generateRequestId();
|
||||||
|
const hrefObs = this.getMoveItemEndpoint(itemId);
|
||||||
|
|
||||||
|
hrefObs.pipe(
|
||||||
|
find((href: string) => hasValue(href)),
|
||||||
|
map((href: string) => {
|
||||||
|
const request = new PutRequest(requestId, href, collection.self, options);
|
||||||
|
this.requestService.configure(request);
|
||||||
|
})
|
||||||
|
).subscribe();
|
||||||
|
|
||||||
|
return this.requestService.getByUUID(requestId).pipe(
|
||||||
|
find((request: RequestEntry) => request.completed),
|
||||||
|
map((request: RequestEntry) => request.response)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,25 @@
|
|||||||
|
<form #form="ngForm" (ngSubmit)="onSubmit(currentObject)"
|
||||||
|
[action]="action" (keydown)="onKeydown($event)"
|
||||||
|
(keydown.arrowdown)="shiftFocusDown($event)"
|
||||||
|
(keydown.arrowup)="shiftFocusUp($event)" (keydown.esc)="close()"
|
||||||
|
(dsClickOutside)="close();">
|
||||||
|
<input #inputField type="text" [(ngModel)]="value" [name]="name"
|
||||||
|
class="form-control suggestion_input mb-2"
|
||||||
|
[ngClass]="{'is-invalid': !valid}"
|
||||||
|
[dsDebounce]="debounceTime" (onDebounce)="find($event)"
|
||||||
|
[placeholder]="placeholder"
|
||||||
|
[ngModelOptions]="{standalone: true}" autocomplete="off"/>
|
||||||
|
<input type="submit" class="d-none"/>
|
||||||
|
<div class="autocomplete dropdown-menu" [ngClass]="{'show': (show | async) && isNotEmpty(suggestions)}">
|
||||||
|
<div class="dropdown-list">
|
||||||
|
<div *ngFor="let suggestionOption of suggestions">
|
||||||
|
<button class="d-block dropdown-item" (click)="onClickSuggestion(suggestionOption)" #suggestion>
|
||||||
|
<div class="click-blocker">
|
||||||
|
</div>
|
||||||
|
<ds-wrapper-list-element [object]="suggestionOption"></ds-wrapper-list-element>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
@@ -0,0 +1,71 @@
|
|||||||
|
import { ChangeDetectionStrategy, DebugElement, NO_ERRORS_SCHEMA } from '@angular/core';
|
||||||
|
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
import { By } from '@angular/platform-browser';
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { FormsModule } from '@angular/forms';
|
||||||
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
|
import { RouterTestingModule } from '@angular/router/testing';
|
||||||
|
import { DsoInputSuggestionsComponent } from './dso-input-suggestions.component';
|
||||||
|
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
|
||||||
|
|
||||||
|
describe('DsoInputSuggestionsComponent', () => {
|
||||||
|
|
||||||
|
let comp: DsoInputSuggestionsComponent;
|
||||||
|
let fixture: ComponentFixture<DsoInputSuggestionsComponent>;
|
||||||
|
let de: DebugElement;
|
||||||
|
let el: HTMLElement;
|
||||||
|
|
||||||
|
const dso1 = {
|
||||||
|
uuid: 'test-uuid-1',
|
||||||
|
name: 'test-name-1'
|
||||||
|
} as DSpaceObject;
|
||||||
|
|
||||||
|
const dso2 = {
|
||||||
|
uuid: 'test-uuid-2',
|
||||||
|
name: 'test-name-2'
|
||||||
|
} as DSpaceObject;
|
||||||
|
|
||||||
|
const dso3 = {
|
||||||
|
uuid: 'test-uuid-3',
|
||||||
|
name: 'test-name-3'
|
||||||
|
} as DSpaceObject;
|
||||||
|
|
||||||
|
const suggestions = [dso1, dso2, dso3];
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [TranslateModule.forRoot(), RouterTestingModule.withRoutes([]), NoopAnimationsModule, FormsModule],
|
||||||
|
declarations: [DsoInputSuggestionsComponent],
|
||||||
|
providers: [],
|
||||||
|
schemas: [NO_ERRORS_SCHEMA]
|
||||||
|
}).overrideComponent(DsoInputSuggestionsComponent, {
|
||||||
|
set: {changeDetection: ChangeDetectionStrategy.Default}
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(DsoInputSuggestionsComponent);
|
||||||
|
|
||||||
|
comp = fixture.componentInstance; // LoadingComponent test instance
|
||||||
|
comp.suggestions = suggestions;
|
||||||
|
// query for the message <label> by CSS element selector
|
||||||
|
de = fixture.debugElement;
|
||||||
|
el = de.nativeElement;
|
||||||
|
comp.show.next(true);
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('when an element is clicked', () => {
|
||||||
|
const clickedIndex = 0;
|
||||||
|
beforeEach(() => {
|
||||||
|
spyOn(comp, 'onClickSuggestion');
|
||||||
|
const clickedLink = de.query(By.css('.dropdown-list > div:nth-child(' + (clickedIndex + 1) + ') button'));
|
||||||
|
clickedLink.triggerEventHandler('click', {});
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
it('should call onClickSuggestion() with the suggestion as a parameter', () => {
|
||||||
|
expect(comp.onClickSuggestion).toHaveBeenCalledWith(suggestions[clickedIndex]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@@ -0,0 +1,47 @@
|
|||||||
|
import { Component, forwardRef, Input } from '@angular/core';
|
||||||
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
||||||
|
import { InputSuggestionsComponent } from '../input-suggestions.component';
|
||||||
|
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'ds-dso-input-suggestions',
|
||||||
|
styleUrls: ['./../input-suggestions.component.scss'],
|
||||||
|
templateUrl: './dso-input-suggestions.component.html',
|
||||||
|
providers: [
|
||||||
|
{
|
||||||
|
provide: NG_VALUE_ACCESSOR,
|
||||||
|
// Usage of forwardRef necessary https://github.com/angular/angular.io/issues/1151
|
||||||
|
// tslint:disable-next-line:no-forward-ref
|
||||||
|
useExisting: forwardRef(() => DsoInputSuggestionsComponent),
|
||||||
|
multi: true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Component representing a form with a autocomplete functionality for DSpaceObjects
|
||||||
|
*/
|
||||||
|
export class DsoInputSuggestionsComponent extends InputSuggestionsComponent {
|
||||||
|
/**
|
||||||
|
* The suggestions that should be shown
|
||||||
|
*/
|
||||||
|
@Input() suggestions: DSpaceObject[] = [];
|
||||||
|
|
||||||
|
currentObject: DSpaceObject;
|
||||||
|
|
||||||
|
onSubmit(data: DSpaceObject) {
|
||||||
|
this.value = data.name;
|
||||||
|
this.currentObject = data;
|
||||||
|
this.submitSuggestion.emit(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
onClickSuggestion(data: DSpaceObject) {
|
||||||
|
this.value = data.name;
|
||||||
|
this.currentObject = data;
|
||||||
|
this.clickSuggestion.emit(data);
|
||||||
|
this.close();
|
||||||
|
this.blockReopen = true;
|
||||||
|
this.queryInput.nativeElement.focus();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,22 @@
|
|||||||
|
<form #form="ngForm" (ngSubmit)="onSubmit(value)"
|
||||||
|
[action]="action" (keydown)="onKeydown($event)"
|
||||||
|
(keydown.arrowdown)="shiftFocusDown($event)"
|
||||||
|
(keydown.arrowup)="shiftFocusUp($event)" (keydown.esc)="close()"
|
||||||
|
(dsClickOutside)="close();">
|
||||||
|
<input #inputField type="text" [(ngModel)]="value" [name]="name"
|
||||||
|
class="form-control suggestion_input"
|
||||||
|
[ngClass]="{'is-invalid': !valid}"
|
||||||
|
[dsDebounce]="debounceTime" (onDebounce)="find($event)"
|
||||||
|
[placeholder]="placeholder"
|
||||||
|
[ngModelOptions]="{standalone: true}" autocomplete="off"/>
|
||||||
|
<input type="submit" class="d-none"/>
|
||||||
|
<div class="autocomplete dropdown-menu" [ngClass]="{'show': (show | async) && isNotEmpty(suggestions)}">
|
||||||
|
<div class="dropdown-list">
|
||||||
|
<div *ngFor="let suggestionOption of suggestions">
|
||||||
|
<a href="#" class="d-block dropdown-item" (click)="onClickSuggestion(suggestionOption.value)" #suggestion>
|
||||||
|
<span [innerHTML]="suggestionOption.displayValue"></span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
@@ -0,0 +1,57 @@
|
|||||||
|
import { ChangeDetectionStrategy, DebugElement, NO_ERRORS_SCHEMA } from '@angular/core';
|
||||||
|
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
import { By } from '@angular/platform-browser';
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
import { FormsModule } from '@angular/forms';
|
||||||
|
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
|
import { RouterTestingModule } from '@angular/router/testing';
|
||||||
|
import { FilterInputSuggestionsComponent } from './filter-input-suggestions.component';
|
||||||
|
|
||||||
|
describe('FilterInputSuggestionsComponent', () => {
|
||||||
|
|
||||||
|
let comp: FilterInputSuggestionsComponent;
|
||||||
|
let fixture: ComponentFixture<FilterInputSuggestionsComponent>;
|
||||||
|
let de: DebugElement;
|
||||||
|
let el: HTMLElement;
|
||||||
|
const suggestions = [{displayValue: 'suggestion uno', value: 'suggestion uno'}, {
|
||||||
|
displayValue: 'suggestion dos',
|
||||||
|
value: 'suggestion dos'
|
||||||
|
}, {displayValue: 'suggestion tres', value: 'suggestion tres'}];
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [TranslateModule.forRoot(), RouterTestingModule.withRoutes([]), NoopAnimationsModule, FormsModule],
|
||||||
|
declarations: [FilterInputSuggestionsComponent],
|
||||||
|
providers: [],
|
||||||
|
schemas: [NO_ERRORS_SCHEMA]
|
||||||
|
}).overrideComponent(FilterInputSuggestionsComponent, {
|
||||||
|
set: {changeDetection: ChangeDetectionStrategy.Default}
|
||||||
|
}).compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(FilterInputSuggestionsComponent);
|
||||||
|
|
||||||
|
comp = fixture.componentInstance; // LoadingComponent test instance
|
||||||
|
comp.suggestions = suggestions;
|
||||||
|
// query for the message <label> by CSS element selector
|
||||||
|
de = fixture.debugElement;
|
||||||
|
el = de.nativeElement;
|
||||||
|
comp.show.next(true);
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('when an element is clicked', () => {
|
||||||
|
const clickedIndex = 0;
|
||||||
|
beforeEach(() => {
|
||||||
|
spyOn(comp, 'onClickSuggestion');
|
||||||
|
const clickedLink = de.query(By.css('.dropdown-list > div:nth-child(' + (clickedIndex + 1) + ') a'));
|
||||||
|
clickedLink.triggerEventHandler('click', {});
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
it('should call onClickSuggestion() with the suggestion as a parameter', () => {
|
||||||
|
expect(comp.onClickSuggestion).toHaveBeenCalledWith(suggestions[clickedIndex].value);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@@ -0,0 +1,44 @@
|
|||||||
|
import { Component, forwardRef, Input } from '@angular/core';
|
||||||
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
||||||
|
import { InputSuggestionsComponent } from '../input-suggestions.component';
|
||||||
|
import { InputSuggestion } from '../input-suggestions.model';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'ds-filter-input-suggestions',
|
||||||
|
styleUrls: ['./../input-suggestions.component.scss'],
|
||||||
|
templateUrl: './filter-input-suggestions.component.html',
|
||||||
|
providers: [
|
||||||
|
{
|
||||||
|
provide: NG_VALUE_ACCESSOR,
|
||||||
|
// Usage of forwardRef necessary https://github.com/angular/angular.io/issues/1151
|
||||||
|
// tslint:disable-next-line:no-forward-ref
|
||||||
|
useExisting: forwardRef(() => FilterInputSuggestionsComponent),
|
||||||
|
multi: true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Component representing a form with a autocomplete functionality
|
||||||
|
*/
|
||||||
|
export class FilterInputSuggestionsComponent extends InputSuggestionsComponent {
|
||||||
|
/**
|
||||||
|
* The suggestions that should be shown
|
||||||
|
*/
|
||||||
|
@Input() suggestions: InputSuggestion[] = [];
|
||||||
|
|
||||||
|
onSubmit(data) {
|
||||||
|
this.value = data;
|
||||||
|
this.submitSuggestion.emit(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
onClickSuggestion(data) {
|
||||||
|
this.value = data;
|
||||||
|
this.clickSuggestion.emit(data);
|
||||||
|
this.close();
|
||||||
|
this.blockReopen = true;
|
||||||
|
this.queryInput.nativeElement.focus();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -1,12 +1,23 @@
|
|||||||
.autocomplete {
|
.autocomplete {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
.dropdown-item {
|
.dropdown-item {
|
||||||
white-space: normal;
|
white-space: normal;
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
padding: $input-padding-y $input-padding-x;
|
padding: $input-padding-y $input-padding-x;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.click-blocker {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -13,22 +13,11 @@ import {
|
|||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { BehaviorSubject } from 'rxjs';
|
import { BehaviorSubject } from 'rxjs';
|
||||||
import { hasValue, isNotEmpty } from '../empty.util';
|
import { hasValue, isNotEmpty } from '../empty.util';
|
||||||
import { InputSuggestion } from './input-suggestions.model';
|
|
||||||
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
|
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-input-suggestions',
|
selector: 'ds-input-suggestions',
|
||||||
styleUrls: ['./input-suggestions.component.scss'],
|
|
||||||
templateUrl: './input-suggestions.component.html',
|
templateUrl: './input-suggestions.component.html',
|
||||||
providers: [
|
|
||||||
{
|
|
||||||
provide: NG_VALUE_ACCESSOR,
|
|
||||||
// Usage of forwardRef necessary https://github.com/angular/angular.io/issues/1151
|
|
||||||
// tslint:disable-next-line:no-forward-ref
|
|
||||||
useExisting: forwardRef(() => InputSuggestionsComponent),
|
|
||||||
multi: true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
})
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -38,7 +27,7 @@ export class InputSuggestionsComponent implements ControlValueAccessor, OnChange
|
|||||||
/**
|
/**
|
||||||
* The suggestions that should be shown
|
* The suggestions that should be shown
|
||||||
*/
|
*/
|
||||||
@Input() suggestions: InputSuggestion[] = [];
|
@Input() suggestions: any[] = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The time waited to detect if any other input will follow before requesting the suggestions
|
* The time waited to detect if any other input will follow before requesting the suggestions
|
||||||
@@ -188,6 +177,15 @@ export class InputSuggestionsComponent implements ControlValueAccessor, OnChange
|
|||||||
this.show.next(false);
|
this.show.next(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changes the show variable so the suggestion dropdown opens
|
||||||
|
*/
|
||||||
|
open() {
|
||||||
|
if (!this.blockReopen) {
|
||||||
|
this.show.next(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For usage of the isNotEmpty function in the template
|
* For usage of the isNotEmpty function in the template
|
||||||
*/
|
*/
|
||||||
@@ -195,16 +193,15 @@ export class InputSuggestionsComponent implements ControlValueAccessor, OnChange
|
|||||||
return isNotEmpty(data);
|
return isNotEmpty(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onSubmit(data: any) {
|
||||||
|
// sub class should decide how to handle the date
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make sure that if a suggestion is clicked, the suggestions dropdown closes, does not reopen and the focus moves to the input field
|
* Make sure that if a suggestion is clicked, the suggestions dropdown closes, does not reopen and the focus moves to the input field
|
||||||
*/
|
*/
|
||||||
onClickSuggestion(data) {
|
onClickSuggestion(data: any) {
|
||||||
this.value = data;
|
// sub class should decide how to handle the date
|
||||||
this.clickSuggestion.emit(data);
|
|
||||||
this.close();
|
|
||||||
this.blockReopen = true;
|
|
||||||
this.queryInput.nativeElement.focus();
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -219,11 +216,6 @@ export class InputSuggestionsComponent implements ControlValueAccessor, OnChange
|
|||||||
this.blockReopen = false;
|
this.blockReopen = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
onSubmit(data) {
|
|
||||||
this.value = data;
|
|
||||||
this.submitSuggestion.emit(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* START - Method's needed to add ngModel (ControlValueAccessor) to a component */
|
/* START - Method's needed to add ngModel (ControlValueAccessor) to a component */
|
||||||
registerOnChange(fn: any): void {
|
registerOnChange(fn: any): void {
|
||||||
this.propagateChange = fn;
|
this.propagateChange = fn;
|
||||||
|
@@ -139,6 +139,8 @@ import { UserMenuComponent } from './auth-nav-menu/user-menu/user-menu.component
|
|||||||
import { ClaimedTaskActionsReturnToPoolComponent } from './mydspace-actions/claimed-task/return-to-pool/claimed-task-actions-return-to-pool.component';
|
import { ClaimedTaskActionsReturnToPoolComponent } from './mydspace-actions/claimed-task/return-to-pool/claimed-task-actions-return-to-pool.component';
|
||||||
import { ItemDetailPreviewFieldComponent } from './object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component';
|
import { ItemDetailPreviewFieldComponent } from './object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview-field/item-detail-preview-field.component';
|
||||||
import { AbstractTrackableComponent } from './trackable/abstract-trackable.component';
|
import { AbstractTrackableComponent } from './trackable/abstract-trackable.component';
|
||||||
|
import { FilterInputSuggestionsComponent } from './input-suggestions/filter-suggestions/filter-input-suggestions.component';
|
||||||
|
import { DsoInputSuggestionsComponent } from './input-suggestions/dso-input-suggestions/dso-input-suggestions.component';
|
||||||
import { TypedItemSearchResultGridElementComponent } from './object-grid/item-grid-element/item-types/typed-item-search-result-grid-element.component';
|
import { TypedItemSearchResultGridElementComponent } from './object-grid/item-grid-element/item-types/typed-item-search-result-grid-element.component';
|
||||||
import { PublicationGridElementComponent } from './object-grid/item-grid-element/item-types/publication/publication-grid-element.component';
|
import { PublicationGridElementComponent } from './object-grid/item-grid-element/item-types/publication/publication-grid-element.component';
|
||||||
import { ItemTypeBadgeComponent } from './object-list/item-type-badge/item-type-badge.component';
|
import { ItemTypeBadgeComponent } from './object-list/item-type-badge/item-type-badge.component';
|
||||||
@@ -164,7 +166,7 @@ const MODULES = [
|
|||||||
NouisliderModule,
|
NouisliderModule,
|
||||||
MomentModule,
|
MomentModule,
|
||||||
TextMaskModule,
|
TextMaskModule,
|
||||||
MenuModule
|
MenuModule,
|
||||||
];
|
];
|
||||||
|
|
||||||
const ROOT_MODULES = [
|
const ROOT_MODULES = [
|
||||||
@@ -250,6 +252,8 @@ const COMPONENTS = [
|
|||||||
TruncatablePartComponent,
|
TruncatablePartComponent,
|
||||||
BrowseByComponent,
|
BrowseByComponent,
|
||||||
InputSuggestionsComponent,
|
InputSuggestionsComponent,
|
||||||
|
FilterInputSuggestionsComponent,
|
||||||
|
DsoInputSuggestionsComponent,
|
||||||
DSOSelectorComponent,
|
DSOSelectorComponent,
|
||||||
CreateCommunityParentSelectorComponent,
|
CreateCommunityParentSelectorComponent,
|
||||||
CreateCollectionParentSelectorComponent,
|
CreateCollectionParentSelectorComponent,
|
||||||
|
@@ -29,7 +29,7 @@
|
|||||||
<div *ngIf="(isOverBaseDropZone | async) || uploader?.queue?.length !== 0">
|
<div *ngIf="(isOverBaseDropZone | async) || uploader?.queue?.length !== 0">
|
||||||
<div class="m-1">
|
<div class="m-1">
|
||||||
<div class="upload-item-top">
|
<div class="upload-item-top">
|
||||||
<span class="filename">{{'uploader.queue-lenght' | translate}}: {{ uploader?.queue?.length }} | {{ uploader?.queue[0]?.file.name }}</span>
|
<span class="filename">{{'uploader.queue-length' | translate}}: {{ uploader?.queue?.length }} | {{ uploader?.queue[0]?.file.name }}</span>
|
||||||
<div class="btn-group btn-group-sm float-right" role="group">
|
<div class="btn-group btn-group-sm float-right" role="group">
|
||||||
<button type="button" class="btn btn-danger" (click)="uploader.clearQueue()" [disabled]="!uploader.queue.length">
|
<button type="button" class="btn btn-danger" (click)="uploader.clearQueue()" [disabled]="!uploader.queue.length">
|
||||||
<i class="fas fa-trash" aria-hidden="true"></i>
|
<i class="fas fa-trash" aria-hidden="true"></i>
|
||||||
|
@@ -6,7 +6,7 @@ import { RouterModule } from '@angular/router';
|
|||||||
import { REQUEST } from '@nguniversal/express-engine/tokens';
|
import { REQUEST } from '@nguniversal/express-engine/tokens';
|
||||||
|
|
||||||
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
|
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
|
||||||
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
import { TranslateJson5HttpLoader } from '../../ngx-translate-loaders/translate-json5-http.loader';
|
||||||
|
|
||||||
import { IdlePreload, IdlePreloadModule } from 'angular-idle-preload';
|
import { IdlePreload, IdlePreloadModule } from 'angular-idle-preload';
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ import { SubmissionService } from '../../app/submission/submission.service';
|
|||||||
export const REQ_KEY = makeStateKey<string>('req');
|
export const REQ_KEY = makeStateKey<string>('req');
|
||||||
|
|
||||||
export function createTranslateLoader(http: HttpClient) {
|
export function createTranslateLoader(http: HttpClient) {
|
||||||
return new TranslateHttpLoader(http, 'assets/i18n/', '.json');
|
return new TranslateJson5HttpLoader(http, 'assets/i18n/', '.json5');
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getRequest(transferState: TransferState): any {
|
export function getRequest(transferState: TransferState): any {
|
||||||
|
@@ -12,7 +12,7 @@ import { AppModule } from '../../app/app.module';
|
|||||||
import { DSpaceServerTransferStateModule } from '../transfer-state/dspace-server-transfer-state.module';
|
import { DSpaceServerTransferStateModule } from '../transfer-state/dspace-server-transfer-state.module';
|
||||||
import { DSpaceTransferState } from '../transfer-state/dspace-transfer-state.service';
|
import { DSpaceTransferState } from '../transfer-state/dspace-transfer-state.service';
|
||||||
|
|
||||||
import { TranslateUniversalLoader } from '../translate-universal-loader';
|
import { TranslateJson5UniversalLoader } from '../../ngx-translate-loaders/translate-json5-universal.loader';
|
||||||
import { CookieService } from '../../app/core/services/cookie.service';
|
import { CookieService } from '../../app/core/services/cookie.service';
|
||||||
import { ServerCookieService } from '../../app/core/services/server-cookie.service';
|
import { ServerCookieService } from '../../app/core/services/server-cookie.service';
|
||||||
import { AuthService } from '../../app/core/auth/auth.service';
|
import { AuthService } from '../../app/core/auth/auth.service';
|
||||||
@@ -24,7 +24,7 @@ import { SubmissionService } from '../../app/submission/submission.service';
|
|||||||
import { ServerSubmissionService } from '../../app/submission/server-submission.service';
|
import { ServerSubmissionService } from '../../app/submission/server-submission.service';
|
||||||
|
|
||||||
export function createTranslateLoader() {
|
export function createTranslateLoader() {
|
||||||
return new TranslateUniversalLoader('dist/assets/i18n/', '.json');
|
return new TranslateJson5UniversalLoader('dist/assets/i18n/', '.json5');
|
||||||
}
|
}
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
|
15
src/ngx-translate-loaders/translate-json5-http.loader.ts
Normal file
15
src/ngx-translate-loaders/translate-json5-http.loader.ts
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
import { TranslateLoader } from '@ngx-translate/core';
|
||||||
|
import { map } from 'rxjs/operators';
|
||||||
|
import JSON5 from 'json5'
|
||||||
|
|
||||||
|
export class TranslateJson5HttpLoader implements TranslateLoader {
|
||||||
|
constructor(private http: HttpClient, public prefix?: string, public suffix?: string) {
|
||||||
|
}
|
||||||
|
|
||||||
|
getTranslation(lang: string): any {
|
||||||
|
return this.http.get('' + this.prefix + lang + this.suffix, {responseType: 'text'}).pipe(
|
||||||
|
map((json: any) => JSON5.parse(json))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@@ -1,14 +1,15 @@
|
|||||||
import { TranslateLoader } from '@ngx-translate/core';
|
import { TranslateLoader } from '@ngx-translate/core';
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
|
import JSON5 from 'json5'
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
|
|
||||||
export class TranslateUniversalLoader implements TranslateLoader {
|
export class TranslateJson5UniversalLoader implements TranslateLoader {
|
||||||
|
|
||||||
constructor(private prefix: string = 'dist/assets/i18n/', private suffix: string = '.json') { }
|
constructor(private prefix: string = 'dist/assets/i18n/', private suffix: string = '.json') { }
|
||||||
|
|
||||||
public getTranslation(lang: string): Observable<any> {
|
public getTranslation(lang: string): Observable<any> {
|
||||||
return Observable.create((observer: any) => {
|
return Observable.create((observer: any) => {
|
||||||
observer.next(JSON.parse(fs.readFileSync(`${this.prefix}${lang}${this.suffix}`, 'utf8')));
|
observer.next(JSON5.parse(fs.readFileSync(`${this.prefix}${lang}${this.suffix}`, 'utf8')));
|
||||||
observer.complete();
|
observer.complete();
|
||||||
});
|
});
|
||||||
}
|
}
|
59
yarn.lock
59
yarn.lock
@@ -380,6 +380,11 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.1.0.tgz#a8916246aa994db646c66d54c854916213300a51"
|
resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.1.0.tgz#a8916246aa994db646c66d54c854916213300a51"
|
||||||
integrity sha512-vPT5MV1pD71RFUD0ytp6Yw51W6zKJ9Qn2AcJXSD2TZqYKaXUtCxB3WZIXXFZtbAEVMgC59nmvVPSOH0EIvkaZg==
|
integrity sha512-vPT5MV1pD71RFUD0ytp6Yw51W6zKJ9Qn2AcJXSD2TZqYKaXUtCxB3WZIXXFZtbAEVMgC59nmvVPSOH0EIvkaZg==
|
||||||
|
|
||||||
|
"@types/json5@^0.0.30":
|
||||||
|
version "0.0.30"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.30.tgz#44cb52f32a809734ca562e685c6473b5754a7818"
|
||||||
|
integrity sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==
|
||||||
|
|
||||||
"@types/lodash@4.14.74":
|
"@types/lodash@4.14.74":
|
||||||
version "4.14.74"
|
version "4.14.74"
|
||||||
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.74.tgz#ac3bd8db988e7f7038e5d22bd76a7ba13f876168"
|
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.74.tgz#ac3bd8db988e7f7038e5d22bd76a7ba13f876168"
|
||||||
@@ -696,7 +701,7 @@ acorn@^6.0.7:
|
|||||||
|
|
||||||
adjust-sourcemap-loader@^1.1.0:
|
adjust-sourcemap-loader@^1.1.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "http://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.2.0.tgz#e33fde95e50db9f2a802e3647e311d2fc5000c69"
|
resolved "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.2.0.tgz#e33fde95e50db9f2a802e3647e311d2fc5000c69"
|
||||||
integrity sha512-958oaHHVEXMvsY7v7cC5gEkNIcoaAVIhZ4mBReYVZJOTP9IgKmzLjIOhTtzpLMu+qriXvLsVjJ155EeInp45IQ==
|
integrity sha512-958oaHHVEXMvsY7v7cC5gEkNIcoaAVIhZ4mBReYVZJOTP9IgKmzLjIOhTtzpLMu+qriXvLsVjJ155EeInp45IQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
assert "^1.3.0"
|
assert "^1.3.0"
|
||||||
@@ -1891,7 +1896,7 @@ cerialize@0.1.18:
|
|||||||
|
|
||||||
chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
|
chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
|
||||||
version "1.1.3"
|
version "1.1.3"
|
||||||
resolved "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
|
resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
|
||||||
integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
|
integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
|
||||||
dependencies:
|
dependencies:
|
||||||
ansi-styles "^2.2.1"
|
ansi-styles "^2.2.1"
|
||||||
@@ -3584,7 +3589,7 @@ etag@~1.8.1:
|
|||||||
|
|
||||||
event-stream@~3.3.0:
|
event-stream@~3.3.0:
|
||||||
version "3.3.4"
|
version "3.3.4"
|
||||||
resolved "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
|
resolved "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
|
||||||
integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=
|
integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=
|
||||||
dependencies:
|
dependencies:
|
||||||
duplexer "~0.1.1"
|
duplexer "~0.1.1"
|
||||||
@@ -5475,7 +5480,7 @@ is-path-inside@^2.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
path-is-inside "^1.0.2"
|
path-is-inside "^1.0.2"
|
||||||
|
|
||||||
is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
|
is-plain-object@^2.0.4:
|
||||||
version "2.0.4"
|
version "2.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
|
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
|
||||||
integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
|
integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
|
||||||
@@ -5801,6 +5806,13 @@ json5@^1.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
minimist "^1.2.0"
|
minimist "^1.2.0"
|
||||||
|
|
||||||
|
json5@^2.1.0:
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850"
|
||||||
|
integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==
|
||||||
|
dependencies:
|
||||||
|
minimist "^1.2.0"
|
||||||
|
|
||||||
jsonfile@^2.1.0:
|
jsonfile@^2.1.0:
|
||||||
version "2.4.0"
|
version "2.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
|
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
|
||||||
@@ -5937,7 +5949,7 @@ karma-webdriver-launcher@^1.0.7:
|
|||||||
|
|
||||||
karma-webpack@3.0.0:
|
karma-webpack@3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "http://registry.npmjs.org/karma-webpack/-/karma-webpack-3.0.0.tgz#bf009c5b73c667c11c015717e9e520f581317c44"
|
resolved "https://registry.npmjs.org/karma-webpack/-/karma-webpack-3.0.0.tgz#bf009c5b73c667c11c015717e9e520f581317c44"
|
||||||
integrity sha512-Ja1o9LLoqWaJyUNhTKaXjWiEH9y7a9H3mzP8pYB30SBsgoF5KBS/65NeHFd+QPuT9ITrym8xFt8BZeGbcOfujA==
|
integrity sha512-Ja1o9LLoqWaJyUNhTKaXjWiEH9y7a9H3mzP8pYB30SBsgoF5KBS/65NeHFd+QPuT9ITrym8xFt8BZeGbcOfujA==
|
||||||
dependencies:
|
dependencies:
|
||||||
async "^2.0.0"
|
async "^2.0.0"
|
||||||
@@ -6812,9 +6824,9 @@ mississippi@^2.0.0:
|
|||||||
through2 "^2.0.0"
|
through2 "^2.0.0"
|
||||||
|
|
||||||
mixin-deep@^1.2.0:
|
mixin-deep@^1.2.0:
|
||||||
version "1.3.1"
|
version "1.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
|
resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
|
||||||
integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==
|
integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
|
||||||
dependencies:
|
dependencies:
|
||||||
for-in "^1.0.2"
|
for-in "^1.0.2"
|
||||||
is-extendable "^1.0.1"
|
is-extendable "^1.0.1"
|
||||||
@@ -6829,7 +6841,7 @@ mixin-object@^2.0.1:
|
|||||||
|
|
||||||
mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
|
mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
|
||||||
version "0.5.1"
|
version "0.5.1"
|
||||||
resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
|
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
|
||||||
integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
|
integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
|
||||||
dependencies:
|
dependencies:
|
||||||
minimist "0.0.8"
|
minimist "0.0.8"
|
||||||
@@ -7040,7 +7052,7 @@ no-case@^2.2.0:
|
|||||||
|
|
||||||
node-fetch@1.6.3:
|
node-fetch@1.6.3:
|
||||||
version "1.6.3"
|
version "1.6.3"
|
||||||
resolved "http://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04"
|
resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04"
|
||||||
integrity sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ=
|
integrity sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ=
|
||||||
dependencies:
|
dependencies:
|
||||||
encoding "^0.1.11"
|
encoding "^0.1.11"
|
||||||
@@ -9386,7 +9398,7 @@ resolve-from@^3.0.0:
|
|||||||
|
|
||||||
resolve-url-loader@^2.3.0:
|
resolve-url-loader@^2.3.0:
|
||||||
version "2.3.0"
|
version "2.3.0"
|
||||||
resolved "http://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-2.3.0.tgz#e1b37034d48f22f8cfb9f04c026faaa070fdaf26"
|
resolved "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-2.3.0.tgz#e1b37034d48f22f8cfb9f04c026faaa070fdaf26"
|
||||||
integrity sha512-RaEUWgF/B6aTg9VKaOv2o6dfm5f75/lGh8S+SQwoMcBm48WkA2nhLR+V7KEawkxXjU4lLB16IVeHCe7F69nyVw==
|
integrity sha512-RaEUWgF/B6aTg9VKaOv2o6dfm5f75/lGh8S+SQwoMcBm48WkA2nhLR+V7KEawkxXjU4lLB16IVeHCe7F69nyVw==
|
||||||
dependencies:
|
dependencies:
|
||||||
adjust-sourcemap-loader "^1.1.0"
|
adjust-sourcemap-loader "^1.1.0"
|
||||||
@@ -9845,25 +9857,12 @@ set-immediate-shim@^1.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
|
resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
|
||||||
integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=
|
integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=
|
||||||
|
|
||||||
set-value@^0.4.3:
|
"set-value@>= 2.0.1", set-value@^0.4.3, set-value@^2.0.0:
|
||||||
version "0.4.3"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
|
resolved "https://registry.yarnpkg.com/set-value/-/set-value-3.0.1.tgz#52c82af7653ba69eb1db92e81f5cdb32739b9e95"
|
||||||
integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE=
|
integrity sha512-w6n3GUPYAWQj4ZyHWzD7K2FnFXHx9OTwJYbWg+6nXjG8sCLfs9DGv+KlqglKIIJx+ks7MlFuwFW2RBPb+8V+xg==
|
||||||
dependencies:
|
dependencies:
|
||||||
extend-shallow "^2.0.1"
|
is-plain-object "^2.0.4"
|
||||||
is-extendable "^0.1.1"
|
|
||||||
is-plain-object "^2.0.1"
|
|
||||||
to-object-path "^0.3.0"
|
|
||||||
|
|
||||||
set-value@^2.0.0:
|
|
||||||
version "2.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
|
|
||||||
integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==
|
|
||||||
dependencies:
|
|
||||||
extend-shallow "^2.0.1"
|
|
||||||
is-extendable "^0.1.1"
|
|
||||||
is-plain-object "^2.0.3"
|
|
||||||
split-string "^3.0.1"
|
|
||||||
|
|
||||||
setimmediate@^1.0.4:
|
setimmediate@^1.0.4:
|
||||||
version "1.0.5"
|
version "1.0.5"
|
||||||
@@ -10200,7 +10199,7 @@ spdy@^4.0.0:
|
|||||||
select-hose "^2.0.0"
|
select-hose "^2.0.0"
|
||||||
spdy-transport "^3.0.0"
|
spdy-transport "^3.0.0"
|
||||||
|
|
||||||
split-string@^3.0.1, split-string@^3.0.2:
|
split-string@^3.0.2:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
|
resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
|
||||||
integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
|
integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
|
||||||
|
Reference in New Issue
Block a user