« 1 2 3 4 5 6 7 8 9 10 11 12 »
Autor Zpráva
Chamurappi
Profil
       JavaScript pro diskusi: 20082009 • 2010/I
       — související: Úpravy diskuse, Barvení PHP kódu


Vypadá to, že převezmu štafetu po Janu Tvrdíkovi. Plánoval jsem drobné úpravy, ale nakonec mě políbila programátorská múza a sám teď trochu žasnu nad tím, co z toho vylezlo :-)

Ukázkové soubory:
Nové vlákno.
Staré vlákno.
Stránka s pravidly.


1) Stávající skripty zajišťující popisky formátovacích tlačítek, kontrolu příspěvkového formuláře a vkládání číselných kotev při kliku na #čísla u příspěvků jsou strčené do externího JS.

2) Kontrola příspěvkového formuláře nyní protestuje proti jménům obsahujícím věci jako „zapomněl jsem heslo“ nebo „v práci“.


3) Protivytahovací zábrana. Měl bych k ní zřejmě ještě dodělat javascriptové přidání obrázku do drobečkových řádků.


4) Při prvním citování z něčího příspěvku se rovnou vkládá tučné jméno citovaného. (Děkuji Soukimu za inspiraci.)

5) Jednořádkové citace berou ohledy na české uvozovky v citovaném textu. Okraje textu jsou před citováním zbaveny bílých znaků a lze bezpečně citovat i text obsahující BB značky (třeba [/i]).

6) Víceřádkové citace se neobalují uvozovkami, místo toho se jejich jednotlivé řádky odsazují většítkem. (Kvůli zefektivnění jsem rozložil funkci insertTag od Jana Tvrdíka do dvou, což mi dalo větší volnost.)

7) Víceřádkové citace se brání odcitování číslovaného seznamu. Smrt redundanci!

8) Funkce „rozcitování“ je nyní mnohem chytřejší (necituje již odcitované, snaží se ignorovat HTML kódy, rovnou rozřádkovává) a je dobře skryta před návštěvníky, kteří by ji chtěli zneužít k citování kompletního příspěvku. Zjeví se jen tehdy, když uživatel několikrát po sobě rychle pohladí kurzorem odkaz „Citovat“ (onmouseover + onmouseout).


9) Podle textu za mřížkou v adrese se zvýrazňuje element s příslušnou kotvou. Nejprve v sekundovém intervalu párkrát střídá třídu („highlight“ a „highlight-blik“), pak se nastaví „highlight-klid“. Ukázka.

10) Je-li za mřížkou text ve formátu „najdi(dotyčný text)“, skript při načtení rovnou najde a zvýrazní dotyčný text. Ke zvýraznění též užívá sadu tříd „highlight“. Ukázka.

11) V pseudofunkci „najdi“ může být i více slov oddělených svislítkem nebo regulární výraz ohraničený lomítky. Zvýrazňuje se vždy pouze první vyhovující výskyt. Ukázka.

12) Pseudofunkce „najdi“ může mít také druhý argument — ID elementu, v němž se má hledat. Můžeme tedy upravit zdejší vyhledávání, aby se v nalistovaných výsledcích rovnou zvýrazňovaly hledané pojmy. Ukázka.


13) V hlavní <textaree> fungují klávesové zkratky. Tučné písmo je Ctrl+B, kurzíva Ctrl+I, odkaz Ctrl+K, horizontální čára Ctrl+H, kurzíva s uvozovkami je Ctrl+Q.

14) Zkratka Ctrl+M tvoří u moderátorů [mod] a u členů mmm. Na rozpoznání moderátorství potřebuji pomoc ze strany serveru. (HTML kód ukázky starého vlákna jsem uzpůsobil, aby si JS myslel, že ho spouští moderátor.)

15) Drží-li diskutér Ctrl a stiskne šipku dolů, dostane se do tzv. „klávesové mapy“. Klávesová mapa je hierarchická struktura frází a funkcí usnadňujících tvorbu příspěvku. Ke komunikaci s uživatelem využívá <span> nad <textareou> určený doposud jen pro popisky tlačítek. Jak se ovládá: šipky doleva a doprava prochází položky, šipka dolů se noří hlouběji do hierarchie, šipka nahoru se vrací zpět — to vše při stisknutém Ctrl. Jakmile diskutér Ctrl pustí, provede se úkon, který vybral.

16) V klávesové mapě je snadno dostupná řada oblíbených odkazů. Stačí pár úderů do klávesnice a odkaz na podmíněné komentáře je připraven. Je-li už označený nějaký text, použije se jako text odkazu.

17) Kromě konstantních kousků textu se v mapě nachází i seznam odkazů a přezdívek ležících na právě nalistované stránce.

18) Mapa dále skrývá zajímavé funkce pro práci s textem. K označeným řádkům lze např. snadno doplnit (či obměnit) číslování či odrážky. Moderátoři ocení dobře dostupný převod na malá písmena a typografickou korekci.

19) Pomocí klávesové mapy jdou též převádět názvy jakýchkoliv CSS vlastností či HTML elementů na příslušné odkazy na JPW. Stačí napsat a označit „<img>, background“, vybrat „/JPW/Kontextový odkaz“ a vznikne BB kód generující „<img>, background“.


To je prozatím vše. Ještě mám v hlavě pár drobností, ale ty mohou počkat, teď jsem totiž jedno Velké Ucho.

Co vy na to?
Timy
Profil
Chamurappi
1/ Nemáš špatně nasměrované první dva odkazy?
2/ Musí formulář z tvého webu opravdu vést na djpw? Trochu jsem ti zanesl vlákno.

Teď k vylepšením:
Hustý! :-)

Nechápu ale osmý bod — a to jak smysl tak použití…

Zvýrazňuje se vždy pouze první vyhovující výskyt.
Nešlo by to parametrizovat, aby se případně zvýraznilo vše?

15. bod funguje hodně podivně, takřka vůbec :-). Při ctrl+up se nestane nic, při ctrl+down se nad textarea zobrazí sada odkazů. Když pustím ctrl, nestane se nic. FF3.
Chamurappi
Profil
Reaguji na Timyho:
1) Opraveno, děkuji za upozornění.
2) Opraveno. Vedl na ostrou verzi, protože tam je <base> a HTML kód jsem upravoval minimálně.

U bodu 15 jsem ještě opravil popis, klávesová mapa se spouští „Ctrl+šipka dolů“. Funguje správně. Jen se snaž :-)
Timy
Profil
Chamurappi
Už jsem to pochopil a funguje to ;-).
Str4wberry
Profil
To je výborná práce. Zřejmě budeme mít diskusi s nejlepším JavaScriptem na světě.

2) Kontrola příspěvkového formuláře nyní protestuje proti jménům obsahujícím věci jako ‚zapomněl jsem heslo‘ nebo ‚v práci‘.
Neplánuješ ještě naučit protestovat formulář pro nové vlákno na fráze „pls help“ a podobné?

Tučné písmo je Ctrl+B, kurzíva Ctrl+I, odkaz Ctrl+K, horizontální čára Ctrl+H, kurzíva s uvozovkami je Ctrl+Q.
Přidáš ješte prosím zkratku pro [pre]?

Na rozpoznání moderátorství potřebuji pomoc ze strany serveru.
Jak to má být provedené? Nějaký parametr isMod do adresy toho skriptu? Poznávat moderátora podle jeho rozšířeného dolního menu by asi bylo zbytečné pracné, viď?
Jan Tvrdík
Profil
Chamurappi
Dobrá práce!

8) Funkce „rozcitování“ je (…) dobře skryta před návštěvníky, kteří by ji chtěli zneužít k citování kompletního příspěvku.
To zobrazování je fakt nazabití. Nemohlo by to radši fungovat s ctrl?

10) Je-li za mřížkou text ve formátu ‚najdi(dotyčný text)‘
IMHO na nic, ale třeba to někdo fakt využije

15) Drží-li diskutér Ctrl a stiskne šipku dolů
Na tohle si asi budu dlouho zvykat + bude nějakou dobu trvat, než se ustálí struktura mapy.

18) Mapa dále skrývá zajímavé funkce pro (…) typografickou korekci.
Tak přesně tohle mi nefunguje.

Doufám, že ty „zvýrazňovací“ styly nezůstanou tak jak jsou, protože teď jsou vyloženě hnusné.
Už se těším, až se to objeví v sandboxu, abych to mohl otestovat v praxi.
Alphard
Profil
dobrá práce, citování by se ale ještě mohlo doplnit, aby při použití na kód byl vložen do pre bez uvozovek a připraven na opravení
Str4wberry
Profil
(1) Klávesová mapa je fantastická, ale docela by se mi líbilo, kdyby šla ovládat myší (vyvolat nějakým tlačítkem). Takhle o ní dost uživatelů nebude vědět a také by mi to přišlo pohodlnější. Mapa by se neztrácela.
(2) Proč jsou „pravidla diskuse“ v sekci „moderování“ i „poučné odkazy“?
(3) Uvítal bych, kdyby při najetí na položku byl zobrazen kód (asi v title), který bude vložen.
(4) Je správně pojmenován typ seznamu „Závorkovavý“? Nějak si mi to slovo nezdá.
(5) Drobnost – nemá smysl, aby odkazy na příspěvky fungovaly při kliknutí na kotvu na stránce, která není poslední. Stejně tak na #30, protože vložený příspěvek bude na další straně.
(6) Cituji-li text s dvojitými uvozovkami a uvozovka je na konci nebo začátku výběru, tak je vyhozena, zatímco dvojité uvozovky uvnitř jsou převedeny na jednoduché.
(7) Dávám k úvaze, zda k citaci nepřilepovat jméno autora vybraného textu místo autora příspěvku, ve kterém byla použita funkce citace. Opět drobnost.
(8) Docela bych uvítal v moderátorských frázích: „Téma nadepište názvem/adresou webu“
(9) K čemu je dobrý výčet „zdejších odkazů“?
(10) Odpověz mi prosím na otázku [#5] co nejdříve, rád bych to brzy zapracoval do sandboxu.
Mistr
Profil
Chamurappi, díky za úpravy.

U protivytahovací brzdy bych se ještě zamyslel nad textem na tlačítku. Obávám se, že při stávající úpravě si ten relativně dlouhý text ti, kterým je určen, stejně nebudou číst. Nešlo by upravit ten text na tlačítku? Ale jak? Možná Opravdu chcete psát do možná neaktuálního tématu? Třeba někoho napadne ještě vhodnější varianta.
Str4wberry
Profil
Moderátor Chamurappi: Z klonu tohoto vlákna jsem zřídil Úpravy diskuse, rok 2009.

Další reakce na Chamurappiho:
3) Protivytahovací zábrana. Měl bych k ní zřejmě ještě dodělat javascriptové přidání obrázku do drobečkových řádků.
Není potřeba. Odlišení v závislosti na stáří zajistí serverový skript. Na Tobě (či klidně někom jiném) je jen grafická podoba onoho odlišení.
Chamurappi
Profil
Vyrobil jsem další ukázku na hraní, tentokrát z tohoto vlákna.

Nová vylepšení:


20) Při označeném textu na stránce vyvolává stisk samotné klávesy Q citování.

21) Transplantace editačního formuláře — kliknutí na odkaz „Změnit“ způsobí přesun spodního formuláře na místo příspěvku a vyplní do něj upravovaný příspěvek. (Pro text s BB značkami si sahám XMLHttpRequestem, takže pozor při nasazování.) V odkázané ukázce jsem přichystal „Změnit“ u příspěvků #1, #2 a #8.


Reaguji na Timyho:
Nechápu ale osmý bod — a to jak smysl tak použití…
Vyrábí polotovar pro příspěvek. Nejsi sám, kdo ho nechápe.

Nešlo by to parametrizovat, aby se případně zvýraznilo vše?
Všechno nějak jde. Ale současnou vyhledávací funkci jsem od začátku stavěl s vědomím, že nikdy nebude zvýrazňovat víc než jeden výskyt. Má sloužit hlavně jako chytřejší kotva, ne jako universální hledátko.


Reaguji na Jana Tvrdíka:
To zobrazování [rozcitování] je fakt nazabití. Nemohlo by to radši fungovat s ctrl?
Mně to takto připadá roztomilé, stačí jen trochu zavrtět kurzorem. U klávesy Ctrl bych zřejmě válčil s výchozími touhami prohlížečů.

[Pseudofunkce najdi] IMHO na nic, ale třeba to někdo fakt využije
Minimálně ve vyhledávání se využije určitě.
Jménem zdejších grafomanů si troufnu tvrdit, že odkazy s dovětky typu „pátý odstaveček v odpovědi Jokerovi“ nevypadají moc profi.

Tak přesně tohle mi nefunguje.
Typografická korekce opravuje jen označený text. Určitě nefunguje? Měla by dělat tohle:
var typografie = function(text)
{
	text = text.replace(/([\.\!\?,:])(\w)/g, "$1 $2");      // doplnění mezer za .!?,:
	text = text.replace(/([^\.])\.\.\.([^\.])/g, "$1…$2");  // trojtečka
	text = text.replace(/([\?\!]){3,}/g, "$1");             // zredukování otazníků a vykřičníků
	text = text.replace(/\s*([\.\!\?,:])/g, "$1");          // likvidace mezer před .!?,:
	text = text.replace(/([^\s]):(\-?\W)/g, "$1 :$2");      // odlepení smajlíků přilepených likvidací mezer
	text = text.replace(/([\.\!\?]\s*|\n)[a-z]/g, function(m) { return m.toUpperCase(); });               // velké písmeno na začátku věty/řádku
	text = text.replace(/\b(x?html|css|js|asp|php|ie|jpw)\b/gi, function(m) { return m.toUpperCase(); }); // zkratky psané velkými písmeny
	return text;
};

Doufám, že ty ‚zvýrazňovací‘ styly nezůstanou tak, jak jsou, protože teď jsou vyloženě hnusné.
Ale výrazně hnusné :-)
Najít pro tuto diskusi hezké zvýrazňování je vskutku umění. V ukázce odkázané z tohoto příspěvku zkouším jiné barvy. Lepší?


Reaguji na Str4wberryho:
Neplánuješ ještě naučit protestovat formulář pro nové vlákno na fráze ‚pls help‘ a podobné?
Plánuji. Už si rok dělám seznam špatně nazvaných vláken.

Přidáš ješte prosím zkratku pro [pre]?
Staniž se, Ctrl+P.

Nějaký parametr isMod do adresy toho skriptu?
Už sis zřejmě všiml volání init({ moderator: true }) v ukázce starého vlákna.

K očíslovaným připomínkám:
(1) S ovládáním myší jsem zatím vůbec nepočítal. Jakmile píšu příspěvek, tak ho … píšu. Proto to také je klávesová mapa :-) … ale zkusím se nad tím zamyslet.
(2) Jen tak. Původně jsem je sestavoval výhradně pro moderátorskou větev, pak jsem je strčil i do jiné. Asi je z moderování vyhodím.
(3) Zkusím. Zatím to naráží na problém, že některé funkce z mapy sestavující kód volají v jistých situacích alert. (Zajímavá ironie, že <span> pro popisky najednou také potřebuje popisky.)
(4) To je speciální sezvam pro zvláštví okolvosti. Opraveno.
(5) Dobrá připomínka, znamenám si.
(6) „uvozovka je na konci nebo začátku výběru“ — dvojité i jednoduché uvozovky se mažou, jsou-li na konci a na začátku. Není to chyba, je to chytrá vlastnost. (Trochu jsem ji ještě vylepšil.)
(7) Nyní mám funkci, která zjišťuje označený text v dokumentu. Vrací mi string. Dohledat zpětně, ve kterém <div>u (či <div>ech) dotyčný řetězec byl, elegantně nepůjde.
(8) Staniž se.
(9) Asi k ničemu. Teď hlavně rezervuje místo zajímavější větvi, kterou plánuji.

Odlišení v závislosti na stáří zajistí serverový skript.
Fajn. Serverový skript tudíž může říct mému skriptu, co zjistil: init({ stareVlakno: true }).


Reaguji na Mistra:
ten relativně dlouhý text ti, kterým je určen, stejně nebudou číst
Myslím, že k odfiltrování většiny vytahovačů stačí přibrždění ve formě skrytého <form>u. Na tom, co se tam povídá, již tolik nezáleží.

Návrhy lepších textů pochopitelně vítám. Stejně tak nápady pro další náplň klávesové mapy.
Str4wberry
Profil
Reakce na Chamurappiho:
21) Transplantace editačního formuláře
Šikovná věc, mám dvě připomínky:
1. Tlačítko „Změnit“ by se po kliknutí mohlo změnit na „Zrušit“ — pro zrušení právě prováděné editace.
2. Výška transplantované <textarea> je zřejmě závislá na příspěvku, ale ve všech třech případech je menší, je to schválně?

Už sis zřejmě všiml volání init({ moderator: true }) v ukázce starého vlákna.
Jo, ale dostaneš tam jedničku (nebo nulu), stačí to?

dvojité i jednoduché uvozovky se mažou, jsou-li na konci a na začátku. Není to chyba, je to chytrá vlastnost.
To jsem pochopil. Ale když jsem citoval text: „uchopte myš do jedné ze svých rukou, dojeďte šipečkou na monitoru na tlačítko s nápisem KOUPIT a zmáčkněte libovolným prstem levé tlačítko té myši“ => „děláte ze mě hlupáka, na shledanou“ nebo „tyhle řeči pro blbečky mě otravují“
— tak mi to první a poslední uvozovky vyhodilo. Nicméně teď už to funguje.

Fajn. Serverový skript tudíž může říct mému skriptu, co zjistil: init({ stareVlakno: true }).
To už není potřeba, ne? Co by s tím teď dělal?
Str4wberry
Profil
Ještě k transplantaci.

1. Myslím, že není možné změnit titulek vlákna.
2. A nelze příspěvek přesunout.


Ještě bylo potřeba vypnout odkazy na kotvy na výpisu sekce. (Řádek 383.)
	if (window.location.search.indexOf("vthread") < 1) return false;
Str4wberry
Profil
Další problém: klávesové zkratky mi fungují i s pravým Altem, což je nepříjemné zvlášť v případě, když chci pomocí Altu zapsat třeba „{“, tak se místo toho vloží „[b][/b]“.
Chamurappi
Profil
Vyrobil jsem další ukázku ze stránky se seznamem vláken. Je určena k odzkoušení ochrany formuláře, můžete v ní tedy bezpečně bušit do odesílacího tlačítka a koukat se, jak vám to nadává.

Další nová vylepšení:


22) Má-li se obalit označený kousek textu do určitých BB značek, vyhážou se z tohoto kousku stávající značky téhož druhu.

23) Funkce pro kontextový odkaz dává pozor na existující BB značky v označeném textu, netvoří odkazy uvnitř jiných odkazů a dává bacha na krátká slova (při označení textu „u <body> a u <html>“ nehrozí výroba odkazů na podtržení a na odkaz). Zkusíte-li vyrobit kontextový odkaz z otazníku, ukáže se malá nápověda.

24) Při najetí na položku v klávesové mapě se ukazuje výsledný kód ve stavovém řádku prohlížeče. Výchozí nastavení Firefoxu úpravám window.status nepřeje, je v něm zapotřebí toto ručně povolit.

25) Přidal jsem další klávesové zkratky: Ctrl+D tvoří [del] a Ctrl+tečka tvoří universální kontextový odkaz, jehož slovník odkazů je poskládaný ze všech ostatních slovníků.

26) Stisk klávesy U kdekoliv na stránce sestaví BB kód pro odkaz vedoucí na právě zobrazené vlákno a nabídne jej uživateli ke zkopírování do schránky.

27) Při kliknutí na kotvu se vkládá i jméno autora příspěvku, které se vzápětí označí, aby se jej mohl pisatel snadno zbavit, nemá-li o něj zájem.

28) Text příspěvku je při psaní průběžně zběžně kontrolován, jestli užívá diakritiku. Pokud se zjistí, že neužívá, upozornění pod <textareou> zčervená a ztuční. (Doplnil jsem mu id="upozorneni-diakritika".)

29) Od listopadu 2007 si sepisuji charakteristické výrazy ve špatných názvech vláken a nyní jsem získané poznatky promítl do funkce vyhodnocující kvalitu titulku. Každé slovo je po odháčkování a sjednocení duplicitních znaků ohodnoceno, některá slova dostanou 0 bodů (předložky, tázací zájmena apod.), některá 1 bod („problém“ apod.), množina zbývajících dostává po pěti bodech. Na seznam jednobodových slov má vliv kategorie (je zjištěna z URL). Dostane-li celý titulek méně než dva body, je odeslání nekompromisně zablokováno. Dostane-li více jak bod a méně než pět bodů, je uživatel dotázán, zda si nechce vymyslet něco chytřejšího. Můžete si stáhnout masivní ukázku v ZIPu, kde jsou k vidění bodová ohodnocení titulků cca pěti tisíc zdejších vláken, nebo si můžete prozkoušet živou ukázku výpočtu.


Reaguji na sebe:
Teď hlavně rezervuje místo zajímavější větvi, kterou plánuji.
Z plánu sešlo. Do klávesové mapy už nic zázračného nepřidám, můžeme ovšem rozšiřovat stávající možnosti. Zkusil jsem zpřehlednit její JS kód.

Položky mapy, které vytvářejí kontextové odkazy, jsou vyznačeny „→ šipkami ←“. Není-li označený žádný text, vytvoří se odkaz na hlavní stránku příslušného webu. V nové větvi „/odkazy/W3C/specifikace“ najdete kontextové odkazy na HTML 4.01, CSS 2.1 a HTML 5.


Reaguji na Str4wberryho:
Výška transplantované <textarea> je zřejmě závislá na příspěvku
Užívá se výška buňky tabulky, v níž ležel příspěvek. Nenapadá mě žádný pohodlný způsob, jak zjistit výšku textu uvnitř <textarea>.
Snažil jsem se vyházet věci, které v buňce i ve formuláři nejsou potřebné, abych zvětšil plochu.

Tlačítko ‚Změnit‘ by se po kliknutí mohlo změnit na ‚Zrušit‘
Kdo chce formulář vrátit zpět, může kliknout na „Odpovědět“ nahoře na liště nebo dole pod příspěvky. Nebo znovunačíst stránku.

dostaneš tam jedničku (nebo nulu), stačí to?
Jistě. Stačí cokoliv, co JS vyhodnotí jako pravdu (nebo nepravdu).

tak mi to první a poslední uvozovky vyhodilo
Nyní se provádí kontrola, jestli nejsou uvnitř označeného textu i ukončovací uvozovky.

To už není potřeba, ne? Co by s tím teď dělal?
1) Server ví lépe než klient, kdy přišel do vlákna poslední příspěvek. Na straně klienta musím složitě lovit datum z textu v prvním <div>u v druhé buňce posledního řádku páté tabulky. Tím zjistím pouze čas posledního příspěvku na aktuální stránce.
2) Mělo by tu existovat jen jedno vyhodnocení stáří, aby se případná změna nemusela zanášet na více míst.
3) Můj djpw.js už s tím počítá :-)

Ještě k transplantaci.
Na moderátory jsem zatím moc nemyslel.

Ještě bylo potřeba vypnout odkazy na kotvy na výpisu sekce.
Ještě není pozdě na to, abychom všem zainteresovaným <table> přiřadili smysluplná ídéčka. Máme-li mít „diskusi s nejlepším JavaScriptem na světě“, neměli bychom ho stavět na domečku z karet.

klávesové zkratky mi fungují i s pravým Altem, což je nepříjemné
Opraveno.
_es
Profil
Chamurappi
Ešte si zabudol na tú drobnosť s tlačidlom [?] http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=18&topic=63856&page=8#23, ->
Je to síce len drobný nedostatok, no jeho odstránenie bude asi jednoduché a rýchle.
Nemohol by sa vytvoriť na djpw nejaký zoznam/odkazy testovacích verzií diskusie?
Napríklad jedna hlavná testovacia verzia,
testovacia verzia Chamurappiho vylepšení JavaScriptu...
Myslím, že testeri by tu mohli byť užitoční.
Str4wberry
Profil
Ještě není pozdě na to, abychom všem zainteresovaným <table> přiřadili smysluplná ídéčka.

Nebylo by tedy jednodušší, Chamurappi, kdybys nastrkal ten JavaScript do šablon Ty? :–)
Chamurappi
Profil
Uvítal bych více názorů.


Reaguji na _es:
Ešte si zabudol na tú drobnosť s tlačidlom [?]
Nezapomněl. Nemá smysl měnit drobnost, která nesouvisí s JavaScriptem, v mé statické kopii HTML kódu zdejší stránky.

Nemohol by sa vytvoriť na djpw nejaký zoznam/odkazy testovacích verzií diskusie?
Stránky u mě jsou jen okopírované HTML kódy s přilinkovaným JavaScriptem. Neříkal bych tomu zrovna „testovací verze diskuse“, nežije to.
Str4wberry můj JS přichystává DoubleThinkovi a ten ho možná někdy dá do zdejšího sandboxu.

Myslím, že testeri by tu mohli byť užitoční.
Také si myslím, ale DoubleThink nechce do sandboxu pouštět moc lidí. Zkus si od něj vyžádat heslo.


Reaguji na Str4wberryho:
Jednodušší? Jak pro koho :-)
Současný djpw.js je provozuschopný bez přidávání ID. Později se můžu pustit i do šablon.
SwimX
Profil
Chamurappi
Uvítal bych více názorů.
Zkoušel sem titulky a je to supr :)
Nakonec mi teda prošlo Zoufale prosím o pomoc, ale myslím, že člověk nebude vymýšlet která slova sou za kolik bodů, aby mohl mít svůj praštěný titulek.

BBcode pomocí CTRL+B a další je výboorná věc. Těším se, až bude v ostré verzi nasazena.

rád bych vyzkoušel také citování příspěvků. Přehlédl jsem stránku kde to je možné? z tvého bordelu na webylonu vedou všechny odkazy zpět na d.jpw.cz :(
/* už sem ho našel


jinank pokud mám text a uprostřed slovo tučně. Celý text označím a dám tučně, prostřední tučně se vyhodí. Obráceně ale ne. pokud mám text tučně a uvnitř něj udělám jedno slovo zase tučně, tak to prostě projde. Ale nedokážu si představit jak todle kontrolovat.

eště s doplním: #najdi(text) - nešlo by označit všechny výskyty textu?

pokud cituji číslovaný seznam, 2 řádky mě odcitovat nechá, u více už řve. Proč zrovna dvě ano?

jinak najít ti chybu nebo nefunkčnost je zhola nemožná. Končím své snahy :))
_es
Profil
Chamurappi
Myslím, že testeri by tu mohli byť užitoční.“
Také si myslím, ale DoubleThink nechce do sandboxu pouštět moc lidí. Zkus si od něj vyžádat heslo.

Problém je si v tom, že sandbox je prepojený s diskusiou a v prípade chyby v ňom by mohla byť poškodená diskusia.
Mohla by sa však vytvoriť verzia sandboxu bez prepojenia s diskusiou.

Keďže si v tých vylepšeniach taký aktívny, čo tak pridať tlačidlo "Späť"?
Asi by to nebolo také zložité spraviť.
Stačilo by len pri každej zmene ukladať obsah textarea a pozíciu kurzora.
Zložitejšie by asi bolo rozhodnúť, čo považovať za zmenu, aby to nebolo po každom stlačení klávesy.
Mohlo by to byť pri každom použití tlačidiel na formátovanie, vložení alebo odstránení textu pomocou myši alebo ctrl+V(X)...
_es
Profil
Chamurappi
Po zavedení klávesových skratiek by to už asi nemalo taký význam:Funkčnosť "štetky", zamietnuté.
No ak by ťa napadla nejaká rozumná implementácia možnosti vkladania značiek ihneď po vybratí textu, tak tu je kód, ku ktorému som dospel:
textarea.onkeyup=function(e){
if ((e||window.event).keyCode==16)
if (getTextareaSelection()) insertTag("b");
};
textarea.onclick=function(){
if (getTextareaSelection()) insertTag("b");
};
Ihneď po vybratí textu myšou alebo klávesnicou je vkladaný tag "b".
Udalosť onmouseup sa mi neosvedčila, vo Firefoxe to robilo divné efekty.
Chamurappi
Profil
Reaguji na SwimX:
Nakonec mi teda prošlo Zoufale prosím o pomoc
Projde toho hodně, chtěl jsem zbrzdit ty nejhorší a nejčastější případy. Skript zase nesmí být na tazatele moc přísný, protože špatně nazvaný dotaz je pořád lepší než žádný dotaz. Přemýšlím, že tam udělám pojistku, která by při třetím neúspěšném pokusu o odeslání kontrolu titulku vyřadila.

#najdi(text) - nešlo by označit všechny výskyty textu?
Spíš ne. Viz druhý odstavec odpovědi Timymu v příspěvku [#11].

2 řádky mě odcitovat nechá, u více už řve. Proč zrovna dvě ano?
Protože u seznamu o dvou řádcích není tak úplně jisté, že jde skutečně o seznam. Dva odcitované řádky také tolik nepřekáží.


Reaguji na _es:
v prípade chyby v ňom by mohla byť poškodená diskusia
K tomu už jsem své řekl, poškození se neobávám a betatestery bych chtěl.

Keďže si v tých vylepšeniach taký aktívny, čo tak pridať tlačidlo "Späť"?
Zkus Ctrl+Z.

Funkčnosť "štetky"
Uvažoval jsem o ní, ale s klávesovou zkratkou při ruce již asi není tolik potřebná. Navíc bych se protivil velitelskému rozhodnutí :-)
_es
Profil
Chamurappi
Navíc bych se protivil velitelskému rozhodnutí :-)
"Velitelské rozhodnutí" sa netýkalo zamietnutia funkcie "štetky", ale zmeny funkcie tlačidiel pre 2 sekundové stlačenie.
Str4wberry
Profil
Reakce na Chamurappiho:
Současný djpw.js je provozuschopný bez přidávání ID.
Potom stačí nahrát jen jeho novou verzi. Myslel jsem, že bys chtěl nějaká ídéčka pro snazší práci s příspěvky atp., a to by bylo lepší, kdyby sis upravoval šablony dle potřeb sám.

Kdo chce formulář vrátit zpět
To sice ano, ale pokud budu upravovat příspěvek uprostřed dlouhého vlákna, tak na ta tlačítka nedohlédnu.

Serverový skript tudíž může říct mému skriptu, co zjistil: init({ stareVlakno: true }).
OK, není problém, jen jsem narážel na fakt, že už to ten skript umí složitě lovit.

Ještě není pozdě na to, abychom všem zainteresovaným <table> přiřadili smysluplná ídéčka.
Ano, plánuji. V kódu šablon zřejmě nastanou velké změny, zmizí ty některé zbytečné tabulky, protože mi to dělalo neplechu při odlišení drobečků zamčených a starých vláken.

Text příspěvku je při psaní průběžně zběžně kontrolován, jestli užívá diakritiku.
Toho se mi nějak nepovedlo docílit, chtěl jsem to vidět, jak na to, prosím?
_es
Profil
Chamurappi
Zkus Ctrl+Z.
Ani som nevedel, že táto funkčnosť je už priamo v prehliadačoch.
No vo Firefoxe to pri zrušení vloženia tagu potom vyberá celý text, tak to ešte snáď nejako opraviť.
Mohlo by to byť aj vo forme tlačidla, aby si tú funkčnosť uvedomili aj prípadný noví návštevníci - ak sa to teda vôbec dá.
Tlačidlové skratky, priradené k tlačidlám, by sa mohli zobrazovať v popise a bublinách k nim, aby o nich vedelo čo najviac návštevníkov.
Chamurappi
Profil
Reaguji na Str4wberryho:
Myslel jsem, že bys chtěl nějaká ídéčka pro snazší práci s příspěvky atp.
Výhledově ano, ale současná verze djpw.js s nimi nepočítá. Přál bych si vidět své hračky co nejdříve v sandboxu.
Do svých HTML kopií jsem přidal všehovšudy jen id="upozorneni-diakritika".

pokud budu upravovat příspěvek uprostřed dlouhého vlákna, tak na ta tlačítka nedohlédnu
Nejsou moc často potřeba. Zkusíme chvíli žít s tou současnou podobou a když nás to bude hodně trápit, něco vymyslím.

Pořád také existuje pár způsobů, jak odkaz „Změnit“ normálně rozkliknout (třeba do nového okna), aniž by se vykonala transplantace, takže moderátoři po nasazení do sandboxu neztratí zcela své nadpřirozené schopnosti.

zmizí ty některé zbytečné tabulky
Přidáš-li těm nezbytečným ídéčka, tak se jich při příštích úpravách djpw.js chytím.

Toho se mi nějak nepovedlo docílit
var bezDiakritiky = /\b(kt[eo]r[eay]|pr(oc|eco)|jeste|takze|ne(kd[oy]|co|jak([eay]|ou)?)|stran(k[ayu]|ce)|resi([mt]e?)?|potrebuj([ieu]|e([mt]e?|s))|nazor[euy]?|diky|dekuj[ui]|priklad[yu]?|zkousela?)\b/;
Upozornění zčervená, užiješ-li některé z častých slov, které má mít diakritiku, bez diakritiky a nepoužiješ-li vůbec nikde diakritiku.


Reaguji na _es:
"Velitelské rozhodnutí" sa netýkalo zamietnutia funkcie "štetky"
Štětku z Wordu neznám. Opravdu si myslím, že klávesová zkratka bohatě stačí. Tak zní mé vývojářské rozhodnutí.

Ani som nevedel, že táto funkčnosť je už priamo v prehliadačoch.
Ve většině z nich také funguje Ctrl+Y pro „Vpřed“.

vo Firefoxe to pri zrušení vloženia tagu potom vyberá celý text, tak to ešte snáď nejako opraviť
Díky za pozoruhodnou připomínku, ale nechce se mi tři hodiny zkoumat, jak správně vrátit kurzor na původní pozici po použití funkce prohlížeče, o jejíž existenci nemá půlka lidí tušení.

Mohlo by to byť aj vo forme tlačidla
Ty víš, jak ve všech prohlížečích vyvolat skriptem ono prohlížečové „Zpět“? Celou vlastní historii úprav skriptovat skutečně nehodlám.

skratky, priradené k tlačidlám, by sa mohli zobrazovať v popise
Ano. Ale to už také spadá do změn HTML šablony, se kterou jsem nehýbal.
_es
Profil
Chamurappi
Díky za pozoruhodnou připomínku, ale nechce se mi tři hodiny zkoumat, jak správně vrátit kurzor na původní pozici po použití funkce prohlížeče, o jejíž existenci nemá půlka lidí tušení.
FF si asi históriu zmien pamätá dobre, lenže pri vložení tagu sú pre každý prehliadač použité iné príkazy.
A pre FF je to asi spravené tak, že skript označuje celý text.
Zrejme by to išlo spraviť aj bez toho označovania celého textu.
_es
Profil
Chamurappi
V Opere po vložení tagu nefunguje Ctrl+Z vôbec a ani nejdú potom zrušiť predchádzajúce akcie.
_es
Profil
K tej "klávesovej mape":
Vyzerá to veľmi užitočne.
No mohlo by to byť nejako doplnené o to, aby sa na odkazy v mape dalo priamo dostať.
Napríklad pri odkaze by sa mohlo po kliknutí naň otvoriť nové okno s týmto odkazom.
Pri kliknutí na "funkciu" by sa mohla v novom okne otvoriť stránka s popisom k nej.
Ešte ma napadlo, že tá funkcia "štetky" by sa mohla zapracovať do tej klávesovej mapy.
Napríklad: funkce >> vložení tagu >> B . I Prípadne aj ďalšie, alebo všetky tagy.
Tag by sa vkladal ihneď po označení textu myšou v Textarea, pri aktívnej klávesovej mape.
Pri tomto spôsobe by toľko nehrozilo "divoké" vkladanie tagov ako pri implementácii na spôsob aktívnej štetky vo Worde.
Toto by sa dalo vlastne uplatniť aj na tvoje funkcie.
Lebo teraz treba najprv označiť text, potom vyvolať klávesovú mapu a aplikovať funkciu.
Takto by to šlo aj opačne, teda najprv vyvolať klávesovú mapu, potom sa v nej dostať k funkcii a potom označiť text, na ktorý sa má aplikovať,
označiť iný text, na ktorý sa má aplikovať, vybrať inú funkciu, označiť text, ..., deaktivovať mapu.
Ak som to dobre pochopil, tak na kód sa dá použiť pre každý jazyk vlastný tag, z čoho potom vyplýva jeho "farbenie".
No prispievateľ nemá ako jednoducho zistiť, aký tag má pre daný jazyk použiť.
Miesto tlačidla kód <> by mohol byť vyskakovací zoznam s jazykmi.
Alebo by to mohlo byť v klávesovej mape.
_es
Profil
Ešte k tomu predtým.
Ak by si sa rozhodol implementovať to dodatočné označovanie textu, tak by mohla klávesová mapa fungovať aj s ľavým altom.
So stlačeným ctrl by bolo treba niekde odstraňovať zmenu správania pri označovaní textu.
« 1 2 3 4 5 6 7 8 9 10 11 12 »
Toto téma je uzamčeno. Odpověď nelze zaslat.

0