]> _ Git - cubist_cms-back.git/commitdiff
#2843
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 18 Jun 2019 14:55:28 +0000 (16:55 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 18 Jun 2019 14:55:28 +0000 (16:55 +0200)
src/app/Magic/Fields/Button.php
src/resources/views/fields/button.blade.php

index 40fb063600f15c9160468cf2ced80dc2c1ffc648..7dd580edbd1c85125d5be405f69560b0948b8301 100644 (file)
@@ -11,6 +11,7 @@ class Button extends Field
     protected $_pageModel = '\Backpack\PageManager\app\Models\Page';
     protected $_adminType = 'button';
     protected $_viewNamespace = CubistBackpackServiceProvider::NAMESPACE . '::fields';
+    protected $_cast = 'array';
 
     public function getDefaultAttributes()
     {
index e041b4be1f256d982fba75da736dc729e0149578..1695bdbc055270a430f5f0c3c4c66f7024c756be 100644 (file)
@@ -1,44 +1,48 @@
 <!-- Button -->
 
 <?php
-$field['options'] = ['page_link' => trans('backpack::crud.page_link'), 'internal_link' => trans('backpack::crud.internal_link'), 'external_link' => trans('backpack::crud.external_link')];
+$link_types = ['page_link' => trans('backpack::crud.page_link'), 'internal_link' => trans('backpack::crud.internal_link'), 'external_link' => trans('backpack::crud.external_link')];
 $field['allows_null'] = false;
 $page_model = $field['page_model'];
 $active_pages = $page_model::all();
+
+$empty = ['label' => '', 'type' => array_key_first($link_types), 'link' => '', 'page_id' => ''];
+$value = old(square_brackets_to_dots($field['name'])) ?? $field['value'] ?? $field['default'] ?? [];
+if($value==''){
+    $value=[];
+}
+$value = array_merge($empty, $value);
+
 ?>
 
 <div @include('crud::inc.field_wrapper_attributes') >
     <label>{!! $field['label'] !!}</label>
     @include('crud::inc.field_translatable_icon')
     <div class="clearfix"></div>
-    <div class="col-sm-5">
-        <input type="text" name="label" value="{{$entry->label}}">
+    <div class="col-sm-3">
+        <label>Button label</label><br/>
+        <input type="text" name="{{$field['name']}}[label]" value="{{$value['label']}}" class="form-control">
     </div>
     <div class="col-sm-3">
+        <label>Link type</label><br/>
         <select
             id="page_or_link_select"
-            name="{{ $field['name'] ?? 'type' }}"
+            name="{{ $field['name']}}[type]"
             @include('crud::inc.field_attributes')
         >
-
-            @if (isset($field['allows_null']) && $field['allows_null']==true)
-                <option value="">-</option>
-            @endif
-
-            @if (count($field['options']))
-                @foreach ($field['options'] as $key => $value)
+                @foreach ($link_types as $key => $link_type)
                     <option value="{{ $key }}"
-                            @if (isset($field['value']) && $key==$field['value'])
+                            @if ($key===$value['type'])
                             selected
                         @endif
-                    >{{ $value }}</option>
+                    >{{ $link_type }}</option>
                 @endforeach
-            @endif
         </select>
     </div>
-    <div class="col-sm-4">
+    <div class="col-sm-6">
+        <label>Link</label><br/>
         <!-- external link input -->
-        <div class="page_or_link_value <?php if (!isset($entry) || $entry->type != 'external_link') {
+        <div class="page_or_link_value <?php if ($value['type'] != 'external_link') {
             echo 'hidden';
         } ?>" id="page_or_link_external_link">
             <input
@@ -47,17 +51,17 @@ $active_pages = $page_model::all();
                 name="link"
                 placeholder="{{ trans('backpack::crud.page_link_placeholder') }}"
 
-                @if (!isset($entry) || $entry->type!='external_link')
+                @if ($value['type']!='external_link')
                 disabled="disabled"
                 @endif
 
-                @if (isset($entry) && $entry->type=='external_link' && isset($entry->link) && $entry->link!='')
-                value="{{ $entry->link }}"
+                @if ($value['type']=='external_link' && isset($value['link']) && $value['link']!='')
+                value="{{ $value['link'] }}"
                 @endif
             >
         </div>
         <!-- internal link input -->
-        <div class="page_or_link_value <?php if (!isset($entry) || $entry->type != 'internal_link') {
+        <div class="page_or_link_value <?php if ($value['type'] != 'internal_link') {
             echo 'hidden';
         } ?>" id="page_or_link_internal_link">
             <input
@@ -66,17 +70,17 @@ $active_pages = $page_model::all();
                 name="link"
                 placeholder="{{ trans('backpack::crud.internal_link_placeholder', ['url', url(config('backpack.base.route_prefix').'/page')]) }}"
 
-                @if (!isset($entry) || $entry->type!='internal_link')
+                @if ($value['type']!='internal_link')
                 disabled="disabled"
                 @endif
 
-                @if (isset($entry) && $entry->type=='internal_link' && isset($entry->link) && $entry->link!='')
-                value="{{ $entry->link }}"
+                @if ($value['type']=='internal_link' && isset($value['link']) && $value['link']!='')
+                value="{{ $value['link'] }}"
                 @endif
             >
         </div>
         <!-- page slug input -->
-        <div class="page_or_link_value <?php if (isset($entry) && $entry->type != 'page_link') {
+        <div class="page_or_link_value <?php if ($value['type'] != 'page_link') {
             echo 'hidden';
         } ?>" id="page_or_link_page">
             <select
@@ -88,7 +92,7 @@ $active_pages = $page_model::all();
                 @else
                     @foreach ($active_pages as $key => $page)
                         <option value="{{ $page->id }}"
-                                @if (isset($entry) && isset($entry->page_id) && $page->id==$entry->page_id)
+                                @if (isset($value['page_id']) && $page->id==$value['page_id'])
                                 selected
                             @endif
                         >{{ $page->name }}</option>