Blocco pdf

Posts: 187
Iscritto il: 14 Dic 07

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

AllegatoDimensione
esempio.JPG25.2 KB
__________________

Posts: 475
Iscritto il: 09 Giu 05
Sviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneModeratore di Drupal ItaliaRedattore di Drupal Italia. Contribuisco a manuali

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


Posts: 187
Iscritto il: 14 Dic 07

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

__________________

Posts: 475
Iscritto il: 09 Giu 05
Sviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneModeratore di Drupal ItaliaRedattore di Drupal Italia. Contribuisco a manuali

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


Posts: 187
Iscritto il: 14 Dic 07

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 Smiling
cia

__________________

Posts: 475
Iscritto il: 09 Giu 05
Sviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneModeratore di Drupal ItaliaRedattore di Drupal Italia. Contribuisco a manuali

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 Smiling

Ciao
Gianni


Posts: 187
Iscritto il: 14 Dic 07

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 :')

__________________

Posts: 187
Iscritto il: 14 Dic 07

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

__________________

Posts: 475
Iscritto il: 09 Giu 05
Sviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneModeratore di Drupal ItaliaRedattore di Drupal Italia. Contribuisco a manuali

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


Posts: 187
Iscritto il: 14 Dic 07

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=\"http://localhost/iwpaper/files/regolamenti/" . $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!

__________________

Posts: 475
Iscritto il: 09 Giu 05
Sviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneModeratore di Drupal ItaliaRedattore di Drupal Italia. Contribuisco a manuali

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


Posts: 187
Iscritto il: 14 Dic 07

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

__________________

Posts: 475
Iscritto il: 09 Giu 05
Sviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneModeratore di Drupal ItaliaRedattore di Drupal Italia. Contribuisco a manuali

Renato wrote:

un beso :-)

....a parte mia moglie.... mi capitasse mai una donna che mi dice ciò Smiling

ciao
Gianni


Posts: 187
Iscritto il: 14 Dic 07

allora ti presento qualche amica Smiling

__________________

Posts: 187
Iscritto il: 14 Dic 07

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', 'http://news.it/files/pdf.gif', ' ', ' ', 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', 'http://news.it/files/pdf.gif', ' ', ' ', array(), TRUE);
           
       
$form[$info->id]['filename'] = array ('#value' => l($picture, 'files/regolamenti/' . $info->filename));
     
?>

__________________

Posts: 475
Iscritto il: 09 Giu 05
Sviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneModeratore di Drupal ItaliaRedattore di Drupal Italia. Contribuisco a manuali

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


Posts: 187
Iscritto il: 14 Dic 07

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

__________________

Posts: 475
Iscritto il: 09 Giu 05
Sviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneModeratore di Drupal ItaliaRedattore di Drupal Italia. Contribuisco a manuali

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


Posts: 187
Iscritto il: 14 Dic 07

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

__________________

Posts: 475
Iscritto il: 09 Giu 05
Sviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneModeratore di Drupal ItaliaRedattore di Drupal Italia. Contribuisco a manuali

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


Posts: 187
Iscritto il: 14 Dic 07

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

__________________

Condividi contenuti