Back to top

Autore Topic: scelta immagine e voce di menu da backend  (Letto 1136 volte)

Offline smino89

  • Esploratore
  • **
  • Post: 199
  • Sesso: Maschio
    • Mostra profilo
scelta immagine e voce di menu da backend
« il: 01 Set 2011, 16:55:03 »
Ciao,

sto realizzando un componente per joomla 1.5 (lo so.. dovrei usare 1.7... ma è un vecchio componente che ho creato tempo fa e devo solo fare un paio di modifiche. In futuro lo adatterò alla nuova versione..).

Ho una pagina di inserimento/modifica di un oggetto, dove ho gia diversi campi (nome, descrizione, autore ecc.).

Due dei dati da inserire, però, sono un po "particolari".. eccoli:

1) scelta immagine: vorrei inserire il classico pulsante che si vede anche sotto all'editor, e l'ho gia fatto, ma non me lo apre con la lightbox.
ecco il codice:
Codice: [Seleziona]
            <input class="text_area" type="text" name="immagine_url" id="immagine_url" size="150" maxlength="250" value="<?php echo $this->gru->immagine_url;?>" />
            <div class="button2-left">
                <div class="image">
                    <a rel="{handler: 'iframe', size: {x: 570, y: 400}}" href="./index.php?option=com_media&view=images&tmpl=component&e_name=immagine_url&noeditor=1" title="Image" class="modal-button">
                    Image
                    </a>
                </div>
            </div>

cosa mi perdo?

2) il secondo input type che non riesco a gestire è la scelta di una "voce di menu".
Vorrei un input come si vede nei moduli, in cui scegliere una voce di menu.

Questo campo dovrebbe rappresentare il link alla "pagina di dettaglio" dell'oggetto.

Suggerimenti??

P.S. certo se usassi joomla 1.6 sarebbe più facile ::) ::)

Offline smino89

  • Esploratore
  • **
  • Post: 199
  • Sesso: Maschio
    • Mostra profilo
Re:scelta immagine e voce di menu da backend
« Risposta #1 il: 01 Set 2011, 17:42:56 »
per la scelta dell'immagine ho risolto così:

view.html.php
Codice: [Seleziona]
    $globalParams = &JComponentHelper::getParams( 'com_nav' );
       $directory = $globalParams->get('directory', '');
       
    if (preg_match("/^\//", $directory)) $directory = substr($directory,1);
    if (preg_match("/\/$/", $directory)) $directory = substr($directory,0,strlen($directory)-2);
    if (($directory!='') && !is_dir(JPATH_SITE.DS.'images'.DS.'stories'.DS.$directory)) {
        $directory = '';
    }

    $js = '
                function jInsertEditorText(tag, id){
                    tag = tag.replace("<img src=\"","");
                    var end = tag.indexOf("\"");
                    tag = tag.substring(0,end);
                    document.adminForm.immagine_url.value = tag;
                    changeDisplayImage();
                }
        ';
    $doc = & JFactory::getDocument();
    $doc->addScriptDeclaration($js);

    JHTML::_('behavior.modal');
    $lists['image'] = '<div class="button2-left"><div class="image">';
    $lists['image'] .= "<a rel=\"{handler: 'iframe', size: {x: 570, y: 400}}\" href=\"".JURI::base()."index.php?option=com_media&amp;view=images&amp;tmpl=component&amp;e_name=immagine_url&folder=".$directory."\" title=\"".JText::_('Image')."\" class=\"modal\">".JText::_('Image')."</a>";
    $lists['image'] .= '</div></div>';

    $this->assignRef('lists',        $lists);

form.php
Codice: [Seleziona]
<script language="javascript" type="text/javascript">
    function changeDisplayImage() {
            if (document.adminForm.immagine_url.value !='') {
                document.adminForm.imagelib.src='../' + document.adminForm.immagine_url.value;
            } else {
                document.adminForm.imagelib.src='images/blank.png';
            }
        }
</script>

        <tr>
            <td width="100" align="right" class="key">
                <label for="Codice">
                    <?php echo JText::_'immagine_url' ); ?>:
                </label>
            </td>
            <td>
                <input name="immagine_url" id="immagine_url" type="text" size="50" value="<?php echo $this->immagine_url?>" onchange="changeDisplayImage();" /><?php if ($this->lists['image']) echo $this->lists['image']; ?>
            </td>
        </tr>
        <tr>
            <td>&nbsp;
            </td>
            <td valign="top">
                <?php
                
if (preg_match("#gif|jpg|png#i"$this->immagine_url)) {
                    
?>

                    <img src="../<?php echo $this->immagine_url?>" name="imagelib" />
                    <?php
                
} else {
                    
?>

                    <img src="images/blank.png" name="imagelib" />
                    <?php
                
}
                
?>

            </td>
        </tr>

resta in sospeso (per ora) la scelta della voce di menu..
resto in attesa di suggerimenti 8)

Offline smino89

  • Esploratore
  • **
  • Post: 199
  • Sesso: Maschio
    • Mostra profilo
Re:scelta immagine e voce di menu da backend
« Risposta #2 il: 02 Set 2011, 11:01:48 »
aggiornamento..

in form.php ho messo:
Codice: [Seleziona]
JHTML::_('menu.linkoptions');

echo JHTML::_('select.genericlist', JHTMLMenu::linkoptions(), 'scheda_url', 'class="inputbox" ', 'value', 'text', 'scheda_url' );

solo che vorrei salvare nel db non solo l'id, ma il link vero e proprio.
In sostanza dovrei o cambiare il "value" all'interno della mia select (mettendoci il link reale), oppure intercettare il salvataggio dei dati e ricavare quello che mi interessa..

aiuto?

Offline smino89

  • Esploratore
  • **
  • Post: 199
  • Sesso: Maschio
    • Mostra profilo
Re:scelta immagine e voce di menu da backend
« Risposta #3 il: 02 Set 2011, 13:02:17 »
non avendo suggerimenti, per ora ho risolto in questo modo:

form.php
Codice: [Seleziona]
                <?php
                $db 
=& JFactory::getDBO();
                
$sql "SELECT id,link FROM #__menu ";
                
$db->SetQuery($sql);
                
$menu $db->loadObjectList();
        
                
$voci JHTMLMenu::linkoptions();
                foreach (
$voci as $voce){
                    if (
is_numeric($voce->value)) {
                        foreach (
$menu as $item){
                            if (
$item->id == $voce->value){
                                
$voce->value $item->link;
                            }
                        }
                    }
                }
                echo 
JHTML::_('select.genericlist'$voci'scheda_url''class="inputbox" ''value''text'''.$this->scheda_url.'''scheda_url' );
                
?>


è una soluzione che sta in piedi per miracolo, ma non mi è venuto in mente altro..
un'ulteriore questione che mi si è posta, e a cui non ho saputo rispondere, è "trasformare" i link (del tipo index.php?option... ) in url sef.. mah..

resto in attesa di consigli utili..

P.S. questo è il mio ultimo aggiornamento, se non ci sono consigli io resto alla (brutta) soluzione mostrata sopra.

Saluti!

 



Web Design Bolzano Kreatif