+ composer updates

+ CreatingCorporation nur readonly
+  doctypes zusätzlich: 'mixedtype' => 'Mixed Type'
+ bei einer Fehlermeldung beim Submit: kein Reset mehr... nur mehr "retry: edit inputs"
+ Eingabe der Contributor gleich nach der Eingabe der Creator
+ Projekteingabe beim Submitten entfernt
+ Keyword wird nun mit einer default language angelegt
+ elevation und depth-Angaben in Meter (im Label)
+ 'server_date_modified' wird nun auch aktualisiert beim automatischen reject,
falls der Reviewer länger als 14 Tage den Datensatz nicht kontrolliert
+ GeoLocation hat nun eine Doppelbindung -> nicht mehr readonly
This commit is contained in:
Arno Kaimbacher 2019-06-21 16:00:51 +02:00
parent dabb905111
commit 0dc6ca034e
21 changed files with 1092 additions and 864 deletions

View File

@ -59,7 +59,8 @@ class DatasetState extends Command
->where('id', $dataset->id)
->update([
'reject_reviewer_note' => 'Dataset was automatically rejected because of the time limit',
'server_state' => 'rejected_reviewer'
'server_state' => 'rejected_reviewer',
'server_date_modified' => DB::raw('now()')
]);
}
}

View File

@ -54,9 +54,7 @@ class IndexController extends Controller
->pluck('part1', 'part1');
// ->toArray();
// $persons = Person::where('status', 1)
// ->pluck('last_name', 'id');
$projects = Project::pluck('label', 'id');
// $projects = Project::pluck('label', 'id');
$relatedIdentifierTypes = ["ARK", "arXiv", "bibcode", "DOI", "EAN13", "EISSN", "Handle", "IGSN", "ISBN", "ISSN", "ISTC", "LISSN", "LSID", "PMID", "PURL", "UPC", "URL", "URN"];
$relatedIdentifierTypes = array_combine($relatedIdentifierTypes, $relatedIdentifierTypes);
@ -67,14 +65,14 @@ class IndexController extends Controller
$keywordTypes = ['uncontrolled' => 'uncontrolled'];
$descriptionTypes = [ 'methods' => 'methods', 'series_information' => 'series_information', 'technical_info' => 'technical_info', 'other' => 'other'];
$descriptionTypes = [ 'methods' => 'methods', 'series_information' => 'series_information', 'technical_info' => 'technical_info', 'translated' => 'translated', 'other' => 'other'];
$page = Page::query()->where('page_slug', 'terms-and-conditions')->firstOrFail();
//$relationTypes = array('updates' => 'updates', 'updated-by' => 'updated-by', 'other' => 'other');
return view(
'publish.create-step1',
compact('licenses', 'languages', 'projects', 'relatedIdentifierTypes', 'relationTypes', 'titleTypes', 'keywordTypes', 'descriptionTypes', 'page')
compact('licenses', 'languages', 'relatedIdentifierTypes', 'relationTypes', 'titleTypes', 'keywordTypes', 'descriptionTypes', 'page')
);
}

View File

@ -10,7 +10,7 @@ class Subject extends Model
protected $table = 'document_subjects';
public $timestamps = false;
protected $fillable = ['value', 'type'];
protected $fillable = ['value', 'type', 'language'];
public function dataset()
{

70
composer.lock generated
View File

@ -227,21 +227,24 @@
},
{
"name": "doctrine/lexer",
"version": "v1.0.1",
"version": "1.0.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/lexer.git",
"reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
"reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
"reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
"url": "https://api.github.com/repos/doctrine/lexer/zipball/1febd6c3ef84253d7c815bed85fc622ad207a9f8",
"reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8",
"shasum": ""
},
"require": {
"php": ">=5.3.2"
},
"require-dev": {
"phpunit/phpunit": "^4.5"
},
"type": "library",
"extra": {
"branch-alias": {
@ -249,8 +252,8 @@
}
},
"autoload": {
"psr-0": {
"Doctrine\\Common\\Lexer\\": "lib/"
"psr-4": {
"Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
}
},
"notification-url": "https://packagist.org/downloads/",
@ -271,13 +274,16 @@
"email": "schmittjoh@gmail.com"
}
],
"description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
"homepage": "http://www.doctrine-project.org",
"description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
"homepage": "https://www.doctrine-project.org/projects/lexer.html",
"keywords": [
"annotations",
"docblock",
"lexer",
"parser"
"parser",
"php"
],
"time": "2014-09-09T13:34:57+00:00"
"time": "2019-06-08T11:03:04+00:00"
},
{
"name": "dragonmantank/cron-expression",
@ -2985,16 +2991,16 @@
},
{
"name": "yajra/laravel-datatables-oracle",
"version": "v8.13.6",
"version": "v8.13.7",
"source": {
"type": "git",
"url": "https://github.com/yajra/laravel-datatables.git",
"reference": "0b6f9c0653499d73d051dc46275511fc4c9dd7f1"
"reference": "17b50e3ee91ceb5b1cc6e596c366718af4ff45cc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/yajra/laravel-datatables/zipball/0b6f9c0653499d73d051dc46275511fc4c9dd7f1",
"reference": "0b6f9c0653499d73d051dc46275511fc4c9dd7f1",
"url": "https://api.github.com/repos/yajra/laravel-datatables/zipball/17b50e3ee91ceb5b1cc6e596c366718af4ff45cc",
"reference": "17b50e3ee91ceb5b1cc6e596c366718af4ff45cc",
"shasum": ""
},
"require": {
@ -3052,7 +3058,7 @@
"jquery",
"laravel"
],
"time": "2019-03-26T05:01:51+00:00"
"time": "2019-06-12T05:03:20+00:00"
},
{
"name": "zizaco/entrust",
@ -3544,16 +3550,16 @@
},
{
"name": "phpspec/prophecy",
"version": "1.8.0",
"version": "1.8.1",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
"reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
"reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
"reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76",
"reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76",
"shasum": ""
},
"require": {
@ -3574,8 +3580,8 @@
}
},
"autoload": {
"psr-0": {
"Prophecy\\": "src/"
"psr-4": {
"Prophecy\\": "src/Prophecy"
}
},
"notification-url": "https://packagist.org/downloads/",
@ -3603,7 +3609,7 @@
"spy",
"stub"
],
"time": "2018-08-05T17:53:17+00:00"
"time": "2019-06-13T12:50:23+00:00"
},
{
"name": "phpunit/php-code-coverage",
@ -3761,16 +3767,16 @@
},
{
"name": "phpunit/php-timer",
"version": "2.1.1",
"version": "2.1.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
"reference": "8b389aebe1b8b0578430bda0c7c95a829608e059"
"reference": "1038454804406b0b5f5f520358e78c1c2f71501e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8b389aebe1b8b0578430bda0c7c95a829608e059",
"reference": "8b389aebe1b8b0578430bda0c7c95a829608e059",
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e",
"reference": "1038454804406b0b5f5f520358e78c1c2f71501e",
"shasum": ""
},
"require": {
@ -3806,7 +3812,7 @@
"keywords": [
"timer"
],
"time": "2019-02-20T10:12:59+00:00"
"time": "2019-06-07T04:22:29+00:00"
},
{
"name": "phpunit/php-token-stream",
@ -4560,16 +4566,16 @@
},
{
"name": "theseer/tokenizer",
"version": "1.1.2",
"version": "1.1.3",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
"reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8"
"reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/theseer/tokenizer/zipball/1c42705be2b6c1de5904f8afacef5895cab44bf8",
"reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8",
"url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
"reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
"shasum": ""
},
"require": {
@ -4596,7 +4602,7 @@
}
],
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"time": "2019-04-04T09:56:43+00:00"
"time": "2019-06-13T22:48:21+00:00"
},
{
"name": "webmozart/assert",

1599
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -8,23 +8,25 @@
"production": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"devDependencies": {
"axios": "^0.18",
"axios": "^0.18.1",
"bootstrap-sass": "^3.4.0",
"cross-env": "^5.1",
"jquery": "^3.2",
"laravel-mix": "^4.0.13",
"leaflet": "^1.4.0",
"jquery": "^3.4.1",
"laravel-mix": "^4.0.16",
"leaflet": "^1.5.1",
"leaflet-draw": "^1.0.4",
"lodash": "^4.17.11",
"node-sass": "^4.11.0",
"node-sass": "^4.12.0",
"npm-font-open-sans": "^1.1.0",
"purecss-sass": "^1.0.0",
"resolve-url-loader": "^2.3.1",
"resolve-url-loader": "^2.3.2",
"sass-loader": "^7.1.0",
"vee-validate": "^2.1.5",
"vee-validate": "^2.2.10",
"vue": "^2.5.21",
"vue-events": "^3.1.0",
"vue-template-compiler": "^2.5.21",
"vue-toast-notification": "0.0.2",
"vuejs-datetimepicker": "^1.1.11",
"vuetable-2": "^1.7.5"
},
"dependencies": {

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

2
public/css/app1.css 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

View File

@ -1,7 +1,66 @@
<template>
<div>
<div id="map">
<div style="position:relative">
<!-- <div id="inset">
xmin:
<input
type="text"
name="xmin"
id="xmin"
v-model="geolocation.xmin"
data-vv-scope="step-2"
v-validate="'decimal'"
>
<br>ymin:
<input
type="text"
name="ymin"
id="ymin"
v-model="geolocation.ymin"
data-vv-scope="step-2"
>
xmax:
<input
type="text"
name="xmax"
id="xmax"
v-model="geolocation.xmax"
data-vv-scope="step-2"
>
<br>ymax:
<input
type="text"
name="ymax"
id="ymax"
v-model="geolocation.ymax"
data-vv-scope="step-2"
>
<input type="button" v-on:click="zoomTo" value="zoomTo">
</div> -->
<div id="map"></div>
<div class="pure-g">
<div class="pure-u-1 pure-u-md-1-2 pure-div">
<label for="xmin">xmin: </label>
<input name="xmin" type="text" class="pure-u-23-24" v-model="geolocation.xmin" data-vv-scope="step-2" id="xmin" v-validate="'decimal'">
</div>
<div class="pure-u-1 pure-u-md-1-2 pure-div">
<label for="ymin">ymin: </label>
<input name="ymin" type="text" class="pure-u-23-24" v-model="geolocation.ymin" data-vv-scope="step-2" id="ymin" v-validate="'decimal'">
</div>
<div class="pure-u-1 pure-u-md-1-2 pure-div">
<label for="xmax">xmax: </label>
<input name="xmax" type="text" class="pure-u-23-24" v-model="geolocation.xmax" data-vv-scope="step-2" id="xmax" v-validate="'decimal'">
</div>
<div class="pure-u-1 pure-u-md-1-2 pure-div">
<label for="ymax">ymax: </label>
<input name="ymax" type="text" class="pure-u-23-24" v-model="geolocation.ymax" data-vv-scope="step-2" id="ymax" v-validate="'decimal'">
</div>
<input type="button" v-on:click="zoomTo" value="validate coordinates">
</div>
</div>
</template>
@ -20,14 +79,50 @@ export default {
data() {
return {
map: [],
markers: null
drawnItems: null,
locationErrors: []
};
},
created() {
this.$validator.extend('boundingBox', {
getMessage: field => 'At least one ' + field + ' needs to be checked.',
validate: (value, [testProp]) => {
const options = this.dataset.checkedLicenses;
return value || options.some((option) => option[testProp]);
}
});
},
computed: {},
watch: {},
methods: {},
methods: {
zoomTo() {
var _this = this;
_this.locationErrors.length = 0;
this.drawnItems.clearLayers();
var xmin = document.getElementById("xmin").value;
var ymin = document.getElementById("ymin").value;
var xmax = document.getElementById("xmax").value;
var ymax = document.getElementById("ymax").value;
var bounds = [[ymin, xmin], [ymax, xmax]];
try {
var boundingBox = L.rectangle(bounds, { color: "#005F6A", weight: 1 });
// this.geolocation.xmin = xmin;
// this.geolocation.ymin = ymin;
// this.geolocation.xmax = xmax;
// this.geolocation.ymax = ymax;
_this.drawnItems.addLayer(boundingBox);
_this.map.fitBounds(bounds);
_this.$toast.success("valid bounding box");
} catch (e) {
// _this.errors.push(e);
_this.$toast.error(e);
}
}
},
mounted() {
const map = L.map("map");
this.map = map;
map.scrollWheelZoom.disable();
// Construct a bounding box for this map that the user cannot
var southWest = L.latLng(46.5, 9.9),
@ -57,7 +152,7 @@ export default {
// this.addPlaces(this.places)
// Initialise the FeatureGroup to store editable layers
var drawnItems = new L.FeatureGroup();
var drawnItems = (this.drawnItems = new L.FeatureGroup());
map.addLayer(drawnItems);
var drawPluginOptions = {
position: "topright",
@ -140,4 +235,14 @@ export default {
font-size: 13px;
text-shadow: 0 0 2px #fff;
}
#inset {
position: absolute;
bottom: 0;
left: 0;
border: none;
width: 120px;
z-index: 999;
// height: 120px;
}
</style>

View File

@ -32,10 +32,18 @@ import MyAutocomplete from './components/MyAutocomplete.vue';
import VeeValidate from 'vee-validate';
import dataset from './components/Dataset';
import LocationsMap from './components/LocationsMap.vue';
import modal from './components/ShowModal.vue'
import modal from './components/ShowModal.vue';
// import datetime from 'vuejs-datetimepicker';
// import { Validator } from 'vee-validate';
import VueToast from 'vue-toast-notification';
import 'vue-toast-notification/dist/index.css';
Vue.use(VueToast);
Vue.use(VeeValidate);
// Vue.use(VeeValidate);
Vue.use(VeeValidate, {
// validity: true
useConstraintAttrs: true
});
const STATUS_INITIAL = 0, STATUS_SAVING = 1, STATUS_SUCCESS = 2, STATUS_FAILED = 3;
const app = new Vue({
@ -370,7 +378,7 @@ const app = new Vue({
adds a new Keyword
*/
addKeyword() {
let newKeyword = { value: '', type: '' };
let newKeyword = { value: '', type: '', language: this.dataset.language };
//this.dataset.files.push(uploadedFiles[i]);
this.dataset.keywords.push(newKeyword);
},

View File

@ -0,0 +1,3 @@
import TinyDatePicker from 'tiny-date-picker';
TinyDatePicker(document.querySelector("input[name='time_absolut']"));

View File

@ -19,6 +19,7 @@ return [
'models' => 'Models',
'rawdata' => 'Raw Data',
'supplementarydata' => 'Supplementary Data',
'mixedtype' => 'Mixed Type'
//'diplom' => 'Diploma Thesis',
//'doctoralthesis' => 'Doctoral Thesis',
//'coursematerial' => 'Course Material',

View File

@ -201,11 +201,30 @@
</div>
</fieldset>
<fieldset id="fieldset-contributors">
<legend>Contributors</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="onAddContributor"></my-autocomplete>
</div>
<div class="pure-u-1 pure-u-md-1-2 pure-div">
<div class="pure-control-group checkboxlist">
<label v-for="(contributor, index) in dataset.contributors" :for="contributor.id" class="pure-checkbox">
<input type="checkbox" name="contributors" v-bind:value="contributor.id" v-model="dataset.checkedContributors" class="form-check-input" data-vv-scope="step-1">
@{{ contributor.full_name }}
</label>
<br />
{{-- <span>Checked Contributors: @{{ dataset.checkedContributors }}</span> --}}
</div>
</div>
</div>
</fieldset>
<fieldset id="fieldset-publisher">
<legend>Publisher</legend>
<div class="pure-u-1 pure-u-md-1-2 pure-div">
{!! Form::label('CreatingCorporation', 'Creating Corporation') !!}
{!! Form::text('CreatingCorporation', null, ['class' =>
{!! Form::text('CreatingCorporation', null, ['readonly', 'class' =>
'pure-u-23-24', 'v-model' => 'dataset.creating_corporation', "v-validate" => "'required'", 'data-vv-scope' => 'step-1']) !!}
</div>
</fieldset>
@ -270,17 +289,10 @@
<div v-if="step === 2 && isInitial" data-vv-scope="step-2">
<h1>Step Two: Recommended Elements</h1>
<fieldset id="fieldset-project">
{{-- <fieldset id="fieldset-project">
<legend>Project</legend>
<div class="pure-g">
{{-- <div class="pure-u-1 pure-u-md-1-2 pure-div">
<div class="select pure-u-23-24">
{!! Form::select( 'State', ['unpublished' => 'unpublished', 'inprogress' => 'inprogress'], null, ['id' => 'state',
'placeholder' => '-- select server state --', 'v-model' => 'dataset.state', "v-validate" => "'required'", 'data-vv-scope' => 'step-2'] ) !!}
</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">
@ -291,7 +303,7 @@
</div>
</div>
</fieldset>
</fieldset> --}}
<fieldset-dates>
<legend>Date(s)</legend>
@ -301,26 +313,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 id="fieldset-contributors">
<legend>Contributors</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="onAddContributor"></my-autocomplete>
</div>
<div class="pure-u-1 pure-u-md-1-2 pure-div">
<div class="pure-control-group checkboxlist">
<label v-for="(contributor, index) in dataset.contributors" :for="contributor.id" class="pure-checkbox">
<input type="checkbox" name="contributors" v-bind:value="contributor.id" v-model="dataset.checkedContributors" class="form-check-input" data-vv-scope="step-2">
@{{ contributor.full_name }}
</label>
<br />
{{-- <span>Checked Contributors: @{{ dataset.checkedContributors }}</span> --}}
</div>
</div>
</div>
</fieldset>
</fieldset-dates>
<fieldset id="fieldset-geolocation">
<legend>Geo Location</legend>
@ -328,23 +321,28 @@
<div class="pure-u-1 pure-u-md-1 pure-u-lg-1 pure-div">
<locations-map v-bind:geolocation="dataset.coverage"></locations-map>
</div>
<div class="pure-u-1 pure-u-md-1-2 pure-div">
{{-- <div class="pure-u-1 pure-u-md-1-2 pure-div">
{!! Form::label('xmin', 'xmin: ') !!}
{!! Form::text('xmin', null, ['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.xmin', 'readonly']) !!}
{!! Form::text('xmin', null, [
'class' => 'pure-u-23-24',
'v-model' => 'dataset.coverage.xmin',
"v-validate" => "'decimal'",
'data-vv-scope' => 'step-2'
]) !!}
</div>
<div class="pure-u-1 pure-u-md-1-2 pure-div">
{!! Form::label('ymin', 'ymin: ') !!}
{!! Form::text('ymin', null, ['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.ymin', 'readonly']) !!}
{!! Form::text('ymin', null, ['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.ymin', 'data-vv-scope' => 'step-2']) !!}
</div>
<div class="pure-u-1 pure-u-md-1-2 pure-div">
{!! Form::label('xmax', 'xmax: ') !!}
{!! Form::text('xmax', null, ['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.xmax', 'readonly']) !!}
{!! Form::text('xmax', null, ['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.xmax', 'data-vv-scope' => 'step-2']) !!}
</div>
<div class="pure-u-1 pure-u-md-1-2 pure-div">
{!! Form::label('ymax', 'ymax: ') !!}
{!! Form::text('ymax', null, ['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.ymax', 'readonly']) !!}
</div>
{!! Form::text('ymax', null, ['class' => 'pure-u-23-24', 'v-model' => 'dataset.coverage.ymax', 'data-vv-scope' => 'step-2']) !!}
</div> --}}
</div>
</fieldset>
@ -356,11 +354,11 @@
<div class="pure-u-1 pure-u-md-1">
<label for="elevation-option-one" class="pure-radio">
<input id="elevation-option-one" type="radio" v-model="elevation" value="absolut">
absolut elevation
absolut elevation (m)
</label>
<label for="elevation-option-two" class="pure-radio">
<input id="elevation-option-two" type="radio" v-model="elevation" value="range">
elevation range
elevation range (m)
</label>
<label for="elevation-option-three" class="pure-radio">
<input id="elevation-option-three" type="radio" v-model="elevation" value="no_elevation">
@ -388,11 +386,11 @@
<div class="pure-u-1 pure-u-md-1">
<label for="depth-option-one" class="pure-radio">
<input id="depth-option-one" type="radio" v-model="depth" value="absolut">
absolut depth
absolut depth (m)
</label>
<label for="depth-option-two" class="pure-radio">
<input id="depth-option-two" type="radio" v-model="depth" value="range">
depth range
depth range (m)
</label>
<label for="depth-option-three" class="pure-radio">
<input id="depth-option-three" type="radio" v-model="depth" value="no_depth">
@ -435,9 +433,10 @@
<div v-show="time === 'absolut'" class="pure-u-1 pure-u-md-1">
{!! Form::label('time_absolut', 'time absolut: ') !!}
{!! Form::date('time_absolut', null, ['class' => 'pure-u-23-24',
'v-model' => 'dataset.coverage.time_absolut', 'data-vv-scope' => 'step-2',
"v-validate" => "this.isTimeAbsolut ? 'required' : '' " ]) !!}
{!! Form::datetimelocal('time_absolut', null, ['class' => 'pure-u-23-24', 'placeholder' => 'dd.MM.yyyy HH:mm:ss',
'v-model' => 'dataset.coverage.time_absolut', 'data-vv-scope' => 'step-2', 'step' => 1,
"v-validate" => "this.isTimeAbsolut ? 'required|date_format:dd.MM.yyyy HH:mm:ss' : '' " ]) !!}
{{-- <datetime name="time_absolut" format="MM-DD-YYYY H:i:s" width="300px" v-model="dataset.coverage.time_absolut"></datetime> --}}
</div>
<div v-show="time === 'range'" class="pure-u-1 pure-u-md-1">
{!! Form::label('time_min', 'time min: ') !!}
@ -493,7 +492,8 @@
</table>
</fieldset>
<fieldset id="fieldset-keywords">
<fieldset id="fieldset-keywords">
<legend>Dataset Keywords</legend>
<button class="pure-button button-small" @click.prevent="addKeyword()">Add Keyword</button>
<table class="table table-hover" v-if="dataset.keywords.length">
@ -501,6 +501,7 @@
<tr>
<th style="width: 20px;">Keyword</th>
<th>Type</th>
<th>Language</th>
<th style="width: 130px;"></th>
</tr>
</thead>
@ -515,15 +516,20 @@
'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>
<input name="Keyword Language" readonly class="form-control" placeholder="[KEYWORD LANGUAGE]" v-model="item.language" v-validate="'required'"
data-vv-scope="step-2" />
</td>
<td>
<button class="pure-button button-small is-warning" @click.prevent="removeKeyword(index)">Remove</button>
</td>
</tr>
</tbody>
</table>
</fieldset>
<br />
<div class="pure-controls">
<div class="pure-controls">
<button @click.prevent="prev()" class="pure-button button-small">
<i class="fa fa-arrow-left"></i>
<span>Back</span>
@ -688,9 +694,9 @@
<p>
<a href="javascript:void(0)" @click="retry()">Retry: Edit inputs</a>
</p>
<p>
<a href="javascript:void(0)" @click="reset()">Start again</a>
</p>
{{-- <p>
<a href="javascript:void(0)" @click="reset()">Submit new dataset</a>
</p> --}}
<div v-if="serrors.length > 0">
<b>Please correct the following server error(s):</b>
<ul class="alert validation-summary-errors">
@ -731,6 +737,4 @@
<script type="text/javascript" src="{{ resource_path('assets\js\datasetPublish.js') }}"></script> --}}
<script type="text/javascript" src="{{ asset('backend/publish/datasetPublish.js') }}"></script>
@stop

View File

@ -234,7 +234,7 @@
if (e.which === 8 && !$(e.target).is("input:not([type=radio]):not([type=checkbox]), textarea, [contentEditable], [contentEditable=true]")) {
e.preventDefault();
}
});
});
});
</script>
<script type="text/javascript" src="{{ asset('backend/functions.js') }}"></script>

View File

@ -19,7 +19,7 @@ mix.js('resources/assets/js/datasetPublish.js', 'public/backend/publish')
.js('resources/assets/js/lib.js', 'public/js')
.js('resources/assets/js/releaseDataset.js', 'public/backend/publish')
.js('resources/assets/js/approveDataset.js', 'public/backend/publish')
.js('resources/assets/js/ckeditor.js', 'public/backend/')
.js('resources/assets/js/ckeditor.js', 'public/backend/')
.sass('resources/assets/sass/app1.scss', 'public/css', { implementation: require('node-sass') })
// .sass('node_modules/purecss/build/pure.css', 'public/css', { implementation: require('node-sass') })
.scripts([