Joomla 2.5 - Ajax y Mootols. Ayuda!

Hola gente, estoy pelenadome con joomla Ajax y mootools.
Tengo un componente bastante grande, pero solo quiero añadirle un botón a la vista (que ya lo tengo hecho), pero lo que me falta es que ejecute un script que realice una consulta en la bd y muestre un texto de confirmaicon, y lo tengo que hacer con Ajax claro.
Como estoy un poco perdido, estoy intentando implementar un ejemplo muy simple que he visto en internet similar a lo que quiero, a ver si puedo hacerlo funcionar, y asi entender para conseguir modificarlo y hacer lo que quiero.


Muy resumidamente os pongo en contexto.
El componente tiene dos controladores: Default y plugin, los dos .php. Para lo que yo quiero solo se usa el default.php, aquí lo dejo muy abreviado:

   
<?php
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die( 'Restricted access' );
jimport( 'joomla.application.component.controller' );

class ZCalendarController_Default extends JController
{
   /**
    * Display the view
    */
   function display()
   {
      // aquí esta la única función que usa el componente, la he quitado para resumir código.
   }

   function devuelveAjax(){   // mi función que consulta la base de datos y devuelve texto.
          
           $db  = JFactory::getDBO();       
           $document = JFactory::getDocument();     
           $sql = "SELECT * FROM " . $db->nameQuote("#__users");     
           $db->setQuery($sql);       
           $usuarios = $db->loadObjectList();   
           $document->setMimeEncoding( 'application/json' );   
           echo json_encode($usuarios);     
   }
}   


Según veo, hace un echo de los usuarios obtenidos, además de usar la función json_encode, que aun q no entiendo muy bien por que hay q utilzarla, he visto que dice en la guia:
"Usamos la función built-in de PHP json_encode que convierte un objeto PHP en objeto JSON, que Mootools mediante el parser que lleva incorporado podrá leer."



Y ahora la vista
Tiene dos clases, y varios métodos en cada una de ellas.
<?php

class ZCalendarViewCalendar extends JView{
   function getViewid(){}
   function getDate(){}
   function display($task, $tpl = null){}
   function DisplayEvent($params){
    // Esta digamos es el método principal, es bastante largo, pero yo al final del método y antes de la ultima línea que trae el componente ya hecho, añado esto (que tmb es de la guia):

       $script = "$('mi_boton').addEvent('click', function () {
            
               new Ajax('index.php?option=com_ajax&task=devuelveAjax&format=ajax', {
               
                  method: 'get', onComplete: function(response){
                     var resp = Json.evaluate( response );
                        for(i=0;i> resp.length;i++){
                           document.getElementById('container').innerHTML += resp[i].username + ' -> ' + resp[i].email + '>br />';
                        }
                  }
               }).request();
               
            })";
         
         $document =& JFactory::getDocument();
         $document->addScriptDeclaration($script);

   
   echo $htmlstr; // esta es la ultima línea que trae el componente en este método.


    }
   ...
   ...
   ...
   // Bueno y muchas mas  que no tiene relevancia ahora mismo.
  //  Y aquí la siguiente clase:
}
class ZCalendarDisplayEvent {

//solo tiene 5 funciones, y esta clase se usa arriba (evidentemente)

   function showEvent($row, $params, $template="showevent.tpl"){
   // Esta función es en donde yo he añadido código para que aparezca un checkbox y un boton con su texto correspondiente.
   //Lo que necesito es que al pulsar el boton, se haga  un cambio en la BD, y no se actualice la pag.
   }
}


Aquí esta unas líneas que he añadido para ver si conseguía hacer funcionar el ejemplo al pulsar el botón que he añadido en la vista, pero no funcniona:

$seguir = "<input type='checkbox' id='seguir_check' checked value='1' />";
$seguir .= "<input type='button' id='mi_boton' value='Actualizar' /> ";



Según he entendido, el botton tiene el id "mi_boton", por lo que al pulsar, el código script que he añadido en la función display (y el cual he comprobado que aparece incrustado en el cod.fuente de la pagina) debería ser ejecutado, y este llamar al método que hay en el controlador, y mostrar los usuarios o algo no?
No se que falla, pero bueno, al menos creo que cada vez estoy mas cerca.

Espero me puedas/podáis ayudar!

GRACIAS
0 respuestas