Autor | Zpráva | ||
---|---|---|---|
Nox Profil |
#1 · Zasláno: 27. 12. 2011, 14:43:23
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 |
#2 · Zasláno: 27. 12. 2011, 16:06:54
Potvrzuji. Už jsem se s tím setkal. Na začátek některých řádků v
[p>re] 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-2 až br-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 |
#5 · Zasláno: 27. 12. 2011, 18:33:44 · Upravil/a: Majkl578
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í). |
||
Časová prodleva: 3 dny
|
|||
Chamurappi Profil |
#6 · Zasláno: 30. 12. 2011, 16:46:51
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 |
#7 · Zasláno: 30. 12. 2011, 17:06:30
„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 |
#8 · Zasláno: 31. 12. 2011, 02:16:48
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 ww>w.example.com , ww>w.neco.cz , ww>w.adresa.cz apod. neměly převádět na odkaz, ale o[pr>e] ovat. Potom tu budeme mít nejlepší systém pro práci s adresami v diskusním fóru na světě. :–)
|
||
Časová prodleva: 6 dní
|
|||
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 |
#10 · Zasláno: 6. 1. 2012, 02:21:20
Str4wberry:
„Náhrada nulovou mezerou by nezabrala?“ Asi to nevadí, ale V IE6 vidím čtvereček, zřejmě tu entitu nezná. |
||
Str4wberry Profil |
#11 · Zasláno: 6. 1. 2012, 02:40:11
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 ^(.*)$ htt>p://disk>use.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.
|
||
Časová prodleva: 3 dny
|
|||
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 |
#13 · Zasláno: 9. 1. 2012, 22:22:33
Žá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.
|
||
Časová prodleva: 5 dní
|
|||
Str4wberry Profil |
#14 · Zasláno: 14. 1. 2012, 20:24:40
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 |
#15 · Zasláno: 14. 1. 2012, 23:14:17
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 |
#16 · Zasláno: 15. 1. 2012, 00:19:41
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 |
#17 · Zasláno: 15. 1. 2012, 00:24:08
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).
|
||
Časová prodleva: 12 let
|
0