Joomla.it Forum
Non solo Joomla... => Sviluppo => : smino89 01 Sep 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:
<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 ::) ::)
-
per la scelta dell'immagine ho risolto così:
view.html.php
$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&view=images&tmpl=component&e_name=immagine_url&folder=".$directory."\" title=\"".JText::_('Image')."\" class=\"modal\">".JText::_('Image')."</a>";
$lists['image'] .= '</div></div>';
$this->assignRef('lists', $lists);
form.php
<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>
</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)
-
aggiornamento..
in form.php ho messo:
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?
-
non avendo suggerimenti, per ora ho risolto in questo modo:
form.php
<?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!