Modificare css Will Paginate

Salve baldi giovani,
Ho installato la gem will paginate:

In fondo alla documentazione consigliano link dove prendere spunto per
modificare il layout della propria pagination, come questo link:
http://www.smashingmagazine.com/2007/11/16/pagination-gallery-examples-and-good-practices/

Bhe io avrei scelto di modificare la mia pagination come in fondo a
questo sito: Deprecated - Drupal.org infrastructure | Drupal.org

Se ho capito bene il sistema della pagination, mi genera un html in
automatico che io non posso modificare, ma limitarmi solo a generare
le classi css contenute. Giusto?

ho dato uno sguardo al sorgente della mia pagination di default che è
così:[CODE]

« Previous 1 2 Next »
[/CODE]

mentre l’html della pagination che vorrei realizzare
è così:[CODE]

<li class="pager-item"><a href="/forum/12?page=6" title="Go to page

7" class=“active”>7

  • 8

  • 9


  • next ›

  • last »
  • [/CODE]

    Quindi a primo acchitto penso sono fregato… questa paginazione sua
    ul ed li, mentre la mia di default usa gli span!!!
    Come diavolo faccio???

    Ecco perchè vi scrivo! Svelatemi l’arcano please!

    Un Ringraziamento in anticipo a chiunque mi possa aiutare.
    Ciao


    JellyBellyWeb
    [email protected]

    Il giorno 06 agosto 2009 13.35, JellyBellyWeb[email protected]
    ha scritto:

    Quindi a primo acchitto penso sono fregato… questa paginazione sua
    ul ed li, mentre la mia di default usa gli span!!!
    Come diavolo faccio???

    potresti modificare gli helper, che trovi in
    /vendor/plugins/will_paginate/lib/will_paginate/view_helpers.rb;
    tuttavia,
    perché?immagino che il tuo scopo sia ottenere l’effetto visivo che usa
    drupal, non il suo markup.

    tra l’altro mi sembra che, nella pagina che hai linkato, lo stile sia
    applicato all’elemento a, non al li (e comunque anche in quel caso
    basterebbe fare un copia e incolla mirato).

    che so,

    .pagination a {
    padding: 2px 5px;
    background:#dfedf7;
    border:1px solid #90c2e1;
    -moz-border-radius:2px;
    -webkit-border-radius:2px;
    }

    (copiato pari pari da drupal).
    ah, .pager li contiene “padding: 0.5em;”, che tu potresti sostituire
    con “margin: 0.5em;” in .pagination a, ottenendo pressocché lo stesso
    risultato.

    fidati, se ci aggeggi abbastanza puoi ottenere quasi qualunque
    effetto; se proprio devi fare qualcosa di strano, allora modifica gli
    helper. quel view_helpers.rb a tutta prima sembra complicato, ma se
    cerchi, che so, span, trovi il metodo che disegna lo span; lo
    modifichi perché disegni ul, div o qualunque altra cosa ed è fatta;
    idem per i link.

    in particolare, i link vengono scritti dal metodo page_link:
    def page_link(page, text, attributes = {})
    @template.link_to text, url_for(page), attributes
    end

    e allora basta che fai:
    def page_link(page, text, attributes = {})
    link = @template.link_to text, url_for(page), attributes
    “<li class="pager-item">#{link}”
    end

    ed è fatta.

    a rischio di sembrare pedante, ripeto: modifica gli helper solo se
    veramente devi: vedrai che modificando lo stile riesci a fare tutto.

    pietro

    Il giorno 06/ago/09, alle ore 13:59, Pietro G. ha scritto:

    potresti modificare gli helper, che trovi in
    /vendor/plugins/will_paginate/lib/will_paginate/view_helpers.rb;
    tuttavia, perché?
    immagino che il tuo scopo sia ottenere l’effetto visivo che usa
    drupal, non il suo markup.

    Il mio scopo era di fare entrambi! :smiley:
    Per quanto riguarda il copia e incolla mirato del css c’ero arrivato,
    ma non credevo che potessi assegnare lo stesso style all’elemento a e
    devo dire che mi sei stato di grandissimi aiuto!

    .pagination a {
    padding: 2px 5px;
    background:#dfedf7;
    border:1px solid #90c2e1;
    -moz-border-radius:2px;
    -webkit-border-radius:2px;
    }

    La paginazione così è davvero bellissima! :wink:

    a rischio di sembrare pedante, ripeto: modifica gli helper solo se
    veramente devi: vedrai che modificando lo stile riesci a fare tutto.

    pietro

    Il problema è che la pagination di defaul non ha tutte le
    caratteristiche che vorrei.
    Quella di default non ha il bottone “First” e “Last”, ma soltando
    “Previus” e “Next”, poi non ha nemmeno la gestione dei “…”
    Per far questo credo proprio che si debba modificare l’helper giusto?
    Io dentro vendor/plugin non ho will_paginate perchè ho installato la
    gem via sistema e non per il singolo progetto, ma ora ho eseguito un bel
    rake gems:unpack:dependencies
    e ora in vendor ho gems/will_paginate con il suo bell’helper da
    modificare, ma come?
    Conoscete qualche guida alla personalizzazione di will_paginate oppure
    mi sai essere di aiuto tu o altri?

    Grazie ancora infinite!
    Adoro questa ml e la leggo sempre con molto interesse!


    JellyBellyWeb
    [email protected]

    Il giorno 06 agosto 2009 14.44, JellyBellyWeb[email protected]
    ha scritto:

    Il problema è che la pagination di defaul non ha tutte le
    caratteristiche che vorrei.
    Quella di default non ha il bottone “First” e “Last”, ma soltando
    “Previus” e “Next”, poi non ha nemmeno la gestione dei “…”

    per “…” intendi quando ci sono tante pagine?

    se sì, will_paginate ce l’ha:

    http://www.uploadscreenshot.com/image/40599/3968636

    (non so quanto durerà lo screenshot, l’ho caricato sul primo risultato
    google per upload screenshot)

    il tutto si regola tramite due opzioni, inner_window e outer_window,
    debitamente spiegati nell’help.

    come vedi, anche se non c’è First e Last, la prima e l’ultima pagina
    sono sempre mostrate.

    se ti serve che ci siano proprio un link First e un link Last,
    dovrebbe bastare una modifica molto semplice al metodo
    LinkRenderer::to_html: subito prima della riga
    html = links.join(@options[:separator])

    dovresti aggiungere in cima e in coda alla lista links i link per la
    prima e per l’ultima pagina rispettivamente; non dovrebbe essere
    complicatissimo, ma al momento non ho tempo per fare prove.

    ti è proprio indispensabile?

    può essere un ottimo esercizio didattico, per prendere familiarità con
    gli helper; infilare le mani fino al gomito nel codice altrui è anche
    un modo per acquisire confidenza, nel senso che alla fine ti rendi
    conto che sono solo istruzioni ruby, non c’è niente da temere.

    tieni conto però che facendo modifiche non strettamente indispensabili
    a prodotti esterni rischi di legarti a una certa versione: l’indomani
    magari l’autore pubblica la nuova versione in cui è tutto diverso, e
    la tua modifica smette di funzionare.

    pietro

    Il giorno 06/ago/09, alle ore 15:30, Pietro G. ha scritto:

    debitamente spiegati nell’help.
    Grazie mille per la dritta, mi era proprio sfuggito quel pezzo della
    documentazione! :wink:

    prima e per l’ultima pagina rispettivamente; non dovrebbe essere
    a prodotti esterni rischi di legarti a una certa versione: l’indomani
    magari l’autore pubblica la nuova versione in cui è tutto diverso, e
    la tua modifica smette di funzionare.

    pietro

    Purtroppo non sono riuscito a fare l’esercizio didattico… :frowning:
    Ho iniziato a fare delle prove, ma al momento del salvataggio, non me
    lo permette… credo per via del freezz… vorrà dire che installerò
    il plugin e smanetterò! :smiley:

    Grazie ancora per l’aiuto!
    Ciao


    JellyBellyWeb
    [email protected]