nome utente in Tipo di contenuto

16 contenuti / 0 new
Ultimo contenuto
nome utente in Tipo di contenuto

Avrei bisogno di inserire, in un particolare tipo di contenuto, un campo dove compare il nome dell'utente connesso, ma che non sia modificabile. Questo perché più persone usano lo stesso computer e si dimenticano il log out alla fine della sessione e il nuovo utente potrebbe inserire i contenuti con il nome di quello precedente.
CCK ha una opzione utente, ma è selezionabile e non compare direttamente quello loggato.
Qualche idea?

ciao e grazie

Secondo me ti conviene chiudere la sessione alla chiusura del browser modificando

ini_set('session.cookie_lifetime', 2000000);

in
ini_set('session.cookie_lifetime', 0);

in settings.php.

Se il browser non viene nemmeno chiuso tra un utente e l'altro, modifica le impostazioni del browser oppure prova una gestione più approfondita delle sessioni, ad es con
http://drupal.org/project/session_limit
http://drupal.org/project/autologout

Il computer resta sempre aperto e a disposizione del pubblico, né posso modificare le impostazioni del browser.
Se una persona si alza e viene immediatamente sostituita da un'altra, anche se solo per breve tempo (es. uno chiede: ti sposti 5 minuti, non tocco niente di quello che stai facendo, che inserisco un attimo questa cosa?) Non è pensabile neanche agire sulle sessioni.

ciao e grazie

ma se il browser resta sempre aperto, come fai ad essere sicuro/a che il vecchio utente si logga out e che il nuovo si logga in?
se non avviene il nuovo login, la variabile $user rimane la stessa e non c'è verso di "dire" a drupal che chi smanetta non è la stessa persona di prima.
Mi viene in mente di forzare il logout ogni volta che si salva del contenuto ma non è pratico senza un sistema di login semplificato ad esempio inserendo solo l'email o l'username (si può fare con http://drupal.org/project/logintoboggan )

<a href="mailto:[email protected]" rel="nofollow">[email protected]</a> wrote:
ma se il browser resta sempre aperto, come fai ad essere sicuro/a che il vecchio utente si logga out e che il nuovo si logga in?

Siccome gli utenti devono riempire una serie di campi, se c'è anche il campo con il nome utente, se ne accorgono immediatamente se stanno lavorando a nome di un altro.
Se metto il nome utente selezionabile, mi ritrovo i dati sballati nelle viste che raccolgono le informazioni: dati di un utente inviati a nome di un altro.
Per questo vorrei un campo con il nome utente predefinito, come nel modulo di contatto, in signup, o altro, ma non modificabile o selezionabile.

ciao

mi sembra poco pratico, comunque se tutto quello che ti serve è che sia ben visibile il nome utente di chi è loggato in, puoi enfatizzare il blocco "navigation" che di default ha il titolo = nome utente oppure inserire

<?php
global $user;
print
$user->name;
?>

dove ti pare più opportuno nel template.

Non vedo la necessità di creare un campo (l'uid dell'autore di un nodo, che è poi l'argomento che usa views, viene comunque registrato)

è praticissimo invece e provo ha spiegarmi meglio.

Ogni docente deve riempire un tipo di contenuto che ha dei campi:

  • anno scolastico
  • classe
  • materia
  • ...
  • allegato

nelle diverse viste richiamo il nome utente e i rispettivi campi.
Se quello loggato e quello che invia i dati non coincidono, mi ritrovo, nella griglia e/o nella tabella delle viste, un docente collegato a una classe non sua, a meno che non aggiunga anche il campo con il nome del docente. Anche in questo caso però posso trovarmi con una discrepanza tra il nome dell'utente e quello del docente.

Per questo ho bisogno di un form, ad esempio del tipo Testo, con già predefinito il nome del docente, così quando comincia ad inserire i dati e vedendo un nome non suo e che non può cambiare, si interrompe, a meno che non sia stupido del tutto. Un'enfasi sulla Navigazione non è sufficiente.

Il codice php è una buona idea, ma quello scritto sopra non si adatta al campo di testo.

ciao e grazie

Mi si è accesa una lampadina:
il nome dell'utente connesso è già presente nella form di creazione/modifica del content type, precisamente nel fieldgroup "informazioni sull'autore"
Quindi basta spostare il campo "Autore" sotto al titolo e rendere il campo read-only.
Opzionalmente si può aggiungere un background di colore diverso ed un testo di aiuto appropriato per dare più visibilità al campo:

Si avvicina a quello che vuoi (o volevi) fare?

Grazie bohz, sarebbe perfetto se nel Tipo di contenuto avessi le Informazioni sull'autore. C'è di tutto ma manca proprio quello. Devo controllare con calma.

ciao e grazie

Ce le hai per forza le info sull'autore. tutti i nodi devono, in genere, avere un autore.
Controlla in fondo al modulo di creazione contenuto o alla pagina di configurazione del content type.
Nella mia modesta esperienza, non ho mai visto un nodo senza autore.
Ora non ho accesso al codice ma posso postarlo stasera.

Queste funzioni restituiscono lo screenshot in #7
Inseriscile in template.php
Sostituisci [contenttype] con il tipo di contenuto e garland con il nome del tema
(e rimuovi le tags <?php e ?>)

Lo script di partenza viene da qua: http://www.lullabot.com/articles/modifying-forms-5-and-6

<?php
/**
* Implementation of hook_theme.
*
* Register custom theme functions.
*/
function garland_theme() {
   return array(
    
// The form ID.
    
'contenttype_node_form' => array(
      
// Forms always take the form argument.
      
'arguments' => array('form' => NULL),
     ),
   );
}
/**
* Theme override for node edit form.
*
* The function is named themename_formid.
*/
function garland_contenttype_node_form($form) {
 
// Print out the $form array to see all the elements we are working with.
  //dsm($form);
  //Portare il campo Autore sotto il titolo e renderlo in sola lettura
  //Imposto l'attributo read-only (probabilmente in modo errato)
 
$form['author']['name']['#attributes']['readonly']='readonly';
 
// DA RIMUOVERE. Gli stili vanno spostati nei CSS
 
$form['author']['name']['#attributes']['style']='background-color:#FFAFAF;';
 
//Inserisco il messaggio di aiuto
 
$form['author']['name']['#description']='Se il nome dell\'autore non corrisponde al tuo nome utente, <a href="../../logout">esci</a> ed accedi con le tue credenziali';
 
//Assegno una variabile ai campi Titolo e Autore
 
$titolo=drupal_render($form['title']);
 
$autore=drupal_render($form['author']['name']);
 
//Assegno una variabile al resto della Form
 
$tuttoilresto=drupal_render($form);
  return
$titolo . $autore . $tuttoilresto;
}
?>

Forse le info sull'autore (che poi sono le info di "authoring", dato che comprendono anche la data di modifica) non sono visualizzate a chi non ha permessi di amministrazione dei nodi.

aha!
non ci avevo pensato....
Allora è un bel problema, perchè se l'utente non è abilitato a visualizzare quel campo, non c'è verso di mostrarglielo.
...suggerisci qualche soluzione?

Mostrargli quel campo con un hook_form_alter.
Dal momento che si fa una cosa del genere, a questo punto consiglierei di non rendere visibile il campo vero e proprio, ma di aggiungere un elemento di tipo markup al form, in cui si fa vedere solo il valore. In questo modo, si dovrebbero evitare grane relative ai permessi di modificare quel campo.

cioè, più o meno come avevo suggerito in #5?
..e non si potrebbe inserire a livello del theme layer (ovvero tramite template.php o *.tpl.php)?
Grazie

grazie a entrambi per la preziosa collaborazione.

Siccome dovrebbe partire da domani l'inserimento dei dati e durerà una decina di giorni, non ho il tempo di verificare se queste modifiche funzionano.
Direi di lasciare al momento le cose così e vedere la percentuale di errori, così mi regolo per il prossimo inserimento (giugno).

grazie ancora e ciao