MozillaPL.org - polskie centrum Mozilli

Główne menu:

Sugestia dotycząca formatowania bloku "code"

Forum związane z serwisem Zespołu MozillaPL. Propozycje dotyczące organizacji prezentowanych danych, udostępnianych artykułów, podejmowanych tematów

Moderator: Pomocy?!

Sugestia dotycząca formatowania bloku "code"

Postautor: Grzegorz » 27 sierpnia 2007, 22:47

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.2; pl; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6

Jestem za tym, żeby do arkusza stylu dla class="code" dodać:

Kod: Zaznacz cały
   padding: 10px;
   max-width: 420px;
   overflow:auto;


Wówczas za długie linijki nie będą rozjeżdżać niepotrzebnie całego layoutu forum (pojawią się odpowiednie suwaki). Zaś odstęp 10px od brzegów poprawi czytelność.
GnuPG. Podpisuję własne wypowiedzi. | TrueCrypt. Ufam kryptografii, nie państwu. | Tor. Dbam o swoją prywatność. | OTR. Moje rozmowy nie są podsłuchiwane.

Załóż konto lub kup domenę WWW z linka polecającego: http://www.hekko.pl/?ref=34295
Grzegorz
Moderator
 
Posty: 7486
Z nami od: 15 kwietnia 2007, 12:33

Postautor: Mirek » 28 sierpnia 2007, 13:23

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6

Popieram :-) - przy pisaniu tematu o skryptozakładkach straciłem z kilka-kilkanaście minut na wstawianie samych spacji, żeby przy szerokości okna ok. 800px pozawijało linijki i nie rozwalało dzięki temu layoutu.
Natomiast w przypadku długich linków wewnątrz [ code ] wstawianie spacji już w ogóle nie wchodzi w grę...
Mirek
Moderator
 
Posty: 2156
Z nami od: 09 sierpnia 2007, 20:37

Postautor: Grzegorz » 28 sierpnia 2007, 15:13

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.2; pl; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6

Zrobiłem sobie skrypt dla GM (przy użyciu Platypusa)... W założeniu ma ograniczać wielkość <CODE>, z tym, że kod nie jest wstawiany w DIV a jest komórką tabeli...

I zasadniczo udało mi się wymyślić zamianę:
Kod: Zaznacz cały
<td class="code">

na:
Kod: Zaznacz cały
<td class="code"><div style="max-width: 700px !important; overflow:auto !important;">


Ale nie wiem dlaczego nie działa...
GnuPG. Podpisuję własne wypowiedzi. | TrueCrypt. Ufam kryptografii, nie państwu. | Tor. Dbam o swoją prywatność. | OTR. Moje rozmowy nie są podsłuchiwane.

Załóż konto lub kup domenę WWW z linka polecającego: http://www.hekko.pl/?ref=34295
Grzegorz
Moderator
 
Posty: 7486
Z nami od: 15 kwietnia 2007, 12:33

Postautor: Mirek » 20 września 2007, 23:54

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7

Właśnie piszę powoli dalszy ciąg skryptozakładek i przypomniał mi się ten temat - jakoś przegapiłem twoją ostatnią wypowiedź, Grzegorzu.

Moje rozwiązanie w postaci (of course :P) skryptozakładki (napisanej w oparciu o sugerowaną modyfikację na forum phpBB mod. by Przemo) wygląda tak:
Kod: Zaznacz cały
javascript:(function(){codes=document.getElementsByTagName('td');for(i=0;i<codes.length;++i){if(codes[i].className=='code'){codes[i].innerHTML='<div style="overflow: auto; width: 100%">'+codes[i].innerHTML+'<br /><br /></div>';}    }})()

Specjalnie napisana tak by rozwalała layout - i można było przetestować na miejscu :D
Czyli prawie to samo co u Ciebie. Bo domyślam się, że o </div> na końcu nie zapomniałeś (choć FF by się tu chyba akurat dobrze domyślił).
Dodatkowo przed zamykającym divem dodałem jeszcze dwa "be-ery" - żeby się zmieścił ewentualny pasek przewijania (bo inaczej trzeba się domyślać, że tekst da się przewinąć... - zwłaszcza przy jednolinijkowych kodach zawierających np. link)
Kod: Zaznacz cały
--0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789--


http://www.DLUGI_TESTOWY_LINK.asdghasdg ... sjgh/i.php

Poza "rozbuchanym" [ code ] layout rozwalić potrafią też zwykłe (choć niezwykle długie) linki - może przeoczyłeś jakiś? - ale i na to jest rada:
Kod: Zaznacz cały
javascript:(function(){linki=document.getElementsByTagName('a');for(i=0;i<linki.length;++i){linkih=linki[i].innerHTML;  if(linkih.length>100 && (linkih.indexOf('<img')<0 || linkih.indexOf('<img')>15)){linki[i].innerHTML=linkih.substr(0,30)+'...'+linkih.substr(-30);}    } document.body.innerHTML=document.body.innerHTML;})()

Ostatnia komenda może wydawać się bez sensu, ale bez niej jakoś się nie aktualizuje szerokość strony.
Niestety istnieje mała szansa, że w specyficznej sytuacji popsuje się coś wewnątrz jakiegoś innego linku oraz w pewnych - też szczególnych - okolicznościach może nie zadziałać - ale nie widzę sensu, żeby się aż tak rozdrabniać nad wszystkimi przypadkami - zwłaszcza, że w razie potrzeby wystarczy przeładować stronę i przemęczyć sie chwilkę z rozwalonym układem (heh - tak a propos - słyszałem, że to PiZ "rozwala układy" - ale i na nich znajdzie się... skryptozakładka ;-) ).

Jeszcze do "rozwalaczy" należą długie wyrazy - na to jeszcze nie mam uniwersalnego i w pełni zautomatyzowanego bookmarkleta.
Osobiście testowałem powyższe skrypciki na temacie: http://mozillapl.org/forum/about-31808.html - gdzie występują wszystkie 3 problemy)
Na długie teksty można użyć:
Kod: Zaznacz cały
javascript:(function(){ dozm=prompt('Podaj tekst do zamiany w obrebie strony', '________________________________'); zmna=prompt('Na co zamienic?', '_'); rdozm=new RegExp(dozm, "g"); document.body.innerHTML=document.body.innerHTML.replace(rdozm, zmna); })();

(wartości domyśle dostosowane dla wspomnianego tematu, gdzie "rozwalaczem" jest długa linia: __________________________________...
Pierwsze dwa naprawiacze połączyłem w jedno i wygląda to tak:
Kod: Zaznacz cały
javascript:(function(){codes=document.getElementsByTagName('td');for(i=0;i<codes.length;++i){if(codes[i].className=='code'){codes[i].innerHTML='<div style="overflow: auto; width: 100%">'+codes[i].innerHTML+'<br /><br /></div>';} } linki=document.getElementsByTagName('a');for(i=0;i<linki.length;++i){linkih=linki[i].innerHTML;  if(linkih.length>100 && (linkih.indexOf('<img')<0 || linkih.indexOf('<img')>15)){linki[i].innerHTML=linkih.substr(0,30)+'...'+linkih.substr(-30);}    } document.body.innerHTML=document.body.innerHTML; })()


Jeszcze można by się zająć za dużymi obrazkami - i je przeskalowywać ustawiając odpowiednio width i height - ale to już chyba kiedy indziej...

A chciałem tylko napisać - że może nie działa Ci wspomniana zamiana td na td-div, ponieważ są jeszcze długie linki i długie teksty...

Pozdrawiam,
Mirek
Mirek
Moderator
 
Posty: 2156
Z nami od: 09 sierpnia 2007, 20:37

Postautor: Grzegorz » 21 września 2007, 02:02

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.8.1.6) Gecko/20070919 Ubuntu/7.10 (gutsy) Firefox/2.0.0.6

Sporo pracy (-: Jutro z rana z pewnością dodam i wybróbuję skryptozakładkę.

Mirek pisze:może nie działa Ci wspomniana zamiana td na td-div, ponieważ są jeszcze długie linki i długie teksty...

Sęk w tym, że jak zapiszę stronę na dysku i ręcznie wyedytuję kod wstawiając DIVy wszystko wygląda poprawnie, niezależnie od tego czy będzie tam tylko tekst czy linki, czy wszystko. Myślę, że robię błąd gdzieś indziej - tylko nie wiem, gdzie?
GnuPG. Podpisuję własne wypowiedzi. | TrueCrypt. Ufam kryptografii, nie państwu. | Tor. Dbam o swoją prywatność. | OTR. Moje rozmowy nie są podsłuchiwane.

Załóż konto lub kup domenę WWW z linka polecającego: http://www.hekko.pl/?ref=34295
Grzegorz
Moderator
 
Posty: 7486
Z nami od: 15 kwietnia 2007, 12:33

Postautor: Mirek » 21 września 2007, 02:34

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7

GrzegorzJZD pisze:Sęk w tym, że jak zapiszę stronę na dysku i ręcznie wyedytuję kod wstawiając DIVy wszystko wygląda poprawnie, niezależnie od tego czy będzie tam tylko tekst czy linki, czy wszystko.

No raczej nie może zawsze dobrze wyglądać - bo rozumiem, że DIVem obejmujesz tylko to, co jest w komórce "code" - a długie wyrazy i linki, o których pisałem, występują poza tymi komórkami, o np. tu:
http://www.dlugi_testowy_link.asdghasdg ... sjgh/i.php
Myślę, że robię błąd gdzieś indziej - tylko nie wiem, gdzie?

Trudno ocenić (nie widząc :P) - ale może tutaj też potrzebna jest sztuczka z:
Kod: Zaznacz cały
document.body.innerHTML=document.body.innerHTML;
lub jakiś inny sposób na przeładowanie zmodyfikowanej strony...
Mirek
Moderator
 
Posty: 2156
Z nami od: 09 sierpnia 2007, 20:37


Wróć do Serwis MozillaPL.org

Kto jest online

Zarejestrowani użytkownicy: dexter, Google [Bot]

Przejdź do powiązanej strony

Nawigacja:

Stopka: