Ho un problema - non essendo espertissimo di JS... - nel modificare uno script.
Dunque, il problema è questo: sto sviluppando un CMS, utilizzando una funzione di inline-edit, per renderlo più user-friendly. Però, poichè il sito prevede molte pagine, ed è per di più in 4 lingue, vorrei evitare di fare centinaia di pagine diverse, una per ogni lingua/pagina.
Perciò, lavorando interamente in php, ho pensato di fare un'unica pagina, a cui passo una variabile (che identifica la pagina), ed in cui sono presenti quattro diversi box di testo, uno per ciascuna lingua.
Il problema mi sorge quando devo passare i dati alla pagina .php che li processa, perchè - appunto - utilizzando un'unica pagina ho bisogno di identificare a quale contenuto faccia riferimento, ed a quale lingua!
Questo è il codice html (ne posto uno, ma sono 4 nella pagina):
Codice PHP:
<div class='inline-edit'>
<div class='display'><?PHP
echo $text_fr;
?></div>
<div class='form'>
<div><div><textarea class='text'></textarea><input name="lang" type="hidden" value="fr"><input name="page" type="hidden" value="<?PHP echo $page; ?>"></div></div>
<div>
<input type='submit' class='save' value=' Save ' />
<input type='submit' class='cancel' value=' Cancel ' />
</div>
</div>
</div>
I due campi di input hidden, lang e page, li ho aggiunti io (rispetto al modello originale), perchè sono le variabili che mi servono - vedi sopra - per identificare la pagina di riferimento.
Il codice JS (originale) è questo:
Codice PHP:
;(function($){
$.fn.inlineEdit = function(options){
var text;
var settings = $.extend({
href: 'ajax.php',
display: '.display',
form: '.form',
text: '.text',
save: '.save',
cancel: '.cancel',
loadtxt: 'Loading...',
hover: 'none-error-404'
},options||{});
this.each(function(){
// Display Actions
$(settings.display, this).mouseover(function(){
$(this).addClass(settings.hover);
}).mouseout(function(){
$(this).removeClass(settings.hover);
}).click(function(){
text = $(this).html();
$(this).hide().siblings(settings.form).show().find(settings.text).val(text).focus();
return false;
});
// Cancel Actions
$(settings.cancel, this).click(function(){
$(this).parents(settings.form).hide().siblings(settings.display).show();
return false;
});
// Save Actions
$(settings.save, this).click(function(){
text = $(this).parents(settings.form).find(settings.text).val();
$(this).parents(settings.form).hide().siblings(settings.display).html(settings.loadtxt)
.load(settings.href, {text: text}).show();
return false;
});
});
};
})(jQuery);
Naturalmente, sia questo che JQuery vengono richiamati nella pagina... che li inizializza con il codice:
Codice PHP:
<script type='text/javascript'>
$(document).ready(function(){
$('.inline-edit').inlineEdit({hover: 'hover'});
});
</script>
Come dicevo, il mio problema è mettere mano al JavaScript, per passare le variabili alla pagina ajax.php che deve processare i dati.
Ho pensato che dovrei, intanto, aggiungere alla variabile settings altre due voci, ad es.
lang: '.form.lang';
page: '.form.page';
(e già non so se è esatto...), ma poi dovrei fare in modo che queste variabili siano passate alla pagina php, quindi dovrei modificare la funzione save ...
Ma come fare?
Per quanto riguarda la variabile page, avrei una soluzione sporca, ovvero mettere il codice JavaScript nella pagina, e non in un file esterno, e farlo scrivere da php, in modo che - ad es. - la riga:
Codice PHP:
href: 'ajax.php',
venga scritta di volta in volta così:
Codice PHP:
href: 'ajax.php?page=miapagina',
dove miapagina è la variabile che identifica il target. Ma per la lingua, come fare?
Non vorrei incasinare tutto...
Mi serve quindi un'aiuto esperto.
Qualcuno si fa avanti?
Grazie in anticipo...