🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.javascript
5 messages
5 total messages Started by Slawek-L Mon, 30 Aug 2010 07:30
Automatyczne dzielenie tekstu na strony
#50226
Author: Slawek-L
Date: Mon, 30 Aug 2010 07:30
37 lines
2516 bytes
Witam,
Robię projekt z wykorzystaniem jquery ui i wymyśliłem
sobie, że treść na stronie będzie prezentowana za pomocą
elementu Tabs - czyli zakładek.
I tu pojawia się pewien problem. Treść będzie pochodziła
prawdopodobnie z jakiegoś CMS-a i będzie wprowadzana przez
jakiegoś laika.
A żeby zakładki funkcjonowały poprawnie treść musi być podzielona na
strony za pomocą elementu div czyli:
<div id="tabs">
   <div id="tabs-1>Treść pierwszej zakładki</div>
   <div id="tabs-2>Treść drugiej zakładki</div>
</div>
itd.
Chciałbym żeby cms dostarczył treść zawartą
w jednym elemencie div, a podział na zakładki
chciałbym wykonać po stronie przeglądarki.

Kombinuje w ten sposób:
Dostaję z serwera plik z jakimś ukrytym
elementem div w którym zawarty jest cały tekst.
W JS pobieram zawartość tego elementu
za pomocą funkcji children(), potem
wykonuję konwersje tego zbioru na
tablicę ( makeArray() ).
Następnie w pętli kopiuje kolejne elementy
tablicy z powrotem do jakiegoś innego div-a
i po każdym elemencie sprawdzam czy ten docelowy div
ma już odpowiednią wysokość ( outerHeight , jeśli tak to
kopiuje ten tekst do zakładki itd.
Czy to ma szansę działać?
I czy nie ma jakiegoś innego prostszego i szybszego
sposobu? Boję się, że jeśli trafi się np. jakiś dłuższy
paragraf tekstu to procedura się posypie.

Pozdrawiam
Sławek-L
Re: Automatyczne dzielenie tekstu na strony
#50227
Author: Slawek-L
Date: Wed, 01 Sep 2010 11:15
43 lines
2580 bytes
W dniu 2010-08-30 09:30, Slawek-L pisze:
> Witam,

Sam sobie odpowiem. :) Może komuś się przyda.


function splitToTabs(fromDiv, tabsDiv, tmpDiv, tabHeight)
{
   var tabIndex = 1;
   var contentArray = new Array;
   var contentIndex =0;
   contentArray = jQuery.makeArray( $(fromDiv).contents().clone() );

   while ( contentIndex < contentArray.length )
   {
     $(tmpDiv).append( contentArray[contentIndex] );
     contentIndex++;
     if ( $(tmpDiv).outerHeight() > tabHeight )
     {
       contentIndex--;
        contentArray[contentIndex] = $(tmpDiv).contents().last();
       $("#tabs-"+tabIndex.toString() ).append( $(tmpDiv).contents() );
       tabIndex++;
       $(tabsDiv).tabs('add', '#tabs-'+tabIndex,tabIndex.toString());
       $(tmpDiv).contents().remove();
     }
   }
   if ( $(tmpDiv).contents() != null )
   {
       $("#tabs-"+tabIndex.toString() ).append( $(tmpDiv).contents() );
   }
}

Działa mniej więcej tak: we fromDiv jest treść do podzielenia,
tabsDiv to element w którym będą zakładki, a tmpDiv to
tymczasowy div służący do przerzucania treści.
tabHeight to wysokość zakładki. Jeśli ta wysokość zostanie przekroczona 
to zostaje utworzona kolejna zakładka i ciąg dalszy jest wrzucany do 
następnych zakładek. tmpDiv musi mieć taką samą szerokość jak docelowa 
kolumna tekstu.

Pozdrawiam
Sławek-L
Re: Automatyczne dzielenie tekstu na strony
#50228
Author: Peter May
Date: Wed, 01 Sep 2010 18:58
46 lines
2438 bytes
W dniu 2010-09-01 13:15, Slawek-L pisze:
> W dniu 2010-08-30 09:30, Slawek-L pisze:
>> Witam,
>
> Sam sobie odpowiem. :) Może komuś się przyda.
>
>
> function splitToTabs(fromDiv, tabsDiv, tmpDiv, tabHeight)
> {
> var tabIndex = 1;
> var contentArray = new Array;
> var contentIndex =0;
> contentArray = jQuery.makeArray( $(fromDiv).contents().clone() );
>
> while ( contentIndex < contentArray.length )
> {
> $(tmpDiv).append( contentArray[contentIndex] );
> contentIndex++;
> if ( $(tmpDiv).outerHeight() > tabHeight )
> {
> contentIndex--;
> contentArray[contentIndex] = $(tmpDiv).contents().last();
> $("#tabs-"+tabIndex.toString() ).append( $(tmpDiv).contents() );
> tabIndex++;
> $(tabsDiv).tabs('add', '#tabs-'+tabIndex,tabIndex.toString());
> $(tmpDiv).contents().remove();
> }
> }
> if ( $(tmpDiv).contents() != null )
> {
> $("#tabs-"+tabIndex.toString() ).append( $(tmpDiv).contents() );
> }
> }
>
> Działa mniej więcej tak: we fromDiv jest treść do podzielenia,
> tabsDiv to element w którym będą zakładki, a tmpDiv to
> tymczasowy div służący do przerzucania treści.
> tabHeight to wysokość zakładki. Jeśli ta wysokość zostanie przekroczona
> to zostaje utworzona kolejna zakładka i ciąg dalszy jest wrzucany do
> następnych zakładek. tmpDiv musi mieć taką samą szerokość jak docelowa
> kolumna tekstu.

I wszystko dobrze, poza tym, że do tego jQuery wcale nie jest potrzebne :P

-- 
Peter
Re: Automatyczne dzielenie tekstu na strony
#50229
Author: Slawek-L
Date: Thu, 02 Sep 2010 08:09
12 lines
1461 bytes
W dniu 2010-09-01 20:58, Peter May pisze:

>
> I wszystko dobrze, poza tym, że do tego jQuery wcale nie jest potrzebne :P
>

Niby nie, ale i tak ten jQuery miałem podczepiony, poza tym
dopiero zaczynam zabawę jQuery wiec jest okazja żeby go sobie
poćwiczyć :).

Pozdrawiam
/Sławek-L
Re: Automatyczne dzielenie tekstu na strony
#50230
Author: Witold Szczerba
Date: Sun, 24 Oct 2010 16:44
42 lines
3153 bytes
On Aug 30, 9:30 am, Slawek-L <Slawek-L@localhost> wrote:
> Witam,
> Robię projekt z wykorzystaniem jquery ui i wymyśliłem
> sobie, że treść na stronie będzie prezentowana za pomocą
> elementu Tabs - czyli zakładek.
> I tu pojawia się pewien problem. Treść będzie pochodziła
> prawdopodobnie z jakiegoś CMS-a i będzie wprowadzana przez
> jakiegoś laika.
> A żeby zakładki funkcjonowały poprawnie treść musi być podzielona na
> strony za pomocą elementu div czyli:
> <div id="tabs">
>    <div id="tabs-1>Treść pierwszej zakładki</div>
>    <div id="tabs-2>Treść drugiej zakładki</div>
> </div>
> itd.
> Chciałbym żeby cms dostarczył treść zawartą
> w jednym elemencie div, a podział na zakładki
> chciałbym wykonać po stronie przeglądarki.
>
> Kombinuje w ten sposób:
> Dostaję z serwera plik z jakimś ukrytym
> elementem div w którym zawarty jest cały tekst.
> W JS pobieram zawartość tego elementu
> za pomocą funkcji children(), potem
> wykonuję konwersje tego zbioru na
> tablicę ( makeArray() ).
> Następnie w pętli kopiuje kolejne elementy
> tablicy z powrotem do jakiegoś innego div-a
> i po każdym elemencie sprawdzam czy ten docelowy div
> ma już odpowiednią wysokość ( outerHeight , jeśli tak to
> kopiuje ten tekst do zakładki itd.
> Czy to ma szansę działać?
> I czy nie ma jakiegoś innego prostszego i szybszego
> sposobu? Boję się, że jeśli trafi się np. jakiś dłuższy
> paragraf tekstu to procedura się posypie.
>
> Pozdrawiam
> Sławek-L

To ja się jeszcze tylko zapytam: po co takie coś? Jakoś nie widzę
sensu dzielenia na zakładki treści tylko dlatego, że się nie mieści w
pionie - od tego jest właśnie pasek przewijania...
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads