]> _ Git - fluidbook-toolbox.git/commitdiff
wip #4211 @1.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 5 Nov 2021 15:56:52 +0000 (16:56 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 5 Nov 2021 15:56:52 +0000 (16:56 +0100)
app/Console/Commands/WorkshopMigration.php
app/Fields/FluidbookLocale.php
app/Fields/FluidbookTheme.php
app/Models/FluidbookPublication.php

index 5e6a8ccc18c81d533ed300795ca16bd92a22acf0..0354ec9fbc4e6814501896ccff89f04952a43f78 100644 (file)
@@ -3,8 +3,15 @@
 
 namespace App\Console\Commands;
 
+use App\Models\AuthUser;
+use App\Models\FluidbookPublication;
 use App\Models\FluidbookQuote;
+use App\Models\FluidbookTheme;
 use Cubist\Backpack\Console\Commands\CubistCommand;
+use Cubist\Backpack\Magic\Fields\Color;
+use Cubist\Backpack\Magic\Fields\Date;
+use Cubist\Backpack\Magic\Fields\Datetime;
+use Cubist\Backpack\Magic\Fields\Files;
 use Illuminate\Support\Facades\DB;
 
 class WorkshopMigration extends CubistCommand
@@ -14,13 +21,17 @@ class WorkshopMigration extends CubistCommand
     protected $_wsRanks = [];
     protected $_oldDB = 'extranet_clean';
     protected $_oldRoot = '/home/extranet/www/fluidbook/';
+    protected static $_admin = 5;
 
     public function handle()
     {
+        $user = AuthUser::where('id', self::$_admin)->first();
+        backpack_auth()->login($user);
+
         $actions = [
             //'Backup current database' => 'backup',
             'Migrate magic models' => 'migrate',
-            //'Import publications' => 'importPublications',
+            'Import publications' => 'importPublications',
             'Clean caches' => 'cleanCache'
         ];
 
@@ -68,6 +79,74 @@ class WorkshopMigration extends CubistCommand
 
     protected function importPublications()
     {
+        $map = ['book_id' => 'id',
+            'nom' => 'name',
+            'proprietaire' => 'owner',
+            'date' => 'created_at',
+            'lang' => 'locale',
+            'compteur_visites' => 'visits_counter',
+            'date_status' => 'status_date',
+            'traductions' => 'translations',
+            'numerotation' => 'page_numbers',
+            'tache' => 'extranet_task',
+            'changedate' => 'updated_at',
+            'compiledate' => 'compilation_date',
+            'composition_update' => 'composition_update_at',
+            'dir_external' => 'install_ftp_settings',
+            'dir_hosting' => 'install_hosting_settings',
+            'dir_references' => 'install_references_settings',
+        ];
+
+        $mapValues = ['Open Sans (police du Fluidbook)' => 'OpenSans'];
+
+        $ignore = [];
 
+        FluidbookTheme::$updateWS2ViewOnChange = false;
+        foreach (FluidbookPublication::all() as $book) {
+            $book->delete();
+        }
+
+        foreach (DB::table($this->_oldDB . '.books')->get() as $e) {
+            $oldRoot = $this->_oldRoot . 'books/working/' . $e->book_id . '/';
+            $c = new FluidbookPublication();
+            foreach ($e as $k => $v) {
+                $new = $map[$k] ?? $k;
+                if (!$c->hasField($new)) {
+                    continue;
+                }
+                if ($c->getField($new) instanceof Datetime) {
+                    $date = new \DateTime();
+                    $date->setTimestamp($v);
+                    $v = $date;
+                }
+                $c->setAttribute($new, $v);
+            }
+            $c->save();
+
+            $s = $this->_unserialize($e->parametres);
+
+
+            foreach ($s->datas as $k => $data) {
+                if (in_array($k, $ignore)) {
+                    continue;
+                }
+                if (!$c->hasField($k)) {
+                    continue;
+                }
+                $f = $c->getField($k);
+                if ($f instanceof Files) {
+                    //$c->_handleWS2File($f, $data, $oldRoot);
+                } else {
+                    if ($f instanceof Color) {
+                        $data = FluidbookTheme::_colorToWS3($data);
+                    }
+                    if(isset($mapValues[$data])){
+                        $data=$mapValues[$data];
+                    }
+                    $c->setAttribute($k, $data);
+                }
+            }
+            $c->save();
+        }
     }
 }
index 70c449f5333ede1a3f4fe9ed0aaa11a81e443fc7..69a88ce444f7c3bf50f5adc2ee43fa6bdfe4605f 100644 (file)
@@ -4,9 +4,29 @@
 namespace App\Fields;
 
 
+use Cubist\Backpack\CubistBackpackServiceProvider;
 use Cubist\Backpack\Magic\Fields\Locale;
+use Cubist\Util\Files\Files;
 
 class FluidbookLocale extends Locale
 {
+    protected $_columnType = 'fromfield';
+    protected $_columnViewNamespace = CubistBackpackServiceProvider::NAMESPACE . '::columns';
 
+    public function __construct($attributes)
+    {
+        $list = Files::getDirectoryIterator(resource_path('lang'));
+        $this->_limitToLocales = [];
+        foreach ($list as $item) {
+            if (preg_match('/fluidbook.([a-z_A-Z]{2,5}).json/', $item->getFilename(), $matches)) {
+                $this->_limitToLocales[] = $matches[1];
+            }
+        }
+        parent::__construct($attributes);
+    }
+
+    public function filterColumn($value)
+    {
+        return mb_strtoupper($value);
+    }
 }
index d027e2e892600aa663f3b0fdf3c349bbba53fd39..368f41ca800ba0bdcda61b2f03a3d941a1357e53 100644 (file)
@@ -8,5 +8,9 @@ use Cubist\Backpack\Magic\Fields\SelectFromModel;
 
 class FluidbookTheme extends SelectFromModel
 {
-
+    public function __construct($attributes)
+    {
+        $attributes['optionsmodel'] = \App\Models\FluidbookTheme::class;
+        parent::__construct($attributes);
+    }
 }
index 4506c292438b1ce6288ca1a993191696029678c4..f102465cfddfc32448f8ac85c339f7648a0af7ab 100644 (file)
@@ -7,6 +7,15 @@ use App\Fields\FluidbookDevelopmentVersion;
 use App\Fields\FluidbookLocale;
 use App\Fields\FluidbookSignature;
 use App\Fields\User;
+use Cubist\Backpack\Magic\Fields\Code;
+use Cubist\Backpack\Magic\Fields\Date;
+use Cubist\Backpack\Magic\Fields\Datetime;
+use Cubist\Backpack\Magic\Fields\Hidden;
+use Cubist\Backpack\Magic\Fields\Integer;
+use Cubist\Backpack\Magic\Fields\LongText;
+use Cubist\Backpack\Magic\Fields\SelectFromArray;
+
+use Cubist\Backpack\Magic\Fields\Textarea;
 use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Support\Facades\Auth;
@@ -34,6 +43,8 @@ class FluidbookPublication extends CubistMagicAbstractModel
     {
         parent::setFields();
 
+        $this->addField('name', 'Text', __('Nom'), ['column' => true]);
+
         $this->addField(['name' => 'owner',
                 'label' => __('Propriétaire'),
                 'type' => User::class,
@@ -44,6 +55,28 @@ class FluidbookPublication extends CubistMagicAbstractModel
                 'default' => Auth::id()]
         );
 
+        $this->addField('theme', \App\Fields\FluidbookTheme::class, 'Thème');
+        $this->addField('locale', FluidbookLocale::class, 'Langue', ['default' => 'fr', 'allows_null' => false, 'column' => true, 'column_label' => '<i class="la la-language"></i>']);
+        $this->addField('translations', Code::class, 'Traductions', ['language' => 'javascript']);
+        $this->addField('hash', Hidden::class);
+        $this->addField('cid', Hidden::class);
+        $this->addField('visits_counter', Integer::class, 'Compteur de visites', ['read_only' => true]);
+        $this->addField('status', SelectFromArray::class, 'Status', [
+                'options' =>
+                    [-1 => __('Brouillon'), 0 => __('Prêt'), 1 => __('Téléchargé'), 2 => __('Facturé')],
+                'column' => true,
+            ]
+        );
+        $this->addField('status_date', Datetime::class, __('Date de changement de status'));
+        $this->addField('chapters', Textarea::class, __('Sommaire'));
+        $this->addField('page_numbers', Textarea::class, __('Numérotation'));
+        $this->addField('extranet_task', Integer::class, __('Tâche de l\'extranet'));
+        $this->addField('compilation_date', Datetime::class, __('Dernière compilation'));
+        $this->addField('composition_updated_at', Datetime::class, __('Dernière modification de la composition'));
+        $this->addField('install_ftp_settings', LongText::class, __('Paramètres Installation FTP'));
+        $this->addField('install_hosting_settings', LongText::class, __('Paramètres Installation Hosting'));
+        $this->addField('install_references_settings', LongText::class, __('Paramètres Installation Résferences'));
+
         $this->setSettingsFields();
     }
 
@@ -650,6 +683,8 @@ class FluidbookPublication extends CubistMagicAbstractModel
             'label' => __('Nombre de pages'),
             'default' => 0,
             'translatable' => false,
+            'column' => true,
+            'column_label' => 'Pages'
         ]);
         $this->addField([
             'name' => 'width',