Drupal 6 – Vitaminizzare la gestione delle revision

Drupal fornisce una gestione delle revisioni dei nodi che permette di gestire le varie versioni di un documento. Il problema è che la pagina di gestione è bruttina e non è accessibile direttamente dal front-end. Ho scritto quindi alcuni snippet di codice PHP per ottenere una gestione più lineare e accessibile delle versioni.

Innanzitutto ho scritto una vista blocco che riporta le informazioni della attuale revisione. Così da dare un pò di informazioni su cosa si sta vedendo.

Questo il dettaglio:

Campi
Revisione nodo: Data di  creazione Data di creazione
Revisione nodo: Titolo Titolo
Revisione nodo: Messaggio di  log Messaggio
Poi ho pubblicato la stessa nel template specifico del content-type di cui volevo fare il controllo di versione:
<? if ($node->is_current): ?>
<?php
$block = module_invoke('views', 'block', 'view', 'og_news-block_4');
print $block['content'];
?>

Poi ho realizzato una serie di links dinamici come un pannellino di gestione che appare diverso a seconda che ci si trovi nella revisione attuale o in una di quelle precedenti:

<? if ($node->is_current): ?>
<div>
<p>Operazioni sull'ultima revisione pubblicata.</p>
<a href="/node/<?php echo $node->nid ?>/view"> Visualizza ultima revisione  </a>
<a href="/node/<?php echo $node->nid ?>/edit?destination=node/<?php echo $node->nid ?>/view">
 Modifica ultima revisione  </a>
<a href="/node/<?php echo $node->nid ?>/revisions"> Visualizza revisioni precedenti </a>
<a href="/node/<?php echo $node->nid ?>/delete"> Cancella tutto il documento </a>
</div>
<?php endif; ?>
<? if (!$node->is_current): ?>
<div>
<p>Operazioni sulla revisione che stai vedendo in questo momento.</p>
<p>Questa &egrave; la revisione numero <? echo arg(3) ?> del documento numero <?php echo $node->nid ?>. </p>
<a href="/node/<?php echo $node->nid ?>/revisions"> Torna alla lista delle revisioni </a>
<a href="/node/<?php echo $node->nid ?>/view"> Visualizza ultima revisione  </a>
<a href="/node/<?php echo $node->nid ?>/revisions/<? echo arg(3)
 ?>/edit?destination=node/<?php echo $node->nid ?>/view"> Modifica questa revisione  </a>
<a href="/node/<?php echo $node->nid ?>/revisions/<? echo arg(3) ?>/delete"> Cancella questa revisione </a>
</div>
<?php endif; ?>

E infine un messaggio per far capire in che revisioni ci si trovi:

<? if ($node->is_current): ?>
 <div> Questa &egrave; l'attuale revisione del documento. </div>
<?php endif; ?>
<? if (!$node->is_current): ?>
<div> Questa &egrave; una precedente revisione del documento. </div>
<?php endif; ?>

Tags: , ,

Un Commento to “Drupal 6 – Vitaminizzare la gestione delle revision”

  1. Andrea scrive:

    Molto interessante!
    Sarei molto grato se potessi avere qualche indicazione in più su come realizzarlo in quanto sto ancora cercando di imparare ad usare Drupal e gli snippets.
    Grazie