eZ Platform で Netgen Admin UI を利用する

## Netgen Admin UI
http://www.netgenlabs.com/Blog/We-are-releasing-Netgen-Admin-UI-to-the-public
2017年6月3日に Netgen から **Negen Admin UI** が [GitHub](https://github.com/netgen/NetgenAdminUIBundle) で公開されました。
Netgen Admin UI は eZ Publish 時代から Netgen 社によって開発されてきた独自の管理画面です。
eZ Platform 1.x の管理画面は使い勝手がまだ十分でないこともあり、公開されたこのバンドルを活用するのは選択肢の一つとして検討に値するでしょう。

![netgen_admin_ui.png](https://qiita-image-store.s3.amazonaws.com/0/15175/968b4454-1bc1-9f74-3738-6ff2c80ead7c.png)


## eZ Platform
「[eZ Platform 1.10.0 インストール手順](http://qiita.com/bezeklik/items/0cb714503358461c44ab)」を参考に **eZ Platform** 本体をインストールします。

## eZ Platform Legacy Bridge
Netgen Admin UI は Legacy モードで利用するため、「[eZ Platform を Legacy モードで利用する](http://qiita.com/bezeklik/items/8725ac6ecaabe3305cd9)」を参考に **Legacy Bridge** をインストールします。

## Netgen Rich Text datatype bundle
https://github.com/netgen/NetgenRichTextDataTypeBundle

ドキュメントに記載がなくハマりましたが、Legacy ベースの Netgen Admin UI は richtext フィールドタイプに対応していないため、 Netgen Rich Text datatype bundle をインストールしてやる必要があります。

#### バンドルのインストール
```bash
composer require netgen/richtext-datatype-bundle:^1.0
```

#### バンドルの有効化
```php:app/AppKernel.php
    public function registerBundles()
    {
        $bundles = array(
...
            new Netgen\Bundle\RichTextDataTypeBundle\NetgenRichTextDataTypeBundle(),
            new AppBundle\AppBundle(),
            new eZ\Bundle\EzPublishLegacyBundle\EzPublishLegacyBundle( $this ),
        );
```

#### エクステンションの有効化 (eZ Publish Legacy)
```bash
mkdir ezpublish_legacy/settings/override
```
```ini:ezpublish_legacy/settings/override/site.ini.append.php
<?php /*

[ExtensionSettings]
ActiveExtensions[]=ezrichtext

*/ ?>
```

#### オートロードの再生成 (eZ Publish Legacy)
```bash
php app/console ezpublish:legacy:script bin/php/ezpgenerateautoloads.php
```

#### キャッシュクリア
```bash
php app/console cache:clear
```

## Netgen Admin UI
https://github.com/netgen/NetgenAdminUIBundle/blob/master/INSTALL.md

#### バンドルの有効化
```php:app/AppKernel.php
    public function registerBundles()
    {
        $bundles = array(
...
            new eZ\Bundle\EzPublishLegacyBundle\EzPublishLegacyBundle( $this ),
            new Lolautruche\EzCoreExtraBundle\EzCoreExtraBundle(),
            new Netgen\Bundle\AdminUIBundle\NetgenAdminUIBundle(),
        );
```

#### ルーティングのインポート
```yaml:app/config/routing.yml
_netgen_admin_ui:
    resource: "@NetgenAdminUIBundle/Resources/config/routing.yml"
```

#### エクステンションの有効化 (eZ Publish Legacy)
```ini:ezpublish_legacy/settings/override/site.ini.append.php
<?php /*

[ExtensionSettings]
ActiveExtensions[]=ngadminui
ActiveExtensions[]=ngsymfonytools
ActiveExtensions[]=ezdemo
ActiveExtensions[]=ezjscore
ActiveExtensions[]=ezoe
ActiveExtensions[]=ezrichtext

[SiteAccessSettings]
AvailableSiteAccessList[]=ngadminui
CheckValidity=false

*/ ?>
```

#### インストール
```bash
composer require netgen/admin-ui-bundle:^2.0
php app/console ngadminui:install
```

```yaml:app/config/ezplatform.yml
imports:
    - { resource: ngadminui.yml }
```

#### オートロードの再生成 (eZ Publish Legacy)
```bash
php app/console ezpublish:legacy:script bin/php/ezpgenerateautoloads.php
```

#### キャッシュクリア
```bash
php app/console e:l:s bin/php/ezcache.php --allow-root-user --clear-all --purge
php app/console c:c
```

#### パーミッション設定 [^permissions]
[^permissions]: https://doc.ez.no/display/EZP/Installing+eZ+Publish+on+a+Linux-UNIX+based+system#InstallingeZPublishonaLinux-UNIXbasedsystem-SettingupfolderpermissionYellow5.x
```bash
chown -R apache. ezpublish_legacy/{design,extension,settings,var}
find ezpublish_legacy/{design,extension,settings,var} -type d | xargs chmod -R 775
find ezpublish_legacy/{design,extension,settings,var} -type f | xargs chmod -R 664
```