Inserire Caption in table
Per questioni di accessibilità vorrei inserire caption nelle tabelle dati (tipo quella degli allegati), solo che sono arrivato ad un punto morto.
Ho cercato in giro e ho provato a smanettare sui file theme.inc e upload.module
In theme.inc alla riga 764 di drupal 55 ho modificato
if (isset($caption)) {
$output .= '<caption>'. $caption ."</caption>\n";
}
con
$output .= '<caption>'. $caption ."</caption>\n";In questo modo viene inserito il caption nei nodi con degli allegati, solo che è vuoto.
Come si può fare per inserire un testo?

Risposte
Per mettere il caption nella
Per mettere il caption nella tabella degli allegati vai in upload.module e cerca la funzione
<?phpfunction theme_upload_attachments($files) {
...
if (count($rows)) {
return theme('table', $header, $rows, array('id' => 'attachments'));
}
}
?>
Nell'ultima riga viene generato il codice della tabella degli attachment. Di default l'ultimo argomento è a NULL e guarda caso l'ultimo argomento specifica il testo della caption della tabella.
Aggiungendo quest'ultimo parametro a tuo piacere puoi dagli la caption che vuoi
<?phpfunction theme_upload_attachments($files) {
...
if (count($rows)) {
return theme('table', $header, $rows, array('id' => 'attachments'), 'File allegati alla pagina');
}
}
?>
Grazie
Ti ringrazio! Ho provato e funziona.
L'ho applicato anche per il modulo tracker.
Mi piacerebbe farlo anche per il modulo views, solo che proprio non riesco a trovare il punto giusto in cui inserirlo.
Il sito mi va addirittura in errore e non capisco se la modifica va fatta su views.module o su views_ui.module.
Ti sarei molto grato anche per questo secondo aiuto.
Non capisco a quale tabella
Non capisco a quale tabella delle view ti riferisci. Visto che che credo che ce ne sia più di una se non mi spieghi meglio dove vuoi mettere il caption non so come aiutarti.
Quando, con il modulo views,
Quando, con il modulo views, creo una vista tabellare dei contenuti che voglio io in una pagina, views genera una pagina con una tabella che, però, non ha il caption. Ebbene: vorrei inserire il caption (magari anche il summary) anche lì.
Un esepio di vista tabellare è qui:
http://www.altrospazio.it/bomboniere_alimentari
Apri il file
Apri il file /modules/views/views.module e cerca la funzione theme_views_view_table() /*La responsabile della creazione della vista Table View*/
<?php
function theme_views_view_table($view, $nodes, $type) {
....
return theme('table', $view->table_header, $rows );
}
?>
Come prima basta cambiare l'ultima riga
<?php
function theme_views_view_table($view, $nodes, $type) {
....
return theme('table', $view->table_header, $rows, NULL, 'CAPTION' );
}
?>
Grazie!
Ti ringrazio, funziona!!!
Vorrei adesso inserire anche il summary per la tabella.
Non conoscendo il php e facendo delle prove ho provato ad inserire questo codice per far apparire anche summary:
return theme('table', $view->table_header, $rows, array('id' => 'attachments', 'summary' => 'Tabella elenco contenuti'), 'Elenco contenuti');}
Mi rendo conto che id' => 'attachments', non va bene (l'ho copiato dal tuo contributo per il modulo upload). Come posso correggerlo?
Se ti interessa inserire
Se ti interessa inserire solo l'attributi summary basta toglierlo dal vettore che mappa 'attributi' con 'valori' della table
<?phpfunction theme_views_view_table($view, $nodes, $type) {
....
return theme('table', $view->table_header, $rows, array('summary' => 'Tabella elenco contenuti'), 'CAPTION' );
}
?>
Siccome prima dell'inserimento del tag caption non era specificato l'attributo id non credo sia utile darlo alla tabella
Grazie di nuovo!
Grazie! Sei un grande!
Grande
Grazie.
Hai risolto un "grande problema" legato all'accessibilità: il summary in tabella è decisamente importante.
Sto "combattendo" con event.module: stesso problema con il summary per le tabelle mese, giorno e elenco.
Provo a vedere se funziona.
Summary
Ma, secondo te, c'è un modo per dare al summary di views un testo non uguale per tutte le viste che si possono creare con questo modulo? Non si potrebbe fare in modo che, in automatico, il testo del summary venisse preso dal nome della views creata? In questo si avrebbe una descrizione meno generica della tabella generata.
Ti ringrazio già in anticipo!
Certo che si può
Certo che si può personalizzare, dipende quanto lo vuoi personalizzare. In questo caso se ti interessa inserire titolo della view o altro basta prendere questi parametri e creare la stringa a piacere per il summary, per es
<?phpreturn theme('table', $view->table_header, $rows, array( 'summary' => 'Tabella ' . filter_xss_admin( views_get_title($view, 'page') ) ), 'CAPTION' );
?>
Come sumuary avrai la stringa "Tabella titolo che hai dato della sezione page della view"
Essenzialmente con filter_xss_admin( views_get_title($view, 'page') ) ) ottieni quel parametro e una volta ritornato lo si concatena alla stringa per fare il summary. Invece se ti interessa il nome della view usa al suo posto $view->name
Se ti interessano altri parametri bisogna guardare e documentarsi
Grazie, the.red.viper!
Mi funziona se inserisco così:
return theme('table', $view->table_header, $rows, array('summary' => $view->name), 'Elencocontenuti');
Se invece inserisco:
return theme('table', $view->table_header, $rows, array( 'summary' => 'Tabella ' . filter_xss_admin( views_get_title($view, 'page') ) ), 'CAPTION' );Allora viene inserito nel summary solo "Tabella " e nient'altro. Facendo dei tentativi il sito mi va sempre in errore.
Forse non ho capito come inserire il filter_xss_admin.
Sì, mi piacerebbe documentarmi: dove posso trovare il materiale da leggere per imparare a fare queste modifiche?
Strano l'ho provato prima di
Strano l'ho provato prima di postarlo e mi va. Non è che per caso nella configurazione della view nella sezione page hai lascito in bianco il campo Title? (che è quello che si va a cercare con filter_xss_admin( views_get_title($view, 'page') ) ) )
Io ho condotto la modifica con drupal 5.1, forse ti da un errore perchè avendo una versione diversa non è definita la funzione filter_xss_admin.
Documentarsi non è facile, io comincio sempre aprendo e moduli e confido che gli sviluppatori scrivano del codice che si commenti da solo da cui cerco di dedurre quel che serve leggendo il codice sperando nel mio intuito per modificarlo.
Comunque in generale sul sito ufficiale http://drupal.org ci sono gli handbook degli sviluppatori che documentano com è progettato il modulo. Poi c'è http://api.drupal.org su cui ci sono le api del core di drupal ( filter_xss_admin la trovi documentata qui )
OK!
Hai ragione, non avevo definito il titolo della views: in questo modo funziona!!!!!
Il problema è che in questo modo ottengo delle informazioni troppo ridondanti: lo stesso testo viene stampato sul monitor come titolo, appunto, e anche nel summary. Lo stesso testo viene ascoltato due volte da chi naviga con uno screen reader.
Ho provato allora a scrivere il testo nel campo riservato alla descrizione della news.
Dopo di che nel modulo news ho inserito questa modifica:
return theme('table', $view->table_header, $rows, array('summary' => $view->description), 'Elenco contenuti');}
Il sito non va in errore e ho ottengo il risultato che volevo.
Mi restano ancora dei dubbi sul caption: forse è ridondante e non aggiunge nulla di nuovo.
Ti ringrazio davvero tanto!!!!
Personalizzare Caption
Vorrei anche personalizzare il caption: vorrei che prendesse il nome della views.
Ho modificato così:
}return theme('table', $view->table_header, $rows, array('summary' => $view->description), $view->name);
}
Anche se così il valore di caption risulta un po' povero ed esteticamente brutto: posso solo scrivere una cosa del tipo "nome_della_views"