Explorar el Código

delete empty lines DOC-ES

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@19936 44c647ce-9c0f-0410-b52a-842ac1e357ba
benjamin-gonzales hace 16 años
padre
commit
4977bb7768

+ 97 - 45
documentation/manual/es/module_specs/Zend_Acl-Advanced.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 15814 -->
-<!-- Reviewed: no -->
+    <!-- EN-Revision: 15814 -->
+    <!-- Reviewed: no -->
 <sect1 id="zend.acl.advanced">
 <sect1 id="zend.acl.advanced">
 
 
     <title>Uso Avanzado</title>
     <title>Uso Avanzado</title>
@@ -9,24 +9,46 @@
 
 
         <title>Almacenamiento Permanente de los Datos ACL</title>
         <title>Almacenamiento Permanente de los Datos ACL</title>
 
 
-       <para>
-            <classname>Zend_Acl</classname> fue diseñado de tal manera que no requiere ninguna
-            tecnología particular como bases de datos o un servidor de cache para el almacenamiento
-            de datos <acronym>ACL</acronym>. Al poseer una implementación completamente construida
-            en <acronym>PHP</acronym>, es posible construir herramientas de administración
-            personalizadas sobre <classname>Zend_Acl</classname> con relativa facilidad y
-            flexibilidad. En muchas situaciones se requiere alguna forma de mantenimiento
-            interactivo de una <acronym>ACL</acronym>, y <classname>Zend_Acl</classname> provee
-            métodos para configurar, y consultar, los controles de acceso de una aplicación.</para>
-
-       <para>El almacenamiento de los datos <acronym>ACL</acronym> es una tarea que se delega al
-            desarrollador, puesto que la utilización variará extensamente en distintas situaciones.
-            Dado que <classname>Zend_Acl</classname> es serializable, los objetos
-                <acronym>ACL</acronym> pueden serializarse con la función <ulink
-                url="http://php.net/serialize">
+        <para>
+            <classname>Zend_Acl</classname>
+            fue diseñado de tal manera que no requiere ninguna tecnología particular como bases de
+            datos o un servidor de cache para el almacenamiento de datos
+            <acronym>ACL</acronym>
+            . Al poseer una implementación completamente construida en
+            <acronym>PHP</acronym>
+            , es posible construir herramientas de administración personalizadas sobre
+            <classname>Zend_Acl</classname>
+            con relativa facilidad y
+            flexibilidad. En muchas situaciones se requiere alguna forma de
+            mantenimiento
+            interactivo de una
+            <acronym>ACL</acronym>
+            , y
+            <classname>Zend_Acl</classname>
+            provee
+            métodos para configurar, y consultar, los controles de acceso de una aplicación.
+        </para>
+
+        <para>
+            El almacenamiento de los datos
+            <acronym>ACL</acronym>
+            es una tarea que se delega al
+            desarrollador, puesto que la utilización variará
+            extensamente en distintas situaciones.
+            Dado que
+            <classname>Zend_Acl</classname>
+            es serializable, los objetos
+            <acronym>ACL</acronym>
+            pueden serializarse con la función
+            <ulink url="http://php.net/serialize">
                 <methodname>serialize()</methodname>
                 <methodname>serialize()</methodname>
-            </ulink> de <acronym>PHP</acronym>, y los resultados pueden ser almacenados donde sea
-            que el desarrollador lo desee, en un archivo, base de datos, o mecanismo de cache</para>
+            </ulink>
+            de
+            <acronym>PHP</acronym>
+            , y los resultados pueden ser almacenados donde sea
+            que el desarrollador lo desee, en un
+            archivo, base de datos, o mecanismo de cache
+        </para>
 
 
     </sect2>
     </sect2>
 
 
@@ -34,18 +56,32 @@
 
 
         <title> Escribiendo reglas condicionales ACL con aserciones </title>
         <title> Escribiendo reglas condicionales ACL con aserciones </title>
 
 
-       <para>A veces, una regla para permitir o negar una función de acceso a un recurso no
-            debería ser absoluta sino que depende de varios criterios. Por ejemplo, supóngase que
-            debe permitirse cierto acceso, pero únicamente entre las 8:00am y 5:00pm. Otro ejemplo
-            sería negar el acceso debido a una petición que proviene de una dirección IP que se ha
-            marcado como una fuente de abusos. <classname>Zend_Acl</classname> tiene soporte para la
-            aplicación de normas basadas en cualquier condición que el desarrollador necesite.</para>
-
-       <para>
-            <classname>Zend_Acl</classname> provee soporte para reglas condicionales con
-                <classname>Zend_Acl_Assert_Interface</classname> . Con el fin de utilizar la regla
-            de aserción de la interfaz, un desarrollador escribe una clase que implemente el método
-                <methodname>assert()</methodname> de la interfaz:</para>
+        <para>
+            A veces, una regla para permitir o negar una función de acceso a un recurso no debería
+            ser absoluta sino que depende de varios criterios. Por ejemplo, supóngase que
+            debe
+            permitirse cierto
+            acceso, pero únicamente entre las 8:00am y 5:00pm. Otro ejemplo
+            sería
+            negar el acceso debido a una petición que proviene de una dirección IP que se ha
+            marcado
+            como una fuente de abusos.
+            <classname>Zend_Acl</classname>
+            tiene soporte para la
+            aplicación de normas basadas en cualquier condición que el
+            desarrollador necesite.
+        </para>
+
+        <para>
+            <classname>Zend_Acl</classname>
+            provee soporte para reglas condicionales con
+            <classname>Zend_Acl_Assert_Interface</classname>
+            . Con el fin de utilizar la regla
+            de aserción de la interfaz, un desarrollador escribe
+            una clase que implemente el método
+            <methodname>assert()</methodname>
+            de la interfaz:
+        </para>
 
 
         <programlisting language="php"><![CDATA[
         <programlisting language="php"><![CDATA[
 class CleanIPAssertion implements Zend_Acl_Assert_Interface
 class CleanIPAssertion implements Zend_Acl_Assert_Interface
@@ -65,32 +101,48 @@ class CleanIPAssertion implements Zend_Acl_Assert_Interface
 }
 }
 ]]></programlisting>
 ]]></programlisting>
 
 
-       <para>Una vez la clase de aserción esta disponible, el desarrollador puede suministrar una
+        <para>
+            Una vez la clase de aserción esta disponible, el desarrollador puede suministrar una
             instancia de la clase de aserción cuando asigna reglas condicionales. Una regla que es
             instancia de la clase de aserción cuando asigna reglas condicionales. Una regla que es
-            creada con una aserción sólo se aplica cuando el método de la aserción devuelve
-                <constant>TRUE</constant>.</para>
+            creada con una
+            aserción sólo se aplica cuando el método de la aserción devuelve
+            <constant>TRUE</constant>
+            .
+        </para>
 
 
         <programlisting language="php"><![CDATA[
         <programlisting language="php"><![CDATA[
 $acl = new Zend_Acl();
 $acl = new Zend_Acl();
 $acl->allow(null, null, null, new CleanIPAssertion());
 $acl->allow(null, null, null, new CleanIPAssertion());
 ]]></programlisting>
 ]]></programlisting>
 
 
-       <para>El código anterior crea una regla condicional que permite el acceso a todos los
+        <para>El código anterior crea una regla condicional que permite el acceso a todos los
             privilegios sobre todo, por todo el mundo, excepto cuando la IP de quien hace la
             privilegios sobre todo, por todo el mundo, excepto cuando la IP de quien hace la
-            petición está en la "lista negra". Si una petición viene desde una IP que no está
+            petición está en la "lista
+            negra". Si una petición viene desde una IP que no está
             considerada "limpia", entonces la regla no se aplica. Dado que la regla se aplica a
             considerada "limpia", entonces la regla no se aplica. Dado que la regla se aplica a
-            todos los roles, todos los recursos, y todos los privilegios, una IP "no limpia" daría
+            todos los roles, todos los recursos, y todos los
+            privilegios, una IP "no limpia" daría
             lugar a una negación de acceso. Éste es un caso especial, sin embargo, y debería ser
             lugar a una negación de acceso. Éste es un caso especial, sin embargo, y debería ser
-            entendido que en todos los otros casos (por ejemplo, cuando un rol específico, recurso,
-            o privilegio está especificado por la regla), una aserción fallida provoca que la regla
-            no se aplique, y otras reglas deberían ser usadas para determinar si el acceso está
+            entendido que en todos los otros casos (por ejemplo, cuando un rol
+            específico, recurso, o
+            privilegio está especificado por la regla), una aserción fallida provoca que la regla
+            no
+            se aplique, y otras reglas deberían ser usadas para determinar si el acceso
+            está
             permitido o denegado.</para>
             permitido o denegado.</para>
 
 
-       <para>El método <methodname>assert()</methodname> de un objeto aserción es pasado a la
-                <acronym>ACL</acronym>, regla, recurso, y privilegio para el cual una consulta de
-            autorización (por ejemplo, <methodname>isAllowed()</methodname> ) se aplica, con el fin
-            de proporcionar un contexto para que la clase de aserción determine sus condiciones
-            cuando fuera necesario.</para>
+        <para>
+            El método
+            <methodname>assert()</methodname>
+            de un objeto aserción es pasado a la
+            <acronym>ACL</acronym>
+            , regla, recurso, y privilegio para el cual una consulta de
+            autorización (por ejemplo,
+            <methodname>isAllowed()</methodname>
+            ) se aplica, con el fin de proporcionar un contexto para que la clase de aserción
+            determine sus condiciones
+            cuando fuera necesario.
+        </para>
 
 
     </sect2>
     </sect2>
 
 

+ 80 - 37
documentation/manual/es/module_specs/Zend_Acl-Refining.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 18389 -->
-<!-- Reviewed: no -->
+    <!-- EN-Revision: 18389 -->
+    <!-- Reviewed: no -->
 <sect1 id="zend.acl.refining">
 <sect1 id="zend.acl.refining">
 
 
     <title>Perfeccionamiento de los controles de acceso</title>
     <title>Perfeccionamiento de los controles de acceso</title>
@@ -9,26 +9,44 @@
 
 
         <title>Definir mejor los controles de acceso</title>
         <title>Definir mejor los controles de acceso</title>
 
 
-       <para>El <acronym>ACL</acronym> básico según lo definido en la <link
-                linkend="zend.acl.introduction"> sección anterior </link>
+        <para>
+            El
+            <acronym>ACL</acronym>
+            básico según lo definido en la
+            <link linkend="zend.acl.introduction"> sección anterior </link>
             demuestra cómo los diversos privilegios se pueden otorgar sobre todo
             demuestra cómo los diversos privilegios se pueden otorgar sobre todo
-            el <acronym>ACL</acronym> (todos los recursos). En la práctica, sin
-            embargo, los controles de acceso tienden a tener excepciones y
-            diversos grados de complejidad. <classname>Zend_Acl</classname>
+            el
+            <acronym>ACL</acronym>
+            (todos los recursos). En la práctica, sin
+            embargo, los controles de acceso tienden a
+            tener excepciones y
+            diversos grados de complejidad.
+            <classname>Zend_Acl</classname>
             permite lograr estos refinamientos de una manera sencilla y
             permite lograr estos refinamientos de una manera sencilla y
-            flexible.</para>
-
-       <para>Para el <acronym>CMS</acronym> del ejemplo se ha determinado que,
-            si bien el grupo 'staff' cubre las necesidades de la gran mayoría de
+            flexible.
+        </para>
+
+        <para>
+            Para el
+            <acronym>CMS</acronym>
+            del ejemplo se ha determinado que,
+            si bien el grupo 'staff' cubre las necesidades de la
+            gran mayoría de
             usuarios, hay una necesidad de un nuevo grupo 'marketing' que
             usuarios, hay una necesidad de un nuevo grupo 'marketing' que
-            requiere el acceso al boletín de noticias y las últimas noticias en
-            el CMS. El grupo es bastante auto suficiente y tendrá la capacidad
-            de publicar y de archivar los boletines de noticias y las últimas
-            noticias.</para>
-
-       <para>Primero revisamos el registro del rol para reflejar estos
-            cambios. Hemos determinado que el grupo 'marketing' tiene los mismos
-            permisos básicos que 'staff', así que definimos 'marketing' de tal
+            requiere el
+            acceso al boletín de noticias y las últimas noticias en
+            el CMS. El grupo es bastante auto
+            suficiente y tendrá la capacidad
+            de publicar y de archivar los boletines de noticias y
+            las últimas
+            noticias.
+        </para>
+
+        <para>Primero revisamos el registro del rol para reflejar estos
+            cambios. Hemos determinado
+            que el grupo 'marketing' tiene los mismos
+            permisos básicos que 'staff', así que definimos
+            'marketing' de tal
             manera que herede los permisos de 'staff':</para>
             manera que herede los permisos de 'staff':</para>
 
 
         <programlisting language="php"><![CDATA[
         <programlisting language="php"><![CDATA[
@@ -36,9 +54,11 @@
  $acl->addRole(new Zend_Acl_Role('marketing'), 'staff');
  $acl->addRole(new Zend_Acl_Role('marketing'), 'staff');
 ]]></programlisting>
 ]]></programlisting>
 
 
-       <para>A continuación, la nota que por encima de los controles de acceso
-            se refieren a recursos específicos (por ejemplo, "boletín
-            informativo", "últimas noticias", "anuncio de noticias"). Ahora
+        <para>A continuación, la nota que por encima de los controles de acceso
+            se refieren a
+            recursos específicos (por ejemplo, "boletín
+            informativo", "últimas noticias", "anuncio de
+            noticias"). Ahora
             añadimos estos recursos:</para>
             añadimos estos recursos:</para>
 
 
         <programlisting language="php"><![CDATA[
         <programlisting language="php"><![CDATA[
@@ -56,8 +76,13 @@ $acl->addResource(new Zend_Acl_Resource('latest'), 'news');
 $acl->addResource(new Zend_Acl_Resource('announcement'), 'news');
 $acl->addResource(new Zend_Acl_Resource('announcement'), 'news');
 ]]></programlisting>
 ]]></programlisting>
 
 
-       <para>Entonces es simplemente una cuestión de la definición de estas
-            normas más específicas en ámbitos de la <acronym>ACL</acronym>:</para>
+        <para>
+            Entonces es simplemente una cuestión de la definición de estas
+            normas más específicas en
+            ámbitos de la
+            <acronym>ACL</acronym>
+            :
+        </para>
 
 
         <programlisting language="php"><![CDATA[
         <programlisting language="php"><![CDATA[
  //
  //
@@ -76,8 +101,12 @@ $acl->addResource(new Zend_Acl_Resource('announcement'), 'news');
  $acl->deny(null, 'announcement', 'archive');
  $acl->deny(null, 'announcement', 'archive');
 ]]></programlisting>
 ]]></programlisting>
 
 
-       <para>Ahora podemos consultar el <acronym>ACL</acronym> con respecto a
-            los últimos cambios:</para>
+        <para>
+            Ahora podemos consultar el
+            <acronym>ACL</acronym>
+            con respecto a
+            los últimos cambios:
+        </para>
 
 
         <programlisting language="php"><![CDATA[
         <programlisting language="php"><![CDATA[
  echo $acl->isAllowed('staff', 'newsletter', 'publish') ?
  echo $acl->isAllowed('staff', 'newsletter', 'publish') ?
@@ -120,13 +149,23 @@ $acl->addResource(new Zend_Acl_Resource('announcement'), 'news');
 
 
         <title>Eliminar los controles de acceso</title>
         <title>Eliminar los controles de acceso</title>
 
 
-       <para>Para eliminar una o más reglas <acronym>ACL</acronym>,
-            simplemente utilice el método <methodname>removeAllow()</methodname>
-            o <methodname>removeDeny()</methodname>. Al igual que con
-                <methodname>allow()</methodname> y
-                <methodname>deny()</methodname>, puede utilizar un valor
-                <constant>NULL</constant> para indicar que el método es
-            aplicable a todos los roles, recursos y/o privilegios:</para>
+        <para>
+            Para eliminar una o más reglas
+            <acronym>ACL</acronym>
+            ,
+            simplemente utilice el método
+            <methodname>removeAllow()</methodname>
+            o
+            <methodname>removeDeny()</methodname>
+            . Al igual que con
+            <methodname>allow()</methodname>
+            y
+            <methodname>deny()</methodname>
+            , puede utilizar un valor
+            <constant>NULL</constant>
+            para indicar que el método es
+            aplicable a todos los roles, recursos y/o privilegios:
+        </para>
 
 
         <programlisting language="php"><![CDATA[
         <programlisting language="php"><![CDATA[
 // Elimina la prohibición de leer las últimas noticias de staff (y marketing,
 // Elimina la prohibición de leer las últimas noticias de staff (y marketing,
@@ -154,10 +193,14 @@ echo $acl->isAllowed('marketing', 'newsletter', 'archive') ?
 
 
 ]]></programlisting>
 ]]></programlisting>
 
 
-       <para>Los privilegios pueden ser modificados de manera incremental como
-            se ha indicado anteriormente, pero un valor
-                <constant>NULL</constant> para los privilegios anula tales
-            cambios incrementales:</para>
+        <para>
+            Los privilegios pueden ser modificados de manera incremental como
+            se ha indicado
+            anteriormente, pero un valor
+            <constant>NULL</constant>
+            para los privilegios anula tales
+            cambios incrementales:
+        </para>
 
 
         <programlisting language="php"><![CDATA[
         <programlisting language="php"><![CDATA[
 //Permitir al grupo de "marketing" todos los permisos a las últimas noticias
 //Permitir al grupo de "marketing" todos los permisos a las últimas noticias

+ 311 - 137
documentation/manual/es/module_specs/Zend_Acl.xml

@@ -1,109 +1,203 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 18729 -->
-<!-- Reviewed: no -->
+    <!-- EN-Revision: 18729 -->
+    <!-- Reviewed: no -->
 <sect1 id="zend.acl.introduction">
 <sect1 id="zend.acl.introduction">
     <title>Introducción</title>
     <title>Introducción</title>
-   <para>
-        <classname>Zend_Acl</classname> provee la implementación de un sistema
+    <para>
+        <classname>Zend_Acl</classname>
+        provee la implementación de un sistema
         simple y flexible de Listas de Control de Acceso
         simple y flexible de Listas de Control de Acceso
-        (<acronym>ACL</acronym>, por sus siglas en inglés) para la
-        administración de privilegios. En general, una aplicación puede utilizar
-        las <acronym>ACL</acronym> para controlar el acceso a ciertos objetos
-        protegidos, que son requeridos por otros objetos.</para>
-   <para>Para los propósitos de esta documentación: <itemizedlist>
+        (
+        <acronym>ACL</acronym>
+        , por sus siglas en inglés) para la
+        administración de privilegios. En general, una aplicación
+        puede utilizar
+        las
+        <acronym>ACL</acronym>
+        para controlar el acceso a ciertos objetos
+        protegidos, que son requeridos por otros objetos.
+    </para>
+    <para>
+        Para los propósitos de esta documentación:
+        <itemizedlist>
             <listitem>
             <listitem>
-               <para>Un <emphasis>recurso</emphasis> es un objeto al cual el
-                    acceso esta controlado.</para>
+                <para>
+                    Un
+                    <emphasis>recurso</emphasis>
+                    es un objeto al cual el
+                    acceso esta controlado.
+                </para>
             </listitem>
             </listitem>
             <listitem>
             <listitem>
-               <para>Un <emphasis>rol</emphasis> es un objeto que puede
-                    solicitar acceso a un recurso.</para>
+                <para>
+                    Un
+                    <emphasis>rol</emphasis>
+                    es un objeto que puede
+                    solicitar acceso a un recurso.
+                </para>
             </listitem>
             </listitem>
-        </itemizedlist> En términos generales, <emphasis> Los roles solicitan
-            acceso a los recursos </emphasis> . Por ejemplo, si una persona
-        solicita acceso a un automóvil, entonces la persona se convierte en el
+        </itemizedlist>
+        En términos generales,
+        <emphasis> Los roles solicitan
+            acceso a los recursos </emphasis>
+        . Por ejemplo, si una persona
+        solicita acceso a un automóvil, entonces la persona se
+        convierte en el
         rol solicitante, y el automóvil en el recurso, puesto que el acceso al
         rol solicitante, y el automóvil en el recurso, puesto que el acceso al
-        automóvil puede no estar disponible a cualquiera.</para>
-
-   <para>A través de la especificación y uso de Listas de Control de Acceso
-            (<acronym>ACL</acronym>), una aplicación puede controlar cómo los
-        objetos solicitantes (roles) han obtenido acceso a objetos protegidos
-        (recursos).</para>
+        automóvil puede no estar disponible a cualquiera.
+    </para>
+
+    <para>
+        A través de la especificación y uso de Listas de Control de Acceso
+        (
+        <acronym>ACL</acronym>
+        ), una aplicación puede controlar cómo los
+        objetos solicitantes (roles) han obtenido acceso a
+        objetos protegidos
+        (recursos).
+    </para>
 
 
     <sect2 id="zend.acl.introduction.resources">
     <sect2 id="zend.acl.introduction.resources">
         <title>Acerca de los Recursos</title>
         <title>Acerca de los Recursos</title>
-       <para>En <classname>Zend_Acl</classname>, crear un recurso es muy
-            sencillo. <classname>Zend_Acl</classname> proporciona el
-                <classname>Zend_Acl_Resource_Interface</classname> para
+        <para>
+            En
+            <classname>Zend_Acl</classname>
+            , crear un recurso es muy
+            sencillo.
+            <classname>Zend_Acl</classname>
+            proporciona el
+            <classname>Zend_Acl_Resource_Interface</classname>
+            para
             facilitar a los desarrolladores la creación de recursos. Una clase
             facilitar a los desarrolladores la creación de recursos. Una clase
-            solo necesita implementar su interfaz, la cual consiste en un método
-            único, <methodname>getResourceId()</methodname> , para que
-                <classname>Zend_Acl</classname> considere el objeto como un
-            recurso. Adicionalmente, <classname>Zend_Acl_Resource</classname> es
-            proporcionado por <classname>Zend_Acl</classname> como un recurso
+            solo necesita
+            implementar su interfaz, la cual consiste en un método
+            único,
+            <methodname>getResourceId()</methodname>
+            , para que
+            <classname>Zend_Acl</classname>
+            considere el objeto como un
+            recurso. Adicionalmente,
+            <classname>Zend_Acl_Resource</classname>
+            es
+            proporcionado por
+            <classname>Zend_Acl</classname>
+            como un recurso
             básico de aplicación para que los desarrolladores puedan extenderla
             básico de aplicación para que los desarrolladores puedan extenderla
-            hasta donde lo deseen.</para>
-       <para>
-            <classname>Zend_Acl</classname> provee un estructura de árbol a la
-            cual pueden ser agregados múltiples recursos (o "Áreas con Controles
+            hasta
+            donde lo deseen.
+        </para>
+        <para>
+            <classname>Zend_Acl</classname>
+            provee un estructura de árbol a la
+            cual pueden ser agregados múltiples recursos (o "Áreas
+            con Controles
             de Acceso").Ya que los recursos son almacenados en esta estructura
             de Acceso").Ya que los recursos son almacenados en esta estructura
-            de árbol, estos pueden ser organizados desde lo general (hacia la
-            raíz del árbol) a lo específico (hacia las ramas del árbol).
-            Consultas sobre un recurso específico buscarán automáticamente, en
+            de árbol,
+            estos pueden ser organizados desde lo general (hacia la
+            raíz del árbol) a lo específico
+            (hacia las ramas del árbol).
+            Consultas sobre un recurso específico buscarán
+            automáticamente, en
             la jerarquía del recurso, reglas asignadas a recursos anteriores a
             la jerarquía del recurso, reglas asignadas a recursos anteriores a
             los que el recurso actual haga referencia, permitiendo la herencia
             los que el recurso actual haga referencia, permitiendo la herencia
-            simple de reglas. Por ejemplo, si una regla por defecto se aplica a
-            cada edificio en una ciudad, uno simplemente podría asignar la regla
-            a la ciudad, en lugar de asignar la misma regla a cada edificio.
+            simple de reglas. Por
+            ejemplo, si una regla por defecto se aplica a
+            cada edificio en una ciudad, uno
+            simplemente podría asignar la regla
+            a la ciudad, en lugar de asignar la misma regla a
+            cada edificio.
             Algunos edificios pueden necesitar excepciones a la regla, sin
             Algunos edificios pueden necesitar excepciones a la regla, sin
-            embargo, y esto es fácil de hacer en <classname>Zend_Acl</classname>
+            embargo, y
+            esto es fácil de hacer en
+            <classname>Zend_Acl</classname>
             asignando esta excepción a cada edificio que necesite una excepción
             asignando esta excepción a cada edificio que necesite una excepción
-            a la regla. Un recurso sólo puede heredar de un recurso padre,
-            aunque este recurso padre puede tener a la vez su propio recurso
-            padre, y así; sucesivamente.</para>
-       <para>
-            <classname>Zend_Acl</classname> también soporta privilegios sobre
-            recursos (ejemplo. "crear","leer","actualizar", "borrar"), y el
+            a la regla. Un
+            recurso sólo puede heredar de un recurso padre,
+            aunque este recurso padre puede tener a
+            la vez su propio recurso
+            padre, y así; sucesivamente.
+        </para>
+        <para>
+            <classname>Zend_Acl</classname>
+            también soporta privilegios sobre
+            recursos (ejemplo. "crear","leer","actualizar",
+            "borrar"), y el
             desarrollador puede asignar reglas que afecten o a todos los
             desarrollador puede asignar reglas que afecten o a todos los
-            privilegios o a privilegios específicos sobre un recurso.</para>
+            privilegios o
+            a privilegios específicos sobre un recurso.
+        </para>
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.acl.introduction.roles">
     <sect2 id="zend.acl.introduction.roles">
         <title>Acerca de las Reglas</title>
         <title>Acerca de las Reglas</title>
-       <para>Al igual que los recursos, la creación de un rol también es muy
-            simple. <classname>Zend_Acl</classname> proporciona
-                <classname>Zend_Acl_Role_Interface</classname> para facilitar a
+        <para>
+            Al igual que los recursos, la creación de un rol también es muy
+            simple.
+            <classname>Zend_Acl</classname>
+            proporciona
+            <classname>Zend_Acl_Role_Interface</classname>
+            para facilitar a
             los desarrolladores la creación de roles. Una clase solo necesita la
             los desarrolladores la creación de roles. Una clase solo necesita la
             implementación de su interfaz, la cual consiste en un método único,
             implementación de su interfaz, la cual consiste en un método único,
-                <methodname>getRoleId()</methodname> , para que
-                <classname>Zend_Acl</classname> considere que el objeto es un
-            Rol. Adicionalmente, <classname>Zend_Acl_Role</classname> está
-            incluido con <classname>Zend_Acl</classname> como una implementación
+            <methodname>getRoleId()</methodname>
+            , para que
+            <classname>Zend_Acl</classname>
+            considere que el objeto es un
+            Rol. Adicionalmente,
+            <classname>Zend_Acl_Role</classname>
+            está
+            incluido con
+            <classname>Zend_Acl</classname>
+            como una implementación
             principal del rol para que los desarrolladores la extiendan hasta
             principal del rol para que los desarrolladores la extiendan hasta
-            donde lo deseen.</para>
-       <para>En <classname>Zend_Acl</classname>, un Rol puede heredar de otro
-            o más roles. Esto es para soportar herencia de reglas entre roles.
+            donde lo deseen.
+        </para>
+        <para>
+            En
+            <classname>Zend_Acl</classname>
+            , un Rol puede heredar de otro
+            o más roles. Esto es para soportar herencia de reglas
+            entre roles.
             Por ejemplo, un Rol de usuario, como "sally", puede estar bajo uno o
             Por ejemplo, un Rol de usuario, como "sally", puede estar bajo uno o
-            más roles padre, como "editor" y "administrador". El desarrollador
-            puede asignar reglas a "editor" y "administrador" por separado, y
-            "sally" puede heredar tales reglas de ambos, sin tener que asignar
-            reglas directamente a "sally".</para>
-       <para>Dado que la habilidad de herencia desde múltiples roles es muy
-            útil, múltiples herencias también introduce cierto grado de
-            complejidad. El siguiente ejemplo ilustra la condición de ambiguedad
-            y como <classname>Zend_Acl</classname> soluciona esto.</para>
+            más
+            roles padre, como "editor" y "administrador". El desarrollador
+            puede asignar reglas a
+            "editor" y "administrador" por separado, y
+            "sally" puede heredar tales reglas de ambos,
+            sin tener que asignar
+            reglas directamente a "sally".
+        </para>
+        <para>
+            Dado que la habilidad de herencia desde múltiples roles es muy
+            útil, múltiples herencias
+            también introduce cierto grado de
+            complejidad. El siguiente ejemplo ilustra la condición
+            de ambiguedad
+            y como
+            <classname>Zend_Acl</classname>
+            soluciona esto.
+        </para>
         <example id="zend.acl.introduction.roles.example.multiple_inheritance">
         <example id="zend.acl.introduction.roles.example.multiple_inheritance">
             <title>Herencia Múlltiple entre Roles</title>
             <title>Herencia Múlltiple entre Roles</title>
-           <para>El siguiente código define tres roles principales -
-                "invitado", "miembro", y "admin" - de los cuales otros roles
-                pueden heredar. Entonces, un rol identificado como "unUsuario"
+            <para>
+                El siguiente código define tres roles principales -
+                "invitado", "miembro", y "admin"
+                - de los cuales otros roles
+                pueden heredar. Entonces, un rol identificado como
+                "unUsuario"
                 es colocado y hereda de los otros tres roles. El orden en el
                 es colocado y hereda de los otros tres roles. El orden en el
-                cual estos roles aparecen en el array
-                    <varname>$parents</varname> es importante. Cuando es
-                necesario, <classname>Zend_Acl</classname> busca por reglas de
+                cual estos
+                roles aparecen en el array
+                <varname>$parents</varname>
+                es importante. Cuando es
+                necesario,
+                <classname>Zend_Acl</classname>
+                busca por reglas de
                 acceso definidas no solo para el rol solicitado (aquí,
                 acceso definidas no solo para el rol solicitado (aquí,
                 "unUsuario"), sino también sobre los roles heredados (aquí,
                 "unUsuario"), sino también sobre los roles heredados (aquí,
-                "invitado", "miembro", y "admin"):</para>
+                "invitado", "miembro", y
+                "admin"):
+            </para>
             <programlisting language="php"><![CDATA[
             <programlisting language="php"><![CDATA[
 require_once 'Zend/Acl.php';
 require_once 'Zend/Acl.php';
 $acl = new Zend_Acl();
 $acl = new Zend_Acl();
@@ -124,48 +218,86 @@ $acl->allow('miembro', 'unRecurso');
 
 
 echo $acl->isAllowed('unUsuario', 'unRecurso') ? 'permitido' : 'denegado';
 echo $acl->isAllowed('unUsuario', 'unRecurso') ? 'permitido' : 'denegado';
 ]]></programlisting>
 ]]></programlisting>
-           <para>Ya que no hay reglas específicamente definidas para el rol
-                "unUsuario" y "unRecurso", <classname>Zend_Acl</classname> debe
+            <para>
+                Ya que no hay reglas específicamente definidas para el rol
+                "unUsuario" y "unRecurso",
+                <classname>Zend_Acl</classname>
+                debe
                 buscar por reglas que puedan estar definidas para roles
                 buscar por reglas que puedan estar definidas para roles
-                "unUsuario" hereda. Primero, el rol "admin" es visitado, y no
-                hay regla de acceso definida para éste. Luego, el rol "miembro"
-                es visitado, y <classname>Zend_Acl</classname> encuentra que
+                "unUsuario" hereda.
+                Primero, el rol "admin" es visitado, y no
+                hay regla de acceso definida para éste.
+                Luego, el rol "miembro"
+                es visitado, y
+                <classname>Zend_Acl</classname>
+                encuentra que
                 aquí hay una regla especificando que "miembro" tiene permiso
                 aquí hay una regla especificando que "miembro" tiene permiso
-                para acceder a "unRecurso".</para>
-           <para>Así, <classname>Zend_Acl</classname> va a seguir examinando
+                para
+                acceder a "unRecurso".
+            </para>
+            <para>
+                Así,
+                <classname>Zend_Acl</classname>
+                va a seguir examinando
                 las reglas definidas para otros roles padre, sin embargo,
                 las reglas definidas para otros roles padre, sin embargo,
                 encontraría que "invitado" tiene el acceso denegado a
                 encontraría que "invitado" tiene el acceso denegado a
-                "unRecurso". Este hecho introduce una ambigüedad debido a que
-                ahora "unUsuario" está tanto denegado como permitido para
+                "unRecurso". Este hecho
+                introduce una ambigüedad debido a que
+                ahora "unUsuario" está tanto denegado como
+                permitido para
                 acceder a "unRecurso", por la razón de tener un conflicto de
                 acceder a "unRecurso", por la razón de tener un conflicto de
-                reglas heredadas de diferentes roles padre.</para>
-           <para>
-                <classname>Zend_Acl</classname> resuelve esta ambigüedad
-                completando la consulta cuando encuentra la primera regla que es
+                reglas
+                heredadas de diferentes roles padre.
+            </para>
+            <para>
+                <classname>Zend_Acl</classname>
+                resuelve esta ambigüedad
+                completando la consulta cuando encuentra la primera regla
+                que es
                 directamente aplicable a la consulta. En este caso, dado que el
                 directamente aplicable a la consulta. En este caso, dado que el
-                rol "miembro" es examinado antes que el rol "invitado", el
-                código de ejemplo mostraría "permitido".</para>
+                rol "miembro"
+                es examinado antes que el rol "invitado", el
+                código de ejemplo mostraría "permitido".
+            </para>
         </example>
         </example>
         <note>
         <note>
-           <para>Cuando se especifican múltiples padres para un Rol, se debe
-                tener en cuenta que el último padre listado es el primero en ser
-                buscado por reglas aplicables para una solicitud de
+            <para>Cuando se especifican múltiples padres para un Rol, se debe
+                tener en cuenta que el
+                último padre listado es el primero en ser
+                buscado por reglas aplicables para una
+                solicitud de
                 autorización.</para>
                 autorización.</para>
         </note>
         </note>
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.acl.introduction.creating">
     <sect2 id="zend.acl.introduction.creating">
-        <title>Creando las Listas de Control de Acceso
-            (<acronym>ACL</acronym>)</title>
-
-       <para>Una <acronym>ACL</acronym> puede representar cualquier grupo de
-            objetos físicos o virtuales que desee. Para propósitos de
-            demostración, sin embargo, crearemos un <acronym>ACL</acronym>
+        <title>
+            Creando las Listas de Control de Acceso
+            (
+            <acronym>ACL</acronym>
+            )
+        </title>
+
+        <para>
+            Una
+            <acronym>ACL</acronym>
+            puede representar cualquier grupo de
+            objetos físicos o virtuales que desee. Para
+            propósitos de
+            demostración, sin embargo, crearemos un
+            <acronym>ACL</acronym>
             básico para un Sistema de Administración de Contenido
             básico para un Sistema de Administración de Contenido
-                (<acronym>CMS</acronym>) que mantendrá varias escalas de grupos
-            sobre una amplia variedad de áreas. Para crear un nuevo objeto
-                <acronym>ACL</acronym>, iniciamos la <acronym>ACL</acronym> sin
-            parámetros:</para>
+            (
+            <acronym>CMS</acronym>
+            ) que mantendrá varias escalas de grupos
+            sobre una amplia variedad de áreas. Para crear
+            un nuevo objeto
+            <acronym>ACL</acronym>
+            , iniciamos la
+            <acronym>ACL</acronym>
+            sin
+            parámetros:
+        </para>
 
 
         <programlisting language="php"><![CDATA[
         <programlisting language="php"><![CDATA[
 require_once 'Zend/Acl.php';
 require_once 'Zend/Acl.php';
@@ -174,34 +306,48 @@ $acl = new Zend_Acl();
 ]]></programlisting>
 ]]></programlisting>
 
 
         <note>
         <note>
-           <para>Hasta que un desarrollador especifique una regla"permitido",
-                    <classname>Zend_Acl</classname> deniega el acceso a cada
-                privilegio sobre cada recurso para cada rol.</para>
+            <para>
+                Hasta que un desarrollador especifique una regla"permitido",
+                <classname>Zend_Acl</classname>
+                deniega el acceso a cada
+                privilegio sobre cada recurso para cada rol.
+            </para>
         </note>
         </note>
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.acl.introduction.role_registry">
     <sect2 id="zend.acl.introduction.role_registry">
         <title>Registrando Roles</title>
         <title>Registrando Roles</title>
 
 
-       <para>El Sistema de Administración de Contenido
-            (<acronym>CMS</acronym>) casi siempre necesita una jerarquía de
-            permisos para determinar la capacidad de identificación de sus
+        <para>
+            El Sistema de Administración de Contenido
+            (
+            <acronym>CMS</acronym>
+            ) casi siempre necesita una jerarquía de
+            permisos para determinar la capacidad de
+            identificación de sus
             usuarios. Puede haber un grupo de 'Invitados' para permitir acceso
             usuarios. Puede haber un grupo de 'Invitados' para permitir acceso
             limitado para demostraciones, un grupo de 'Personal' para la mayoría
             limitado para demostraciones, un grupo de 'Personal' para la mayoría
-            de usuarios del CMS quienes realizan la mayor parte de operaciones
-            del día a día, un grupo 'Editores' para las responsabilidades de
+            de usuarios del CMS
+            quienes realizan la mayor parte de operaciones
+            del día a día, un grupo 'Editores' para
+            las responsabilidades de
             publicación, revisión, archivo y eliminación de contenido, y
             publicación, revisión, archivo y eliminación de contenido, y
             finalmente un grupo 'Administradores' cuyas tareas pueden incluir
             finalmente un grupo 'Administradores' cuyas tareas pueden incluir
-            todas las de los otros grupos y también el mantenimiento de la
-            información delicada, manejo de usuarios, configuración de los datos
-            básicos y su respaldo/exportación. Este grupo de permisos pueden ser
+            todas las de los otros
+            grupos y también el mantenimiento de la
+            información delicada, manejo de usuarios,
+            configuración de los datos
+            básicos y su respaldo/exportación. Este grupo de permisos
+            pueden ser
             representados en un registro de roles, permitiendo a cada grupo
             representados en un registro de roles, permitiendo a cada grupo
-            heredar los privilegios de los grupos 'padre', al igual que
-            proporcionando distintos privilegios solo para su grupo individual.
-            Los permisos pueden ser expresados como:</para>
-
-        <table
-            id="zend.acl.introduction.role_registry.table.example_cms_access_controls">
+            heredar los
+            privilegios de los grupos 'padre', al igual que
+            proporcionando distintos privilegios solo
+            para su grupo individual.
+            Los permisos pueden ser expresados como:
+        </para>
+
+        <table id="zend.acl.introduction.role_registry.table.example_cms_access_controls">
             <title>Controles de Acceso para un CMS de ejemplo</title>
             <title>Controles de Acceso para un CMS de ejemplo</title>
             <tgroup cols="3">
             <tgroup cols="3">
                 <thead>
                 <thead>
@@ -236,11 +382,17 @@ $acl = new Zend_Acl();
             </tgroup>
             </tgroup>
         </table>
         </table>
 
 
-       <para>Para este ejemplo, se usa <classname>Zend_Acl_Role</classname> ,
+        <para>
+            Para este ejemplo, se usa
+            <classname>Zend_Acl_Role</classname>
+            ,
             pero cualquier objeto que implemente
             pero cualquier objeto que implemente
-                <classname>Zend_Acl_Role_Interface</classname> es admisible.
+            <classname>Zend_Acl_Role_Interface</classname>
+            es admisible.
             Estos grupos pueden ser agregados al registro de roles de la
             Estos grupos pueden ser agregados al registro de roles de la
-            siguiente manera:</para>
+            siguiente
+            manera:
+        </para>
 
 
         <programlisting language="php"><![CDATA[
         <programlisting language="php"><![CDATA[
 require_once 'Zend/Acl.php';
 require_once 'Zend/Acl.php';
@@ -273,19 +425,29 @@ $acl->addRole(new Zend_Acl_Role('administrador'));
     <sect2 id="zend.acl.introduction.defining">
     <sect2 id="zend.acl.introduction.defining">
         <title>Definiendo Controles de Acceso</title>
         <title>Definiendo Controles de Acceso</title>
 
 
-       <para>Ahora que la <acronym>ACL</acronym> contiene los roles
+        <para>
+            Ahora que la
+            <acronym>ACL</acronym>
+            contiene los roles
             relevantes, se pueden establecer reglas que definan cómo los roles
             relevantes, se pueden establecer reglas que definan cómo los roles
             pueden acceder a los recursos. Tenga en cuenta que no definiremos
             pueden acceder a los recursos. Tenga en cuenta que no definiremos
-            ningún recurso en particular para este ejemplo, el cual está
-            simplificado para ilustrar que las reglas se aplican a todos los
-            recursos. <classname>Zend_Acl</classname> proporciona una forma
+            ningún recurso en
+            particular para este ejemplo, el cual está
+            simplificado para ilustrar que las reglas se
+            aplican a todos los
+            recursos.
+            <classname>Zend_Acl</classname>
+            proporciona una forma
             práctica por la cual las reglas solo necesitan ser asignadas de lo
             práctica por la cual las reglas solo necesitan ser asignadas de lo
             general a lo especifico, minimizando el número de reglas necesarias,
             general a lo especifico, minimizando el número de reglas necesarias,
-            porque los recursos y roles heredan reglas que están definidas en
-            sus padres.</para>
-
-       <para>Consecuentemente, podemos definir un grupo razonablemente
-            complejo de reglas con un mínimo de código. Para aplicar estos
+            porque los recursos
+            y roles heredan reglas que están definidas en
+            sus padres.
+        </para>
+
+        <para>Consecuentemente, podemos definir un grupo razonablemente
+            complejo de reglas con un
+            mínimo de código. Para aplicar estos
             permisos básicos como están definidos arriba:</para>
             permisos básicos como están definidos arriba:</para>
 
 
         <programlisting language="php"><![CDATA[
         <programlisting language="php"><![CDATA[
@@ -319,20 +481,32 @@ $acl->allow('editor', null, array('publicar', 'archivar', 'eliminar'));
 $acl->allow('administrador');
 $acl->allow('administrador');
 ]]></programlisting>
 ]]></programlisting>
 
 
-       <para>El valor <constant>NULL</constant> en las llamadas de
-                <methodname>allow()</methodname> es usado para indicar que las
-            reglas de permiso se aplican a todos los recursos.</para>
+        <para>
+            El valor
+            <constant>NULL</constant>
+            en las llamadas de
+            <methodname>allow()</methodname>
+            es usado para indicar que las
+            reglas de permiso se aplican a todos los recursos.
+        </para>
 
 
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.acl.introduction.querying">
     <sect2 id="zend.acl.introduction.querying">
         <title>Consultando la ACL</title>
         <title>Consultando la ACL</title>
 
 
-       <para>Ahora tenemos una <acronym>ACL</acronym> flexible que puede ser
-            usada para determinar qué solicitantes tienen permisos para realizar
+        <para>
+            Ahora tenemos una
+            <acronym>ACL</acronym>
+            flexible que puede ser
+            usada para determinar qué solicitantes tienen permisos para
+            realizar
             funciones a través de la aplicación web. Ejecutar consultas es la
             funciones a través de la aplicación web. Ejecutar consultas es la
-            forma más simple de usar el método
-                <methodname>isAllowed()</methodname> :</para>
+            forma más
+            simple de usar el método
+            <methodname>isAllowed()</methodname>
+            :
+        </para>
 
 
         <programlisting language="php"><![CDATA[
         <programlisting language="php"><![CDATA[
 echo $acl->isAllowed('invitado', null, 'ver') ?
 echo $acl->isAllowed('invitado', null, 'ver') ?