Odsazování v diskusích s reakcemi
Diskuse s reakcemi je možné zobrazovat pomocí odsazení (k vidění např. i na těchto stránkách). Pro odsazení je možné použít buď vnořené HTML seznamy nebo jednoduché nastavení levého okraje pomocí stylu.
Problém nastane tehdy, když se diskuse příliš zanoří – přílišné odsazení může způsobit zúžení rámečku s diskusním příspěvkem do odpudivé úzké nudle. Jak se tento problém dá řešit?
- První možností je nastavit maximální hloubku odsazení. Problém s tímto přístupem spočívá v tom, že sled reakcí po dosažení tohoto maxima není vidět.
- Druhou možností je postupně zmenšovat velikost odsazení. Toho se dá dosáhnout např. použitím logaritmické funkce.
Výpočet odsazování na tomto blogu jsem změnil z min(30, 3*$hloubka)
na 10 * log(3 + $hloubka) - 10
(v jednotkách ex
). Dříve maximálního odsazení 30 při hloubce 10 by se tedy nyní dosáhlo až při hloubce 51 (doufám, že se to nerozhodnete v diskusi vyzkoušet).
Diskuse
No ... ale proč to nevyzkoušet? Co je to za ukázku bez praktického příkladu? :) Reagujte!
9.3.2009 08:01:25
MArtin:
správně. ukázka kódu bez ukázky výsledku nemá smysl..
9.3.2009 08:08:22
MArtin:
ano
9.3.2009 08:08:32
MArtin:
správně
9.3.2009 08:08:41
MArtin:
přesně tak
9.3.2009 08:08:47
MArtin:
uff
9.3.2009 08:08:51
MArtin:
klikyty klik
9.3.2009 08:08:57
MArtin:
blah mlah
9.3.2009 08:09:05
MArtin:
tudle mudle
9.3.2009 08:09:13
MArtin:
jsem spamer
9.3.2009 08:09:18
MArtin:
huhly muhly
9.3.2009 08:09:29
MArtin:
už nemám sil..
9.3.2009 08:09:44
bzuK:
Příště článek na téma - jak ztížit přístup spamerům
9.3.2009 08:10:40
bzuK:
úroveň 14
9.3.2009 08:11:15
Zatím to vychází hezky, moc pěkné Jakube ;)
9.3.2009 08:25:43
RoW:
Zatiaľ to funguje! :-)
9.3.2009 08:29:35
Lukyer:
Pekne pekne
9.3.2009 08:50:09
fido:
super, asi take zavedu
9.3.2009 08:59:17
kesspess:
Další reakce aneb pokračování ve grafu logaritmické funkce :)
9.3.2009 09:06:11
MArtin:
Jenže jsme ve dvacáté úrovni a už začíná být patrná hlavní nevýhoda tohoto řešení - některé úrovně začínají být nerozlišitelně odsazené.
9.3.2009 09:43:55
MArtin:
Dívejte se...
9.3.2009 09:44:19
MArtin:
pokus
9.3.2009 09:44:59
d:
dalsi pokus
9.3.2009 13:09:20
Fry:
a dalsi
9.3.2009 14:03:08
Pavel:
Ještě pár zanoření :)
9.3.2009 14:06:03
Pavel:
Ještě pár zanoření :)
9.3.2009 14:06:14
Pavel:
Ještě pár zanoření :)
9.3.2009 14:06:20
Tom:
Ještě kousek!
9.3.2009 14:52:57
frantisek:
a jeste!
9.3.2009 14:57:41
VasaB:
Pořád to vypadá dobře :)
9.3.2009 15:11:42
tomh:
Přitlačíme...
9.3.2009 16:52:24
Tak kde to vázne?
9.3.2009 23:18:06
A:
Chi Chi
10.3.2009 01:00:30
Mirek:
Nový den ... tak jedem :o)
10.3.2009 01:53:46
kodl:
no taky jsem zvedavy
10.3.2009 02:57:05
Andrew:
Tak jaká je limita.
10.3.2009 03:34:11
Mirek:
limita ... řekl bych 1em + 10px
10.3.2009 04:54:35
Mirek:
.. ahh .. omlouvám se ... padá to jinam ... ach já nemehlo ... můžete to prosím smazat? tedy od Nikdo? :o) Díky
10.3.2009 04:57:19
Mirek:
šmakote 8-O
10.3.2009 04:57:54
Vypadá to, že to funguje výborně, díky za tip na řešení :-).
10.3.2009 05:45:30
dlouhá reakce:
Есть у нас на работе инженер Андрюша. И вот как-то вечером Андрюша
нарезался вдрызг. И уже утром, листая список набранных номеров, с ужасом
и больной головой видит, что он звонил начальнику. Он ему перезванивает,
и между ними состоялся диалог:
- Константинович, я вам вчера звонил?
- Звонил.
- И что я хотел?
- Не знаю. Я по-инопланетянски не понимаю.
Давно это было, лет 10 назад, не меньше - сейчас "ручными" насосами для
подкачки колес почти уже никто не пользуется...
Еду я как-то вечерком по Питеру не спеша, движения почти нет. На
противоположной стороне широкого проспекта 2 дамы возле стоящей машины
"качают колесо" ручным насосом. Чувствую, что-то не так...
останавливаюсь... подхожу - качают так, как будто сопротивления воздуха
нет вообще. Извиняюсь, спрашиваю, хорошо ли они знакомы с этим
процессом, т. к. мне кажется, что у них неисправен насос. Они говорят,
что "раньше не пробовали, но не видят в этом ничего сложного". Прошу
разрешения осмотреть насос - насос в порядке. Но в вентиле - нет
золотника!!! Говорю, что "вентиль - не в порядке, сейчас принесу новый
золотник". Принес, вкрутил, начал качать - "процесс пошел", радуюсь, что
так удачно для них все обошлось. Вдруг подходит мужик и на ухо мне
говорит: "Да я пока в магазин ходил, специально золотник выкрутил
незаметно, чтобы теща с женой немного потрепались, а то достали уже
своими советами!".
Вчера на огонек заглянула подруга. В какой-то момент разговор зашел про дачу. Она меня и спрашивает, мол, я тебе не рассказывала, как однажды пропалывала помидоры? Нет, грю. Далее от 1-го лица:
- Прошлым летом было. Приехали с матерью на дачу, она мне и говорит, мол, доча, иди поухаживай за помидорными кустиками. Они там - в середине огорода, всего 4 куста. Ну я и пошла искать эти помидоры, а сама не помню хоть убей, как они выглядят... Наконец нашла что-то похожее, потерла пальцами листик - запах специфический, ну, думаю - то самое. И давай их там окучивать и пропалывать, кустики подвязывать... Смотрю по ходу дела, а их там далеко не четыре - кустов 13 -15-надцать. Копаюсь, значит, потею... Минут через 40, слышу мать орет:- Ну ты чего та копаешься? Уже давно закончить должна была... Отвечаю, что кустов тут далеко не 4 штуки, а гораздо больше. Мать, видимо сильно удивившись, отправила ко мне брата, посмотреть, что я делаю. А тот пришел и упал ржать. Оказалось я час про@балась над... пятаком дикорастущей конопли... Помидоры были дальше...
Реальность поражает. Американская компания, ведущая
строительство стены на границе США с Мексикой с целью остановить
нелегальную иммиграцию, был оштрафована за использование труда
нелегальных мексиканских иммигрантов.
11.3.2009 10:28:59
RoW:
A este sa raz pridavam k testovaniu :-)
11.3.2009 14:51:39
bim bam
13.3.2009 06:26:54
místo pravítka by mohlo být použito pozadí se svislými čarami (viz dále - aneb, toto je reakce na příspěvek o 2 úrovně pod tím mým (tedy, alespoň v době vložení :-/ )).
14.3.2009 04:04:52
Nějak to tu začíná vymírat, není to škoda?
14.3.2009 09:07:52
No vida, zrovinka jsem narazil na subpixelovou limitu ;-) Že by jsem byl už ponořen pod hloubku 51? Nechce se mi to počítat...
14.3.2009 09:14:02
Nenarazil, jen jsi omylem reagoval na macha a ne na pojízdnou kočku. Mimochodem, vzhledem k tomu, že jednotky jsou relativní (ex), tak subpixelová limita neexistuje (záleží jen na zvětšení). A hloubka 51 není maximální, jen odpovídá dřívějšímu maximu.
14.3.2009 17:49:44
XX:
sddsds
1.4.2009 08:38:36
XX:
sddsd
1.4.2009 08:38:43
XX:
sdsdsdd
1.4.2009 08:38:48
ggg:
:-))) invisible steps, perfect
12.9.2010 17:38:16
nice one:
test
20.10.2010 22:17:52
nice one one more time:
again
20.10.2010 22:18:22
rofl:
No neke
12.11.2010 13:36:45
Otas:
Pokus2
23.3.2009 08:51:14
Ten graf je fakt hezký! Výborný nápad :-)
A to varování je jak v obecné škole, což? :-P
9.3.2009 10:00:25
Mirek:
vzal jsem si pravítko, abych se podíval, k čemu to byla reakce
10.3.2009 01:55:10
Mirek:
možná by to řešilo vkládáná rámečků do sebe
10.3.2009 01:58:32
Mirek:
pak ale stačilo držet se stálé hodnoty odsazování bez ohledu na hloubku (o 2-3px), rámešky mohou mít staále tmavší podklad (jen o stupínek), ale to ani není nutné ... co je asi nutné, aby rámeček vzkazu, na který bylo více přímých rakcí (uzel větvení) byl výraznější (černý) a ostatní méně ... anebo víte co? Vždyť u souvislého řetězce vlastně není odstupňování nutné - stačí to, jak jsou řazeny za sebou - odstupňování je vlastně nutné jen v místě větvení vlákna
10.3.2009 02:08:14
Odstupňování je nutné proto, aby se rozpoznala reakce na reakci od reakce na stejného rodiče.
10.3.2009 15:00:14
u takhle rozsáhlých diskuzí by možná stálo za to zaznamenávat nejen odsazení, ale i na koho kdo reaguje a poskytnout to čtenáři ve formě anchoru.
14.3.2009 04:12:39
ggg:
bingo
12.9.2010 17:39:39
Martin:
Zajímavější by byl příklad, jak toto řazení udělat co nejefektivněji v PHP / MySQL
9.3.2009 08:57:27
Je to popsané v odkázaném článku. Použít se dá buď struktura (pořadí, hloubka) nebo traverzování kolem stromu.
9.3.2009 08:59:30
ja:
reaguju
7.5.2009 03:29:59
bzuK:
Dobrý nápad, jsem také pro praktické vyzkoušení :-)
9.3.2009 08:09:16
Třeba tady u bzuka není moc poznat, na koho reaguje :)
9.3.2009 11:59:01
pmg:
Jak by to asi vypadalo se sinusoidou? :-)
9.3.2009 08:27:56
Mirek:
asi jako každý JO-JO
10.3.2009 01:55:46
kapcus:
velmi dobry a jednoduchy napad! diky
9.3.2009 08:51:57
Heh. S timhle jsem si lamal taky hlavu, nakonec jsem se vyhnul matematice a proste omezil pocet vnoreni, jak pises jako prvni moznost.
9.3.2009 11:03:46
Jednoduše geniální !
9.3.2009 12:41:31
Zdravím,
diskusie s reakciami OK, odsadzovanie OK, ale ako by ste teoreticky riešili stránkovanie? Mne napr. vadí na mnohých servroch že je jedno vlákno rozdelené do viacero podstránok. Máte niekto nejaký dobrý nápad?
9.3.2009 18:34:30
Pokud někomu vadí délka diskuze, ale nechce stránkovat, může diskuzi uzavřít do HTML elementu, kterému nastaví max. výšku a vertikální scroll. Jinak se asi stránkování či jinému druhu skrývání části příspěvků nevyhneš.
Jinak funkce pro změnu odsazení moc hezká ... pro změnu v případě odsazovaného a zanořovaného seznamu (ul ...) - tedy potřeba postupně menšího odsazování od nadřazeného seznamu - doporučuji např. použití fce y/x (kdy y je zvolená konstanta a x je hloubka zanoření s případnými úpravami - např. používám pro první dvě zanoření 2.5em a dále dle hloubky zanoření 5/(x - 1) - tedy pro třetí zanoření taktéž 2.5em a dále stále více se blížící k nule.
<?php
if ((int)$hloubka > 2) {
$margin = 5 / ((int)$hloubka - 1);
} else {
$margin = 2.5;
}
echo '<ul style="margin-left: ' . $margin . 'em;">' . "\n";
?>
Samozřejmě je důležité nastavit i odsazování samotných prvků vnořených seznamů - nejlépe na 0 (odsazování nechat pouze na samotném zanořování a nastavení u ul). Možností a matematických funkcí s podobnou limitou či jinou s podobným využitím je samozřejmě více a záleží na každém co a jakým stylem použije ;)
9.3.2009 19:33:00
bukowski:
A dalsi problem je pri strankovani aby se zobrazovali od nejnovejsich na to vypis podle sloupce poradi taky nejde.
25.3.2009 15:16:29
Pavel:
A jak teda na stránkování pokud bych se rozhodl použít takovou strukturovanou diskusi
10.3.2009 00:05:27
Neměl bys porušit strukturu či když už jí porušit, tak na další stránce začít tak, aby bylo jasné, na co je reagováno. To je na další zamyšlení, zda strukturovanou diskuzi a jakým způsobem vůbec oddělovat. Pro podobný účel je možná vhodnějším řešením buď daný element s nastavenou max. výškou (ne šířkou, jak jsem psal v noci :) ), nebo výpis bez struktury s odkazy na příspěvky, na které je reagováno. Osobně doporučuji používat i u strukturované diskuze na co je reagováno, protože i zde je vidět, že hlubším odsunutím příspěvku se poté ztrácí návaznost (jak je v diskuzi zmíněno, není např. moc jasné na co reaguje bzuK (
http://php.vrana.cz/odsazovani-v-diskusich-….php#d-7804).
10.3.2009 01:39:21
Mirek:
nikdo?
10.3.2009 04:55:22
Mirek:
nechce ...
10.3.2009 04:55:32
Mirek:
pokračovat?
10.3.2009 04:55:40
Mirek:
jsem
10.3.2009 04:55:47
Mirek:
snad
10.3.2009 04:55:53
Mirek:
jediný
10.3.2009 04:56:00
Mirek:
kdo
10.3.2009 04:56:05
bukowski:
pokračuje
22.3.2009 10:25:28
pmg:
Kdybych byl článek nečetl, myslel bych si, že se něco dává zadarmo. :-)
10.3.2009 13:08:00
ale jo, výborné rady přece... :)
12.3.2009 05:08:29
1. A je to (sémanticky) tak, že reakce na hlouběji zanořený příspěvek je „méně významná”?
2. A druhá otázka, na kterou bych se položila, je tato - Není lepší udělat:
<style type="text/css">/*<![CDATA[*/
<?php
for($i=0;$i<=99;$i++){
$x=10 * log(3 + $i) - 10;
echo".indent-$i{margin-left:".round($x,4)."ex;}\n";
}
?>
/*]]>*/</style>
...
<div class="diskuse indent-1">MArtin: ano</div>
<div class="diskuse indent-2">MArtin: správně</div>
<div class="diskuse indent-3">MArtin: přesně tak</div>
<div class="diskuse indent-4">MArtin: uff</div>
Chtěla bych znát váš názor, jestli dávat odsazení přímo do style="" nebo takto přes kaskádové styly.
Na první pohled je zřejmé, že nevýhoda tohoto způsobu je v přidaném kódu, naopak výhoda v tom, že (za určitých okolností) by se daly boxy s příspěvky přestylovat, právě proto, že u nich není style použit explicitně.
Co si o tom myslíte?
14.3.2009 03:58:00
lix:
podle me je to uplne jedno, hlavne ze to funguje a plni ucel.
25.3.2009 15:47:25
Denis:
Myslim ze je to dobry napad
26.1.2012 20:56:46
Michal Kleiner:
Co by spíš mohlo být zajímavé tak předávat si nějakou css pseudotřídu s ID rodiče a umožnit rozbalit/sbalit všechny děti pomocí jednoduchého js, pak by se i v dlouhé struktuře dalo lépe orientovat.
19.3.2012 09:47:16
Na vláknu jako je toto musím být jedním z testujících uživatelů :-)
2.8.2012 15:38:36