FileManager

This commit is contained in:
Kevin Adametz 2020-03-07 19:45:39 +01:00
parent c8948338bb
commit f1e0900a7a
131 changed files with 5844 additions and 3081 deletions

View file

@ -0,0 +1,7 @@
<script>
@if(isset($lfm_helper))
LFileManager.setConfig('lfm_lang', {!! json_encode(trans('laravel-filemanager::lfm')) !!});
LFileManager.setConfig('lfm_availableMimeTypes', "{{ implode(',', $lfm_helper->availableMimeTypes()) }}");
LFileManager.setConfig('lfm_maxUploadSize', {{ $lfm_helper->maxUploadSize() }});
@endif
</script>

View file

@ -0,0 +1,135 @@
@extends('layouts.layout-2')
@section('content')
<h4 class="font-weight-bold py-3 mb-1">
{{ __('Authoren') }}
</h4>
@if ($errors->any())
<div class="row">
<div class="col-sm-12">
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
</div>
@endif
<div class="card">
<div class="card-datatable table-responsive py-2" data-route-modal="{{ route('cms_content_author_load_modal') }}" data-target-modal="#modals-load-content">
<div class="mr-4 mb-2 text-right">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-load-content"
data-id="new"
data-model="content"
>Neuen Autor anlegen</button>
</div>
<table class="datatables-default table table-striped table-bordered clients-table">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th>{{__('Name')}}</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach($contents as $value)
<tr>
<td class="not">
<button type="button" class="btn icon-btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-load-content"
data-id="{{ $value->id }}"
data-model="content">
<span class="fa fa-edit"></span>
</button>
</td>
<td>{{ $value->name }}</td>
<td><a class="text-danger" href="{{ route('cms_content_author_delete', [$value->id]) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a></td>
</tr>
@endforeach
</tbody>
</table>
<div class="mt-4 mr-4 text-right">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-load-content"
data-id="new"
data-model="content"
>Neuen Autor anlegen</button>
</div>
</div>
</div>
<script>
$( document ).ready(function() {
function loadModalInner(self, data){
var url = data.route,
contentType = 'application/x-www-form-urlencoded; charset=UTF-8';
$.ajax({
url: url,
data: data,
type: "POST",
dataType: "json",
cache: false,
contentType: contentType,
encode: true,
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: function(data) {
$(data.response.target).find('.modal-dialog').html(data.html);
//$('.selectpicker').selectpicker('refresh');
//datepicker_birthday_init();
},
error: function(xhr, status, errorThrown) {
console.log(xhr);
console.log(xhr.responseText);
console.log(errorThrown);
console.log("Sorry, there was a problem!");
}
});
return false;
}
$('#modals-load-content').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
if (!button.data('id')) {
return;
}
var data = {};
data.route = button.parents('.card').find('.card-datatable').data('route-modal');
data.target = button.parents('.card').find('.card-datatable').data('target-modal');
data.id = button.data('id');
data.model = button.data('model');
console.log(data);
loadModalInner(this, data);
});
$('.datatables-default').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"language": {
"url": "/js/German.json"
}
});
});
</script>
<!-- Modal template -->
<div class="modal fade" id="modals-load-content">
<div class="modal-dialog">
</div>
</div>
@endsection

View file

@ -0,0 +1,29 @@
{!! Form::open(['url' => route('cms_content_author_store'), 'class' => 'modal-content']) !!}
<input type="hidden" name="id" id="id" value="@if($value->id>0){{$value->id}}@else new @endif">
<div class="modal-header">
<h5 class="modal-title">
{{ __('Autor') }}
<span class="font-weight-light">erstellen/bearbeiten</span>
</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<div class="form-group col">
<label for="name" class="form-label">{{ __('Name') }}</label>
{{ Form::text('name', $value->name, array('placeholder'=>__('Name'), 'class'=>'form-control', 'required')) }}
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">schließen</button>
<button type="submit" class="btn btn-primary">speichern</button>
</div>
{!! Form::close() !!}

View file

@ -20,7 +20,6 @@
</div>
@endif
{!! Form::open(['url' => route('cms_travel_guide_detail', [$id]), 'class' => 'form-horizontal']) !!}
<h4 class="font-weight-bold py-3 mb-1">
@ -62,7 +61,7 @@
<span class="custom-control-label">{{__('Langer Text')}}</span>
</label>
<label class="form-label" for="travel_guide_full_text">{{ __('Text') }}* </label>
@if(Input::get('clean') == "true")
@if($response_clean === "true")
&nbsp; &nbsp;<a class="btn btn-primary btn-xs" href="?clean=">Clean Text on</a>
@else
&nbsp; &nbsp;<a class="btn btn-default btn-xs" href="?clean=true">Clean Text off</a>
@ -71,6 +70,22 @@
{{ Form::textarea('full_text', $travel_guide->full_text , ['class' => 'form-control summernote']) }}
</div>
</div>
<div class="form-row">
<!--<div class="form-group col-sm-6">
<label class="form-label" for="preview_image">{{ __('Vorschau Bild:') }}</label>
{{ Form::text('preview_image', '', array('placeholder'=>__('Vorschau Bild'), 'class'=>'form-control', 'id'=>'preview_image')) }}
</div>-->
<div class="form-group col-sm-6">
<label class="form-label" for="author_id">{{ __('Autor dieses Artikels:') }} <a href="{{route('cms_content_author')}}"><i class="fa fa-share-square"></i></a> </label>
<select class="custom-select" name="author_id">
<option value="">kein Autor</option>
{!! HTMLHelper::getAuthorOptions($travel_guide->author_id) !!}
</select>
</div>
</div>
<hr>
<button type="button" class="btn btn-primary btn-sm float-right mb-2" data-toggle="modal" data-target="#modals-load-content"
data-id="add"
data-model="guide"
@ -98,8 +113,10 @@
</a>
</td>
<td>{{$iq_content_site->iq_content_tree_node->name}}</td>
<td>{{$iq_content_site->iq_content_tree_node->getUri()}}</td>
<td><a href="{{ $iq_content_site->iq_content_tree_node->getUrl() }}" class="btn icon-btn btn-sm btn-secondary" target="_blank">
<span class="fa fa-external-link-alt"></span>
</a> {{$iq_content_site->iq_content_tree_node->getUri()}}
</td>
<td>
@if($iq_content_site->iq_content_tree_node->active)
<span class="badge badge-pill badge-success"><i class="fa fa-check"></i></span>

View file

@ -131,12 +131,24 @@
<input type="hidden" name="model" value="tree">
<input type="hidden" name="action" value="tree-node">
<input type="hidden" name="tree_id" value="{{$model->id}}">
<div class="input-group mb-4">
<div class="input-group-prepend">
<span class="input-group-text"><span
class="fa fa-link mr-2 text-primary"></span></span>
<div class="form-row">
<div class="form-group col-10 col-sm-11">
<div class="input-group mb-4">
<div class="input-group-prepend">
<span class="input-group-text">
<a href="{{ $tree_node->getUrl() }}" class="" target="_blank">
<span class="fa fa-external-link-alt mr-2 text-secondary"></span>
</a>
</span>
</div>
{{ Form::text('uri', $tree_node->getUri(), array('readonly'=>true, 'class'=>'form-control')) }}
</div>
</div>
<div class="form-group col-2 col-sm-1">
<a class="btn btn-sm btn-danger float-right" href="{{ route('iq_content_tree_delete', [$model->id, $tree_node->id, ($section? $section : '')]) }}" onclick="return confirm('Wirklich löschen? Node wird mit allen Unter-Nodes und Verknüpfungen gelöscht. ');">
<i class="fa fa-trash-alt"></i>
</a>
</div>
{{ Form::text('uri', $tree_node->getUri(), array('readonly'=>true, 'class'=>'form-control')) }}
</div>
<div class="form-row mb-2">
<div class="form-group col">
@ -150,7 +162,6 @@
</div>
<div class="form-row mb-2">
<div class="form-group col">
<button type="button" class="btn btn-primary btn-sm float-right mb-2"
data-toggle="modal" data-target="#modals-load-content"
data-id="add"

View file

@ -0,0 +1,224 @@
<style>
.nav-pills > .nav-item > .nav-link {
height: 5rem;
display: flex;
align-items: center;
}
.nav-pills > .sub-item > .nav-link {
height: 3rem;
padding-left: 3rem;
}
.nav-pills > li.active > a, .nav-pills > li:hover > a {
background-color: #ddd;
border-radius: 0;
color: #333844;
}
.carousel-image {
height: 50vh;
background-position: center;
background-size: contain;
background-repeat: no-repeat;
margin: 0 auto;
}
.carousel-indicators {
bottom: 0;
}
.carousel-label, .carousel-label:hover {
position: absolute;
bottom: 0;
background: linear-gradient(transparent 10px, rgba(0, 0, 0, .4), rgba(0, 0, 0, .5));
padding: 40px 20px 30px;
width: 100%;
color: white;
word-break: break-word;
text-align: center;
}
.carousel-control-background {
border-radius: 50%;
width: 25px;
height: 25px;
box-shadow: 0 0 10px #666;
background-color: #666;
}
#uploadForm > .dz-default.dz-message {
border: 2px dashed #ccc;
border-radius: 5px;
color: #aaa;
margin: 0;
padding: 3rem 0;
}
#lfm_empty {
padding-bottom: 0.8em;
}
.messages-card {
overflow: visible;
}
.badge.indicator_before {
margin-right: 0.3em;
width: 0.8em;
height: 0.8em;
margin-bottom: 0.3em;
/*-webkit-transform: translate(-50%, -100%);
transform: translate(-50%, -100%);*/
}
.file-manager-row-view .file-item-changed {
width: auto;
}
.default-style .file-manager-row-view .file-item-name {
width: auto;
}
.file-item-actions.btn-group .btn-default {
border-right: 1px solid rgba(24, 28, 33, 0.3);
border-left: 1px solid rgba(24, 28, 33, 0.3);
}
.file-item-checkbox .custom-control-label::before{
border:1px solid rgba(24, 28, 33, 0.3);
}
.file-item {
border: 1px solid rgba(0, 0, 0, 0.1);
}
.file-item:hover {
border: 1px solid #f2bf24;
background-color: rgba(242, 191, 36, 0.1);
}
.modal-xl .modal-long {
padding: 0.5rem;
}
</style>
@if(!$modal)
<h4 class="font-weight-bold mb-4">
Medien
</h4>
@endif
<div id="alerts"></div>
<div class="card messages-card">
<div class="row no-gutters">
<!-- content list -->
<div class="col">
<div class="file-manager-actions container-p-x py-2">
<div>
<button id="lfm_upload" type="button" class="btn btn-primary mr-2"><i class="fas fa-upload"></i>&nbsp; Hochladen</button>
<button id="lfm_add-file" type="button" class="btn btn-default mr-2"><i class="fas fa-file"></i> Neue Datei</button>
<button id="lfm_add-folder" type="button" class="btn btn-secondary mr-2"><i class="fas fa-folder"></i> Neuer Ordner</button>
<div class="btn-group mr-2 d-none media-multi-settings">
<button type="button" class="btn btn-default md-btn-flat dropdown-toggle px-2" data-toggle="dropdown"><i class="ion ion-ios-settings"></i> Optionen</button>
<div class="dropdown-menu">
<a class="dropdown-item" href="javascript:void(0)" data-action="selected_items_move"><i class="fa fa-reply-all"></i> verschieben</a>
<a class="dropdown-item" href="javascript:void(0)" data-action="selected_items_remove"><i class="fa fa-trash-alt"></i> löschen</a>
</div>
</div>
</div>
<div>
<div class="btn-group btn-group-toggle" data-toggle="buttons">
<label class="btn btn-default icon-btn md-btn-flat active">
<input type="radio" name="file-manager-view" value="file-manager-col-view" checked> <span class="ion ion-md-apps"></span>
</label>
<label class="btn btn-default icon-btn md-btn-flat">
<input type="radio" name="file-manager-view" value="file-manager-row-view"> <span class="ion ion-md-menu"></span>
</label>
</div>
</div>
</div>
<!-- <a class="navbar-brand d-block d-lg-none" id="current_folder"></a> -->
<div class="container-m-nx container-m-ny bg-lightest mb-2" id="lfm_breadcrumbs">
<ol class="breadcrumb text-big container-p-x py-3 m-0">
<li class="breadcrumb-item">
<a href="javascript:void(0)">home</a>
</li>
<li class="breadcrumb-item">
<a href="javascript:void(0)">projects</a>
</li>
<li class="breadcrumb-item active">site</li>
</ol>
<hr class="m-0">
</div>
<div id="lfm_loading" class="d-none text-center mb-4"><i class="fas fa-spinner fa-spin"></i></div>
<div id="lfm_empty" class="text-center d-none">
<i class="fa fa-folder-open"></i>
{{ trans('laravel-filemanager::lfm.message-empty') }}
</div>
<div id="lfm_item-template" class="file-item d-none">
<div class="file-item-select-bg bg-primary"></div>
<label class="file-item-checkbox custom-control custom-checkbox lfm-click-disable">
<input type="checkbox" class="custom-control-input lfm-control-input lfm-click-disable">
<span class="custom-control-label lfm-click-disable"></span>
</label>
<a href="javascript:void(0)" class="file-item-name">
</a>
<div class="file-item-changed"></div>
<div class="file-item-actions btn-group lfm-click-disable">
<button type="button" class="btn btn-default btn-sm rounded-pill icon-btn md-btn-flat hide-arrow dropdown-toggle lfm-click-disable" data-toggle="dropdown"><i class="ion ion-ios-more lfm-click-disable"></i></button>
<div class="dropdown-menu">
<a class="dropdown-item" href="javascript:void(0)" data-action="item_rename"><i class="fa fa-sync-alt"></i> umbenennen</a>
<a class="dropdown-item" href="javascript:void(0)" data-action="item_move"><i class="fa fa-reply"></i> verschieben</a>
<a class="dropdown-item link-item-download" href="javascript:void(0)" data-action="item_download"><i class="fa fa-download"></i> download</a>
<a class="dropdown-item link-item-crop" href="javascript:void(0)" data-action="item_crop"><i class="fa fa-crop"></i> zuschneiden</a>
<!-- <a class="dropdown-item link-item-resize" href="javascript:void(0)" data-action="item_resize"><i class="fa fa-crop"></i> Größe ändern</a> -->
<a class="dropdown-item link-item-color" href="javascript:void(0)" data-action="item_color"><i class="fa fa-paint-brush"></i> Farbe</a>
<a class="dropdown-item" href="javascript:void(0)" data-action="item_trash"><i class="fa fa-trash"></i> löschen</a>
</div>
</div>
</div>
<div class="file-manager-container file-manager-col-view" id="file-manager-content">
</div>
</div>
</div><!-- / .row -->
</div><!-- / .card -->
<div id="previewTemplate" class="d-none bg-light text-center">
<div class="ui-bordered">
<img src="#" alt="" class="img-fluid media-preview d-none" style="background-color: #fff;">
<div class="file-manager-col-view d-none"></div>
<div class="embed-responsive embed-responsive-16by9 d-none">
<iframe class="embed-responsive-item" src="" allowfullscreen></iframe>
</div>
<div class="p-3">
<h5 class="media-name"> </h5>
<div class="form-group d-none">
<input type="text" class="form-control media-content-title" placeholder="Title">
</div>
<div class="form-group d-none">
<textarea type="text" class="form-control media-content-description" placeholder="Description"></textarea>
</div>
<div class="form-group d-none">
<select class="custom-select media-content-author">
<option value="">kein Autor</option>
{!! HTMLHelper::getAuthorOptions() !!}
</select>
</div>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="ion ion-md-link"></i></span>
</div>
<input type="text" class="form-control media-url" placeholder="Link" readonly>
<div class="input-group-append">
<span class="input-group-text"><a href="#" class="media-download"><i class="fas fa-external-link-alt"></i></a></span>
</div>
</div>
</div>
</div>
</div>

View file

@ -1,265 +1,12 @@
@extends('layouts.layout-2')
@extends('layouts.layout-2')
@section('content')
<style>
@include('iq.content.assets.body')
.nav-pills > .nav-item > .nav-link {
height: 5rem;
display: flex;
align-items: center;
}
.nav-pills > .sub-item > .nav-link {
height: 3rem;
padding-left: 3rem;
}
.nav-pills > li.active > a, .nav-pills > li:hover > a {
background-color: #ddd;
border-radius: 0;
color: #333844;
}
.carousel-image {
height: 50vh;
background-position: center;
background-size: contain;
background-repeat: no-repeat;
margin: 0 auto;
}
.carousel-indicators {
bottom: 0;
}
.carousel-label, .carousel-label:hover {
position: absolute;
bottom: 0;
background: linear-gradient(transparent 10px, rgba(0, 0, 0, .4), rgba(0, 0, 0, .5));
padding: 40px 20px 30px;
width: 100%;
color: white;
word-break: break-word;
text-align: center;
}
.carousel-control-background {
border-radius: 50%;
width: 25px;
height: 25px;
box-shadow: 0 0 10px #666;
background-color: #666;
}
#uploadForm > .dz-default.dz-message {
border: 2px dashed #ccc;
border-radius: 5px;
color: #aaa;
margin: 0;
padding: 3rem 0;
}
#lfm_empty {
padding-bottom: 0.8em;
}
.messages-card {
overflow: visible;
}
.badge.indicator {
margin-left: 0.8em;
width: 0.8em;
height: 0.8em;
}
.file-manager-row-view .file-item-changed {
width: auto;
}
.default-style .file-manager-row-view .file-item-name {
width: auto;
}
</style>
<h4 class="font-weight-bold mb-4">
Medien
</h4>
<div id="alerts"></div>
<div class="card messages-card">
<div class="row no-gutters">
<!-- content list -->
<div class="col">
<div class="file-manager-actions container-p-x py-2">
<div>
<button id="lfm_upload" type="button" class="btn btn-primary mr-2"><i class="fas fa-upload"></i>&nbsp; Hochladen</button>
<button id="lfm_add-file" type="button" class="btn btn-default mr-2"><i class="fas fa-file"></i> Neue Datei</button>
<button id="lfm_add-folder" type="button" class="btn btn-secondary mr-2"><i class="fas fa-folder"></i> Neuer Ordner</button>
<div class="btn-group mr-2 d-none media-multi-settings">
<button type="button" class="btn btn-default md-btn-flat dropdown-toggle px-2" data-toggle="dropdown"><i class="ion ion-ios-settings"></i> Optionen</button>
<div class="dropdown-menu">
<a class="dropdown-item" href="javascript:void(0)" data-action="selected_items_move"><i class="fa fa-reply-all"></i> verschieben</a>
<a class="dropdown-item" href="javascript:void(0)" data-action="selected_items_remove"><i class="fa fa-trash-alt"></i> löschen</a>
</div>
</div>
</div>
<div>
<div class="btn-group btn-group-toggle" data-toggle="buttons">
<label class="btn btn-default icon-btn md-btn-flat active">
<input type="radio" name="file-manager-view" value="file-manager-col-view" checked> <span class="ion ion-md-apps"></span>
</label>
<label class="btn btn-default icon-btn md-btn-flat">
<input type="radio" name="file-manager-view" value="file-manager-row-view"> <span class="ion ion-md-menu"></span>
</label>
</div>
</div>
</div>
<!-- <a class="navbar-brand d-block d-lg-none" id="current_folder"></a> -->
<div class="container-m-nx container-m-ny bg-lightest mb-2" id="lfm_breadcrumbs">
<ol class="breadcrumb text-big container-p-x py-3 m-0">
<li class="breadcrumb-item">
<a href="javascript:void(0)">home</a>
</li>
<li class="breadcrumb-item">
<a href="javascript:void(0)">projects</a>
</li>
<li class="breadcrumb-item active">site</li>
</ol>
<hr class="m-0">
</div>
<div id="lfm_loading" class="d-none text-center mb-4"><i class="fas fa-spinner fa-spin"></i></div>
<div id="lfm_empty" class="text-center d-none">
<i class="fa fa-folder-open"></i>
{{ trans('laravel-filemanager::lfm.message-empty') }}
</div>
<div id="lfm_item-template" class="file-item d-none">
<div class="file-item-select-bg bg-primary"></div>
<label class="file-item-checkbox custom-control custom-checkbox lfm-click-disable">
<input type="checkbox" class="custom-control-input lfm-control-input lfm-click-disable">
<span class="custom-control-label lfm-click-disable"></span>
</label>
<a href="javascript:void(0)" class="file-item-name">
</a>
<div class="file-item-changed"></div>
<div class="file-item-actions btn-group lfm-click-disable">
<button type="button" class="btn btn-default btn-sm rounded-pill icon-btn borderless md-btn-flat hide-arrow dropdown-toggle lfm-click-disable" data-toggle="dropdown"><i class="ion ion-ios-more lfm-click-disable"></i></button>
<div class="dropdown-menu">
<a class="dropdown-item" href="javascript:void(0)" data-action="item_rename"><i class="fa fa-sync-alt"></i> umbenennen</a>
<a class="dropdown-item" href="javascript:void(0)" data-action="item_move"><i class="fa fa-reply"></i> verschieben</a>
<a class="dropdown-item link-item-download" href="javascript:void(0)" data-action="item_download"><i class="fa fa-download"></i> download</a>
<a class="dropdown-item link-item-crop" href="javascript:void(0)" data-action="item_crop"><i class="fa fa-crop"></i> zuschneiden</a>
<!-- <a class="dropdown-item link-item-resize" href="javascript:void(0)" data-action="item_resize"><i class="fa fa-crop"></i> Größe ändern</a> -->
<a class="dropdown-item link-item-color" href="javascript:void(0)" data-action="item_color"><i class="fa fa-paint-brush"></i> Farbe</a>
<a class="dropdown-item" href="javascript:void(0)" data-action="item_trash"><i class="fa fa-trash"></i> löschen</a>
</div>
</div>
</div>
<div class="file-manager-container file-manager-col-view" id="file-manager-content">
</div>
</div>
</div><!-- / .row -->
</div><!-- / .card -->
<div class="modal fade" id="uploadModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel">{{ trans('laravel-filemanager::lfm.title-upload') }}</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aia-hidden="true">&times;</span></button>
</div>
<div class="modal-body">
{!! Form::open([ 'url' => route('iqcontent.lfm.upload'), 'method' => 'post', 'files' => true, 'enctype' => 'multipart/form-data', 'class' => 'dropzone', 'id' => 'uploadForm' ]) !!}
<div class="form-group" id="attachment">
<div class="controls text-center">
<div class="input-group w-100">
<a class="btn btn-primary w-100 text-white" id="upload-button">{{ trans('laravel-filemanager::lfm.message-choose') }}</a>
</div>
</div>
</div>
<input type='hidden' name='working_dir' id='working_dir'>
<input type='hidden' name='type' id='type' value='{{ request("type") }}'>
<div class="fallback">
<input name="file" type="file" multiple>
</div>
{!! Form::close() !!}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary w-100" data-dismiss="modal">{{ trans('laravel-filemanager::lfm.btn-close') }}</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="notify" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title"></h4>
</div>
<div class="modal-body"></div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary w-100" data-dismiss="modal">{{ trans('laravel-filemanager::lfm.btn-close') }}</button>
<button type="button" class="btn btn-primary w-100" data-dismiss="modal">{{ trans('laravel-filemanager::lfm.btn-confirm') }}</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="dialog" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title"></h4>
</div>
<div class="modal-body">
<input type="text" class="form-control">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary w-100" data-dismiss="modal">{{ trans('laravel-filemanager::lfm.btn-close') }}</button>
<button type="button" class="btn btn-primary w-100" data-dismiss="modal">{{ trans('laravel-filemanager::lfm.btn-confirm') }}</button>
</div>
</div>
</div>
</div>
<div id="previewTemplate" class="d-none bg-light text-center">
<div class="ui-bordered">
<img src="#" alt="" class="img-fluid media-preview d-none" style="background-color: #fff;">
<div class="file-manager-col-view d-none"></div>
<div class="embed-responsive embed-responsive-16by9 d-none">
<iframe class="embed-responsive-item" src="" allowfullscreen></iframe>
</div>
<div class="p-3">
<h5 class="media-name"> </h5>
<div class="form-group d-none">
<input type="text" class="form-control media-content-title" placeholder="Title">
</div>
<div class="form-group d-none">
<textarea type="text" class="form-control media-content-description" placeholder="Description"></textarea>
</div>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="ion ion-md-link"></i></span>
</div>
<input type="text" class="form-control media-url" placeholder="Link" readonly>
<div class="input-group-append">
<span class="input-group-text"><a href="#" class="media-download"><i class="fas fa-external-link-alt"></i></a></span>
</div>
</div>
</div>
</div>
</div>
<script>
var lang = {!! json_encode(trans('laravel-filemanager::lfm')) !!};
</script>
@endsection

View file

@ -0,0 +1,86 @@
<div class="modal fade" id="modals-load-content">
<div class="modal-dialog modal-lg">
</div>
</div>
@if(isset($lfm_helper))
<div class="modal fade" id="modal_iq_assets" tabindex="-1" role="dialog">
<div class="modal-xl modal-dialog ">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Medien</h4><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
</div>
<div class="modal-body modal-long">
</div>
<div class="modal-footer">
<button type="button" id="modal_iq_close" class="btn btn-default" data-dismiss="modal">schließen</button>
<button type="button" id="modal_iq_save" class="btn btn-primary">Einfügen</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="uploadModal" tabindex="-1" role="dialog" aria-labelledby="myUploadModal" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myUploadModal">{{ trans('laravel-filemanager::lfm.title-upload') }}</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aia-hidden="true">&times;</span></button>
</div>
<div class="modal-body">
{!! Form::open([ 'url' => route('iqcontent.lfm.upload'), 'method' => 'post', 'files' => true, 'enctype' => 'multipart/form-data', 'class' => 'dropzone', 'id' => 'uploadForm' ]) !!}
<div class="form-group" id="attachment">
<div class="controls text-center">
<div class="input-group w-100">
<a class="btn btn-primary w-100 text-white" id="upload-button">{{ trans('laravel-filemanager::lfm.message-choose') }}</a>
</div>
</div>
</div>
<input type='hidden' name='working_dir' id='working_dir'>
<input type='hidden' name='type' id='type' value='{{ request("type") }}'>
<div class="fallback">
<input name="file" type="file" multiple>
</div>
{!! Form::close() !!}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default btn-sm" id="uploadClearButton"><i class="fa fa-sync"></i></button>
<button type="button" class="btn btn-secondary w-100" data-dismiss="modal">{{ trans('laravel-filemanager::lfm.btn-close') }}</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="notify" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title"></h4>
</div>
<div class="modal-body"></div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary w-100" data-dismiss="modal">{{ trans('laravel-filemanager::lfm.btn-close') }}</button>
<button type="button" class="btn btn-primary w-100" data-dismiss="modal">{{ trans('laravel-filemanager::lfm.btn-confirm') }}</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="dialog" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title"></h4>
</div>
<div class="modal-body">
<input type="text" class="form-control">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary w-100" data-dismiss="modal">{{ trans('laravel-filemanager::lfm.btn-close') }}</button>
<button type="button" class="btn btn-primary w-100" data-dismiss="modal">{{ trans('laravel-filemanager::lfm.btn-confirm') }}</button>
</div>
</div>
</div>
</div>
@endif

View file

@ -31,8 +31,8 @@
<link rel="stylesheet" href="{{ mix('/vendor/libs/growl/growl.css') }}">
@if(isset($helper))
<link rel="stylesheet" href="{{ asset('/vendor/laravel-filemanager/css/dropzone.min.css') }}">
@if(isset($lfm_helper))
<link rel="stylesheet" href="{{ asset('/vendor/laravel-filemanager/css/dropzone.min.css') }}">
@else
<link rel="stylesheet" href="{{ asset('/vendor/libs/dropzone/dropzone.css') }}">
@endif
@ -49,7 +49,7 @@
-->
<link rel="stylesheet" href="{{ mix('/vendor/libs/dragula/dragula.css') }}">
<link rel="stylesheet" href="{{ mix('/vendor/libs/minicolors/minicolors.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/summernote/dist/summernote-bs4.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/summernote/dist/summernote-bs4.css?v=0.8.16') }}">
<link rel="stylesheet" href="{{ asset('/vendor/libs/nestable/nestable.css') }}">
<link rel="stylesheet" href="{{ asset('/vendor/css/pages/messages.css') }}">
@ -68,6 +68,7 @@
@yield('styles')
<!-- Application stylesheets -->
<link rel="stylesheet" href="{{ mix('/css/application.css') }}{{ get_file_last_time('js/application.css') }}">
<script src="{{ asset('/js/jquery.min.js') }}"></script>
@ -103,11 +104,8 @@
@yield('layout-content')
<div class="modal fade" id="modals-load-content">
<div class="modal-dialog modal-lg">
</div>
</div>
@include('iq.content.assets.modals')
<!-- Core scripts -->
<script src="{{ mix('/vendor/libs/popper/popper.js') }}"></script>
@ -116,7 +114,7 @@
<script src="{{ mix('/vendor/libs/growl/growl.js') }}"></script>
<script src="{{ asset('/vendor/libs/js-cookie/src/js.cookie.js') }}"></script>
@if(isset($helper))
@if(isset($lfm_helper))
<script src="{{ asset('/vendor/laravel-filemanager/js/dropzone.min.js') }}"></script>
@else
<script src="{{asset('/vendor/libs/dropzone/dropzone.js')}}"></script>
@ -137,11 +135,16 @@
<script src="{{ mix('/vendor/libs/dragula/dragula.js') }}"></script>
<script src="{{asset('/vendor/libs/nestable/my-nestable.js')}}"></script>
<script src="{{ mix('/vendor/libs/minicolors/minicolors.js') }}"></script>
<script src="{{ asset('/vendor/libs/summernote/dist/summernote-bs4.js') }}"></script>
<script src="{{ asset('/vendor/libs/summernote/dist/summernote-bs4.js?v=0.8.16') }}"></script>
<script src="{{ asset('/vendor/libs/summernote/dist/lang/summernote-de-DE.js?v=0.8.16') }}"></script>
<script src="{{ asset('/vendor/laravel-filemanager/js/cropper.min.js') }}"></script>
<script src="{{ asset('/js/pages_file-manager.js') }}"></script>
<script src="{{ asset('/js/filemanager.js?v1') }}"></script>
<script src="{{ asset('/js/summernote-iq-content-extension.js?v=2') }}"></script>
<script src="{{ asset('/js/summernote-image-title.js?v=2') }}"></script>
@if(isset($lfm_helper))
<script src="{{ asset('/vendor/laravel-filemanager/js/cropper.min.js') }}"></script>
<script src="{{ asset('/js/filemanager.js?v3') }}"></script>
@endif
<!-- Libs -->
<!-- `perfect-scrollbar` library required by SideNav plugin -->
@ -151,34 +154,12 @@
<!-- Application javascripts -->
<script src="{{ mix('/js/application.js') }}"></script>
<script src="{{ asset('/js/custom.js?v') }}{{ get_file_last_time('js/custom.js') }}"></script>
<script>
@if(isset($helper))
<script src="{{ asset('/js/custom.js?v1') }}{{ get_file_last_time('/js/custom.js') }}"></script>
Dropzone.options.uploadForm = {
paramName: "upload[]", // The name that will be used to transfer the file
uploadMultiple: false,
parallelUploads: 10,
clickable: '#upload-button',
//dictDefaultMessage: lang['message-drop'],
init: function() {
var _this = this; // For the closure
this.on('success', function(file, response) {
console.log(response);
if (response == 'OK') {
loadItems();
} else {
this.defaultOptions.error(file, response); //response.join('\n')
}
});
},
headers: {
'Authorization': 'Bearer ' + getUrlParam('token')
},
// acceptedFiles: "{{ implode(',', $helper->availableMimeTypes()) }}",
maxFilesize: ({{ $helper->maxUploadSize() }} / 1000),
};
@endif
@include('asset.js')
<script>
// Dragula
$(function() {
// Drag handle
@ -189,21 +170,98 @@
});
});
Dropzone.autoDiscover = false;
@if(isset($lfm_helper))
$("#uploadForm").dropzone({
paramName: "upload[]", // The name that will be used to transfer the file
uploadMultiple: false,
parallelUploads: 10,
clickable: '#upload-button',
//dictDefaultMessage: LFileManager.lfm_config['lfm_lang']['message-drop'],
init: function () {
var _this = this; // For the closure
this.on('success', function (file, response) {
//console.log(response);
if (response === 'OK') {
LFileManager.loadItems();
} else {
_this.defaultOptions.error(file, response); //response.join('\n')
}
});
},
headers: {
'Authorization': 'Bearer ' + LFileManager.getUrlParam('token')
},
// acceptedFiles: LFileManager.lfm_config['lfm_availableMimeTypes'] ,
maxFilesize: (LFileManager.lfm_config['lfm_maxUploadSize'] / 1000),
});
@endif
/*Dropzone.options.uploadForm = {
paramName: "upload[]", // The name that will be used to transfer the file
uploadMultiple: false,
parallelUploads: 10,
clickable: '#upload-button',
//dictDefaultMessage: LFileManager.lfm_config['lfm_lang']['message-drop'],
init: function() {
console.log("Dinit")
var _this = this; // For the closure
this.on('success', function(file, response) {
console.log(response);
if (response === 'OK') {
LFileManager.loadItems();
} else {
_this.defaultOptions.error(file, response); //response.join('\n')
}
});
},
headers: {
'Authorization': 'Bearer ' + LFileManager.getUrlParam('token')
},
// acceptedFiles: LFileManager.lfm_config['lfm_availableMimeTypes'] ,
maxFilesize: (LFileManager.lfm_config['lfm_maxUploadSize'] / 1000),
};*/
$(document).ready(function() {
$('.summernote').summernote({
height: 300,
tabsize: 2,
followingToolbar: true,
imageTitle: {
specificAltField: true,
},
lang: 'de-DE',
toolbar: [
['style', ['style']],
['font', ['bold', 'italic', 'underline', 'clear']],
['color', ['color']],
['para', ['ul', 'ol', 'paragraph']],
['extensions', ['gallery']],
['insert', ['link', 'picture', 'video', 'hr']],
['view', ['fullscreen', 'codeview']],
['help', ['help']]
],
popover: {
image: [
['image', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']],
['float', ['floatLeft', 'floatRight', 'floatNone']],
['remove', ['removeMedia']],
['custom', ['imageTitle']],
],
},
callbacks :{
onInit: function() {
// $(this).data('image_dialog_images_html', '<div class="row"..');
$(this).data('image_dialog_images_url', "/iq/content/assets/modal");
$(this).data('image_dialog_title', "Medien");
$(this).data('image_dialog_close_btn_text', "schließen");
$(this).data('image_dialog_ok_btn_text', "Einfügen");
}
},
/*
callbacks: {
onPaste: function (e) {
@ -214,33 +272,51 @@
}
*/
});
});
$(document).ready(function() {
$('.summernote-small').summernote({
height: 150,
tabsize: 2,
followingToolbar: true,
imageTitle: {
specificAltField: true,
},
toolbar: [
['style', ['style']],
['font', ['bold', 'italic', 'underline', 'clear']],
['color', ['color']],
['para', ['ul', 'ol', 'paragraph']],
['extensions', ['gallery']],
['insert', ['link', 'picture', 'video', 'hr']],
['view', ['fullscreen', 'codeview']],
['help', ['help']]
],
popover: {
image: [
['imagesize', ['imageSize100', 'imageSize50', 'imageSize25']],
['float', ['floatLeft', 'floatRight', 'floatNone']],
['remove', ['removeMedia']],
['custom', ['imageTitle']],
],
},
callbacks :{
onInit: function() {
// $(this).data('image_dialog_images_html', '<div class="row"..');
$(this).data('image_dialog_images_url', "/iq/content/assets/modal");
$(this).data('image_dialog_title', "Medien");
$(this).data('image_dialog_close_btn_text', "Fermer");
$(this).data('image_dialog_ok_btn_text', "Ajouter");
}
},
});
//save in the codeview
$('.note-codable').on('blur', function() {
var codeviewHtml = $(this).val();
var $summernoteTextarea = $(this).closest('.note-editor').siblings('textarea');
$summernoteTextarea.val(codeviewHtml);
});
});
jQuery.each(jQuery('textarea.autoExpand'), function() {
var offset = this.offsetHeight - this.clientHeight;
var resizeTextarea = function(el) {
jQuery(el).css('height', 'auto').css('height', el.scrollHeight + offset);
};
jQuery(this).on('keyup input', function() { resizeTextarea(this); }).removeClass('autoExpand');
resizeTextarea(this);
});
</script>

View file

@ -164,16 +164,26 @@
<div>Inhalte</div>
</a>
<ul class="sidenav-menu">
@if(Auth::user()->isPermission('cms-cn-in'))
<li class="sidenav-item{{ Request::is('cms/content/infos') ? ' active' : '' }}">
<a href="{{ route('cms_content_infos') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-business"></i><div>Infos</div></a>
</li>
@endif
@if(Auth::user()->isPermission('cms-cn-co'))
<li class="sidenav-item{{ Request::is('cms/content/country') ? ' active' : '' }} {{ Request::is('cms/content/country/*') ? ' active' : '' }}">
<a href="{{ route('cms_content_country') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-globe"></i><div>Reiseländer</div></a>
</li>
@endif
@if(Auth::user()->isPermission('cms-cn-al'))
<li class="sidenav-item{{ Request::is('cms/content/all') ? ' active' : '' }}">
<a href="{{ route('cms_content_all') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-paper"></i><div>Allgemein</div></a>
</li>
@endif
@if(Auth::user()->isPermission('cms-cn-au'))
<li class="sidenav-item{{ Request::is('cms/content/author') ? ' active' : '' }}">
<a href="{{ route('cms_content_author') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-finger-print"></i><div>Autoren</div></a>
</li>
@endif
</ul>
</li>
@ -208,6 +218,11 @@
<a href="{{ route('admin_settings_travel_nationality') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-people"></i><div>{{ __('Nationalitäten') }}</div></a>
</li>
@endif
@if(Auth::user()->isPermission('sua-st-ke'))
<li class="sidenav-item{{ Request::is('admin/settings/keyword') ? ' active' : '' }}">
<a href="{{ route('admin_settings_keyword') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-key"></i><div>{{ __('Keywords') }}</div></a>
</li>
@endif
</ul>
</li>
@endif

View file

@ -118,6 +118,7 @@
<th>{{__('BookingID')}}</th>
<th>{{__('Reiseland')}}</th>
<th>{{__('Programm')}}</th>
{{--<th>{{__('Kategorie')}}</th>--}}
<th>{{__('Anreise')}}</th>
<th>{{__('Abreise')}}</th>
<th>{{__('Reiseunterlage')}}</th>

View file

@ -0,0 +1,92 @@
@extends('layouts.layout-2')
@section('content')
<h4 class="font-weight-bold py-3 mb-1">
Keywords
</h4>
<div class="card">
<div class="card-datatable table-responsive">
<table class="datatables-default table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th>{{__('Name')}}</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach($keywords as $value)
<tr>
<td>
<button type="button" class="btn icon-btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-default"
data-id="{{ $value->id }}"
data-name="{{ $value->name }}">
<span class="fa fa-edit"></span>
</button>
</td>
<td data-sort="{{ $value->id }}">{{ $value->name }}</td>
<td><a class="text-danger" href="{{ route('admin_settings_keyword_delete', [$value->id]) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a></td>
</tr>
@endforeach
</tbody>
</table>
<div class="mt-4 col">
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#modals-default"
data-id="new"
data-name=""
>Neues Keyword anlegen</button>
</div>
</div>
</div>
<!-- Modal template -->
<div class="modal fade" id="modals-default">
<div class="modal-dialog">
<form class="modal-content" action="{{ route('admin_settings_keyword_update') }}" method="post">
@csrf
<input type="hidden" class="form-control" name="id">
<div class="modal-header">
<h5 class="modal-title">Keyword <span class="font-weight-light">anlegen/bearbeiten</span></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
</div>
<div class="modal-body">
<div class="form-row">
<div class="form-group col">
<label for="name" class="form-label">Name*</label>
<input type="text" class="form-control" name="name" placeholder="{{__('Description')}}" required>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{__('close')}}</button>
<button type="submit" class="btn btn-primary">{{__('save')}}</button>
</div>
</form>
</div>
</div>
<script>
$( document ).ready(function() {
$('#modals-default').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget);
$(this).find(".modal-content input[name='id']").val(button.data('id'));
$(this).find(".modal-body input[name='name']").val(button.data('name'));
});
$('.datatables-default').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"order": [[ 1, "asc" ]],
"language": {
"url": "/js/German.json"
}
});
});
</script>
@endsection

View file

@ -24,7 +24,6 @@
{!! Form::checkbox('status', 1, $program->status, ['class'=>'custom-control-input']) !!}
<span class="custom-control-label">{{__('aktiv')}}</span>
</label>
<label class="form-label" for="program_title">{{ __('Title') }}*</label>
{{ Form::text('title', $program->title, array('placeholder'=>__('Title'), 'class'=>'form-control', 'id'=>'program_title', 'required'=>true)) }}
</div>
@ -47,6 +46,15 @@
</select>
</div>
</div>
{{--
<div class="form-row">
<div class="form-group col">
<a href="{{route('travel_program_generate_keywords', [$program->id])}}" class="btn btn-xs btn-secondary float-right">generate Keywords</a>
<label for="keywords" class="form-label">{{__('Keywords')}}</label>
{{ Form::text('keywords', $program->keywords, array('placeholder'=>__('Keyword,Keyword'), 'class'=>'form-control', 'id'=>'keywords')) }}
</div>
</div>
--}}
</div>
</div>

View file

@ -27,6 +27,8 @@
<th style="max-width: 60px;">&nbsp;</th>
<th>{{__('Programm')}}</th>
<th>{{__('Code')}}</th>
{{-- <th>{{__('Keywords')}}</th> --}}
<th>{{__('Vorlage')}}</th>
<th>{{__('Status')}}</th>
</tr>
</thead>
@ -42,6 +44,17 @@
<td>
{{ $value->program_code }}
</td>
{{--
<td>
{{ $value->program_code }}
</td>
--}}
<td data-size="{{ $value->hasTravelProgramDrafts() }}">
@if($value->hasTravelProgramDrafts())
<span class="badge badge-pill badge-success"><i class="fa fa-check"></i></span>
@else
<span class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span>
@endif
<td data-sort="{{ $value->status }}">
@if($value->status)
<span class="badge badge-pill badge-success"><i class="fa fa-check"></i></span>