Back to top

Autore Topic: Rilevazione degli eventi  (Letto 2088 volte)

Offline gordon81

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Rilevazione degli eventi
« il: 13 Nov 2006, 10:25:33 »
Salve a tutti,
Sto sviluppando il mio componente per joomla,e non sono riuscito a capire bene come gestire la rilevazione degli eventi.Non capisco in particolare se le variabili globali task e act devono essere instanziate oppure se questo avviene i automatico.Il mio componente deve inserire dei dati nel database in cui in fase di installazione viene inserita una nuova tabella,una volta fatto deve rimostrare la pagina per l'inserimento dei dati(il form vuoto,cioè).Ho richiamato le variabili citate prima con $task=mosGetParam($_REQUEST,'task').Ho fatto varie prove e non ho avuto risultati,cioè o mi dice che l'accesso è vietato o mi manda alla prima pagina del menu amministratore senza inserire il nuovo record nel database.Quale potrebbe essere l'errore.Molte grazie a tutti coloro che mi risponderanno.

Offline napo

  • Instancabile
  • ******
  • Post: 6532
  • Sesso: Maschio
  • NO MP TECNICI, verranno ignorati
    • Mostra profilo
Re: Rilevazione degli eventi
« Risposta #1 il: 13 Nov 2006, 10:30:27 »
La variabili $task e $act (così come $option e $Itemid) non vanno dichiarate in quanto sono fornite direttamente dal framework.

Per quanto riguarda il problema del database, è difficile trovare una soluzione senza sapere come hai scritto il codice.


AllOne.it Consulting: http://www.allone.it Gens Joomla, il : http://www.gensjoomla.org  [url=http://www.allone.it/jooml

Offline gordon81

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re: Rilevazione degli eventi
« Risposta #2 il: 13 Nov 2006, 10:52:39 »
Questo è il file admin.php:
<?php
   
      defined('_VALID_MOS') or die('Direct Access to this location is not allowed');
         if (!($acl->acl_check( 'administration', 'edit', 'users', $my->usertype, 'components', 'all' )
               | $acl->acl_check( 'administration', 'edit', 'users', $my->usertype, 'components', 'com_contact' )))
                     {
                        mosRedirect( 'index2.php', _NOT_AUTH );
                     }

      require_once( $mainframe->getPath( 'admin_html' ) );
   //   $act=mosGetParam($_REQUEST,'act','');
      
   switch($act)
   {
       case 'comuni':
            
               giornScreens::mostraForm();
            break;
    default:
      giornScreens::mostraForm();   
      break;

   //      $task=mosGetParam($_REQUEST,'task');
         switch($task)
      {
            case 'save':
               salvaDati();
               giornScreens::mostraForm();
            break;
            case 'cancel':
               giornScreens::mostraForm();   
            break;
            default:
                  echo "ciao";
            break;   
      }
      break;
   }
      
   function salvaDati()
   {
         
         global $database;
         $nome=$_POST[nome];   
         $sin=$_POST[sin];         
               
         $query="INSERT INTO #__giorn (nome, sin)"         . "/n VALUES ($nome, $sin)";           
         $database->setQuery( $query );
         
   }
   
?>

e questa è la parte +importante di toolbar.admin.php:

   require_once($mainframe->getPath('toolbar_html'));
   

   
//   $task=mosGetParam($_REQUEST,'task');
   
   switch($task)
   {   
      
            case 'save':
               giornToolbar::mostraTool();   
            
            break;
            case 'cancel':
               giornToolbar::mostraTool();   
            
            break;   
      
            default:
               giornToolbar::mostraTool();
            break;   
   }
in toolbar.amin.html ho inserito i tasti con:
   mosMenuBar::cancel($task='cancel','Annulla');

Questo è il cuore del mio "grande componente"..cosa potrei aver sbagliato?
   

Offline napo

  • Instancabile
  • ******
  • Post: 6532
  • Sesso: Maschio
  • NO MP TECNICI, verranno ignorati
    • Mostra profilo
Re: Rilevazione degli eventi
« Risposta #3 il: 13 Nov 2006, 10:59:38 »
Ci sono diversi errori nel codice.

Innanzitutto il controllo di autenticazione:
if (!($acl->acl_check( 'administration', 'edit', 'users', $my->usertype, 'components', 'all' ) | $acl->acl_check( 'administration', 'edit', 'users', $my->usertype, 'components', 'com_contact' )))
Il tuo componente si chiama com_contact? ???

Poi, non puoi innestare uno switch dentro l'altro come hai fatto tu. E comunque la gestione dei task mi sembra un pò confusionaria.

Infine, non fai nessuna query al database.
Il tuo codice è:
$query="INSERT INTO #__giorn (nome, sin)" . "/n VALUES ($nome, $sin)";           
$database->setQuery( $query );

Ma così imposti solamente la query, non la esegui.


AllOne.it Consulting: http://www.allone.it Gens Joomla, il : http://www.gensjoomla.org  [url=http://www.allone.it/jooml

Offline gordon81

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re: Rilevazione degli eventi
« Risposta #4 il: 13 Nov 2006, 12:40:17 »
Dovrei aggiungere $database->query o loadObjectList() per fare eseguire la query?Un'altra cosa se tolgo lo switch dal primo non mi visualizza il toolbar.Dove posso trovare la documentazione delle varie funzioni già implementate da joomla?
« Ultima modifica: 13 Nov 2006, 12:44:01 da gordon81 »

Offline napo

  • Instancabile
  • ******
  • Post: 6532
  • Sesso: Maschio
  • NO MP TECNICI, verranno ignorati
    • Mostra profilo
Re: Rilevazione degli eventi
« Risposta #5 il: 13 Nov 2006, 12:43:25 »
Dove posso trovare la documentazione delle varie funzioni già implementate a joomla?

Abbi ancora pazienza: http://www.allone.it/joomla/joomla/joomla-1.0-manuale-dello-sviluppatore.html.


AllOne.it Consulting: http://www.allone.it Gens Joomla, il : http://www.gensjoomla.org  [url=http://www.allone.it/jooml

 



Web Design Bolzano Kreatif