Ciao a tutti,
sto cercando di convertire il modulo Urlify dalla versione 5 alla versione 6 di Drupal, attenendomi a quanto indicato nell'apposita guida ufficiale.
Ho convertito quasi tutto eccetto una parte, relativa all'utilizzo di un javascript. Il codice è questo:
/**
* Implementation of hook_footer().
*/
function urlify_footer() {
if (_urlify_insert_js()) {
$max_chars = variable_get('urlify_max_characters', 50);
$output = <<<EOF
<script type="text/javascript">
if (Drupal.jsEnabled) {
$('#edit-path').change(function() {
$(this)._changed = true;
});
$('#edit-title').keyup(function() {
var e = $('#edit-path');
if(!$(e)._changed) {
$(e).val(URLify($(this).val(), $max_chars));
}
});
}
In pratica si tratta di uno snippet di codice che prende un valore e va a inserirlo da un altra parte, in sintesi i concetti base sono:
Drupal.jsEnabled controlla se è attivo il JS di drupal (con jQuery & c.) e se lo è esegui la parte sottostante.
$(document).ready( .... ) esegue la parte di codice indicata al caricamento della pagina completato 8solo della pagina, non delle immagini o altri documenti orrelati, quindi a volte può fare casino e si preferisce usare $(window)
$(...) serve a prelevare un oggetto con il selettore specificato (stesse regole del css), per esempio nella riga
$('#edit-path')Ad occhio e crocie dovrebbe funzionare tutto così com'è, io ti suggerirei, quando ci hai preso un pò più mano, di passare ad una scrittura più pulita del codice, usando druapl_add_js( $var, 'setting') anzichè un inclusione così "sporca", ma se ne può parlare dopo, il codice così com'è funziona sucuramente, quindi non devi modficare nulla
.
Grazie Mavimo, ho capito tutto!
Solo che il modulo non va... perché c'è un'altra parte che avevo ignorato di aggiornare ed è questa:
Modulo 5.x:
/**
* Implementation of hook_menu()
*/
function urlify_menu($may_cache) {
$items = array();
if ($may_cache) {
$items[] = array(
'path' => 'admin/settings/urlify',
'title' => t('URLify'),
'description' => t('Configure the URLify module.'),
'callback' => 'drupal_get_form',
'callback arguments' => array('urlify_settings'),
'access' => user_access('administer urlify'),
'type' => MENU_NORMAL_ITEM
);
// Test - may move the configuration here
$items[] = array('path' => 'admin/build/path/urlify', 'title' => t('URLify settings'),
'callback' => 'drupal_get_form',
'callback arguments' => array('urlify_settings'),
'access' => user_access('administer urlify'),
'type' => MENU_LOCAL_TASK);
}
else if (_urlify_insert_js()){
$default_remove_list = array(
"a", "an", "as", "at", "before", "but", "by", "for", "from",
"is", "in", "into", "like", "of", "off", "on", "onto", "per",
"since", "than", "the", "this", "that", "to", "up", "via",
"with"
);
// This may not be needed anymore since the values are now passed directly to Javascript
$remove_list = preg_replace("/(\w+)/e","\"'$1'\"", variable_get('urlify_strings_to_ignore', implode(',', $default_remove_list)));
drupal_add_js(array('urlify' => array('remove_list' => $remove_list)), 'setting');
drupal_add_js(drupal_get_path('module', 'urlify') . '/urlify.js');
}
return $items;
}che io ho modificato così:
/**
* Implementation of hook_menu()
*/
function urlify_menu() {
$items = array();
$items['admin/settings/urlify'] = array(
'title' => t('URLify'),
'description' => t('Configure the URLify module.'),
'access arguments' => array('administer urlify'),
'page callback' => 'drupal_get_form',
'page arguments' => array('urlify_settings'),
'access arguments' => array('administer urlify'),
'type' => MENU_NORMAL_ITEM
);
// Test - may move the configuration here
$items['admin/build/path/urlify'] = array(
'title' => t('URLify settings'),
'access arguments' => array('administer urlify'),
'page callback' => 'drupal_get_form',
'page arguments' => array('urlify_settings'),
'access arguments' => array('administer urlify'),
'type' => MENU_LOCAL_TASK
);
}Ma mi manca l'ultima parte contenuta nell'else if...
A questo punto voglio completarlo!
Qualcuno mi dà un suggerimento su come procedere?
Grazie
Lasciandolo tal quale 
Eh ma se ho tolto l'if iniziale... poi non ci può essere un else if...
Per la prima parte, quella che ho modificato, mi sono attenuta alla guida... non dovevo fare come ho fatto?
scusa, ho guardato velocemente solo il codice JS e non avevo considerato il resto 
Ora non so esattamente cosa ritorna la funzione _urlify_insert_js() e non ho voglia di andare ad indagare prova a trasformare semplicemente l'else if in un semplice if, anche se credo che forsse sarebbe rivedere un attimo la logica di inserimento del JS nelle pagine, magari spostando il tutto hell'hook_form_alter().
ci sono novità con questo modulo?
__________________Uhmmm... da parte mia no, poi ho deciso di non usarlo, sono stata un paio di giorni a capire questa cosa dei js ma non mi è riuscito e quindi ho lasciato stare.
Della versione ufficiale per Drupal 6.x ancora nulla purtroppo...
Iscritto il: 08 Mar 08