Skip to content

Commit

Permalink
added new importer, removed exec command(s), added importer test
Browse files Browse the repository at this point in the history
  • Loading branch information
nadar committed Aug 27, 2015
1 parent 622a0c1 commit 07a2372
Show file tree
Hide file tree
Showing 25 changed files with 550 additions and 171 deletions.
4 changes: 2 additions & 2 deletions docs/guide/de/app-blocks.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,10 @@ Block registrieren
Um einen Block welchen du erstellt hast zu registrieren gehen wir in das *Terminal* und wechseln in das `public_html` Verzeichnis deines Projekts. Dort geben wir den befehl ein:

```sh
php index.php exec/import
php index.php import
```

Dieser Befehl wird nun deinen neune Block in das System integrieren. Wenn ein Block nicht mehr existiert wird der `exec/import` ihn löschen. Wenn sich der Name der Klasse verändert hat wird das System ihn automatisch beim `exec/import` anpassen.
Dieser Befehl wird nun deinen neune Block in das System integrieren. Wenn ein Block nicht mehr existiert wird der `import` ihn löschen. Wenn sich der Name der Klasse verändert hat wird das System ihn automatisch beim `import` anpassen.

Module Blöcke
--------------
Expand Down
4 changes: 2 additions & 2 deletions docs/guide/de/app-cmslayouts.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ Dies wird dem Benutzer nun 2 Platzerhalter zur verfügung stellen an dem er Blö

Importiern und Benutzen
-----------------------
Um ein neus layout einzufügen oder ein bestehendes Layout zu aktualsierien öffnen Sie das Terminal und wechseln in de `public_html` Ordner. Dort führen Sie den `exec/import` befehl aus.
Um ein neus layout einzufügen oder ein bestehendes Layout zu aktualsierien öffnen Sie das Terminal und wechseln in de `public_html` Ordner. Dort führen Sie den `import` befehl aus.

```sh
php index.php exec/import
php index.php import
```

Der Import Prozess wird zurück geben was gemacht wurde:
Expand Down
6 changes: 3 additions & 3 deletions docs/guide/de/app-filters.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Projekt Filter
=============
Mit einem Projekt Filter kannst du *Bilder* nach deinen Projekt spezifischen bedürfnissen verarbeiten (Zuscheiden, Verkleinern, Thumbnail). Wenn du einen neuen Projekt-Filter erstellst kann dieser mit dem cli command `exec/import` eingelesen werden.
Mit einem Projekt Filter kannst du *Bilder* nach deinen Projekt spezifischen bedürfnissen verarbeiten (Zuscheiden, Verkleinern, Thumbnail). Wenn du einen neuen Projekt-Filter erstellst kann dieser mit dem cli command `exec` eingelesen werden.

> Die idee hinter den Klassen für die Filter liegt darin alle Daten via Version-Kontroller zu tracken. Somit verfügst du und dein Projekt-Kameraden immer über die selben Einstellungen.
Expand Down Expand Up @@ -37,10 +37,10 @@ class MyFilter extends \admin\base\Filter
}
```

In der `chain()` methode kannst du mehrer verschieden Effekt hintereinander reihen, eine Übersicht aller effekt findest du unter **Admin->Effects**. Den so eben erstellten `MyFilter` kannst du nun mit dem `exec/import` befehl importieren. Öffne dafür das *Terminal* und wechsle in das `public_html` Verzeichnis wo deine index.php Datei liegt.
In der `chain()` methode kannst du mehrer verschieden Effekt hintereinander reihen, eine Übersicht aller effekt findest du unter **Admin->Effects**. Den so eben erstellten `MyFilter` kannst du nun mit dem `exec` befehl importieren. Öffne dafür das *Terminal* und wechsle in das `public_html` Verzeichnis wo deine index.php Datei liegt.

```
php index.php exec/import
php index.php exec
```

Filter Anwenden
Expand Down
29 changes: 28 additions & 1 deletion docs/guide/de/app-module.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,34 @@ class Module extends \admin\base\Module

Import Methode
--------------
TBD
Module verfügen über eine `import(\luya\commands\ImportCommand $import)`. Wenn import ein array zurück gibt müssen dies Klassen-Namen sein welche von `\luya\base\Importer` extenden.

Beispiel für Klassen Response

```php
public function import(\luya\commands\ImportController $import)
{
return [
'\\cmsadmin\\importers\\BlockImporter',
'\\cmsadmin\\importers\\CmslayoutImporter',
];
}
```

Beispiel für Code welcher direkt in der Methode ausgeführt wird und auf die $import variable zurück greift für helper funktionen und loggin mechanismus:

```php
public function import(\luya\commands\ImportController $import)
{
foreach ($import->getDirectoryFiles('filters') as $file) {
$filterClassName = $file['ns'];
if (class_exists($filterClassName)) {
$object = new $filterClassName();
$import->addLog('filters', implode(", ", $object->save()));
}
}
}
```

Komponenten Registrieren
------------------------
Expand Down
2 changes: 1 addition & 1 deletion docs/guide/de/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ Setup
Als nächstes führen wir den Setup-Befehl aus welcher einen Benutzer und Gruppe erstellt. Dazu gehen wir wieder ins Terminal:

```
php index.php exec/setup
php index.php setup
```

Nach dem Eingeben deiner Daten kannst du nun die Administration im Browser öffnen. Wenn du das Projekt in deinem `htdocs` Hauptverzeichniss erstellt hast könnte die Adresse zum Beispiel so aussehen `http://localhost/luya-kickstarter/admin`.
Expand Down
4 changes: 2 additions & 2 deletions docs/guide/de/luya-collaboration.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ Die Arbeitsumgebung muss nun auf dein Konfiguration angepasst werden. Wechsle de
Als nächstes führen wir den `composer install` befehl aus innerhalb des dev env projekt ordners `envs/dev`. Dies wird dir alle nötigen Resourcen in den Vendor ORdner kopieren und ein PSR4 binding auf deine lokalen *LUYA* Daten.

Nun werden die Terminal-befehle `exec/migrate` und `exec/setup` ausgeführt, dazu öffnen Sie das Terminal und wechseln in das `envs/dev/public_html` Verzeichnis und führen folgende Befehle aus:
Nun werden die Terminal-befehle `migrate` und `setup` ausgeführt, dazu öffnen Sie das Terminal und wechseln in das `envs/dev/public_html` Verzeichnis und führen folgende Befehle aus:

```sh
php index.php migrate

php index.php exec/setup
php index.php setup
```

Die Datenbank-Tabellen sind nun erstellt und eine Benutzer und deren nötigen Daten wurden eingerichtet, testen Sie nun die Devs installation in dem Sie `envs/dev/public_html` im Browser öffnen.
Expand Down
4 changes: 2 additions & 2 deletions docs/guide/de/luya-console.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ Befehlsübersicht
| -------- | --------------- | --------- | ---------
|migrate |- |`migrate` |Alle Migrations-Scripte in *allen Modulen* werden ausgeführt und die Datenbank-Struktur gemäss Scripte angepasst.
|migrate/create |$tableName [, $moduleName ] |`migrate/create team_members teammodule` |Erstellt eine neue Migrationsdatei mit dem Tabellen Name `team_members` innerhalb des modules `teammodule`.
|exec/setup |- |`exec/setup` |Führ das Luya Setup aus (= Erstellt einen Benutzer, Grupppe und die nötigen Berechtiungen).
|exec/import |- |`exec/import` |1. Erneuert die Berechtiung. 2. Importierter Cms Blöck. 3. Aktualisiert Cms Layouts 4. Aktualisiert Admin Filters Sie können auch [eigene importers](app-module.md#import-methode) anhängen.
|setup |- |`setup` |Führ das Luya Setup aus (= Erstellt einen Benutzer, Grupppe und die nötigen Berechtiungen).
|import |- |`import` |1. Erneuert die Berechtiung. 2. Importierter Cms Blöck. 3. Aktualisiert Cms Layouts 4. Aktualisiert Admin Filters Sie können auch [eigene importers](app-module.md#import-methode) anhängen.
|crud/create |- |`crud/create` |Erstellt alle nötigen Daten für ein [NgRest Crud](app-admin-module-ngrest.md) mit einem Assistenten.
|module/create |- |`module/create` |Erstellt ein [Frontend/Admin Module](app-module.md) mit einem Assistenten.
|command |$moduleName, $route |`command teammodule controller/action` |Ausführen eines eigenens Konsolenbefehls.
Expand Down
2 changes: 1 addition & 1 deletion docs/guide/en/app-admin-module-ngrest.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
The `exec/crud` command will guide you trough the described steps below.
The `crud` command will guide you trough the described steps below.

1. Create Model and NG Rest Config
2. Create API Controller
Expand Down
2 changes: 1 addition & 1 deletion docs/guide/en/app-filters.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ FILTERS
Create new Filter
-----------------

Create your custom filters which will be imported during exec/import
Create your custom filters which will be imported during import

```php
<?php
Expand Down
2 changes: 1 addition & 1 deletion docs/guide/en/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ It will ask for your permissions to execute the database migrations.
now execute the php command:

```
php index.php exec/setup
php index.php setup
```

The setup proccess will ask you for an email and password to store your personal login data inside the database (of course the password will be encrypted).
Expand Down
5 changes: 2 additions & 3 deletions docs/guide/en/luya-console.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ exec
if you are creating a new project you can use the setup proccess to prefill your database (after pressql (migration) command).

```
php index.php exec/setup
php index.php setup
```

the above command will ask for an email adress and password.
Expand All @@ -50,9 +50,8 @@ the above command will ask for an email adress and password.
The import command will call the import() method inside of your Module class.

```
php index.php exec/import
php index.php import
```

A uscase for the abovce example are project(app) layouts and blocks. The importer detect layouts and blocks defined in the project and inserts those into your local database.

crud
Expand Down
17 changes: 4 additions & 13 deletions modules/admin/Module.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,20 +62,11 @@ public function registerComponents()
];
}

public function import(\luya\commands\ExecutableController $exec)
public function import(\luya\commands\ImportController $import)
{
$log = [
'filters' => [],
return [
'\\admin\\importers\\AuthImporter',
'\\admin\\importers\\FilterImporter',
];

foreach ($exec->getFilesNamespace('filters') as $filterClassName) {
if (!class_exists($filterClassName)) {
continue;
}
$object = new $filterClassName();
$log['filters'][$filterClassName] = $object->save();
}

return $log;
}
}
44 changes: 44 additions & 0 deletions modules/admin/importers/AuthImporter.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?php

namespace admin\importers;

use Yii;

class AuthImporter extends \luya\base\Importer
{
public function run()
{
$this->getImporter()->addLog('auth', 'start auth importer');
$modules = Yii::$app->getModules();
$data = [
'apis' => [],
'routes' => [],
];
foreach ($modules as $id => $item) {
$object = Yii::$app->getModule($id);
if (method_exists($object, 'getAuthApis')) {
foreach ($object->getAuthApis() as $item) {
$data['apis'][] = $item['api'];
Yii::$app->auth->addApi($object->id, $item['api'], $item['alias']);
}
}

if (method_exists($object, 'getAuthRoutes')) {
foreach ($object->getAuthRoutes() as $item) {
$data['routes'][] = $item['route'];
Yii::$app->auth->addRoute($object->id, $item['route'], $item['alias']);
}
}
}

$toClean = Yii::$app->auth->prepareCleanup($data);
if (count($toClean) > 0) {
foreach ($toClean as $rule) {
$this->getImporter()->addLog('auth', 'old auth rule: "'.$rule['alias_name'].'" in module '.$rule['module_name']. ' will be automaticaly deleted.');
//echo $this->ansiFormat('old auth rule: "'.$rule['alias_name'].'" in module '.$rule['module_name'], Console::FG_RED).PHP_EOL;
}

Yii::$app->auth->executeCleanup($toClean);
}
}
}
18 changes: 18 additions & 0 deletions modules/admin/importers/FilterImporter.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?php

namespace admin\importers;

class FilterImporter extends \luya\base\Importer
{
public function run()
{
$this->getImporter()->addLog('filters', 'start filters importer');
foreach ($this->getImporter()->getDirectoryFiles('filters') as $file) {
$filterClassName = $file['ns'];
if (class_exists($filterClassName)) {
$object = new $filterClassName();
$this->getImporter()->addLog('filters', implode(", ", $object->save()));
}
}
}
}
Loading

0 comments on commit 07a2372

Please sign in to comment.