POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
Symfony: Domesticando las Vistas - decharlas
1. Castellón - 5 y 6 de Julio 2010 – Universitat Jaume I organizan patrocinan colaboran Jornadas Symfony 5 y 6 de julio 2010 Universitat Jaume I, Castellón http://decharlas.uji.es/symfony
3. Jornadas Symfony 5 y 6 de julio 2010 Universitat Jaume I, Castellón http://decharlas.uji.es/symfony Domesticando las vistas de symfony Jose Antonio Pio Acilia.es
4. Jornadas Symfony http://decharlas.uji.es/symfony Presentación CTO Acilia Internet Madrid Jornadas Symfony http://decharlas.uji.es/symfony Background + Estudie Ingeniería Electrónica + Empece a trabajar con internet en el 2001... y aquí sigo. + PHP y Ruby + CakePHP, Rails, CodeIgniter y Symfony 1.2 - 1.4
8. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Contenido Los Templates + MVC + Templates + Layout + Variables del Template + Fragmentos de código (Partials, Components, Slots) + Configuración del Layout + Accesso al Objeto Response + Conversión de Variables de vista + Respuestas del Action
9. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Contenido Procesando las Vistas + Cadena de Ejecución + Cambiando la clase de Vista + Las Clases + sfPHPView Class
10. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Los Templates
11. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Como empezó todo Pues con un MVC
19. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Layout apps/frontend/ templates /layout.php Layout Template <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > < html xmlns = "http://www.w3.org/1999/xhtml" > < head > < meta http-equiv = "content-type" content = "text/html; charset=utf-8" /> <?php include_http_metas() ?> <?php include_metas() ?> <?php include_title() ?> < link rel = "shortcut icon" href = "/favicon.ico" /> <?php include_stylesheets() ?> <?php include_javascripts() ?> </ head > < body > < div id = "wrapper" > <?php echo $sf_content ?> </ div > </ body > </ html >
20. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Variables del Template
21. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Variables del Template array ( 0 => 'sf_data', 1 => 'sf_type', 2 => 'sf_context', 3 => 'sf_request', 4 => 'sf_params', 5 => 'sf_response', 6 => 'sf_user', ) + $sf_data: Variables de la acción (Escapadas) + $sf_type: Tipo de Template que se está procesando (action, partial, layout) + $sf_context: la instancia de sfContext + $sf_request: El objeto Request (sfWebRequest) + $sf_params : Los parámetros pasados al objeto Request + $sf_response: El objeto Response (sfWebResponse) + $sf_user : El usuario actual
22. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Fragmentos de códigos
23. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Fragmentos de códigos Parcial + Inserta contenido con las variables especificadas en la llamada al helper. + Se usa extensivamente en el admin generator. + Tiene acceso limitado a las variables de la vista. (se puede hackear) Components + Contienen lógica de acción. Extiende la clase sfComponents. + Separa la lógica de presentación en partes. + Se pueden incluir en cualquier nivel de la definición de la vista: Layout, Templates, Components, Partials. Slots + Se usan para rellenar espacios con contenido dinámico. + Tiene acceso a las variables del template. + Se incluye despues de que se construye la vista.
31. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Fragmentos de códigos Slots apps/frontend/templates/ layout.php <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > < html xmlns = "http://www.w3.org/1999/xhtml" > < head ></ head > < body > < div id = "content" > < div class = "header" > < div class = "logo" > <?php echo link_to( image_tag( "/images/logo.png" ), "/" ) ?> </ div > <?php if (has_slot( 'virtual_logo' )): ?> < div class = "logo_virtual" > <?php include_slot( 'virtual_logo' ) ?> </ div > <?php else : ?> </ div > <?php echo $sf_content ?> </ div > </ body > </ html >
32. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Fragmentos de códigos class companyActions extends sfActions{ public function executeShow(sfWebRequest $request ){ ... $this ->company = Doctrine::getTable(“Company”)->find( $id ); } } apps/frontend/modules/ company /actions/ actions.class.php apps/frontend/modules/ company /templates/ showSuccess.php Slots < div class = "company" > <?php if ( $company ->hasLogo() ): ?> <?php slot( 'virtual_logo' ) ?> <?php echo $company ->renderLogo() ?> <?php end_slot() ?> <?php endif ; ?> </ div >
33. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Configuración del Layout
34. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony default : http_metas : content-type : text/html metas : title : My Project Title description : My project Description keywords : Keywords, Project, Etc language : en robots : index, follow stylesheets : [/stylesheets/style.css] javascripts : [ /javascripts/jquery-1.3.min.js, ... ] has_layout : on layout : layout apps/frontend/config/ view.yml Configuración del Layout
35. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony all : … showSuccess : metas : title : Company Show description : Company Show keywords : Companies, Company Show language : en robots : index, follow stylesheets : [/stylesheets/style.css, /css/company.css ] javascripts : [ /javascripts/jquery-1.3.min.js, ... ] has_layout : on layout : company apps/frontend/modules/ company /config/ view.yml Configuración del Layout
52. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfContex instance Symfony Internals sfFrontWebController::dispatch() More symfony internals Filter Chain Filters Execution Filter sfExecutionFilter::handleAction() sfExecutionFilter::executeAction() sfExecutionFilter::handleView() sfExecutionFilter::executeView() Execution Filter Way Back sfWebResponse::send() Cadena de Ejecución
53. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfExecutionFilter::executeView() protected function executeView( $moduleName , $actionName , $viewName , $viewAttributes ) { // get the view instance $view = $controller ->getView( $moduleName , $actionName , $viewName ); // execute the view $view ->execute(); // Select render Mode and render ... case sfView::RENDER_CLIENT: $viewData = $view ->render(); $this ->context->getResponse()->setContent( $viewData ); break ; ... } Cadena de Ejecución
54. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfController::getView() abstract class sfController { public function getView( $moduleName , $actionName , $viewName ) { // user view exists? $file = sfConfig::get( 'sf_app_module_dir' ). '/' . $moduleName . '/view/' . $actionName . $viewName . 'View.class.php' ; // Pregunta si existe la clase y si existe una clase espcial del módulo y devuelve las instancia de la clase. } } lib/vendor/symfony/lib/controller/sfController.class.php Cadena de Ejecución
55. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony ¿Y esto porque es importante?
56. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Pues para extender su funcionamiento
57. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Cambiando la clase de Vista
58. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Cambiando la clase de Vista apps/frontend/moduleName/templates/indexSuccess.php apps/frontend/moduleName/view/indexSuccessView.php <?php class indexSuccessView extends sfPHPView { // Personalizamos algunos métodos } para una acción
59. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Cambiando la clase de Vista apps/frontend/config/module.yml para todas las acciones all : # For all environments enabled : true is_internal : false view_class : myPersonalView
60. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Las Clases
63. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfPHPView Class extends abstract sfView class sfPHPView extends sfView { public function execute(){} protected function renderFile( $_sfFile ){ // render ob_start(); ob_implicit_flush( 0 ); require ( $_sfFile ); return ob_get_clean(); } protected function decorate( $content ) { // Decora con el Layout } public function render() { // Procesa toda la vista para obtener su contenido return $content ; } }
64. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfPHPView Class extends abstract sfView class sfPHPView extends sfView { public function execute(){} protected function renderFile($_sfFile){ // render ob_start(); ob_implicit_flush(0); require($_sfFile); return ob_get_clean(); } protected function decorate($content) { // Decora con el Layout } public function render() { // Procesa toda la vista para obtener su contenido return $content; } }
65. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfPHPView Class extends abstract sfView class sfPHPView extends sfView { public function execute(){} protected function renderFile($_sfFile){ // render ob_start(); ob_implicit_flush(0); require($_sfFile); return ob_get_clean(); } protected function decorate($content) { // Decora con el Layout } public function render() { // Procesa toda la vista para obtener su contenido return $content; } }
66. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfPHPView Class extends abstract sfView class sfPHPView extends sfView { public function execute(){} protected function renderFile( $_sfFile ){ // render ob_start(); ob_implicit_flush( 0 ); require ( $_sfFile ); return ob_get_clean(); } protected function decorate($content) { // Decora con el Layout } public function render() { // Procesa toda la vista para obtener su contenido return $content; } }
67. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfPHPView Class extends abstract sfView class sfPHPView extends sfView { public function execute(){} protected function renderFile($_sfFile){ // render ob_start(); ob_implicit_flush(0); require($_sfFile); return ob_get_clean(); } protected function decorate( $content ) { // Decora con el Layout } public function render() { // Procesa toda la vista para obtener su contenido return $content; } }
68. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony sfPHPView Class extends abstract sfView class sfPHPView extends sfView { public function execute(){} protected function renderFile($_sfFile){ // render ob_start(); ob_implicit_flush(0); require($_sfFile); return ob_get_clean(); } protected function decorate($content) { // Decora con el Layout } public function render() { // Procesa toda la vista para obtener su contenido return $content ; } }
69. Jornadas Symfony http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony Muchas Gracias CTO José Antonio Pio Gil
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com
Mejoras que intenta aportar: Es mejor utilizar un pie de página en vez de una cabecera, para dejar libre la parte superior de cada transparencia. El pie de página incluye una vez más publicidad de decharlas.com