Blocco pdf

21 contenuti / 0 new
Ultimo contenuto
Blocco pdf
AllegatoDimensione
Image icon esempio.JPG25.2 KB

Salve ragaz, esiste in drupal un modo per far aprire un pdf nel blocco centrale? mi spiego meglio, nel mio blocco a sx ho le 7 voci, ognuna di esse richiama un pdf che vorrei si aprisse direttamente nella sezxione centrale! stile quesot ceh allego! vi ringrazio tutti se avete consigli! un abbraccio

L'unica soluzione è usare l'iframe (inline frame).
In questo caso, dovresti creare un nuovo nodo in formato php, in cui metti l'iframe e passi il pdf da inserire via get (id del file o quel che vuoi), mettendo le oppurtune verifiche, onde evitare problemi di sicurezza. Sulla pagina prendi il valore passato da get e lo richiami nell'iframe.
Guardati questo esempio:
http://www.cs.tut.fi/~jkorpela/html/iframe-pdf.html

Ciao
Gianni

scusa, ho visto l'esempio ma nn ben capito! potresti dirmi come devo proceder? devo creare un nuovo modulo con menu a sx e pdf in centro?
grazie

Dipende da quel che vuoi fare.
La cosa più semplice è creare una pagina e mettere il codice:

<iframe src="../latin9.pdf" width="100%"
style="height:20em">
[Your browser does <em>not</em> support <code>iframe
,
or has been configured not to display inline frames.
You can access the document
via a link though.]

sostituendo "../latin9.pdf" con il percorso al tuo pdf.

Ovviamente la pagina dovrà essere html NON FILTRATO

**** NON HO PROVATO MA DOVREBBE ANDARE ********

Se quello sopra funziona, a quel punto potresti rendere uil tutto dinamico con chiamate (link) tipo:
?q=node/iddellapagina&documento=1

Nella pagina che aprirai, prima dell'iframe, metterai un codice del tipo:

<?php
 
case $_GET[documento]
        
1: $documento  = 'pippo.pdf';
        
2: $documento = 'pluto.pdf';
        
3: $documento = 'minnie.pdf';
?>

e il codice iframe sopra diventerà:

<iframe src="../latin9.pdf" width="100%"
style="height:20em">
[Your browser does <em>not</em> support <code>iframe
,
or has been configured not to display inline frames.
You can access ">the document
via a link though.]

P.S.
ho buttato tutto lì al volo, quindi correggi ed adatta al tuo caso.... anche perchè il quoting sul codice è venuto da schifo

Ciao
Gianni

anche se un po confuso ho smanettato un po!! grande gianni! ho capito, ora mi metto all'opera e creo un modulo ad hoc e poi ti fo sapere! grazie 1000

PS: sei invitato al mio concerto a Brescia :-)
cia

piccolo OT.....
'azzo, suoni veramente bene, stavo ascoltando la tua musica mentre buttavo giù il codice..... ma quello che canta "tra sogno e realtà" sei tu?
Ma che 'azzo ci fai tu in mezzo all'informatica?!?! il tuo lavoro è fare il musicista!
Tra l'altro sono un amante degli assoli di Dody Battaglia e quindi capirai bene che amo la chitarra. Se ti capita di venire in alta Toscana, fammi sapere, vengo volentieri ad ascoltarti.

X tutti..... chiedo scusa per OT, ma se lo andate ad ascoltare ed amate la musica, capirete che i complimenti li meritava tutti :-)

Ciao
Gianni

non lo so cosa ci faccio!! me lo dicono tutti ma che ci posso fare, finchè non faccio la botta finale non posso andarmene!! cmq grazie per i complimenti! e se ti serve qualcosa per la chitarra fai un fischio!! ah dimenticavo, nella song canta un amico con la quale collaboro ma al piu presto sentirete quel pezzo in tutte le radio :')

ciao gianni, dopo aver fatto il mio bel modulino (che dopo, casomai qualcuno lo volesse basta chiederlo) arrivo al punto cruciale cioè l'iframe: qui il mio blocco

<?php
function iwregolamenti_block($op='list', $delta=0)
{
    switch (
$op)
    {
        case
'list':
        {
           
$block[0]['info'] = t('Regolamenti Aziendali');
            return
$block;
        }
        case
'view':
        {
           
$block['subject'] = t('Regolamenti');
           
$query = db_query('SELECT * FROM {regolamenti} ORDER BY date');
            while (
$info = db_fetch_object($query ))
            {
               
$block_content[] = l( t($info->link), "files/regolamenti/$info->filename" );
            }
           
$block['content'] = theme('item_list', $block_content);
            return
$block;
        }
    }
}
 
?>

dove posizione il codice iframe? cosi com'è mi apre il pdf nell'intera pagina mentre lo vorrei solo nella parte centrale restando invariati menu in alto e menu a sx!
grazie

Tu, attualmente, selezioni i regolamenti e metti il link al file nel blocco.
Dovresti fare una cosa un po' diversa del tipo:

<?php
       
case 'view':
        {
           
$block['subject'] = t('Regolamenti');
           
$query = db_query('SELECT * FROM {regolamenti} ORDER BY date');
            while (
$info = db_fetch_object($query ))
            {
               
$block_content[] = l( t($info->link), "nomedeltuomodulo/visualizza/$info->fid" );
            }
           
$block['content'] = theme('item_list', $block_content);
            return
$block;
        }
?>

dove, al posto di "nomedeltuomodulo" metterai il nome del modulo che hai creato, e al posto di $info->fid metti l'id del file che vuoi visualizzare (forse è già corretto così, ma non avendo davanti la tua struttura della tabella non so)

A quel punto, nell'hook_menu aggiungi una voce relativa al percorso:
"nomedeltuomodulo/visualizza/$info->fid"

Nella funzione che lanci metterai una variabile $output, valorizzata con l'iframe.... una cosa tipo:

<?php
function nomemodulo_mostrapdf();
.....
$query = db_query('SELECT * FROM {regolamenti} WHERE fid ='.arg(2));
$info = db_fetch_object($query );
$output= "
<iframe src="".
$info->filename."" style="height: 100em" align="right" width="100%">
via a link though.]</iframe>
"
;
return
$output;
?>

P.S.
all'interno dell'iframe in src, ci devi mettere il percorso assoluto

Ciao

allora

<?php
     $items
[] = array('path' => "regolamenti/visualizza/$id",
                      
'title' => t('Visualizza'),
                    
'description' => t('Visualizza.'),
                    
'callback' => '_open_document',
                    
'access' => user_access('administer regolamenti'),
                    
'type' => MENU_LOCAL_TASK
                   
);
?>

<?php
 
case 'view':
        {
           
$block['subject'] = t('Regolamenti');
           
$query = db_query('SELECT * FROM {regolamenti} ORDER BY date');
            while (
$info = db_fetch_object($query ))
            {
               
$block_content[] = l( t($info->link), "regolamenti/visualizza/$info->id" );
            }
           
$block['content'] = theme('item_list', $block_content);
            return
$block;
        }
 
?>

<?php
 
function _open_document()
{
   
//die('ciao');
   
die(arg(2));
    echo
'sono qui/ ' . arg(2) . ' /<br>';
   
$query = db_query('SELECT * FROM {regolamenti} WHERE fid ='.arg(2));
   
$info = db_fetch_object($query );
   
$output= " <iframe src="<a href="http://localhost/iwpaper/files/regolamenti/"" rel="nofollow">http://localhost/iwpaper/files/regolamenti/"</a> . $info->filename . "" style="height: 100em"
              
align="right" width="100%"> via a link though.] </iframe>";
    return
$output;
}
 
?>

mi dice page not found, dove sbaglio! il problema vedo che non entra proprio nella funzione _open_document()!
per adesso lo sto provando in locale su win dopo lo farò con linux ed anche clean url abilitate!

Ma il codice dell'hook_menu?
quel codice che hai postato, stà in un modulo? se sì, mi dici il nome di quel modulo? e possibilmete, mi mandi il codice dell'hook_menu?
il problema è proprio lì, l'aggancio tra funzione ed "url", viene fatta nell'hook_menu

Ciao
Gianni

ok risolto era proprio li il problema nell'aggancio, ora funziona tutto
sei geniale gianni
un beso :-)
cia cia

Renato wrote:

un beso :-)

....a parte mia moglie.... mi capitasse mai una donna che mi dice ciò :-)

ciao
Gianni

allora ti presento qualche amica :-)

continuando sempre:
codice:

<?php
function theme_regolamenti_list($form)
{
   
$attributes = array('width' => '100%');
   
$path = _get_updates_path();
   
$rows = array();
    foreach (
element_children($form) as $key)
    {
       
$row = array();
        if (
is_array($form[$key]['filename']))
        {
           
$row[] = drupal_render($form[$key]['date']);
           
$row[] = drupal_render($form[$key]['link']);
           
$row[] = drupal_render($form[$key]['filename']);
           
$row[] = drupal_render($form[$key]['operations']);
        }
       
$rows[] = $row;
    }
   
$header = array(t('Data'), t('Link'), t('Documento'), t('Operazioni'));
   
$output  = theme('table', $header, $rows, $attributes);
   
$output .= drupal_render($form);
    return
$output;
}
function
regolamenti_list()
{
   
$options = array();
   
$result = db_query('SELECT * FROM {regolamenti} ORDER BY date');
    while (
$info = db_fetch_object($result))
    {
       
$file = _get_updates_path() . $info->filename;
       
$path_parts = pathinfo($file);
       
$form[$info->id]['date'] = array( '#value' => date( "F j, Y, g:i a", $info->date ) );
       
$form[$info->id]['link'] = array('#type' => 'item', '#value' => $info->link );
       
$picture = theme('image', '<a href="http://news.it/files/pdf.gif'" rel="nofollow">http://news.it/files/pdf.gif'</a>, ' ', ' ', array(), TRUE);
       
$form[$info->id]['filename'] = array ('#value' => l($picture, 'files/regolamenti/' . $info->filename));
       
$form[$info->id]['operations'] = array('#value' => l(t('delete '), 'admin/settings/regolamenti/list/confirm/' . $info->id));
    }
    return
$form;
}
 
?>

problema, non riesco a far visualizzare l'iconcina del pf er ogni riga?dove sbaglio..
in pratica non funzia questo

<?php
     $picture
= theme('image', '<a href="http://news.it/files/pdf.gif'" rel="nofollow">http://news.it/files/pdf.gif'</a>, ' ', ' ', array(), TRUE);
       
$form[$info->id]['filename'] = array ('#value' => l($picture, 'files/regolamenti/' . $info->filename));
     
?>

ma il percorso è questo?
http://news.it/files/pdf.gif
......perchè li non c'è nulla, quindi se è quello, è sbagliato

comunque, prova con (D6):

<?php
 theme_image
($_SERVER["DOCUMENT_ROOT"].base_path().file_directory_path().'/pdf.gif', '', t('Logo pdf'));
?>

Che prende l'immagine pdf.gif dal percorso della directory "file" a prescindere dal dominio

Ciao

ho provato cosi:

<?php
$picture
= theme_image($_SERVER["DOCUMENT_ROOT"].base_path().file_directory_path().'/pdf.gif', '', t('Logo pdf'));
       
$form[$info->id]['filename'] = array ('#value' => l($picture, 'files/regolamenti/' . $info->filename));
 
?>

cmq il file si trova in sites/all/themes/admire-gray/pdf.jpg
non va ...va beh lascio eprdere, lascio la scritta "open"
thank you always

Mettilo sotto la tua "files" e vedrai che funziona.

Comunque, esiste anche il "piano B" (da non confondere con il "lato B"):
nel css puoi definire che per ogni .doc, .pdf ecc... venga visualizzata l'immagine di fianco. L'effetto è molto bello perchè lo fa automaticamente ad ogni documento....ma.... c'è sempre un ma..... questo sistema funziona con firefox e su IE dal 7 in su (se hai ie6, ignora queste impostazioni).
Il codice sarà tipo questo (estrapolato da un mio sito):

#attachments tbody tr td a[href$='.pdf']
{
   background-image:url(images/pdf.gif);
   background-repeat:no-repeat;
   background-position:0px;
   padding:4px 0px 4px 20px;
}

Ovviamente devi cambiare il nome della classe e l'url dell'immagine

Ciao
Gianni

questo lo conscevo ma il mio problema è dove metterlo! cioè nella mia funzione! mananggia

hemmmm.... hai ragione, sono io che ho quotato male il codice (per errore ho usato il quoting di php!! e sembra che vada nel codice php)..... quel codice va invece in style.css del tuo tema

P.S.
Ho corretto ora il quoting

Ciao
Gianni

macchè! non va u tubis!! va beh grazie cmq per tutto! mollo! lascio la semplice scritta open!! un abbraccio e buon lavoro