Fewo PDF Hinweise, Generator, Anhang Mail

This commit is contained in:
Kevin Adametz 2020-06-29 12:23:21 +02:00
parent a3bef8d1aa
commit 730832c8e1
31 changed files with 1786 additions and 147 deletions

View file

@ -5,6 +5,9 @@
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" packagePrefix="Tests\" />
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/app" isTestSource="false" packagePrefix="App\" />
<excludeFolder url="file://$MODULE_DIR$/resources/assets" />
<excludeFolder url="file://$MODULE_DIR$/storage/framework" />
<excludeFolder url="file://$MODULE_DIR$/storage/logs" />
<excludeFolder url="file://$MODULE_DIR$/vendor/barryvdh/laravel-debugbar" />
<excludeFolder url="file://$MODULE_DIR$/vendor/barryvdh/laravel-dompdf" />
<excludeFolder url="file://$MODULE_DIR$/vendor/cocur/slugify" />

100
.idea/workspace.xml generated
View file

@ -2,6 +2,9 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="e1ac1cea-a1a5-4c16-b5f0-5908c7d368de" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/app/Http/Controllers/CMS/CMSFeWoController.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Services/CreatePDF.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/fewo.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/database/migrations/2019_08_05_171716_create_i_q_content_folders_table.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/database/migrations/2019_08_05_171717_create_i_q_content_files_table.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/database/migrations/2019_08_05_171718_create_i_q_content_categories_table.php" afterDir="false" />
@ -25,24 +28,24 @@
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/views/colors.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/views/file.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/views/move-item.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/booking/files/2020/05/5ed104041c8f67.23753451_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/booking/files/2020/05/5ed104cd300220.63110550_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/booking_fewo/files/2020/05/5ed1051bafc3b5.82676224_jackodurextrusionsstrang.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/booking_fewo/files/2020/05/5ed1051bee26b3.70425691_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/booking_fewo/files/2020/05/5ed105cc4be3e1.92100968_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/booking_fewo/files/2020/05/5ed10756b16e44.33061945_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/booking_fewo/files/2020/05/5ed1084db170d5.80879705_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/booking_fewo/files/2020/05/5ed108c3096a09.95052646_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/booking_fewo/files/2020/05/5ed108e009c9f5.51348855_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/05/5ed104e5ac4de8.29989312_jackodurextrusionsstrang.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/customer/attachment/2020/05/5ed104e5ee9389.49113198_jdatlastoollogo.png" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/general/2020/05/5ed0f462b82255.53122339_ust111.pdf" afterDir="false" />
<change afterPath="$PROJECT_DIR$/public/js/summernote-cleaner.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/public/wartung.html" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/cms/fewo/all/index.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/cms/fewo/content/detail.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/cms/fewo/content/index.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/pdf/fewo_instructions.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/resources/views/pdf/layout-small.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/storage/app/booking_fewo/files/2020/06/5ef9ab45db7800.71530766_ust111.pdf" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/mein.sterntours.test.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/mein.sterntours.test.iml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Admin/ReportController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Admin/ReportController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/ModalController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/ModalController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/Booking.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/Booking.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Repositories/CustomerFewoMailRepository.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Repositories/CustomerFewoMailRepository.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Repositories/CustomerMailRepository.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Repositories/CustomerMailRepository.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/CustomerFileController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/CustomerFileController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/DraftController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/DraftController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/TravelUserBookingFewoController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/TravelUserBookingFewoController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/CMSContent.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/CMSContent.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Models/FewoLodging.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Models/FewoLodging.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Services/BookingFewo.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Services/BookingFewo.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/config/permissions.php" beforeDir="false" afterPath="$PROJECT_DIR$/config/permissions.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/database/migrations/2019_03_20_132556_create_fewo_lodging_table.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/migrations/2019_03_20_132556_create_fewo_lodging_table.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/composer.json" beforeDir="false" afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/composer.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/public/css/cropper.min.css" beforeDir="false" afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/public/css/cropper.min.css" afterDir="false" />
<change beforePath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/public/js/cropper.min.js" beforeDir="false" afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/public/js/cropper.min.js" afterDir="false" />
@ -90,12 +93,14 @@
<change beforePath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/views/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/views/index.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/views/move.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/views/move.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/views/resize.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/packages/iqcontent/laravel-filemanager/src/views/resize.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/admin/modal/upload.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/admin/modal/upload.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/admin/report/bookings.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/admin/report/bookings.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/admin/report/service_providers.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/admin/report/service_providers.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/booking/_detail_price.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/booking/_detail_price.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/booking/upload_modal.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/booking/upload_modal.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/travel/user/booking/upload_modal.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/travel/user/booking/upload_modal.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/drafts/detail.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/drafts/detail.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/layouts/application.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/layouts/application.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/layouts/includes/layout-sidenav.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/layouts/includes/layout-sidenav.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/pdf/layout.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/pdf/layout.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/travel/user/booking/_detail_files.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/travel/user/booking/_detail_files.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/travel/user/booking/_detail_info.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/travel/user/booking/_detail_info.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/travel/user/booking/mail/modal-new-booking-files.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/travel/user/booking/mail/modal-new-booking-files.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/routes/web.php" beforeDir="false" afterPath="$PROJECT_DIR$/routes/web.php" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -317,12 +322,19 @@
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="database.console.LAST_STATE" value="false" />
<property name="js.buildTools.grunt.grunt-cli.package" value="" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/resources/views/admin/modal" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/resources/views/pdf" />
<property name="nodejs_package_manager_path" value="npm" />
<property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
<property name="settings.editor.selected.configurable" value="web-ide.project.structure" />
<property name="ts.external.directory.path" value="$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external" />
</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/resources/views/pdf" />
<recent name="$PROJECT_DIR$/app/Services" />
<recent name="$PROJECT_DIR$/resources/views/cms/fewo/content" />
<recent name="$PROJECT_DIR$/resources/views/cms/fewo/all" />
<recent name="$PROJECT_DIR$/app/Http/Controllers/CMS" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/resources/views/settings" />
<recent name="$PROJECT_DIR$/resources/views/customer/mail" />
@ -330,13 +342,6 @@
<recent name="$PROJECT_DIR$/database/migrations" />
<recent name="$PROJECT_DIR$/app/Models/Sym" />
</key>
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/resources/views/admin/modal" />
<recent name="$PROJECT_DIR$/database/migrations" />
<recent name="$PROJECT_DIR$/app/Repositories" />
<recent name="$PROJECT_DIR$/app/Http/Controllers" />
<recent name="$PROJECT_DIR$/resources/views/travel/user/booking" />
</key>
</component>
<component name="RunAnythingCache">
<option name="myCommands">
@ -746,6 +751,12 @@
<workItem from="1591600294848" duration="3464000" />
<workItem from="1591604539185" duration="2568000" />
<workItem from="1591864148704" duration="3228000" />
<workItem from="1592911729860" duration="495000" />
<workItem from="1592916723223" duration="8858000" />
<workItem from="1593006138437" duration="7288000" />
<workItem from="1593084225915" duration="9683000" />
<workItem from="1593417309317" duration="4000" />
<workItem from="1593417320619" duration="6174000" />
</task>
<servers />
</component>
@ -781,6 +792,10 @@
<state x="873" y="395" key="#Notifications/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1586283483077" />
<state x="873" y="395" key="#Notifications/2560.-493.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1585998077451" />
<state x="873" y="395" key="#Notifications/2560.-527.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1587029730203" />
<state x="962" y="536" key="#com.intellij.fileTypes.FileTypeChooser" timestamp="1593421255813">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="962" y="536" key="#com.intellij.fileTypes.FileTypeChooser/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1593421255813" />
<state x="968" y="466" key="#com.intellij.openapi.updateSettings.impl.PluginUpdateInfoDialog" timestamp="1585396813007">
<screen x="0" y="23" width="2560" height="1417" />
</state>
@ -790,10 +805,10 @@
</state>
<state x="723" y="23" key="#com.intellij.refactoring.rename.AutomaticRenamingDialog/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1586342353394" />
<state x="723" y="23" key="#com.intellij.refactoring.rename.AutomaticRenamingDialog/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1590658970755" />
<state x="1018" y="488" key="#com.jetbrains.php.actions.copyPaste.importReferences.PhpImportReferencesDialog" timestamp="1590660061034">
<state x="1018" y="488" key="#com.jetbrains.php.actions.copyPaste.importReferences.PhpImportReferencesDialog" timestamp="1593421562418">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="1018" y="488" key="#com.jetbrains.php.actions.copyPaste.importReferences.PhpImportReferencesDialog/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1590660061034" />
<state x="1018" y="488" key="#com.jetbrains.php.actions.copyPaste.importReferences.PhpImportReferencesDialog/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1593421562418" />
<state x="1018" y="488" key="#com.jetbrains.php.actions.copyPaste.importReferences.PhpImportReferencesDialog/2560.-527.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1587048507717" />
<state width="2518" height="407" key="GridCell.Tab.0.bottom" timestamp="1587976409045">
<screen x="0" y="23" width="2560" height="1417" />
@ -811,31 +826,32 @@
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state width="2518" height="407" key="GridCell.Tab.0.right/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1587976409044" />
<state x="815" y="370" key="SettingsEditor" timestamp="1591607084280">
<state x="815" y="370" key="SettingsEditor" timestamp="1593084487522">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="815" y="370" key="SettingsEditor/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1591607084280" />
<state x="815" y="370" key="SettingsEditor/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1593084487522" />
<state x="756" y="429" key="SettingsEditor/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@2560.-527.1440.2537" timestamp="1592914034552" />
<state x="815" y="370" key="SettingsEditor/2560.-493.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1585999076795" />
<state x="815" y="370" key="SettingsEditor/2560.-527.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1587029998517" />
<state x="1063" y="650" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2" timestamp="1587128795225">
<state x="1063" y="650" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2" timestamp="1593090629992">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="1063" y="650" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1585232936868" />
<state x="1063" y="650" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1593090629992" />
<state x="1063" y="650" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2/2560.-527.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1587128795225" />
<state x="675" y="397" width="1487" height="939" key="find.popup" timestamp="1591602501931">
<state x="675" y="397" width="1487" height="939" key="find.popup" timestamp="1593421444006">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="870" y="380" width="1487" height="939" key="find.popup/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1586367147094" />
<state x="-1885" y="398" width="1487" height="939" key="find.popup/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@-2560.23.2560.1417" timestamp="1588269655118" />
<state x="675" y="397" width="1487" height="939" key="find.popup/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1591602501931" />
<state x="675" y="397" width="1487" height="939" key="find.popup/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1593421444006" />
<state x="2940" y="143" width="837" height="1682" key="find.popup/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@2560.-527.1440.2537" timestamp="1589874198139" />
<state x="870" y="380" width="1487" height="939" key="find.popup/2560.-493.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1586172282780" />
<state x="870" y="380" width="1487" height="939" key="find.popup/2560.-527.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1587130944842" />
<state x="946" y="348" width="670" height="676" key="search.everywhere.popup" timestamp="1589202350952">
<state x="946" y="348" width="670" height="676" key="search.everywhere.popup" timestamp="1593417679041">
<screen x="0" y="23" width="2560" height="1417" />
</state>
<state x="946" y="348" width="670" height="676" key="search.everywhere.popup/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1586370499861" />
<state x="946" y="348" width="670" height="676" key="search.everywhere.popup/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1589202350952" />
<state x="946" y="348" width="670" height="676" key="search.everywhere.popup/-2560.23.2560.1417/2560.-527.1440.2537/0.23.2560.1417@0.23.2560.1417" timestamp="1593417679041" />
<state x="946" y="348" width="670" height="676" key="search.everywhere.popup/2560.-493.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1585834441242" />
<state x="946" y="348" width="670" height="676" key="search.everywhere.popup/2560.-527.1440.2537/-2560.23.2560.1417/0.23.2560.1417@0.23.2560.1417" timestamp="1587036951215" />
</component>

View file

@ -0,0 +1,164 @@
<?php
namespace App\Http\Controllers\CMS;
use App\Http\Controllers\Controller;
use App\Models\CMSContent;
use App\Models\FewoLodging;
use App\Services\BookingFewo;
use App\Services\CreatePDF;
use App\Services\Util;
use Request;
class CMSFeWoController extends Controller
{
protected $identifier_content;
protected $identifier_fewo;
public function __construct()
{
$this->identifier_content = config('fewo.identifier_content');
$this->identifier_fewo = config('fewo.identifier_fewo');
}
/*
* ALL
*/
public function all($step = false)
{
$data = [
'contents' => CMSContent::where('identifier', '=', $this->identifier_content)->get()->sortBy('pos'),
'identifier_content' => $this->identifier_content,
'step' => $step
];
return view('cms.fewo.all.index', $data);
}
public function storeAll($step = false)
{
$data = Request::all();
/*if($data['action'] === 'saveAll') {
//saveAll on each change
}*/
$i = 1;
if(isset($data['contents'] )) {
foreach ($data['contents'] as $content_id => $item) {
$content = CMSContent::findOrFail($content_id);
$content->setObjectBy('page-break', (isset($item['page-break']) ? true : false));
$content->name = $item['name'];
$content->slug = null;
$content->decimal = isset($item['in_pdf']) ? 1 : 0;
$content->full_text = $item['full_text'];
$content->pos = $i++;
$content->save();
}
}
//last
if($data['action'] === 'addItem'){
$create = [
'name' => 'Abschnitt',
'field' => 'full_text',
'decimal' => 1,
'identifier' => $this->identifier_content,
'pos' => $i,
];
CMSContent::create($create);
//store in cms old Datebase
\App\Models\Sym\CmsContent::create($create);
}
\Session()->flash('alert-save', '1');
return redirect(route('cms_fewo_all', [$step]));
}
public function deleteAll($id){
$content = CMSContent::findOrFail($id);
$content->delete();
$m = \App\Models\Sym\CmsContent::find($id);
$m->delete();
\Session()->flash('alert-success', __('Content gelöscht'));
return back(); //redirect(route('cms_content_all'));
}
/*
* CONTENT
*/
public function content()
{
$data = [
'fewo_lodgings' => FewoLodging::all()
];
return view('cms.fewo.content.index', $data);
}
public function detail($id, $step = false)
{
$fewo = FewoLodging::findOrFail($id);
$identifier_fewo = $this->identifier_fewo.Util::sanitize($fewo->single_name); // //this->identifier_fewo = 'fewo-pdf-';
$data = [
'contents' => CMSContent::where('identifier', '=', $this->identifier_content)->get()->sortBy('pos'),
'fewo' => $fewo,
'identifier_content' => $this->identifier_content,
'identifier_fewo' => $identifier_fewo,
'step' => $step
];
return view('cms.fewo.content.detail', $data);
}
public function store($id, $step = false)
{
$data = Request::all();
$fewo = FewoLodging::findOrFail($id);
$identifier_fewo = $this->identifier_fewo.Util::sanitize($fewo->single_name);
$i = 1;
$last_content_id = null;
if(isset($data['contents'] )) {
foreach ($data['contents'] as $content_id => $item) {
$content = CMSContent::findOrFail($content_id);
if ($item['identifier'] === $this->identifier_content) {
$last_content_id = $content->id;
}
if ($item['identifier'] === $identifier_fewo) {
$content->setObjectBy('page-break', (isset($item['page-break']) ? true : false));
$content->name = $item['name'];
$content->slug = null;
$content->decimal = isset($item['in_pdf']) ? 1 : 0;
$content->full_text = $item['full_text'];
$content->integer = $last_content_id != null ? $last_content_id : $content->integer; //is the main obj
$content->pos = $i++;
$content->save();
}
}
}
if($data['action'] === 'previewPDF'){
$pdf_content = BookingFewo::getFeWoCMSContentForPDF($this->identifier_content, $identifier_fewo);
$pdf_file = new CreatePDF('pdf.fewo_instructions');
return $pdf_file->create($fewo, $pdf_content);
}
if($data['action'] === 'addItem' && isset($data['content_pos_id'])) {
$create = [
'name' => 'Abschnitt',
'field' => 'full_text',
'decimal' => 1,
'integer' => $data['content_pos_id'],
'identifier' => $identifier_fewo,
'pos' => 0,
];
CMSContent::create($create);
//store in cms old Datebase
\App\Models\Sym\CmsContent::create($create);
}
\Session()->flash('alert-save', '1');
return redirect(route('cms_fewo_content_detail', [$id, $step]));
}
}

View file

@ -8,10 +8,14 @@ use App\Models\BookingConfirmation;
use App\Models\BookingStorno;
use App\Models\BookingVoucher;
use App\Models\Coupon;
use App\Models\FewoLodging;
use App\Models\InsuranceCertificate;
use App\Models\TravelInsurance;
use App\Repositories\CustomerFileRepository;
use App\Services\BookingFewo;
use App\Services\CreateCouponPDF;
use App\Services\CreatePDF;
use App\Services\Util;
use Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Facades\URL;
@ -39,7 +43,6 @@ class CustomerFileController extends Controller
public function show($model, $id, $cd = false){
$content_disposition = $cd ? 'attachment' : 'inline';
$file = false;
$filename = "";
switch ($model){
@ -90,6 +93,18 @@ class CustomerFileController extends Controller
}
break;
case 'fewo_instruction_pdf':
$fewo = FewoLodging::findOrFail($id);
$identifier_content = config('fewo.identifier_content');
$identifier_fewo = config('fewo.identifier_fewo');
$identifier_fewo = $identifier_fewo.Util::sanitize($fewo->single_name);
$pdf_name = \App\Services\BookingFewo::getFeWoInstructionPDFName($fewo);
$pdf_content = BookingFewo::getFeWoCMSContentForPDF($identifier_content, $identifier_fewo);
$pdf_file = new CreatePDF('pdf.fewo_instructions');
return $pdf_file->create($fewo, $pdf_content, $pdf_name, $cd);
break;
}

View file

@ -62,7 +62,7 @@ class DraftController extends Controller
$i = 1;
if(isset($data['draft_item'])){
foreach ($data['draft_item'] as $draft_item_id => $draft_item){
if($data['action'] == 'saveAllFromOld'){
if($data['action'] === 'saveAllFromOld'){
$di = $draft->draft_items()->create([]);
}else{
$di = DraftItem::findOrFail($draft_item_id);
@ -82,7 +82,7 @@ class DraftController extends Controller
}
}
if($data['action'] == 'addItem'){
if($data['action'] === 'addItem'){
$draft->draft_items()->create(['pos' => $i]);
}
if(strpos($data['action'], 'up_') !== false) {

View file

@ -21,14 +21,13 @@ use Request;
class TravelUserBookingFewoController extends Controller
{
protected $userBookingFewoRepo;
// protected $identifier_fewo;
public function __construct(TravelUserBookingFewoRepository $userBookingFewoRepo)
{
$this->middleware('admin');
$this->userBookingFewoRepo = $userBookingFewoRepo;
// $this->identifier_fewo = 'fewo-pdf-';
}
public function index($step = false)
@ -59,6 +58,11 @@ class TravelUserBookingFewoController extends Controller
$id = $travel_user_booking_fewo->id;
$replace_info_text['fewo_user_anrede'] = $travel_user_booking_fewo->getUserSalutation();
$replace_info_text['fewo_adresse'] = $travel_user_booking_fewo->getNameAddressLocation(", ");
/* if($travel_user_booking_fewo->fewo_lodging){
$this->identifier_fewo = $this->identifier_fewo.Util::sanitize($travel_user_booking_fewo->fewo_lodging->single_name);
}*/
}
if(!$travel_user_booking_fewo->info_mail_text) {
$travel_user_booking_fewo->info_mail_text = CMSContent::getContentBySlug('pdf-vorlage-anreiseinfo-fewo');
@ -78,10 +82,10 @@ class TravelUserBookingFewoController extends Controller
public function store($id)
{
$data = Request::all();
if($data['action'] == 'saveAll'){
if($data['action'] === 'saveAll'){
return $this->userBookingFewoRepo->update($id, $data);
}
if($data['action'] == 'createInvoice'){
if($data['action'] === 'createInvoice'){
if(!TravelUserBookingFewo::find($id)){
\Session()->flash('alert-error', __('Buchung nicht gefunden.'));
return back()->withRequest(Request::all());
@ -97,7 +101,7 @@ class TravelUserBookingFewoController extends Controller
}
}
if($data['action'] == 'createTravelInfo'){
if($data['action'] === 'createTravelInfo'){
if(!TravelUserBookingFewo::find($id)){
\Session()->flash('alert-error', __('Buchung nicht gefunden.'));
return back()->withRequest(Request::all());
@ -114,7 +118,7 @@ class TravelUserBookingFewoController extends Controller
}
}
if($data['action'] == 'sendMailtoUser') {
if($data['action'] === 'sendMailtoUser') {
$travel_user_booking_fewo = TravelUserBookingFewo::findOrFail($id);
if($travel_user_booking_fewo->travel_user_id && $travel_user_booking_fewo->travel_user->email){
$mail_bbc = config('mail.mail_bbc');
@ -128,7 +132,7 @@ class TravelUserBookingFewoController extends Controller
}
}
if($data['action'] == 'sendInfosMailtoUser') {
if($data['action'] === 'sendInfosMailtoUser') {
$travel_user_booking_fewo = TravelUserBookingFewo::findOrFail($id);
if($travel_user_booking_fewo->travel_user_id && $travel_user_booking_fewo->travel_user->email){
$mail_bbc = config('mail.mail_bbc');
@ -142,7 +146,7 @@ class TravelUserBookingFewoController extends Controller
}
}
if($data['action'] == 'sendMailtoService') {
if($data['action'] === 'sendMailtoService') {
$travel_user_booking_fewo = TravelUserBookingFewo::findOrFail($id);
if($travel_user_booking_fewo){
$mail_bbc = config('mail.mail_bbc');
@ -160,7 +164,7 @@ class TravelUserBookingFewoController extends Controller
}
}
if($data['action'] == 'sendMailtoEmployee') {
if($data['action'] === 'sendMailtoEmployee') {
$travel_user_booking_fewo = TravelUserBookingFewo::findOrFail($id);
if($travel_user_booking_fewo){
$mails = explode(",", Request::get('send_mail_employee_mail'));
@ -220,7 +224,6 @@ class TravelUserBookingFewoController extends Controller
public function getTravelUserBookingFewos()
{
$query = $this->prozessTravelUserBookingFewosSearch();
return \DataTables::eloquent($query)

View file

@ -219,6 +219,15 @@ class CMSContent extends Model
$this->attributes['integer'] = intval($value);
}
public function getObjectBy($key){
return isset($this->object[$key]) ? $this->object[$key] : false;
}
public function setObjectBy($key, $value){
$obj = $this->object;
$obj[$key] = $value;
$this->object = $obj;
}
public static function getContentBySlug($slug){
$CMSContent = CMSContent::whereSlug(trim($slug))->first();
@ -251,4 +260,6 @@ class CMSContent extends Model
public static function getModelBySlug($slug){
return CMSContent::whereSlug(trim($slug))->first();
}
}

View file

@ -84,6 +84,7 @@ class FewoLodging extends Model
'type_id',
'name',
'single_name',
'pdf_name',
'description',
'equipment',
'adress1',

View file

@ -76,4 +76,29 @@ class BookingFewo
}
return [];
}
public static function getFeWoInstructionPDFName($fewo){
return "HINWEISE-FERIENWOHNUNG-".$fewo->pdf_name.".pdf";
}
public static function getFeWoCMSContent($content, $identifier_fewo){
return CMSContent::where('identifier', '=', $identifier_fewo)->where('integer', $content->id)->get()->sortBy('pos');
}
public static function getFeWoCMSContentForPDF($identifier_content, $identifier_fewo){
$pdf_content = [];
$contents = CMSContent::where('identifier', '=', $identifier_content)->get()->sortBy('pos');
foreach ($contents as $content){
if($content->decimal > 0){ //in_pdf
$pdf_content[] = $content;
}
if($fewo_contents = BookingFewo::getFeWoCMSContent($content, $identifier_fewo)){
foreach ($fewo_contents as $fewo_content){
if($fewo_content->decimal > 0){ //in_pdf
$pdf_content[] = $fewo_content;
}
}
}
}
return $pdf_content;
}
}

View file

@ -0,0 +1,60 @@
<?php
namespace App\Services;
use App\Libraries\CouponPDF;
use App\Models\Coupon;
class CreatePDF{
protected $view;
protected $pdf;
public function __construct($view)
{
$this->view = $view;
}
public function create($fewo, $contents, $name='test.pdf', $output='stream'){
header('Content-type: text/html; charset=UTF-8') ;//chrome
//dd($data);
$data = [
'contents' => $contents,
'fewo' => $fewo,
];
$pdf = app('dompdf.wrapper');
$pdf->getDomPDF()->set_option("enable_php", true);
$pdf->loadView($this->view, $data);
$pdf->setPaper('A4', 'portrait');
if($output === 'stream'){
return $pdf->stream($name);
}
if($output === 'download'){
return $pdf->download($name);
}
if($output === 'save'){
/* $dir = $invoice->getInvoiceStorageDir();
if(!Storage::disk('invoices')->exists( $dir )){
Storage::disk('invoices')->makeDirectory($dir); //creates directory
}
$path = Storage::disk('invoices')->getAdapter()->getPathPrefix();
if($preview){
$filename = "preview.pdf";
}else{
$filename = $invoice->invoice_number.".pdf";
}
$pdf->save($path.$dir.$filename);
return $path.$dir.$filename; */
//return $pdf->download($name);
}
}
}
?>

6
config/fewo.php Normal file
View file

@ -0,0 +1,6 @@
<?php
return [
'identifier_content' => 'fewo-pdf-general',
'identifier_fewo' => 'fewo-pdf-'
];

View file

@ -23,6 +23,7 @@ return [
'cms' => ['name' => 'ADMIN CMS' , 'color' => 'secondary'],
'cms-iq-assets' => ['name' => 'ADMIN CMS > Medien' , 'color' => 'secondary'],
'cms-tg' => ['name' => 'ADMIN CMS > Reiseführer' , 'color' => 'secondary'],
'cms-fewo' => ['name' => 'ADMIN CMS > FeWo' , 'color' => 'secondary'],
'cms-fb' => ['name' => 'ADMIN CMS > Feedback' , 'color' => 'secondary'],
'cms-sb' => ['name' => 'ADMIN CMS > Sidebar' , 'color' => 'secondary'],
'cms-cn' => ['name' => 'ADMIN CMS > Inhalte' , 'color' => 'secondary'],

View file

@ -23,6 +23,7 @@ class CreateFewoLodgingTable extends Migration
$table->integer('type_id')->nullable();
$table->string('name', 255);
$table->string('single_name', 255);
$table->string('pdf_name', 255);
$table->longText('description');
$table->longText('equipment');
$table->string('adress1', 255);

178
public/js/summernote-cleaner.js Executable file
View file

@ -0,0 +1,178 @@
/* https://github.com/DiemenDesign/summernote-cleaner */
(function (factory) {
if (typeof define === 'function' && define.amd) {
define(['jquery'], factory);
} else if (typeof module === 'object' && module.exports) {
module.exports = factory(require('jquery'));
} else {
factory(window.jQuery);
}
}
(function ($) {
$.extend(true, $.summernote.lang, {
'en-US': {
cleaner: {
tooltip: 'Cleaner',
not: 'Text has been Cleaned!!!',
limitText: 'Text',
limitHTML: 'HTML'
}
}
});
$.extend($.summernote.options, {
cleaner: {
action: 'both', // both|button|paste 'button' only cleans via toolbar button, 'paste' only clean when pasting content, both does both options.
newline: '<br>', // Summernote's default is to use '<p><br></p>'
notStyle: 'position:absolute;top:0;left:0;right:0',
icon: '<i class="note-icon"><svg xmlns="http://www.w3.org/2000/svg" id="libre-paintbrush" viewBox="0 0 14 14" width="14" height="14"><path d="m 11.821425,1 q 0.46875,0 0.82031,0.311384 0.35157,0.311384 0.35157,0.780134 0,0.421875 -0.30134,1.01116 -2.22322,4.212054 -3.11384,5.035715 -0.64956,0.609375 -1.45982,0.609375 -0.84375,0 -1.44978,-0.61942 -0.60603,-0.61942 -0.60603,-1.469866 0,-0.857143 0.61608,-1.419643 l 4.27232,-3.877232 Q 11.345985,1 11.821425,1 z m -6.08705,6.924107 q 0.26116,0.508928 0.71317,0.870536 0.45201,0.361607 1.00781,0.508928 l 0.007,0.475447 q 0.0268,1.426339 -0.86719,2.32366 Q 5.700895,13 4.261155,13 q -0.82366,0 -1.45982,-0.311384 -0.63616,-0.311384 -1.0212,-0.853795 -0.38505,-0.54241 -0.57924,-1.225446 -0.1942,-0.683036 -0.1942,-1.473214 0.0469,0.03348 0.27455,0.200893 0.22768,0.16741 0.41518,0.29799 0.1875,0.130581 0.39509,0.24442 0.20759,0.113839 0.30804,0.113839 0.27455,0 0.3683,-0.247767 0.16741,-0.441965 0.38505,-0.753349 0.21763,-0.311383 0.4654,-0.508928 0.24776,-0.197545 0.58928,-0.31808 0.34152,-0.120536 0.68974,-0.170759 0.34821,-0.05022 0.83705,-0.07031 z"/></svg></i>',
keepHtml: true, //Remove all Html formats
keepOnlyTags: [], // If keepHtml is true, remove all tags except these
keepClasses: false, //Remove Classes
badTags: ['style', 'script', 'applet', 'embed', 'noframes', 'noscript', 'html'], //Remove full tags with contents
badAttributes: ['style', 'start'], //Remove attributes from remaining tags
limitChars: 0, // 0|# 0 disables option
limitDisplay: 'both', // none|text|html|both
limitStop: false // true/false
}
});
$.extend($.summernote.plugins, {
'cleaner': function (context) {
var self = this,
ui = $.summernote.ui,
$note = context.layoutInfo.note,
$editor = context.layoutInfo.editor,
options = context.options,
lang = options.langInfo;
var cleanText = function (txt, nlO) {
var out = txt;
if (!options.cleaner.keepClasses) {
var sS = /(\n|\r| class=(")?Mso[a-zA-Z]+(")?)/g;
out = txt.replace(sS, ' ');
}
var nL = /(\n)+/g;
out = out.replace(nL, nlO);
if (options.cleaner.keepHtml) {
var cS = new RegExp('<!--(.*?)-->', 'gi');
out = out.replace(cS, '');
var tS = new RegExp('<(/)*(meta|link|\\?xml:|st1:|o:|font)(.*?)>', 'gi');
out = out.replace(tS, '');
var bT = options.cleaner.badTags;
for (var i = 0; i < bT.length; i++) {
tS = new RegExp('<' + bT[i] + '\\b.*>.*</' + bT[i] + '>', 'gi');
out = out.replace(tS, '');
}
var allowedTags = options.cleaner.keepOnlyTags;
if (typeof(allowedTags) == "undefined") allowedTags = [];
if (allowedTags.length > 0) {
allowedTags = (((allowedTags||'') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join('');
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi;
out = out.replace(tags, function($0, $1) {
return allowedTags.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : ''
});
}
var bA = options.cleaner.badAttributes;
for (var ii = 0; ii < bA.length; ii++ ) {
//var aS=new RegExp(' ('+bA[ii]+'="(.*?)")|('+bA[ii]+'=\'(.*?)\')', 'gi');
var aS = new RegExp(' ' + bA[ii] + '=[\'|"](.*?)[\'|"]', 'gi');
out = out.replace(aS, '');
aS = new RegExp(' ' + bA[ii] + '[=0-9a-z]', 'gi');
out = out.replace(aS, '');
}
}
return out;
};
if (options.cleaner.action == 'both' || options.cleaner.action == 'button') {
context.memo('button.cleaner', function () {
var button = ui.button({
contents: options.cleaner.icon,
tooltip: lang.cleaner.tooltip,
container: 'body',
click: function () {
if ($note.summernote('createRange').toString())
$note.summernote('pasteHTML', $note.summernote('createRange').toString());
else
$note.summernote('code', cleanText($note.summernote('code')));
if ($editor.find('.note-status-output').length > 0)
$editor.find('.note-status-output').html('<div class="alert alert-success">' + lang.cleaner.not + '</div>');
}
});
return button.render();
});
}
this.events = {
'summernote.init': function () {
if ($.summernote.interface === 'lite') {
// $("head").append('<style>.note-statusbar .pull-right{float:right!important}.note-status-output .text-muted{color:#777}.note-status-output .text-primary{color:#286090}.note-status-output .text-success{color:#3c763d}.note-status-output .text-info{color:#31708f}.note-status-output .text-warning{color:#8a6d3b}.note-status-output .text-danger{color:#a94442}.alert{margin:-7px 0 0 0;padding:7px 10px;border:1px solid transparent;border-radius:0}.alert .note-icon{margin-right:5px}.alert-success{color:#3c763d!important;background-color: #dff0d8 !important;border-color:#d6e9c6}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}</style>');
}
if (options.cleaner.limitChars != 0 || options.cleaner.limitDisplay != 'none') {
var textLength = $editor.find(".note-editable").text().replace(/(<([^>]+)>)/ig, "").replace(/( )/, " ");
var codeLength = $editor.find('.note-editable').html();
var lengthStatus = '';
if (textLength.length > options.cleaner.limitChars && options.cleaner.limitChars > 0)
lengthStatus += 'text-danger">';
else
lengthStatus += '">';
if (options.cleaner.limitDisplay == 'text' || options.cleaner.limitDisplay == 'both') lengthStatus += lang.cleaner.limitText + ': ' + textLength.length;
if (options.cleaner.limitDisplay == 'both') lengthStatus += ' / ';
if (options.cleaner.limitDisplay == 'html' || options.cleaner.limitDisplay == 'both') lengthStatus += lang.cleaner.limitHTML + ': ' + codeLength.length;
// $editor.find('.note-status-output').html('<small class="pull-right ' + lengthStatus + '&nbsp;</small>');
}
},
'summernote.keydown': function (we, e) {
if (options.cleaner.limitChars != 0 || options.cleaner.limitDisplay != 'none') {
var textLength = $editor.find(".note-editable").text().replace(/(<([^>]+)>)/ig, "").replace(/( )/, " ");
var codeLength = $editor.find('.note-editable').html();
var lengthStatus = '';
if (options.cleaner.limitStop == true && textLength.length >= options.cleaner.limitChars) {
var key = e.keyCode;
allowed_keys = [8, 37, 38, 39, 40, 46]
if ($.inArray(key, allowed_keys) != -1) {
$editor.find('.cleanerLimit').removeClass('text-danger');
return true;
} else {
$editor.find('.cleanerLimit').addClass('text-danger');
e.preventDefault();
e.stopPropagation();
}
} else {
if (textLength.length > options.cleaner.limitChars && options.cleaner.limitChars > 0)
lengthStatus += 'text-danger">';
else
lengthStatus += '">';
if (options.cleaner.limitDisplay == 'text' || options.cleaner.limitDisplay == 'both')
lengthStatus += lang.cleaner.limitText + ': ' + textLength.length;
if (options.cleaner.limitDisplay == 'both')
lengthStatus += ' / ';
if (options.cleaner.limitDisplay == 'html' || options.cleaner.limitDisplay == 'both')
lengthStatus += lang.cleaner.limitHTML + ': ' + codeLength.length;
//$editor.find('.note-status-output').html('<small class="cleanerLimit pull-right ' + lengthStatus + '&nbsp;</small>');
}
}
},
'summernote.paste': function (we, e) {
if (options.cleaner.action == 'both' || options.cleaner.action == 'paste') {
e.preventDefault();
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
msie = msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./);
var ffox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
if (msie)
var text = window.clipboardData.getData("Text");
else
var text = e.originalEvent.clipboardData.getData(options.cleaner.keepHtml ? 'text/html' : 'text/plain');
if (text) {
if (msie || ffox)
setTimeout(function () {
$note.summernote('pasteHTML', cleanText(text, options.cleaner.newline));
}, 1);
else
$note.summernote('pasteHTML', cleanText(text, options.cleaner.newline));
/*if ($editor.find('.note-status-output').length > 0)
$editor.find('.note-status-output').html('<div class="summernote-cleanerAlert alert alert-success">' + lang.cleaner.not + '</div>');*/
}
}
}
}
}
});
}));

314
public/wartung.html Normal file
View file

@ -0,0 +1,314 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Wartungsmodus</title>
<style>
article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary {
display:block
}
audio, canvas, video {
display:inline-block
}
audio:not([controls]) {
display: none;
height:0
}
[hidden] {
display:none
}
html {
font-family: sans-serif;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust:100%
}
body {
margin:0
}
a:focus {
outline:thin dotted
}
a:active, a:hover {
outline:0
}
h1 {
font-size: 2em;
margin:.67em 0
}
abbr[title] {
border-bottom:1px dotted
}
b, strong {
font-weight:700
}
dfn {
font-style:italic
}
hr {
-moz-box-sizing: content-box;
box-sizing: content-box;
height:0
}
mark {
background: #ff0;
color:#000
}
code, kbd, pre, samp {
font:1em monospace, serif
}
pre {
white-space:pre-wrap
}
q {
quotes: "\201C" "\201D" "\2018" "\2019"
}
small {
font-size:80%
}
sub, sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align:baseline
}
sup {
top:-.5em
}
sub {
bottom:-.25em
}
img {
border:0
}
svg:not(:root) {
overflow:hidden
}
figure {
margin:0
}
fieldset {
border: 1px solid silver;
margin: 0 2px;
padding:.35em .625em .75em
}
legend {
border: 0;
padding:0
}
button, input, select, textarea {
font-family: inherit;
font-size: 100%;
margin:0
}
button, input {
line-height:normal
}
button, select {
text-transform: none
}
button, html input[type="button"], input[type="reset"], input[type="submit"] {
-webkit-appearance: button;
cursor:pointer
}
button[disabled], html input[disabled] {
cursor: default
}
input[type="checkbox"], input[type="radio"] {
box-sizing: border-box;
padding: 0
}
input[type="search"] {
-webkit-appearance: textfield;
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box;
box-sizing: content-box
}
input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration {
-webkit-appearance:none
}
button::-moz-focus-inner, input::-moz-focus-inner {
border: 0;
padding:0
}
textarea {
overflow: auto;
vertical-align:top
}
table {
border-collapse: collapse;
border-spacing: 0
}
body, html {
min-height: 100%;
background: #e9ebed;
}
.maintenance-container {
position: relative;
background: #fff;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
margin: 50px auto;
width: 475px;
padding: 30px;
text-align: center;
-webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, .5);
-moz-box-shadow: 0px 1px 3px rgba(0, 0, 0, .5);
-ms-box-shadow: 0px 1px 3px rgba(0, 0, 0, .5);
box-shadow: 0px 1px 3px rgba(0, 0, 0, .5);
}
.maintenance-headline {
font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
font-weight: 300;
margin: 0 0 .8em;
}
.maintenance-text {
font-size: 13px
}
.maintenance-progress {
border-top: 1px solid #529e52;
height: 4px;
width: 100%;
position: absolute;
bottom: 0;
left: 0;
background-color: #5eb95e;
-webkit-background-size: 40px 40px;
-moz-background-size: 40px 40px;
-o-background-size: 40px 40px;
background-size: 40px 40px;
-webkit-animation: progress-bar-stripes 2s linear infinite;
-moz-animation: progress-bar-stripes 2s linear infinite;
-ms-animation: progress-bar-stripes 2s linear infinite;
-o-animation: progress-bar-stripes 2s linear infinite;
animation: progress-bar-stripes 2s linear infinite;
background-color: #62C462;
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, rgba(0, 0, 0, 0)), color-stop(0.5, rgba(0, 0, 0, 0)), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(0, 0, 0, 0)), to(rgba(0, 0, 0, 0)));
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));
background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));
}
hr {
background: transparent url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAHUlEQVR42q3IoREAAACCQHdy/91IFrLcfSGqc5wAdFYCZQo/LFUAAAAASUVORK5CYII=") repeat-x;
border: 0 none;
color: #CCC;
height: 4px;
padding: 0;
margin: 30px 0;
}
@-webkit-keyframes progress-bar-stripes {
from {
background-position: 40px 0;
}
to {
background-position: 0 0;
}
}
@-moz-keyframes progress-bar-stripes {
from {
background-position: 40px 0;
}
to {
background-position: 0 0;
}
}
@-ms-keyframes progress-bar-stripes {
from {
background-position: 40px 0;
}
to {
background-position: 0 0;
}
}
@-o-keyframes progress-bar-stripes {
from {
background-position: 0 0;
}
to {
background-position: 40px 0;
}
}
@keyframes progress-bar-stripes {
from {
background-position: 40px 0;
}
to {
background-position: 0 0;
}
}
</style>
</head>
<body>
<div class="maintenance-container">
<h1 class="maintenance-headline">Unsere Website befindet sich gerade in der Wartung.</h1>
<p class="maintenance-text">
Wir stehen Ihnen bald wieder zur Verfügung. Entschuldigen Sie etwaige Unannehmlichkeiten.
</p>
<hr/>
<h1 class="maintenance-headline">Our website is currently undergoing maintenance.</h1>
<p class="maintenance-text">
We'll be back very soon. Sorry for any inconvenience.
</p>
<div class="maintenance-progress"></div>
</div>
</body>
</html>

View file

@ -0,0 +1,209 @@
@extends('layouts.layout-2')
@section('content')
<style>
/* body {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}*/
.btn-xs {
line-height: 1.3em;
}
.table tbody + tbody {
border-top: 1px solid #9c9c9c;
}
.table th, .table td {
border-top: none;
}
.table tr.border-none td, .table tr.border-none th {
border-top: none;
}
.table .thead-dark th {
color: #4E5155;
background-color: rgba(24, 28, 33, 0.1);
border-color: rgba(63, 69, 74, 0.1);
}
.input-group-text {
padding: 0.438rem 0.475rem;
}
.note-editing-area {
border-radius: 0.25rem;
border: 1px solid rgba(24, 28, 33, 0.1);
padding: 0.438rem 0.875rem;
color: #4E5155;
-webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
}
.note-editor.note-frame .note-editing-area .note-editable, .note-editor.note-airframe .note-editing-area .note-editable {
color: #000;
}
.note-editor.note-frame .note-editing-area:focus-within , .note-editor.note-airframe .note-editing-area:focus-within {
border-color: #648859;
}
.note-editing-area .note-editable li {
margin-bottom:0.5rem;
}
.note-editor.note-airframe .note-placeholder {
padding: 0;
}
.draft_item_tbody .form-control {
color: #000;
}
</style>
<h4 class="font-weight-bold py-3 mb-1">
FeWo Allgemein
</h4>
<div class="nav-tabs-top mb-4">
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link @if(!$step) active show @endif" data-toggle="tab" href="#navs-top-drafts">PDF Vorlage</a>
</li>
{{--
<li class="nav-item">
<a class="nav-link @if($step === 'settings') active show @endif" data-toggle="tab" href="#navs-top-settings">Einstellungen</a>
</li>
--}}
</ul>
<div class="tab-content">
<div class="tab-pane fade @if(!$step) active show @endif" id="navs-top-drafts">
<div class="card">
{!! Form::open(['url' => route('cms_fewo_all', [$step]), 'class' => 'form-horizontal']) !!}
@if(count($contents))
@php($i = 1)
<div class="table-responsive mb-4">
<table class="table mb-0" id="table_dragula_tbody" style="min-width: 1080px">
<thead class="thead-dark">
<tr>
<th style="width: 1em"></th>
<th style="width: 1em">#</th>
<th>Abschnitte</th>
<th style="width: 8em">#</th>
</tr>
</thead>
@foreach($contents as $content)
<tbody class="draft_item_tbody">
<tr>
<td>
<span class="handle ion ion-ios-move d-inline-block bg-primary text-white p-1"></span>
</td>
<td><span class="item_pos_number">{{ $i++ }}</span></td>
<td>
{{ Form::text('contents['.$content->id.'][name]', $content->name, array('placeholder'=>__('Abschnitt*'), 'class'=>'form-control', 'id'=>'contents_'.$content->id.'_name', 'required')) }}
</td>
<td>
<button type="button" name="" value="up_{{$content->id}}" class="btn btn-xs btn-default move-up-btn"><i class="fa fa-arrow-up"></i> </button>
<button type="button" name="" value="down_{{$content->id}}" class="btn btn-xs btn-default mr-2 move-down-btn"><i class="fa fa-arrow-down"></i> </button>
<a class="text-danger" href="{{ route('cms_fewo_all_delete', [$content->id]) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a>
</td>
</tr>
<tr class="border-none">
<td colspan="2" style="vertical-align: bottom">
<button type="submit" name="action" value="saveAll" class="btn btn-secondary btn-sm" title="speichern"><i class="ion ion-ios-save"></i></button>&nbsp;
</td>
<td>
{{ Form::textarea('contents['.$content->id.'][full_text]', $content->getContent(), array('class'=>'form-control autoExpand summernote-air', 'id'=>'contents_'.$content->id.'_name', 'rows'=>'1', 'data-min-rows'=>'1')) }}
</td>
<td>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('contents['.$content->id.'][in_pdf]', 1, ($content->decimal > 0), ['class'=>'custom-control-input']) !!}
<span class="custom-control-label">{{__('in PDF')}}</span>
</label>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('contents['.$content->id.'][page-break]', 1, ($content->getObjectBy('page-break') > 0), ['class'=>'custom-control-input']) !!}
<span class="custom-control-label" style="white-space: nowrap;">{{__('Neue Seite')}}</span>
</label>
</td>
</tr>
</tbody>
@endforeach
<tfoot>
<tr>
<td colspan="4"></td>
</tr>
</tfoot>
</table>
</div>
@endif
<div class="text-left mt-3 m-2">
<button type="submit" name="action" value="saveAll" class="btn btn-submit btn-sm">{{ __('save changes') }}</button>&nbsp;
<div class="float-right">
<button type="submit" name="action" value="addItem" class="btn btn-sm btn-primary"><i class="fa fa-plus"></i> Neuen Abschnitt hinzufügen</button>
</div>
</div>
{!! Form::close() !!}
<script>
$(document).ready(function() {
$.dragYScroll();
var sort_item_pos_number = function(){
var index = 1;
$('#table_dragula_tbody .draft_item_tbody').each(function () {
$(this).find('.item_pos_number').html(index);
$(this).data('rowPosition', index);
index++;
});
};
$(function() {
// Drag handle
var sortableItems = dragula([$('#table_dragula_tbody')[0]], {
moves: function (el, container, handle) {
return handle.classList.contains('handle');
}
});
sortableItems.on('dragend', function() {
//sort new
sort_item_pos_number();
});
});
$('table .move-up-btn').on('click', function () {
var thisRow = $(this).closest('tbody');
var prevRow = thisRow.prev();
if (prevRow.length) {
prevRow.before(thisRow);
sort_item_pos_number()
}
});
$('table .move-down-btn').on('click', function () {
var thisRow = $(this).closest('tbody');
var nextRow = thisRow.next();
if (nextRow.length) {
nextRow.after(thisRow);
sort_item_pos_number()
}
});
});
</script>
</div>
</div>
<div class="tab-pane fade @if($step === 'settings') active show @endif" id="navs-top-settings">
<div class="card">
<h4 class="mt-4 mb-2 ml-4">Einstellungen</h4>
</div>
</div>
</div>
</div>
@endsection

View file

@ -0,0 +1,273 @@
@extends('layouts.layout-2')
@section('content')
<style>
/* body {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}*/
.btn-xs {
line-height: 1.3em;
}
.table tbody + tbody {
border-top: 1px solid #9c9c9c;
}
.table th, .table td {
border-top: none;
}
.table tr.border-none td, .table tr.border-none th {
border-top: none;
}
.table .thead-dark th {
color: #4E5155;
background-color: rgba(24, 28, 33, 0.1);
border-color: rgba(63, 69, 74, 0.1);
}
.input-group-text {
padding: 0.438rem 0.475rem;
}
.note-editing-area {
border-radius: 0.25rem;
border: 1px solid rgba(24, 28, 33, 0.1);
padding: 0.438rem 0.875rem;
color: #4E5155;
-webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
}
.note-editing-area.readonly {
background-color: #f1f1f2;
color: #000;
}
.note-editor.note-frame .note-editing-area .note-editable, .note-editor.note-airframe .note-editing-area .note-editable {
color: #000;
}
.note-editor.note-frame .note-editing-area:focus-within , .note-editor.note-airframe .note-editing-area:focus-within {
border-color: #648859;
}
.note-editing-area li {
margin-bottom:0.5rem;
}
.note-editor.note-airframe .note-placeholder {
padding: 0;
}
.draft_item_tbody .form-control {
color: #000;
}
</style>
<h4 class="font-weight-bold py-3 mb-1">
FeWo Inhalt <span class="text-primary">{{ $fewo->name }}</span>
</h4>
<div class="nav-tabs-top mb-4">
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link @if(!$step) active show @endif" data-toggle="tab" href="#navs-top-drafts">PDF Vorlage</a>
</li>
{{--
<li class="nav-item">
<a class="nav-link @if($step === 'settings') active show @endif" data-toggle="tab" href="#navs-top-settings">Einstellungen</a>
</li>
--}}
</ul>
<div class="tab-content">
<div class="tab-pane fade @if(!$step) active show @endif" id="navs-top-drafts">
<div class="card">
{!! Form::open(['url' => route('cms_fewo_content_detail', [$fewo->id, $step]), 'class' => 'form-horizontal', 'id'=>'fewo-content-detail-form']) !!}
{{ Form::hidden('content_pos_id', '') }}
{{ Form::hidden('action', '') }}
@if(count($contents))
@php($i = 1)
<div class="table-responsive mb-4">
<table class="table mb-0" id="table_dragula_tbody" style="min-width: 1080px">
<thead class="thead-dark">
<tr>
<th style="width: 1em"></th>
<th style="width: 1em">#</th>
<th>Abschnitte</th>
<th style="width: 8em">#</th>
</tr>
</thead>
@foreach($contents as $content)
@if($content->decimal > 0)
<tbody class="draft_item_tbody">
<tr>
<td>
<span class="ion ion-ios-lock d-inline-block bg-dark text-white p-1 px-2"></span>
{{-- <span class="handle ion ion-ios-move d-inline-block bg-primary text-white p-1"></span> --}}
</td>
<td><span class="item_pos_number">{{ $i++ }}</span></td>
<td>
{{ Form::text('contents['.$content->id.'][name]', $content->name, array('placeholder'=>__('Abschnitt*'), 'class'=>'form-control', 'id'=>'contents_'.$content->id.'_name', 'readonly')) }}
{{ Form::hidden('contents['.$content->id.'][identifier]', $identifier_content) }}
</td>
<td>
{{--
<button type="button" name="" value="up_{{$content->id}}" class="btn btn-xs btn-default move-up-btn"><i class="fa fa-arrow-up"></i> </button>
<button type="button" name="" value="down_{{$content->id}}" class="btn btn-xs btn-default mr-2 move-down-btn"><i class="fa fa-arrow-down"></i> </button>
<a class="text-danger" href="{{ route('cms_fewo_all_delete', [$content->id]) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a>
--}}
</td>
</tr>
<tr class="border-none">
<td colspan="2" style="vertical-align: bottom">
<button type="button" name="action" value="addItem" class="btn btn-xs btn-primary btn-add-item" title="Abschnitt hinzufügen" data-pos-id="{{$content->id}}"><i class="fa fa-plus"></i> <i class="fa fa-arrow-down"></i></button>
</td>
<td>
<div class="note-editing-area readonly">
{!! $content->getContent() !!}
</div>
</td>
<td>
{{-- --}}
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('contents['.$content->id.'][in_pdf]', 1, ($content->decimal > 0), ['class'=>'custom-control-input', 'disabled']) !!}
<span class="custom-control-label">{{__('in PDF')}}</span>
</label>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('contents['.$content->id.'][page-break]', 1, ($content->getObjectBy('page-break') > 0), ['class'=>'custom-control-input', 'disabled']) !!}
<span class="custom-control-label" style="white-space: nowrap;">{{__('Neue Seite')}}</span>
</label>
</td>
</tr>
</tbody>
@endif
@if($fewo_contents = \App\Services\BookingFewo::getFeWoCMSContent($content, $identifier_fewo))
@foreach($fewo_contents as $content)
<tbody class="draft_item_tbody">
<tr>
<td>
<span class="handle ion ion-ios-move d-inline-block bg-primary text-white p-1"></span>
</td>
<td><span class="item_pos_number">{{ $i++ }}</span></td>
<td>
{{ Form::text('contents['.$content->id.'][name]', $content->name, array('placeholder'=>__('Abschnitt*'), 'class'=>'form-control', 'id'=>'contents_'.$content->id.'_name', 'required')) }}
{{ Form::hidden('contents['.$content->id.'][identifier]', $identifier_fewo) }}
</td>
<td>
<button type="button" name="" value="up_{{$content->id}}" class="btn btn-xs btn-default move-up-btn"><i class="fa fa-arrow-up"></i> </button>
<button type="button" name="" value="down_{{$content->id}}" class="btn btn-xs btn-default mr-2 move-down-btn"><i class="fa fa-arrow-down"></i> </button>
<a class="text-danger" href="{{ route('cms_fewo_all_delete', [$content->id]) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a>
</td>
</tr>
<tr class="border-none">
<td colspan="2" style="vertical-align: bottom">
<button type="submit" name="action" value="saveAll" class="btn btn-secondary btn-sm" title="speichern"><i class="ion ion-ios-save"></i></button>&nbsp;
</td>
<td>
{{ Form::textarea('contents['.$content->id.'][full_text]', $content->getContent(), array('class'=>'form-control autoExpand summernote-air', 'id'=>'contents_'.$content->id.'_name', 'rows'=>'1', 'data-min-rows'=>'1')) }}
</td>
<td>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('contents['.$content->id.'][in_pdf]', 1, ($content->decimal > 0), ['class'=>'custom-control-input']) !!}
<span class="custom-control-label">{{__('in PDF')}}</span>
</label>
<label class="custom-control custom-checkbox mt-2" style="margin-right: 20px;">
{!! Form::checkbox('contents['.$content->id.'][page-break]', 1, ($content->getObjectBy('page-break') > 0), ['class'=>'custom-control-input']) !!}
<span class="custom-control-label" style="white-space: nowrap;">{{__('Neue Seite')}}</span>
</label>
</td>
</tr>
</tbody>
@endforeach
@endif
@endforeach
<tfoot>
<tr>
<td colspan="4"></td>
</tr>
</tfoot>
</table>
</div>
@endif
<div class="text-left mt-3 m-2">
<button type="submit" name="action" value="saveAll" class="btn btn-submit btn-sm">{{ __('save changes') }}</button>&nbsp;
<div class="float-right">
<button type="submit" name="action" value="previewPDF" class="btn btn-sm btn-info"><i class="fa fa-file-pdf"></i> Vorschau PDF</button>
</div>
</div>
{!! Form::close() !!}
<script>
$(document).ready(function() {
$('.btn-add-item').on('click', function () {
$('input[name=content_pos_id]').val($(this).data('pos-id'));
$('input[name=action]').val('addItem');
$("#fewo-content-detail-form").submit();
});
$.dragYScroll();
var sort_item_pos_number = function(){
var index = 1;
$('#table_dragula_tbody .draft_item_tbody').each(function () {
$(this).find('.item_pos_number').html(index);
$(this).data('rowPosition', index);
index++;
});
};
$(function() {
// Drag handle
var sortableItems = dragula([$('#table_dragula_tbody')[0]], {
moves: function (el, container, handle) {
return handle.classList.contains('handle');
}
});
sortableItems.on('dragend', function() {
//sort new
sort_item_pos_number();
});
});
$('table .move-up-btn').on('click', function () {
var thisRow = $(this).closest('tbody');
var prevRow = thisRow.prev();
if (prevRow.length) {
prevRow.before(thisRow);
sort_item_pos_number()
}
});
$('table .move-down-btn').on('click', function () {
var thisRow = $(this).closest('tbody');
var nextRow = thisRow.next();
if (nextRow.length) {
nextRow.after(thisRow);
sort_item_pos_number()
}
});
});
</script>
</div>
</div>
<div class="tab-pane fade @if($step === 'settings') active show @endif" id="navs-top-settings">
<div class="card">
<h4 class="mt-4 mb-2 ml-4">Einstellungen</h4>
</div>
</div>
</div>
</div>
@endsection

View file

@ -0,0 +1,85 @@
@extends('layouts.layout-2')
@section('content')
<h4 class="font-weight-bold py-3 mb-1">
FeWo Inhalte
</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">
<table class="datatables-feedbacks table table-striped table-bordered">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th>{{__('Name')}}</th>
<th>{{__('Adresse')}}</th>
<th>{{__('Personen')}}</th>
<th>{{__('Erwachsenen')}}</th>
<th>{{__('Kinder')}}</th>
</tr>
</thead>
<tbody>
@foreach($fewo_lodgings as $value)
<tr>
<td data-sort="{{ $value->id }}">
<a href="{{ route('cms_fewo_content_detail', [$value->id]) }}" class="btn icon-btn btn-sm btn-primary">
<span class="fa fa-edit"></span>
</a>
</td>
<td><a href="{{ route('cms_fewo_content_detail', [$value->id]) }}">{{ $value->name }}</a></td>
<td>
{{ $value->adress1 }}, {{ $value->zip_code }} {{ $value->city }}
</td>
<td>
{{ $value->maximum_persons }}
</td>
<td>
{{ $value->maximum_adults }}
</td>
<td>
{{ $value->maximum_childs }}
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
{{--
<div class="ml-3 mb-2">
<a href="{{ route('admin_settings_travel_country_detail', ['new']) }}" class="btn btn-sm btn-primary">Neues Reiseland anlegen</a>
</div>
--}}
<script>
$( document ).ready(function() {
$('.datatables-feedbacks').dataTable({
"bLengthChange": false,
"iDisplayLength": 50,
"language": {
"url": "/js/German.json"
},
});
});
</script>
</div>
@endsection

View file

@ -44,7 +44,6 @@
</span>
</h4>
<!-- Modal -->
<div class="modal fade" id="exampleNotice" tabindex="-1" role="dialog" aria-labelledby="exampleNoticeTitle" aria-hidden="true">
<div class="modal-dialog" role="document">
@ -108,11 +107,6 @@
</div>
</div>
{!! Form::open(['url' => route('draft_detail', [$id]), 'class' => 'form-horizontal', 'id'=>'lead-form-validation']) !!}
<input type="hidden" name="id" id="id" value="{{$id}}">
@ -133,7 +127,6 @@
</div>
</div>
@if(count($draft->draft_items))
@php($i = 1)
<div class="text-left mt-3 mb-2">
@ -160,59 +153,60 @@
@foreach($draft->draft_items as $draft_item)
<tbody class="draft_item_tbody">
<tr @if($draft_item->draft_type) style="background-color: {{ $draft_item->draft_type->color }}" @endif>
<td>
<span class="handle ion ion-ios-move d-inline-block bg-primary text-white p-1"></span>
<tr @if($draft_item->draft_type) style="background-color: {{ $draft_item->draft_type->color }}" @endif>
<td>
<span class="handle ion ion-ios-move d-inline-block bg-primary text-white p-1"></span>
</td>
<td><span class="item_pos_number">{{ $i++ }}</span></td>
<td>
<select class="selectpicker" data-style="btn-light" name="draft_item[{{$draft_item->id}}][draft_type_id]" id="draft_item_{{$draft_item->id }}_draft_type_id" data-live-search="true" required>
<option value="" disabled>Vorlagen-Typ*</option>
{!! HTMLHelper::getDraftTypes($draft_item->draft_type_id) !!}
</select>
</td>
<td>
<select class="selectpicker" data-style="btn-light" name="draft_item[{{$draft_item->id}}][days_start]]" id="draft_item_{{$draft_item->id }}_days_start">
<option value="">(Datum) Start + Tage</option>
{!! HTMLHelper::getRangeOptions($draft_item->days_start, 30, ' Tag(e)') !!}
</select>
</td>
<td>
<select class="selectpicker" data-style="btn-light" name="draft_item[{{$draft_item->id}}][days_duration]" id="draft_item_{{$draft_item->id }}_days_duration">
<option value="">(Datum) Dauer + Tage</option>
{!! HTMLHelper::getRangeOptions($draft_item->days_duration, 30, ' Tag(e)') !!}
</select>
</td>
<td>
<div class="input-group">
<select class="custom-select" data-style="btn-light" name="draft_item[{{$draft_item->id}}][adult]" id="draft_item_{{$draft_item->id }}_adult">
<option value="">0</option>
{!! HTMLHelper::getRangeOptions($draft_item->adult, 10, ' T.') !!}
</td>
<td><span class="item_pos_number">{{ $i++ }}</span></td>
<td>
<select class="selectpicker" data-style="btn-light" name="draft_item[{{$draft_item->id}}][draft_type_id]" id="draft_item_{{$draft_item->id }}_draft_type_id" data-live-search="true" required>
<option value="" disabled>Vorlagen-Typ*</option>
{!! HTMLHelper::getDraftTypes($draft_item->draft_type_id) !!}
</select>
{{ Form::text('draft_item['.$draft_item->id.'][price_adult]', $draft_item->price_adult, array('placeholder'=>__('Preis in €'), 'class'=>'form-control', 'id'=>'draft_item_'.$draft_item->id.'_price_adult',)) }}
<span class="input-group-append">
<span class="input-group-text"></span>
</span>
</div>
</td>
<td>
<div class="input-group">
<select class="custom-select" data-style="btn-light" name="draft_item[{{$draft_item->id}}][children]" id="draft_item_{{$draft_item->id}}_children">
<option value="">Kinder</option>
{!! HTMLHelper::getRangeOptions($draft_item->children, 10, ' K.') !!}
</td>
<td>
<select class="selectpicker" data-style="btn-light" name="draft_item[{{$draft_item->id}}][days_start]]" id="draft_item_{{$draft_item->id }}_days_start">
<option value="">(Datum) Start + Tage</option>
{!! HTMLHelper::getRangeOptions($draft_item->days_start, 30, ' Tag(e)') !!}
</select>
{{ Form::text('draft_item['.$draft_item->id.'][price_children]', $draft_item->price_children, array('placeholder'=>__('Preis in €'), 'class'=>'form-control', 'id'=>'draft_item_'.$draft_item->id.'_price_children')) }}
<span class="input-group-append">
<span class="input-group-text"></span>
</span>
</div>
</td>
<td>
<button type="button" name="" value="up_{{$draft_item->id}}" class="btn btn-xs btn-default move-up-btn"><i class="fa fa-arrow-up"></i> </button>
<button type="button" name="" value="down_{{$draft_item->id}}" class="btn btn-xs btn-default mr-2 move-down-btn"><i class="fa fa-arrow-down"></i> </button>
<a class="text-danger" href="{{ route('draft_item_delete', [$draft_item->id]) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a>
</td>
</td>
<td>
<select class="selectpicker" data-style="btn-light" name="draft_item[{{$draft_item->id}}][days_duration]" id="draft_item_{{$draft_item->id }}_days_duration">
<option value="">(Datum) Dauer + Tage</option>
{!! HTMLHelper::getRangeOptions($draft_item->days_duration, 30, ' Tag(e)') !!}
</select>
</td>
<td>
<div class="input-group">
<select class="custom-select" data-style="btn-light" name="draft_item[{{$draft_item->id}}][adult]" id="draft_item_{{$draft_item->id }}_adult">
<option value="">0</option>
{!! HTMLHelper::getRangeOptions($draft_item->adult, 10, ' T.') !!}
</select>
{{ Form::text('draft_item['.$draft_item->id.'][price_adult]', $draft_item->price_adult, array('placeholder'=>__('Preis in €'), 'class'=>'form-control', 'id'=>'draft_item_'.$draft_item->id.'_price_adult',)) }}
<span class="input-group-append">
<span class="input-group-text"></span>
</span>
</div>
</td>
<td>
<div class="input-group">
<select class="custom-select" data-style="btn-light" name="draft_item[{{$draft_item->id}}][children]" id="draft_item_{{$draft_item->id}}_children">
<option value="">Kinder</option>
{!! HTMLHelper::getRangeOptions($draft_item->children, 10, ' K.') !!}
</select>
{{ Form::text('draft_item['.$draft_item->id.'][price_children]', $draft_item->price_children, array('placeholder'=>__('Preis in €'), 'class'=>'form-control', 'id'=>'draft_item_'.$draft_item->id.'_price_children')) }}
<span class="input-group-append">
<span class="input-group-text"></span>
</span>
</div>
</td>
<td>
<button type="button" name="" value="up_{{$draft_item->id}}" class="btn btn-xs btn-default move-up-btn"><i class="fa fa-arrow-up"></i> </button>
<button type="button" name="" value="down_{{$draft_item->id}}" class="btn btn-xs btn-default mr-2 move-down-btn"><i class="fa fa-arrow-down"></i> </button>
<a class="text-danger" href="{{ route('draft_item_delete', [$draft_item->id]) }}" onclick="return confirm('{{__('Wirklich löschen?')}}');"><i class="fa fa-trash-alt"></i></a>
</td>
</tr>
<tr @if($draft_item->draft_type) style="background-color: {{ $draft_item->draft_type->color }}" @endif class="border-none">
<td colspan="7">
{{ Form::textarea('draft_item['.$draft_item->id.'][service]', $draft_item->service, array('placeholder'=>__('Leistungen'), 'class'=>'form-control autoExpand', 'id'=>'draft_item_'.$draft_item->id.'_service', 'rows'=>'1', 'data-min-rows'=>'1')) }}
@ -223,10 +217,8 @@
<span class="custom-control-label">{{__('in PDF')}}</span>
</label>
</td>
</tr>
</tbody>
</tbody>
@endforeach
</table>
</div>

View file

@ -139,13 +139,16 @@
<script src="{{ mix('/vendor/libs/minicolors/minicolors.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('/js/summernote-cleaner.js?v=1') }}"></script>
<script src="{{ asset('/js/summernote-iq-content-extension.js?v=2') }}"></script>
<script src="{{ asset('/js/summernote-image-title.js?v=2') }}"></script>
<script src="{{ asset('/vendor/libs/quill/quill.min.js?v=1.3.6') }}"></script>
<script src="{{ asset('/vendor/libs/quill-placeholder-module/dist/placeholder-module.js?v=1') }}"></script>
@if(isset($lfm_helper))
<script src="{{ asset('/js/summernote-iq-content-extension.js?v=2') }}"></script>
<script src="{{ asset('/js/summernote-image-title.js?v=2') }}"></script>
<script src="{{ asset('/vendor/laravel-filemanager/js/cropper.min.js') }}"></script>
<script src="{{ asset('/js/filemanager.js?v=3') }}"></script>
@endif
@ -311,6 +314,36 @@
},
});
$('.summernote-air').summernote({
airMode: true,
lang: 'de-DE',
placeholder: 'Text ...',
tabsize: 2,
popover: { air:[
['style', ['style']],
['font', ['bold', 'italic', 'underline', 'clear']],
['font', ['strikethrough']],
['para', ['ul', 'ol', 'paragraph']],
['insert', ['link']],
['color', ['color']],
['view', ['codeview']],
] },
cleaner:{
action: 'paste', // both|button|paste 'button' only cleans via toolbar button, 'paste' only clean when pasting content, both does both options.
newline: '<br>', // Summernote's default is to use '<p><br></p>'
notStyle: 'position:absolute;top:0;left:0;right:0', // Position of Notification
icon: '<i class="note-icon">[Your Button]</i>',
keepHtml: false, // Remove all Html formats
keepOnlyTags: ['<p>', '<br>', '<ul>', '<li>', '<b>', '<strong>','<i>', '<a>'], // If keepHtml is true, remove all tags except these
keepClasses: false, // Remove Classes
badTags: ['style', 'script', 'applet', 'embed', 'noframes', 'noscript', 'html'], // Remove full tags with contents
badAttributes: ['style', 'start'], // Remove attributes from remaining tags
limitChars: false, // 0/false|# 0/false disables option
limitDisplay: false, // text|html|both
limitStop: false // true/false
}
});
//save in the codeview
$('.note-codable').on('blur', function() {
var codeviewHtml = $(this).val();

View file

@ -160,6 +160,22 @@
</li>
</ul>
</li>
@endif
@if(Auth::user()->isPermission('cms-fewo'))
<li class="sidenav-item{{ Request::is('cms/fewo/*') ? ' open' : '' }}">
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
<i class="sidenav-icon ion ion-ios-home"></i>
<div>FeWo</div>
</a>
<ul class="sidenav-menu">
<li class="sidenav-item{{ Request::is(['cms/fewo/all', 'cms/fewo/all/*']) ? ' active' : '' }}">
<a href="{{ route('cms_fewo_all') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-paper"></i><div>FeWo Allgemein</div></a>
</li>
<li class="sidenav-item{{ Request::is(['cms/fewo/content', 'cms/fewo/content/*']) ? ' active' : '' }}">
<a href="{{ route('cms_fewo_content') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-paper"></i><div>FeWo Inhalte</div></a>
</li>
</ul>
</li>
@endif
@if(Auth::user()->isPermission('cms-fb'))
<li class="sidenav-item{{ Request::is('cms/feedback') ? ' active' : '' }}">
@ -171,31 +187,31 @@
<a href="{{ route('cms_sidebar') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-list"></i><div>Sidebar</div></a>
</li>
@endif
@if(Auth::user()->isPermission('cms-cn'))
<li class="sidenav-item{{ Request::is('cms/content/*') ? ' open' : '' }}">
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
<i class="sidenav-icon ion ion-md-map"></i>
<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>
@if(Auth::user()->isPermission('cms-cn'))
<li class="sidenav-item{{ Request::is('cms/content/*') ? ' open' : '' }}">
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
<i class="sidenav-icon ion ion-md-map"></i>
<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-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-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>
@endif
@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>
@endif
@endif
@endif

View file

@ -0,0 +1,40 @@
@extends('pdf.layout-small')
@section('content')
<style>
h2 {
margin-bottom: 0;
}
ul, ol {
padding-left: 2rem;
}
li {
padding-bottom: 0.5rem;
}
.pdf-input-content {
font-size: 11pt;
line-height: 1.3em;
margin-bottom: 2rem;
}
.pdf-break-block {
page-break-inside: avoid;
}
</style>
<h1>HINWEISE FERIENWOHNUNG STERN USEDOM</h1>
<h1>{{$fewo->single_name}} in der {{ $fewo->adress1 }} in {{ $fewo->zip_code }} {{ $fewo->city }}</h1>
<hr>
@foreach($contents as $content)
@if($content->getObjectBy('page-break'))
<div class="page_break"></div>
@endif
<div class="pdf-break-block">
<h2>{{$content->name}}</h2>
<div class="pdf-input-content">
{!! $content->getContent() !!}
</div>
</div>
@endforeach
@endsection

View file

@ -0,0 +1,143 @@
<!DOCTYPE html>
<html lang="en">
<head>
<base href="{{ url('/') }}">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>STERN TOURS</title>
<style>
html {
width: 100%;
height: 100%;
}
body {
position: relative;
width: 100%;
height: 100%;
margin: 0 auto;
padding: 0;
color: #000;
background: #fff;
font-size: 9.5pt;
line-height: 1.15em;
font-family: Helvetica;
}
table {
border: none;
}
strong {
font-weight: bold;
}
@page {
margin: 20mm 15mm 22mm 15mm;
color:#000;
}
header {
position: fixed;
top:-20mm;
right: 0mm;
width: 100mm;
height: 20mm;
text-align: right;
}
header img {
padding-top: 6mm;
height: 10mm;
}
footer {
position: fixed;
bottom: -16mm;
left: 0;
right: 0;
height: 10mm;
padding-top: 2mm;
border-top: 0.25pt solid #000;
font-size: 8.5pt;
/** Extra personal styles **/
}
footer table {
width: 100%;
}
footer table td {
vertical-align: top;
width: 33.33%;
}
/* footer .page {
position: absolute;
top:0mm;
font-size: 8pt;
text-align: right;
right: 0;
}
footer .page:after { content: counter(page); }
*/
main {
width: 100%;
height: 100%;
}
.page_break { page-break-before: always; }
#pdf-page {
position: relative;
}
a {
color: #648859 !important;
}
</style>
</head>
<body>
<script type="text/php">
if (isset($pdf)) {
$font = null;
$size = 8;
$color = array(0,0,0);
$word_space = 0.0; // default
$char_space = 0.0; // default
$angle = 0.0; // default
$text = "{PAGE_NUM} / {PAGE_COUNT}";
$y = $pdf->get_height() - 64;
$x = $pdf->get_width() - 66;
$pdf->page_text($x, $y, $text, $font, $size, $color, $word_space, $char_space, $angle);
}
</script>
<header>
<img src="{{\App\Services\Util::getURLasContent(asset('/images/stern-tours-logo.png'), true)}}" alt="STERNTOURS">
</header>
<footer>
<table>
<tr>
<td>
<strong>STERN TOURS GmbH</strong><br>
Emser Str. 3<br>
10719 Berlin<br>
</td>
<td style="text-align: center">
<strong>Beratung und Buchung</strong>
</td>
<td style="text-align: right">
<strong>Web:</strong> <a href="https://www.sterntours.de/ferienwohnungen">www.sterntours.de/ferienwohnungen</a><br>
<strong>E-Mail:</strong> <a href="mailto:stern@sterntours.de">stern@sterntours.de</a><br>
<strong>Tel.:</strong> <a href="tel:03070094100">030 - 700 94 100</a>
</td>
</tr>
</table>
</footer>
<main>
<div id="pdf-page">
@yield('content')
</div>
</main>
</body>
</html>

View file

@ -3,7 +3,7 @@
<head>
<base href="{{ url('/') }}">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<title>STERN TOURS</title>
<style>
{!! \App\Services\Util::getURLasContent(asset('/css/stern_fewo_pdf.css')) !!}
</style>
@ -26,7 +26,7 @@
10719 Berlin<br>
</td>
<td>
<strong>Fon:</strong> 030 | 88 0 313 0<br>
<strong>Tel.:</strong> 030 | 88 0 313 0<br>
<strong>Fax:</strong> 030 | 88 0 313 44<br>
<strong>E-Mail:</strong> kontakt@sterntours.de<br>
<strong>Web:</strong> www.sterntours.de

View file

@ -19,7 +19,26 @@
</tr>
</thead>
<tbody>
@if($travel_user_booking_fewo->fewo_lodging)
<tr>
<th scope="row">{{$booking_files_count++}}</th>
<td>
<a target="_blank" href="{{ route('customer_file_show', ['fewo_instruction_pdf', $travel_user_booking_fewo->fewo_lodging->id, 'stream']) }}" class="badge badge-md badge-next">
<i class="fa fa-file-pdf mr-1"></i> {{\App\Services\BookingFewo::getFeWoInstructionPDFName($travel_user_booking_fewo->fewo_lodging)}}
</a>
</td>
<td>
application/pdf
</td>
<td>-</td>
<td>
<a href="{{ route('customer_file_show', ['fewo_instruction_pdf', $travel_user_booking_fewo->fewo_lodging->id, 'download']) }}" class="btn btn-xs btn-default"
title="Download" data-placement="left" rel="tooltip">
<i class="fa fa-download"></i>
</a>
</td>
</tr>
@endif
@foreach(\App\Services\BookingFewo::contentFiles() as $content_file)
@if($file = \App\Models\CMSContent::getModelBySlug($content_file))
<tr>

View file

@ -3,7 +3,7 @@
<h6 class="card-header bg-primary text-white py-2" data-toggle="collapse" data-target="#collapseBookingInfo" aria-expanded="false" aria-controls="collapseBookingInfo">
<strong style="line-height: 1.6em"> Kunde / Buchung</strong>
</h6>
<div class="collapse" id="collapseBookingInfo">
<div class="collapse @if($id === 'new') show @endif" id="collapseBookingInfo">
<div class="card-body">
<div class="form-row">
<div class="form-group col-md-6">

View file

@ -12,6 +12,27 @@
<tbody>
@php($booking_files_count = 1)
@if($booking->fewo_lodging)
<tr>
<th scope="row">{{$booking_files_count++}}</th>
<td>
<a target="_blank" href="{{ route('customer_file_show', ['fewo_instruction_pdf', $booking->fewo_lodging->id, 'stream']) }}" class="badge badge-md badge-next">
<i class="fa fa-file-pdf mr-1"></i> {{\App\Services\BookingFewo::getFeWoInstructionPDFName($booking->fewo_lodging)}}
</a>
</td>
<td>
application/pdf
</td>
<td>-</td>
<td>
<button data-target="{{ route('customer_file_show', ['fewo_instruction_pdf', $booking->fewo_lodging->id, 'stream']) }}" data-name="{{\App\Services\BookingFewo::getFeWoInstructionPDFName($booking->fewo_lodging)}}" class="btn btn-xs btn-primary add-file-to-attachment"
title="als Anhang hinzufügen" data-placement="left" rel="tooltip">
<i class="fa fa-cloud-download-alt"></i>
</button>
</td>
</tr>
@endif
@foreach(\App\Services\BookingFewo::contentFiles() as $content_file)
@if($file = \App\Models\CMSContent::getModelBySlug($content_file))
<tr>

View file

@ -249,11 +249,21 @@ Route::group(['middleware' => ['admin']], function()
Route::get('/cms/travel_guide/page/detail/{id}', 'CMS\CMSTravelGuideControllecr@pageDetail')->name('cms_travel_guide_page_detail');
Route::post('/cms/travel_guide/page/detail/{id}', 'CMS\CMSTravelGuideController@pageStore')->name('cms_travel_guide_page_detail');
Route::get('/cms/travel_guide/detail/{id}', 'CMS\CMSTravelGuideController@detail')->name('cms_travel_guide_detail');
Route::post('/cms/travel_guide/detail/{id}', 'CMS\CMSTravelGuideController@store')->name('cms_travel_guide_detail');
Route::get('/cms/travel_guide/delete/{id}', 'CMS\CMSTravelGuideController@delete')->name('cms_travel_guide_delete');
});
Route::group(['middleware' => ['auth.permission:cms-tg']], function() {
// CMS FeWo
Route::get('/cms/fewo/all/{step?}', 'CMS\CMSFeWoController@all')->name('cms_fewo_all');
Route::post('/cms/fewo/all/{step?}', 'CMS\CMSFeWoController@storeAll')->name('cms_fewo_all');
Route::get('/cms/fewo/all/delete/{id}', 'CMS\CMSFeWoController@deleteAll')->name('cms_fewo_all_delete');
Route::get('/cms/fewo/content', 'CMS\CMSFeWoController@content')->name('cms_fewo_content');
Route::get('/cms/fewo/content/detail/{id}/{step?}', 'CMS\CMSFeWoController@detail')->name('cms_fewo_content_detail');
Route::post('/cms/fewo/content/detail/{id}/{step?}', 'CMS\CMSFeWoController@store')->name('cms_fewo_content_store');
});
Route::group(['middleware' => ['auth.permission:cms-fb']], function() {
// CMS Feedback
Route::get('/cms/feedback', 'CMS\CMSFeedbackController@index')->name('cms_feedback');