1. use Astrotomic\Translatable\Translatable instead of Dimsav\Translatable\Translatable
2. index of all my datasets is nun nach dem Attribut "server_date_modifued" sortiert "Date of last modification wird angezeigt" 3. composer updates 4. 3 Möglichkeiten nachdem ein Datensatz angelegt wurde: Edit, submit, delete 5. edit form for submitter
This commit is contained in:
parent
590c0812fe
commit
ec9a95098e
23 changed files with 1757 additions and 854 deletions
|
@ -488,7 +488,8 @@ class IndexController extends Controller
|
|||
return response()->json(array(
|
||||
'success' => true,
|
||||
//'redirect' => route('settings.document.edit', ['id' => $dataset->server_state]),
|
||||
'redirect' => route('publish.workflow.submit.release', ['id' => $dataset->id]),
|
||||
'release' => route('publish.workflow.submit.release', ['id' => $dataset->id]),
|
||||
'delete' => route('publish.workflow.submit.delete', ['id' => $dataset->id]),
|
||||
));
|
||||
} else {
|
||||
//TODO Handle validation error
|
||||
|
|
|
@ -10,6 +10,15 @@ use Illuminate\Http\Request;
|
|||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\View\View;
|
||||
// for edit actions:
|
||||
use App\Models\Project;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Models\License;
|
||||
use App\Http\Requests\DocumentRequest;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use App\Models\Title;
|
||||
use App\Models\Description;
|
||||
use App\Models\File;
|
||||
|
||||
class SubmitController extends Controller
|
||||
{
|
||||
|
@ -25,8 +34,9 @@ class SubmitController extends Controller
|
|||
|
||||
$builder = Dataset::query();
|
||||
$myDatasets = $builder
|
||||
->orderBy('server_state')
|
||||
->whereIn('server_state', ['inprogress', 'released', 'editor_accepted', 'approved', 'reviewed', 'rejected_editor', 'rejected_reviewer'])
|
||||
//->orderBy('server_state')
|
||||
->whereIn('server_state', ['inprogress',
|
||||
'released', 'editor_accepted', 'approved', 'reviewed', 'rejected_editor', 'rejected_reviewer'])
|
||||
->where('account_id', $user_id)
|
||||
->with('user:id,login')
|
||||
->orderBy('server_date_modified', 'desc')
|
||||
|
@ -36,6 +46,188 @@ class SubmitController extends Controller
|
|||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function edit($id): View
|
||||
{
|
||||
$dataset = Dataset::findOrFail($id);
|
||||
$dataset->load('licenses', 'titles', 'abstracts', 'files', 'coverage', 'subjects', 'references');
|
||||
|
||||
$projects = Project::pluck('label', 'id');
|
||||
|
||||
$datum = date('Y-m-d');
|
||||
$nowYear = substr($datum, 0, 4);
|
||||
$years = array();
|
||||
for ($jahr = 1990; $jahr <= $nowYear; $jahr++) {
|
||||
$years[$jahr] = $jahr;
|
||||
}
|
||||
|
||||
$languages = DB::table('languages')
|
||||
->where('active', true)
|
||||
->pluck('part1', 'part1');
|
||||
|
||||
//$options = License::all();
|
||||
$options = License::all('id', 'name_long');
|
||||
$checkeds = $dataset->licenses->pluck('id')->toArray();
|
||||
$keywordTypes = ['uncontrolled' => 'uncontrolled', 'swd' => 'swd'];
|
||||
|
||||
$referenceTypes = ["rdr-id", "arXiv", "bibcode", "DOI", "EAN13", "EISSN", "Handle", "IGSN", "ISBN", "ISSN", "ISTC", "LISSN", "LSID", "PMID", "PURL", "UPC", "URL", "URN"];
|
||||
$referenceTypes = array_combine($referenceTypes, $referenceTypes);
|
||||
|
||||
$relationTypes = ["IsCitedBy", "Cites", "IsSupplementTo", "IsSupplementedBy", "IsContinuedBy", "Continues", "HasMetadata", "IsMetadataFor","IsNewVersionOf", "IsPreviousVersionOf", "IsPartOf", "HasPart", "IsReferencedBy", "References"];
|
||||
// "IsDocumentedBy", "Documents", "IsCompiledBy", "Compiles", "IsVariantFormOf", "IsOriginalFormOf", "IsIdenticalTo", "IsReviewedBy", "Reviews", "IsDerivedFrom", "IsSourceOf"];
|
||||
$relationTypes = array_combine($relationTypes, $relationTypes);
|
||||
|
||||
|
||||
return view(
|
||||
'workflow.submitter.edit',
|
||||
compact(
|
||||
'dataset',
|
||||
'projects',
|
||||
'options',
|
||||
'checkeds',
|
||||
'years',
|
||||
'languages',
|
||||
'keywordTypes',
|
||||
'referenceTypes',
|
||||
'relationTypes'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
//https://stackoverflow.com/questions/17480200/using-laravel-how-do-i-create-a-view-that-will-update-a-one-to-many-relationshi?rq=1
|
||||
// https://laravel.io/forum/06-11-2014-how-to-save-eloquent-model-with-relations-in-one-go
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(DocumentRequest $request, $id): RedirectResponse
|
||||
{
|
||||
$rules = [
|
||||
'type' => 'required|min:5',
|
||||
'coverage.xmin' => [
|
||||
'nullable',
|
||||
'regex:/^[-]?((((1[0-7][0-9])|([0-9]?[0-9]))\.(\d+))|180(\.0+)?)$/'
|
||||
],
|
||||
'coverage.ymin' => [
|
||||
'nullable',
|
||||
'regex:/^[-]?(([0-8]?[0-9])\.(\d+))|(90(\.0+)?)$/'
|
||||
],
|
||||
'coverage.xmax' => [
|
||||
'nullable',
|
||||
'regex:/^[-]?((((1[0-7][0-9])|([0-9]?[0-9]))\.(\d+))|180(\.0+)?)$/'
|
||||
],
|
||||
'coverage.ymax' => [
|
||||
'nullable',
|
||||
'regex:/^[-]?(([0-8]?[0-9])\.(\d+))|(90(\.0+)?)$/'
|
||||
],
|
||||
];
|
||||
$validator = Validator::make($request->all(), $rules);
|
||||
if ($validator->passes()) {
|
||||
$dataset = Dataset::findOrFail($id);
|
||||
$data = $request->all();
|
||||
$input = $request->except('abstracts', 'licenses', 'titles', 'coverage', '_method', '_token');
|
||||
|
||||
$licenses = $request->input('licenses');
|
||||
//$licenses = $input['licenses'];
|
||||
$dataset->licenses()->sync($licenses);
|
||||
|
||||
//save the titles:
|
||||
$titles = $request->input('titles');
|
||||
if (is_array($titles) && count($titles) > 0) {
|
||||
foreach ($titles as $key => $formTitle) {
|
||||
$title = Title::findOrFail($key);
|
||||
$title->value = $formTitle['value'];
|
||||
$title->language = $formTitle['language'];
|
||||
$title->save();
|
||||
}
|
||||
}
|
||||
|
||||
//save the abstracts:
|
||||
$abstracts = $request->input('abstracts');
|
||||
if (is_array($abstracts) && count($abstracts) > 0) {
|
||||
foreach ($abstracts as $key => $formAbstract) {
|
||||
$abstract = Description::findOrFail($key);
|
||||
$abstract->value = $formAbstract['value'];
|
||||
$abstract->language = $formAbstract['language'];
|
||||
$abstract->save();
|
||||
}
|
||||
}
|
||||
|
||||
//save the references:
|
||||
$references = $request->input('references');
|
||||
if (is_array($references) && count($references) > 0) {
|
||||
foreach ($references as $key => $formReference) {
|
||||
$reference = DatasetReference::findOrFail($key);
|
||||
$reference->value = $formReference['value'];
|
||||
$reference->label = $formReference['label'];
|
||||
$reference->type = $formReference['type'];
|
||||
$reference->relation = $formReference['relation'];
|
||||
$reference->save();
|
||||
}
|
||||
}
|
||||
|
||||
//save the keywords:
|
||||
$keywords = $request->input('keywords');
|
||||
if (is_array($keywords) && count($keywords) > 0) {
|
||||
foreach ($keywords as $key => $formKeyword) {
|
||||
$subject = Subject::findOrFail($key);
|
||||
$subject->value = $formKeyword['value'];
|
||||
$subject->type = $formKeyword['type'];
|
||||
$subject->save();
|
||||
}
|
||||
}
|
||||
|
||||
//save the files:
|
||||
$files = $request->input('files');
|
||||
if (is_array($files) && count($files) > 0) {
|
||||
foreach ($files as $key => $formFile) {
|
||||
$file = File::findOrFail($key);
|
||||
$file->label = $formFile['label'];
|
||||
$file->save();
|
||||
}
|
||||
}
|
||||
|
||||
// save coverage
|
||||
if (isset($data['coverage'])) {
|
||||
$formCoverage = $request->input('coverage');
|
||||
$coverage = $dataset->coverage()->updateOrCreate(
|
||||
['dataset_id' => $dataset->id],
|
||||
$formCoverage
|
||||
);
|
||||
}
|
||||
|
||||
if (!$dataset->isDirty(dataset::UPDATED_AT)) {
|
||||
$time = new \Illuminate\Support\Carbon();
|
||||
$dataset->setUpdatedAt($time);
|
||||
}
|
||||
// $dataset->save();
|
||||
if ($dataset->update($input)) {
|
||||
//event(new DatasetUpdated($dataset));
|
||||
session()->flash('flash_message', 'You have updated 1 dataset!');
|
||||
return redirect()->route('publish.workflow.submit.index');
|
||||
}
|
||||
} else {
|
||||
//TODO Handle validation error
|
||||
//pass validator errors as errors object for ajax response
|
||||
// return response()->json([
|
||||
// 'success' => false,
|
||||
// 'errors' => $validator->errors()->all(),
|
||||
// ], 422);
|
||||
return back()
|
||||
->withErrors($validator->errors()->all());
|
||||
}
|
||||
throw new GeneralException(trans('exceptions.backend.dataset.update_error'));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
|
@ -89,13 +281,28 @@ class SubmitController extends Controller
|
|||
throw new GeneralException(trans('exceptions.publish.release.update_error'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\View\View
|
||||
*/
|
||||
public function delete($id): View
|
||||
{
|
||||
$dataset = Dataset::with('user:id,login')->findOrFail($id);
|
||||
|
||||
return view('workflow.submitter.delete', [
|
||||
'dataset' => $dataset
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function delete($id): RedirectResponse
|
||||
public function deleteUpdate($id): RedirectResponse
|
||||
{
|
||||
$dataset = Dataset::with('files')->findOrFail($id);
|
||||
if ($dataset->server_state == "inprogress" || $dataset->server_state == "rejected_editor") {
|
||||
|
|
Loading…
Add table
editor.link_modal.header
Reference in a new issue