GitHub PullRequestReviewCommentEvent at 2014-11-12 17:10:50
Repository: yii2
Actor: lucianobaraglia
Payload: {"action":"created","comment":{"url":"https://api.github.com/repos/yiisoft/yii2/pulls/comments/20233353","id":20233353,"diff_hunk":"@@ -0,0 +1,439 @@\n+Assets\n+======\n+\n+Un asset en Yii es un archivo al que se puede hacer referencia en una página Web. Puede ser un archivo CSS, un archivo JavaScript, una imagen o un archivo de video, etc. Los assets se encuentran en los directorios públicos de la web y se sirven directamente por los servidores Web.\n+\n+A menudo es preferible gestionar los assets mediante programación. Por ejemplo, cuando se usa el widget [[yii\\jui\\DatePicker]] en una página, éste incluirá automáticamente los archivos CSS y JavaScript requeridos, en vez de tener que buscar los archivos e incluirlos manualmente. Y cuando se actualice el widget a una nueva versión, ésta usará de forma automática la nueva versión de los archivos asset.\n+En este tutorial, se describirá la poderosa capacidad que proporciona la gestión de assets en Yii.\n+\n+## Asset Bundles <a name=\"asset-bundles\"></a>\n+\n+Yii gestiona los assets en unidades de *asset bundle*. Un asset bundle es simplemente un conjunto de assets localizados en un directorio. Cuando se registra un asset bundle en una [vista](structure-views.md), éste incluirá los archivos CSS y JavaScript del bundle en la página Web renderizada.\n+\n+## Definición de Asset Bundles <a name=\"defining-asset-bundles\"></a>\n+\n+Los asset bundles son descritos como clases PHP que extienden a [[yii\\web\\AssetBundle]]. El nombre del bundle es simplemente su correspondiente nombre de la classe PHP que debe ser [autocargable](concept-autoloading.md). En una clase asset bundle, lo más habitual es especificar donde se encuentran los archivos asset, que archivos CSS y JavaScript contiene el bundle, y como depende éste bundle de otros bundles.\n+\n+El siguiente código define el asset bundle principal que se usa en [la plantilla de aplicación básica](start-installation.md):\n+\n+```php\n+<?php\n+\n+namespace app\\assets;\n+\n+use yii\\web\\AssetBundle;\n+\n+class AppAsset extends AssetBundle\n+{\n+    public $basePath = '@webroot';\n+    public $baseUrl = '@web';\n+    public $css = [\n+        'css/site.css',\n+    ];\n+    public $js = [\n+    ];\n+    public $depends = [\n+        'yii\\web\\YiiAsset',\n+        'yii\\bootstrap\\BootstrapAsset',\n+    ];\n+}\n+```\n+\n+La anterior clase `AppAsset` especifica que los archivos asset se encuentran en el directorio `@webroot`que corresponde a la URL `@web`; el bundle contiene un único archivo CSS `css/site.css` y ningún archivo JavaScript; el bundle depende de otros dos bundles: [[yii\\web\\YiiAsset]] y [[yii\\bootstrap\\BootstrapAsset]]. A continuación se explicarán más detalladamente las propiedades del [[yii\\web\\AssetBundle]]:\n+\n+* [[yii\\web\\AssetBundle::sourcePath|sourcePath]]: especifica el directorio raiz que contiene los archivos asset en el bundle.  Si no, se deben especificar las propiedades [[yii\\web\\AssetBundle::basePath|basePath]] y [[yii\\web\\AssetBundle::baseUrl|baseUrl]], en su lugar. Se pueden usar [alias de ruta](concept-aliases.md).\n+* [[yii\\web\\AssetBundle::basePath|basePath]]: especifica el directorio Web público que contiene los archivos assets de este bundle. Cuando se especifica la propiedad [[yii\\web\\AssetBundle::sourcePath|sourcePath]], el [gestor de assets](#asset-manager) publicara los assets de este bundle en un directorio  Web publico  y sobrescribicra la propiedad en consecuencia. Se debe establecer esta propiedad si los archivos asset ya se encuentran en un directorio Web publico y no necesitan ser publicados. Se pueden usar [alias de ruta](concept-aliases.md).\n+* [[yii\\web\\AssetBundle::baseUrl|baseUrl]]: especifica la URL correspondiente al directorio [[yii\\web\\AssetBundle::basePath|basePath]]. Como en [yii\\web\\AssetBundle::basePath|basePath]], si se especifica la propiedad [[yii\\web\\AssetBundle::sourcePath|sourcePath]], el [gestor de assets](#asset-manager) publicara los assets y sobrescribirá esta propiedad en consecuencia. Se pueden usar [alias de ruta](concept-aliases.md).\n+* [[yii\\web\\AssetBundle::js|js]]: un array lista los archivos JavaScript que contiene este bundle. Tenga en cuenta que solo deben usarse las barras invertidas \"/\" como separadores de directorios. Cada archivo Javascrpt se puede especificar en uno de los siguientes formatos:\n+    - una ruta relativa que represente un archivo local JavaScript (p. ej. `js/main.js`). La ruta actual del fichero se puede determinar anteponiendo [[yii\\web\\AssetManager::basePath]] a la ruta relativa, y la URL actual de un archivo puede ser determinada anteponiendo [[yii\\web\\AssetManager::baseUrl]] a la ruta relativa.\n+    - un URL absoluta que represente un archivo JavaScript externo. Por ejemplo, `http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js` o `//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js`.\n+* [[yii\\web\\AssetBundle::css|css]]: un array que lista los archivos CSS que contiene el este bundle. El formato de este array es el mismo que el de [[yii\\web\\AssetBundle::js|js]].\n+* [[yii\\web\\AssetBundle::depends|depends]]: un array que lista los nombres de los asset bundles de los que depende este asset bundle (para explicarlo brevemente).\n+* [[yii\\web\\AssetBundle::jsOptions|jsOptions]]: especifica las opciones que se enviaran al método [[yii\\web\\View::registerJsFile()]] cuando se le llame para registrar *todos* los archivos JavaScript de este bundle.\n+* [[yii\\web\\AssetBundle::cssOptions|cssOptions]]: especifica las opciones que se enviaran al método [[yii\\web\\View::registerCssFile()]] cuando se le llame para registrar *todos* los archivos CSS de este bundle.\n+* [[yii\\web\\AssetBundle::publishOptions|publishOptions]]: especifica las opciones que se enviaran al método [[yii\\web\\AssetManager::publish()]] cuando se le llame para publicar los archivos de los assets fuente a un directorio Web.\n+Solo se usa si se especifica la propiedad [[yii\\web\\AssetBundle::sourcePath|sourcePath]].\n+\n+### Ubicación de los Assets <a name=\"asset-locations\"></a>\n+\n+Según la localización de los assets, se pueden clasificar como:\n+\n+* assets fuente(source assets): los assets se encuentran junto con el código fuente PHP, al que no se puede acceder directamente a través de la Web. Para usar los assets fuente en una página, deben ser copiados en un directorio publico y transformados en los llamados assets publicados. El proceso se llama *publicación de assets* que será descrito a continuación.\n+* assets publicados(published assets): los archivos assets se encuentran en el directorio Web y son accesibles via Web.\n+* assets externos(external assets): los archivos assets se encuentran en un servidor Web diferente al de la aplicación.\n+\n+Cuando se define una clase asset bunfle, si se especifica la propiedad [[yii\\web\\AssetBundle::sourcePath|sourcePath]], significa que cualquier asset listado que use rutas realtivas sera considerado como un asset fuente. Si no se especifica la propiedad, significa que los assets son assets publicados (se deben especificar [[yii\\web\\AssetBundle::basePath|basePath]] y\n+[[yii\\web\\AssetBundle::baseUrl|baseUrl]] para hacerle saber a Yii donde se encuentran.)\n+\n+Se recomienda ubicar los assets que correspondan a la aplicación en un directorio Web para evitar publicaciones de assets innecesarias. Por esto en el anterior ejemplo `AppAsset` especifica [[yii\\web\\AssetBundle::basePath|basePath]] en vez de [[yii\\web\\AssetBundle::sourcePath|sourcePath]].\n+\n+Para las [extensiones](structure-extensions.md), por el hecho de que sus assets se encuentran junto con el código fuente, en directorios que no son accesibles para la Web, se tiene que especificar la propiedad [[yii\\web\\AssetBundle::sourcePath|sourcePath]] cuando se definan clases asset bundle para ellas.\n+\n+> Nota: No se debe usar `@webroot/assets` como [yii\\web\\AssetBundle::sourcePath|source path]]. Este directorio se usa por defecto por el [[yii\\web\\AssetManager|asset manager]] para guardar los archivos asset publicados tomporalmente y pueden ser eliminados.\n+\n+### Dependencias de los Asset <a name=\"asset-dependencies\"></a>\n+\n+Cuando se incluyen multiples archivos CSS o JavaScript en una página Web, tienen que cumplir ciertas ordenes para evitar problemas de sobrescritura. Por ejemplo, si se usa un widget jQuery UI en una página Web, tenemos que asegurarnos de que el archivo JavaScript jQuery se incluya antes que el archivo JavaScript jQuery UI. A esto se le llama ordenar las dependencias entre archivos.\n+\n+Las dependencias de los assets se especifican principalmente a través de la propiedad [[yii\\AssetBundle::depends]]. En el ejemplo `AppAsset`, el asset bundle depende de otros dos asset bundles [[yii\\web\\YiiAsset]] y [[yii\\bootstrap\\BootstrapAsset]], que significa que los archivos CSS y JavaScript en `AppAsset` se incluirán *después* que los archivos de los dos bundles dependientes.\n+\n+Las dependencias son transitivas. Esto significa, que si un bundle A depende de un bundle B que depende de C, A dependerá de C, también.\n+\n+### Opciones de los Assets <a name=\"asset-options\"></a>\n+\n+Se pueden especificar las propiedades [[yii\\web\\AssetBundle::cssOptions|cssOptions]] y [[yii\\web\\AssetBundle::jsOptions|jsOptions]] para personalizar la forma en que los archivos CSS y JavaScript serán incluidos en una página. Los valores de estas propiedades serán enviadas a los metodos [[yii\\web\\View::registerCssFile()]] y [[yii\\web\\View::registerJsFile()]], respectivamente cuando las [vistas](structure-views.md) los llamen para incluir los archivos CSS y JavaScript.\n+\n+> Nota: Las opciones que se especifican en una clase bundle se aplican a *todos* los archivos CSS/JavaScript de un bundle. Si se quiere usar diferentes opciones para diferentes archivos, se deben crear assets bundles separados y usar un conjunto de opciones para cada bundle.\n+\n+Por ejemplo, para incluir una archivo CSS condicionalmente para navegadores que como IE9 o anteriores, se puede usar la siguiente opción:\n+\n+```php\n+public $cssOptions = ['condition' => 'lte IE9'];\n+```\n+\n+Esto provoca que un archivo CSS dentro de un bundle sea incluido usando los siguientes tags HTML:\n+\n+```html\n+<!--[if lte IE9]>\n+<link rel=\"stylesheet\" href=\"path/to/foo.css\">\n+<![endif]-->\n+```\n+\n+Para envolver el tag del enlace con `<noscript>` se puede usar el siguiente código:\n+\n+```php\n+public $cssOptions = ['noscript' => true];\n+```\n+\n+Para incluir un archivo JavaScript en la sección cabecera(head) de una página (por defecto, los archivos JavaScript se incluyen al final de la sección cuerpo(body)), se puede usar el siguiente código:\n+\n+```php\n+public $jsOptions = ['position' => \\yii\\web\\View::POS_HEAD];\n+```\n+\n+### Assets Bower y NPM <a name=\"bower-npm-assets\"></a>\n+\n+La mayoría de paquetes JavaScript/CSS se gestionan con [Bower](http://bower.io/) y/o [NPM](https://www.npmjs.org/). Si tu aplicación o extensión usa estos paquetes, se recomienda seguir los siguientes pasos para gestionar los assets en la librería:\n+\n+1. Modificar el archivo `composer.json` de tu aplicación o extensión e introducir el paquete en la lista `require`. Se debeusar `bower-asset/PackageName` (para paquetes Bower) o `npm-asset/PackageName` (para paquetes NPM) para referenciar la librería.\n+2. Crear una clase asset bundle y listar los archivos JavaScript/CSS que se planea usar en la aplicación o extensión. Se debe especificar la propiedad [[yii\\web\\AssetBundle::sourcePath|sourcePath]] como `@bower\\PackageName` o `@npm\\PackageName`. Esto se debe a que Composer instalará el paquete Bower o NPM en el correspondiente directorio de este alias.\n+\n+> Nota: Algunos paquetes pueden distriburi sus archivos en subdirectorios. Si es el caso, se debe especificar el subdirectorio como valor del [[yii\\web\\AssetBundle::sourcePath|sourcePath]]. Por ejemplo, [[yii\\web\\JqueryAsset]] usa `@bower/jquery/dist` en vez de `@bower/jquery`.\n+\n+## Uso de Asset Bundles <a name=\"using-asset-bundles\"></a>\n+\n+Para usar un asset bundle, debe registrarse con una [vista](structure-views.md) llamando al método [[yii\\web\\AssetBundle::register()]]. Por ejemplo, en plantilla de vista se puede registrar un asset bundle como en el siguiente ejemplo:\n+\n+```php\n+use app\\assets\\AppAsset;\n+AppAsset::register($this);  // $this representa el objeto vista\n+```\n+\n+> Información: El método [[yii\\web\\AssetBundle::register()]] devuelve un objeto asset bundle que contiene la información acerca de los assets publicados, tales como [[yii\\web\\AssetBundle::basePath|basePath]] o [[yii\\web\\AssetBundle::baseUrl|baseUrl]].\n+\n+Si se registra un asset bundle en otro lugar, se debe proporcionar la vista necesaria al objeto. Por ejemplo, para registrar un asset bundle en una clase [widget](structure-widget.md), se puede obtener el objeto vista mediante `$this->view`.\n+\n+Cuando se registra un asset bundle con una vista, por detras, Yii registrará todos sus asset bundles dependientes. Y si un asset bundle se encuentra en un directorio inaccesible por la Web, éste sera publicado a un directorio Web publico. Después cuando la vista renderice una página, se generarán las etiquetas(tags) `<link>` y `<script>`  para los archivos CSS y JavaScript listados en los bundles registrados. El orden de estas etiquetas sera determinado por las dependencias entre los bundles registrados y los otros assets listados en las propiedades [[yii\\web\\AssetBundle::css]] y [[yii\\web\\AssetBundle::js]].\n+\n+### Personalización de Asset Bundles <a name=\"customizing-asset-bundles\"></a>\n+\n+Yii gestiona los asset bundles a través de un componentes de aplicación llamado `assetManager` que está implementado por [[yii\\web\\AssetManager]]. Configurando la propiedad [[yii\\web\\AssetManager::bundles]], se puede personalizar el comportamiento(behavior) de un asset bundle. Por ejemplo, de forma predeterminada, el asset bundle [[yii\\web\\Jquery]], utiliza el archivo `jquery.js` desde el paquete Bower instalado. Para mejorar la disponibilidad y el rendimiento se puede querer usar la versión alojada por Google. Ésta puede ser obtenida configurando la `assetManager` en la configuración de la aplicación como en el siguiente ejemplo:\n+\n+```php\n+return [\n+    // ...\n+    'components' => [\n+        'assetManager' => [\n+            'bundles' => [\n+                'yii\\web\\JqueryAsset' => [\n+                    'sourcePath' => null,   // no publicar el bundle\n+                    'js' => [\n+                        '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js',\n+                    ]\n+                ],\n+            ],\n+        ],\n+    ],\n+];\n+```\n+\n+Del mismo modo, se pueden configurar múltiples asset bundles a traves de [[yii\\web\\AssetManager::bundles]]. Las claves del array deben ser los nombres de clase (sin la primera barra invertida) de los asset bundles, y los valores del array deben ser las correspondientes [configuraciones de arrays](structure-configurations.md).\n+\n+> Consejo: Se puede de elegir condicionalmente que assets se van a usar en un asset bundle. El siguiente ejemplo muestra como usar `jquery.js` en el entorno de desarrollo y `jquery.min.js` en los otros casos:\n+>\n+> ```php\n+> 'yii\\web\\JqueryAsset' => [\n+>     'js' => [\n+¿>         YII_ENV_DEV ? 'jquery.js' : 'jquery.min.js'\n+>     ]\n+> ],\n+> ```\n+\n+Se puede deshabilitar uno o más asset bundles asociando `false` a los nombres de los asset bundles que se quieran deshabilitar. Cuando se registra un asset bundle deshabilitado con una vista, ninguno de sus bundles dependientes será registrado, y la vista tampoco incluirá ningún asset del bundle en la página que se renderice.\n+Por ejemplo, para deshabilitar [[yii\\web\\JqueryAsset]], se puede usar la siguiente configuración:\n+\n+```php\n+return [\n+    // ...\n+    'components' => [\n+        'assetManager' => [\n+            'bundles' => [\n+                'yii\\web\\JqueryAsset' => false,\n+            ],\n+        ],\n+    ],\n+];\n+```\n+\n+Además se pueden deshabilitar *todos* los asset bundles asignando `false` a [[yii\\web\\AssetManager::bundles]].\n+\n+### Mapeo de Assets (Asset Mapping) <a name=\"asset-mapping\"></a>\n+\n+A veces se puede querer \"arreglar\" rutas de archivos incorrectos/incompatibles usadas en múltiples asset bundles. Por ejemplo, el bundle A usa `jquery.min.js` con versión 1.11.1, y el bundle B usa `jquery.js` con versión 2.11.1. Mientras que se puede solucionar el problema personalizando cada bundle, una forma más fácil, es usar la característica *asset map* para mapear los assets incorrectos a los deseados. Para hacerlo, se tiene que configurar la propiedad [[yii\\web\\AssetManager::assetMap]] como en el siguiente ejemplo:\n+\n+```php\n+return [\n+    // ...\n+    'components' => [\n+        'assetManager' => [\n+            'assetMap' => [\n+                'jquery.js' => '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js',\n+            ],\n+        ],\n+    ],\n+];\n+```\n+\n+Las claves de [[yii\\web\\AssetManager::assetMap|assetmMap]] son los nombres de los assets que se quieren corregir, y los valores son las rutas de los assets deseados. Cuando se registra un asset bundle con una vista, cada archivo de asset relativo de [[yii\\web\\AssetBundle::css|css]] y [[yii\\web\\AssetBundle::js|js]] serán contrastados con este mapa.\n+Si se detecta que alguna de estas claves es la ultima parte de un archivo asset (prefijado con [[yii\\web\\AssetBundle::sourcePath]], si esta disponible), el correspondiente valor reemplazará el asset y sera registrado con la vista.\n+Por ejemplo, un archivo asset `mi/ruta/a/jquery.js` concuerda con la clave `jquery.js`.\n+\n+> Nota: Solo los assets especificados usando rutas relativas están sujetos al mapeo de assets. Y las rutas de los assets destino deben ser tanto URLs absolutas o rutas relativas a [[yii\\web\\AssetManager::basePath]].\n+\n+### Publicación de Asset <a name=\"asset-publishing\"></a>\n+\n+Como se ha comentado anteriormente, si un asset bundle se encuentra en un directorio que no es accesible por la Web, este asset será copiado a un directorio Web cuando el se registre el bundle con una vista. Este proceso se llama *publicación de assets*, y se efectúa automáticamente por el [[yii\\web\\AssetManager|asset manager]].\n+\n+De forma predeterminada, los assets se publican en el directorio `@webrrot/assets` cuando corresponden a la URL `@web\\assets`. Se puede personalizar esta ubicación configurando las propiedades [[yii\\web\\AssetManager::basePath|basePath]] y\n+[[yii\\web\\AssetManager::baseUrl|baseUrl]] properties.\n+\n+En lugar de publicar los assets copiando archivos, se puede considerar usar enlaces simbólicos, si tu SO (sistema operativo) y servidor Web lo permite. Esta característica se puede habilitar estableciendo el valor de [[yii\\web\\AssetManager::linkAssets|linkAssets]] en `true`.\n+\n+```php\n+return [\n+    // ...\n+    'components' => [\n+        'assetManager' => [\n+            'linkAssets' => true,\n+        ],\n+    ],\n+];\n+```\n+\n+Con la anterior configuración, el gestor de assets creara un enlace simbólico a la ruta de origen del asset bundle cuando éste sea publicado. Esto es más rápido que copiar archivos y también asegura que siempre estén actualizados.\n+\n+## Los Asset Bundles más Comunes <a name=\"common-asset-bundles\"></a>\n+\n+El código del núcleo de Yii tiene definidos varios asset bundles. Entre ellos, los siguientes bundles son los más usados y pueden referenciarse en códigos de aplicaciones o extensiones.\n+\n+- [[yii\\web\\YiiAsset]]: Principalmente incluye el archivo `yii.js` que implementa un mecanismo de organización de código JavaScript en los módulos. También proporciona soporte especial para los atributos `data-method` y `data-confirm` y otras característica útiles.\n+- [[yii\\web\\JqueryAsset]]: Incluye el archivo `jquery.js` desde el paquete Bower jQuery.\n+- [[yii\\bootstrap\\BootstrapAsset]]: Incluye el archivo CSS desde el framework Twitter Bootstrap.\n+- [[yii\\bootstrap\\BootstrapPluginAsset]]: Incluye el archivo JavaScript desde el framework Twitter Bootstrap para dar soporte a los plugins JavaScript de Bootstrap.\n+- [[yii\\jui\\JuiAsset]]: Incluye los archivos CSS y JavaScript desde la librería jQuery UI.\n+\n+Si el código depende de jQuery, jQuery UI o Bootstrap, se pueden usar estos asset bundles predefinidos en lugar de crear versiones propias. Si la configuración predeterminada de estos bundles no satisface las necesidades, se puede personalizar como se describe en la subsección [Personalización de Asset Bundles](#customizing-asset-bundles).\n+\n+## Conversión de Assets <a name=\"asset-conversion\"></a>\n+\n+En lugar de escribir código CSS y/o JavaScript directamente, los desarrolladores a menudo escriben código usando una sintaxis extendida y usan herramientas especiales para convertirlos en CSS/JavaScript. Por ejemplo, para código CSS se puede usar [LESS](http://lesscss.org) o [SCSS](http://sass-lang.com/); y para JavaScript se puede usar [TypeScript](http://www.typescriptlang.org/).\n+\n+Se pueden listar los archivos asset con sintaxis extendida (extended syntax) en [[yii\\web\\AssetBundle::css|css]] y [[yii\\web\\AssetBundle::js|js]] en un asset bundle. Por ejemplo:\n+\n+```php\n+class AppAsset extends AssetBundle\n+{\n+    public $basePath = '@webroot';\n+    public $baseUrl = '@web';\n+    public $css = [\n+        'css/site.less',\n+    ];\n+    public $js = [\n+        'js/site.ts',\n+    ];\n+    public $depends = [\n+        'yii\\web\\YiiAsset',\n+        'yii\\bootstrap\\BootstrapAsset',\n+    ];\n+}\n+```\n+\n+Cuando se registra un de estos asset bundles en una vista, el [[yii\\web\\AssetManager|asset manager]] ejecutará automáticamente las herramientas pre-procesadoras para convertir los assets de sintaxis extendidas reconocidas en CSS/JavaScript. Cuando la vista renderice finalmente una página, se incluirán los archivos CSS/JavaScript en la página, en lugar de los assets originales en sintaxis extendidas.","path":"docs/guide-es/structure-assets.md","position":271,"original_position":271,"commit_id":"b31df1e550a836f5ac0b3b4331306944e1637f73","original_commit_id":"b31df1e550a836f5ac0b3b4331306944e1637f73","user":{"login":"lucianobaraglia","id":374554,"avatar_url":"https://avatars.githubusercontent.com/u/374554?v=3","gravatar_id":"","url":"https://api.github.com/users/lucianobaraglia","html_url":"https://github.com/lucianobaraglia","followers_url":"https://api.github.com/users/lucianobaraglia/followers","following_url":"https://api.github.com/users/lucianobaraglia/following{/other_user}","gists_url":"https://api.github.com/users/lucianobaraglia/gists{/gist_id}","starred_url":"https://api.github.com/users/lucianobaraglia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lucianobaraglia/subscriptions","organizations_url":"https://api.github.com/users/lucianobaraglia/orgs","repos_url":"https://api.github.com/users/lucianobaraglia/repos","events_url":"https://api.github.com/users/lucianobaraglia/events{/privacy}","received_events_url":"https://api.github.com/users/lucianobaraglia/received_events","type":"User","site_admin":false},"body":"\"Cuando se registra un de estos\" -> \"Cuando se registra uno de estos\"","created_at":"2014-11-12T17:10:50Z","updated_at":"2014-11-12T17:10:50Z","html_url":"https://github.com/yiisoft/yii2/pull/6030#discussion_r20233353","pull_request_url":"https://api.github.com/repos/yiisoft/yii2/pulls/6030","_links":{"self":{"href":"https://api.github.com/repos/yiisoft/yii2/pulls/comments/20233353"},"html":{"href":"https://github.com/yiisoft/yii2/pull/6030#discussion_r20233353"},"pull_request":{"href":"https://api.github.com/repos/yiisoft/yii2/pulls/6030"}}},"pull_request":{"url":"https://api.github.com/repos/yiisoft/yii2/pulls/6030","id":24306308,"html_url":"https://github.com/yiisoft/yii2/pull/6030","diff_url":"https://github.com/yiisoft/yii2/pull/6030.diff","patch_url":"https://github.com/yiisoft/yii2/pull/6030.patch","issue_url":"https://api.github.com/repos/yiisoft/yii2/issues/6030","number":6030,"state":"open","locked":false,"title":"spanish docs assets [skip ci]","user":{"login":"larnu","id":1165592,"avatar_url":"https://avatars.githubusercontent.com/u/1165592?v=3","gravatar_id":"","url":"https://api.github.com/users/larnu","html_url":"https://github.com/larnu","followers_url":"https://api.github.com/users/larnu/followers","following_url":"https://api.github.com/users/larnu/following{/other_user}","gists_url":"https://api.github.com/users/larnu/gists{/gist_id}","starred_url":"https://api.github.com/users/larnu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/larnu/subscriptions","organizations_url":"https://api.github.com/users/larnu/orgs","repos_url":"https://api.github.com/users/larnu/repos","events_url":"https://api.github.com/users/larnu/events{/privacy}","received_events_url":"https://api.github.com/users/larnu/received_events","type":"User","site_admin":false},"body":"@lucianobaraglia todo revisado!","created_at":"2014-11-12T16:46:11Z","updated_at":"2014-11-12T17:10:50Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9e7531d297019ac976fe09527ff8a64ce2f9c1e3","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/yiisoft/yii2/pulls/6030/commits","review_comments_url":"https://api.github.com/repos/yiisoft/yii2/pulls/6030/comments","review_comment_url":"https://api.github.com/repos/yiisoft/yii2/pulls/comments/{number}","comments_url":"https://api.github.com/repos/yiisoft/yii2/issues/6030/comments","statuses_url":"https://api.github.com/repos/yiisoft/yii2/statuses/b31df1e550a836f5ac0b3b4331306944e1637f73","head":{"label":"larnu:master","ref":"master","sha":"b31df1e550a836f5ac0b3b4331306944e1637f73","user":{"login":"larnu","id":1165592,"avatar_url":"https://avatars.githubusercontent.com/u/1165592?v=3","gravatar_id":"","url":"https://api.github.com/users/larnu","html_url":"https://github.com/larnu","followers_url":"https://api.github.com/users/larnu/followers","following_url":"https://api.github.com/users/larnu/following{/other_user}","gists_url":"https://api.github.com/users/larnu/gists{/gist_id}","starred_url":"https://api.github.com/users/larnu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/larnu/subscriptions","organizations_url":"https://api.github.com/users/larnu/orgs","repos_url":"https://api.github.com/users/larnu/repos","events_url":"https://api.github.com/users/larnu/events{/privacy}","received_events_url":"https://api.github.com/users/larnu/received_events","type":"User","site_admin":false},"repo":{"id":24152538,"name":"yii2","full_name":"larnu/yii2","owner":{"login":"larnu","id":1165592,"avatar_url":"https://avatars.githubusercontent.com/u/1165592?v=3","gravatar_id":"","url":"https://api.github.com/users/larnu","html_url":"https://github.com/larnu","followers_url":"https://api.github.com/users/larnu/followers","following_url":"https://api.github.com/users/larnu/following{/other_user}","gists_url":"https://api.github.com/users/larnu/gists{/gist_id}","starred_url":"https://api.github.com/users/larnu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/larnu/subscriptions","organizations_url":"https://api.github.com/users/larnu/orgs","repos_url":"https://api.github.com/users/larnu/repos","events_url":"https://api.github.com/users/larnu/events{/privacy}","received_events_url":"https://api.github.com/users/larnu/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/larnu/yii2","description":"Yii 2 framework main development repo","fork":true,"url":"https://api.github.com/repos/larnu/yii2","forks_url":"https://api.github.com/repos/larnu/yii2/forks","keys_url":"https://api.github.com/repos/larnu/yii2/keys{/key_id}","collaborators_url":"https://api.github.com/repos/larnu/yii2/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/larnu/yii2/teams","hooks_url":"https://api.github.com/repos/larnu/yii2/hooks","issue_events_url":"https://api.github.com/repos/larnu/yii2/issues/events{/number}","events_url":"https://api.github.com/repos/larnu/yii2/events","assignees_url":"https://api.github.com/repos/larnu/yii2/assignees{/user}","branches_url":"https://api.github.com/repos/larnu/yii2/branches{/branch}","tags_url":"https://api.github.com/repos/larnu/yii2/tags","blobs_url":"https://api.github.com/repos/larnu/yii2/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/larnu/yii2/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/larnu/yii2/git/refs{/sha}","trees_url":"https://api.github.com/repos/larnu/yii2/git/trees{/sha}","statuses_url":"https://api.github.com/repos/larnu/yii2/statuses/{sha}","languages_url":"https://api.github.com/repos/larnu/yii2/languages","stargazers_url":"https://api.github.com/repos/larnu/yii2/stargazers","contributors_url":"https://api.github.com/repos/larnu/yii2/contributors","subscribers_url":"https://api.github.com/repos/larnu/yii2/subscribers","subscription_url":"https://api.github.com/repos/larnu/yii2/subscription","commits_url":"https://api.github.com/repos/larnu/yii2/commits{/sha}","git_commits_url":"https://api.github.com/repos/larnu/yii2/git/commits{/sha}","comments_url":"https://api.github.com/repos/larnu/yii2/comments{/number}","issue_comment_url":"https://api.github.com/repos/larnu/yii2/issues/comments/{number}","contents_url":"https://api.github.com/repos/larnu/yii2/contents/{+path}","compare_url":"https://api.github.com/repos/larnu/yii2/compare/{base}...{head}","merges_url":"https://api.github.com/repos/larnu/yii2/merges","archive_url":"https://api.github.com/repos/larnu/yii2/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/larnu/yii2/downloads","issues_url":"https://api.github.com/repos/larnu/yii2/issues{/number}","pulls_url":"https://api.github.com/repos/larnu/yii2/pulls{/number}","milestones_url":"https://api.github.com/repos/larnu/yii2/milestones{/number}","notifications_url":"https://api.github.com/repos/larnu/yii2/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/larnu/yii2/labels{/name}","releases_url":"https://api.github.com/repos/larnu/yii2/releases{/id}","created_at":"2014-09-17T16:19:45Z","updated_at":"2014-09-19T18:28:26Z","pushed_at":"2014-11-12T16:38:19Z","git_url":"git://github.com/larnu/yii2.git","ssh_url":"git@github.com:larnu/yii2.git","clone_url":"https://github.com/larnu/yii2.git","svn_url":"https://github.com/larnu/yii2","homepage":"http://www.yiiframework.com","size":31603,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"yiisoft:master","ref":"master","sha":"4e47b67fc594be3d6af72faf4d6140a1e3f6781d","user":{"login":"yiisoft","id":993323,"avatar_url":"https://avatars.githubusercontent.com/u/993323?v=3","gravatar_id":"","url":"https://api.github.com/users/yiisoft","html_url":"https://github.com/yiisoft","followers_url":"https://api.github.com/users/yiisoft/followers","following_url":"https://api.github.com/users/yiisoft/following{/other_user}","gists_url":"https://api.github.com/users/yiisoft/gists{/gist_id}","starred_url":"https://api.github.com/users/yiisoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yiisoft/subscriptions","organizations_url":"https://api.github.com/users/yiisoft/orgs","repos_url":"https://api.github.com/users/yiisoft/repos","events_url":"https://api.github.com/users/yiisoft/events{/privacy}","received_events_url":"https://api.github.com/users/yiisoft/received_events","type":"Organization","site_admin":false},"repo":{"id":3431193,"name":"yii2","full_name":"yiisoft/yii2","owner":{"login":"yiisoft","id":993323,"avatar_url":"https://avatars.githubusercontent.com/u/993323?v=3","gravatar_id":"","url":"https://api.github.com/users/yiisoft","html_url":"https://github.com/yiisoft","followers_url":"https://api.github.com/users/yiisoft/followers","following_url":"https://api.github.com/users/yiisoft/following{/other_user}","gists_url":"https://api.github.com/users/yiisoft/gists{/gist_id}","starred_url":"https://api.github.com/users/yiisoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yiisoft/subscriptions","organizations_url":"https://api.github.com/users/yiisoft/orgs","repos_url":"https://api.github.com/users/yiisoft/repos","events_url":"https://api.github.com/users/yiisoft/events{/privacy}","received_events_url":"https://api.github.com/users/yiisoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/yiisoft/yii2","description":"Yii 2 framework main development repo","fork":false,"url":"https://api.github.com/repos/yiisoft/yii2","forks_url":"https://api.github.com/repos/yiisoft/yii2/forks","keys_url":"https://api.github.com/repos/yiisoft/yii2/keys{/key_id}","collaborators_url":"https://api.github.com/repos/yiisoft/yii2/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/yiisoft/yii2/teams","hooks_url":"https://api.github.com/repos/yiisoft/yii2/hooks","issue_events_url":"https://api.github.com/repos/yiisoft/yii2/issues/events{/number}","events_url":"https://api.github.com/repos/yiisoft/yii2/events","assignees_url":"https://api.github.com/repos/yiisoft/yii2/assignees{/user}","branches_url":"https://api.github.com/repos/yiisoft/yii2/branches{/branch}","tags_url":"https://api.github.com/repos/yiisoft/yii2/tags","blobs_url":"https://api.github.com/repos/yiisoft/yii2/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/yiisoft/yii2/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/yiisoft/yii2/git/refs{/sha}","trees_url":"https://api.github.com/repos/yiisoft/yii2/git/trees{/sha}","statuses_url":"https://api.github.com/repos/yiisoft/yii2/statuses/{sha}","languages_url":"https://api.github.com/repos/yiisoft/yii2/languages","stargazers_url":"https://api.github.com/repos/yiisoft/yii2/stargazers","contributors_url":"https://api.github.com/repos/yiisoft/yii2/contributors","subscribers_url":"https://api.github.com/repos/yiisoft/yii2/subscribers","subscription_url":"https://api.github.com/repos/yiisoft/yii2/subscription","commits_url":"https://api.github.com/repos/yiisoft/yii2/commits{/sha}","git_commits_url":"https://api.github.com/repos/yiisoft/yii2/git/commits{/sha}","comments_url":"https://api.github.com/repos/yiisoft/yii2/comments{/number}","issue_comment_url":"https://api.github.com/repos/yiisoft/yii2/issues/comments/{number}","contents_url":"https://api.github.com/repos/yiisoft/yii2/contents/{+path}","compare_url":"https://api.github.com/repos/yiisoft/yii2/compare/{base}...{head}","merges_url":"https://api.github.com/repos/yiisoft/yii2/merges","archive_url":"https://api.github.com/repos/yiisoft/yii2/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/yiisoft/yii2/downloads","issues_url":"https://api.github.com/repos/yiisoft/yii2/issues{/number}","pulls_url":"https://api.github.com/repos/yiisoft/yii2/pulls{/number}","milestones_url":"https://api.github.com/repos/yiisoft/yii2/milestones{/number}","notifications_url":"https://api.github.com/repos/yiisoft/yii2/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/yiisoft/yii2/labels{/name}","releases_url":"https://api.github.com/repos/yiisoft/yii2/releases{/id}","created_at":"2012-02-13T15:32:36Z","updated_at":"2014-11-12T15:28:43Z","pushed_at":"2014-11-12T15:58:36Z","git_url":"git://github.com/yiisoft/yii2.git","ssh_url":"git@github.com:yiisoft/yii2.git","clone_url":"https://github.com/yiisoft/yii2.git","svn_url":"https://github.com/yiisoft/yii2","homepage":"http://www.yiiframework.com","size":104334,"stargazers_count":4032,"watchers_count":4032,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1930,"mirror_url":null,"open_issues_count":407,"forks":1930,"open_issues":407,"watchers":4032,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/yiisoft/yii2/pulls/6030"},"html":{"href":"https://github.com/yiisoft/yii2/pull/6030"},"issue":{"href":"https://api.github.com/repos/yiisoft/yii2/issues/6030"},"comments":{"href":"https://api.github.com/repos/yiisoft/yii2/issues/6030/comments"},"review_comments":{"href":"https://api.github.com/repos/yiisoft/yii2/pulls/6030/comments"},"review_comment":{"href":"https://api.github.com/repos/yiisoft/yii2/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/yiisoft/yii2/pulls/6030/commits"},"statuses":{"href":"https://api.github.com/repos/yiisoft/yii2/statuses/b31df1e550a836f5ac0b3b4331306944e1637f73"}}}}