Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et
- dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
- ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
- fugiat nulla pariatur.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et
- dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
- ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
- fugiat nulla pariatur.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et
- dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
- ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
- fugiat nulla pariatur.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et
- dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
- ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
- fugiat nulla pariatur.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et
- dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
- ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
- fugiat nulla pariatur.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et
- dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
- ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
- fugiat nulla pariatur.
- Thank you for contacting us. We will respond to you as soon as possible.
-
-
-
- Note that if you turn on the Yii debugger, you should be able
- to view the mail message on the mail panel of the debugger.
- mailer->useFileTransport): ?>
- Because the application is in development mode, the email is not sent but saved as
- a file under = Yii::getAlias(Yii::$app->mailer->fileTransportPath) ?>.
- Please configure the useFileTransport property of the mail
- application component to be false to enable email sending.
-
-
-
-
-
-
- If you have business inquiries or other questions, please fill out the following form to contact us. Thank you.
-
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et
- dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
- ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
- fugiat nulla pariatur.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et
- dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
- ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
- fugiat nulla pariatur.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et
- dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
- ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
- fugiat nulla pariatur.
Este mensaje te permite visitar nuestro sitio con un sólo click
+= Html::a('Ve a la página principal', Url::home('http')) ?>
+```
+
+Para componer el contenido del mensaje utilizando un archivo, simplemente pasa el nombre de la vista al método `compose()`:
+
+```php
+Yii::$app->mailer->compose('home-link') // el resultado del renderizado de la vista se transforma en el cuerpo del mensaje aquí
+ ->setFrom('from@domain.com')
+ ->setTo('to@domain.com')
+ ->setSubject('Asunto del mensaje')
+ ->send();
+```
+
+Puedes pasarle parámetros adicionales a la vista en el método `compose()`, los cuales estarán disponibles dentro de las vistas:
+
+```php
+Yii::$app->mailer->compose('greetings', [
+ 'user' => Yii::$app->user->identity,
+ 'advertisement' => $adContent,
+]);
+```
+
+Puedes especificar diferentes archivos de vista para el contenido del mensaje en HTML y texto plano:
+
+```php
+Yii::$app->mailer->compose([
+ 'html' => 'contact-html',
+ 'text' => 'contact-text',
+]);
+```
+
+Si especificas el nombre de la vista como un string, el resultado de su renderización será utilizado como cuerpo HTML, mientras
+que el cuerpo en texto plano será compuesto removiendo todas las entidades HTML del anterior.
+
+El resultado de la renderización de la vista puede ser envuelta en el layout, que puede ser definido utiliazando [[yii\mail\BaseMailer::htmlLayout]]
+y [[yii\mail\BaseMailer::textLayout]]. Esto funciona igual a como funcionan los layouts en una aplicación web normal.
+El layout puede utilizar estilos CSS u otros contenidos compartidos:
+
+```php
+
+beginPage() ?>
+
+
+
+
+
+ head() ?>
+
+
+ beginBody() ?>
+ = $content ?>
+
+ endBody() ?>
+
+
+endPage() ?>
+```
+
+
+Adjuntar archivos
+-----------------
+
+Puedes adjuntar archivos al mensaje utilizando los métodos `attach()` y `attachContent()`:
+
+```php
+$message = Yii::$app->mailer->compose();
+
+// Adjunta un archivo del sistema local de archivos:
+$message->attach('/path/to/file.pdf');
+
+// Crear adjuntos sobre la marcha
+$message->attachContent('Contenido adjunto', ['fileName' => 'attach.txt', 'contentType' => 'text/plain']);
+```
+
+
+Incrustar imágenes
+------------------
+
+Puedes incrustar imágenes en el mensaje utilizando el método `embed()`. Este método devuelve el id del adjunto,
+que debería ser utilizado como tag 'img'.
+Este método es fácil de utilizar al componer mensajes a través de un archivo de vista:
+
+```php
+Yii::$app->mailer->compose('embed-email', ['imageFileName' => '/path/to/image.jpg'])
+ // ...
+ ->send();
+```
+
+Entonces, dentro de tu archivo de vista, puedes utilizar el siguiente código:
+
+```php
+
+```
+
+
+Testear y depurar
+-----------------
+
+Un desarrollador a menudo necesita comprobar qué emails están siendo enviados por la aplicación, cuál es su contenido y otras cosas.
+Yii concede dicha habilidad vía `yii\mail\BaseMailer::useFileTransport`. Si se habilita, esta opción hace que
+los datos del mensaje sean guardados en archivos locales en vez de enviados. Esos archivos serán guardados bajo
+`yii\mail\BaseMailer::fileTransportPath`, que por defecto es '@runtime/mail'.
+
+> Note: puedes o bien guardar los mensajes en archivos, o enviarlos a sus receptores correspondientes, pero no puedes hacer las dos cosas al mismo tiempo.
+
+Un archivo de mensaje puede ser abierto por un editor de texto común, de modo que puedas ver sus cabeceras, su contenido y demás.
+Este mecanismo en sí puede comprobarse al depurar la aplicación o al ejecutar un test de unidad.
+
+> Note: el archivo de contenido de mensaje es compuesto vía `\yii\mail\MessageInterface::toString()`, por lo que depende de la extensión
+ actual de correo utilizada en tu aplicación.
+
+
+Crear tu solución personalizada de correo
+-----------------------------------------
+
+Para crear tu propia solución de correo, necesitas crear 2 clases: una para 'Mailer' y
+otra para 'Message'.
+Puedes utilizar `yii\mail\BaseMailer` y `yii\mail\BaseMessage` como clases base de tu solución. Estas clases
+ya contienen un lógica básica, la cual se describe en esta guía. De cualquier modo, su utilización no es obligatoria, es suficiente
+con implementar las interfaces `yii\mail\MailerInterface` y `yii\mail\MessageInterface`.
+Luego necesitas implementar todos los métodos abstractos para construir tu solución.
diff --git a/docs/guide-es/tutorial-start-from-scratch.md b/docs/guide-es/tutorial-start-from-scratch.md
new file mode 100644
index 0000000000..cd810fff00
--- /dev/null
+++ b/docs/guide-es/tutorial-start-from-scratch.md
@@ -0,0 +1,55 @@
+Crear tu propia estructura de Aplicación
+========================================
+
+> Note: Esta sección se encuentra en desarrollo.
+
+Mientras que los templates de proyectos [basic](https://github.com/yiisoft/yii2-app-basic) y [advanced](https://github.com/yiisoft/yii2-app-advanced)
+son grandiosos para la mayoría de tus necesidades, podrías querer crear tu propio template de proyecto del cual
+partir todos tus proyectos.
+
+Los templates de proyectos en Yii son simplemente repositorios conteniendo un archivo `composer.json`, y registrado como un paquete de Composer.
+Cualquier repositorio puede ser identificado como paquete Composer, haciéndolo instalable a través del comando de Composer `create-project`.
+
+Dado que es un poco demasiado comenzar tu template de proyecto desde cero, es mejor utilizar uno de los
+templates incorporados como una base. Utilicemos el template básico aquí.
+
+Clonar el Template Básico
+-------------------------
+
+El primer paso es clonar el template básico de Yii desde su repositorio Git:
+
+```bash
+git clone git@github.com:yiisoft/yii2-app-basic.git
+```
+
+Entonces espera que el repositorio sea descargado a tu computadora. Dado que los cambios realizados al template no serán enviados al repositorio, puedes eliminar el directorio `.git`
+y todo su contenido de la descarga.
+
+Modificar los Archivos
+----------------------
+
+A continuación, querrás modificar el archivo `composer.json` para que refleje tu template. Cambia los valores de `name`, `description`, `keywords`, `homepage`, `license`, y `support`
+de forma que describa tu nuevo template. También ajusta las opciones `require`, `require-dev`, `suggest`, y demás para que encajen con los requerimientos de tu template.
+
+> Note: En el archivo `composer.json`, utiliza el parámetro `writable` (bajo `extra`) para especificar
+> permisos-por-archivo a ser definidos después de que la aplicación es creada a partir del template.
+
+Luego, pasa a modificar la estructura y contenido de la aplicación como te gustaría que sea por defecto. Finalmente, actualiza el archivo README para que sea aplicable a tu template.
+
+Hacer un Paquete
+----------------
+
+Con el template definido, crea un repositorio Git a partir de él, y sube tus archivos ahí. Si tu template va a ser de código abierto, [Github](http://github.com) es el mejor lugar para alojarlo. Si tu intención es que el template no sea colaborativo, cualquier sitio de repositorios Git servirá.
+
+Ahora, necesitas registrar tu paquete para Composer. Para templates públicos, el paquete debe ser registrado en [Packagist](https://packagist.org/).
+Para templates privados, es un poco más complicado registrarlo. Puedes ver instrucciones para hacerlo en la [documentación de Composer](https://getcomposer.org/doc/05-repositories.md#hosting-your-own).
+
+Utilizar el Template
+--------------------
+
+Eso es todo lo que se necesita para crear un nuevo template de proyecto Yii. Ahora puedes crear tus propios proyectos a partir de este template:
+
+```
+composer global require "fxp/composer-asset-plugin:~1.1.1"
+composer create-project --prefer-dist --stability=dev mysoft/yii2-app-coolone new-project
+```
diff --git a/docs/guide-es/tutorial-template-engines.md b/docs/guide-es/tutorial-template-engines.md
new file mode 100644
index 0000000000..addcf8ff50
--- /dev/null
+++ b/docs/guide-es/tutorial-template-engines.md
@@ -0,0 +1,49 @@
+Usar motores de plantillas
+==========================
+
+Por defecto, Yii utiliza PHP como su lenguaje de plantilla, pero puedes configurar Yii para que soporte otros motores de renderizado, tal como
+[Twig](http://twig.sensiolabs.org/) o [Smarty](http://www.smarty.net/), disponibles como extensiones.
+
+El componente `view` es el responsable de renderizar las vistas. Puedes agregar un motor de plantillas personalizado reconfigurando
+el comportamiento (behavior) de este componente:
+
+```php
+[
+ 'components' => [
+ 'view' => [
+ 'class' => 'yii\web\View',
+ 'renderers' => [
+ 'tpl' => [
+ 'class' => 'yii\smarty\ViewRenderer',
+ //'cachePath' => '@runtime/Smarty/cache',
+ ],
+ 'twig' => [
+ 'class' => 'yii\twig\ViewRenderer',
+ 'cachePath' => '@runtime/Twig/cache',
+ // Array de opciones de Twig:
+ 'options' => [
+ 'auto_reload' => true,
+ ],
+ 'globals' => ['html' => '\yii\helpers\Html'],
+ 'uses' => ['yii\bootstrap'],
+ ],
+ // ...
+ ],
+ ],
+ ],
+]
+```
+
+En el código de arriba, tanto Smarty como Twig son configurados para ser utilizables por los archivos de vista. Pero para tener ambas extensiones en tu proyecto, también necesitas modificar
+tu archivo `composer.json` para incluirlos:
+
+```
+"yiisoft/yii2-smarty": "*",
+"yiisoft/yii2-twig": "*",
+```
+Ese código será agregado a la sección `require` de `composer.json`. Después de realizar ese cambio y guardar el archivo, puedes instalar estas extensiones ejecutando `composer update --prefer-dist` en la línea de comandos.
+
+Para más detalles acerca del uso concreto de cada motor de plantillas, visita su documentación:
+
+- [Guía de Twig](https://github.com/yiisoft/yii2-twig/tree/master/docs/guide)
+- [Guía de Smarty](https://github.com/yiisoft/yii2-smarty/tree/master/docs/guide)
diff --git a/docs/guide-es/tutorial-yii-integration.md b/docs/guide-es/tutorial-yii-integration.md
index a5864854a3..20739f1918 100644
--- a/docs/guide-es/tutorial-yii-integration.md
+++ b/docs/guide-es/tutorial-yii-integration.md
@@ -1,23 +1,27 @@
-Trabajando con código de terceros
-=================================
+Trabajar con código de terceros
+===============================
-De tiempo en tiempo, puede necesitar usar algún código de terceros en sus aplicaciones Yii. O puedes querer usar Yii como una librería en otros sistemas de terceros. En esta sección, te enseñaremos cómo conseguir estos objetivos.
+De tiempo en tiempo, puede necesitar usar algún código de terceros en sus aplicaciones Yii. O puedes querer
+utilizar Yii como una librería en otros sistemas de terceros. En esta sección, te enseñaremos cómo conseguir estos objetivos.
-## Usando librerías de terceros en Yii
-
-Para usar una librería en una aplicación Yii, primeramente debes de asegurarte que las clases een la librería son incluidas adecuadamente o pueden ser cargadas de forma automática.
+Utilizar librerías de terceros en Yii
+-------------------------------------
+Para usar una librería en una aplicación Yii, primeramente debes de asegurarte que las clases en la librería
+son incluidas adecuadamente o pueden ser cargadas de forma automática.
### Usando Paquetes de Composer
Muchas librerías de terceros son liberadas en términos de paquetes [Composer](https://getcomposer.org/).
-Puedes instalar este tipo de librerias siguiendo dos sencillos pasos:
+Puedes instalar este tipo de librerías siguiendo dos sencillos pasos:
1. modificar el fichero `composer.json` de tu aplicación y especificar que paquetes Composer quieres instalar.
-2. ejecuta `composer install` para instalar los paquetes específicados.
+2. ejecuta `composer install` para instalar los paquetes especificados.
-Las clases en los paquetes Composer instalados pueden ser autocargados usando el cargador automatizado de Composer autoloader. Asegúrate que el fichero [script de entrada](structure-entry-scripts.md) de tu aplicación contiene las siguientes líneas para instalar el cargador automático de Composer:
+Las clases en los paquetes Composer instalados pueden ser autocargados usando el cargador automatizado de Composer autoloader.
+Asegúrate que el fichero [script de entrada](structure-entry-scripts.md) de tu aplicación contiene las siguientes líneas
+para instalar el cargador automático de Composer:
```php
// instalar el cargador automático de Composer
@@ -27,15 +31,21 @@ require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
```
-
### Usando librerías Descargadas
Si la librería no es liberada como un paquete de Composer, debes de seguir sus instrucciones de instalación para instalarla.
-En muchos casos, puedes necesitar descargar manualmente el fichero de la versión y desempaquetarlo en el directorio `BasePath/vendor` , donde `BasePath` representa el [camino base (base path)](structure-applications.md#basePath) de tu aplicación.
+En muchos casos, puedes necesitar descargar manualmente el fichero de la versión y desempaquetarlo en el directorio `BasePath/vendor`,
+donde `BasePath` representa el [camino base (base path)](structure-applications.md#basePath) de tu aplicación.
-Si la librería lleva su propio cargador automático (autoloader), puedes instalarlo en [script de entrada](structure-entry-scripts.md) de tu aplicación. Es recomendable que la instalación se termine antes de incluir el fichero `Yii.php` de forma que el cargador automático tenga precedencia al cargar de forma automática las clases.
+Si la librería lleva su propio cargador automático (autoloader), puedes instalarlo en [script de entrada](structure-entry-scripts.md) de tu aplicación.
+Es recomendable que la instalación se termine antes de incluir el fichero `Yii.php` de forma que el cargador automático tenga precedencia al cargar
+de forma automática las clases.
-Si la librería no provee un cargador automático de clases, pero la denominación de sus clases sigue el [PSR-4](http://www.php-fig.org/psr/psr-4/), puedes usar el cargador automático de Yii para cargar de forma automática las clases. Todo lo que necesitas es declarar un [alias raiz](concept-aliases.md#defining-aliases) para cada espacio de nombres (namespace) raiz usado en sus clases. Por ejemplo, asume que has instalado una librería en el directorio `vendor/foo/bar`, y que las clases de la librería están bajo el espacio de nombres raiz `xyz`. Puedes incluir el siguiente código en la configuración de tu aplicación:
+Si la librería no provee un cargador automático de clases, pero la denominación de sus clases sigue el [PSR-4](http://www.php-fig.org/psr/psr-4/),
+puedes usar el cargador automático de Yii para cargar de forma automática las clases. Todo lo que necesitas
+es declarar un [alias raíz](concept-aliases.md#defining-aliases) para cada espacio de nombres (namespace) raiz usado en sus clases. Por ejemplo,
+asume que has instalado una librería en el directorio `vendor/foo/bar`, y que las clases de la librería están bajo el espacio de nombres raiz `xyz`.
+Puedes incluir el siguiente código en la configuración de tu aplicación:
```php
[
@@ -45,30 +55,61 @@ Si la librería no provee un cargador automático de clases, pero la denominaci
]
```
-Si ninguno de lo anterior es el caso, estaría bien que la librería dependa del camino de inclusión (include path) de configuración de PHP para localizar correctamente e incluir los ficheros de las clases. Simplemente siguiendo estas instrucciones de cómo configurar el camino de inclusión de PHP.
+Si ninguno de lo anterior es el caso, estaría bien que la librería dependa del camino de inclusión (include path) de configuración de PHP
+para localizar correctamente e incluir los ficheros de las clases. Simplemente siguiendo estas instrucciones de cómo configurar el camino de inclusión de PHP.
-En el caso más grave en el que la librería necesite incluir cada uno de sus ficheros de clases, puedes usar el siguiente método para incluir las clases según se pidan:
+En el caso más grave en el que la librería necesite incluir cada uno de sus ficheros de clases, puedes usar el siguiente método
+para incluir las clases según se pidan:
* Identificar que clases contiene la librería.
-* Listar las clases y el camino a los ficheros correspondientes en `Yii::$classMap` en el script de entrada [script de entrada](structure-entry-scripts.md) de la aplicación. Por ejemplo,
+* Listar las clases y el camino a los archivos correspondientes en `Yii::$classMap` en el script de entrada [script de entrada](structure-entry-scripts.md)
+ de la aplicación. Por ejemplo,
```php
Yii::$classMap['Class1'] = 'path/to/Class1.php';
Yii::$classMap['Class2'] = 'path/to/Class2.php';
```
-## Usando Yii en Sistemas de Terceros
+Utilizar Yii en Sistemas de Terceros
+------------------------------------
-Debido a que Yii provee muchas posibilidades excelentes, a veces puedes querer usar alguna de sus características para permitir el desarrollo o mejora de sistemas de terceros, como es WordPress, Joomla, o aplicaciones desarrolladas usando otros frameworks de PHP. Por ejemplo, puedes queres usar la clase [[yii\helpers\ArrayHelper]] o usar la característica [Active Record](db-active-record.md) en un sistema de terceros. Para lograr este objetivo, principalmente necesitas realizar dos pasos: instalar Yii , e iniciar Yii.
+Debido a que Yii provee muchas posibilidades excelentes, a veces puedes querer usar alguna de sus características para permitir
+el desarrollo o mejora de sistemas de terceros, como es WordPress, Joomla, o aplicaciones desarrolladas usando otros frameworks de PHP.
+Por ejemplo, puedes querer utilizar la clase [[yii\helpers\ArrayHelper]] o usar la característica [Active Record](db-active-record.md)
+en un sistema de terceros. Para lograr este objetivo, principalmente necesitas realizar dos pasos:
+instalar Yii , e iniciar Yii.
-Si el sistema de terceros usa Composer para manejar sus dependencias, simplemente ejecuta estos comandos para instalar Yii:
+Si el sistema de terceros usa Composer para manejar sus dependencias, simplemente ejecuta estos comandos
+para instalar Yii:
-```
-composer require "yiisoft/yii2:*"
-composer install
+ composer global require "fxp/composer-asset-plugin:~1.1.1"
+ composer require yiisoft/yii2
+ composer install
+
+El primer comando instala el [composer asset plugin](https://github.com/francoispluchino/composer-asset-plugin/),
+que permite administrar paquetes bower y npm a través de Composer. Incluso si sólo quieres utilizar la capa de base de datos
+u otra característica de Yii no relacionada a assets, requiere que instales el paquete composer de Yii.
+
+Si quieres utilizar la [publicación de Assets de Yii](structure-assets.md) deberías agregar también la siguiente configuración
+a la sección `extra` de tu `composer.json`:
+
+```json
+{
+ ...
+ "extra": {
+ "asset-installer-paths": {
+ "npm-asset-library": "vendor/npm",
+ "bower-asset-library": "vendor/bower"
+ }
+ }
+}
```
-En otro caso, puedes [descargar](http://www.yiiframework.com/download/) el fichero de la edición de Yii y desempaquetarla en el directorio `BasePath/vendor`.
+Visita también la [sección de cómo instalar Yii](start-installation.md#installing-via-composer) para más información
+sobre Composer y sobre cómo solucionar posibles problemas que surjan durante la instalación.
+
+En otro caso, puedes [descargar](http://www.yiiframework.com/download/) el archivo de la edición de Yii
+y desempaquetarla en el directorio `BasePath/vendor`.
Después, debes de modificar el script de entrada de sistema de terceros para incluir el siguiente código al principio:
@@ -79,24 +120,32 @@ $yiiConfig = require(__DIR__ . '/../config/yii/web.php');
new yii\web\Application($yiiConfig); // No ejecutes run() aquí
```
-Como puedes ver, el código anterior es muy similar al que puedes ver en [script de entrada](structure-entry-scripts.md) de una aplicación típica. La única diferencia es que después de que se crea la instancia de la aplicación, el método `run()` no es llamado. Esto es así porque llamando a `run()`, Yii se haría cargo del control del flujo de trabajo del manejo de las peticiones, lo cual no es necesario en este caso por estar ya es manejado por la aplicación existente.
+Como puedes ver, el código anterior es muy similar al que puedes ver en [script de entrada](structure-entry-scripts.md)
+de una aplicación típica. La única diferencia es que después de que se crea la instancia de la aplicación, el método `run()` no es llamado.
+Esto es así porque llamando a `run()`, Yii se haría cargo del control del flujo de trabajo del manejo de las peticiones,
+lo cual no es necesario en este caso por estar ya es manejado por la aplicación existente.
-Como en una aplicación Yii, debes configurar la instancia de la aplicación basándose en el entorno que se está ejecutando del sistema de terceros. Por ejemplo, para usar la característica [Active Record](db-active-record.md) , necesitas configurar `db` [componente de la aplicación](structure-application-components.md) con los parámetros de la conexión de base de datos usados por el sistema de terceros.
+Como en una aplicación Yii, debes configurar la instancia de la aplicación basándose en el entorno que se está
+ejecutando del sistema de terceros. Por ejemplo, para usar la característica [Active Record](db-active-record.md), necesitas configurar
+el [componente de la aplicación](structure-application-components.md) `db` con los parámetros de la conexión a la BD del sistema de terceros.
-Ahora puedes usar muchas características provistas por Yii. Por ejemplo, puedes crear clases Active Record y usarlas para trabajar con bases de datos.
+Ahora puedes usar muchas características provistas por Yii. Por ejemplo, puedes crear clases Active Record y usarlas
+para trabajar con bases de datos.
-## Usando Yii 2 con Yii 1
-
-Si estaba usando Yii 1 previamente, es como si tuvieras una aplicación Yii 1 funcionando. En vez de reescribir toda la aplicación en Yii 2, puedes solamente mejorarla usando alguna de las características sólo disponibles en Yii 2.
+Utilizar Yii 2 con Yii 1
+------------------------
+Si estaba usando Yii 1 previamente, es como si tuvieras una aplicación Yii 1 funcionando. En vez de reescribir
+toda la aplicación en Yii 2, puedes solamente mejorarla usando alguna de las características sólo disponibles en Yii 2.
Esto se puede lograr tal y como se describe abajo.
-> Nota: Yii 2 requiere PHP 5.4 o superior. Debes de estar seguro que tanto tu servidor como la aplicación existente lo soportan.
+> Note: Yii 2 requiere PHP 5.4 o superior. Debes de estar seguro que tanto tu servidor como la aplicación
+> existente lo soportan.
Primero, instala Yii 2 en tu aplicación siguiendo las instrucciones descritas en la [última subsección](#using-yii-in-others).
-Segundo,modifica el script de entrada de la aplicación como sigue,
+Segundo, modifica el script de entrada de la aplicación como sigue,
```php
// incluir la clase Yii personalizada descrita debajo
@@ -112,7 +161,6 @@ Yii::createWebApplication($yii1Config)->run();
```
Debido a que ambos Yii 1 y Yii 2 tiene la clase `Yii` , debes crear una versión personalizada para combinarlas.
-
El código anterior incluye el fichero con la clase `Yii` personalizada, que tiene que ser creada como sigue.
```php
@@ -128,15 +176,17 @@ class Yii extends \yii\BaseYii
}
Yii::$classMap = include($yii2path . '/classes.php');
-// registrar el autoloader de Yii2 autoloader via Yii1
+// registrar el autoloader de Yii 2 vía Yii 1
Yii::registerAutoloader(['Yii', 'autoload']);
// crear el contenedor de inyección de dependencia
Yii::$container = new yii\di\Container;
```
-¡Esto es todo!. Ahora, en cualquier parte de tu código, puedes usar `Yii::$app` para acceder a la instancia de la aplicación de Yii 2, mientras `Yii::app()` proporciona la instancia de la aplicación de Yii 1 :
+¡Esto es todo!. Ahora, en cualquier parte de tu código, puedes usar `Yii::$app` para acceder a la instancia de la aplicación de Yii 2,
+mientras `Yii::app()` proporciona la instancia de la aplicación de Yii 1 :
```php
echo get_class(Yii::app()); // genera 'CWebApplication'
echo get_class(Yii::$app); // genera 'yii\web\Application'
```
+
diff --git a/docs/guide-es/widget-bootstrap.md b/docs/guide-es/widget-bootstrap.md
deleted file mode 100644
index 5672a199dc..0000000000
--- a/docs/guide-es/widget-bootstrap.md
+++ /dev/null
@@ -1,63 +0,0 @@
-Widgets de Bootstrap
-====================
-
-> Nota: Esta sección está bajo desarrollo.
-
-Yii incluye soporta las marcas y componentes del framework [Bootstrap 3](http://getbootstrap.com/) (también conocido como "Twitter Bootstrap"). Bootstrap es un excelente, adaptable framework que puede aumentar la velocidad de desarrollo de los procesos del lado del cliente.
-
-El núcleo de Bootstrap está representado en dos partes:
-
-- Elementos básicos de CSS, como son un sistema de diseño en formato cuadrícula , tipografía, clases de ayuda (helpers), y utilidades adaptables(responsive).
-
-- Componentes preparados para su uso, tales como formularios, menús, paginación, cajas modales, pestañas, etc
-
-Elementos básicos
------------------
-
-Yii no hace uso de elementos básicos de boostrap en el código PHP ya que HTML es muy simple por sí mismo, en este caso. Puedes encontrar detalle del uso de estos elementos básicos en [sitio web de la documentación de bootstrap](http://getbootstrap.com/css/). Aún así Yii provee una manera conveniente de incluir los elementos básicos de los recursos de bootstrap en tus páginas con una simple línea añadida a `AppAsset.php` localizada en tu directorio `@app/assets` :
-
-```php
-public $depends = [
- 'yii\web\YiiAsset',
- 'yii\bootstrap\BootstrapAsset', // Esta línea
-];
-```
-
-Usar bootstrap a través de el gestor de recursos Yii te permite minimizar estos recursos y combinar con tus propios recursos cuando sea necesario..
-
-Widgets de Yii
---------------
-
-Componentes más complejos de bootstrap components están envueltos dentro de widgets de Yii para permitir una sintaxis más robusta e integrar con las posibilidades y características del framework. Todos los widgets pertenecen al espacio de nombres `\yii\bootstrap` :
-
-- [[yii\bootstrap\ActiveForm|ActiveForm]]
-- [[yii\bootstrap\Alert|Alert]]
-- [[yii\bootstrap\Button|Button]]
-- [[yii\bootstrap\ButtonDropdown|ButtonDropdown]]
-- [[yii\bootstrap\ButtonGroup|ButtonGroup]]
-- [[yii\bootstrap\Carousel|Carousel]]
-- [[yii\bootstrap\Collapse|Collapse]]
-- [[yii\bootstrap\Dropdown|Dropdown]]
-- [[yii\bootstrap\Modal|Modal]]
-- [[yii\bootstrap\Nav|Nav]]
-- [[yii\bootstrap\NavBar|NavBar]]
-- [[yii\bootstrap\Progress|Progress]]
-- [[yii\bootstrap\Tabs|Tabs]]
-
-
-Usando los ficheros .less de Bootstrap directamente
----------------------------------------------------
-
-Si quieres incluir el [CSS Bootstrap directamente en tus ficheros less](http://getbootstrap.com/getting-started/#customizing) puedes necesitar desactivar la carga los ficheros css originales de bootstrap.
-Esto lo puedes hacer poniendo la propiedad css de [[yii\bootstrap\BootstrapAsset|BootstrapAsset]] vacía.
-Para esto necesitas configurar el `assetManager` [componente de la aplicación](structure-application-components.md) como sigue:
-
-```php
- 'assetManager' => [
- 'bundles' => [
- 'yii\bootstrap\BootstrapAsset' => [
- 'css' => [],
- ]
- ]
- ]
-```
diff --git a/docs/guide-es/widget-jui.md b/docs/guide-es/widget-jui.md
deleted file mode 100644
index d42bf1f322..0000000000
--- a/docs/guide-es/widget-jui.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Widgets de Jquery UI
-====================
-
-> Nota: Esta sección está en desarrollo.
-
-Además de lo anterior, Yii incluye soporte para la librería jquery [jQuery UI](http://api.jqueryui.com/). jQuery UI es un probado conjunto de interacciones con el interface de usuario, efectos, widgets, y temas sobre la librería JavaScript de jquery.
-
-widgets de Yii
---------------
-
-Los componentes más complejos de jQuery UI están envueltos dentro de los widgets de Yii para permitir una sintaxis más robusta e integralas con las características del framework. Todos los widgets pertenecen al espacio de nombre `\yii\jui` :
-
-- [[yii\jui\Accordion|Accordion]]
-- [[yii\jui\AutoComplete|AutoComplete]]
-- [[yii\jui\DatePicker|DatePicker]]
-- [[yii\jui\Dialog|Dialog]]
-- [[yii\jui\Draggable|Draggable]]
-- [[yii\jui\Droppable|Droppable]]
-- [[yii\jui\Menu|Menu]]
-- [[yii\jui\ProgressBar|ProgressBar]]
-- [[yii\jui\Resizable|Resizable]]
-- [[yii\jui\Selectable|Selectable]]
-- [[yii\jui\Slider|Slider]]
-- [[yii\jui\SliderInput|SliderInput]]
-- [[yii\jui\Sortable|Sortable]]
-- [[yii\jui\Spinner|Spinner]]
-- [[yii\jui\Tabs|Tabs]]
\ No newline at end of file
diff --git a/docs/guide-fr/concept-aliases.md b/docs/guide-fr/concept-aliases.md
new file mode 100644
index 0000000000..fc20fdd59f
--- /dev/null
+++ b/docs/guide-fr/concept-aliases.md
@@ -0,0 +1,106 @@
+Les Alias
+=========
+Les alias sont utilisés pour représenter des chemins de fichier ou des URLs de sorte que vous n'ayez pas à spécifier des chemins ou des URLs explicitement dans votre projet. Un alias doit commencer par le caractère `@` de façon à le différencier des chemins de fichiers habituels et des URLs. Yii dispose déjà d'un nombre important d'alias prédéfinis. Par exemple, l'alias `@yii` représéente le chemin d'installation du framework Yii; `@web` représente l'URL de base pour l'application web courante.
+
+
+
+Définir des alias
+-----------------
+
+Vous pouvez définir un alias soit pour un chemin de fichier ou pour une URL en appelant [[Yii::setAlias()]]:
+
+```php
+// un alias pour un chemin de fichier
+Yii::setAlias('@foo', '/path/to/foo');
+
+// un alias pour une URL
+Yii::setAlias('@bar', 'http://www.example.com');
+```
+> Note: le chemin de fichier ou l'URL cible de l'alias *ne* doit *pas* nécessairement référencer un fichier ou une ressource existante.
+
+Etant donné un alias défini, il est possible de faire dériver un nouvel alias (sans appeler la commande [[Yii::setAlias()]]) en ajoutant une barre oblique `/` suivi d'un ou de plusieurs segments de chemin de fichier. Les alias définis via la commande [[Yii::setAlias()]] sont des *alias racines*, les alias qui en dérivent sont des *alias dérivés*. Par example, `@foo` est un alias racine, tandis que `@foo/bar/file.php` est un alias dérivé.
+
+Il est possible de définir une alias en utilisant un autre alias (qu'il soit racine ou dérivé):
+
+```php
+Yii::setAlias('@foobar', '@foo/bar');
+```
+
+Les alias racines sont habituellement définit pendant l'étape d'[amorçage](runtime-bootstrapping.md). Vous pouvez par exemple appeler la commande [[Yii::setAlias()]] dans le [script d'entrée](structure-entry-scripts.md). Pour plus de commodité, [Application](structure-applications.md) propose une propriété modifiable appelée `aliases` que vous pouvez définir dans la [configuration](concept-configurations.md) de l'application:
+
+```php
+return [
+ // ...
+ 'aliases' => [
+ '@foo' => '/chemin/vers/foo',
+ '@bar' => 'http://www.example.com',
+ ],
+];
+```
+
+Résolution des alias
+--------------------
+
+Vous pouvez appeler la méthode [[Yii::getAlias()]] pour obtenir le chemin de fichier ou l'URL qu'un alias représente. La même méthode peut aussi convertir des alias dérivés dans leur chemin de fichier ou URL correspondants:
+
+```php
+echo Yii::getAlias('@foo'); // displays: /path/to/foo
+echo Yii::getAlias('@bar'); // displays: http://www.example.com
+echo Yii::getAlias('@foo/bar/file.php'); // displays: /path/to/foo/bar/file.php
+```
+
+Le chemin/URL représenté par un alias dérivé est déterminé en renplaçant la partie alias racine avec son chemain/URL correspondant dans l'alias dérivé.
+> Note: La méthode [[Yii::getAlias()]] ne vérifie pas si le chemin/URL obtenu représente un fichier ou une ressource existante.
+
+Un alias racine peut également conctenir des barres obliques `/`. La méthode [[Yii::getAlias()]] est suffisement intelligeante pour déterminer quelle part de l'alias est un alias racine et donc détermine correctement le chemin de fichier ou l'url correspondant:
+
+```php
+Yii::setAlias('@foo', '/chemin/vers/foo');
+Yii::setAlias('@foo/bar', '/chemin2/bar');
+Yii::getAlias('@foo/test/file.php'); // affiche /chemin/vers/foo/test/file.php
+Yii::getAlias('@foo/bar/file.php'); // affiche /chemin2/bar/file.php
+```
+
+Si `@foo/bar` n'est pas défini comme un alias racine, le dernier exemple affichierait `/chemin/vers/foo/bar/file.php`.
+
+
+Utilisation des alias
+----------------------
+
+Les alias sont reconnus en de nombreux endroits de Yii sans avoir besoin d'appeler la méthode [[Yii::getAlias()]] pour les convertir en chemin ou URLs. A titre d'exemple, la méthode [[yii\caching\FileCache::cachePath]] accepte aussi bien un chemin de fichier et un alias représentant un chemin de fichier, grâce au préfixe `@` qui permet de différencier le chemin de fichier d'un alias.
+
+```php
+use yii\caching\FileCache;
+
+$cache = new FileCache([
+ 'cachePath' => '@runtime/cache',
+]);
+```
+Merci de porter attention à la documentation de l'API pour vérifier si une propriété ou un paramètre d'une méthode supporte les alias.
+
+
+Alias prédéfinis
+----------------
+Yii définit une série d'alias pour faciliter le référencement des chemins de fichier et URLs souvent utilisés:
+
+- `@yii`, le répertoire où se situe le fichier `BaseYii.php` (aussi appelé le répertoire framework).
+- `@app`, le [[yii\base\Application::basePath|chemin de base]] de l'application courante.
+- `@runtime`, le [[yii\base\Application::runtimePath|le chemin d'exécution]] de l'application courante. Valeur par défaut: `@app/runtime`.
+- `@webroot`, La répertoire web racine de l'application web courante. It is determined based on the directory
+ containing the [entry script](structure-entry-scripts.md).
+- `@web`, l'url de base de l'application courante. Cet alias a la même valeur que la propriété [[yii\web\Request::baseUrl]].
+- `@vendor`, le [[yii\base\Application::vendorPath|Le répertoire vendor de Composer]]. Valeur par défaut: `@app/vendor`.
+- `@bower`, le répertoire racine qui contient [les paquets bower](http://bower.io/). Valeur par défaut: `@vendor/bower`.
+- `@npm`, le répertoire racine qui contient [les paquets npm](https://www.npmjs.org/). Valeur par défaut: `@vendor/npm`.
+
+L'alias `@yii` est défini quand le fichier `Yii.php`est inclu dans votre [script d'entrée](structure-entry-scripts.md). Le reste des alias sont définit dans le constructeur de l'application au moment ou la [configuration](concept-configurations.md) de cette dernière est appliquée
+
+Alias d'extension
+-----------------
+
+Un alias est automatiquement définit pour chaque [extension](structure-extensions.md) installée via Composer.
+Chacun de ces alias est nommé par l'espace de nom (namespace) racine de l'extension tel que déclaré dans son fichier `composer.json`, et chacun pointe sur le répertoire racine du paquet. Par exemple, si vous installez l'extension `yiisoft/yii2-jui`, vous obtiendrez automatiquement un alias `@yii/jui` défini pendant la [phase d'amorçage](runtime-bootstrapping.md), équivalent à
+
+```php
+Yii::setAlias('@yii/jui', 'VendorPath/yiisoft/yii2-jui');
+```
\ No newline at end of file
diff --git a/docs/guide-fr/images/start-country-list.png b/docs/guide-fr/images/start-country-list.png
index 6994da2103..375419414d 100644
Binary files a/docs/guide-fr/images/start-country-list.png and b/docs/guide-fr/images/start-country-list.png differ
diff --git a/docs/guide-fr/intro-yii.md b/docs/guide-fr/intro-yii.md
index f62ed46f6b..69f7b4818a 100644
--- a/docs/guide-fr/intro-yii.md
+++ b/docs/guide-fr/intro-yii.md
@@ -29,21 +29,29 @@ support cache multi-niveaux; et plus.
profiter de son architecture extensible solide, afin d'utiliser ou développer des extensions redistribuables.
- La haute performance est toujours un des principaux objectifs de Yii.
+<<<<<<< HEAD
<<<<<<< HEAD
Yii n'est pas un one-man show, il est soutenu par une [solide équipe de développement du noyau][] ainsi que d'une grande communauté
=======
Yii n'est pas un one-man show, il est soutenu par une [solide équipe de développement du noyau][about_yii] ainsi que d'une grande communauté
>>>>>>> yiichina/master
+=======
+Yii n'est pas un one-man show, il est soutenu par une [solide équipe de développement du noyau][about_yii] ainsi que d'une grande communauté
+>>>>>>> master
avec de nombreux professionnels qui contribuent constamment au développement de Yii. L'équipe de développeurs de Yii
garde un œil attentif sur les dernières tendances en développement Web, et sur les meilleures pratiques et caractéristiques
trouvées dans d'autres frameworks ou projets. Les meilleures pratiques et caractéristiques les plus pertinentes trouvées ailleurs sont régulièrement intégrées dans le code du noyau et utilisables
via des interfaces simples et élégantes.
+<<<<<<< HEAD
<<<<<<< HEAD
[solide équipe de développement du noyau]: http://www.yiiframework.com/about/
=======
[about_yii]: http://www.yiiframework.com/about/
>>>>>>> yiichina/master
+=======
+[about_yii]: http://www.yiiframework.com/about/
+>>>>>>> master
Versions de Yii
---------------
diff --git a/docs/guide-fr/start-databases.md b/docs/guide-fr/start-databases.md
index 6be96986bf..d8f181c454 100644
--- a/docs/guide-fr/start-databases.md
+++ b/docs/guide-fr/start-databases.md
@@ -36,16 +36,16 @@ CREATE TABLE `country` (
`population` INT(11) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-INSERT INTO `country` VALUES ('AU','Australia',18886000);
-INSERT INTO `country` VALUES ('BR','Brazil',170115000);
-INSERT INTO `country` VALUES ('CA','Canada',1147000);
-INSERT INTO `country` VALUES ('CN','China',1277558000);
-INSERT INTO `country` VALUES ('DE','Germany',82164700);
-INSERT INTO `country` VALUES ('FR','France',59225700);
-INSERT INTO `country` VALUES ('GB','United Kingdom',59623400);
-INSERT INTO `country` VALUES ('IN','India',1013662000);
-INSERT INTO `country` VALUES ('RU','Russia',146934000);
-INSERT INTO `country` VALUES ('US','United States',278357000);
+INSERT INTO `country` VALUES ('AU','Australia',24016400);
+INSERT INTO `country` VALUES ('BR','Brazil',205722000);
+INSERT INTO `country` VALUES ('CA','Canada',35985751);
+INSERT INTO `country` VALUES ('CN','China',1375210000);
+INSERT INTO `country` VALUES ('DE','Germany',81459000);
+INSERT INTO `country` VALUES ('FR','France',64513242);
+INSERT INTO `country` VALUES ('GB','United Kingdom',65097000);
+INSERT INTO `country` VALUES ('IN','India',1285400000);
+INSERT INTO `country` VALUES ('RU','Russia',146519759);
+INSERT INTO `country` VALUES ('US','United States',322976000);
```
A ce niveau, vous avez une base de données appelée `yii2basic`, et dedans, une table `country` comportant trois colonnes, contenant dix lignes de données.
diff --git a/docs/guide-fr/start-gii.md b/docs/guide-fr/start-gii.md
index 7989174040..30dc24fffb 100644
--- a/docs/guide-fr/start-gii.md
+++ b/docs/guide-fr/start-gii.md
@@ -26,7 +26,9 @@ $config = [ ... ];
if (YII_ENV_DEV) {
$config['bootstrap'][] = 'gii';
- $config['modules']['gii'] = 'yii\gii\Module';
+ $config['modules']['gii'] = [
+ 'class' => 'yii\gii\Module',
+ ];
}
```
diff --git a/docs/guide-fr/start-installation.md b/docs/guide-fr/start-installation.md
index 4d9bf19bc0..d1c20231a0 100644
--- a/docs/guide-fr/start-installation.md
+++ b/docs/guide-fr/start-installation.md
@@ -1,11 +1,15 @@
Installer Yii
=============
+<<<<<<< HEAD
<<<<<<< HEAD
Vous pouvez installer Yii de deux façons, en utilisant [Composer](http://getcomposer.org/) ou en téléchargeant une archive.
=======
Vous pouvez installer Yii de deux façons, en utilisant [Composer](https://getcomposer.org/) ou en téléchargeant une archive.
>>>>>>> yiichina/master
+=======
+Vous pouvez installer Yii de deux façons, en utilisant [Composer](https://getcomposer.org/) ou en téléchargeant une archive.
+>>>>>>> master
La première méthode est conseillée, étant donné qu'elle permet d'installer de nouvelles [extensions](extend-creating-extensions.md) ou de mettre à jour Yii en éxécutant simplement une commande.
> Remarque : Contrairement à Yii 1, les installations standards de Yii 2 auront pour résultat le téléchargement et l'installation du framework, ainsi que d'un squelette d'application.
@@ -17,11 +21,15 @@ Installer via Composer
Si vous n'avez pas déjà installé Composer, vous pouvez le faire en suivant les instructions sur le site [getcomposer.org](https://getcomposer.org/download/).
Sous Linux et Mac OS X, vous pouvez éxécuter les commandes :
+<<<<<<< HEAD
<<<<<<< HEAD
curl -s http://getcomposer.org/installer | php
=======
curl -sS https://getcomposer.org/installer | php
>>>>>>> yiichina/master
+=======
+ curl -sS https://getcomposer.org/installer | php
+>>>>>>> master
mv composer.phar /usr/local/bin/composer
Sous Windows, téléchargez et éxécutez [Composer-Setup.exe](https://getcomposer.org/Composer-Setup.exe).
diff --git a/docs/guide-fr/structure-entry-scripts.md b/docs/guide-fr/structure-entry-scripts.md
index 9f678252bb..63036ac056 100644
--- a/docs/guide-fr/structure-entry-scripts.md
+++ b/docs/guide-fr/structure-entry-scripts.md
@@ -17,10 +17,14 @@ Les scipts de démarrage effectuent principalement les tâches suivantes :
* Définir des constantes globales;
<<<<<<< HEAD
+<<<<<<< HEAD
* Enregistrer l'[autoloader Composer](http://getcomposer.org/doc/01-basic-usage.md#autoloading);
=======
* Enregistrer l'[autoloader Composer](https://getcomposer.org/doc/01-basic-usage.md#autoloading);
>>>>>>> yiichina/master
+=======
+* Enregistrer l'[autoloader Composer](https://getcomposer.org/doc/01-basic-usage.md#autoloading);
+>>>>>>> master
* Inclure le fichier de classe de [[Yii]];
* Charger la configuration de l'application;
* Créer et configurer une instance d'[application](structure-applications.md);
@@ -68,10 +72,6 @@ De même, le code qui suit est le code du script de démarrage d'une application
defined('YII_DEBUG') or define('YII_DEBUG', true);
-// fcgi doesn't have STDIN and STDOUT defined by default
-defined('STDIN') or define('STDIN', fopen('php://stdin', 'r'));
-defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w'));
-
// register Composer autoloader
require(__DIR__ . '/vendor/autoload.php');
diff --git a/docs/guide-id/README.md b/docs/guide-id/README.md
new file mode 100644
index 0000000000..57256a8568
--- /dev/null
+++ b/docs/guide-id/README.md
@@ -0,0 +1,198 @@
+Panduan Definitif Untuk Yii 2.0
+===============================
+
+Tutorial ini dirilis di bawah [Persyaratan Dokumentasi Yii] (http://www.yiiframework.com/doc/terms/).
+
+Seluruh hak cipta dilindungi.
+
+2014 (c) Yii Software LLC.
+
+
+Pengantar
+------------
+
+* [Tentang Yii] (intro-yii.md)
+* [Upgrade dari Versi 1.1] (intro-upgrade-from-v1.md)
+
+
+Mulai
+---------------
+
+* [Instalasi Yii] (start-installation.md)
+* [Menjalankan Aplikasi] (start-workflow.md)
+* [Mengatakan Hello] (start-hello.md)
+* [Bekerja dengan Form] (start-forms.md)
+* [Bekerja dengan Database] (start-databases.md)
+* [Membuat Kode Otomatis dengan Gii] (start-gii.md)
+* [Menatap ke Depan] (start-looking-ahead.md)
+
+
+Struktur Aplikasi
+---------------------
+
+* [Tinjauan] (structure-overview.md)
+* [Script Masuk] (structure-entry-scripts.md)
+* [Aplikasi] (structure-applications.md)
+* [Komponen Aplikasi] (structure-application-components.md)
+* [Controller] (structure-controllers.md)
+* [Model] (structure-models.md)
+* [Views] (structure-views.md)
+* [Modul] (structure-modules.md)
+* [Filter] (structure-filters.md)
+* [Widgets] (structure-widgets.md)
+* [Aset] (structure-assets.md)
+* [Ekstensi] (structure-extensions.md)
+
+
+Penanganan Permintaan
+-----------------
+
+* [Tinjauan] (runtime-overview.md)
+* [Bootstrap] (runtime-bootstrapping.md)
+* [Routing dan Pembuatan URL] (runtime-routing.md)
+* [Permintaan] (runtime-requests.md)
+* [Tanggapan] (runtime-responses.md)
+* [Sesi dan Cookies] (runtime-sessions-cookies.md)
+* [Penanganan Kesalahan] (runtime-handling-errors.md)
+* [Logging] (runtime-logging.md)
+
+
+Konsep Pokok
+------------
+
+* [Komponen] (concept-components.md)
+* [Properti] (concept-properties.md)
+* [Event] (concept-events.md)
+* [Perilaku] (concept-behaviors.md)
+* [Konfigurasi] (concept-configurations.md)
+* [Alias] (concept-aliases.md)
+* [Class Autoloading] (concept-autoloading.md)
+* [Layanan Locator] (concept-service-locator.md)
+* [Dependency Injection] (concept-di-container.md)
+
+
+Bekerja dengan Database
+----------------------
+
+* [Data Access Objects] (db-dao.md): Menghubungkan ke database, query dasar, transaksi, dan manipulasi skema
+* [Query Builder] (db-query-builder.md): Query database menggunakan lapisan abstraksi sederhana
+* [Active Record] (db-active-record.md): ORM Active Record, mengambil dan memanipulasi catatan, dan mendefinisikan hubungan
+* [Migrasi] (db-migrations.md): Terapkan kontrol versi untuk database Anda dalam lingkungan pengembangan tim
+* [Sphinx] (https://github.com/yiisoft/yii2-sphinx/blob/master/docs/guide/README.md)
+* [Redis] (https://github.com/yiisoft/yii2-redis/blob/master/docs/guide/README.md)
+* [MongoDB] (https://github.com/yiisoft/yii2-mongodb/blob/master/docs/guide/README.md)
+* [ElasticSearch] (https://github.com/yiisoft/yii2-elasticsearch/blob/master/docs/guide/README.md)
+
+
+Mendapatkan Data dari Pengguna
+-----------------------
+
+* [Membuat Formulir] (input-forms.md)
+* [Memvalidasi Masukan] (input-validation.md)
+* [Mengunggah File] (input-file-upload.md)
+* [Mengumpulkan Masukan Tabel] (input-tabular-input.md)
+* [Mendapatkan Data untuk Beberapa Model] (input-multiple-models.md)
+
+
+Menampilkan Data
+---------------
+
+* [Pemformatan Data] (output-formatting.md)
+* [Pagination] (output-pagination.md)
+* [Pengurutan] (output-sorting.md)
+* [Penyedia Data] (output-data-providers.md)
+* [Data Widget] (output-data-widgets.md)
+* [Bekerja dengan Script Client] (output-client-scripts.md)
+* [Tema] (output-theming.md)
+
+
+Keamanan
+--------
+
+* [Otentikasi] (security-authentication.md)
+* [Otorisasi] (security-authorization.md)
+* [Bekerja dengan Kata Sandi] (security-passwords.md)
+* [Otentikasi Klien] (https://github.com/yiisoft/yii2-authclient/blob/master/docs/guide/README.md)
+* [Praktik Terbaik] (security-best-practices.md)
+
+
+Caching
+-------
+
+* [Tinjauan] (caching-overview.md)
+* [Caching Data] (caching-data.md)
+* [Caching Fragmen] (caching-fragment.md)
+* [Caching Halaman] (caching-page.md)
+* [Caching HTTP] (caching-http.md)
+
+
+Layanan Web RESTful
+--------------------
+
+* [Quick Start] (rest-quick-start.md)
+* [Sumber Daya] (rest-resources.md)
+* [Controller] (rest-controllers.md)
+* [Routing] (rest-routing.md)
+* [Penformatan Respon] (rest-response-formatting.md)
+* [Otentikasi] (rest-authentication.md)
+* [Pembatasan Laju] (rest-rate-limiting.md)
+* [Versi] (rest-versioning.md)
+* [Penanganan Kesalahan] (rest-error-handling.md)
+
+
+Alat Pengembangan
+-----------------
+
+* [Debug Toolbar dan Debugger] (https://github.com/yiisoft/yii2-debug/blob/master/docs/guide/README.md)
+* [Membuat Kode Otomatis dengan Gii] (https://github.com/yiisoft/yii2-gii/blob/master/docs/guide/README.md)
+* ** TBD ** [Membuat API Documentation] (https://github.com/yiisoft/yii2-apidoc)
+
+
+Pengujian
+-------
+
+* [Tinjauan] (test-overview.md)
+* [Persiapan Lingkungan Pengujian] (test-environment-setup.md)
+* [Tes Satuan] (test-unit.md)
+* [Tes Fungsional] (test-functional.md)
+* [Tes Penerimaan] (test-acceptance.md)
+* [Jadwal] (test-fixtures.md)
+
+
+Topik Khusus
+--------------
+
+* [Cetakan Proyek Lanjutan] (https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide/README.md)
+* [Membangun Aplikasi dari Awal] (tutorial-start-from-scratch.md)
+* [Console Commands] (tutorial-console.md)
+* [Validator Inti] (tutorial-core-validators.md)
+* [Internasionalisasi] (tutorial-i18n.md)
+* [Mailing] (tutorial-mailing.md)
+* [Penyetelan Performa] (tutorial-performance-tuning.md)
+* [Lingkungan Shared Hosting] (tutorial-shared-hosting.md)
+* [Template Engine] (tutorial-template-engines.md)
+* [Bekerja dengan Kode Pihak Ketiga] (tutorial-yii-integration.md)
+
+
+Widget
+-------
+
+* GridView: ** TBD ** Link ke demo halaman
+* ListView: ** TBD ** Link ke halaman demo
+* DetailView: ** TBD ** Link ke halaman demo
+* ActiveForm: ** TBD ** Link ke halaman demo
+* Pjax: ** TBD ** Link ke demo halaman
+* Menu: ** TBD ** Link ke halaman demo
+* LinkPager: ** TBD ** Link ke halaman demo
+* LinkSorter: ** TBD ** Link ke halaman demo
+* [Bootstrap Widgets] (https://github.com/yiisoft/yii2-bootstrap/blob/master/docs/guide/README.md)
+* [JQuery UI Widgets] (https://github.com/yiisoft/yii2-jui/blob/master/docs/guide/README.md)
+
+
+Alat Bantu
+---------
+
+* [Tinjauan] (helper-overview.md)
+* [ArrayHelper] (helper-array.md)
+* [Html] (helper-html.md)
+* [Url] (helper-url.md)
diff --git a/docs/guide-id/images/application-lifecycle.graphml b/docs/guide-id/images/application-lifecycle.graphml
new file mode 100644
index 0000000000..850863ab26
--- /dev/null
+++ b/docs/guide-id/images/application-lifecycle.graphml
@@ -0,0 +1,527 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Entry script (index.php or yii)
+
+
+
+
+
+
+
+
+
+ Folder 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Load application config
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create application instance
+
+
+
+
+
+
+
+
+
+ Folder 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ preInit()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Register error handler
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Configure application properties
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ init()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ bootstrap()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Run application
+
+
+
+
+
+
+
+
+
+ Folder 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EVENT_BEFORE_REQUEST
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Handle request
+
+
+
+
+
+
+
+
+
+ Folder 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Resolve request into route and parameters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create module, controller and action
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Run action
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EVENT_AFTER_REQUEST
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Send response to end user
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Complete request processing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Configuration array
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Exit status
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/guide-id/images/application-lifecycle.png b/docs/guide-id/images/application-lifecycle.png
new file mode 100644
index 0000000000..6a505ccefb
Binary files /dev/null and b/docs/guide-id/images/application-lifecycle.png differ
diff --git a/docs/guide-id/images/application-structure.graphml b/docs/guide-id/images/application-structure.graphml
new file mode 100644
index 0000000000..f6fce488be
--- /dev/null
+++ b/docs/guide-id/images/application-structure.graphml
@@ -0,0 +1,430 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ application
+component
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ entry script
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ application
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ filter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ module
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ view
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ widget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ asset bundle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1:1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0..*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0..*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1..*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0..*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0..*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0..*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0..*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0..*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0..*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0..*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0..*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0..*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/guide-id/images/application-structure.png b/docs/guide-id/images/application-structure.png
new file mode 100644
index 0000000000..d3a5549888
Binary files /dev/null and b/docs/guide-id/images/application-structure.png differ
diff --git a/docs/guide-id/images/rbac-access-check-1.graphml b/docs/guide-id/images/rbac-access-check-1.graphml
new file mode 100644
index 0000000000..44078515cf
--- /dev/null
+++ b/docs/guide-id/images/rbac-access-check-1.graphml
@@ -0,0 +1,368 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ admin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ author
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ John, ID=2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Jane, ID=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ updatePost
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ updateOwnPost
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ createPost
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AuthorRule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="57px" height="65px" viewBox="0 0 57 65" enable-background="new 0 0 57 65" xml:space="preserve">
+<g>
+
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.3398" y1="3115.7266" x2="27.5807" y2="3145.5239" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)">
+ <stop offset="0.2711" style="stop-color:#FFAB4F"/>
+ <stop offset="1" style="stop-color:#FFD28F"/>
+ </linearGradient>
+ <path fill="url(#SVGID_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M49.529,51.225c-4.396-4.396-10.951-5.884-12.063-6.109
+ V37.8H19.278c0,0,0.038,6.903,0,6.868c0,0-6.874,0.997-12.308,6.432C1.378,56.691,0.5,62.77,0.5,62.77
+ c0,1.938,1.575,3.492,3.523,3.492h48.51c1.947,0,3.521-1.558,3.521-3.492C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+ <path id="body_18_" fill="#ECECEC" stroke="#9B9B9B" stroke-miterlimit="10" d="M0.5,62.768c0,1.938,1.575,3.494,3.523,3.494h48.51
+ c1.947,0,3.521-1.559,3.521-3.494c0,0-1.844-6.861-6.525-11.543c-4.815-4.813-11.244-6.146-11.244-6.146
+ c-1.771,1.655-5.61,3.802-10.063,3.802c-4.453,0-8.292-2.146-10.063-3.802c0,0-5.755,0.586-11.189,6.021
+ C1.378,56.689,0.5,62.768,0.5,62.768z"/>
+
+ <radialGradient id="SVGID_2_" cx="22.6621" cy="21.707" r="17.7954" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_2_)" stroke="#E55E03" d="M28.106,33.486c-8.112,0-12.688,4.313-12.688,10.438
+ c0,7.422,12.688,10.438,12.688,10.438s14.688-3.016,14.688-10.438C42.793,38.75,36.215,33.486,28.106,33.486z M26.288,53.051
+ c0,0-7.135-2.093-8.805-7.201c-0.222-0.682,0.147-1.156,0.795-1.521V37.8h20.188v6.663c0.235,0.352,1.109,0.737,1.229,1.387
+ C40.445,49.917,26.288,53.051,26.288,53.051z"/>
+
+ <radialGradient id="SVGID_3_" cx="15.2056" cy="831.1875" r="32.3071" gradientTransform="matrix(1 0 0 1 0.0801 -773.6914)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_3_)" stroke="#E55E03" d="M49.529,51.225c-2.239-2.24-5.041-3.724-7.396-4.67
+ c-2.854,5.51-14.021,7.807-14.021,7.807s-10.472-2.483-12.387-8.514c-2.439,0.771-5.787,2.287-8.749,5.25
+ c-5.592,5.592-6.47,11.67-6.47,11.67c0,1.938,1.575,3.492,3.523,3.492h48.51c1.946,0,3.521-1.558,3.521-3.492
+ C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+
+ <radialGradient id="SVGID_4_" cx="17.0723" cy="18.4907" r="11.8931" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_4_)" stroke="#E55E03" d="M13.404,44.173c1.15-1.81,2.039-3.832,3.332-5.397
+ c-0.514,1.027-1.669,4.084-1.669,5.148c0,5.186,10.366,9.079,14.688,10.438c-3.472,1.627-9.134-1.498-11.334-2.359
+ c-3.601-1.419-4.071-3.063-5.89-4.854C12.523,47.135,12.878,45,13.404,44.173z"/>
+
+ <radialGradient id="SVGID_5_" cx="31.8184" cy="19.3525" r="14.63" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_5_)" stroke="#E55E03" d="M45.777,43.924c-1.317-1.568-5.11-9.424-6.604-6.617
+ c0.516,1.025,3.617,3.693,3.617,6.617c0,5.186-10.271,8.576-16.699,9.145c1.429,4.938,11.373,1.293,13.805-0.313
+ c3.563-2.354,4.563-5.133,7.854-3.705C47.754,49.045,48.006,46.574,45.777,43.924z"/>
+
+ <radialGradient id="SVGID_6_" cx="30.4893" cy="4.8721" r="5.2028" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_6_)" stroke="#E55E03" d="M30.777,54.167c0.357,0.836-0.153,1.983-0.352,2.813
+ c-0.256,1.084-0.072,2.104,0.102,3.186c0.164,1.02,0.156,2.107,0.25,3.167c0.082,0.916,0.482,1.849,0.357,2.75"/>
+
+ <radialGradient id="SVGID_7_" cx="23.2871" cy="5.3008" r="5.5143" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_7_)" stroke="#E55E03" d="M23.695,53.417c-0.508,0.584-0.476,2.209-0.398,3
+ c0.116,1.183,0.456,2.099,0.333,3.333c-0.192,1.943,0.154,4.479-0.436,6.333"/>
+
+ <radialGradient id="face_x5F_white_1_" cx="27.5835" cy="3117.4922" r="23.425" fx="23.0139" fy="3115.0024" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FFD28F"/>
+ <stop offset="1" style="stop-color:#FFAB4F"/>
+ </radialGradient>
+ <path id="face_x5F_white_3_" fill="url(#face_x5F_white_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M43.676,23.357
+ c0.086,10.2-6.738,18.52-15.25,18.586c-8.5,0.068-15.464-8.146-15.55-18.344C12.794,13.4,19.618,5.079,28.123,5.012
+ C36.627,4.945,43.59,13.158,43.676,23.357z"/>
+
+ <linearGradient id="face_highlight_1_" gradientUnits="userSpaceOnUse" x1="6468.501" y1="-12291.5195" x2="6492.1304" y2="-12384.9688" gradientTransform="matrix(0.275 0 0 -0.2733 -1752.8849 -3351.7349)">
+ <stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.24"/>
+ <stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0.16"/>
+ </linearGradient>
+ <path id="face_highlight_3_" fill="url(#face_highlight_1_)" d="M28.415,5.625c-6.035,0.047-10.747,4.493-12.787,10.386
+ c-0.664,1.919-0.294,4.043,0.98,5.629c2.73,3.398,5.729,6.283,9.461,8.088c3.137,1.518,7.535,2.385,11.893,1.247
+ c2.274-0.592,3.988-2.459,4.375-4.766c0.187-1.094,0.293-2.289,0.283-3.553C42.54,13.244,36.729,5.56,28.415,5.625z"/>
+ <path id="Hair_Young_Black_1_" fill="#5C5C5C" stroke="#353535" stroke-linecap="round" stroke-linejoin="round" d="M20.278,13.25
+ c3.417,4.333,9.333,6.917,9.333,6.917l-1.417-3.5c0,0,7.094,4.691,8.083,4.333c0.968-0.2-1.082-3.807-1.082-3.807
+ s3.138,1.795,4.854,3.969c1.803,2.28,4.285,3.504,4.285,3.504S47.027,2.719,27.289,2.744C8.278,2.709,12.058,27.678,12.058,27.678
+ L14.695,17c0,0,0.914,5.757,1.399,4.875C17.861,15.211,18.861,11.5,20.278,13.25z"/>
+</g>
+</svg>
+
+ <?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="57px" height="67px" viewBox="0 0 57 67" enable-background="new 0 0 57 67" xml:space="preserve">
+<g>
+
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.3398" y1="3115.7266" x2="27.5807" y2="3145.5239" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)">
+ <stop offset="0.2711" style="stop-color:#FFAB4F"/>
+ <stop offset="1" style="stop-color:#FFD28F"/>
+ </linearGradient>
+ <path fill="url(#SVGID_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M49.529,51.225c-4.396-4.396-10.951-5.884-12.063-6.109
+ V37.8H19.278c0,0,0.038,6.903,0,6.868c0,0-6.874,0.997-12.308,6.432C1.378,56.691,0.5,62.77,0.5,62.77
+ c0,1.938,1.575,3.492,3.523,3.492h48.51c1.947,0,3.521-1.558,3.521-3.492C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+
+ <radialGradient id="face_x5F_white_1_" cx="27.5835" cy="3117.4922" r="23.425" fx="23.0139" fy="3115.0024" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FFD28F"/>
+ <stop offset="1" style="stop-color:#FFAB4F"/>
+ </radialGradient>
+ <path id="face_x5F_white_3_" fill="url(#face_x5F_white_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M43.676,23.357
+ c0.086,10.199-6.738,18.52-15.25,18.586c-8.5,0.068-15.464-8.146-15.55-18.344C12.794,13.4,19.618,5.079,28.123,5.012
+ C36.627,4.945,43.59,13.158,43.676,23.357z"/>
+
+ <linearGradient id="face_highlight_1_" gradientUnits="userSpaceOnUse" x1="6468.5" y1="-12286.8594" x2="6492.1294" y2="-12380.3086" gradientTransform="matrix(0.275 0 0 -0.2733 -1752.8849 -3350.4617)">
+ <stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.24"/>
+ <stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0.16"/>
+ </linearGradient>
+ <path id="face_highlight_3_" fill="url(#face_highlight_1_)" d="M28.415,5.625c-6.035,0.047-10.747,4.493-12.787,10.386
+ c-0.664,1.919-0.294,4.043,0.98,5.629c2.73,3.398,5.729,6.283,9.461,8.088c3.137,1.518,7.535,2.385,11.893,1.247
+ c2.274-0.592,3.988-2.459,4.375-4.766c0.187-1.094,0.293-2.289,0.283-3.553C42.54,13.244,36.729,5.56,28.415,5.625z"/>
+ <path id="Hair_Female_1_Red_1_" fill="#FAE1AA" stroke="#E2B354" stroke-linecap="round" stroke-linejoin="round" d="M28.372,0.5
+ C17.537,0.5,8.269,7.748,9.153,26.125c0.563,6.563,5.862,12.042,9.366,13.531c-2.929-10.968-0.304-25.021-0.585-25.526
+ c-0.281-0.505,3.536,6.728,3.536,6.728l3.183-8.312c5.541,4.28,0.393,11.309,1.049,11.058c4.26-1.631,5.34-9.228,5.34-9.228
+ s2.729,3.657,2.701,5.504c-0.054,3.562,2.194-6.067,2.194-6.067l1.027,2.031c6.727,9.822,3.684,16.208,1.648,22.781
+ c15.666-0.703,12.291-10.48,9.66-18.407C43.59,6.092,39.206,0.5,28.372,0.5z"/>
+
+ <linearGradient id="body_1_" gradientUnits="userSpaceOnUse" x1="95.9063" y1="-3134.2153" x2="31.5133" y2="-3134.2153" gradientTransform="matrix(0.9852 0 0 -0.9852 -34.4844 -3031.9851)">
+ <stop offset="0" style="stop-color:#49AD33"/>
+ <stop offset="1" style="stop-color:#C2DA92"/>
+ </linearGradient>
+ <path id="body_8_" fill="url(#body_1_)" stroke="#008D33" d="M0.5,62.768c0,1.938,1.575,3.494,3.523,3.494h48.51
+ c1.947,0,3.521-1.559,3.521-3.494c0,0-1.844-6.861-6.525-11.543c-4.815-4.813-8.244-5.146-8.244-5.146
+ c-1.444,6.983-8.555,8.786-13.007,8.786s-11.322-2.643-11.941-9.439c0,0-4.559,1.199-9.367,5.674
+ C1.378,56.689,0.5,62.768,0.5,62.768z"/>
+</g>
+</svg>
+
+
+
+
diff --git a/docs/guide-id/images/rbac-access-check-1.png b/docs/guide-id/images/rbac-access-check-1.png
new file mode 100644
index 0000000000..77ad551c26
Binary files /dev/null and b/docs/guide-id/images/rbac-access-check-1.png differ
diff --git a/docs/guide-id/images/rbac-access-check-2.graphml b/docs/guide-id/images/rbac-access-check-2.graphml
new file mode 100644
index 0000000000..c521d429ea
--- /dev/null
+++ b/docs/guide-id/images/rbac-access-check-2.graphml
@@ -0,0 +1,368 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ admin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ author
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ John, ID=2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Jane, ID=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ updatePost
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ updateOwnPost
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ createPost
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AuthorRule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="57px" height="65px" viewBox="0 0 57 65" enable-background="new 0 0 57 65" xml:space="preserve">
+<g>
+
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.3398" y1="3115.7266" x2="27.5807" y2="3145.5239" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)">
+ <stop offset="0.2711" style="stop-color:#FFAB4F"/>
+ <stop offset="1" style="stop-color:#FFD28F"/>
+ </linearGradient>
+ <path fill="url(#SVGID_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M49.529,51.225c-4.396-4.396-10.951-5.884-12.063-6.109
+ V37.8H19.278c0,0,0.038,6.903,0,6.868c0,0-6.874,0.997-12.308,6.432C1.378,56.691,0.5,62.77,0.5,62.77
+ c0,1.938,1.575,3.492,3.523,3.492h48.51c1.947,0,3.521-1.558,3.521-3.492C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+ <path id="body_18_" fill="#ECECEC" stroke="#9B9B9B" stroke-miterlimit="10" d="M0.5,62.768c0,1.938,1.575,3.494,3.523,3.494h48.51
+ c1.947,0,3.521-1.559,3.521-3.494c0,0-1.844-6.861-6.525-11.543c-4.815-4.813-11.244-6.146-11.244-6.146
+ c-1.771,1.655-5.61,3.802-10.063,3.802c-4.453,0-8.292-2.146-10.063-3.802c0,0-5.755,0.586-11.189,6.021
+ C1.378,56.689,0.5,62.768,0.5,62.768z"/>
+
+ <radialGradient id="SVGID_2_" cx="22.6621" cy="21.707" r="17.7954" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_2_)" stroke="#E55E03" d="M28.106,33.486c-8.112,0-12.688,4.313-12.688,10.438
+ c0,7.422,12.688,10.438,12.688,10.438s14.688-3.016,14.688-10.438C42.793,38.75,36.215,33.486,28.106,33.486z M26.288,53.051
+ c0,0-7.135-2.093-8.805-7.201c-0.222-0.682,0.147-1.156,0.795-1.521V37.8h20.188v6.663c0.235,0.352,1.109,0.737,1.229,1.387
+ C40.445,49.917,26.288,53.051,26.288,53.051z"/>
+
+ <radialGradient id="SVGID_3_" cx="15.2056" cy="831.1875" r="32.3071" gradientTransform="matrix(1 0 0 1 0.0801 -773.6914)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_3_)" stroke="#E55E03" d="M49.529,51.225c-2.239-2.24-5.041-3.724-7.396-4.67
+ c-2.854,5.51-14.021,7.807-14.021,7.807s-10.472-2.483-12.387-8.514c-2.439,0.771-5.787,2.287-8.749,5.25
+ c-5.592,5.592-6.47,11.67-6.47,11.67c0,1.938,1.575,3.492,3.523,3.492h48.51c1.946,0,3.521-1.558,3.521-3.492
+ C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+
+ <radialGradient id="SVGID_4_" cx="17.0723" cy="18.4907" r="11.8931" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_4_)" stroke="#E55E03" d="M13.404,44.173c1.15-1.81,2.039-3.832,3.332-5.397
+ c-0.514,1.027-1.669,4.084-1.669,5.148c0,5.186,10.366,9.079,14.688,10.438c-3.472,1.627-9.134-1.498-11.334-2.359
+ c-3.601-1.419-4.071-3.063-5.89-4.854C12.523,47.135,12.878,45,13.404,44.173z"/>
+
+ <radialGradient id="SVGID_5_" cx="31.8184" cy="19.3525" r="14.63" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_5_)" stroke="#E55E03" d="M45.777,43.924c-1.317-1.568-5.11-9.424-6.604-6.617
+ c0.516,1.025,3.617,3.693,3.617,6.617c0,5.186-10.271,8.576-16.699,9.145c1.429,4.938,11.373,1.293,13.805-0.313
+ c3.563-2.354,4.563-5.133,7.854-3.705C47.754,49.045,48.006,46.574,45.777,43.924z"/>
+
+ <radialGradient id="SVGID_6_" cx="30.4893" cy="4.8721" r="5.2028" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_6_)" stroke="#E55E03" d="M30.777,54.167c0.357,0.836-0.153,1.983-0.352,2.813
+ c-0.256,1.084-0.072,2.104,0.102,3.186c0.164,1.02,0.156,2.107,0.25,3.167c0.082,0.916,0.482,1.849,0.357,2.75"/>
+
+ <radialGradient id="SVGID_7_" cx="23.2871" cy="5.3008" r="5.5143" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_7_)" stroke="#E55E03" d="M23.695,53.417c-0.508,0.584-0.476,2.209-0.398,3
+ c0.116,1.183,0.456,2.099,0.333,3.333c-0.192,1.943,0.154,4.479-0.436,6.333"/>
+
+ <radialGradient id="face_x5F_white_1_" cx="27.5835" cy="3117.4922" r="23.425" fx="23.0139" fy="3115.0024" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FFD28F"/>
+ <stop offset="1" style="stop-color:#FFAB4F"/>
+ </radialGradient>
+ <path id="face_x5F_white_3_" fill="url(#face_x5F_white_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M43.676,23.357
+ c0.086,10.2-6.738,18.52-15.25,18.586c-8.5,0.068-15.464-8.146-15.55-18.344C12.794,13.4,19.618,5.079,28.123,5.012
+ C36.627,4.945,43.59,13.158,43.676,23.357z"/>
+
+ <linearGradient id="face_highlight_1_" gradientUnits="userSpaceOnUse" x1="6468.501" y1="-12291.5195" x2="6492.1304" y2="-12384.9688" gradientTransform="matrix(0.275 0 0 -0.2733 -1752.8849 -3351.7349)">
+ <stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.24"/>
+ <stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0.16"/>
+ </linearGradient>
+ <path id="face_highlight_3_" fill="url(#face_highlight_1_)" d="M28.415,5.625c-6.035,0.047-10.747,4.493-12.787,10.386
+ c-0.664,1.919-0.294,4.043,0.98,5.629c2.73,3.398,5.729,6.283,9.461,8.088c3.137,1.518,7.535,2.385,11.893,1.247
+ c2.274-0.592,3.988-2.459,4.375-4.766c0.187-1.094,0.293-2.289,0.283-3.553C42.54,13.244,36.729,5.56,28.415,5.625z"/>
+ <path id="Hair_Young_Black_1_" fill="#5C5C5C" stroke="#353535" stroke-linecap="round" stroke-linejoin="round" d="M20.278,13.25
+ c3.417,4.333,9.333,6.917,9.333,6.917l-1.417-3.5c0,0,7.094,4.691,8.083,4.333c0.968-0.2-1.082-3.807-1.082-3.807
+ s3.138,1.795,4.854,3.969c1.803,2.28,4.285,3.504,4.285,3.504S47.027,2.719,27.289,2.744C8.278,2.709,12.058,27.678,12.058,27.678
+ L14.695,17c0,0,0.914,5.757,1.399,4.875C17.861,15.211,18.861,11.5,20.278,13.25z"/>
+</g>
+</svg>
+
+ <?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="57px" height="67px" viewBox="0 0 57 67" enable-background="new 0 0 57 67" xml:space="preserve">
+<g>
+
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.3398" y1="3115.7266" x2="27.5807" y2="3145.5239" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)">
+ <stop offset="0.2711" style="stop-color:#FFAB4F"/>
+ <stop offset="1" style="stop-color:#FFD28F"/>
+ </linearGradient>
+ <path fill="url(#SVGID_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M49.529,51.225c-4.396-4.396-10.951-5.884-12.063-6.109
+ V37.8H19.278c0,0,0.038,6.903,0,6.868c0,0-6.874,0.997-12.308,6.432C1.378,56.691,0.5,62.77,0.5,62.77
+ c0,1.938,1.575,3.492,3.523,3.492h48.51c1.947,0,3.521-1.558,3.521-3.492C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+
+ <radialGradient id="face_x5F_white_1_" cx="27.5835" cy="3117.4922" r="23.425" fx="23.0139" fy="3115.0024" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FFD28F"/>
+ <stop offset="1" style="stop-color:#FFAB4F"/>
+ </radialGradient>
+ <path id="face_x5F_white_3_" fill="url(#face_x5F_white_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M43.676,23.357
+ c0.086,10.199-6.738,18.52-15.25,18.586c-8.5,0.068-15.464-8.146-15.55-18.344C12.794,13.4,19.618,5.079,28.123,5.012
+ C36.627,4.945,43.59,13.158,43.676,23.357z"/>
+
+ <linearGradient id="face_highlight_1_" gradientUnits="userSpaceOnUse" x1="6468.5" y1="-12286.8594" x2="6492.1294" y2="-12380.3086" gradientTransform="matrix(0.275 0 0 -0.2733 -1752.8849 -3350.4617)">
+ <stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.24"/>
+ <stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0.16"/>
+ </linearGradient>
+ <path id="face_highlight_3_" fill="url(#face_highlight_1_)" d="M28.415,5.625c-6.035,0.047-10.747,4.493-12.787,10.386
+ c-0.664,1.919-0.294,4.043,0.98,5.629c2.73,3.398,5.729,6.283,9.461,8.088c3.137,1.518,7.535,2.385,11.893,1.247
+ c2.274-0.592,3.988-2.459,4.375-4.766c0.187-1.094,0.293-2.289,0.283-3.553C42.54,13.244,36.729,5.56,28.415,5.625z"/>
+ <path id="Hair_Female_1_Red_1_" fill="#FAE1AA" stroke="#E2B354" stroke-linecap="round" stroke-linejoin="round" d="M28.372,0.5
+ C17.537,0.5,8.269,7.748,9.153,26.125c0.563,6.563,5.862,12.042,9.366,13.531c-2.929-10.968-0.304-25.021-0.585-25.526
+ c-0.281-0.505,3.536,6.728,3.536,6.728l3.183-8.312c5.541,4.28,0.393,11.309,1.049,11.058c4.26-1.631,5.34-9.228,5.34-9.228
+ s2.729,3.657,2.701,5.504c-0.054,3.562,2.194-6.067,2.194-6.067l1.027,2.031c6.727,9.822,3.684,16.208,1.648,22.781
+ c15.666-0.703,12.291-10.48,9.66-18.407C43.59,6.092,39.206,0.5,28.372,0.5z"/>
+
+ <linearGradient id="body_1_" gradientUnits="userSpaceOnUse" x1="95.9063" y1="-3134.2153" x2="31.5133" y2="-3134.2153" gradientTransform="matrix(0.9852 0 0 -0.9852 -34.4844 -3031.9851)">
+ <stop offset="0" style="stop-color:#49AD33"/>
+ <stop offset="1" style="stop-color:#C2DA92"/>
+ </linearGradient>
+ <path id="body_8_" fill="url(#body_1_)" stroke="#008D33" d="M0.5,62.768c0,1.938,1.575,3.494,3.523,3.494h48.51
+ c1.947,0,3.521-1.559,3.521-3.494c0,0-1.844-6.861-6.525-11.543c-4.815-4.813-8.244-5.146-8.244-5.146
+ c-1.444,6.983-8.555,8.786-13.007,8.786s-11.322-2.643-11.941-9.439c0,0-4.559,1.199-9.367,5.674
+ C1.378,56.689,0.5,62.768,0.5,62.768z"/>
+</g>
+</svg>
+
+
+
+
diff --git a/docs/guide-id/images/rbac-access-check-2.png b/docs/guide-id/images/rbac-access-check-2.png
new file mode 100644
index 0000000000..254f307a89
Binary files /dev/null and b/docs/guide-id/images/rbac-access-check-2.png differ
diff --git a/docs/guide-id/images/rbac-access-check-3.graphml b/docs/guide-id/images/rbac-access-check-3.graphml
new file mode 100644
index 0000000000..8747cee0da
--- /dev/null
+++ b/docs/guide-id/images/rbac-access-check-3.graphml
@@ -0,0 +1,368 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ admin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ author
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ John, ID=2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Jane, ID=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ updatePost
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ updateOwnPost
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ createPost
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AuthorRule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="57px" height="65px" viewBox="0 0 57 65" enable-background="new 0 0 57 65" xml:space="preserve">
+<g>
+
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.3398" y1="3115.7266" x2="27.5807" y2="3145.5239" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)">
+ <stop offset="0.2711" style="stop-color:#FFAB4F"/>
+ <stop offset="1" style="stop-color:#FFD28F"/>
+ </linearGradient>
+ <path fill="url(#SVGID_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M49.529,51.225c-4.396-4.396-10.951-5.884-12.063-6.109
+ V37.8H19.278c0,0,0.038,6.903,0,6.868c0,0-6.874,0.997-12.308,6.432C1.378,56.691,0.5,62.77,0.5,62.77
+ c0,1.938,1.575,3.492,3.523,3.492h48.51c1.947,0,3.521-1.558,3.521-3.492C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+ <path id="body_18_" fill="#ECECEC" stroke="#9B9B9B" stroke-miterlimit="10" d="M0.5,62.768c0,1.938,1.575,3.494,3.523,3.494h48.51
+ c1.947,0,3.521-1.559,3.521-3.494c0,0-1.844-6.861-6.525-11.543c-4.815-4.813-11.244-6.146-11.244-6.146
+ c-1.771,1.655-5.61,3.802-10.063,3.802c-4.453,0-8.292-2.146-10.063-3.802c0,0-5.755,0.586-11.189,6.021
+ C1.378,56.689,0.5,62.768,0.5,62.768z"/>
+
+ <radialGradient id="SVGID_2_" cx="22.6621" cy="21.707" r="17.7954" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_2_)" stroke="#E55E03" d="M28.106,33.486c-8.112,0-12.688,4.313-12.688,10.438
+ c0,7.422,12.688,10.438,12.688,10.438s14.688-3.016,14.688-10.438C42.793,38.75,36.215,33.486,28.106,33.486z M26.288,53.051
+ c0,0-7.135-2.093-8.805-7.201c-0.222-0.682,0.147-1.156,0.795-1.521V37.8h20.188v6.663c0.235,0.352,1.109,0.737,1.229,1.387
+ C40.445,49.917,26.288,53.051,26.288,53.051z"/>
+
+ <radialGradient id="SVGID_3_" cx="15.2056" cy="831.1875" r="32.3071" gradientTransform="matrix(1 0 0 1 0.0801 -773.6914)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_3_)" stroke="#E55E03" d="M49.529,51.225c-2.239-2.24-5.041-3.724-7.396-4.67
+ c-2.854,5.51-14.021,7.807-14.021,7.807s-10.472-2.483-12.387-8.514c-2.439,0.771-5.787,2.287-8.749,5.25
+ c-5.592,5.592-6.47,11.67-6.47,11.67c0,1.938,1.575,3.492,3.523,3.492h48.51c1.946,0,3.521-1.558,3.521-3.492
+ C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+
+ <radialGradient id="SVGID_4_" cx="17.0723" cy="18.4907" r="11.8931" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_4_)" stroke="#E55E03" d="M13.404,44.173c1.15-1.81,2.039-3.832,3.332-5.397
+ c-0.514,1.027-1.669,4.084-1.669,5.148c0,5.186,10.366,9.079,14.688,10.438c-3.472,1.627-9.134-1.498-11.334-2.359
+ c-3.601-1.419-4.071-3.063-5.89-4.854C12.523,47.135,12.878,45,13.404,44.173z"/>
+
+ <radialGradient id="SVGID_5_" cx="31.8184" cy="19.3525" r="14.63" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_5_)" stroke="#E55E03" d="M45.777,43.924c-1.317-1.568-5.11-9.424-6.604-6.617
+ c0.516,1.025,3.617,3.693,3.617,6.617c0,5.186-10.271,8.576-16.699,9.145c1.429,4.938,11.373,1.293,13.805-0.313
+ c3.563-2.354,4.563-5.133,7.854-3.705C47.754,49.045,48.006,46.574,45.777,43.924z"/>
+
+ <radialGradient id="SVGID_6_" cx="30.4893" cy="4.8721" r="5.2028" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_6_)" stroke="#E55E03" d="M30.777,54.167c0.357,0.836-0.153,1.983-0.352,2.813
+ c-0.256,1.084-0.072,2.104,0.102,3.186c0.164,1.02,0.156,2.107,0.25,3.167c0.082,0.916,0.482,1.849,0.357,2.75"/>
+
+ <radialGradient id="SVGID_7_" cx="23.2871" cy="5.3008" r="5.5143" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_7_)" stroke="#E55E03" d="M23.695,53.417c-0.508,0.584-0.476,2.209-0.398,3
+ c0.116,1.183,0.456,2.099,0.333,3.333c-0.192,1.943,0.154,4.479-0.436,6.333"/>
+
+ <radialGradient id="face_x5F_white_1_" cx="27.5835" cy="3117.4922" r="23.425" fx="23.0139" fy="3115.0024" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FFD28F"/>
+ <stop offset="1" style="stop-color:#FFAB4F"/>
+ </radialGradient>
+ <path id="face_x5F_white_3_" fill="url(#face_x5F_white_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M43.676,23.357
+ c0.086,10.2-6.738,18.52-15.25,18.586c-8.5,0.068-15.464-8.146-15.55-18.344C12.794,13.4,19.618,5.079,28.123,5.012
+ C36.627,4.945,43.59,13.158,43.676,23.357z"/>
+
+ <linearGradient id="face_highlight_1_" gradientUnits="userSpaceOnUse" x1="6468.501" y1="-12291.5195" x2="6492.1304" y2="-12384.9688" gradientTransform="matrix(0.275 0 0 -0.2733 -1752.8849 -3351.7349)">
+ <stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.24"/>
+ <stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0.16"/>
+ </linearGradient>
+ <path id="face_highlight_3_" fill="url(#face_highlight_1_)" d="M28.415,5.625c-6.035,0.047-10.747,4.493-12.787,10.386
+ c-0.664,1.919-0.294,4.043,0.98,5.629c2.73,3.398,5.729,6.283,9.461,8.088c3.137,1.518,7.535,2.385,11.893,1.247
+ c2.274-0.592,3.988-2.459,4.375-4.766c0.187-1.094,0.293-2.289,0.283-3.553C42.54,13.244,36.729,5.56,28.415,5.625z"/>
+ <path id="Hair_Young_Black_1_" fill="#5C5C5C" stroke="#353535" stroke-linecap="round" stroke-linejoin="round" d="M20.278,13.25
+ c3.417,4.333,9.333,6.917,9.333,6.917l-1.417-3.5c0,0,7.094,4.691,8.083,4.333c0.968-0.2-1.082-3.807-1.082-3.807
+ s3.138,1.795,4.854,3.969c1.803,2.28,4.285,3.504,4.285,3.504S47.027,2.719,27.289,2.744C8.278,2.709,12.058,27.678,12.058,27.678
+ L14.695,17c0,0,0.914,5.757,1.399,4.875C17.861,15.211,18.861,11.5,20.278,13.25z"/>
+</g>
+</svg>
+
+ <?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="57px" height="67px" viewBox="0 0 57 67" enable-background="new 0 0 57 67" xml:space="preserve">
+<g>
+
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.3398" y1="3115.7266" x2="27.5807" y2="3145.5239" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)">
+ <stop offset="0.2711" style="stop-color:#FFAB4F"/>
+ <stop offset="1" style="stop-color:#FFD28F"/>
+ </linearGradient>
+ <path fill="url(#SVGID_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M49.529,51.225c-4.396-4.396-10.951-5.884-12.063-6.109
+ V37.8H19.278c0,0,0.038,6.903,0,6.868c0,0-6.874,0.997-12.308,6.432C1.378,56.691,0.5,62.77,0.5,62.77
+ c0,1.938,1.575,3.492,3.523,3.492h48.51c1.947,0,3.521-1.558,3.521-3.492C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+
+ <radialGradient id="face_x5F_white_1_" cx="27.5835" cy="3117.4922" r="23.425" fx="23.0139" fy="3115.0024" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FFD28F"/>
+ <stop offset="1" style="stop-color:#FFAB4F"/>
+ </radialGradient>
+ <path id="face_x5F_white_3_" fill="url(#face_x5F_white_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M43.676,23.357
+ c0.086,10.199-6.738,18.52-15.25,18.586c-8.5,0.068-15.464-8.146-15.55-18.344C12.794,13.4,19.618,5.079,28.123,5.012
+ C36.627,4.945,43.59,13.158,43.676,23.357z"/>
+
+ <linearGradient id="face_highlight_1_" gradientUnits="userSpaceOnUse" x1="6468.5" y1="-12286.8594" x2="6492.1294" y2="-12380.3086" gradientTransform="matrix(0.275 0 0 -0.2733 -1752.8849 -3350.4617)">
+ <stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.24"/>
+ <stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0.16"/>
+ </linearGradient>
+ <path id="face_highlight_3_" fill="url(#face_highlight_1_)" d="M28.415,5.625c-6.035,0.047-10.747,4.493-12.787,10.386
+ c-0.664,1.919-0.294,4.043,0.98,5.629c2.73,3.398,5.729,6.283,9.461,8.088c3.137,1.518,7.535,2.385,11.893,1.247
+ c2.274-0.592,3.988-2.459,4.375-4.766c0.187-1.094,0.293-2.289,0.283-3.553C42.54,13.244,36.729,5.56,28.415,5.625z"/>
+ <path id="Hair_Female_1_Red_1_" fill="#FAE1AA" stroke="#E2B354" stroke-linecap="round" stroke-linejoin="round" d="M28.372,0.5
+ C17.537,0.5,8.269,7.748,9.153,26.125c0.563,6.563,5.862,12.042,9.366,13.531c-2.929-10.968-0.304-25.021-0.585-25.526
+ c-0.281-0.505,3.536,6.728,3.536,6.728l3.183-8.312c5.541,4.28,0.393,11.309,1.049,11.058c4.26-1.631,5.34-9.228,5.34-9.228
+ s2.729,3.657,2.701,5.504c-0.054,3.562,2.194-6.067,2.194-6.067l1.027,2.031c6.727,9.822,3.684,16.208,1.648,22.781
+ c15.666-0.703,12.291-10.48,9.66-18.407C43.59,6.092,39.206,0.5,28.372,0.5z"/>
+
+ <linearGradient id="body_1_" gradientUnits="userSpaceOnUse" x1="95.9063" y1="-3134.2153" x2="31.5133" y2="-3134.2153" gradientTransform="matrix(0.9852 0 0 -0.9852 -34.4844 -3031.9851)">
+ <stop offset="0" style="stop-color:#49AD33"/>
+ <stop offset="1" style="stop-color:#C2DA92"/>
+ </linearGradient>
+ <path id="body_8_" fill="url(#body_1_)" stroke="#008D33" d="M0.5,62.768c0,1.938,1.575,3.494,3.523,3.494h48.51
+ c1.947,0,3.521-1.559,3.521-3.494c0,0-1.844-6.861-6.525-11.543c-4.815-4.813-8.244-5.146-8.244-5.146
+ c-1.444,6.983-8.555,8.786-13.007,8.786s-11.322-2.643-11.941-9.439c0,0-4.559,1.199-9.367,5.674
+ C1.378,56.689,0.5,62.768,0.5,62.768z"/>
+</g>
+</svg>
+
+
+
+
diff --git a/docs/guide-id/images/rbac-access-check-3.png b/docs/guide-id/images/rbac-access-check-3.png
new file mode 100644
index 0000000000..1fdc0d935a
Binary files /dev/null and b/docs/guide-id/images/rbac-access-check-3.png differ
diff --git a/docs/guide-id/images/rbac-hierarchy-1.graphml b/docs/guide-id/images/rbac-hierarchy-1.graphml
new file mode 100644
index 0000000000..927b416d61
--- /dev/null
+++ b/docs/guide-id/images/rbac-hierarchy-1.graphml
@@ -0,0 +1,312 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ admin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ author
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ John, ID=2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Jane, ID=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ updatePost
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ createPost
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="57px" height="65px" viewBox="0 0 57 65" enable-background="new 0 0 57 65" xml:space="preserve">
+<g>
+
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.3398" y1="3115.7266" x2="27.5807" y2="3145.5239" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)">
+ <stop offset="0.2711" style="stop-color:#FFAB4F"/>
+ <stop offset="1" style="stop-color:#FFD28F"/>
+ </linearGradient>
+ <path fill="url(#SVGID_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M49.529,51.225c-4.396-4.396-10.951-5.884-12.063-6.109
+ V37.8H19.278c0,0,0.038,6.903,0,6.868c0,0-6.874,0.997-12.308,6.432C1.378,56.691,0.5,62.77,0.5,62.77
+ c0,1.938,1.575,3.492,3.523,3.492h48.51c1.947,0,3.521-1.558,3.521-3.492C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+ <path id="body_18_" fill="#ECECEC" stroke="#9B9B9B" stroke-miterlimit="10" d="M0.5,62.768c0,1.938,1.575,3.494,3.523,3.494h48.51
+ c1.947,0,3.521-1.559,3.521-3.494c0,0-1.844-6.861-6.525-11.543c-4.815-4.813-11.244-6.146-11.244-6.146
+ c-1.771,1.655-5.61,3.802-10.063,3.802c-4.453,0-8.292-2.146-10.063-3.802c0,0-5.755,0.586-11.189,6.021
+ C1.378,56.689,0.5,62.768,0.5,62.768z"/>
+
+ <radialGradient id="SVGID_2_" cx="22.6621" cy="21.707" r="17.7954" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_2_)" stroke="#E55E03" d="M28.106,33.486c-8.112,0-12.688,4.313-12.688,10.438
+ c0,7.422,12.688,10.438,12.688,10.438s14.688-3.016,14.688-10.438C42.793,38.75,36.215,33.486,28.106,33.486z M26.288,53.051
+ c0,0-7.135-2.093-8.805-7.201c-0.222-0.682,0.147-1.156,0.795-1.521V37.8h20.188v6.663c0.235,0.352,1.109,0.737,1.229,1.387
+ C40.445,49.917,26.288,53.051,26.288,53.051z"/>
+
+ <radialGradient id="SVGID_3_" cx="15.2056" cy="831.1875" r="32.3071" gradientTransform="matrix(1 0 0 1 0.0801 -773.6914)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_3_)" stroke="#E55E03" d="M49.529,51.225c-2.239-2.24-5.041-3.724-7.396-4.67
+ c-2.854,5.51-14.021,7.807-14.021,7.807s-10.472-2.483-12.387-8.514c-2.439,0.771-5.787,2.287-8.749,5.25
+ c-5.592,5.592-6.47,11.67-6.47,11.67c0,1.938,1.575,3.492,3.523,3.492h48.51c1.946,0,3.521-1.558,3.521-3.492
+ C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+
+ <radialGradient id="SVGID_4_" cx="17.0723" cy="18.4907" r="11.8931" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_4_)" stroke="#E55E03" d="M13.404,44.173c1.15-1.81,2.039-3.832,3.332-5.397
+ c-0.514,1.027-1.669,4.084-1.669,5.148c0,5.186,10.366,9.079,14.688,10.438c-3.472,1.627-9.134-1.498-11.334-2.359
+ c-3.601-1.419-4.071-3.063-5.89-4.854C12.523,47.135,12.878,45,13.404,44.173z"/>
+
+ <radialGradient id="SVGID_5_" cx="31.8184" cy="19.3525" r="14.63" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_5_)" stroke="#E55E03" d="M45.777,43.924c-1.317-1.568-5.11-9.424-6.604-6.617
+ c0.516,1.025,3.617,3.693,3.617,6.617c0,5.186-10.271,8.576-16.699,9.145c1.429,4.938,11.373,1.293,13.805-0.313
+ c3.563-2.354,4.563-5.133,7.854-3.705C47.754,49.045,48.006,46.574,45.777,43.924z"/>
+
+ <radialGradient id="SVGID_6_" cx="30.4893" cy="4.8721" r="5.2028" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_6_)" stroke="#E55E03" d="M30.777,54.167c0.357,0.836-0.153,1.983-0.352,2.813
+ c-0.256,1.084-0.072,2.104,0.102,3.186c0.164,1.02,0.156,2.107,0.25,3.167c0.082,0.916,0.482,1.849,0.357,2.75"/>
+
+ <radialGradient id="SVGID_7_" cx="23.2871" cy="5.3008" r="5.5143" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_7_)" stroke="#E55E03" d="M23.695,53.417c-0.508,0.584-0.476,2.209-0.398,3
+ c0.116,1.183,0.456,2.099,0.333,3.333c-0.192,1.943,0.154,4.479-0.436,6.333"/>
+
+ <radialGradient id="face_x5F_white_1_" cx="27.5835" cy="3117.4922" r="23.425" fx="23.0139" fy="3115.0024" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FFD28F"/>
+ <stop offset="1" style="stop-color:#FFAB4F"/>
+ </radialGradient>
+ <path id="face_x5F_white_3_" fill="url(#face_x5F_white_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M43.676,23.357
+ c0.086,10.2-6.738,18.52-15.25,18.586c-8.5,0.068-15.464-8.146-15.55-18.344C12.794,13.4,19.618,5.079,28.123,5.012
+ C36.627,4.945,43.59,13.158,43.676,23.357z"/>
+
+ <linearGradient id="face_highlight_1_" gradientUnits="userSpaceOnUse" x1="6468.501" y1="-12291.5195" x2="6492.1304" y2="-12384.9688" gradientTransform="matrix(0.275 0 0 -0.2733 -1752.8849 -3351.7349)">
+ <stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.24"/>
+ <stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0.16"/>
+ </linearGradient>
+ <path id="face_highlight_3_" fill="url(#face_highlight_1_)" d="M28.415,5.625c-6.035,0.047-10.747,4.493-12.787,10.386
+ c-0.664,1.919-0.294,4.043,0.98,5.629c2.73,3.398,5.729,6.283,9.461,8.088c3.137,1.518,7.535,2.385,11.893,1.247
+ c2.274-0.592,3.988-2.459,4.375-4.766c0.187-1.094,0.293-2.289,0.283-3.553C42.54,13.244,36.729,5.56,28.415,5.625z"/>
+ <path id="Hair_Young_Black_1_" fill="#5C5C5C" stroke="#353535" stroke-linecap="round" stroke-linejoin="round" d="M20.278,13.25
+ c3.417,4.333,9.333,6.917,9.333,6.917l-1.417-3.5c0,0,7.094,4.691,8.083,4.333c0.968-0.2-1.082-3.807-1.082-3.807
+ s3.138,1.795,4.854,3.969c1.803,2.28,4.285,3.504,4.285,3.504S47.027,2.719,27.289,2.744C8.278,2.709,12.058,27.678,12.058,27.678
+ L14.695,17c0,0,0.914,5.757,1.399,4.875C17.861,15.211,18.861,11.5,20.278,13.25z"/>
+</g>
+</svg>
+
+ <?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="57px" height="67px" viewBox="0 0 57 67" enable-background="new 0 0 57 67" xml:space="preserve">
+<g>
+
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.3398" y1="3115.7266" x2="27.5807" y2="3145.5239" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)">
+ <stop offset="0.2711" style="stop-color:#FFAB4F"/>
+ <stop offset="1" style="stop-color:#FFD28F"/>
+ </linearGradient>
+ <path fill="url(#SVGID_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M49.529,51.225c-4.396-4.396-10.951-5.884-12.063-6.109
+ V37.8H19.278c0,0,0.038,6.903,0,6.868c0,0-6.874,0.997-12.308,6.432C1.378,56.691,0.5,62.77,0.5,62.77
+ c0,1.938,1.575,3.492,3.523,3.492h48.51c1.947,0,3.521-1.558,3.521-3.492C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+
+ <radialGradient id="face_x5F_white_1_" cx="27.5835" cy="3117.4922" r="23.425" fx="23.0139" fy="3115.0024" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FFD28F"/>
+ <stop offset="1" style="stop-color:#FFAB4F"/>
+ </radialGradient>
+ <path id="face_x5F_white_3_" fill="url(#face_x5F_white_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M43.676,23.357
+ c0.086,10.199-6.738,18.52-15.25,18.586c-8.5,0.068-15.464-8.146-15.55-18.344C12.794,13.4,19.618,5.079,28.123,5.012
+ C36.627,4.945,43.59,13.158,43.676,23.357z"/>
+
+ <linearGradient id="face_highlight_1_" gradientUnits="userSpaceOnUse" x1="6468.5" y1="-12286.8594" x2="6492.1294" y2="-12380.3086" gradientTransform="matrix(0.275 0 0 -0.2733 -1752.8849 -3350.4617)">
+ <stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.24"/>
+ <stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0.16"/>
+ </linearGradient>
+ <path id="face_highlight_3_" fill="url(#face_highlight_1_)" d="M28.415,5.625c-6.035,0.047-10.747,4.493-12.787,10.386
+ c-0.664,1.919-0.294,4.043,0.98,5.629c2.73,3.398,5.729,6.283,9.461,8.088c3.137,1.518,7.535,2.385,11.893,1.247
+ c2.274-0.592,3.988-2.459,4.375-4.766c0.187-1.094,0.293-2.289,0.283-3.553C42.54,13.244,36.729,5.56,28.415,5.625z"/>
+ <path id="Hair_Female_1_Red_1_" fill="#FAE1AA" stroke="#E2B354" stroke-linecap="round" stroke-linejoin="round" d="M28.372,0.5
+ C17.537,0.5,8.269,7.748,9.153,26.125c0.563,6.563,5.862,12.042,9.366,13.531c-2.929-10.968-0.304-25.021-0.585-25.526
+ c-0.281-0.505,3.536,6.728,3.536,6.728l3.183-8.312c5.541,4.28,0.393,11.309,1.049,11.058c4.26-1.631,5.34-9.228,5.34-9.228
+ s2.729,3.657,2.701,5.504c-0.054,3.562,2.194-6.067,2.194-6.067l1.027,2.031c6.727,9.822,3.684,16.208,1.648,22.781
+ c15.666-0.703,12.291-10.48,9.66-18.407C43.59,6.092,39.206,0.5,28.372,0.5z"/>
+
+ <linearGradient id="body_1_" gradientUnits="userSpaceOnUse" x1="95.9063" y1="-3134.2153" x2="31.5133" y2="-3134.2153" gradientTransform="matrix(0.9852 0 0 -0.9852 -34.4844 -3031.9851)">
+ <stop offset="0" style="stop-color:#49AD33"/>
+ <stop offset="1" style="stop-color:#C2DA92"/>
+ </linearGradient>
+ <path id="body_8_" fill="url(#body_1_)" stroke="#008D33" d="M0.5,62.768c0,1.938,1.575,3.494,3.523,3.494h48.51
+ c1.947,0,3.521-1.559,3.521-3.494c0,0-1.844-6.861-6.525-11.543c-4.815-4.813-8.244-5.146-8.244-5.146
+ c-1.444,6.983-8.555,8.786-13.007,8.786s-11.322-2.643-11.941-9.439c0,0-4.559,1.199-9.367,5.674
+ C1.378,56.689,0.5,62.768,0.5,62.768z"/>
+</g>
+</svg>
+
+
+
+
diff --git a/docs/guide-id/images/rbac-hierarchy-1.png b/docs/guide-id/images/rbac-hierarchy-1.png
new file mode 100644
index 0000000000..7443fc7e71
Binary files /dev/null and b/docs/guide-id/images/rbac-hierarchy-1.png differ
diff --git a/docs/guide-id/images/rbac-hierarchy-2.graphml b/docs/guide-id/images/rbac-hierarchy-2.graphml
new file mode 100644
index 0000000000..b81887b0e0
--- /dev/null
+++ b/docs/guide-id/images/rbac-hierarchy-2.graphml
@@ -0,0 +1,368 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ admin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ author
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ John, ID=2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Jane, ID=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ updatePost
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ updateOwnPost
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ createPost
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AuthorRule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="57px" height="65px" viewBox="0 0 57 65" enable-background="new 0 0 57 65" xml:space="preserve">
+<g>
+
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.3398" y1="3115.7266" x2="27.5807" y2="3145.5239" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)">
+ <stop offset="0.2711" style="stop-color:#FFAB4F"/>
+ <stop offset="1" style="stop-color:#FFD28F"/>
+ </linearGradient>
+ <path fill="url(#SVGID_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M49.529,51.225c-4.396-4.396-10.951-5.884-12.063-6.109
+ V37.8H19.278c0,0,0.038,6.903,0,6.868c0,0-6.874,0.997-12.308,6.432C1.378,56.691,0.5,62.77,0.5,62.77
+ c0,1.938,1.575,3.492,3.523,3.492h48.51c1.947,0,3.521-1.558,3.521-3.492C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+ <path id="body_18_" fill="#ECECEC" stroke="#9B9B9B" stroke-miterlimit="10" d="M0.5,62.768c0,1.938,1.575,3.494,3.523,3.494h48.51
+ c1.947,0,3.521-1.559,3.521-3.494c0,0-1.844-6.861-6.525-11.543c-4.815-4.813-11.244-6.146-11.244-6.146
+ c-1.771,1.655-5.61,3.802-10.063,3.802c-4.453,0-8.292-2.146-10.063-3.802c0,0-5.755,0.586-11.189,6.021
+ C1.378,56.689,0.5,62.768,0.5,62.768z"/>
+
+ <radialGradient id="SVGID_2_" cx="22.6621" cy="21.707" r="17.7954" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_2_)" stroke="#E55E03" d="M28.106,33.486c-8.112,0-12.688,4.313-12.688,10.438
+ c0,7.422,12.688,10.438,12.688,10.438s14.688-3.016,14.688-10.438C42.793,38.75,36.215,33.486,28.106,33.486z M26.288,53.051
+ c0,0-7.135-2.093-8.805-7.201c-0.222-0.682,0.147-1.156,0.795-1.521V37.8h20.188v6.663c0.235,0.352,1.109,0.737,1.229,1.387
+ C40.445,49.917,26.288,53.051,26.288,53.051z"/>
+
+ <radialGradient id="SVGID_3_" cx="15.2056" cy="831.1875" r="32.3071" gradientTransform="matrix(1 0 0 1 0.0801 -773.6914)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_3_)" stroke="#E55E03" d="M49.529,51.225c-2.239-2.24-5.041-3.724-7.396-4.67
+ c-2.854,5.51-14.021,7.807-14.021,7.807s-10.472-2.483-12.387-8.514c-2.439,0.771-5.787,2.287-8.749,5.25
+ c-5.592,5.592-6.47,11.67-6.47,11.67c0,1.938,1.575,3.492,3.523,3.492h48.51c1.946,0,3.521-1.558,3.521-3.492
+ C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+
+ <radialGradient id="SVGID_4_" cx="17.0723" cy="18.4907" r="11.8931" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_4_)" stroke="#E55E03" d="M13.404,44.173c1.15-1.81,2.039-3.832,3.332-5.397
+ c-0.514,1.027-1.669,4.084-1.669,5.148c0,5.186,10.366,9.079,14.688,10.438c-3.472,1.627-9.134-1.498-11.334-2.359
+ c-3.601-1.419-4.071-3.063-5.89-4.854C12.523,47.135,12.878,45,13.404,44.173z"/>
+
+ <radialGradient id="SVGID_5_" cx="31.8184" cy="19.3525" r="14.63" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_5_)" stroke="#E55E03" d="M45.777,43.924c-1.317-1.568-5.11-9.424-6.604-6.617
+ c0.516,1.025,3.617,3.693,3.617,6.617c0,5.186-10.271,8.576-16.699,9.145c1.429,4.938,11.373,1.293,13.805-0.313
+ c3.563-2.354,4.563-5.133,7.854-3.705C47.754,49.045,48.006,46.574,45.777,43.924z"/>
+
+ <radialGradient id="SVGID_6_" cx="30.4893" cy="4.8721" r="5.2028" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_6_)" stroke="#E55E03" d="M30.777,54.167c0.357,0.836-0.153,1.983-0.352,2.813
+ c-0.256,1.084-0.072,2.104,0.102,3.186c0.164,1.02,0.156,2.107,0.25,3.167c0.082,0.916,0.482,1.849,0.357,2.75"/>
+
+ <radialGradient id="SVGID_7_" cx="23.2871" cy="5.3008" r="5.5143" gradientTransform="matrix(1 0 0 -1 0.04 64.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FCB57A"/>
+ <stop offset="1" style="stop-color:#FF8C36"/>
+ </radialGradient>
+ <path fill="url(#SVGID_7_)" stroke="#E55E03" d="M23.695,53.417c-0.508,0.584-0.476,2.209-0.398,3
+ c0.116,1.183,0.456,2.099,0.333,3.333c-0.192,1.943,0.154,4.479-0.436,6.333"/>
+
+ <radialGradient id="face_x5F_white_1_" cx="27.5835" cy="3117.4922" r="23.425" fx="23.0139" fy="3115.0024" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FFD28F"/>
+ <stop offset="1" style="stop-color:#FFAB4F"/>
+ </radialGradient>
+ <path id="face_x5F_white_3_" fill="url(#face_x5F_white_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M43.676,23.357
+ c0.086,10.2-6.738,18.52-15.25,18.586c-8.5,0.068-15.464-8.146-15.55-18.344C12.794,13.4,19.618,5.079,28.123,5.012
+ C36.627,4.945,43.59,13.158,43.676,23.357z"/>
+
+ <linearGradient id="face_highlight_1_" gradientUnits="userSpaceOnUse" x1="6468.501" y1="-12291.5195" x2="6492.1304" y2="-12384.9688" gradientTransform="matrix(0.275 0 0 -0.2733 -1752.8849 -3351.7349)">
+ <stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.24"/>
+ <stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0.16"/>
+ </linearGradient>
+ <path id="face_highlight_3_" fill="url(#face_highlight_1_)" d="M28.415,5.625c-6.035,0.047-10.747,4.493-12.787,10.386
+ c-0.664,1.919-0.294,4.043,0.98,5.629c2.73,3.398,5.729,6.283,9.461,8.088c3.137,1.518,7.535,2.385,11.893,1.247
+ c2.274-0.592,3.988-2.459,4.375-4.766c0.187-1.094,0.293-2.289,0.283-3.553C42.54,13.244,36.729,5.56,28.415,5.625z"/>
+ <path id="Hair_Young_Black_1_" fill="#5C5C5C" stroke="#353535" stroke-linecap="round" stroke-linejoin="round" d="M20.278,13.25
+ c3.417,4.333,9.333,6.917,9.333,6.917l-1.417-3.5c0,0,7.094,4.691,8.083,4.333c0.968-0.2-1.082-3.807-1.082-3.807
+ s3.138,1.795,4.854,3.969c1.803,2.28,4.285,3.504,4.285,3.504S47.027,2.719,27.289,2.744C8.278,2.709,12.058,27.678,12.058,27.678
+ L14.695,17c0,0,0.914,5.757,1.399,4.875C17.861,15.211,18.861,11.5,20.278,13.25z"/>
+</g>
+</svg>
+
+ <?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="57px" height="67px" viewBox="0 0 57 67" enable-background="new 0 0 57 67" xml:space="preserve">
+<g>
+
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.3398" y1="3115.7266" x2="27.5807" y2="3145.5239" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)">
+ <stop offset="0.2711" style="stop-color:#FFAB4F"/>
+ <stop offset="1" style="stop-color:#FFD28F"/>
+ </linearGradient>
+ <path fill="url(#SVGID_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M49.529,51.225c-4.396-4.396-10.951-5.884-12.063-6.109
+ V37.8H19.278c0,0,0.038,6.903,0,6.868c0,0-6.874,0.997-12.308,6.432C1.378,56.691,0.5,62.77,0.5,62.77
+ c0,1.938,1.575,3.492,3.523,3.492h48.51c1.947,0,3.521-1.558,3.521-3.492C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+
+ <radialGradient id="face_x5F_white_1_" cx="27.5835" cy="3117.4922" r="23.425" fx="23.0139" fy="3115.0024" gradientTransform="matrix(1 0 0 1 0.3203 -3091.7656)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FFD28F"/>
+ <stop offset="1" style="stop-color:#FFAB4F"/>
+ </radialGradient>
+ <path id="face_x5F_white_3_" fill="url(#face_x5F_white_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M43.676,23.357
+ c0.086,10.199-6.738,18.52-15.25,18.586c-8.5,0.068-15.464-8.146-15.55-18.344C12.794,13.4,19.618,5.079,28.123,5.012
+ C36.627,4.945,43.59,13.158,43.676,23.357z"/>
+
+ <linearGradient id="face_highlight_1_" gradientUnits="userSpaceOnUse" x1="6468.5" y1="-12286.8594" x2="6492.1294" y2="-12380.3086" gradientTransform="matrix(0.275 0 0 -0.2733 -1752.8849 -3350.4617)">
+ <stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.24"/>
+ <stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0.16"/>
+ </linearGradient>
+ <path id="face_highlight_3_" fill="url(#face_highlight_1_)" d="M28.415,5.625c-6.035,0.047-10.747,4.493-12.787,10.386
+ c-0.664,1.919-0.294,4.043,0.98,5.629c2.73,3.398,5.729,6.283,9.461,8.088c3.137,1.518,7.535,2.385,11.893,1.247
+ c2.274-0.592,3.988-2.459,4.375-4.766c0.187-1.094,0.293-2.289,0.283-3.553C42.54,13.244,36.729,5.56,28.415,5.625z"/>
+ <path id="Hair_Female_1_Red_1_" fill="#FAE1AA" stroke="#E2B354" stroke-linecap="round" stroke-linejoin="round" d="M28.372,0.5
+ C17.537,0.5,8.269,7.748,9.153,26.125c0.563,6.563,5.862,12.042,9.366,13.531c-2.929-10.968-0.304-25.021-0.585-25.526
+ c-0.281-0.505,3.536,6.728,3.536,6.728l3.183-8.312c5.541,4.28,0.393,11.309,1.049,11.058c4.26-1.631,5.34-9.228,5.34-9.228
+ s2.729,3.657,2.701,5.504c-0.054,3.562,2.194-6.067,2.194-6.067l1.027,2.031c6.727,9.822,3.684,16.208,1.648,22.781
+ c15.666-0.703,12.291-10.48,9.66-18.407C43.59,6.092,39.206,0.5,28.372,0.5z"/>
+
+ <linearGradient id="body_1_" gradientUnits="userSpaceOnUse" x1="95.9063" y1="-3134.2153" x2="31.5133" y2="-3134.2153" gradientTransform="matrix(0.9852 0 0 -0.9852 -34.4844 -3031.9851)">
+ <stop offset="0" style="stop-color:#49AD33"/>
+ <stop offset="1" style="stop-color:#C2DA92"/>
+ </linearGradient>
+ <path id="body_8_" fill="url(#body_1_)" stroke="#008D33" d="M0.5,62.768c0,1.938,1.575,3.494,3.523,3.494h48.51
+ c1.947,0,3.521-1.559,3.521-3.494c0,0-1.844-6.861-6.525-11.543c-4.815-4.813-8.244-5.146-8.244-5.146
+ c-1.444,6.983-8.555,8.786-13.007,8.786s-11.322-2.643-11.941-9.439c0,0-4.559,1.199-9.367,5.674
+ C1.378,56.689,0.5,62.768,0.5,62.768z"/>
+</g>
+</svg>
+
+
+
+
diff --git a/docs/guide-id/images/rbac-hierarchy-2.png b/docs/guide-id/images/rbac-hierarchy-2.png
new file mode 100644
index 0000000000..e77c5647c1
Binary files /dev/null and b/docs/guide-id/images/rbac-hierarchy-2.png differ
diff --git a/docs/guide-id/images/request-lifecycle.graphml b/docs/guide-id/images/request-lifecycle.graphml
new file mode 100644
index 0000000000..aed5293b17
--- /dev/null
+++ b/docs/guide-id/images/request-lifecycle.graphml
@@ -0,0 +1,834 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ user
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ model
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ database
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ view
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ controller
+
+
+
+
+
+
+
+
+
+ Folder 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ create action
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ perform filters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ action
+
+
+
+
+
+
+
+
+
+ Folder 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ load model
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ render view
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ response component
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ request component
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ application
+
+
+
+
+
+
+
+
+
+ Folder 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ resolve route
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ create controller
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ entry script
+
+
+
+
+
+
+
+
+
+ Folder 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ load app config
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ run application
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 11
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 9
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="57px" height="66px" viewBox="0 0 57 66" enable-background="new 0 0 57 66" xml:space="preserve">
+<g>
+
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.3799" y1="-2276.8809" x2="27.6209" y2="-2306.6792" gradientTransform="matrix(1 0 0 -1 0.2803 -2252.9199)">
+ <stop offset="0.2711" style="stop-color:#FFAB4F"/>
+ <stop offset="1" style="stop-color:#FFD28F"/>
+ </linearGradient>
+ <path fill="url(#SVGID_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M49.529,51.225c-4.396-4.396-10.951-5.884-12.063-6.109
+ V37.8H19.278c0,0,0.038,6.903,0,6.868c0,0-6.874,0.997-12.308,6.432C1.378,56.691,0.5,62.77,0.5,62.77
+ c0,1.938,1.575,3.492,3.523,3.492h48.51c1.947,0,3.521-1.558,3.521-3.492C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+ <path id="body_13_" fill="#ECECEC" stroke="#9B9B9B" stroke-miterlimit="10" d="M0.5,62.768c0,1.938,1.575,3.494,3.523,3.494h48.51
+ c1.947,0,3.521-1.559,3.521-3.494c0,0-1.844-6.861-6.525-11.543c-4.815-4.813-11.244-6.146-11.244-6.146
+ c-1.771,1.655-5.61,3.802-10.063,3.802c-4.453,0-8.292-2.146-10.063-3.802c0,0-5.755,0.586-11.189,6.021
+ C1.378,56.689,0.5,62.768,0.5,62.768z"/>
+ <path fill="#2068A3" stroke="#2068A3" d="M28.106,33.487c-8.112,0-12.688,4.312-12.688,10.437c0,7.422,12.688,10.438,12.688,10.438
+ s14.688-3.016,14.688-10.438C42.793,38.75,36.215,33.487,28.106,33.487z M26.288,53.051c0,0-7.135-2.093-8.805-7.201
+ c-0.222-0.682,0.147-1.156,0.795-1.521V37.8h20.188v6.663c0.235,0.352,1.109,0.737,1.229,1.387
+ C40.445,49.917,26.288,53.051,26.288,53.051z"/>
+
+ <radialGradient id="SVGID_2_" cx="14.2417" cy="9.1006" r="53.247" gradientTransform="matrix(1 0 0 -1 0.04 65.1543)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#74AEEE"/>
+ <stop offset="1" style="stop-color:#2068A3"/>
+ </radialGradient>
+ <path fill="url(#SVGID_2_)" stroke="#2068A3" stroke-miterlimit="10" d="M49.529,51.225c-2.239-2.24-5.041-3.724-7.396-4.67
+ c-2.854,5.51-14.022,7.807-14.022,7.807s-10.472-2.484-12.387-8.514c-2.439,0.771-5.787,2.287-8.749,5.25
+ c-5.592,5.592-6.47,11.67-6.47,11.67c0,1.938,1.575,3.492,3.523,3.492h48.51c1.947,0,3.521-1.558,3.521-3.492
+ C56.055,62.768,54.211,55.906,49.529,51.225z"/>
+ <path fill="#5491CF" stroke="#2068A3" d="M13.404,44.173c1.15-1.81,2.039-3.832,3.332-5.397c-0.514,1.027-1.669,4.084-1.669,5.148
+ c0,5.186,10.366,9.079,14.688,10.438c-3.472,1.627-9.134-1.498-11.335-2.36c-3.601-1.419-4.071-3.063-5.89-4.854
+ C12.523,47.135,12.878,45,13.404,44.173z"/>
+ <path fill="#5491CF" stroke="#2068A3" d="M45.777,43.924c-1.317-1.568-5.11-9.424-6.604-6.617c0.516,1.025,3.617,3.693,3.617,6.617
+ c0,5.186-10.27,8.576-16.698,9.145c1.429,4.938,11.372,1.293,13.804-0.313c3.563-2.354,4.563-5.133,7.854-3.705
+ C47.754,49.045,48.006,46.574,45.777,43.924z"/>
+ <path fill="none" stroke="#2068A3" stroke-linecap="round" d="M30.777,54.167c0.357,0.836-0.153,1.983-0.352,2.813
+ c-0.256,1.084-0.072,2.104,0.102,3.186c0.164,1.02,0.156,2.107,0.25,3.167c0.082,0.916,0.482,1.849,0.357,2.75"/>
+ <path fill="none" stroke="#2068A3" stroke-linecap="round" d="M23.695,53.417c-0.508,0.584-0.476,2.209-0.398,3
+ c0.116,1.183,0.456,2.099,0.333,3.333c-0.192,1.943,0.154,4.479-0.436,6.333"/>
+
+ <radialGradient id="face_x5F_white_1_" cx="27.623" cy="-2278.646" r="23.425" fx="23.0534" fy="-2281.1357" gradientTransform="matrix(1 0 0 -1 0.2803 -2252.9199)" gradientUnits="userSpaceOnUse">
+ <stop offset="0" style="stop-color:#FFD28F"/>
+ <stop offset="1" style="stop-color:#FFAB4F"/>
+ </radialGradient>
+ <path id="face_x5F_white_3_" fill="url(#face_x5F_white_1_)" stroke="#ED9135" stroke-miterlimit="10" d="M43.676,23.357
+ c0.086,10.2-6.738,18.52-15.25,18.586c-8.5,0.068-15.464-8.146-15.55-18.344C12.794,13.4,19.618,5.079,28.123,5.012
+ C36.627,4.945,43.59,13.158,43.676,23.357z"/>
+
+ <linearGradient id="face_highlight_1_" gradientUnits="userSpaceOnUse" x1="5761.7578" y1="11330.6484" x2="5785.3872" y2="11424.0977" gradientTransform="matrix(0.275 0 0 0.2733 -1558.9874 -3088.4209)">
+ <stop offset="0" style="stop-color:#FFFFFF;stop-opacity:0.24"/>
+ <stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0.16"/>
+ </linearGradient>
+ <path id="face_highlight_3_" fill="url(#face_highlight_1_)" d="M27.958,6.333c-6.035,0.047-10.747,4.493-12.787,10.386
+ c-0.664,1.919-0.294,4.043,0.98,5.629c2.73,3.398,5.729,6.283,9.461,8.088c3.137,1.518,7.535,2.385,11.893,1.247
+ c2.274-0.592,3.988-2.459,4.375-4.766c0.187-1.094,0.293-2.289,0.283-3.553C42.083,13.952,36.271,6.268,27.958,6.333z"/>
+ <path id="Hair_Young_Brown_1_" fill="#CC9869" stroke="#99724F" stroke-linecap="round" stroke-linejoin="round" d="M20.278,13.25
+ c3.417,4.333,9.333,6.917,9.333,6.917l-1.417-3.5c0,0,7.094,4.691,8.083,4.333c0.968-0.2-1.082-3.807-1.082-3.807
+ s3.138,1.795,4.854,3.969c1.803,2.28,4.285,3.504,4.285,3.504S47.027,2.719,27.289,2.744C8.278,2.709,12.058,27.678,12.058,27.678
+ L14.695,17c0,0,0.914,5.757,1.399,4.875C17.861,15.211,18.861,11.5,20.278,13.25z"/>
+ <path fill="#4B4B4B" stroke="#4B4B4B" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M28.105,2
+ C22.464,2,20.2,4.246,18.13,5.533C29.753,2.865,41.152,10.375,44.46,20.5C44.459,16.875,44.459,2,28.105,2z"/>
+ <path fill="#9B9B9B" stroke="#4B4B4B" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M11.151,17.751
+ C12.878,8.25,18.686,6.309,25.273,7.127C31.295,7.875,36.93,10.491,44.459,20.5C37.777,7.125,20.278-3.375,9.903,3.921
+ C5.569,6.97,4.903,13.375,11.151,17.751z"/>
+</g>
+</svg>
+
+ <?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+ x="0px" y="0px" width="41px" height="48px" viewBox="-0.875 -0.887 41 48" enable-background="new -0.875 -0.887 41 48"
+ xml:space="preserve">
+<defs>
+</defs>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="642.8008" y1="-979.1445" x2="682.0508" y2="-979.1445" gradientTransform="matrix(1 0 0 -1 -642.8008 -939.4756)">
+ <stop offset="0" style="stop-color:#3C89C9"/>
+ <stop offset="0.1482" style="stop-color:#60A6DD"/>
+ <stop offset="0.3113" style="stop-color:#81C1F0"/>
+ <stop offset="0.4476" style="stop-color:#95D1FB"/>
+ <stop offset="0.5394" style="stop-color:#9CD7FF"/>
+ <stop offset="0.636" style="stop-color:#98D4FD"/>
+ <stop offset="0.7293" style="stop-color:#8DCAF6"/>
+ <stop offset="0.8214" style="stop-color:#79BBEB"/>
+ <stop offset="0.912" style="stop-color:#5EA5DC"/>
+ <stop offset="1" style="stop-color:#3C89C9"/>
+</linearGradient>
+<path fill="url(#SVGID_1_)" d="M19.625,36.763C8.787,36.763,0,34.888,0,32.575v10c0,2.313,8.787,4.188,19.625,4.188
+ c10.839,0,19.625-1.875,19.625-4.188v-10C39.25,34.888,30.464,36.763,19.625,36.763z"/>
+<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="642.8008" y1="-973.1445" x2="682.0508" y2="-973.1445" gradientTransform="matrix(1 0 0 -1 -642.8008 -939.4756)">
+ <stop offset="0" style="stop-color:#9CD7FF"/>
+ <stop offset="0.0039" style="stop-color:#9DD7FF"/>
+ <stop offset="0.2273" style="stop-color:#BDE5FF"/>
+ <stop offset="0.4138" style="stop-color:#D1EEFF"/>
+ <stop offset="0.5394" style="stop-color:#D9F1FF"/>
+ <stop offset="0.6155" style="stop-color:#D5EFFE"/>
+ <stop offset="0.6891" style="stop-color:#C9E7FA"/>
+ <stop offset="0.7617" style="stop-color:#B6DAF3"/>
+ <stop offset="0.8337" style="stop-color:#9AC8EA"/>
+ <stop offset="0.9052" style="stop-color:#77B0DD"/>
+ <stop offset="0.9754" style="stop-color:#4D94CF"/>
+ <stop offset="1" style="stop-color:#3C89C9"/>
+</linearGradient>
+<path fill="url(#SVGID_2_)" d="M19.625,36.763c10.839,0,19.625-1.875,19.625-4.188l-1.229-2c0,2.168-8.235,3.927-18.396,3.927
+ c-9.481,0-17.396-1.959-18.396-3.927l-1.229,2C0,34.888,8.787,36.763,19.625,36.763z"/>
+<path fill="#3C89C9" d="M19.625,26.468c10.16,0,19.625,2.775,19.625,2.775c-0.375,2.721-5.367,5.438-19.554,5.438
+ c-12.125,0-18.467-2.484-19.541-4.918C-0.127,29.125,9.465,26.468,19.625,26.468z"/>
+<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="642.8008" y1="-965.6948" x2="682.0508" y2="-965.6948" gradientTransform="matrix(1 0 0 -1 -642.8008 -939.4756)">
+ <stop offset="0" style="stop-color:#3C89C9"/>
+ <stop offset="0.1482" style="stop-color:#60A6DD"/>
+ <stop offset="0.3113" style="stop-color:#81C1F0"/>
+ <stop offset="0.4476" style="stop-color:#95D1FB"/>
+ <stop offset="0.5394" style="stop-color:#9CD7FF"/>
+ <stop offset="0.636" style="stop-color:#98D4FD"/>
+ <stop offset="0.7293" style="stop-color:#8DCAF6"/>
+ <stop offset="0.8214" style="stop-color:#79BBEB"/>
+ <stop offset="0.912" style="stop-color:#5EA5DC"/>
+ <stop offset="1" style="stop-color:#3C89C9"/>
+</linearGradient>
+<path fill="url(#SVGID_3_)" d="M19.625,23.313C8.787,23.313,0,21.438,0,19.125v10c0,2.313,8.787,4.188,19.625,4.188
+ c10.839,0,19.625-1.875,19.625-4.188v-10C39.25,21.438,30.464,23.313,19.625,23.313z"/>
+<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="642.8008" y1="-959.6948" x2="682.0508" y2="-959.6948" gradientTransform="matrix(1 0 0 -1 -642.8008 -939.4756)">
+ <stop offset="0" style="stop-color:#9CD7FF"/>
+ <stop offset="0.0039" style="stop-color:#9DD7FF"/>
+ <stop offset="0.2273" style="stop-color:#BDE5FF"/>
+ <stop offset="0.4138" style="stop-color:#D1EEFF"/>
+ <stop offset="0.5394" style="stop-color:#D9F1FF"/>
+ <stop offset="0.6155" style="stop-color:#D5EFFE"/>
+ <stop offset="0.6891" style="stop-color:#C9E7FA"/>
+ <stop offset="0.7617" style="stop-color:#B6DAF3"/>
+ <stop offset="0.8337" style="stop-color:#9AC8EA"/>
+ <stop offset="0.9052" style="stop-color:#77B0DD"/>
+ <stop offset="0.9754" style="stop-color:#4D94CF"/>
+ <stop offset="1" style="stop-color:#3C89C9"/>
+</linearGradient>
+<path fill="url(#SVGID_4_)" d="M19.625,23.313c10.839,0,19.625-1.875,19.625-4.188l-1.229-2c0,2.168-8.235,3.926-18.396,3.926
+ c-9.481,0-17.396-1.959-18.396-3.926l-1.229,2C0,21.438,8.787,23.313,19.625,23.313z"/>
+<path fill="#3C89C9" d="M19.476,13.019c10.161,0,19.625,2.775,19.625,2.775c-0.375,2.721-5.367,5.438-19.555,5.438
+ c-12.125,0-18.467-2.485-19.541-4.918C-0.277,15.674,9.316,13.019,19.476,13.019z"/>
+<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="642.8008" y1="-952.4946" x2="682.0508" y2="-952.4946" gradientTransform="matrix(1 0 0 -1 -642.8008 -939.4756)">
+ <stop offset="0" style="stop-color:#3C89C9"/>
+ <stop offset="0.1482" style="stop-color:#60A6DD"/>
+ <stop offset="0.3113" style="stop-color:#81C1F0"/>
+ <stop offset="0.4476" style="stop-color:#95D1FB"/>
+ <stop offset="0.5394" style="stop-color:#9CD7FF"/>
+ <stop offset="0.636" style="stop-color:#98D4FD"/>
+ <stop offset="0.7293" style="stop-color:#8DCAF6"/>
+ <stop offset="0.8214" style="stop-color:#79BBEB"/>
+ <stop offset="0.912" style="stop-color:#5EA5DC"/>
+ <stop offset="1" style="stop-color:#3C89C9"/>
+</linearGradient>
+<path fill="url(#SVGID_5_)" d="M19.625,10.113C8.787,10.113,0,8.238,0,5.925v10c0,2.313,8.787,4.188,19.625,4.188
+ c10.839,0,19.625-1.875,19.625-4.188v-10C39.25,8.238,30.464,10.113,19.625,10.113z"/>
+<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="642.8008" y1="-946.4946" x2="682.0508" y2="-946.4946" gradientTransform="matrix(1 0 0 -1 -642.8008 -939.4756)">
+ <stop offset="0" style="stop-color:#9CD7FF"/>
+ <stop offset="0.0039" style="stop-color:#9DD7FF"/>
+ <stop offset="0.2273" style="stop-color:#BDE5FF"/>
+ <stop offset="0.4138" style="stop-color:#D1EEFF"/>
+ <stop offset="0.5394" style="stop-color:#D9F1FF"/>
+ <stop offset="0.6155" style="stop-color:#D5EFFE"/>
+ <stop offset="0.6891" style="stop-color:#C9E7FA"/>
+ <stop offset="0.7617" style="stop-color:#B6DAF3"/>
+ <stop offset="0.8337" style="stop-color:#9AC8EA"/>
+ <stop offset="0.9052" style="stop-color:#77B0DD"/>
+ <stop offset="0.9754" style="stop-color:#4D94CF"/>
+ <stop offset="1" style="stop-color:#3C89C9"/>
+</linearGradient>
+<path fill="url(#SVGID_6_)" d="M19.625,10.113c10.839,0,19.625-1.875,19.625-4.188l-1.229-2c0,2.168-8.235,3.926-18.396,3.926
+ c-9.481,0-17.396-1.959-18.396-3.926L0,5.925C0,8.238,8.787,10.113,19.625,10.113z"/>
+<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="644.0293" y1="-943.4014" x2="680.8223" y2="-943.4014" gradientTransform="matrix(1 0 0 -1 -642.8008 -939.4756)">
+ <stop offset="0" style="stop-color:#9CD7FF"/>
+ <stop offset="1" style="stop-color:#3C89C9"/>
+</linearGradient>
+<ellipse fill="url(#SVGID_7_)" cx="19.625" cy="3.926" rx="18.396" ry="3.926"/>
+<path opacity="0.24" fill="#FFFFFF" enable-background="new " d="M31.04,45.982c0,0-4.354,0.664-7.29,0.781
+ c-3.125,0.125-8.952,0-8.952,0l-2.384-10.292l0.044-2.108l-1.251-1.154L9.789,23.024l-0.082-0.119L9.5,20.529l-1.65-1.254
+ L5.329,8.793c0,0,4.213,0.903,7.234,1.07s8.375,0.25,8.375,0.25l3,9.875l-0.25,1.313l1.063,2.168l2.312,9.645l-0.521,1.416
+ l1.46,1.834L31.04,45.982z"/>
+</svg>
+
+
+
+
diff --git a/docs/guide-id/images/request-lifecycle.png b/docs/guide-id/images/request-lifecycle.png
new file mode 100644
index 0000000000..f9ed032cec
Binary files /dev/null and b/docs/guide-id/images/request-lifecycle.png differ
diff --git a/docs/guide-id/images/start-app-installed.png b/docs/guide-id/images/start-app-installed.png
new file mode 100644
index 0000000000..a70f3e687d
Binary files /dev/null and b/docs/guide-id/images/start-app-installed.png differ
diff --git a/docs/guide-id/images/start-country-list.png b/docs/guide-id/images/start-country-list.png
new file mode 100644
index 0000000000..375419414d
Binary files /dev/null and b/docs/guide-id/images/start-country-list.png differ
diff --git a/docs/guide-id/images/start-entry-confirmation.png b/docs/guide-id/images/start-entry-confirmation.png
new file mode 100644
index 0000000000..ed442a4c6e
Binary files /dev/null and b/docs/guide-id/images/start-entry-confirmation.png differ
diff --git a/docs/guide-id/images/start-form-validation.png b/docs/guide-id/images/start-form-validation.png
new file mode 100644
index 0000000000..f38652871d
Binary files /dev/null and b/docs/guide-id/images/start-form-validation.png differ
diff --git a/docs/guide-id/images/start-gii-country-grid.png b/docs/guide-id/images/start-gii-country-grid.png
new file mode 100644
index 0000000000..746663c8f9
Binary files /dev/null and b/docs/guide-id/images/start-gii-country-grid.png differ
diff --git a/docs/guide-id/images/start-gii-country-update.png b/docs/guide-id/images/start-gii-country-update.png
new file mode 100644
index 0000000000..51f2d38a32
Binary files /dev/null and b/docs/guide-id/images/start-gii-country-update.png differ
diff --git a/docs/guide-id/images/start-gii-crud-preview.png b/docs/guide-id/images/start-gii-crud-preview.png
new file mode 100644
index 0000000000..85c2355f2e
Binary files /dev/null and b/docs/guide-id/images/start-gii-crud-preview.png differ
diff --git a/docs/guide-id/images/start-gii-crud.png b/docs/guide-id/images/start-gii-crud.png
new file mode 100644
index 0000000000..77c1ada18a
Binary files /dev/null and b/docs/guide-id/images/start-gii-crud.png differ
diff --git a/docs/guide-id/images/start-gii-model-preview.png b/docs/guide-id/images/start-gii-model-preview.png
new file mode 100644
index 0000000000..080be64b1f
Binary files /dev/null and b/docs/guide-id/images/start-gii-model-preview.png differ
diff --git a/docs/guide-id/images/start-gii-model.png b/docs/guide-id/images/start-gii-model.png
new file mode 100644
index 0000000000..59c16a477e
Binary files /dev/null and b/docs/guide-id/images/start-gii-model.png differ
diff --git a/docs/guide-id/images/start-gii.png b/docs/guide-id/images/start-gii.png
new file mode 100644
index 0000000000..28c75b6b79
Binary files /dev/null and b/docs/guide-id/images/start-gii.png differ
diff --git a/docs/guide-id/images/start-hello-world.png b/docs/guide-id/images/start-hello-world.png
new file mode 100644
index 0000000000..30d1acad38
Binary files /dev/null and b/docs/guide-id/images/start-hello-world.png differ
diff --git a/docs/guide-id/images/tutorial-console-help.png b/docs/guide-id/images/tutorial-console-help.png
new file mode 100644
index 0000000000..6813a96bd4
Binary files /dev/null and b/docs/guide-id/images/tutorial-console-help.png differ
diff --git a/docs/guide-id/intro-upgrade-from-v1.md b/docs/guide-id/intro-upgrade-from-v1.md
new file mode 100644
index 0000000000..df26874d4c
--- /dev/null
+++ b/docs/guide-id/intro-upgrade-from-v1.md
@@ -0,0 +1,540 @@
+Upgrade dari Versi 1.1
+==========================
+
+Ada banyak perbedaan antara versi 1.1 dan 2.0 karena Yii Framework benar-benar ditulis ulang di versi 2.0.
+Akibatnya, upgrade dari versi 1.1 tidak mudah seperti upgrade untuk versi minor. Dalam panduan ini Anda akan
+menemukan perbedaan utama antara dua versi.
+
+Jika Anda belum pernah menggunakan Yii 1.1 sebelumnya, Anda dapat dengan aman melewati bagian ini dan menuju ke "[Persiapan](start-installation.md)".
+
+Harap dicatat bahwa Yii 2.0 memperkenalkan lebih banyak fitur baru dari yang tercakup dalam ringkasan ini. Sangat dianjurkan
+Anda membaca keseluruhan panduan definitif untuk mempelajari hal tersebut. Kemungkinannya adalah bahwa
+beberapa fitur yang sebelumnya harus anda kembangkan sendiri kini menjadi bagian dari kode inti.
+
+
+Instalasi
+------------
+
+Yii 2.0 sepenuhnya menggunakan [composer](https://getcomposer.org/), yaitu dependency manager yang sudah diakui oleh PHP. Instalasi
+dari kerangka inti serta ekstensi, ditangani melalui Composer. Silakan merujuk ke
+bagian [Instalasi Yii](start-installation.md) untuk belajar cara menginstal Yii 2.0. Jika Anda menghendaki
+membuat ekstensi baru, atau mengubah ekstensi 1.1 yang sudah ke ekstensi 2.0 yang kompatibel, silakan
+merujuk panduan [Membuat Ekstensi](structure-extensions.md#menciptakan-ekstensi).
+
+
+Persyaratan PHP
+----------------
+
+Yii 2.0 membutuhkan PHP 5.4 atau versi lebih tinggi, yang merupakan perbaikan besar atas PHP versi 5.2 yang dibutuhkan oleh Yii 1.1.
+Akibatnya, ada banyak perbedaan pada tingkat bahasa yang harus Anda perhatikan.
+Di bawah ini adalah ringkasan perubahan utama mengenai PHP:
+
+- [Namespaces](http://php.net/manual/en/language.namespaces.php).
+- [Anonymous fungsi](http://php.net/manual/en/functions.anonymous.php).
+- Sintaks array pendek `[... elemen ...]` digunakan sebagai pengganti `array (... elemen ...)`.
+- Tags echo pendek `<=` digunakan dalam tampilan file. Ini aman digunakan mulai dari PHP 5.4.
+- [Class SPL dan interface](http://php.net/manual/en/book.spl.php).
+- [Late Static Bindings](http://php.net/manual/en/language.oop5.late-static-bindings.php).
+- [Tanggal dan Waktu](http://php.net/manual/en/book.datetime.php).
+- [Traits](http://php.net/manual/en/language.oop5.traits.php).
+- [Intl](http://php.net/manual/en/book.intl.php). Yii 2.0 menggunakan `ekstensi PHP intl`
+ untuk mendukung fitur internasionalisasi.
+
+
+Namespace
+---------
+
+Perubahan yang paling jelas dalam Yii 2.0 adalah penggunaan namespace. Hampir setiap kelas inti
+menggunakan namespace, misalnya, `yii\web\Request`. Awalan "C" tidak lagi digunakan dalam nama kelas.
+Skema penamaan sekarang mengikuti struktur direktori. Misalnya, `yii\web\Request`
+menunjukkan bahwa file kelas yang sesuai adalah `web/Request.php` bawah folder framework Yii.
+
+(Anda dapat menggunakan setiap kelas inti tanpa menyertakannya secara eksplisit berkat Yiiclass loader.)
+
+
+Komponen dan Object
+--------------------
+
+Yii 2.0 membagi kelas `CComponent` di 1.1 menjadi dua kelas: [[yii\base\Object]] dan [[yii\base\Component]].
+Class [[yii\base\Object|Object]] adalah class dasar ringan yang memungkinkan mendefinisikan [objek properti](concept-properties.md)
+melalui getter dan setter. Class [[yii\base\Component|Component]] adalah perluasan dari [[yii\base\Object|Object]] dengan dukungan
+[Event](concept-events.md) dan [behavior](concept-behaviors.md).
+
+Jika class Anda tidak perlu fitur event atau behavior, Anda harus mempertimbangkan menggunakan
+[[yii\base\Object|Object]] sebagai class dasar. Hal ini biasanya terjadi untuk class yang mewakili
+struktur data dasar.
+
+
+Konfigurasi objek
+--------------------
+
+Class [[yii\base\Object|Object]] memperkenalkan cara seragam untuk mengkonfigurasi objek. Setiap class turunan
+dari [[yii\base\Object|Object]] harus menyatakan konstruktor (jika diperlukan) dengan cara berikut agar
+dapat dikonfigurasi dengan benar:
+
+```php
+class MyClass extends \yii\base\Object
+{
+ public function __construct($param1, $param2, $config = [])
+ {
+ // ... inisialisasi sebelum konfigurasi diterapkan
+
+ parent::__construct($config);
+ }
+
+ public function init()
+ {
+ parent::init();
+
+ // ... inisialisasi setelah konfigurasi diterapkan
+ }
+}
+```
+
+Dalam contoh di atas, parameter terakhir dari konstruktor harus mengambil array konfigurasi
+yang berisi pasangan nama-nilai untuk menginisialisasi properti pada akhir konstruktor.
+Anda dapat menimpa method [[yii\base\Object::init()|init()]] untuk melakukan pekerjaan inisialisasi yang harus dilakukan setelah
+konfigurasi telah diterapkan.
+
+Dengan mengikuti konvensi ini, Anda akan dapat membuat dan mengkonfigurasi objek baru menggunakan array konfigurasi:
+
+```php
+$object = Yii::createObject([
+ 'class' => 'MyClass',
+ 'property1' => 'abc',
+ 'property2' => 'cde',
+], [$param1, $param2]);
+```
+
+Rincian lebih lanjut tentang konfigurasi dapat ditemukan di bagian [Konfigurasi](concept-configurations.md).
+
+
+Event
+------
+
+Di Yii 1, event dibuat dengan mendefinisikan method `on` (misalnya,`onBeforeSave`). Di Yii 2, Anda sekarang dapat menggunakan semua nama sebagai event.
+Anda memicu suatu event dengan memanggil method [[yii\base\Component::trigger()|trigger()]]:
+
+```php
+$event = new \yii\base\Event;
+$component->trigger($eventName, $event);
+```
+
+Untuk melampirkan penanganan event, mengunakan method [[yii\base\Component::on()|on()]]:
+
+```php
+$component->on($eventName, $handler);
+// To detach the handler, use:
+// $component->off($eventName, $handler);
+```
+
+Ada banyak pengembangan dari fitur event. Untuk lebih jelasnya, silakan lihat bagian [Event](concept-events.md).
+
+
+Path Alias
+------------
+
+Yii 2.0 memperluas penggunaan alias path baik untuk file/direktori maupun URL. Yii 2.0 juga sekarang mensyaratkan
+nama alias dimulai dengan karakter `@`.
+Misalnya, alias `@yii` mengacu pada direktori instalasi Yii. Alias path
+didukung di sebagian besar tempat di kode inti Yii. Misalnya, [[yii\caching\FileCache::cachePath]] dapat mengambil
+baik alias path maupun direktori normal.
+
+Sebuah alias juga terkait erat dengan namespace kelas. Disarankan alias didefinisikan untuk setiap akar namespace,
+sehingga memungkinkan Anda untuk menggunakan autoloader class Yii tanpa konfigurasi lebih lanjut.
+Misalnya, karena `@yii` mengacu pada direktori instalasi Yii, class seperti `yii\web\Request` dapat otomatis diambil.
+Jika Anda menggunakan librari pihak ketiga seperti Zend Framework. Anda dapat menentukan alias path `@Zend` yang mengacu pada
+direktori instalasi framework direktori. Setelah Anda selesai melakukannya, Yii akan dapat menload setiap class dalam librari Zend Framework.
+
+Lebih jauh tentang alias path dapat ditemukan di bagian [Alias](concept-aliases.md).
+
+
+View
+-----
+
+Perubahan yang paling signifikan tentang view di Yii 2 adalah bahwa variabel khusus `$this` dalam sebuah view tidak lagi mengacu
+controller saat ini atau widget. Sebaliknya, `$this` sekarang mengacu pada objek *view*, konsep baru
+yang diperkenalkan di 2.0. Objek *view* adalah [[yii\web\View]], yang merupakan bagian view
+dari pola MVC. Jika Anda ingin mengakses controller atau widget di tampilan, Anda dapat menggunakan `$this->context`.
+
+Untuk membuat tampilan parsial dalam view lain, Anda menggunakan `$this->render()`, tidak lagi `$this->renderPartial()`.
+Panggilan untuk `render` juga sekarang harus secara eksplisit *di-echo)*, mengingat method `render()` sekarang mengembalikan nilai
+yang dirender, bukan langsung menampilkannya. Sebagai contoh:
+
+```php
+echo $this->render('_item', ['item' => $item]);
+```
+
+Selain menggunakan PHP sebagai bahasa template utama, Yii 2.0 juga dilengkapi dengan dukungan resmi
+dua mesin template populer: Smarty dan Twig. Mesin template Prado tidak lagi didukung.
+Untuk menggunakan mesin template ini, Anda perlu mengkonfigurasi komponen aplikasi `view` dengan menetapkan
+properti [[yii\base\View::$renderers|View::$renderers]]. Silakan merujuk ke bagian [Template Engine](tutorial-template-engines.md)
+untuk lebih jelasnya.
+
+
+Model
+------
+
+Yii 2.0 menggunakan [[yii\base\Model]] sebagai model dasar, mirip dengan `CModel` di 1.1.
+class `CFormModel` telah dibuang seluruhnya. Sebaliknya, di Yii 2 Anda harus memperluas [[yii\base\Model]] untuk membuat class model formulir.
+
+Yii 2.0 memperkenalkan metode baru yang disebut [[yii\base\Model::scenario()|scenario()]] untuk menyatakan
+skenario yang didukung, dan untuk menunjukkan di mana skenario atribut perlu divalidasi serta atribut yang dapat dianggap sebagai aman atau tidak
+dll Sebagai contoh:
+
+```php
+public function scenarios()
+{
+ return [
+ 'backend' => ['email', 'role'],
+ 'frontend' => ['email', '!role'],
+ ];
+}
+```
+
+Dalam contoh di atas, dua skenario dinyatakan: `backend` dan` frontend`. Untuk `skenario backend`, baik
+atribut `email` maupun` role` aman dan dapat diassign secara masal. Untuk `skenario frontend`,
+`email` dapat diassign secara masal sementara` role` tidak bisa. Kedua `email` dan` role` harus divalidasi sesuai aturan.
+
+Method [[yii\base\Model::rules()|rules()]] ini masih digunakan untuk menyatakan aturan validasi. Perhatikan bahwa dengan dikenalkannya
+[[yii\base\Model::scenario()|scenario()]] sekarang tidak ada lagi validator `unsafe`.
+
+Dalam kebanyakan kasus, Anda tidak perlu menimpa [[yii\base\Model::scenario()|scenario()]]
+jika method [[yii\base\Model::rules()|rules()]] sepenuhnya telah menentukan skenario yang akan ada dan jika tidak ada kebutuhan untuk menyatakan
+atribut `unsafe`.
+
+Untuk mempelajari lebih lanjut tentang model, silakan merujuk ke bagian [Model](structure-models.md).
+
+
+Controller
+-----------
+
+Yii 2.0 menggunakan [[yii\web\Controller]] sebagai kelas dasar controller, yang mirip dengan `CController` di Yii 1.1.
+[[Yii\base\Action]] adalah kelas dasar untuk kelas action.
+
+Dampak paling nyata dari perubahan ini pada kode Anda adalah bahwa aksi kontroler harus mengembalikan nilai konten
+alih-alih menampilkannya:
+
+```php
+public function actionView($id)
+{
+ $model = \app\models\Post::findOne($id);
+ if ($model) {
+ return $this->render('view', ['model' => $model]);
+ } else {
+ throw new \yii\web\NotFoundHttpException;
+ }
+}
+```
+
+Silakan merujuk ke bagian [Controller](structure-controllers.md) untuk rincian lebih lanjut tentang controller.
+
+
+widget
+-------
+
+Yii 2.0 menggunakan [[yii\base\Widget]] sebagai kelas dasar widget, mirip dengan `CWidget` di Yii 1.1.
+
+Untuk mendapatkan dukungan yang lebih baik untuk kerangka di IDE, Yii 2.0 memperkenalkan sintaks baru untuk menggunakan widget.
+Metode statis [[yii\base\Widget::begin()|begin()]], [[yii\base\Widget::end()|end()]], dan [[yii\base\Widget::widget()|widget()]]
+mulai diperkenalkan, yang akan digunakan seperti:
+
+```php
+use yii\widgets\Menu;
+use yii\widgets\ActiveForm;
+
+// Note that you have to "echo" the result to display it
+echo Menu::widget(['items' => $items]);
+
+// Passing an array to initialize the object properties
+$form = ActiveForm::begin([
+ 'options' => ['class' => 'form-horizontal'],
+ 'fieldConfig' => ['inputOptions' => ['class' => 'input-xlarge']],
+]);
+... form input fields here ...
+ActiveForm::end();
+```
+
+Silakan merujuk ke bagian [Widget](structure-widgets.md) untuk lebih jelasnya.
+
+
+Tema
+------
+
+Tema bekerja benar-benar berbeda di 2.0. Mereka sekarang berdasarkan mekanisme pemetaan path yang memetakan
+file sumber ke file tema. Misalnya, jika peta path untuk tema adalah
+`['/web/views' => '/web/themes/basic']`, maka versi tema dari file view
+`/web/views/site/index.php` akan menjadi `/web/themes/basic/site/index.php`. Untuk alasan ini, tema sekarang bisa
+diterapkan untuk setiap file view, bahkan view diberikan di luar controller atau widget.
+
+Juga, tidak ada lagi komponen `CThemeManager`. Sebaliknya, `theme` adalah properti dikonfigurasi dari komponen `view`
+aplikasi.
+
+Silakan merujuk ke bagian [Theming](output-theming.md) untuk lebih jelasnya.
+
+
+Aplikasi konsol
+--------------------
+
+Aplikasi konsol sekarang diatur sebagai controller seperti pada aplikasi Web. kontroler konsol
+harus diperluas dari [[yii\console\Controller]], mirip dengan `CConsoleCommand` di 1.1.
+
+Untuk menjalankan perintah konsol, menggunakan `yii `, di mana `` adalah rute kontroler
+(Misalnya `sitemap/index`). Argumen anonim tambahan dilewatkan sebagai parameter ke
+action controller yang sesuai, sedangkan argumen bernama diurai menurut
+deklarasi pada [[yii\console\Controller::options()]].
+
+Yii 2.0 mendukung pembuatan informasi bantuan command secara otomatis berdasarkan blok komentar.
+
+Silakan lihat bagian [Console Commands](tutorial-console.md) untuk lebih jelasnya.
+
+
+I18N
+----
+
+Yii 2,0 menghilangkan formater tanggal dan angka terpasang bagian dari [PECL modul intl PHP](http://pecl.php.net/package/intl).
+
+Penterjemahan pesan sekarang dilakukan melalui komponen aplikasi `i18n`.
+Komponen ini mengelola satu set sumber pesan, yang memungkinkan Anda untuk menggunakan pesan yang berbeda
+sumber berdasarkan kategori pesan.
+
+Silakan merujuk ke bagian [Internasionalisasi](tutorial-i18n.md) untuk rincian lebih lanjut.
+
+
+Action Filter
+--------------
+
+Action Filter sekarang diimplementasikan melalui behavior. Untuk membuat baru, filter diperluas dari [[yii\base\ActionFilter]].
+Untuk menggunakan filter, pasang Kelas filter untuk controller sebagai behavior. Misalnya, untuk menggunakan filter [[yii\filters\AccessControl]],
+Anda harus mengikuti kode berikut di kontroler:
+
+```php
+public function behaviors()
+{
+ return [
+ 'access' => [
+ 'class' => 'yii\filters\AccessControl',
+ 'rules' => [
+ ['allow' => true, 'actions' => ['admin'], 'roles' => ['@']],
+ ],
+ ],
+ ];
+}
+```
+
+Silakan merujuk ke bagian [Filtering](structure-filters.md) untuk lebih jelasnya.
+
+
+Aset
+------
+
+Yii 2.0 memperkenalkan konsep baru yang disebut *bundel aset* yang menggantikan konsep paket script di Yii 1.1.
+
+Bundel aset adalah kumpulan file asset (misalnya file JavaScript, file CSS, file gambar, dll)
+dalam direktori. Setiap bundel aset direpresentasikan sebagai kelas turunan dari [[yii\web\AssetBundle]].
+Dengan mendaftarkan bundel aset melalui [[yii\web\AssetBundle::register()]], Anda membuat
+aset dalam bundel diakses melalui Web. Tidak seperti di Yii 1, halaman yang mendaftarkan bundel akan secara otomatis
+berisi referensi ke JavaScript dan file CSS yang ditentukan dalam bundel itu.
+
+Silakan merujuk ke bagian [Managing Aset](structure-assets.md) untuk lebih jelasnya.
+
+
+Helper
+-------
+
+Yii 2.0 memperkenalkan banyak helper umum untuk digunakan, termasuk.
+
+* [[yii\helpers\Html]]
+* [[yii\helpers\ArrayHelper]]
+* [[yii\helpers\StringHelper]]
+* [[yii\helpers\FileHelper]]
+* [[yii\helpers\Json]]
+
+Silakan lihat bagian [Tinjauan Helper](helper-overview.md) untuk lebih jelasnya.
+
+Formulir
+--------
+
+Yii 2.0 memperkenalkan konsep *field* untuk membangun formulir menggunakan [[yii\widgets\ActiveForm]]. Field
+adalah wadah yang terdiri dari label, masukan, pesan kesalahan, dan atau teks petunjuk.
+Field diwakili sebagai objek [[yii\widgets\ActiveField|ActiveField]].
+Menggunakan field, Anda dapat membangun formulir yang lebih bersih dari sebelumnya:
+
+```php
+
+ = $form->field($model, 'username') ?>
+ = $form->field($model, 'password')->passwordInput() ?>
+