abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 13:11 | Upozornění

    V neděli 30. června skončí (EOL) podpora CentOS Linux 7.

    Ladislav Hagara | Komentářů: 5
    dnes 10:44 | Zajímavý článek

    David Tschumperlé a Garry Osgood v obšírném článku se spoustou náhledů shrnují vývoj multiplatformního svobodného frameworku pro zpracování obrazu G'MIC (GREYC's Magic for Image Computing, Wikipedie) za poslední rok.

    Ladislav Hagara | Komentářů: 1
    včera 13:22 | IT novinky

    Andrew S. Tanenbaum byl oceněn 2023 ACM Software System Award (Wikipedie) za operační systém MINIX.

    Ladislav Hagara | Komentářů: 1
    včera 10:22 | Komunita

    Celkový počet stažení aplikací z Flathubu překročil 2 miliardy. Aktuální Statistiky Flathubu: Celkový počet stažení 2 002 793 783. Celkem desktopových aplikací 2 636.

    Ladislav Hagara | Komentářů: 13
    21.6. 23:33 | Nová verze

    Byla vydána nová verze 4.8.0 programu na úpravu digitálních fotografií darktable (Wikipedie).

    Ladislav Hagara | Komentářů: 0
    21.6. 23:11 | Zajímavý článek

    Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 142 (pdf) a HackSpace 79 (pdf).

    Ladislav Hagara | Komentářů: 0
    21.6. 18:22 | Nová verze

    Qtractor (Wikipedie) dospěl do verze 1.0.0. Jedná se o Audio/MIDI vícestopý sekvencer.

    Ladislav Hagara | Komentářů: 0
    21.6. 14:33 | Nová verze

    Byl vydán svobodný kancelářský balík OnlyOffice Docs 8.1. Vedle četných oprav přináší několik funkcí včetně podpory editace textu v PDF a vytváření formulářů v PDF.

    Fluttershy, yay! | Komentářů: 49
    21.6. 12:33 | Zajímavý článek

    Daniel Stenberg, autor nástroje curl, z databáze SteamDB zjistil, že aktuálně 22 734 her na Steamu používá curl.

    Ladislav Hagara | Komentářů: 5
    20.6. 19:55 | IT novinky

    Společnost Anthropic vydala Claude 3.5 Sonnet, tj. novou verzi své umělé inteligence Claude (Wikipedie). Videoukázky na YouTube. S Claude 3, stejně jak s GPT-3.5, Llama 3 a Mixtral, si lze pokecat bez přihlašování na DuckDuckGo AI Chat.

    Ladislav Hagara | Komentářů: 0
    Rozcestník

    WYSIWYG editor online - 2 (formátovánie textu)

    11. 8. 2006 | Matej Gagyi | Programování | 8115×

    V minulej časti sme si vytvorili jednoduchý textový editor priamo na stránke. Dnes ho rozšírime o funkcie formátovania textu a editor samotný zaradíme do formuláru na stránke. Tiež sa oboznámime s niekoľkými nedostatkami editora Midas, ktoré nie je jednoduché riešiť.

    Formátovanie textu

    Aktivovanie editora nad HTML dokumentom sprístupní JavaScriptu štyri nové funkcie dokumentu: execCommand(), queryCommandEnabled(), queryCommandState(), queryCommandValue().

    Najdôležitejšou z týchto funkcií je execCommand(), ktorá formátuje text, vkladá do dokumentu obrázky a odkazy, vracia zmeny dokumentu (undo/redo), atď. Funkcia execCommand() očakáva 3 parametre:

    document.execCommand(command, userInterface, value)

    Argumenty funkcie execCommand():

    command
    Názov operácie, ktorú chceme vykonať. Niektoré operácie pracujú s označeným textom, niektoré s pozíciou textového kurzora a niektoré s celým dokumentom. Pozrite si tabuľku najdôležitejších operácií.
    userInterface
    Musí byť vždy false, inak funkcia vyhodí výnimku NS_ERROR_NOT_IMPLEMENTED.
    value
    Niektoré operácie vyžadujú dodatočný parameter. Napríklad ak vytvárame hypertextovy odkaz, ako parameter odovzdáme adresu, na ktorú má odkaz smerovať: document.execCommand('createlink', false, 'http://www.abclinuxu.cz');

    V praxi vykonáva funkcia execCommand() celú prácu za nás a nemusíme sa starať o nič iné, ako volanie tejto funkcie so správnymi argumentami. Rozšírme teda primitívny editor z minulej časti o niekoľko formátovacích funkcií:

    <html>
     <head>
      <title>Moj druhy WYSIWYG editor</title>
      <script type="text/javascript">
       var editor;
       function setup() {
        editor = document.getElementById('editor');
        editor.contentWindow.document.designMode='on';
       }
       function editor_alert() {
        alert(editor.contentWindow.document.body.innerHTML);
       }
       function editor_execCommand(command, value) {
        editor.contentWindow.document.execCommand(command, false, value);
       }
      </script>
     </head>
     <body onload="setup();">
      <p>Tento text nie je editovatelny... editujte obsah v ramci, prosim.</p>
      <iframe id="editor" src="template.html"></iframe>
      <p>Nastrojovy panel:</p>
      <ul>
       <li><a href="javascript: editor_alert();">
            Ukaz mi to HTML!</a></li>
       <li><a href="javascript: editor_execCommand('undo');">
            Undo</a></li>
       <li><a href="javascript: editor_execCommand('redo');">
            Redo</a></li>
       <li><a href="javascript: editor_execCommand('bold');">
            Tucne</a></li>
       <li><a href="javascript: editor_execCommand('italic');">
            Kurziva</a></li>
       <li><a href="javascript: editor_execCommand('underline');">
           Podskrtnute</a></li>
       <li><a href="javascript: editor_execCommand('strikethrough');">
           Preskrtnute</a></li>
       <li><a href="javascript: editor_execCommand('removeformat');">
           Normalne</a></li>
       <li><a href="javascript: editor_execCommand('formatblock', '<h1>');">
           Nadpis 1</a></li>
       <li><a href="javascript: editor_execCommand('formatblock', '<h2>');">
           Nadpis 2</a></li>
       <li><a href="javascript: editor_execCommand('formatblock', '<h3>');">
           Nadpis 3</a></li>
       <li><a href="javascript: editor_execCommand('formatblock', '<p>');">
           Odstavec</a></li>
      </ul>
     </body>
    </html>

    Pridali sme do hlavného dokumentu ďalšiu JavaScriptovú funkciu editor_execCommand(). Očakáva 2 argumenty, ale pri volaní tejto funkcie si môžeme dovoliť druhý argument vynechať. V JavaScripte to nie je chyba, v tele funkcie bude tento argument nastavený na hodnotu undefined a táto hodnota je takmer to isté ako hodnota null.

    Funkcia editor_execCommand() jednoducho volá funkciu execCommand() editovaného dokumentu a odovzdá mu svoje vlastné dva argumenty. Pridávať môžeme aj ďalšie funkcie z nasledujúcej tabuľky:

    Operácia Hodnota Popis
    undo   Vráti jednu zmenu v dokumente.
    redo   Znovu vykoná jednu vrátenú zmenu v dokumente.
    formatblock <h1>, <h2>, ..., <p>, <pre>, ... Uzavrie odstavec textu do zvoleného HTML tagu.
    insertimage adresa obrázku Vloží na dokument obrázok.
    removeformat   Odstráni všetky formátovacie HTML značky z označeného textu.
    createlink adresa Vytvorí z označeného textu hypertextový odkaz zo zvolenou adresou.
    unlink   Zmení hypertextový odkaz na text.

    Kompletný zoznam príkazov podporovaných editorom Midas nájdete na v špecifikácii Midasu. Príkazy MSHTML Editoru sa nachádzajú v knižnici MSDN - Command Identifiers.

    Odosielanie dokumentu na server

    Odoslať HTML dokument po upravení na server môžeme viacerými spôsobmi. Najjednoduchšie je dokument zakódovať do adresy dopytovanej webovej služby ako argument. To znamená, že ak sme umiestnili webovú službu, ktorá dokument prijme a spracuje na adresu http://example.com/service a dokument vyzerá takto:

    <h1>Ahoj svet!</h1><p>K&R napísali prvý
    unix?</p>

    tak pomocou JavaScriptu otvoríme v prehliadači adresu

    http://example.com/service?text=%3Ch1%3EAhoj%20svet!%3C%2Fh1%3E%3Cp%3EK% 26R%20nap%C3%ADsali%20prv%C3%BDunix%3F%3C%2Fp%3E

    Funkcia v JavaScripte

    function send_document(host) {
     window.location.href = host + '?html='
       + encodeURIComponent(editor.contentWindow.document.body.innerHTML);
    }

    Položka nástrojového panelu

    <li><a href="javascript: send_document('http://example.com/');">
      Odoslat na example.com</a></li>

    Záver

    Nabudúce si prejdeme ďalšie možnosti odosielania dokumentu na server. Ďalej si ukážeme trik, ktorým uložíme dokument z Firefoxu na disk. Nakoniec si povieme pár slov o ostatných prehliadačoch podporujúcich WYSIWYG editor.

           

    Hodnocení: 100 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    11.8.2006 09:13 Jirka
    Rozbalit Rozbalit vše Re: WYSIWYG editor online - 2 (formátovánie textu)
    Podle me je naprosty nesmysl vytvaret WYSIWYG editor ktery nesplnuje standard XHTML (strict). A to urcite pouziti tagu <a href="javascript: ma_se_pouzit_onclick()">javascript akce</a> nesplnuje! Ty standardy nejsou jen tak pro srandu kralikum. A vymluva, ze to splnuje standard HTML 4.01, je v dnesni dobe tak trochu mimo misu. Nevim o zadnem opravdu XHTML STRICT wysiwyg editoru, jehoz vystup by prosel validaci na w3c.org. Pokud nekdo vite, podelte se o zkusenosti.
    11.8.2006 12:56 Láďa
    Rozbalit Rozbalit vše Re: WYSIWYG editor online - 2 (formátovánie textu)
    Další spravedlivý hněv. Zkuste říct zákazníkovi, že má smůlu, protože to nesplňuje nějaké standardy, o kterých v životě neslyšel.
    11.8.2006 13:10 Stefan
    Rozbalit Rozbalit vše Re: WYSIWYG editor online - 2 (formátovánie textu)
    Takže když žádný neexistuje a nesmíme porušovat standardy tak nemůžete vytvářet žádné redakční systémy a tak na webu nic nebude. Co vlastně přesně je porušeno ve zde zmiňovaném tagu ? Standardy od W3C jsou pouze doporučení http://www.w3.org/2004/02/Process-20040205/tr#RecsW3C Je trochu problém v praxi používat doporučení které prohlížeče nesplňují. HTML 4.01 není nikde označeno jako nepoužitelné, takže i v dnešní době má své místo a prohlížeče ho podporují na rozdíl od XHTML
    11.8.2006 15:17 Platonix | skóre: 20 | blog: FUD: Férový Uživatelův Deníček
    Rozbalit Rozbalit vše Re: WYSIWYG editor online - 2 (formátovánie textu)
    Osobně se snažím standardy dodržovat, ale HTML 4.01 Transitional je taky standard, tak proč nepoužít ten?
    Když já tomu prostě nerozumím. Kdo si neváží svobody, je na půli cesty o ni přijít
    11.8.2006 15:18 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: WYSIWYG editor online - 2 (formátovánie textu)
    Není to snad jedno? Podstatné je zda splnuje standard XHTML výsledný produkt - tedy hotová stránka.
    Yin avatar 18.8.2006 13:16 Yin | skóre: 39 | blog: Yinotopia | Slovesnko, Košice
    Rozbalit Rozbalit vše Re: WYSIWYG editor online - 2 (formátovánie textu)

    Kde v špecifikácii XHTML 1.0 STRICT sa píše, že URL v atribúte href nesmie mať protokol "javascript:"? Odporúča sa to, aby stroje vedeli, že po kliknutí na odkaz sa vykoná nejaký kód (aj tak im je to na figu).

    Môj anchor je odkaz na funkciu a je mi jedno, ako ju bude užívateľ spúšťať. Keby som použil atribúť onclick, musel by som vytvoriť aj CSS pre ten odkaz, aby každý pochopil, že na neho treba kliknúť.

    A vôbec, aký súvis má stránka s editorom s kódom, ktorý generuje? Veď si to kludne doma prepíšte podľa seba. A tento tutoriál vám má pomocť pochopiť tento druh editorov, aby ste si mohli vytvoriť vlastný generátor čistého XHTML kódu.

    Vidíte? teraz ste ma rozčúlil... a musim si zase prekompilovať jadro, aby som sa ukludnil!

    Nikdy nie je tak zle, aby to jeden poharik nemohol ešte zhorsiť.
    25.9.2006 22:57 miki
    Rozbalit Rozbalit vše Re: WYSIWYG editor online - 2 (formátovánie textu)
    No, existuje preci jeste reseni na strane serveru - kdyz javascript produkuje nevalidni kod, je sice narocnejsi vytvorit nejaky "opravovaci" parser, nicmene wysiwyg editor je tu vetsinou pro zakaznika, ne pro developera... takze se vlk nazere a koza zustane cela (kdyz neberu v potaz, ze to kozu musime nejdriv porodit .)
    14.10.2006 18:19 coolll.sk
    Rozbalit Rozbalit vše Re: WYSIWYG editor online - 2 (formátovánie textu)
    Neviete niekto ako sa da k takemu iframovemu editoru priradit subor so stylmy (CSS)?
    8.4.2007 18:28 Radke Novák
    Rozbalit Rozbalit vše Re: WYSIWYG editor online - 2 (formátovánie textu)
    Ahoj, je to opravdu moc pěkný tutoriál. Mnohé jsem z něho použil. Abych to mohl odesílat s ostatními daty formuláře udělal jsem funkci na uložení výsledného HTML opět do [textarea] který se odešle.

    Co ale netuším je, jak dostat HTML do námi vytvořeného wisiwig editoru. Respektive, když vlezu na stránku, kde budu mít ve skryté [textarea] kód HTML, aby se to načetlo do wisiwig editoru.

    Snad víš co mám na mysli.

    Díky moc

    Radek Novák
    8.4.2007 19:27 Radke Novák
    Rozbalit Rozbalit vše Re: WYSIWYG editor online - 2 (formátovánie textu)
    tak jsem na to přišel a to takto (nevím zdali to funguje i pro ostatní prohlížeče, nad tím budu bádat jindy):

    function vlozit_do_editoru() { document.getElementById('editor').contentWindow.focus(); document.getElementById('editor').contentWindow.document.selection.createRange().pasteHTML(document.getElementById('textarea_editor').value); }

    do iframe vložte metodu onload="vlozit_do_eidtoru();"

    toť vše
    18.4.2007 17:24 Smajchl | skóre: 39 | blog: Drzy_Nazory | Praha
    Rozbalit Rozbalit vše Re: WYSIWYG editor online - 2 (formátovánie textu)
    Uz se tesim na dalsi dil :-)
    My máme všechno co chcem, my máme dobrou náladu!
    12.6.2007 23:21 Petr
    Rozbalit Rozbalit vše Re: WYSIWYG editor online - 2 (formátovánie textu)
    Zdravim, ak zrobit aby pri createlink byla adresa prave ta ktoru omaznem?
    5.12.2007 23:08 Kudla
    Rozbalit Rozbalit vše Re: WYSIWYG editor online - 2 (formátovánie textu)
    Nemá někdo ňákej skriptík na editování tablek?? Nebo ňákej odkázek. Díky.
    29.12.2007 12:16 Martin
    Rozbalit Rozbalit vše Re: WYSIWYG editor online - 2 (formátovánie textu)
    Možná Vám pomůže tato ukázka:

    http://www.mozilla.org/editor/midasdemo/

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.