Autor Zpráva
Nox
Profil
Ahoj,
než na to zapomenu: Jak zavolat další metodu k metodě první?

Na začátky některých řádků se jaksi záhadně přidaly mezery. Text je psaný (kvůli prohlížeči) s mezerami a ne taby.
Je psaný v kuse, nemělo by tedy být použito obnovení z localStorage (pokud si pamatuji dobře - že to je nyní novinka)

Jinak nevím co doplnit
Díky
Trejpa
Profil
Potvrzuji. Už jsem se s tím setkal. Na začátek některých řádků v [pre] mi zdejší zvýrazňovač kódu přidal mezeru. Přepnutí na jinou syntaxi nepomohlo. Důvod nebo pravidlo přidání jsem nerozpoznal. Začalo to zhruba v době nasazení velkých úprav.
Chamurappi
Profil
Myslím, že to nedělá zvýrazňovač kódů, ale převod příspěvku do HTML. Má to trochu zamotanější příčinu.

Pokud je kdekoliv uvnitř příspěvku vynechaný řádek, jak lze ovlivnit výšku této mezery? Běžně zde máme line-height: 140%, což je dobré pro popsané řádky, ale zbytečně velké pro řádky bez textu — příspěvky to docela nafukuje. Před pár lety mě napadlo zmenšit výšku řádku (či velikost písma) u elementu <br>, což zabralo ale jen v části prohlížečů. Letos jsem se rozhodl najít postup provozuschopný ve všech prohlížečích. Nejprve jsem zkoušel nahrazovat vynechané řádky za <div>y s třídou br-2br-4, která určí, jak vysoká má být mezera, ale to bylo ošklivé, nedělalo to dobrotu ve spojení s ostatními BB→HTML náhradami. Postupně jsem se dopracoval k tomu, že všechny sekvence dvou a více <br> obaluji do <span class="br">, což vypadalo jako dokonalé řešení.

Jenže pak někdo zkusil vložit adresu za prázdný řádek a divil se, že se z ní nestal klikatelný odkaz. Detekce adres totiž úmyslně přehlíží adresy započaté okamžitě za znakem > (tedy za koncem nějaké značky), aby nenabořila odkazy vytvořené zápisem [url=adresa]adresa[/url]. Téhle chyby jsem si všiml v den, kdy se měl nasadit sandbox do ostré verze. Prohodit pořadí náhrad z nějakého důvodu nešlo, nejjednodušší záplata, která mě v té době napadla, byla, že přidám za obalující <span class="br"> mezeru. Teprve dnes jsem si uvědomil, že tato mezera bude v <pre> vidět :-)
Str4wberry
Profil
Náhrada nulovou mezerou​ by nezabrala?
Majkl578
Profil
Mezery navíc jsem si všiml (neobjevuje se jen na prázdných řádcích, ale na konci všech). Už už jsem měl v plánu tu napsat, že je celkem otravná a jestli by se jí nešlo zbavit, ale Nox byl rychlejší. :)

Když už je řeč o formátování [pre], odsazuje se mezerami a i vložený kód se na ně převádí, má to nějaký konkrétní důvod? Jsem zvyklý na tabulátory a mezery se mi zdají více otravné (víc znaků, víc mazání při editaci). Nebylo by možné podporovat obojí? (Třeba na Githubu tabulátory fungují).
Chamurappi
Profil
Reaguji na Str4wberryho:
Asi zabrala (byla by to entita a za středníkem se adresa chytí), ale jsi si jistý, že nezůstane v kódu, když si ho člověk zkopíruje?
Spíš přemýšlím o tom, že by ta stávající konstrukce, kdy se nejprve nahradí všechny BB značky (i sekvence několika odřádkování) za HTML řetězce a pak se hledají pohozené adresy s nahrazovacím callbackem rozpoznávajícím DJPW-adresy, zasloužila menší překopání. Pohozené adresy by se měly nahradit za obyčejný odkaz (před nahrazením volných řádků) tak, jak to bylo dříve, a pak by mělo být zavolané nahrazování s callbackem, které ten obyčejný odkaz předělá. Při té příležitosti se může dořešit jeden starší nápad. Mám se do toho pustit, nebo je v něčem háček?


Reaguji na Majkla578:
odsazuje se mezerami a i vložený kód se na ně převádí, má to nějaký konkrétní důvod?
JUSH s tabulátory zatočí tak jako tak. Nebylo pěkné, když kód po naskočení JUSHe poskočil, proto jsem přidal převod na čtyři mezery i do bb_codes.php.

Jsem zvyklý na tabulátory a mezery se mi zdají více otravné
Také jsem o tabulátorech dlouze přemýšlel. Odsazování mezerami bývá většinou považované za hloupé v textových editorech při běžně psaném textu, protože tabulátory jsou obecnější, udržují pevnou linii. Ta jejich obecnost ale v programování není tolik vidět, protože před nimi není nic, jsou na začátku řádku. Myslím, že většina pokročilejších editorů podporuje oba druhy odsazování, takže smazat odsazení jde (třeba) Shift+Tabem, nehledě na to, čím je odsazeno (funguje i ve zdejší <textarea>). Pokud různí lidé používají různé nastavení a různou šířku tabu v editorech, vypadá kód divoce. V prohlížečích (ani v HTML) si nejde nastavit šířku tabu v <pre>, takže je (asi) všude výchozí osmička. Což je na můj vkus docela velké odsazení.
Str4wberry
Profil
nebo je v něčem háček?

Háček je v tom, že skoro každý zásah do bb_codes.php způsobí minimálně jeden další nový problém. :–)
Str4wberry
Profil
Jinak mě napadlo, že by ty odkazy mohl zkusit dosadit přímo JS. Po vložení něčeho, co vypadá jako odkaz, by se podíval do klávesové mapy a prostou URL nahradil za [url=aresa]text odkazu[/url] a potom ještě zkusil, jestli adresa nevypadá jako do diskuse — a zeptal se PHP skriptu na text odkazu + by se mohly otextovat i všechny adresy vedoucí na JPW.

Potom mě ještě napadlo, že by se adresy jako www.example.com, www.neco.cz, www.adresa.cz apod. neměly převádět na odkaz, ale o[pre]ovat. Potom tu budeme mít nejlepší systém pro práci s adresami v diskusním fóru na světě. :–)
Chamurappi
Profil
Zkusil jsem v sandboxu provést tu úpravu, o které jsem psal. Docela dost jsem překopal sestavování odkazů. Prozkoušejte prosím, zda jsem nezpůsobil moc nových problémů :-)


Reaguji na Str4wberryho:
Po vložení něčeho, co vypadá jako odkaz, by se podíval do klávesové mapy a prostou URL nahradil
K čemu by měl využít klávesovou mapu? Že by dohledal k vkládanému textu adresu? Nebo naopak? To by bylo těžší.

zkusil, jestli adresa nevypadá jako do diskuse — a zeptal se PHP skriptu na text odkazu
Asynchronní komunikace se serverem využívaná při psaní příspěvku je ošidná. Kdo ví, kde se zatoulá odpověď — člověk už může začít psát něco jiného a označovat jiné věci na stránce, či chtít začít psát nebo označovat těsně před tím, než přijde odpověď od PHP, a pak se toho ten chudák lekne a umře… ale jo, zkusit to můžeme, uživatelů máme dost.

by se mohly otextovat i všechny adresy vedoucí na JPW
Hotovo. (V sandboxu.)
Zároveň se přidává naprosto všem odkazům do diskuse i na JPW title s nadpisem cílové adresy. Fungují i odkazy na kotvy na obou webech.
Chtěl jsem do title u odkazů na vlákna přidat i kategorii, ale nedaří se mi ji spolehlivě získat.

by se adresy jako www.example.com, www.neco.cz, www.adresa.cz apod. neměly převádět na odkaz, ale o[pre]ovat
Také hotovo. I když to možná bude dělat trošku paseku při editaci, když už budou uvnitř jiného <code>.

Potom tu budeme mít nejlepší systém pro práci s adresami v diskusním fóru na světě. :–)
Hurá! :-)
Petr ZZZ
Profil
Str4wberry:
Náhrada nulovou mezerou​ by nezabrala?
Asi to nevadí, ale V IE6 vidím čtvereček, zřejmě tu entitu nezná.
Str4wberry
Profil
Reakce na Chamurappiho:
K čemu by měl využít klávesovou mapu? Že by dohledal k vkládanému textu adresu? Nebo naopak? To by bylo těžší.
Představoval jsem si to tak, že vložím třeba http://atd.havrlant.net/jak-funguje-html a JS mi k tomu doplní z klávesové mapy „Jak funguje HTML“, asi nejvíc by se mi to líbilo u odkazů na různé funkce atd. Tedy těžší způsob. Pokud je to opravdu těžší, tak můžeme ty texty odkazů dolovat přímo z jejich cíle (jako odkazy z (D)JPW).

Asynchronní komunikace se serverem využívaná při psaní příspěvku je ošidná.
No, zrovna tohle tajné doplňování textů adres je taky ošidné. Pokud člověk nepoužije náhled, tak se výsledek příspěvku může dost lišit od představy. Třeba toto pravidlo RewriteRule ^(.*)$ http://diskuse.jakpsatweb.cz/$1 [R=301,L,NE], když uvedeš někomu jako příklad, tak se po odeslání nestačí divit. :–) Asi nic by nebránilo na tu odpověď čekat jenom chvilku (když by se to nestihlo, tak se nic neděje nebo by se adresa doplnila až v PHP), takže by umření problém být nemusel.

adresy vedoucí na JPW‘Hotovo. (V sandboxu.)
Zvážil bych ještě pokus najití názvu stránky v <title>, když nemá nadpis (například některé příklady).

Chtěl jsem do title u odkazů na vlákna přidat i kategorii, ale nedaří se mi ji spolehlivě získat.
Možná by se ty adresy do diskuse měli získávat přímo z databáze. Bude to rychlejší než fsockopen, ale bude se muset napsat nějaký jejich parser.
Chamurappi
Profil
Reaguji na Str4wberryho:
asi nejvíc by se mi to líbilo u odkazů na různé funkce atd.
Klávesová mapa a slovník referenčních odkazů fungují víceméně samostatně, takže by se to muselo dodělávat dvojmo.

No, zrovna tohle tajné doplňování textů adres je taky ošidné.
Lepší by asi bylo uvnitř [pre] rozbít odkazy a vyházet nevhodné BB značky před převodem do HTML. V djpw.js vypadá funkce „Zamezit formátování“ takto:
function fixBB(text)
{
  return text.replace(/(\[\/?)((?:[bi\!]|h[r234]?|del|edit|small|pre[a-z]*|img(?:left|right)?|mod|url(?:\=[^\]]+)?)\])/gi, "$1[!]$2").replace(/\&(\#\d+)/g, "&[!]$1").replace(/www\./g, "w[!]ww.").replace(/ht(tps?\:\/\/)/g, "ht[!]$1");
}

pokus najití názvu stránky v <title>, když nemá nadpis (například některé příklady)
Upravil jsem to, že to hledá jen <title>.

Možná by se ty adresy do diskuse měli získávat přímo z databáze.
Momentálně nejsou při výrobě náhledů naincludované databázové funkce. Tuto úpravu bb_codes.php chci nasadit co nejdřív do ostré verze, bez zásahů do ostatních souborů.
Přidal jsem v ostré verzi do <link>u s ikonkou atribut title obsahující kategorii a z něj ji můžu vytáhnout regulárním výrazem. Obdobně u JPW beru sekci z třídy na <body>. Zdá se, že to nějak funguje.



Takže prosím (přes sandbox) otestujte na hřišti, jestli jsem nepřidělal víc problémů, než vyřešil.
Chamurappi
Profil
Žádné očividné chyby jsem si při testování nevšiml, takže nasazuji bb_codes.php do ostré verze. Pokud se něco porouchá, křičte!
Mimochodem, teď nejde normálně odkázat na vlákno 78457, ani na jiná vlákna obsahující sprostá slova v nadpisu :-)


Reaguji na sebe a Str4wberryho:
„pokus najití názvu stránky v <title>, když nemá nadpis (například některé příklady)“
Upravil jsem to, že to hledá jen <title>.
Nyní se upřednostňuje <h1> a teprve když není, bere se <title>. Všiml jsem si, že má JPW většinou lépe navrhnuté <h1> v kontextu s ostatními nadpisy, zatímco <title> shrnuje všechno, o čem stránka je.
Str4wberry
Profil
Při vytvoření odkazu z URL se mi do textu odkazu dostalo na začátek „<u></u> “, proč se to tam vkládá?
Chamurappi
Profil
Reaguji na Str4wberryho:
Chtěl jsem přidat k odkazům zmenšenou ikonku kategorie či sekce a to tak, aby měl autor příspěvku možnost je zobrazit na začátku, na konci, nebo vůbec. Při převodu odkazu se dává automaticky na začátek. Styly a obrázky jsem ale neupravil, takže to čeká na budoucnost :-)
Je to nenastylované prázdné účko snad v nějakém prohlížeči vidět?
Str4wberry
Profil
Vidět ne, spíš mě iritovala ta mezera navíc při zobrazení v BB kódu. Předpokládám tedy, že v budoucnu tam bude místo <u></u> třeba nějaký puntík a bude to tedy v pořádku.
Chamurappi
Profil
Reaguji na Str4wberryho:
V HTML bude <u></u>. V BB může být něco jiného, ale tam je pak možnost, že to něco jiného se dostane do textu i jinak. Mezera mi přišla nejjednodušší (i když asi není úplně intuitivní, že reprezentuje ikonku).

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: