]> _ Git - cubist_cms-back.git/commitdiff
wip #4216 @3
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 6 Jul 2021 16:38:33 +0000 (18:38 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 6 Jul 2021 16:38:33 +0000 (18:38 +0200)
src/app/Magic/Fields/Field.php
src/app/Magic/Models/CubistMagicAbstractModel.php
src/resources/views/create.blade.php
src/resources/views/edit.blade.php
src/resources/views/fields/dropzone_media.blade.php
src/resources/views/fields/form_section.blade.php
src/resources/views/form/shortcuts.blade.php [new file with mode: 0644]

index 2b2daa6dccbe1e8dac70bd380b10e79484db1e5b..6c0fd9770b5a1a3247bd91d956ad6918fb34760f 100644 (file)
@@ -154,7 +154,8 @@ class Field implements \ArrayAccess
     /**
      * @return string
      */
-    public function getName(){
+    public function getName()
+    {
         return $this->getAttribute('name');
     }
 
index a314037af3c1a57d28962bccf2175e76fe563066..dc096a98fdc059071609af63bd24cb92916c816f 100644 (file)
@@ -5,6 +5,7 @@ namespace Cubist\Backpack\Magic\Models;
 use Backpack\CRUD\app\Http\Controllers\Operations\BulkCloneOperation;
 use Backpack\CRUD\app\Http\Controllers\Operations\BulkDeleteOperation;
 use Backpack\CRUD\app\Http\Controllers\Operations\CloneOperation;
+use Cubist\Backpack\Magic\Fields\Files;
 use Cubist\Backpack\Magic\Operations\CreateOperation;
 use Backpack\CRUD\app\Http\Controllers\Operations\DeleteOperation;
 use Cubist\Backpack\Magic\Operations\UpdateOperation;
@@ -502,6 +503,16 @@ class CubistMagicAbstractModel extends Model implements HasMedia
         return $type;
     }
 
+    public function registerMediaCollections(): void
+    {
+        foreach ($this->getFields() as $field) {
+            if ($field instanceof Files && $field->getAttribute('name_as_collection', false)) {
+                $this->addMediaCollection($field->getAttribute('name'))
+                    ->onlyKeepLatest($field->getAttribute('maxFiles'));
+            }
+        }
+    }
+
     public function registerMediaConversions(Media $media = null): void
     {
         $this->addMediaConversion('backpack_thumb')
@@ -671,11 +682,15 @@ class CubistMagicAbstractModel extends Model implements HasMedia
         if ($preserveOriginal) {
             $media->preservingOriginal();
         }
-        $media->toMediaCollection($collection);
+
         $col = $this->getMediaCollection($collection);
         if ($col) {
-            $col->onlyKeepLatest($field->getAttribute('maxFiles'));
+            $maxFiles = $field->getAttribute('maxFiles');
+            $col->onlyKeepLatest($maxFiles);
         }
+
+        $media->toMediaCollection($collection);
+
         if ($save) {
             $this->save();
         }
index 88ca3c79648b36f13769ea101595559c6a35d5aa..e66385259f82952973c20a6e2586d05bc12193cb 100644 (file)
@@ -1,2 +1,58 @@
+@extends(backpack_view('blank'))
+
 @include('cubist_back::when')
-@include('crud::create')
+
+@php
+    $defaultBreadcrumbs = [
+      trans('backpack::crud.admin') => url(config('backpack.base.route_prefix'), 'dashboard'),
+      $crud->entity_name_plural => url($crud->route),
+      trans('backpack::crud.add') => false,
+    ];
+
+    // if breadcrumbs aren't defined in the CrudController, use the default breadcrumbs
+    $breadcrumbs = $breadcrumbs ?? $defaultBreadcrumbs;
+@endphp
+
+@section('header')
+    <section class="container-fluid">
+        <h2>
+            <span class="text-capitalize">{!! $crud->getHeading() ?? $crud->entity_name_plural !!}</span>
+            <small>{!! $crud->getSubheading() ?? trans('backpack::crud.add').' '.$crud->entity_name !!}.</small>
+
+            @if ($crud->hasAccess('list'))
+                <small><a href="{{ url($crud->route) }}" class="hidden-print font-sm"><i class="la la-angle-double-{{ config('backpack.base.html_direction') == 'rtl' ? 'right' : 'left' }}"></i> {{ trans('backpack::crud.back_to_all') }} <span>{{ $crud->entity_name_plural }}</span></a></small>
+            @endif
+        </h2>
+    </section>
+@endsection
+
+@section('content')
+
+    <div class="row">
+        <div class="{{ $crud->getCreateContentClass() }}">
+            <!-- Default box -->
+
+            @include('crud::inc.grouped_errors')
+
+            <form method="post"
+                  action="{{ url($crud->route) }}"
+                  @if ($crud->hasUploadFields('create'))
+                  enctype="multipart/form-data"
+                @endif
+            >
+            {!! csrf_field() !!}
+            <!-- load the view from the application if it exists, otherwise load the one in the package -->
+                @if(view()->exists('vendor.backpack.crud.form_content'))
+                    @include('vendor.backpack.crud.form_content', [ 'fields' => $crud->fields(), 'action' => 'create' ])
+                @else
+                    @include('crud::form_content', [ 'fields' => $crud->fields(), 'action' => 'create' ])
+                @endif
+
+                @include('crud::inc.form_save_buttons')
+            </form>
+        </div>
+        @include('cubist_back::form.shortcuts')
+    </div>
+
+@endsection
+
index b00aea0ea4280e1e3eb7ddc602befc4ee7236283..370fe7a14fca2d1e59c0d47fa2cba0f973918be0 100644 (file)
@@ -1,3 +1,5 @@
+@extends(backpack_view('blank'))
+
 @push('crud_fields_scripts')
     <script>
         jQuery(document).ready(function ($) {
 @endpush
 
 @include('cubist_back::when')
-@include('crud::edit')
+
+
+@php
+    $defaultBreadcrumbs = [
+      trans('backpack::crud.admin') => backpack_url('dashboard'),
+      $crud->entity_name_plural => url($crud->route),
+      trans('backpack::crud.edit') => false,
+    ];
+
+    // if breadcrumbs aren't defined in the CrudController, use the default breadcrumbs
+    $breadcrumbs = $breadcrumbs ?? $defaultBreadcrumbs;
+@endphp
+
+@section('header')
+    <section class="container-fluid">
+        <h2>
+            <span class="text-capitalize">{!! $crud->getHeading() ?? $crud->entity_name_plural !!}</span>
+            <small>{!! $crud->getSubheading() ?? trans('backpack::crud.edit').' '.$crud->entity_name !!}.</small>
+
+            @if ($crud->hasAccess('list'))
+                <small><a href="{{ url($crud->route) }}" class="hidden-print font-sm"><i class="la la-angle-double-{{ config('backpack.base.html_direction') == 'rtl' ? 'right' : 'left' }}"></i> {{ trans('backpack::crud.back_to_all') }} <span>{{ $crud->entity_name_plural }}</span></a></small>
+            @endif
+        </h2>
+    </section>
+@endsection
+
+@section('content')
+    <div class="row">
+        <div class="{{ $crud->getEditContentClass() }}">
+            <!-- Default box -->
+
+            @include('crud::inc.grouped_errors')
+
+            <form method="post"
+                  action="{{ url($crud->route.'/'.$entry->getKey()) }}"
+                  @if ($crud->hasUploadFields('update', $entry->getKey()))
+                  enctype="multipart/form-data"
+                @endif
+            >
+                {!! csrf_field() !!}
+                {!! method_field('PUT') !!}
+
+                @if ($crud->model->translationEnabled())
+                    <div class="mb-2 text-right">
+                        <!-- Single button -->
+                        <div class="btn-group">
+                            <button type="button" class="btn btn-sm btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+                                {{trans('backpack::crud.language')}}: {{ $crud->model->getAvailableLocales()[request()->input('locale')?request()->input('locale'):App::getLocale()] }} &nbsp; <span class="caret"></span>
+                            </button>
+                            <ul class="dropdown-menu">
+                                @foreach ($crud->model->getAvailableLocales() as $key => $locale)
+                                    <a class="dropdown-item" href="{{ url($crud->route.'/'.$entry->getKey().'/edit') }}?locale={{ $key }}">{{ $locale }}</a>
+                                @endforeach
+                            </ul>
+                        </div>
+                    </div>
+                @endif
+            <!-- load the view from the application if it exists, otherwise load the one in the package -->
+                @if(view()->exists('vendor.backpack.crud.form_content'))
+                    @include('vendor.backpack.crud.form_content', ['fields' => $crud->fields(), 'action' => 'edit'])
+                @else
+                    @include('crud::form_content', ['fields' => $crud->fields(), 'action' => 'edit'])
+                @endif
+
+                @include('crud::inc.form_save_buttons')
+            </form>
+        </div>
+        @include('cubist_back::form.shortcuts')
+    </div>
+@endsection
+
index 34a4dc204701a52e8bfc6e45272dcc8b5a953b7b..e62659996b98e4f7a395c135c64097720c04f8b1 100644 (file)
@@ -136,7 +136,6 @@ $collection = old(square_brackets_to_dots($field['name'])) ?? $field['value'] ??
                     height: 26px;
                     color: #fff;
                     text-align: center;
-                    font-weight: 400;
                     font-size: 14px;
                     line-height: 1em;
                     padding-top: 6px;
index 763b13f8cb5cd0f4eae9c55bb2a6c0dcf0df8dd7..6c5bd890d572a78aee690605d98a83ddc0669119 100644 (file)
@@ -3,5 +3,9 @@
 <div class="card">
 <div class="card-body row">
 @include('crud::fields.inc.wrapper_start')
-<h3 id="{{$field['name']}}">{{$field['label']}}</h3>
+<h3 id="s_{{$field['name']}}">{{$field['label']}}</h3>
 @include('crud::fields.inc.wrapper_end')
+
+@push('form_shortcuts')
+        <a href="#s_{{$field['name']}}">{{$field['label']}}</a>
+@endpush
diff --git a/src/resources/views/form/shortcuts.blade.php b/src/resources/views/form/shortcuts.blade.php
new file mode 100644 (file)
index 0000000..1c47a25
--- /dev/null
@@ -0,0 +1,31 @@
+@section('form_shortcut_m')
+    @stack('form_shortcuts')
+@endsection
+
+@hasSection('form_shortcut_m')
+    <style type="text/css">
+        #form_shortcuts {
+            position: sticky;
+            top: 30px;
+        }
+
+        #form_shortcuts .card {
+            padding: 30px;
+        }
+
+        #form_shortcuts a {
+            display: block;
+            font-size: 120%;
+            font-weight: 500;
+        }
+    </style>
+    <div class="col-md-4">
+        <aside id="form_shortcuts">
+            <div class="card">
+                <nav>
+                    @yield('form_shortcut_m')
+                </nav>
+            </div>
+        </aside>
+    </div>
+@endif