1. Timer auf 60 Minuten und 10 Minuten vorher eine Warnung
11. Continue statt Review Dataset (im Step 3) 12. keywords auf default 'uncontrolled' einfrieren 14. Lizenzen mit Links versehen 19. Timezone: 'timezone' => 'Europe/Vienna' 20. angefangen mit RDR -> TETHYS Unbenennungen 21. translated validation ausgebessert 22. dataset als Typescript Instanz
This commit is contained in:
parent
300c8a13a9
commit
4b8f2a63d8
|
@ -5,7 +5,8 @@
|
|||
}
|
||||
],
|
||||
"settings": {
|
||||
"phpfmt.php_bin": "\"C:\\ProgramData\\scoop\\apps\\php-nts\\current\\php.exe\"",
|
||||
// "phpfmt.php_bin": "\"C:\\ProgramData\\scoop\\apps\\php-nts\\current\\php.exe\"",
|
||||
"phpfmt.php_bin": "php",
|
||||
"phpfmt.psr2": true
|
||||
}
|
||||
}
|
|
@ -3,40 +3,65 @@
|
|||
use Exception;
|
||||
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
|
||||
|
||||
class Handler extends ExceptionHandler {
|
||||
class Handler extends ExceptionHandler
|
||||
{
|
||||
|
||||
/**
|
||||
* A list of the exception types that should not be reported.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $dontReport = [
|
||||
'Symfony\Component\HttpKernel\Exception\HttpException'
|
||||
];
|
||||
/**
|
||||
* A list of the exception types that should not be reported.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $dontReport = [
|
||||
'Symfony\Component\HttpKernel\Exception\HttpException'
|
||||
];
|
||||
|
||||
/**
|
||||
* Report or log an exception.
|
||||
*
|
||||
* This is a great spot to send exceptions to Sentry, Bugsnag, etc.
|
||||
*
|
||||
* @param \Exception $e
|
||||
* @return void
|
||||
*/
|
||||
public function report(Exception $e)
|
||||
{
|
||||
return parent::report($e);
|
||||
}
|
||||
/**
|
||||
* Report or log an exception.
|
||||
*
|
||||
* This is a great spot to send exceptions to Sentry, Bugsnag, etc.
|
||||
*
|
||||
* @param \Exception $e
|
||||
* @return void
|
||||
*/
|
||||
public function report(Exception $e)
|
||||
{
|
||||
return parent::report($e);
|
||||
}
|
||||
|
||||
/**
|
||||
* Render an exception into an HTTP response.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Exception $e
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function render($request, Exception $e)
|
||||
{
|
||||
return parent::render($request, $e);
|
||||
}
|
||||
/**
|
||||
* Render an exception into an HTTP response.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Exception $e
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function render($request, Exception $ex)
|
||||
{
|
||||
if ($ex instanceof \Illuminate\Auth\Access\AuthorizationException) {
|
||||
// return $this->errorResponse($exception->getMessage(), 403);
|
||||
return redirect('/login', 302)
|
||||
->with('error', 'The form has expired due to inactivity. Please try again');
|
||||
// redirect()->guest($ex->redirectTo() ?? route('login'));
|
||||
}
|
||||
// if ($ex instanceof AuthorizationException) {
|
||||
// // return $this->errorResponse($exception->getMessage(), 403);
|
||||
// return redirect('/login', 302)
|
||||
// // ->back()
|
||||
// // ->withInput($request->except(['password', 'password_confirmation']))
|
||||
// ->with('error', 'The form has expired due to inactivity. Please try again');
|
||||
// }
|
||||
|
||||
// if ($ex instanceof \Illuminate\Session\TokenMismatchException) {
|
||||
// // return redirect('/login', 302)
|
||||
// // // ->back()
|
||||
// // // ->withInput($request->except(['password', 'password_confirmation']))
|
||||
// // ->with('error', 'The form has expired due to inactivity. Please try again');
|
||||
// return response()->json(array(
|
||||
// 'success' => true,
|
||||
// //'redirect' => route('settings.document.edit', ['id' => $dataset->server_state]),
|
||||
// 'redirect' => route('login')
|
||||
// ));
|
||||
// }
|
||||
return parent::render($request, $ex);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -145,8 +145,8 @@ class RequestController extends Controller
|
|||
private function handleIdentify()
|
||||
{
|
||||
$email = "repository@geologie.ac.at";
|
||||
$repositoryName = "RDR - Data Research Repository";
|
||||
$repIdentifier = "rdr.gba.ac.at";
|
||||
$repositoryName = "TETHYS - Data Research Repository";
|
||||
$repIdentifier = "tethys.geologie.ac.at";
|
||||
$sampleIdentifier = "oai:" . $repIdentifier . ":27";//$this->_configuration->getSampleIdentifier();
|
||||
$earliestDateFromDb = optional(Dataset::earliestPublicationDate())->server_date_published;
|
||||
|
||||
|
@ -281,7 +281,7 @@ class RequestController extends Controller
|
|||
*/
|
||||
private function handleListSets()
|
||||
{
|
||||
$repIdentifier = "rdr.gba.ac.at";
|
||||
$repIdentifier = "tethys.geologie.ac.at";
|
||||
$this->_proc->setParameter('', 'repIdentifier', $repIdentifier);
|
||||
$this->_xml->appendChild($this->_xml->createElement('Datasets'));
|
||||
|
||||
|
@ -332,7 +332,7 @@ class RequestController extends Controller
|
|||
$maxRecords = 100;
|
||||
}
|
||||
|
||||
$repIdentifier = "rdr.gba.ac.at";
|
||||
$repIdentifier = "tethys.geologie.ac.at";
|
||||
$tokenTempPath = storage_path('app/resumption'); //$this->_configuration->getResumptionTokenPath();
|
||||
|
||||
$this->_proc->setParameter('', 'repIdentifier', $repIdentifier);
|
||||
|
@ -512,7 +512,7 @@ class RequestController extends Controller
|
|||
|
||||
$identify = $sxe->addChild('Identify');
|
||||
$identify->addChild('repositoryName', "Data Research Repository");
|
||||
$identify->addChild('baseURL', "http://rdr.gba.geolba.ac.at/");
|
||||
$identify->addChild('baseURL', "http://tethys.geologie.ac.at/");
|
||||
$identify->addChild('protocolVersion', '2.0');
|
||||
$identify->addChild('adminEmail', 'repository@geologie.ac.at');
|
||||
//$identify->addChild('earliestDatestamp', '2017-04-07');
|
||||
|
|
|
@ -47,7 +47,7 @@ class IndexController extends Controller
|
|||
public function createStep1(Request $request)
|
||||
{
|
||||
#$dataset = $request->session()->get('dataset');
|
||||
$licenses = License::select('id', 'name_long')
|
||||
$licenses = License::select('id', 'name_long', 'link_licence')
|
||||
->orderBy('sort_order')
|
||||
->get();
|
||||
$languages = DB::table('languages')
|
||||
|
|
|
@ -39,7 +39,7 @@ class PermissionMiddleware
|
|||
//{
|
||||
// abort(401);
|
||||
//}
|
||||
return abort(401);
|
||||
//return $next($request);
|
||||
// return abort(403);
|
||||
throw new \Illuminate\Auth\Access\AuthorizationException('This action is unauthorized.');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ class SolrDocumentXslt
|
|||
}
|
||||
|
||||
/**
|
||||
* Retrieves XML describing model data of provided RDR dataset.
|
||||
* Retrieves XML describing model data of provided TETHYS dataset.
|
||||
*
|
||||
* @param Dataset $rdrDataset
|
||||
* @return DOMDocument
|
||||
|
|
855
composer.lock
generated
855
composer.lock
generated
File diff suppressed because it is too large
Load Diff
|
@ -64,8 +64,8 @@ return [
|
|||
| ahead and set this to a sensible default for you out of the box.
|
||||
|
|
||||
*/
|
||||
|
||||
'timezone' => 'UTC',
|
||||
// https://www.php.net/manual/en/timezones.europe.php
|
||||
'timezone' => 'Europe/Vienna',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
|
@ -78,7 +78,7 @@ class PagesTableSeeder extends Seeder
|
|||
'page_id' => 1, //terms and conditions
|
||||
'locale' => 'de',
|
||||
'title' => 'Geschäftsbedingungen',
|
||||
'description' => '<h2>1. Open Access und FAIR Erklärung</h2><p>iwas große Fokus liegt beim GBA-RDR beim Erlangen eines hohen Grades an die Zugänglichkeit und nachhaltige Verfügbarkeit für alle interessierten Nutzer. Dadurch soll eine <strong>verantwortungsvolle </strong>Weiterverwertung sowie Weiterentwicklung der Daten ermöglicht werden. Ebenfalls wird von Seitens des GBA-RDRs großen Wert auf das Ermöglichen von der Weiterverwendung von den publizierten Forschungsdaten gelegt. Dies wird durch das Einhalten der Prinzipien von Open Access und FAIR erlangt.</p><p>Unter Open Access wird der kostenfreie sowie öffentliche Zugang zu den im RDR archivierten Datenpublikationen verstanden.</p><p>Das Prinzip FAIR<a href="#_ftn1">[1]</a>, welches ein Akronym für <i>Findability</i> (Auffindbarkeit), <i>Accessibility</i> (Zugänglichkeit), <i>Interoperability</i> (Kompatibilität), und <i>Reusability</i> (Wiederverwendbarkeit) ist, unterstützt eine nachhaltige wissenschaftliche Datenpflege sowie –verwaltung. Erst durch die garantierte Auffindbarkeit, volle Zugänglichkeit zu den Daten, gewährleistete Kompatibilität mit anderen Datenbeständen so wie die wissenschaftliche Wiederverwendbarkeit, erhält die Datenpublikation einen großen Wert.</p><p>Das GBA-RDR behält sich vor, bei Einzelfällen und begründet Datenpublikationen nur eingeschränkt zur Verfügung zu stellen oder/und mit einem Embargo zu belegen. Grundsätzlich sollen die Nutzer die publizierten Daten uneingeschränkt lesen, kopieren, drucken und je nach vergebener Lizenz verarbeiten sowie verteilen können. Dabei verpflichtet sich der Nutzer ausnahmslos die Daten zu zitieren. Die Urheberrechte der Autorenschaft werden dabei nicht berührt.</p><p> </p><h2>2. Leitlinie</h2><ul><li>Ziele</li><li>Anforderungen an die elektronische Publikation</li><li>Urheber- und Nutzungsrechte</li><li>Sacherschließung auf dem Publikationsserver</li><li>Archivierung von Publikationen</li><li>Technische Eigenschaften des Publikationsservers</li><li>Organisatorische Regelungen</li></ul><p> </p><h2>3. Rechte und Pflichten</h2><p>Die im GBA-RDR veröffentlichten Informationen und Metadaten unterliegen grundsätzlich den Open-Access-Bedingungen, wenn nicht anders angegeben. Die publizierten Datensets unterliegen einem definierten Zugriffs- sowie Nutzungsrecht welche in den Metadaten eindeutig beschrieben sind.</p><p> </p><p>Zugriffsrecht</p><p>Es wird zwischen uneingeschränkten und eingeschränkten Zugriffsrecht unterschieden. Während bei dem uneingeschränkten Zugriffsrecht voller Zugriff auf die Daten und den dazugehörigen Informationen besteht, so kann ein eingeschränktes Zugriffsrecht auf bestimmte oder unbestimmte Zeit sowie auf alle oder nur auf Teile der Daten bestehen. Die detaillierte Zugriffsrechtsbestimmung sowie die Dauer einer Zugriffsbeschränkung sind in den Metadaten vermerkt. Grundsätzlich wird ein uneingeschränktes Zugriffsrecht vergeben. Unter bestimmten Voraussetzungen jedoch kann diese eingeschränkt sein.</p><p><br> </p><p>Nutzungsrecht</p><p>Durch die Vergabe von Creative Commons Lizenzen werden jeder Datenpublikation mit definierten Nutzungsrechte ausgestattet. Die dabei verwendete Lizenz wird verpflichtend mit den zur Datenpublikation gehörenden Metadaten bereitgestellt.</p><p> </p><p><br>Urheberrecht</p><p>Die Urheberrechte der auf dem GBA-RDR Server veröffentlichten Dokumenten liegen ausnahmslos bei den jeweiligen Autoren.</p><p>Der Urheber räumt jedoch durch die Publikation der Daten ein grundsätzliches Zugriffs- sowie Nutzungsrecht ein, welches mit der Datenpublikation geklärt und in den Metadaten verankert ist. Zusätzlich stimmt der Urheber zu, dass die Metadaten des Dokuments unentgeltlich anderen öffentlich einsehbaren Datenbanken zur Verfügung gestellt werden und somit an der Forschungsdateninfrastruktur teilnimmt.</p><p>Mit der Publikation sowie der Archivierung der Daten und allen dazugehörigen Dokumenten im GBA-RDR erklärt der Urheber keine Rechte Dritter verletzt zu haben. Der Urheber verpflichtet sich vor dem Einreichen der Daten und allen dazugehörigen Dokumenten, alle darin involvierten Miturheber, Co-Autoren und Drittmittelgeber in Kenntnis zu setzen. Wenn die zu veröffentlichenden Daten auf Fremddaten aufbauen oder diese ergänzen, so ist der Urheber der aktuellen Daten und den dazugehörigen Dokumenten verpflichtet die Rec</p>',
|
||||
'description' => '<h2>1. Open Access und FAIR Erklärung</h2><p>iwas große Fokus liegt bei TETHYS beim Erlangen eines hohen Grades an die Zugänglichkeit und nachhaltige Verfügbarkeit für alle interessierten Nutzer. Dadurch soll eine <strong>verantwortungsvolle </strong>Weiterverwertung sowie Weiterentwicklung der Daten ermöglicht werden. Ebenfalls wird von Seitens des GBA-RDRs großen Wert auf das Ermöglichen von der Weiterverwendung von den publizierten Forschungsdaten gelegt. Dies wird durch das Einhalten der Prinzipien von Open Access und FAIR erlangt.</p><p>Unter Open Access wird der kostenfreie sowie öffentliche Zugang zu den im TETHYS archivierten Datenpublikationen verstanden.</p><p>Das Prinzip FAIR<a href="#_ftn1">[1]</a>, welches ein Akronym für <i>Findability</i> (Auffindbarkeit), <i>Accessibility</i> (Zugänglichkeit), <i>Interoperability</i> (Kompatibilität), und <i>Reusability</i> (Wiederverwendbarkeit) ist, unterstützt eine nachhaltige wissenschaftliche Datenpflege sowie –verwaltung. Erst durch die garantierte Auffindbarkeit, volle Zugänglichkeit zu den Daten, gewährleistete Kompatibilität mit anderen Datenbeständen so wie die wissenschaftliche Wiederverwendbarkeit, erhält die Datenpublikation einen großen Wert.</p><p>Das GBA-RDR behält sich vor, bei Einzelfällen und begründet Datenpublikationen nur eingeschränkt zur Verfügung zu stellen oder/und mit einem Embargo zu belegen. Grundsätzlich sollen die Nutzer die publizierten Daten uneingeschränkt lesen, kopieren, drucken und je nach vergebener Lizenz verarbeiten sowie verteilen können. Dabei verpflichtet sich der Nutzer ausnahmslos die Daten zu zitieren. Die Urheberrechte der Autorenschaft werden dabei nicht berührt.</p><p> </p><h2>2. Leitlinie</h2><ul><li>Ziele</li><li>Anforderungen an die elektronische Publikation</li><li>Urheber- und Nutzungsrechte</li><li>Sacherschließung auf dem Publikationsserver</li><li>Archivierung von Publikationen</li><li>Technische Eigenschaften des Publikationsservers</li><li>Organisatorische Regelungen</li></ul><p> </p><h2>3. Rechte und Pflichten</h2><p>Die im TETHYS veröffentlichten Informationen und Metadaten unterliegen grundsätzlich den Open-Access-Bedingungen, wenn nicht anders angegeben. Die publizierten Datensets unterliegen einem definierten Zugriffs- sowie Nutzungsrecht welche in den Metadaten eindeutig beschrieben sind.</p><p> </p><p>Zugriffsrecht</p><p>Es wird zwischen uneingeschränkten und eingeschränkten Zugriffsrecht unterschieden. Während bei dem uneingeschränkten Zugriffsrecht voller Zugriff auf die Daten und den dazugehörigen Informationen besteht, so kann ein eingeschränktes Zugriffsrecht auf bestimmte oder unbestimmte Zeit sowie auf alle oder nur auf Teile der Daten bestehen. Die detaillierte Zugriffsrechtsbestimmung sowie die Dauer einer Zugriffsbeschränkung sind in den Metadaten vermerkt. Grundsätzlich wird ein uneingeschränktes Zugriffsrecht vergeben. Unter bestimmten Voraussetzungen jedoch kann diese eingeschränkt sein.</p><p><br> </p><p>Nutzungsrecht</p><p>Durch die Vergabe von Creative Commons Lizenzen werden jeder Datenpublikation mit definierten Nutzungsrechte ausgestattet. Die dabei verwendete Lizenz wird verpflichtend mit den zur Datenpublikation gehörenden Metadaten bereitgestellt.</p><p> </p><p><br>Urheberrecht</p><p>Die Urheberrechte der auf dem GBA-RDR Server veröffentlichten Dokumenten liegen ausnahmslos bei den jeweiligen Autoren.</p><p>Der Urheber räumt jedoch durch die Publikation der Daten ein grundsätzliches Zugriffs- sowie Nutzungsrecht ein, welches mit der Datenpublikation geklärt und in den Metadaten verankert ist. Zusätzlich stimmt der Urheber zu, dass die Metadaten des Dokuments unentgeltlich anderen öffentlich einsehbaren Datenbanken zur Verfügung gestellt werden und somit an der Forschungsdateninfrastruktur teilnimmt.</p><p>Mit der Publikation sowie der Archivierung der Daten und allen dazugehörigen Dokumenten im GBA-RDR erklärt der Urheber keine Rechte Dritter verletzt zu haben. Der Urheber verpflichtet sich vor dem Einreichen der Daten und allen dazugehörigen Dokumenten, alle darin involvierten Miturheber, Co-Autoren und Drittmittelgeber in Kenntnis zu setzen. Wenn die zu veröffentlichenden Daten auf Fremddaten aufbauen oder diese ergänzen, so ist der Urheber der aktuellen Daten und den dazugehörigen Dokumenten verpflichtet die Rec</p>',
|
||||
],
|
||||
[
|
||||
'page_id' => 1, //terms and conditions
|
||||
|
|
5
package-lock.json
generated
5
package-lock.json
generated
|
@ -3291,6 +3291,11 @@
|
|||
"stream-shift": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"easytimer": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/easytimer/-/easytimer-1.1.1.tgz",
|
||||
"integrity": "sha1-Gt3eclZG3iWSQw0DBIp0jWM1TpQ="
|
||||
},
|
||||
"ecc-jsbn": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
"@fortawesome/fontawesome-free": "^5.10.2",
|
||||
"datatables.net": "^1.10.19",
|
||||
"datatables.net-buttons": "^1.5.6",
|
||||
"easytimer": "^1.1.1",
|
||||
"single-page-nav": "^1.0.0"
|
||||
}
|
||||
}
|
||||
|
|
2
public/backend/ckeditor.js
vendored
2
public/backend/ckeditor.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,10 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
/**
|
||||
* This file is part of RDR.
|
||||
* This file is part of TETHYS.
|
||||
*
|
||||
* LICENCE
|
||||
* RDR is free software; you can redistribute it and/or modify it under the
|
||||
* TETHYS is free software; you can redistribute it and/or modify it under the
|
||||
* terms of the GNU General Public License as published by the Free Software
|
||||
* Foundation; either version 2 of the Licence, or any later version.
|
||||
* OPUS is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
|
@ -17,14 +17,14 @@
|
|||
* @category Application
|
||||
* @package Module_Oai
|
||||
* @author Arno Kaimbacher <arno.kaimbacher@geologie.ac.at>
|
||||
* @copyright Copyright (c) 2018-2019, GBA RDR development team
|
||||
* @copyright Copyright (c) 2018-2019, GBA TETHYS development team
|
||||
* @license http://www.gnu.org/licenses/gpl.html General Public License
|
||||
*/
|
||||
-->
|
||||
|
||||
<!--
|
||||
/**
|
||||
* Transforms the xml representation of an RDR model dataset to datacite
|
||||
* Transforms the xml representation of an TETHYS model dataset to datacite
|
||||
* xml as required by the OAI-PMH protocol.
|
||||
*/
|
||||
-->
|
||||
|
|
144
resources/js/components/Dataset.ts
Normal file
144
resources/js/components/Dataset.ts
Normal file
|
@ -0,0 +1,144 @@
|
|||
import { Component, Vue, Watch } from 'vue-property-decorator';
|
||||
|
||||
//outside of the component:
|
||||
function initialState() {
|
||||
return {
|
||||
type: "",
|
||||
state: "",
|
||||
rights: null,
|
||||
project_id: "",
|
||||
|
||||
creating_corporation: "GBA Repository",
|
||||
language: "",
|
||||
embargo_date: "",
|
||||
belongs_to_bibliography: 0,
|
||||
|
||||
title_main: {
|
||||
value: "",
|
||||
language: ""
|
||||
},
|
||||
abstract_main: {
|
||||
value: "",
|
||||
language: ""
|
||||
},
|
||||
// geolocation: {
|
||||
// xmin: "",
|
||||
// ymin: "",
|
||||
// xmax: "",
|
||||
// ymax: ""
|
||||
// },
|
||||
coverage: {
|
||||
xmin: "",
|
||||
ymin: "",
|
||||
xmax: "",
|
||||
ymax: "",
|
||||
elevation_min: "",
|
||||
elevation_max: "",
|
||||
elevation_absolut: "",
|
||||
depth_min: "",
|
||||
depth_max: "",
|
||||
depth_absolut: "",
|
||||
time_min: "",
|
||||
time_max: "",
|
||||
time_absolut: ""
|
||||
},
|
||||
checkedAuthors: [],
|
||||
checkedLicenses: [], // [],
|
||||
files: [],
|
||||
keywords: [],
|
||||
references: [],
|
||||
titles: [],
|
||||
descriptions: [],
|
||||
checkedContributors: [],
|
||||
// checkedSubmitters: [],
|
||||
|
||||
persons: [],
|
||||
contributors: []
|
||||
// submitters: []
|
||||
};
|
||||
}
|
||||
|
||||
// const dataset = new Vue({
|
||||
@Component
|
||||
export default class Dataset extends Vue {
|
||||
// data: function() {
|
||||
// return initialState();
|
||||
// }
|
||||
initialState = {};
|
||||
type= "";
|
||||
state= "";
|
||||
rights= null;
|
||||
project_id= "";
|
||||
|
||||
creating_corporation= "TETHYS Repository";
|
||||
language= "";
|
||||
embargo_date= "";
|
||||
belongs_to_bibliography= 0;
|
||||
|
||||
title_main= {
|
||||
value: "",
|
||||
language: ""
|
||||
};
|
||||
abstract_main= {
|
||||
value: "",
|
||||
language: ""
|
||||
};
|
||||
// geolocation: {
|
||||
// xmin: "",
|
||||
// ymin: "",
|
||||
// xmax: "",
|
||||
// ymax: ""
|
||||
// },
|
||||
coverage= {
|
||||
xmin: "",
|
||||
ymin: "",
|
||||
xmax: "",
|
||||
ymax: "",
|
||||
elevation_min: "",
|
||||
elevation_max: "",
|
||||
elevation_absolut: "",
|
||||
depth_min: "",
|
||||
depth_max: "",
|
||||
depth_absolut: "",
|
||||
time_min: "",
|
||||
time_max: "",
|
||||
time_absolut: ""
|
||||
};
|
||||
checkedAuthors= [];
|
||||
checkedLicenses= [];
|
||||
files= [];
|
||||
keywords= [];
|
||||
references= [];
|
||||
titles= [];
|
||||
descriptions= [];
|
||||
checkedContributors= [];
|
||||
// checkedSubmitters: [],
|
||||
|
||||
persons= [];
|
||||
contributors= [];
|
||||
// submitters: []
|
||||
|
||||
created () {
|
||||
this.initialState = Object.assign({}, this);
|
||||
// let json = JSON.stringify(this.$data);
|
||||
// this.reset = () => {
|
||||
// Object.assign(this.$data, JSON.parse(json));
|
||||
// };
|
||||
// this.reset(json);
|
||||
}
|
||||
|
||||
@Watch('language')
|
||||
onLanguageChanged(val) {
|
||||
this.title_main.language = val;
|
||||
this.abstract_main.language = val;
|
||||
}
|
||||
|
||||
|
||||
reset() {
|
||||
// Object.assign(this.$data, initialState());
|
||||
Object.assign(this.$data, this.initialState);
|
||||
}
|
||||
|
||||
}
|
||||
// export default dataset;
|
||||
|
|
@ -1,87 +0,0 @@
|
|||
// <script>
|
||||
import Vue from "vue";
|
||||
|
||||
//outside of the component:
|
||||
function initialState() {
|
||||
return {
|
||||
type: "",
|
||||
state: "",
|
||||
rights: null,
|
||||
project_id: "",
|
||||
|
||||
creating_corporation: "GBA Repository",
|
||||
language: "",
|
||||
embargo_date: "",
|
||||
belongs_to_bibliography: 0,
|
||||
|
||||
title_main: {
|
||||
value: "",
|
||||
language: ""
|
||||
},
|
||||
abstract_main: {
|
||||
value: "",
|
||||
language: ""
|
||||
},
|
||||
// geolocation: {
|
||||
// xmin: "",
|
||||
// ymin: "",
|
||||
// xmax: "",
|
||||
// ymax: ""
|
||||
// },
|
||||
coverage: {
|
||||
xmin: "",
|
||||
ymin: "",
|
||||
xmax: "",
|
||||
ymax: "",
|
||||
elevation_min: "",
|
||||
elevation_max: "",
|
||||
elevation_absolut: "",
|
||||
depth_min: "",
|
||||
depth_max: "",
|
||||
depth_absolut: "",
|
||||
time_min: "",
|
||||
time_max: "",
|
||||
time_absolut: ""
|
||||
},
|
||||
checkedAuthors: [],
|
||||
checkedLicenses: [], // [],
|
||||
files: [],
|
||||
keywords: [],
|
||||
references: [],
|
||||
titles: [],
|
||||
descriptions: [],
|
||||
checkedContributors: [],
|
||||
// checkedSubmitters: [],
|
||||
|
||||
persons: [],
|
||||
contributors: []
|
||||
// submitters: []
|
||||
};
|
||||
}
|
||||
|
||||
const dataset = new Vue({
|
||||
data: function() {
|
||||
return initialState();
|
||||
},
|
||||
created: function() {
|
||||
// let json = JSON.stringify(this.$data);
|
||||
// this.reset = () => {
|
||||
// Object.assign(this.$data, JSON.parse(json));
|
||||
// };
|
||||
// this.reset(json);
|
||||
},
|
||||
watch: {
|
||||
language(val) {
|
||||
this.title_main.language = val;
|
||||
this.abstract_main.language = val;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
reset() {
|
||||
Object.assign(this.$data, initialState());
|
||||
}
|
||||
}
|
||||
});
|
||||
export default dataset;
|
||||
//export { dataset };
|
||||
</script>
|
118
resources/js/components/VueCountdown.ts
Normal file
118
resources/js/components/VueCountdown.ts
Normal file
|
@ -0,0 +1,118 @@
|
|||
import EasyTimer from 'easytimer';
|
||||
import { Component, Vue, Prop, Watch } from 'vue-property-decorator';
|
||||
|
||||
@Component
|
||||
export default class VueCountdown extends Vue {
|
||||
// props: {
|
||||
// seconds: Number,
|
||||
// countdown: Boolean,
|
||||
// message: String,
|
||||
// date: String,
|
||||
// units: Array,
|
||||
// start: {
|
||||
// type: Boolean,
|
||||
// default: true
|
||||
// }
|
||||
// },
|
||||
|
||||
@Prop(Number)
|
||||
seconds;
|
||||
@Prop(Boolean)
|
||||
countdown;
|
||||
@Prop([String])
|
||||
message;
|
||||
@Prop([String])
|
||||
date;
|
||||
@Prop([Array])
|
||||
units;
|
||||
@Prop({ default: true, type: Boolean })
|
||||
start: boolean;
|
||||
|
||||
|
||||
// data () {
|
||||
// return {
|
||||
// timer: null,
|
||||
// time: '',
|
||||
// label: this.message ? this.message : 'Time\'s up!',
|
||||
// timerUnits: this.units ? this.units : ['hours', 'minutes', 'seconds'],
|
||||
// timerOptions: {}
|
||||
// };
|
||||
// },
|
||||
|
||||
warningSeconds: Number = this.seconds;
|
||||
timer: EasyTimer = null;
|
||||
time: string = '';
|
||||
label: string = this.message ? this.message : 'Time\'s up!';
|
||||
timerUnits = this.units ? this.units : ['hours', 'minutes', 'seconds'];
|
||||
timerOptions = {
|
||||
startValues: {},
|
||||
// target: {},
|
||||
countdown: true,
|
||||
current_page: 0,
|
||||
data: []
|
||||
};
|
||||
|
||||
get parsedDate(): number {
|
||||
if (!this.date) {
|
||||
return 0;
|
||||
}
|
||||
return Date.parse(this.date);
|
||||
}
|
||||
|
||||
created() {
|
||||
this.timer = new EasyTimer();
|
||||
|
||||
const parsedDate = this.parsedDate;
|
||||
const now = Date.now();
|
||||
|
||||
let seconds = this.seconds;
|
||||
this.timerOptions.countdown = true;
|
||||
|
||||
// = {
|
||||
// countdown: true
|
||||
// };
|
||||
|
||||
if (!parsedDate && this.date) {
|
||||
throw new Error('Please provide valid date');
|
||||
}
|
||||
|
||||
if (now < parsedDate) {
|
||||
seconds = (parsedDate - now) / 1000;
|
||||
}
|
||||
|
||||
this.timerOptions.startValues = {
|
||||
seconds: seconds
|
||||
};
|
||||
|
||||
if (this.start) {
|
||||
this.timer.start(this.timerOptions);
|
||||
}
|
||||
|
||||
this.time = this.timer.getTimeValues().toString(this.timerUnits);
|
||||
|
||||
this.timer.addEventListener('secondsUpdated', this.onTimeChange.bind(this));
|
||||
this.timer.addEventListener('targetAchieved', this.onTimeExpire.bind(this));
|
||||
}
|
||||
|
||||
|
||||
onTimeChange() {
|
||||
this.warningSeconds = this.timer.getTotalTimeValues().seconds;
|
||||
this.time = this.timer.getTimeValues().toString(this.timerUnits);
|
||||
}
|
||||
|
||||
onTimeExpire() {
|
||||
this.$emit('time-expire');
|
||||
this.time = this.label;
|
||||
}
|
||||
|
||||
|
||||
@Watch('start')
|
||||
onStartChanged(newValue) {
|
||||
if (newValue) {
|
||||
this.timer.start(this.timerOptions);
|
||||
} else {
|
||||
this.timer.stop();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
18
resources/js/components/vue-countdown.vue
Normal file
18
resources/js/components/vue-countdown.vue
Normal file
|
@ -0,0 +1,18 @@
|
|||
<template>
|
||||
<div v-show="warningSeconds <= 600" class="vue-countdown">
|
||||
<div class="vue-countdown--time">
|
||||
remaining time: {{ time }}
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import VueCountdown from "./VueCountdown";
|
||||
export default VueCountdown;
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.vue-countdown--time {
|
||||
color:red;
|
||||
}
|
||||
</style>
|
|
@ -31,8 +31,9 @@ import axios from 'axios';
|
|||
import MyAutocomplete from './components/MyAutocomplete.vue';
|
||||
import messagesEN from './strings/messages/en.js';
|
||||
import VeeValidate from 'vee-validate';
|
||||
import dataset from './components/Dataset';
|
||||
import Dataset from './components/Dataset';
|
||||
import LocationsMap from './components/LocationsMap.vue';
|
||||
import VueCountdown from './components/vue-countdown';
|
||||
import PersonTable from './components/PersonTable.vue';
|
||||
import modal from './components/ShowModal.vue';
|
||||
// import datetime from 'vuejs-datetimepicker';
|
||||
|
@ -62,7 +63,7 @@ Vue.use(VeeValidate, {
|
|||
const STATUS_INITIAL = 0, STATUS_SAVING = 1, STATUS_SUCCESS = 2, STATUS_FAILED = 3;
|
||||
const app = new Vue({
|
||||
el: '#app',
|
||||
components: { MyAutocomplete, LocationsMap, modal, PersonTable },
|
||||
components: { MyAutocomplete, LocationsMap,VueCountdown, modal, PersonTable },
|
||||
data() {
|
||||
return {
|
||||
list: [
|
||||
|
@ -90,35 +91,10 @@ const app = new Vue({
|
|||
isModalVisible: false,
|
||||
|
||||
step: 0,
|
||||
dataset: dataset,
|
||||
dataset: new Dataset(),
|
||||
elevation: "no_elevation",
|
||||
depth: "no_depth",
|
||||
time: "no_time",
|
||||
// dataset: {
|
||||
// type: '',
|
||||
// state: '',
|
||||
// rights: null,
|
||||
// project_id: '',
|
||||
|
||||
// creating_corporation: "GBA",
|
||||
// embargo_date: '',
|
||||
// belongs_to_bibliography: 0,
|
||||
|
||||
// title_main: {
|
||||
// value: '',
|
||||
// language: ''
|
||||
// },
|
||||
// abstract_main: {
|
||||
// value: '',
|
||||
// language: ''
|
||||
// },
|
||||
// checkedAuthors: [],
|
||||
// checkedLicenses: [],// [],
|
||||
// files: [],
|
||||
// references: [],
|
||||
// checkedContributors: [],
|
||||
// checkedSubmitters: [],
|
||||
// }
|
||||
time: "no_time"
|
||||
}
|
||||
},
|
||||
created: function () {
|
||||
|
@ -138,7 +114,7 @@ const app = new Vue({
|
|||
VeeValidate.Validator.extend('translatedLanguage', {
|
||||
getMessage: field => 'The translated ' + field + ' must be in a language other than than the dataset language.',
|
||||
validate: (value, [mainLanguage, type]) => {
|
||||
if (type == "translated") {
|
||||
if (type == "Translated") {
|
||||
return value !== mainLanguage;
|
||||
}
|
||||
return true;
|
||||
|
@ -355,7 +331,6 @@ const app = new Vue({
|
|||
formData.append('descriptions[' + i + '][language]', description.language);
|
||||
formData.append('descriptions[' + i + '][type]', description.type);
|
||||
}
|
||||
|
||||
/*
|
||||
Make the request to the POST /multiple-files URL
|
||||
*/
|
||||
|
@ -363,7 +338,9 @@ const app = new Vue({
|
|||
formData,
|
||||
{
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data'
|
||||
'Content-Type': 'multipart/form-data',
|
||||
'X-CSRF-TOKEN' : document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
|
||||
'X-Requested-With': 'XMLHttpRequest',
|
||||
}
|
||||
})
|
||||
.then((response) => {
|
||||
|
@ -375,9 +352,9 @@ const app = new Vue({
|
|||
_this.currentStatus = STATUS_SUCCESS;
|
||||
_this.releaseLink = response.data.release;
|
||||
_this.deleteLink = response.data.delete;
|
||||
// if (response.data.redirect) {
|
||||
// window.location = response.data.redirect;
|
||||
// }
|
||||
if (response.data.redirect) {
|
||||
window.location = response.data.redirect;
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
// this.loading = false;
|
||||
|
@ -397,12 +374,18 @@ const app = new Vue({
|
|||
var error = error.response.data.error;
|
||||
_this.serrors.push(error.message);
|
||||
}
|
||||
//raundtrip to server was not possible
|
||||
//roundtrip to server was not possible
|
||||
if (error.message && error.message.includes('413')) {
|
||||
console.log('The file you tried to upload is too large.')
|
||||
// console.log('The file you tried to upload is too large.')
|
||||
var error = 'The file you tried to upload is too large.';
|
||||
_this.serrors.push(error);
|
||||
}
|
||||
else if(error.response && error.response.status == 419) {
|
||||
// session timed out | not authenticated
|
||||
// _this.serrors.push(error.response.data.message);
|
||||
_this.serrors.push('This page has expired due to inactivity, please refresh and try again');
|
||||
window.location = '/login';
|
||||
}
|
||||
if (error.message && error.message) {
|
||||
_this.serrors.push( error.message);
|
||||
}
|
||||
|
@ -441,7 +424,7 @@ const app = new Vue({
|
|||
adds a new Keyword
|
||||
*/
|
||||
addKeyword() {
|
||||
let newKeyword = { value: '', type: '', language: this.dataset.language };
|
||||
let newKeyword = { value: '', type: 'uncontrolled', language: this.dataset.language };
|
||||
//this.dataset.files.push(uploadedFiles[i]);
|
||||
this.dataset.keywords.push(newKeyword);
|
||||
},
|
||||
|
@ -572,6 +555,9 @@ const app = new Vue({
|
|||
// alert('Submit to blah and show blah and etc.');
|
||||
// save it
|
||||
this.save(status);
|
||||
},
|
||||
handleTimeExpire() {
|
||||
window.location = '/login';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { Component, Vue, Prop, Provide } from 'vue-property-decorator';
|
||||
import { Component, Vue } from 'vue-property-decorator';
|
||||
import VsInput from './text-search/vs-input.vue';
|
||||
import VsResults from './search-results/vs-results.vue';
|
||||
import FacetList from './search-results/facet-list.vue';
|
||||
|
|
|
@ -32,7 +32,7 @@ export default {
|
|||
var limit = "&rows=" + SOLR_CONFIG["limit"];
|
||||
// var limit = solrConfig.limit;
|
||||
|
||||
var qfFields = "title^3 author^3 subject^2";
|
||||
var qfFields = "title^3 author^2 subject^1";
|
||||
var params = "fl=" + fields;
|
||||
if (term == "*%3A*") {
|
||||
params += "&defType=edismax&wt=json&indent=on"; //edismax
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import Vue from "vue";
|
||||
import { Component, Prop, Watch } from 'vue-property-decorator';
|
||||
import { Component, Prop } from 'vue-property-decorator';
|
||||
import debounce from 'lodash/debounce';
|
||||
import rdrApi from '../search-results/dataservice';
|
||||
|
||||
|
@ -88,11 +88,6 @@ export default class VsInput extends Vue {
|
|||
// this.loading = false;
|
||||
// }
|
||||
|
||||
// reset() {
|
||||
// this.display = "";
|
||||
// this.items = [];
|
||||
// this.showResults = false;
|
||||
// }
|
||||
/**
|
||||
* Clear all values, results and errors
|
||||
*/
|
||||
|
@ -230,7 +225,7 @@ export default class VsInput extends Vue {
|
|||
|
||||
}
|
||||
|
||||
find(myarray, searchterm): string {
|
||||
private find(myarray, searchterm): string {
|
||||
for (var i = 0, len = myarray.length; i < len; i += 1) {
|
||||
if (typeof (myarray[i]) === 'string' && myarray[i].toLowerCase().indexOf(searchterm) !== -1) {
|
||||
// print or whatever
|
||||
|
@ -240,7 +235,6 @@ export default class VsInput extends Vue {
|
|||
return "";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Close the results list. If nothing was selected clear the search
|
||||
*/
|
||||
|
@ -256,8 +250,4 @@ export default class VsInput extends Vue {
|
|||
//this.removeEventListener()
|
||||
this.$emit('close');
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
5
resources/views/errors/401.blade.php
Normal file
5
resources/views/errors/401.blade.php
Normal file
|
@ -0,0 +1,5 @@
|
|||
@extends('errors::minimal')
|
||||
|
||||
@section('title', __('Unauthorized'))
|
||||
@section('code', '401')
|
||||
@section('message', __('Unauthorized'))
|
|
@ -1,18 +1,5 @@
|
|||
{{-- \resources\views\errors\403.blade.php --}}
|
||||
@extends('layouts.app')
|
||||
@extends('errors::minimal')
|
||||
|
||||
@section('content')
|
||||
<section class="normal dataset u-full-width">
|
||||
<div class="container">
|
||||
|
||||
<h1>
|
||||
<center>403<br>
|
||||
ACCESS DENIED</center>
|
||||
</h1>
|
||||
<a href="{{ URL::previous() }}" class="btn btn-default">Back</a>
|
||||
<h2>{{ $exception->getMessage() }}</h2>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@endsection
|
||||
@section('title', __('Forbidden'))
|
||||
@section('code', '403')
|
||||
@section('message', __($exception->getMessage() ?: 'Forbidden'))
|
||||
|
|
5
resources/views/errors/404.blade.php
Normal file
5
resources/views/errors/404.blade.php
Normal file
|
@ -0,0 +1,5 @@
|
|||
@extends('errors::minimal')
|
||||
|
||||
@section('title', __('Not Found'))
|
||||
@section('code', '404')
|
||||
@section('message', __('Not Found'))
|
5
resources/views/errors/419.blade.php
Normal file
5
resources/views/errors/419.blade.php
Normal file
|
@ -0,0 +1,5 @@
|
|||
@extends('errors::minimal')
|
||||
|
||||
@section('title', __('Page Expired'))
|
||||
@section('code', '419')
|
||||
@section('message', __('Page Expired'))
|
5
resources/views/errors/429.blade.php
Normal file
5
resources/views/errors/429.blade.php
Normal file
|
@ -0,0 +1,5 @@
|
|||
@extends('errors::minimal')
|
||||
|
||||
@section('title', __('Too Many Requests'))
|
||||
@section('code', '429')
|
||||
@section('message', __('Too Many Requests'))
|
5
resources/views/errors/500.blade.php
Normal file
5
resources/views/errors/500.blade.php
Normal file
|
@ -0,0 +1,5 @@
|
|||
@extends('errors::minimal')
|
||||
|
||||
@section('title', __('Server Error'))
|
||||
@section('code', '500')
|
||||
@section('message', __('Server Error'))
|
|
@ -1,41 +1,5 @@
|
|||
<html>
|
||||
<head>
|
||||
<link href='//fonts.googleapis.com/css?family=Lato:100' rel='stylesheet' type='text/css'>
|
||||
@extends('errors::minimal')
|
||||
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
color: #B0BEC5;
|
||||
display: table;
|
||||
font-weight: 100;
|
||||
font-family: 'Lato';
|
||||
}
|
||||
|
||||
.container {
|
||||
text-align: center;
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.content {
|
||||
text-align: center;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 72px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="content">
|
||||
<div class="title">Be right back.</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@section('title', __('Service Unavailable'))
|
||||
@section('code', '503')
|
||||
@section('message', __($exception->getMessage() ?: 'Service Unavailable'))
|
||||
|
|
486
resources/views/errors/illustrated-layout.blade.php
Normal file
486
resources/views/errors/illustrated-layout.blade.php
Normal file
|
@ -0,0 +1,486 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<title>@yield('title')</title>
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="dns-prefetch" href="//fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
|
||||
|
||||
<!-- Styles -->
|
||||
<style>
|
||||
html {
|
||||
line-height: 1.15;
|
||||
-ms-text-size-adjust: 100%;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
header,
|
||||
nav,
|
||||
section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
figcaption,
|
||||
main {
|
||||
display: block;
|
||||
}
|
||||
|
||||
a {
|
||||
background-color: transparent;
|
||||
-webkit-text-decoration-skip: objects;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: inherit;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: monospace, monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
button,
|
||||
input {
|
||||
font-family: sans-serif;
|
||||
font-size: 100%;
|
||||
line-height: 1.15;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
button,
|
||||
input {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
button {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
button,
|
||||
html [type="button"],
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
button::-moz-focus-inner,
|
||||
[type="button"]::-moz-focus-inner,
|
||||
[type="reset"]::-moz-focus-inner,
|
||||
[type="submit"]::-moz-focus-inner {
|
||||
border-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
button:-moz-focusring,
|
||||
[type="button"]:-moz-focusring,
|
||||
[type="reset"]:-moz-focusring,
|
||||
[type="submit"]:-moz-focusring {
|
||||
outline: 1px dotted ButtonText;
|
||||
}
|
||||
|
||||
legend {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
color: inherit;
|
||||
display: table;
|
||||
max-width: 100%;
|
||||
padding: 0;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
[type="checkbox"],
|
||||
[type="radio"] {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
[type="number"]::-webkit-inner-spin-button,
|
||||
[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
[type="search"] {
|
||||
-webkit-appearance: textfield;
|
||||
outline-offset: -2px;
|
||||
}
|
||||
|
||||
[type="search"]::-webkit-search-cancel-button,
|
||||
[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
-webkit-appearance: button;
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
menu {
|
||||
display: block;
|
||||
}
|
||||
|
||||
canvas {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
[hidden] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
html {
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
-webkit-box-sizing: inherit;
|
||||
box-sizing: inherit;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
button {
|
||||
background: transparent;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
button:focus {
|
||||
outline: 1px dotted;
|
||||
outline: 5px auto -webkit-focus-ring-color;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
border-width: 0;
|
||||
border-style: solid;
|
||||
border-color: #dae1e7;
|
||||
}
|
||||
|
||||
button,
|
||||
[type="button"],
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
button,
|
||||
input {
|
||||
font-family: inherit;
|
||||
}
|
||||
|
||||
input::-webkit-input-placeholder {
|
||||
color: inherit;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
input:-ms-input-placeholder {
|
||||
color: inherit;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
input::-ms-input-placeholder {
|
||||
color: inherit;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
input::placeholder {
|
||||
color: inherit;
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
button,
|
||||
[role=button] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.bg-transparent {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.bg-white {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.bg-teal-light {
|
||||
background-color: #64d5ca;
|
||||
}
|
||||
|
||||
.bg-blue-dark {
|
||||
background-color: #2779bd;
|
||||
}
|
||||
|
||||
.bg-indigo-light {
|
||||
background-color: #7886d7;
|
||||
}
|
||||
|
||||
.bg-purple-light {
|
||||
background-color: #a779e9;
|
||||
}
|
||||
|
||||
.bg-no-repeat {
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.bg-cover {
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
.border-grey-light {
|
||||
border-color: #dae1e7;
|
||||
}
|
||||
|
||||
.hover\:border-grey:hover {
|
||||
border-color: #b8c2cc;
|
||||
}
|
||||
|
||||
.rounded-lg {
|
||||
border-radius: .5rem;
|
||||
}
|
||||
|
||||
.border-2 {
|
||||
border-width: 2px;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.flex {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.items-center {
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.justify-center {
|
||||
-webkit-box-pack: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.font-sans {
|
||||
font-family: Nunito, sans-serif;
|
||||
}
|
||||
|
||||
.font-light {
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.font-bold {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.font-black {
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
.h-1 {
|
||||
height: .25rem;
|
||||
}
|
||||
|
||||
.leading-normal {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.m-8 {
|
||||
margin: 2rem;
|
||||
}
|
||||
|
||||
.my-3 {
|
||||
margin-top: .75rem;
|
||||
margin-bottom: .75rem;
|
||||
}
|
||||
|
||||
.mb-8 {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.max-w-sm {
|
||||
max-width: 30rem;
|
||||
}
|
||||
|
||||
.min-h-screen {
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.py-3 {
|
||||
padding-top: .75rem;
|
||||
padding-bottom: .75rem;
|
||||
}
|
||||
|
||||
.px-6 {
|
||||
padding-left: 1.5rem;
|
||||
padding-right: 1.5rem;
|
||||
}
|
||||
|
||||
.pb-full {
|
||||
padding-bottom: 100%;
|
||||
}
|
||||
|
||||
.absolute {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.relative {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.pin {
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.text-black {
|
||||
color: #22292f;
|
||||
}
|
||||
|
||||
.text-grey-darkest {
|
||||
color: #3d4852;
|
||||
}
|
||||
|
||||
.text-grey-darker {
|
||||
color: #606f7b;
|
||||
}
|
||||
|
||||
.text-2xl {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.text-5xl {
|
||||
font-size: 3rem;
|
||||
}
|
||||
|
||||
.uppercase {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.antialiased {
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.tracking-wide {
|
||||
letter-spacing: .05em;
|
||||
}
|
||||
|
||||
.w-16 {
|
||||
width: 4rem;
|
||||
}
|
||||
|
||||
.w-full {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.md\:bg-left {
|
||||
background-position: left;
|
||||
}
|
||||
|
||||
.md\:bg-right {
|
||||
background-position: right;
|
||||
}
|
||||
|
||||
.md\:flex {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.md\:my-6 {
|
||||
margin-top: 1.5rem;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
.md\:min-h-screen {
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.md\:pb-0 {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.md\:text-3xl {
|
||||
font-size: 1.875rem;
|
||||
}
|
||||
|
||||
.md\:text-15xl {
|
||||
font-size: 9rem;
|
||||
}
|
||||
|
||||
.md\:w-1\/2 {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
.lg\:bg-center {
|
||||
background-position: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="antialiased font-sans">
|
||||
<div class="md:flex min-h-screen">
|
||||
<div class="w-full md:w-1/2 bg-white flex items-center justify-center">
|
||||
<div class="max-w-sm m-8">
|
||||
<div class="text-black text-5xl md:text-15xl font-black">
|
||||
@yield('code', __('Oh no'))
|
||||
</div>
|
||||
|
||||
<div class="w-16 h-1 bg-purple-light my-3 md:my-6"></div>
|
||||
|
||||
<p class="text-grey-darker text-2xl md:text-3xl font-light mb-8 leading-normal">
|
||||
@yield('message')
|
||||
</p>
|
||||
|
||||
<a href="{{ app('router')->has('home') ? route('home') : url('/') }}">
|
||||
<button class="bg-transparent text-grey-darkest font-bold uppercase tracking-wide py-3 px-6 border-2 border-grey-light hover:border-grey rounded-lg">
|
||||
{{ __('Go Home') }}
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="relative pb-full md:flex md:pb-0 md:min-h-screen w-full md:w-1/2">
|
||||
@yield('image')
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
57
resources/views/errors/layout.blade.php
Normal file
57
resources/views/errors/layout.blade.php
Normal file
|
@ -0,0 +1,57 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>@yield('title')</title>
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="dns-prefetch" href="//fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet" type="text/css">
|
||||
|
||||
<!-- Styles -->
|
||||
<style>
|
||||
html, body {
|
||||
background-color: #fff;
|
||||
color: #636b6f;
|
||||
font-family: 'Nunito', sans-serif;
|
||||
font-weight: 100;
|
||||
height: 100vh;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.full-height {
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.flex-center {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.position-ref {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.content {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 36px;
|
||||
padding: 20px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flex-center position-ref full-height">
|
||||
<div class="content">
|
||||
<div class="title">
|
||||
@yield('message')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
62
resources/views/errors/minimal.blade.php
Normal file
62
resources/views/errors/minimal.blade.php
Normal file
|
@ -0,0 +1,62 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>@yield('title')</title>
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="dns-prefetch" href="//fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
|
||||
|
||||
<!-- Styles -->
|
||||
<style>
|
||||
html, body {
|
||||
background-color: #fff;
|
||||
color: #636b6f;
|
||||
font-family: 'Nunito', sans-serif;
|
||||
font-weight: 100;
|
||||
height: 100vh;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.full-height {
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.flex-center {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.position-ref {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.code {
|
||||
border-right: 2px solid;
|
||||
font-size: 26px;
|
||||
padding: 0 15px 0 15px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.message {
|
||||
font-size: 18px;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flex-center position-ref full-height">
|
||||
<div class="code">
|
||||
@yield('code')
|
||||
</div>
|
||||
|
||||
<div class="message" style="padding: 10px;">
|
||||
@yield('message')
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -21,16 +21,16 @@
|
|||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="twelve columns">
|
||||
<h3 class="separator">Introduction RDR</h3>
|
||||
<h3 class="separator">Introduction TETHYS</h3>
|
||||
<h4>
|
||||
RDR offers institutions and researchers a comprehensive archiving
|
||||
TETHYS offers institutions and researchers a comprehensive archiving
|
||||
and publishing service with reliable storage options for backing up
|
||||
and managing research data. With RDR you can promote research data
|
||||
and managing research data. With TETHYS you can promote research data
|
||||
management at your institution and make an important contribution to improve
|
||||
availability, long-term preservation and independent publication of your research data.
|
||||
</h4>
|
||||
<p>
|
||||
The use of RDR as a data centre for archiving and/or publishing research data is invoiced annually.
|
||||
The use of TETHYS as a data centre for archiving and/or publishing research data is invoiced annually.
|
||||
The invoice consists of a basic annual contract fee and a usage-related fee.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -43,7 +43,7 @@
|
|||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="twelve columns">
|
||||
<h3 class="separator">RDR SERVICES</h3>
|
||||
<h3 class="separator">TETHYS SERVICES</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -61,7 +61,7 @@
|
|||
<div class="vertical-centered">
|
||||
<p class="separator orange">Data Archival</p>
|
||||
<p>
|
||||
RDR provides format-independent archiving services for data protection.
|
||||
TETHYS provides format-independent archiving services for data protection.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -78,7 +78,7 @@
|
|||
<div class="vertical-centered">
|
||||
<p class="separator orange">Data Publication</p>
|
||||
<p>
|
||||
With RDR you can publish research data,
|
||||
With TETHYS you can publish research data,
|
||||
so that your data is citable and reusable.
|
||||
</p>
|
||||
</div>
|
||||
|
@ -96,7 +96,7 @@
|
|||
<div class="vertical-centered">
|
||||
<p class="separator orange">Peer Review</p>
|
||||
<p>
|
||||
All RDR datasets undergo a full, efficient peer review process.
|
||||
All TETHYS datasets undergo a full, efficient peer review process.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -134,7 +134,7 @@
|
|||
<div class="twelve columns">
|
||||
<h3 class="separator">About us</h3>
|
||||
<h4>
|
||||
RDR focuses on disciplines who do not have a tradition
|
||||
TETHYS focuses on disciplines who do not have a tradition
|
||||
of data sharing thus ensuring better availability,
|
||||
sustainable preservation and (independent) publication
|
||||
capacity of their research data.
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<!-- Basic Page Needs
|
||||
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
|
||||
<meta charset="utf-8">
|
||||
<title>RDR - Geology Geophysics Meteorology</title>
|
||||
<title>TETHYS - Geology Geophysics Meteorology</title>
|
||||
<meta name="description" content="An awesome one page website">
|
||||
<meta name="author" content="Arno Kaimbacher">
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
@ -46,7 +46,7 @@
|
|||
|
||||
<body class="layout-home-html">
|
||||
<div id="trynewsite">
|
||||
<span>RDR Testphase</span>
|
||||
<span>TETHYS Testphase</span>
|
||||
</div>
|
||||
|
||||
<!-- Menu -->
|
||||
|
@ -128,7 +128,7 @@
|
|||
<div class="four columns footer-about">
|
||||
<!-- <h5>© 2015 Tuts+ Web Design.</h5> -->
|
||||
<div class="block">
|
||||
<h3 class="block-title">About RDR</h3>
|
||||
<h3 class="block-title">About TETHYS</h3>
|
||||
<ul>
|
||||
<li class="last"><a
|
||||
href="{!! URL::route('frontend.pages.show', ['page_slug'=>'about']) !!}">About
|
||||
|
|
|
@ -10,6 +10,10 @@
|
|||
</div>
|
||||
|
||||
<div id="app" class="box-content" v-cloak>
|
||||
{{-- v-on:time-expire="handleTimeExpire" --}}
|
||||
@if (Auth::check())
|
||||
<vue-countdown v-on:time-expire="handleTimeExpire" :seconds="({{config('session.lifetime')}} * 60)"></vue-countdown>
|
||||
@endif
|
||||
{{--
|
||||
<form action={{ route( 'publish.dataset.store1') }} method="post" class="pure-form" enctype="multipart/form-data">
|
||||
--}}
|
||||
|
@ -318,7 +322,7 @@
|
|||
</div>
|
||||
</fieldset> --}}
|
||||
|
||||
<fieldset-dates>
|
||||
<fieldset id="fieldset-dates">
|
||||
<legend>Date(s)</legend>
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{!! Form::label('EmbargoDate', 'Embargo Date') !!}
|
||||
|
@ -326,7 +330,7 @@
|
|||
=> 'pure-u-23-24', 'v-model' => 'dataset.embargo_date', 'data-vv-scope' => 'step-2']) !!}
|
||||
<small id="projectHelp" class="pure-form-message-inline">EmbargoDate is optional</small>
|
||||
</div>
|
||||
</fieldset-dates>
|
||||
</fieldset>
|
||||
|
||||
<fieldset id="fieldset-geolocation">
|
||||
<legend>Geo Location</legend>
|
||||
|
@ -526,8 +530,10 @@
|
|||
data-vv-scope="step-2" />
|
||||
</td>
|
||||
<td>
|
||||
{!! Form::select('Keyword[Type]', $keywordTypes, null, ['placeholder' => '[keyword type]', 'v-model' =>
|
||||
'item.type', "v-validate" => "'required'", 'data-vv-scope' => 'step-2']) !!}
|
||||
{{-- {!! Form::select('Keyword[Type]', $keywordTypes, null, ['placeholder' => '[keyword type]', 'v-model' =>
|
||||
'item.type', "v-validate" => "'required'", 'data-vv-scope' => 'step-2']) !!} --}}
|
||||
<input name="Keyword Type" readonly class="form-control" placeholder="[KEYWORD TYPE]" v-model="item.type" v-validate="'required'"
|
||||
data-vv-scope="step-2" />
|
||||
</td>
|
||||
<td>
|
||||
<input name="Keyword Language" readonly class="form-control" placeholder="[KEYWORD LANGUAGE]" v-model="item.language" v-validate="'required'"
|
||||
|
@ -574,36 +580,18 @@
|
|||
@if ($loop->first)
|
||||
<input name="licenses" value={{ $license->id }} v-model="dataset.checkedLicenses" type="radio" class="form-check-input" v-validate="'required'"
|
||||
data-vv-as="Licence" data-vv-scope="step-3">
|
||||
{{ $license->name_long }}
|
||||
<a href="{{ $license->link_licence }}" target="_blank">{{ $license->name_long }}</a>
|
||||
@else
|
||||
<input name="licenses" value={{ $license->id }} v-model="dataset.checkedLicenses" type="radio" class="form-check-input" data-vv-scope="step-3">
|
||||
{{ $license->name_long }}
|
||||
<a href="{{ $license->link_licence }}" target="_blank">{{ $license->name_long }}</a>
|
||||
@endif
|
||||
</label>
|
||||
@endforeach
|
||||
<br>
|
||||
{{-- <span>Checked license: @{{ dataset.checkedLicenses }}</span> --}}
|
||||
</div>
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
|
||||
{{-- <fieldset id="fieldset-submitters">
|
||||
<legend>Submitters</legend>
|
||||
<div class="pure-g">
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
<my-autocomplete title="searching active person table" @person="onAddSubmitter"></my-autocomplete>
|
||||
</div>
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
<div class="pure-control-group checkboxlist">
|
||||
<label v-for="(submitter, index) in dataset.submitters" :for="submitter.id" class="pure-checkbox">
|
||||
<input type="checkbox" name="submitters" v-bind:value="submitter.id" v-model="dataset.checkedSubmitters" class="form-check-input" data-vv-scope="step-3">
|
||||
@{{ submitter.full_name }}
|
||||
</label>
|
||||
<br />
|
||||
<span>Checked Submitters: @{{ dataset.checkedSubmitters }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset> --}}
|
||||
<br />
|
||||
<div class="pure-controls">
|
||||
<button @click.prevent="prev()" class="pure-button button-small">
|
||||
|
@ -613,7 +601,7 @@
|
|||
|
||||
<button @click.prevent="next('step-3')" class="pure-button button-small">
|
||||
<i class="fa fa-arrow-right"></i>
|
||||
<span>Review Dataset</span>
|
||||
<span>Continue</span>
|
||||
</button>
|
||||
</div>
|
||||
<div v-if="errors.items.length > 0">
|
||||
|
@ -715,10 +703,7 @@
|
|||
<h2>Uploaded failed.</h2>
|
||||
<p>
|
||||
<a href="javascript:void(0)" @click="retry()">Retry: Edit inputs</a>
|
||||
</p>
|
||||
{{-- <p>
|
||||
<a href="javascript:void(0)" @click="reset()">Submit new dataset</a>
|
||||
</p> --}}
|
||||
</p>
|
||||
<div v-if="serrors.length > 0">
|
||||
<b>Please correct the following server error(s):</b>
|
||||
<ul class="alert validation-summary-errors">
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
<title>BACKEND RDR</title>
|
||||
<title>BACKEND TETHYS</title>
|
||||
<link rel="shortcut icon" type="image/x-icon" href="{{ asset('favicon.ico') }}">
|
||||
|
||||
{{-- <link rel='stylesheet' href="{{ asset('css/pure-min.css') }}" />
|
||||
|
@ -30,7 +30,7 @@
|
|||
|
||||
<div id="menu">
|
||||
<nav class="pure-menu sidebar-menu">
|
||||
<h1 class="site-logo">Backend<strong>RDR</strong></h1>
|
||||
<h1 class="site-logo">Backend<strong>TETHYS</strong></h1>
|
||||
{{-- <div class="menu-item-divided"></div> --}}
|
||||
|
||||
{{-- <h2 class="pure-menu-heading">Home</h2> --}}
|
||||
|
@ -175,7 +175,7 @@
|
|||
<section class="user-info">
|
||||
<i class="fas fa-home"></i>
|
||||
<a class=" pure-menu-linkab-item" aria-haspopup="true" href="{{ route('frontend.home.index') }}">
|
||||
repository
|
||||
TETHYS
|
||||
</a>
|
||||
</section>
|
||||
</div>
|
||||
|
|
|
@ -1,146 +1,167 @@
|
|||
<fieldset id="fieldset-General">
|
||||
<legend>General</legend>
|
||||
<div class="pure-g">
|
||||
<legend>General</legend>
|
||||
<div class="pure-g">
|
||||
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{!! Form::label('type', 'Type..') !!}
|
||||
<div class="select pure-u-23-24">
|
||||
{!! Form::select('type', Lang::get('doctypes'), null, ['id' => 'type', 'placeholder' => '-- select type --']) !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{!! Form::label('project_id', 'Project..') !!}
|
||||
<div class="select pure-u-23-24">
|
||||
{!! Form::select('project_id', $projects, null, ['id' => 'project_id', 'placeholder' => '--no project--']) !!}
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{!! Form::label('Language', 'Language..') !!}
|
||||
<div class="select pure-u-23-24">
|
||||
{!! Form::select('Language', $languages, null, ['placeholder' => '[language]', 'v-model' =>
|
||||
'dataset.language', "v-validate" => "'required'"]) !!}
|
||||
</div>
|
||||
<small id="languageHelp" class="pure-form-message-inline">select dataset main language</small>
|
||||
</div>
|
||||
<small id="projectHelp" class="pure-form-message-inline">project is optional</small>
|
||||
</div>
|
||||
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{!! Form::label('server_state', 'Status..') !!}
|
||||
{{-- {!! Form::select('server_state', Config::get('enums.server_states'), null, ['id' => 'server_state', 'placeholder' => '-- select server state --']) !!} --}}
|
||||
{!! Form::text('server_state', null, ['class'=>'pure-u-23-24','readonly']) !!}
|
||||
|
||||
</div>
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{!! Form::label('type', 'Type..') !!}
|
||||
<div class="select pure-u-23-24">
|
||||
{!! Form::select('type', Lang::get('doctypes'), null, ['id' => 'type', 'placeholder' => '-- select type
|
||||
--']) !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{!! Form::label('reject_reviewer_note', 'reviewer reject note..') !!}
|
||||
{{-- {!! Form::select('server_state', Config::get('enums.server_states'), null, ['id' => 'server_state', 'placeholder' => '-- select server state --']) !!} --}}
|
||||
{!! Form::textarea('reject_reviewer_note', null, ['class'=>'pure-u-23-24','readonly']) !!}
|
||||
|
||||
</div>
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{!! Form::label('project_id', 'Project..') !!}
|
||||
<div class="select pure-u-23-24">
|
||||
{!! Form::select('project_id', $projects, null, ['id' => 'project_id', 'placeholder' => '--no
|
||||
project--']) !!}
|
||||
</div>
|
||||
<small id="projectHelp" class="pure-form-message-inline">project is optional</small>
|
||||
</div>
|
||||
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{!! Form::label('server_state', 'Status..') !!}
|
||||
{{-- {!! Form::select('server_state', Config::get('enums.server_states'), null, ['id' => 'server_state', 'placeholder' => '-- select server state --']) !!} --}}
|
||||
{!! Form::text('server_state', null, ['class'=>'pure-u-23-24','readonly']) !!}
|
||||
|
||||
</div>
|
||||
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{!! Form::label('reject_reviewer_note', 'reviewer reject note..') !!}
|
||||
{{-- {!! Form::select('server_state', Config::get('enums.server_states'), null, ['id' => 'server_state', 'placeholder' => '-- select server state --']) !!} --}}
|
||||
{!! Form::textarea('reject_reviewer_note', null, ['class'=>'pure-u-23-24','readonly']) !!}
|
||||
|
||||
</div>
|
||||
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{!! Form::label('embargo_date', 'Embargo Date') !!}
|
||||
{!! Form::date('embargo_date', null, ['placeholder' => date('y-m-d'), 'class' => 'pure-u-23-24']) !!}
|
||||
<small id="projectHelp" class="pure-form-message-inline">embargo_date is optional</small>
|
||||
</div>
|
||||
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{!! Form::label('creating_corporation', 'Creating Corporation') !!}
|
||||
{!! Form::text('creating_corporation', null, ['class' =>
|
||||
'pure-u-23-24', 'v-model' => 'dataset.creating_corporation', "v-validate" => "'required'", 'data-vv-scope'
|
||||
=> 'step-1']) !!}
|
||||
</div>
|
||||
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{!! Form::label('embargo_date', 'Embargo Date') !!}
|
||||
{!! Form::date('embargo_date', null, ['placeholder' => date('y-m-d'), 'class' => 'pure-u-23-24']) !!}
|
||||
<small id="projectHelp" class="pure-form-message-inline">embargo_date is optional</small>
|
||||
</div>
|
||||
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{!! Form::label('creating_corporation', 'Creating Corporation') !!}
|
||||
{!! Form::text('creating_corporation', null, ['class' =>
|
||||
'pure-u-23-24', 'v-model' => 'dataset.creating_corporation', "v-validate" => "'required'", 'data-vv-scope' => 'step-1']) !!}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset id="fieldset-geolocation">
|
||||
<legend>Coverage: Geolocation, Elevation, Depth, Time</legend>
|
||||
<div class="pure-g">
|
||||
<div class="pure-g">
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{!! Form::label('xmin', 'xmin: ') !!}
|
||||
{!! Form::label('xmin', 'xmin: ') !!}
|
||||
{!! Form::text('coverage[xmin]', null, ['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.xmin']) !!}
|
||||
</div>
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{!! Form::label('ymin', 'ymin: ') !!}
|
||||
{!! Form::label('ymin', 'ymin: ') !!}
|
||||
{!! Form::text('coverage[ymin]', null, ['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.ymin']) !!}
|
||||
</div>
|
||||
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{!! Form::label('xmax', 'xmax: ') !!}
|
||||
{!! Form::label('xmax', 'xmax: ') !!}
|
||||
{!! Form::text('coverage[xmax]', null, ['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.xmax']) !!}
|
||||
</div>
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{!! Form::label('ymax', 'ymax: ') !!}
|
||||
{!! Form::label('ymax', 'ymax: ') !!}
|
||||
{!! Form::text('coverage[ymax]', null, ['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.ymax']) !!}
|
||||
</div>
|
||||
|
||||
@if (isset($dataset->elevation_absolut))
|
||||
<div v-show="elevation === 'absolut'" class="pure-u-1 pure-u-md-1">
|
||||
{!! Form::label('elevation_absolut', 'elevation absolut: ') !!}
|
||||
{!! Form::label('elevation_absolut', 'elevation absolut: ') !!}
|
||||
{!! Form::text('coverage[elevation_absolut]', null,
|
||||
['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.elevation_absolut', 'data-vv-scope' => 'step-2', "v-validate" => "this.isElevationAbsolut ? 'required|integer' : '' " ]) !!}
|
||||
['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.elevation_absolut', 'data-vv-scope' => 'step-2',
|
||||
"v-validate" => "this.isElevationAbsolut ? 'required|integer' : '' " ]) !!}
|
||||
</div>
|
||||
@elseif (isset($dataset->elevation_min) && isset($dataset->elevation_max))
|
||||
<div v-show="elevation === 'range'" class="pure-u-1 pure-u-md-1">
|
||||
{!! Form::label('elevation_min', 'elevation min: ') !!}
|
||||
{!! Form::text('coverage[elevation_min]', null,
|
||||
['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.elevation_min', 'data-vv-scope' => 'step-2', "v-validate" => "this.isElevationRange ? 'required|integer' : '' "]) !!}
|
||||
{!! Form::label('elevation_min', 'elevation min: ') !!}
|
||||
{!! Form::text('coverage[elevation_min]', null,
|
||||
['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.elevation_min', 'data-vv-scope' => 'step-2',
|
||||
"v-validate" => "this.isElevationRange ? 'required|integer' : '' "]) !!}
|
||||
</div>
|
||||
<div v-show="elevation === 'range'" class="pure-u-1 pure-u-md-1">
|
||||
{!! Form::label('elevation_max', 'elevation max: ') !!}
|
||||
<div v-show="elevation === 'range'" class="pure-u-1 pure-u-md-1">
|
||||
{!! Form::label('elevation_max', 'elevation max: ') !!}
|
||||
{!! Form::text('coverage[elevation_max]', null,
|
||||
['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.elevation_max', 'data-vv-scope' => 'step-2', "v-validate" => "this.isElevationRange ? 'required|integer' : '' "]) !!}
|
||||
['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.elevation_max', 'data-vv-scope' => 'step-2',
|
||||
"v-validate" => "this.isElevationRange ? 'required|integer' : '' "]) !!}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
@if (isset($dataset->depth_absolut))
|
||||
<div v-show="elevation === 'absolut'" class="pure-u-1 pure-u-md-1">
|
||||
{!! Form::label('depth_absolut', 'depth absolut: ') !!}
|
||||
{!! Form::label('depth_absolut', 'depth absolut: ') !!}
|
||||
{!! Form::text('coverage[depth_absolut]', null,
|
||||
['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.depth_absolut', 'data-vv-scope' => 'step-2', "v-validate" => "this.isElevationAbsolut ? 'required|integer' : '' " ]) !!}
|
||||
['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.depth_absolut', 'data-vv-scope' => 'step-2',
|
||||
"v-validate" => "this.isElevationAbsolut ? 'required|integer' : '' " ]) !!}
|
||||
</div>
|
||||
@elseif (isset($dataset->elevation_min) && isset($dataset->elevation_max))
|
||||
<div v-show="elevation === 'range'" class="pure-u-1 pure-u-md-1">
|
||||
{!! Form::label('depth_min', 'depth min: ') !!}
|
||||
{!! Form::text('coverage[depth_min]', null,
|
||||
['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.depth_min', 'data-vv-scope' => 'step-2', "v-validate" => "this.isElevationRange ? 'required|integer' : '' "]) !!}
|
||||
{!! Form::label('depth_min', 'depth min: ') !!}
|
||||
{!! Form::text('coverage[depth_min]', null,
|
||||
['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.depth_min', 'data-vv-scope' => 'step-2',
|
||||
"v-validate" => "this.isElevationRange ? 'required|integer' : '' "]) !!}
|
||||
</div>
|
||||
<div v-show="elevation === 'range'" class="pure-u-1 pure-u-md-1">
|
||||
{!! Form::label('depth_max', 'depth max: ') !!}
|
||||
<div v-show="elevation === 'range'" class="pure-u-1 pure-u-md-1">
|
||||
{!! Form::label('depth_max', 'depth max: ') !!}
|
||||
{!! Form::text('coverage[depth_max]', null,
|
||||
['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.depth_max', 'data-vv-scope' => 'step-2', "v-validate" => "this.isElevationRange ? 'required|integer' : '' "]) !!}
|
||||
['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.depth_max', 'data-vv-scope' => 'step-2',
|
||||
"v-validate" => "this.isElevationRange ? 'required|integer' : '' "]) !!}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
@if (isset($dataset->depth_absolut))
|
||||
<div v-show="elevation === 'absolut'" class="pure-u-1 pure-u-md-1">
|
||||
{!! Form::label('time_absolut', 'time absolut: ') !!}
|
||||
{!! Form::label('time_absolut', 'time absolut: ') !!}
|
||||
{!! Form::text('coverage[time_absolut]', null,
|
||||
['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.time_absolut', 'data-vv-scope' => 'step-2', "v-validate" => "this.isElevationAbsolut ? 'required|integer' : '' " ]) !!}
|
||||
['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.time_absolut', 'data-vv-scope' => 'step-2',
|
||||
"v-validate" => "this.isElevationAbsolut ? 'required|integer' : '' " ]) !!}
|
||||
</div>
|
||||
@elseif (isset($dataset->elevation_min) && isset($dataset->elevation_max))
|
||||
<div v-show="elevation === 'range'" class="pure-u-1 pure-u-md-1">
|
||||
{!! Form::label('time_min', 'time min: ') !!}
|
||||
{!! Form::text('coverage[time_min]', null,
|
||||
['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.time_min', 'data-vv-scope' => 'step-2', "v-validate" => "this.isElevationRange ? 'required|integer' : '' "]) !!}
|
||||
{!! Form::label('time_min', 'time min: ') !!}
|
||||
{!! Form::text('coverage[time_min]', null,
|
||||
['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.time_min', 'data-vv-scope' => 'step-2',
|
||||
"v-validate" => "this.isElevationRange ? 'required|integer' : '' "]) !!}
|
||||
</div>
|
||||
<div v-show="elevation === 'range'" class="pure-u-1 pure-u-md-1">
|
||||
{!! Form::label('time_max', 'time max: ') !!}
|
||||
<div v-show="elevation === 'range'" class="pure-u-1 pure-u-md-1">
|
||||
{!! Form::label('time_max', 'time max: ') !!}
|
||||
{!! Form::text('coverage[time_max]', null,
|
||||
['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.time_max', 'data-vv-scope' => 'step-2', "v-validate" => "this.isElevationRange ? 'required|integer' : '' "]) !!}
|
||||
['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.time_max', 'data-vv-scope' => 'step-2',
|
||||
"v-validate" => "this.isElevationRange ? 'required|integer' : '' "]) !!}
|
||||
</div>
|
||||
@endif,
|
||||
</div>
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
|
||||
<fieldset id="fieldset-titles">
|
||||
<legend>Title</legend>
|
||||
<div class="pure-g">
|
||||
|
||||
@foreach($dataset->titles as $key => $title)
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{{ Form::label('title', 'Title ' .($key+1).':') }}
|
||||
<!-- Notice this is an array now: -->
|
||||
{{ Form::text('titles['.$title->id.'][value]', $title->value, ['class' => 'pure-u-23-24']) }}
|
||||
</div>
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{{ Form::label('language', 'Language..') }}
|
||||
{{ Form::text('titles['.$title->id.'][language]', $title->language, ['placeholder' => '--no language--', 'class' => 'pure-u-23-24', 'readonly']) }}
|
||||
</div>
|
||||
@endforeach
|
||||
@foreach($dataset->titles as $key => $title)
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{{ Form::label('title', 'Title ' .($key+1).':') }}
|
||||
<!-- Notice this is an array now: -->
|
||||
{{ Form::text('titles['.$title->id.'][value]', $title->value, ['class' => 'pure-u-23-24']) }}
|
||||
</div>
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{{ Form::label('language', 'Language..') }}
|
||||
{{ Form::text('titles['.$title->id.'][language]', $title->language, ['placeholder' => '--no language--', 'class' => 'pure-u-23-24', 'readonly']) }}
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
</div>
|
||||
</fieldset>
|
||||
|
@ -149,17 +170,17 @@
|
|||
<legend>Abstract</legend>
|
||||
<div class="pure-g">
|
||||
|
||||
@foreach($dataset->abstracts as $key => $abstract)
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{{ Form::label('abstract', 'Abstract ' .($key+1).':') }}
|
||||
<!-- Notice this is an array now: -->
|
||||
{{ Form::textarea('abstracts['.$abstract->id.'][value]', $abstract->value, ['class' => 'pure-u-23-24', 'size' => '70x6']) }}
|
||||
</div>
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{{ Form::label('language', 'Language..') }}
|
||||
{{ Form::text('abstracts['.$abstract->id.'][language]', $abstract->language, ['placeholder' => '--no language--', 'class' => 'pure-u-23-24', 'readonly']) }}
|
||||
</div>
|
||||
@endforeach
|
||||
@foreach($dataset->abstracts as $key => $abstract)
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{{ Form::label('abstract', 'Abstract ' .($key+1).':') }}
|
||||
<!-- Notice this is an array now: -->
|
||||
{{ Form::textarea('abstracts['.$abstract->id.'][value]', $abstract->value, ['class' => 'pure-u-23-24', 'size' => '70x6']) }}
|
||||
</div>
|
||||
<div class="pure-u-1 pure-u-md-1-2 pure-div">
|
||||
{{ Form::label('language', 'Language..') }}
|
||||
{{ Form::text('abstracts['.$abstract->id.'][language]', $abstract->language, ['placeholder' => '--no language--', 'class' => 'pure-u-23-24', 'readonly']) }}
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
</div>
|
||||
</fieldset>
|
||||
|
@ -176,7 +197,9 @@
|
|||
@foreach ($options as $license)
|
||||
|
||||
<label for={{"license". $license->id }} class="pure-checkbox">
|
||||
<input name="licenses[]" value={{ $license->id }} {{ (in_array($license->id, $checkeds)) ? 'checked=checked' : '' }} type="checkbox" class="form-check-input">
|
||||
<input name="licenses[]" value={{ $license->id }}
|
||||
{{ (in_array($license->id, $checkeds)) ? 'checked=checked' : '' }} type="checkbox"
|
||||
class="form-check-input">
|
||||
{{ $license->name_long }}
|
||||
</label>
|
||||
|
||||
|
@ -187,54 +210,56 @@
|
|||
</fieldset>
|
||||
|
||||
<fieldset id="fieldset-references">
|
||||
<legend>Dataset References</legend>
|
||||
{{-- <table class="table table-hover" v-if="dataset.keywords.length"> --}}
|
||||
@if ($dataset->references->count() > 0)
|
||||
<table id="references" class="pure-table pure-table-horizontal">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 20px;">Reference value</th>
|
||||
<th style="width: 20px;">Label</th>
|
||||
<th>Type</th>
|
||||
<th>Relation</th>
|
||||
<th style="width: 130px;"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{-- <tr v-for="(item, index) in dataset.keywords"> --}}
|
||||
@foreach($dataset->references as $key => $reference)
|
||||
<tr>
|
||||
<td>
|
||||
{{ Form::text('references['.$reference->id.'][value]', $reference->value, ['class' => 'form-control', 'placeholder' => '[REFERENCE VALUE]']) }}
|
||||
</td>
|
||||
<td>
|
||||
{{ Form::text('references['.$reference->id.'][label]', $reference->label, ['class' => 'form-control', 'placeholder' => '[REFERENCE LABEL]']) }}
|
||||
</td>
|
||||
<td>
|
||||
{!! Form::select('references['.$reference->id.'][type]', $referenceTypes, $reference->type, ['placeholder' => '[reference type]', 'v-model' =>
|
||||
'item.type', "v-validate" => "'required'", 'data-vv-scope' => 'step-2']) !!}
|
||||
</td>
|
||||
<td>
|
||||
{!! Form::select('references['.$reference->id.'][relation]', $relationTypes, $reference->relation, ['placeholder' => '[relation type]', 'v-model' =>
|
||||
'item.relation', "v-validate" => "'required'", 'data-vv-scope' => 'step-2']) !!}
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
@else
|
||||
<span>...there are no references</span>
|
||||
@endif
|
||||
</fieldset>
|
||||
<legend>Dataset References</legend>
|
||||
{{-- <table class="table table-hover" v-if="dataset.keywords.length"> --}}
|
||||
@if ($dataset->references->count() > 0)
|
||||
<table id="references" class="pure-table pure-table-horizontal">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 20px;">Reference value</th>
|
||||
<th style="width: 20px;">Label</th>
|
||||
<th>Type</th>
|
||||
<th>Relation</th>
|
||||
<th style="width: 130px;"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{-- <tr v-for="(item, index) in dataset.keywords"> --}}
|
||||
@foreach($dataset->references as $key => $reference)
|
||||
<tr>
|
||||
<td>
|
||||
{{ Form::text('references['.$reference->id.'][value]', $reference->value, ['class' => 'form-control', 'placeholder' => '[REFERENCE VALUE]']) }}
|
||||
</td>
|
||||
<td>
|
||||
{{ Form::text('references['.$reference->id.'][label]', $reference->label, ['class' => 'form-control', 'placeholder' => '[REFERENCE LABEL]']) }}
|
||||
</td>
|
||||
<td>
|
||||
{!! Form::select('references['.$reference->id.'][type]', $referenceTypes, $reference->type,
|
||||
['placeholder' => '[reference type]', 'v-model' =>
|
||||
'item.type', "v-validate" => "'required'", 'data-vv-scope' => 'step-2']) !!}
|
||||
</td>
|
||||
<td>
|
||||
{!! Form::select('references['.$reference->id.'][relation]', $relationTypes, $reference->relation,
|
||||
['placeholder' => '[relation type]', 'v-model' =>
|
||||
'item.relation', "v-validate" => "'required'", 'data-vv-scope' => 'step-2']) !!}
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
@else
|
||||
<span>...there are no references</span>
|
||||
@endif
|
||||
</fieldset>
|
||||
|
||||
<fieldset id="fieldset-keywords">
|
||||
<legend>Dataset Keywords</legend>
|
||||
<legend>Dataset Keywords</legend>
|
||||
{{-- <table class="table table-hover" v-if="dataset.keywords.length"> --}}
|
||||
@if ($dataset->subjects->count() > 0)
|
||||
<table id="keywords" class="pure-table pure-table-horizontal">
|
||||
@if ($dataset->subjects->count() > 0)
|
||||
<table id="keywords" class="pure-table pure-table-horizontal">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 20px;">Keyword</th>
|
||||
|
@ -245,15 +270,15 @@
|
|||
<tbody>
|
||||
{{-- <tr v-for="(item, index) in dataset.keywords"> --}}
|
||||
@foreach($dataset->subjects as $key => $keyword)
|
||||
<tr>
|
||||
<tr>
|
||||
<td>
|
||||
{{-- <input name="Keyword Value" class="form-control" placeholder="[KEYWORD VALUE]" v-model="item.value" v-validate="'required'"
|
||||
data-vv-scope="step-2" /> --}}
|
||||
{{ Form::text('keywords['.$keyword->id.'][value]', $keyword->value, ['class' => 'form-control', 'placeholder' => '[KEYWORD VALUE]']) }}
|
||||
{{ Form::text('keywords['.$keyword->id.'][value]', $keyword->value, ['class' => 'form-control', 'placeholder' => '[KEYWORD VALUE]']) }}
|
||||
</td>
|
||||
<td>
|
||||
{!! Form::select('keywords['.$keyword->id.'][type]', $keywordTypes, $keyword->type, ['placeholder' => '[keyword type]', 'v-model' =>
|
||||
'item.type', "v-validate" => "'required'", 'data-vv-scope' => 'step-2']) !!}
|
||||
{!! Form::select('keywords['.$keyword->id.'][type]', $keywordTypes, $keyword->type, ['placeholder'
|
||||
=> '[keyword type]', 'v-model' => 'item.type', "v-validate" => "'required'", 'data-vv-scope' => 'step-2']) !!}
|
||||
</td>
|
||||
<td>
|
||||
{{-- <button class="pure-button button-small is-warning" @click.prevent="removeKeyword(index)">Remove</button> --}}
|
||||
|
@ -275,20 +300,20 @@
|
|||
<th>Path Name</th>
|
||||
<th>Label</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($dataset->files as $key => $file)
|
||||
<tr>
|
||||
<td>
|
||||
@if($file->exists() === true)
|
||||
<a href="{{ route('settings.file.download', ['id' => $file->id]) }}"> {{ $file->path_name }} </a>
|
||||
<a href="{{ route('settings.file.download', ['id' => $file->id]) }}"> {{ $file->path_name }} </a>
|
||||
@else
|
||||
<span class="alert">missing file: {{ $file->path_name }}</span>
|
||||
<span class="alert">missing file: {{ $file->path_name }}</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
<td>
|
||||
{{-- {{ $file->label }} --}}
|
||||
{{ Form::text('files['.$file->id.'][label]', $file->label, ['class' => 'form-control', 'placeholder' => '[FILE LABEL]']) }}
|
||||
{{ Form::text('files['.$file->id.'][label]', $file->label, ['class' => 'form-control', 'placeholder' => '[FILE LABEL]']) }}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
<?php
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
@ -507,7 +506,6 @@ Route::get('history', [
|
|||
'as' => 'borrow.history', 'uses' => 'BorrowController@histori',
|
||||
]);
|
||||
|
||||
|
||||
//====================================authentication===========================================================================
|
||||
// Route::controllers([
|
||||
// 'auth' => 'Auth\AuthController',
|
||||
|
@ -515,9 +513,9 @@ Route::get('history', [
|
|||
// ]);
|
||||
// Auth::routes();
|
||||
// Authentication Routes...
|
||||
Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
|
||||
Route::post('login', 'Auth\LoginController@login');
|
||||
Route::get('logout', 'Auth\LoginController@logout')->name('logout');
|
||||
Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
|
||||
Route::post('login', 'Auth\LoginController@login');
|
||||
Route::get('logout', 'Auth\LoginController@logout')->name('logout');
|
||||
|
||||
// // Registration Routes...
|
||||
// Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
|
||||
|
@ -526,4 +524,8 @@ Route::get('history', [
|
|||
// Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
|
||||
// Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
|
||||
// Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
|
||||
// Route::post('password/reset', 'Auth\ResetPasswordController@reset');
|
||||
// Route::post('password/reset', 'Auth\ResetPasswordController@reset');
|
||||
|
||||
Route::get('refresh-csrf', function () {
|
||||
return csrf_token();
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue
Block a user