Back to top

Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - cvirgili

Pagine: [1]
1
Sviluppo / Re:Joomla su sgaragnao
« il: 17 Lug 2012, 22:26:29 »
Si corretto, ti ringrazio per la precisazione.

Peccato che non venga scritto subito nel tutorial per la creazione di una estensione in MVC.

Cristian


2
Sviluppo / Re:Joomla su sgaragnao
« il: 17 Lug 2012, 17:23:48 »
Trovato l'inghippo!!!! >:(

 Il componente è stato sviluppato su ambiente MAC OS X che è case preserving mentre il sito su sgaragnao, essendo linux, è case sensitive.

Intuisco che il 'controller delle chiamate' del kernel joomla invece  faccia un lowercase dei nomi delle view/controller ecc. Infatti chiamando quella view positionUser credo che venga trasformata in postionuser e il file non veniva trovato il file nel filesystem. Ora ho messo tutto in lowercase e funziona che è una meraviglia.

Morale: NON USATE LE LETTERE MAIUSCOLE NELLE VIEW/CONTROLLER/MODEL/TABLE....

Spero che questo post possa essere utile ad altri.

Cristian




3
Sviluppo / Re:Joomla su sgaragnao
« il: 13 Lug 2012, 16:58:28 »
Ciao,
 dici il controller positionUser2?

Ho provato a mettere $id = 2;

Stesso errore.

La view non viene proprio chiamata.
Infatti togliendo il commento alla prima riga della view:

Codice: [Seleziona]
echo "Ho chiamato la view PositionUser2";
exit;

dovrebbe restiirmi la frase, invece non viene proprio chiamata e mi da errore 500 (chi si occupa di darmi errore 500 poi?)


In locale funziona perfettamente.

Cristian



4
Sviluppo / Re:Joomla su sgaragnao
« il: 13 Lug 2012, 15:14:18 »
Grazie mille del consiglio webdesigner.

L'a procedura di installazione dell'istanza l'ho fatta direttamente sull'hosting.
Il php.ini è impostato con l'opzione "ottimizzato con per joomla".
Comunque aprirò sicuramente un ticket :)

Cristian

5
Sviluppo / Re:Joomla su sgaragnao
« il: 13 Lug 2012, 14:54:45 »
Ciao!
 Ok scusami.

Allora la chiamata alla view è questa:
Codice: [Seleziona]
   <td>
                        <a href="<?php echo JRoute::_('index.php?option=com_lawyer&view=positionUser2&id=' $item->id "&title=" $item->title); ?>"> 
                      <?php echo JText::_('COM_LAWYER_POSITION_MANAGE_NOTIFICATION'?> </a>
</td>

e questo è il file della view sta sotto views/positionUser2/view.html.php

Codice: [Seleziona]
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
 
// import Joomla view library
jimport('joomla.application.component.view');
 
/**
 * LawyerViewPosition View
 */
class LawyerViewPositionUser2 extends JView
{
    
/**
     * Position view display method
     * @return void
     */
    
function display($tpl null
    {
        
//Qui avevo provato anche con questa linea di codie che però non viene richiamata.
        //echo "ho raggiunto la view: positionUser2";exit;
        
        
$id JRequest::getVar('id','0');
        
$model $this ->getModel();
        
        
$items $model->getPositionUser($id);
      
        
// Get data from the model

        
$pagination $this->get('Pagination');
 
        
// Check for errors.
        
if (count($errors $this->get('Errors'))) 
        {
            
JError::raiseError(500implode('<br />'$errors));
            return 
false;
        }
        
// Assign data to the view
        
$this->items $items;
        
        
$this->pagination $pagination;
        
 
        
// Set the toolbar
        
$this->addToolBar();
 
        
// Display the template
        
parent::display($tpl);
 
        
    }
 
    
    

    
    
/**
     * Setting the toolbar
     */
    
protected function addToolBar() 
    {
        
$app JFactory::getApplication();
        
JToolBarHelper::title(JText::_('COM_LAWYER_POSIZIONMANAGER').': '.$app->getUserState('title_position_lawyer',''), 'positionUsers');    
        
    }

}


L'errore che mi da l'installazione di Joomla è:


500 - Si è verificato un errore. View non trovato [name, type, prefix]: positionUser2, html, lawyerView
 

Dove potrei provare il componente?

grazie,
 Cristian

6
Sviluppo / Usare SEMPRE i nomi dei file in lowercase
« il: 12 Lug 2012, 23:26:39 »
Ciao a tutti!
 Ho appena finito di scrivere il mio primo componente.
In locale funziona perfettamente. Lo installo su una istanza di joomla su sgaragnao e mi da errori.

Scarico il sito e il db da sgaragnao. Lo installo in locale e funziona.

Una cosa stranissima è che su sgaragnao una view non me la vuole proprio vedere, anche se ovviamente esiste!

A voi è mai capitata una cosa del genere? Avete qualche consiglio da darmi?

Grazie,
 Cristian


7
Devi mettere com_userS con la s finale:

index.php?option=com_users&task=logout&return=Lw


Cristian



8
GRAZIE!!!
 Era proprio quello che mi serviva!

Cristian


9
Ciao a tutti,
 vorrei aprire una finestra modale per una preview.
Il meccanismo per l'apertura della finestra mi è chiaro:

        <a class="modal" href="index.php?option=com_lawyer&amp;view=log&amp;layout=modal&amp;id=<?php echo $item->id ?>"  rel="{handler: 'iframe', size: {x: 800, y: 400}, onClose: function(){}  }">
            <?php echo $item->id; ?>[/url]


il file modal.php è sotto views/log/tmpl/modal.php.

Il problema è che il sistema mi mostra tutta la struttura della pagina e non solo il contenuto del mio oggetto log.

Presumo che questo sia dovuto al fatto che la mia view LawyerViewLog estende JView e che quindi la funziona display mi costruisce tutto il template della pagina. Corretto?

Come posso fare per mostare all'interno della finestra modal solo il contenuto (degli attributi) di log?

Grazie,
 Cristian


10
Per " successiva request", intendevo alla successiva richiesta dell'utente.

Poi avevo trovato e risolto usando JSession.

Poichè nella documentazione non c'è scritto sai dirmi: che differenza c'è tra UsersState e JSession?

Grazie ancora per la segnalazione,
Cristian


11
Sviluppo / Come settare le variabili nella sessione corrente
« il: 10 Mar 2012, 19:25:23 »
Ciao a tutti,
 domanda che dovrebbe essere semplice :)

Sto tentando di salvare una informazione nella sessione utente.
Ho provato con
$app = JFactory::getApplication();
$app->setUserState('propieta', $id);
Ma alla successiva request già sparito tutto :)

Qualcuno mi da una indicazione?

Grazie,
 Cristian


12
Ciao a tutti,
 sono alle prese con questo problema: devo recuperare dei dati da una form per salvarli su un DB.

Pubblico il codice per chiarezza:

TABELLE:
Codice: [Seleziona]
CREATE TABLE `#__position` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `date_open` timestamp NOT NULL default NOW(),
  `date_close` timestamp,
  `title` varchar(255),
  `state_id` int(11) NOT NULL,
  `notes` LONGTEXT,
   PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;

CREATE TABLE `#__position_user` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `date` timestamp NOT NULL default NOW(),
  `id_user` int(11) NOT NULL,
  `id_position` int(11) NOT NULL,
  `notes` TEXT,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;


In pratica la position_user mi dirà quali utenti (di sistema) sono associati ad una position.

Vediamo la forms di position.xml

Come potete notare ho aggiunto il campo <field name="iduser" type="hidden" /> che non c'è nella tabella, sulla base di un esempio che ho trovato in rete che fa una cosa simile alla mia (Alexandria Library).

Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<form
    addrulepath="/administrator/components/com_lawyer/models/rules"
>
    <fieldset>
        <field
            name="id"
            type="hidden"
        />
       
        <field name="iduser" type="hidden" />
       
        <field
            name="title"
            type="inputbox"
            label="COM_LAWYER_POSITION_TITLE_LABEL"
            description="COM_LAWYER_POSITION_TITLE_DESC"
            size="100"
            class="inputbox validate-positions"
            validate="title"
            required="true"
            default=""
        />
       
       
    <field name="state_id" type="sql"
            multiple="false" size="2"
            label="COM_LAWYER_POSITION_STATE_LABEL"
            description="COM_LAWYER_POSITION_STATE_DESC"
            query="select id, description from #__position_state "
            key_field="id" value_field="description" required="true">
            <option value="">COM_LAWYER_POSITION_SELECT_STATE</option>
        </field>
       
      <field name="date_open" type="calendar"
            label="COM_LAWYER_POSITION_DATE_OPEN_LABEL"
            description="COM_LAWYER_POSITION_DATE_OPEN_DESC"
            class="inputbox" size="15"
            format="%d-%m-%Y %H:%M" required="true" />
           
        <field name="date_close" type="calendar"
            label="COM_LAWYER_POSITION_DATE_CLOSE_LABEL"
            description="COM_LAWYER_POSITION_DATE_CLOSE_DESC"
            class="inputbox" size="15"
            format="%d-%m-%Y %H:%M" required="false" />
           
         <field
            name="notes"
            type="editor"
            buttons="true"
            hide="pagebreak,readmore"
            filter="safehtml"
            label="COM_LAWYER_POSITION_NOTE_LABEL"
            description="COM_LAWYER_POSITION_NOTE_DESC"
            size="100"
            class="inputbox"
            validate="title"
            required="false"
            default=""
        /> 
           
    </fieldset>
   

</form>

Qui c'è edit.php del position.
In pratica c'è una lista contenuta in jform_iduser che mi dovrebbe memorizzare i dati degli utenti. Gli utenti vengono caricati dalla tabella di sistema users.
Quindi ho la lista degli utenti associati a position, e la lista degli utenti di sistema. Con i bottoni add e remove sposto gli utenti da una lista all'altra.

Codice: [Seleziona]
<?php
// No direct access
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');

?>


<form action="<?php echo JRoute::_('index.php?option=com_lawyer&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="position-form" class="form-validate">

   
        <div class="width-60 fltlft">
        <fieldset class="adminform">
        <legend><?php echo empty($this->item->id) ? JText::_('COM_LAWYER_ADD_NEW_POSITION') : JText::sprintf('COM_LAWYER_EDIT_POSITION'$this->item->id); ?></legend>
       
    <ul class="adminformlist">
            <li><?php echo $this->form->getLabel('id'); ?>
                        <?php echo $this->form->getInput('id'); ?></li>
            <li><?php echo $this->form->getLabel('title'); ?>
                    <?php echo $this->form->getInput('title'); ?></li>
            <li><?php echo $this->form->getLabel('date_open'); ?>
                        <?php echo $this->form->getInput('date_open'); ?></li>
            <li><?php echo $this->form->getLabel('date_close'); ?>
                    <?php echo $this->form->getInput('date_close'); ?></li>
            <li><?php echo $this->form->getLabel('state_id'); ?>
                    <?php echo $this->form->getInput('state_id'); ?></li>
           
            <li>
                <label for="iduser"><?php echo JText::_'COM_SYSTEM_USERS' ); ?>:</label>
                <?php echo JHTML::_('select.genericlist'$this->positionusers'jform[iduser][]''class="inputbox" size="10" multiple="multiple"','id''name''''jform_iduser');?>
               
                <input value="&lt;<?php echo JText::_'COM_USER_ADD' ); ?>" onclick="javascript:  addSelectedToList( 'adminForm', 'user', 'jform_iduser' );delSelectedFromList( 'adminForm', 'user' );" type="button">
                            <input value="<?php echo JText::_'COM_USER_REMOVE' ); ?> &gt;" onclick="addSelectedToList( 'adminForm', 'jform_iduser', 'user' );delSelectedFromList( 'adminForm', 'jform_iduser' );" type="button">
                             
                                <?php echo JHTML::_('select.genericlist'$this->users'user''class="inputbox" size="10" multiple="multiple"','id''name'); ?>
            </li>
            </ul>
            <div class="clr"></div>
                    <?php echo $this->form->getLabel('notes'); ?>
                    <div class="clr"></div>
                    <?php echo $this->form->getInput('notes'); ?>
                </fieldset>
        </div> 
   
    <div>
        <input type="hidden" name="task" value="position.edit" />
        <?php echo JHtml::_('form.token'); ?>
    </div>
</form>

Fin qui tutto funziona alla perfezione.
Il problema è quando salvo ecco il model di position.php

Codice: [Seleziona]
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import Joomla modelform library
jimport('joomla.application.component.modeladmin');
/**
 * Position Model
 */
class LawyerModelPosition extends JModelAdmin
{
    
/**
    * Returns a reference to the a Table object, always creating it.
    *
    * @param    type    The table type to instantiate
    * @param    string    A prefix for the table class name. Optional.
    * @param    array    Configuration array for model. Optional.
    * @return    JTable    A database object
    * @since    2.5
    */
    
public function getTable($type 'Position'$prefix 'LawyerTable'$config = array())
    {
        return 
JTable::getInstance($type$prefix$config);
    }
    
/**
     * Method to get the record form.
     *
     * @param    array    $data        Data for the form.
     * @param    boolean    $loadData    True if the form is to load its own data (default case), false if not.
     * @return    mixed    A JForm object on success, false on failure
     * @since    2.5
     */
    
public function getForm($data = array(), $loadData true)
    {
        
// Get the form.
        
$form $this->loadForm('com_lawyer.position''position', array('control' => 'jform''load_data' => $loadData));
        
// Qui l'XML della form contiene il campo iduser
        
if (empty($form))
        {
            return 
false;
        }

        return 
$form;
    }
    
    
    
/**
    * Method to get the script that have to be included on the form
    *
    * @return string    Script files
    */
    
public function getScript()
    {
        return 
'administrator/components/com_lawyer/models/forms/lawyer.js';
    }
    
/**
     * Method to get the data that should be injected in the form.
     *
     * @return    mixed    The data for the form.
     * @since    2.5
     */
    
protected function loadFormData()
    {
        
// Check the session for previously entered form data.
        
$data JFactory::getApplication()->getUserState('com_lawyer.edit.position.data', array());
        if (empty(
$data))
        {
            
$data $this->getItem();
        }
        return 
$data;
    }
    
    
    
    public function 
save($data)
    {
        
        
        if (
parent::save($data)) {
            
$this->storeuser($data['id'], $data['iduser']);//aggiunto

            
return true;
        }

    
        return 
false;
    }
    
    function 
storeuser($id$iduser)
    {
        
$positionusers['id_user'] = 0;
        
$positionusers['id_position'] = $id;
       
//e poi si salva....
       
        
    
}
    
    public function 
getUserslist() {
        if (empty( 
$this->_userslist )) {
            
$query ' SELECT * '
            
' FROM #__users'
            
;
        }
        if (empty(
$this->_userslist)) {
            
$this->_db->setQuery$query );
            
$this->_userslist $this->_getList$query );
        }
    
        return 
$this->_userslist;
    }
    
    public function 
getPositionsUserslist() {
        if (empty( 
$this->_positionsuserslist )) {
            
//    $bookId       = (int) $this->form->getValue('id');
            
$query ' SELECT * '
            
' FROM #__position_user JOIN #__users ON #__position_user.id_user = #__users.id'
            
'  WHERE id_position = '.(int) $this->getItem()->id;
        }
        if (empty(
$this->_positionsuserslist)) {
            
$this->_db->setQuery$query );
            
$this->_positionsuserslist $this->_getList$query );
        }
    
        return 
$this->_positionsuserslist;
    }
    
}

nella funzione SAVE mi aspetterei di travare in $data un valore associato a iduser ed invece nulla.

Dov'è che sbaglio?

Cristian




13
Sviluppo / Re:Settare i valori di una chiave esterna
« il: 26 Feb 2012, 08:24:55 »

io avrei fatto un form solo, con una select di tipo sql sulla tabella delle squadre. L'id impostato in quella select sarà la chiave esterna nella tabella giocatori.


Ciao,
 ecco come faccio ad impostare quell'id?

Cerco di spiegarmi ancora meglio e per riagganciarmi all'esempio che mi hai indicato (grazie poichè mi ha chiarito altre cose:)) fai conto di avere una fattura che contiene degli articoli. Quindi seleziono una fattura e vedo gli articoli che contiene. Ecco io vorrei, selezionata la fattura, dire: aggiungi articolo. A questo punto mi compare la maschera di inserimento dei dati dell'articolo in cui c'è già inserito il codice/id della fattura. Quello che non riesco a fare è proprio questa preselezionatura nella fase di editing di un nuovo articolo.

Buona domenica,
 Cristian



14
Sviluppo / Re:Settare i valori di una chiave esterna
« il: 25 Feb 2012, 15:38:30 »
Ciao!
 Si mi rendo conto che sono stato troppo sintetico nella descrizione ed è confusa perchè io sono confuso :)

Tra le tre soluzioni che mi proponi avevo provato a mettere in pratica la terza.

Riporto un po' di codice a beneficio di tutti (spero) :)

Questo è admin/models/forms/team.xml
Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<form
    addrulepath="/administrator/components/com_teaman/models/rules"
>
    <fieldset>
        <field
            name="id"
            type="hidden"
        />
       
           
         <field
            name="name"
            type="editor"
            buttons="true"
            hide="pagebreak,readmore"
            filter="safehtml"
            label="COM_TEAMAN_TEAM_NAME_LABEL"
            description="COM_TEAMAN_TEAM_NAME_DESC"
            size="50"
            class="inputbox"
           
            required="false"
            default=""
        /> 
           
    </fieldset>
   

</form>


Questo è admin/models/forms/palyer.xml
 
Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
 <form
     addrulepath="/administrator/components/com_teaman/models/rules"
 >
     <fieldset>
         <field
             name="id"
             type="hidden"
         />
                 <field
             name="id_team"
             type="hidden"
         />
         
             
          <field
             name="name"
             type="editor"
             buttons="true"
             hide="pagebreak,readmore"
             filter="safehtml"
             label="COM_TEAMAN_PLAYER_NAME_LABEL"
             description="COM_TEAMAN_PLAYER_NAME_DESC"
             size="50"
             class="inputbox"
             required="false"
             default=""
         /> 
             
     </fieldset>
     
 
 </form>
 


Questo è il mio "admin/views/players/default.php"
Codice: [Seleziona]
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted Access');
 
// load tooltip behavior
JHtml::_('behavior.tooltip');
?>

<form action="<?php echo JRoute::_('index.php?option=com_teaman'); ?>" method="post" name="adminForm" id="adminForm">
    <table class="adminlist">
        <thead><?php echo $this->loadTemplate('head');?></thead>
        <tfoot><?php echo $this->loadTemplate('foot');?></tfoot>
        <tbody><?php echo $this->loadTemplate('body');?></tbody>
    </table>
        <div>
        <a href="<?php $id_team=JRequest::getVar('id','0'); echo JRoute::_('index.php?option=com_teaman&task=player.edit&id_team='.$id_team); ?>">AGGIUNGI GIOCATORE</a>
        <input type="hidden" name="task" value="" />
        <input type="hidden" name="id_team" value="<?php echo JRequest::getVar('id','0');?>" />
        <input type="hidden" name="boxchecked" value="0" />
        <?php echo JHtml::_('form.token'); ?>
    </div>
</form>

Siccome non riuscivo a passare il valore di "id_team" attraverso il bottone "new" della barra di admin(ho provato a metterlo anche come hidden per usarlo attraverso i bottoni della barra di armin ma poi non so come recuperarlo), ho creato il link di "AGGIUNGI GIOCATORE" con il valore che voglio passare.

Supponiamo che id_team sia 2.


Questo è il mio "admin/models/player.php

Codice: [Seleziona]
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import Joomla modelform library
jimport('joomla.application.component.modeladmin');
/**
 * Log Model
 */
class TeamanModelPlayer extends JModelAdmin
{

    public function 
getTable($type 'Palyer'$prefix 'TeamanTable'$config = array())
    {
        return 
JTable::getInstance($type$prefix$config);
    }

    public function 
getForm($data = array(), $loadData true)
    {
        
// Get the form.
        
$form $this->loadForm('com_lawyer.player''player',
        array(
'control' => 'jform''load_data' => $loadData));
        if (empty(
$form))
        {
            return 
false;
        }
        
        return 
$form;
    }
   

    protected function 
loadFormData()
    {
        
// Check the session for previously entered form data.
        
$data JFactory::getApplication()->getUserState('com_teaman.edit.player.data', array());
        if (empty(
$data))
        {
            
$data $this->getItem();
            
        }
        return 
$data;
    }
    
}

Ecco: qui sopra in nessuna funzione (getForm e loadFormData) riesco con una JRequest::getVar('id_team','0') a recuperare il valore della variabile. Come faccio? Nel caso ci riuscissi dove devo settarlo su $data su $form ?
Devo intervenire sul controller player.php (attualmente è solo una extends JControllerForm)?


Spero che ora il mio problema si più chiaro... altrimenti potrei postare il componente d'esempio.

Grazie,
 Cristian




15
Sviluppo / Settare i valori di una chiave esterna
« il: 24 Feb 2012, 21:58:43 »
Salve a tutti,
 sto provando a scrivere un piccolo componente per joomla.
Vorrei fare una cosa molto semplice ho due tabelle, con una relazione 1:n, una classica master-details.

In tutti gli esempi che ho visto, la chiave esterna del master viene settata dall'utente sulla tabella detail.
Facciamo un esempio: supponiamo di avere squadra e giocatori.
Creo una squadra (id:s001), se ora voglio aggiungere un giocatore attraverso un bottone "aggiungi giocatore" in cui viene settato automaticamente nella form, il valore id_squadra con s001.
Purtroppo in tutti gli esempi che ho visto fin'ora i passi sono: "aggiungi giocatore" si apre una form  in cui si sceglie la squadra a cui appartiene.

Mi sfugge questo:
 - dalla view chiedo di aggiungere il giocatore (nella squadra s001)
 - dal controller dovrei chiedere al model la form e dirgli di settarmi la chiave esterna il vaore s001
 -  questo punto nella view (edit) dovrei vedere la squadra già settata nel record nuovo...

Corretto?

Fin'ora non sono riuscito a settare questo benedetta chiave esterna. Potete darmi una dritta?

Grazie,
 Cristian




16
Ciao a tutti,
 in questi giorni sto provando a scrivere un piccolo componente per Joomla (1.7) in cui sto provando a creare un semplice MASTER-DETAILS.
Ad esemipio:
TabelllaMaster (id, title,description)
TabellaDetails (id,id_master,note)

Seguendo il tutorial per lo sviluppo di un componente che accede al DB, va tutto bene fino a quando devo creare, gestire i record della TabellaMAster. Il problema è che, una volta che ho selezionato il record della tabella master, vorrei aggiungere nuovi record che abbiano come valore di id_master l'id padre selezionato.

Qualcuno può indicarmi come fare il passaggio/recupero di questo parametro, o va benissmo anche se mi indicate un componente semplice che faccia proprio questo in modo da potermi studiare il sorgente?

Grazie,
 Cristian


Pagine: [1]


Web Design Bolzano Kreatif