]> _ Git - cubist_cms-back.git/commitdiff
wip #3753 @1.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 8 Dec 2020 19:43:50 +0000 (20:43 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 8 Dec 2020 19:43:50 +0000 (20:43 +0100)
src/app/Http/Controllers/Operations/ReviseOperation.php [new file with mode: 0644]
src/app/Magic/Models/CubistMagicAbstractModel.php

diff --git a/src/app/Http/Controllers/Operations/ReviseOperation.php b/src/app/Http/Controllers/Operations/ReviseOperation.php
new file mode 100644 (file)
index 0000000..3eeac30
--- /dev/null
@@ -0,0 +1,34 @@
+<?php
+
+
+namespace Cubist\Backpack\Http\Controllers\Operations;
+
+use Cubist\Backpack\CubistCrudPanel;
+
+trait ReviseOperation
+{
+    use \Backpack\ReviseOperation\ReviseOperation {
+        setupReviseDefaults as protected origSetupDefaults;
+    }
+
+    protected function setupReviseDefaults()
+    {
+        // allow access to the operation
+        $this->crud->allowAccess('revise');
+
+        $this->crud->operation('revise', function () {
+            $this->crud->loadDefaultOperationSettingsFromConfig();
+        });
+
+        $this->crud->operation(['list', 'show'], function () {
+
+            if($this->crud->model->isButtonVisible('revise')) {
+                // add a button in the line stack
+                $this->crud->addButton('line', 'revise', 'view', 'revise-operation::revise_button', 'end');
+            }
+        });
+
+        $crud = $this->crud;
+    }
+
+}
index d87e6ea764025109a566966c30af9f07c6517f22..0fafd4953fda1d4e04dfa45dce835d9a95462495 100644 (file)
@@ -9,7 +9,7 @@ use Backpack\CRUD\app\Http\Controllers\Operations\CreateOperation;
 use Backpack\CRUD\app\Http\Controllers\Operations\DeleteOperation;
 use Backpack\CRUD\app\Http\Controllers\Operations\UpdateOperation;
 use Cubist\Backpack\Http\Controllers\Operations\BulkPublishOperation;
-use Backpack\ReviseOperation\ReviseOperation;
+use Cubist\Backpack\Http\Controllers\Operations\ReviseOperation;
 use Backpack\CRUD\app\Library\CrudPanel\CrudPanel;
 use Backpack\CRUD\app\Models\Traits\CrudTrait;
 use Cubist\Backpack\Magic\BunchOfFields;
@@ -47,13 +47,13 @@ class CubistMagicAbstractModel extends Model implements HasMedia
     protected $connection = null;
     protected $primaryKey = 'id';
     protected $_operations = [];
-    public $timestamps = true;
 
     protected $_enableClone = true;
     protected $_enableDeletion = true;
     protected $_enableEdition = true;
     protected $_enableCreation = true;
     protected $_enableRevisions = true;
+    protected $_enableRevisionsButton = false;
     protected $_enableBulk = true;
     protected static $_ownerAttribute = null;
 
@@ -102,7 +102,7 @@ class CubistMagicAbstractModel extends Model implements HasMedia
     public function __construct(array $attributes = [])
     {
         $this->setup();
-        $this->fill($attributes);
+        parent::__construct($attributes);
     }
 
     public function setup()
@@ -112,9 +112,6 @@ class CubistMagicAbstractModel extends Model implements HasMedia
         }
         $this->setFields();
         $this->postSetFields();
-        $this->bootIfNotBooted();
-        $this->initializeTraits();
-        $this->syncOriginal();
     }
 
     /**
@@ -390,8 +387,11 @@ class CubistMagicAbstractModel extends Model implements HasMedia
             $res = str_replace('_' . $name . '_', $value, $res);
         }
 
-        if (!file_exists(dirname($dest))) {
-            mkdir(dirname($dest), 0777, true);
+        $dir = dirname($dest);
+        if (!file_exists($dir)) {
+            if (!mkdir($concurrentDirectory = $dir, 0777, true) && !is_dir($concurrentDirectory)) {
+                throw new \RuntimeException(sprintf('Directory "%s" was not created', $concurrentDirectory));
+            }
         }
 
         file_put_contents($dest, $res);
@@ -773,4 +773,12 @@ class CubistMagicAbstractModel extends Model implements HasMedia
         return $this->canUpdate($user);
     }
 
+    public function isButtonVisible($button)
+    {
+        if ($button === 'revise') {
+            return $this->_enableRevisionsButton;
+        }
+        return true;
+    }
+
 }