Do It Yourself HTML Editor Integration Tutorial
โœ‚๐Ÿƒ๐Ÿพโ€โ™€๏ธ๐Ÿƒ๐Ÿผโ€โ™‚๏ธ
๐Ÿ“–

Do It Yourself HTML Textarea Editor Integration Tutorial

Do It Yourself HTML Textarea Editor Integration Tutorial

We have been thinking with our latest project called โ€œDo It Yourself HTML Editorโ€ that it bore huge similarities to the Legend via HTML Map Element ideas we started with the blog post series ending with Legend for and from HTML Map Element Web Server Tutorial. Other interfacings to this project have happened as well, but today, there is a subset of functionality of interest that we want to integrate into our โ€œDo It Yourself HTML Editorโ€, that subset being โ€ฆ

  1. an HTML input element where the user can fill in a URL of interest whose HTML contents can be imported into the HTML textarea element of our โ€œDo It Yourself HTML Editorโ€ โ€ฆ and โ€ฆ
  2. an HTML file browsing mechanism you can read a lot about at that last blog posting link whereby a user can browse for an HTML file of interest whose HTML contents can be imported into the HTML textarea element, like above

โ€ฆ adding two more methods of HTML data input into the โ€œfunctionality equationโ€. You may notice from reading the blog post thread of postings ending at that link above, we discuss a lot of cross-domain issues and interprocess messaging (via Javascript postMessage) that was involved with that project, and we may revisit one day. Those issues are largely behind the interest we have in interfacing to the โ€œLegend via HTML Map Elementโ€ project, but there are a few issues that come into play when considering this (software) integration, and in many you may consider yourself โ€ฆ

  • How can we set up the interfacing? โ€ฆ we decide on โ€œparentโ€ HTML supervises โ€œchildโ€ (Legend via Map) HTML iframe design
  • How do we make the โ€œchildโ€ look part of the โ€œparentโ€ process? โ€ฆ with the HTML iframe we encase it in the โ€œparentโ€ with an HTML div element (as per) โ€ฆ


    <div style='height:60px;overflow:auto;-webkit-overflow-scrolling:touch;'<>iframe src='./legend_via_map.htm' style='width:100%;height:60px;' scrolling='no' frameborder=0></Iframe></div>


    โ€ฆ that uses a style height parameter such that just those two HTML input โ€œrowsโ€ of functionality show, by controlling the scrolling issues and overflow:hidden and/or overflow:auto โ€ฆ thanks to this useful link for help with that
  • In the โ€œchildโ€ how can it tell it is being supervised as distinct from when it is not? โ€ฆ youโ€™ll see lots of โ€ฆ


    If (parent.document.getElementById('htmlcontent')) {

    // do code particular to be supervised by the "Do It Yourself HTML Editor"

    }

  • In the โ€œchildโ€ how can it make changes in the โ€œparentโ€, or flag for this in the โ€œparentโ€? โ€ฆ similar to above we can go (something like) โ€ฆ


    parent.document.getElementById('htmlcontent').value = ourHTMLcontentVar;

That leaves us with the โ€œparentโ€ HTML and Javascript could be called do_away_with_the_boring_bitsโšซhtml with this liveโœ‚run link, changed from yesterday, in thisway, still supervising a PHP โ€œchildโ€ helper you could call do_away_with_the_boring_bitsโšซphp (changed a little in thisway), but now also supervising a โ€œLegend via Mapโ€ HTML iframe โ€œchildโ€ helper you could call legend_via_mapโšซhtm (changed a little in thisway), and which, itself can be supervising that other PHP helper in a โ€œgrandchildโ€ arrangement to the โ€œparentโ€ whereby it makes changes via code like โ€ฆ


top.document.getElementById('htmlcontent').value = ourHTMLcontentVar;



Previous relevant Do It Yourself HTML Textarea Editor Post Tutorial is shown below.

Do It Yourself HTML Textarea Editor Post Tutorial

Do It Yourself HTML Textarea Editor Post Tutorial

Weโ€™re introducing a โ€œduck paddling fast underwaterโ€ but โ€œwho says you have to be the duckโ€ aspect to our โ€œDo It Yourself HTML Editorโ€ today, adding onto the (blog posting) thread we left off yesterday with Do It Yourself HTML Textarea Editor CSS Pseudo Element Tutorial as shown below. The duck is paddling fast because โ€ฆ you guessed it โ€ฆ itโ€™s a โ€œdualโ€ purpose duck, and itโ€™s a PHP duck, with roles, helping out the HTML, of โ€ฆ

  1. processing long bits of HTML contained in the Textarea by having the HTML โ€œPOSTโ€ this large amount of data to the PHP for processing โ€ฆ via โ€ฆ
    • method=POST
    • action=./do_away_with_the_boring_bits.php

    โ€ฆ and that can come into play because of a new HTML form element validation onsubmit event added whereby the Textarea characteristics determine the approach to use to process that data

  2. a feature not really advertised, but catering for PHP code input from the user

With that last role, we do not execute the PHP at our rjmprogramming.com.au website, but rather, give you some advice regarding that great local Apache/PHP/MySQL web server product called MAMP (now that we have it pretty steady on both Mac and Windows here) and direct the user to a link to //localhost:8888/doityourself.php which will be workable should the user follow through on the PHP (contained in PHP variable $andintoitgoes of code snippet below) we download to the user โ€ฆ



$file = 'doityourself.php';

file_put_contents($file, urldecode($andintoitgoes));

header('Content-Description: File Transfer');

header('Content-Type: application/octet-stream');

header('Content-Disposition: attachment; filename="'.basename($file).'"');

header('Expires: 0');

header('Cache-Control: must-revalidate');

header('Pragma: public');

header('Content-Length: ' . filesize($file));

readfile($file);

unlink($file);

exit;

โ€ฆ that they could copy from their โ€œDownloadsโ€ folder to MAMPโ€™s htdocs (Document Root ( is equivalent to //localhost:8888/ )) folder. We got great help from โ€ฆ

  • here regarding the PHP download advice hooking up to the PHP readfile command
  • here regarding an error message we got with a very large amount of HTML POSTed to the PHP, in the context of using the Google Chrome web browser and getting the error โ€ฆ


    The XSS Auditor refused to execute a script in //localhost:8888/weather/do_away_with_the_boring_bits.php because its source code was found within the request. The auditor was enabled as the server sent neither an 'X-XSS-Protection' nor 'Content-Security-Policy' header.

โ€ฆ so, thanks.

The former role dovetails with another change to add to the โ€œdualโ€ roles โ€ฆ wouldnโ€™t you know it? โ€ฆ regarding the use of Cookies in that โ€ฆ

  • in the HTML โ€œparentโ€ we now have a mechanism whereby the user can flag that they do not want to use Cookies for a session of work by changing the default HTML bits that now go โ€ฆ
    To not use cookies put space between no and cookies in nocookies.
  • our PHP โ€œchildโ€, that is automatically called into play as a long HTML entry is detected by the HTML โ€œparentโ€, currently does not access nor create any Cookie data

And one last additional change, to add to the changes additional to the โ€œdualโ€ changes โ€ฆ perhaps this is โ€œdualโ€ dueal? โ€ฆ is that โ€ฆ

  • we now allow for HTML <body> code that is not <body> โ€ฆ eg. <body onload=โ€™dothisonloading();โ€™> โ€ฆ but please do not expect any Javascript defined here to be executed, but it will allow it through for you to see the โ€œlookโ€, at least, of such HTML

Now the โ€œparentโ€ HTML and Javascript could be called do_away_with_the_boring_bitsโšซhtml, changed from yesterday, in thisway, now supervises a PHP โ€œchildโ€ helper you could call do_away_with_the_boring_bitsโšซphp that assists with long HTML data that is POSTed and with some Cookie related (usage) flexibility.

As ever, we hope you get the context of all this by trying our liveโœ‚run link.


Previous relevant Do It Yourself HTML Textarea Editor CSS Pseudo Element Tutorial is shown below.

Do It Yourself HTML Textarea Editor CSS Pseudo Element Tutorial

Do It Yourself HTML Textarea Editor CSS Pseudo Element Tutorial

Thereโ€™s nothing like restrictive conditions to help you concentrate and not be lazy about what is, and in this case, what isnโ€™t, available to you to make some programming code happen. We havenโ€™t further delved into why, with our โ€œrecent daysโ€ โ€œDo It Yourself HTML Editorโ€ project, the Javascript within the head section doesnโ€™t work, yet the CSS within the head section does. It could be a thing to do with timing, or security, at the web browser โ€ฆ whatevvvvverrrrrrrr. Anyway, the point is, this hones curiosity back onto CSS for us, and this is rare compared to our far greater interest in Javascript and โ€œthe DOMโ€ โ€ฆ am sure, related to if I divulged Iโ€™d have to โ€ฆ?

But the other day I arrived at a webpage, which Iโ€™ve lost now โ€ฆ sorrrrrryyyy โ€ฆ looking up the question โ€œCan an HTML element be affected remotely to another just using CSS?โ€. And this website reminded me of the CSS pseudo element โ€œadjacent toโ€ (โ€œ+โ€ syntax) we discussed (particularly in the Stop Press) at WordPress Blog Complex Selectors Tutorial. This was a very important thing to remember, but it was not really what I was getting at with the question. I was after something just in CSS (with no Javascript DOM) that could change the characteristics of a โ€œcompletely removedโ€ HTML element caused by the user actions on a completely separate element. That โ€œ+โ€ CSS syntax is for elements that follow each other, but then โ€ฆ doh! โ€ฆ the penny dropped โ€ฆ that HTML element that follows can use (half of our usual CSS โ€œoverlay suspectsโ€) โ€ฆ

  • position:absolute;
  • top:0;
  • left:0;

โ€ฆ in our case, for the last two โ€ฆ to position that adjacent element anywhere you like relative to the other as a position on the resultant webpage, different to their โ€œdeliberate adjacencyโ€ โ€ฆ



<a class='dyk' href='#mypheading' style='cursor:pointer;text-decoration:underline;'>The rain in Spain,

Falls mainly,

On the plain</a>

<p id='mypheading'>Did you like our pithy thought?</p>

โ€ฆ you, the programmer, arrange, for these elements. Then, CSS โ€ฆ



<style>

.dyk:link + * { background-color:red; }

.dyk:link + *::after { content: ' Yes?'; }

.dyk:hover + * { background-color:yellow; }

.dyk:hover + *::after { content: ' Purrrrrhaps?'; }

.dyk:active + * { background-color:lightgreen; }

.dyk:active + *::after { content:' Wow, thanks for visiting.'; }

#mypheading { position:absolute; top:0; left:0; }

</style>

โ€ฆ takes on a webpage (functionality) look of Javascript DOM.

But, thereโ€™s more. Do you remember our CSS (wonder at the) CSS pseudos :after (and, implicitly, the ::after that we finally work out, today, how to โ€œworkโ€ โ€ฆ ie. itโ€™s the way to combine two pseudos onto the one definitional โ€œthoughtโ€) content and :before (and ::before) content we first talked about CSS Before and After Content Primer Tutorial? Combine this with thoughts above, and youโ€™ve got CSS doing very Javascript DOMโ€™y things (to HTML elements far removed, perhaps, from where the webpage user is interacting).

Given that it is awkward to work lots of Javascript DOM scripting in our โ€œDo It Yourself HTML Editorโ€ (at least for now) this is very interesting to us, so we have a dual purpose modus operandi โ€ฆ

โ€ฆ and โ€œdualโ€ being 2 probably means we have to show you a third HTML iframe view of it below (and say adios), separately, because there is no way on this Earth that Iโ€™m changing โ€œdualโ€ to being anything else โ€ฆ


Previous relevant Do It Yourself HTML Textarea Editor Shortcut Key Tutorial is shown below.

Do It Yourself HTML Textarea Editor Shortcut Key Tutorial

Do It Yourself HTML Textarea Editor Shortcut Key Tutorial

If you are using a laptop and following our thread of โ€œDo It Yourself HTML Editorโ€ blog postings, you may benefit from todayโ€™s progress on our web application, that you can also see being played out at Do It Yourself HTML Textarea Editor Shortcut Key Tutorial. We allow for the linking of yesterdayโ€™s Cursor Positioned HTML dropdown, introduced with Do It Yourself HTML Textarea Editor Cursor Tutorial as shown below, to a keyboard shortcut in the order โ€ฆ

  • Ctrl key (or Mac equivalent) (separated please) to the key letter starting that HTML element you are selecting via a dropdown eg. <p></p> could have a shortcut key Ctrl_P โ€ฆ or if already used โ€ฆ
  • Alt key (or Mac equivalent) (separated please) to the key letter starting that HTML element you are selecting via a dropdown eg. <span></span> could have a shortcut key Alt_S

A strong advantage using these (Cookieโ€™able) shortcuts is that you might be able to swing it to have the cursor stay where you want it in the HTML textarea element more often.

We would like to thank this wonderful webpage for some direction with this work, which was more involved than we thought it would be, and maybe too long in code changes to encapsulate here. In which case, it would be better to examine the HTML and Javascript could be called do_away_with_the_boring_bitsโšซhtml and changed from yesterday for shortcut key functionality in thisway, mainly regarding the organization of document onkeyup (keyboard) event logic. And, as per usual, here is a liveโœ‚run link for you to try this yourself, we hope?!


Previous relevant Do It Yourself HTML Textarea Editor Cursor Tutorial is shown below.

Do It Yourself HTML Textarea Editor Cursor Tutorial

Do It Yourself HTML Textarea Editor Cursor Tutorial

If you do lots of text editing perhaps you take the โ€œcursorโ€ for granted. But just as the stylus on a vinyl record makes the music in relation to its position, the equivalent of our text editing โ€œcursorโ€ is that it defines where to place the next typed character. Itโ€™s been around, as a concept, and survived, more to the point, for a long time now, as it has been around regarding much database SQL query design too. But today, for us, we are giving it some attention, because we want to โ€ฆ

  • read off the HTML textarea โ€œeditorโ€ elementโ€™s data its cursor position โ€ฆ and also โ€ฆ
  • set the cursor position of the HTML textarea โ€œeditorโ€ element after modifying its contents

That ability means that we now have the ability to offer the user of this HTML textarea โ€œeditorโ€ the chance to use โ€œhelperโ€ (like shortcut) HTML (select element) โ€œdropdownโ€ options to optionally speed up the creation of the HTML code. We realise this โ€œflies in the faceโ€ of a basic belief we have that it is good to hand code your HTML to learn it better, but the real fact is that the quicker your success, the more youโ€™ll want to try out other HTML ideas, and that makes these ideas worthwhile. These HTML drop downs are structured to mandatorily have the โ€ฆ

  • HTML element type โ€ฆ as for <p></p> โ€ฆ mandatory โ€ฆ and optional, for properties like โ€ฆ
  • id
  • class
  • title
  • style
  • src
  • href
  • value

โ€ฆ as well as several other property combinations, presented in combination with the HTML type whether that is apt, or not. Now, we may fix this perhaps, but we also see that it can serve a purpose to teach the HTML with trial and error thoughts as well. We see โ€œtrial and errorโ€ as an incredibly important idea here. Hand coding HTML by trial and error, sometimes, particularly in combination with a web browser Web Inspector product, are a potent mix to finding out how the client side of web applications work. Pretty obviously, looking at books and search engine information, as a conduit to websites like W3schools helps a lot too.

Speaking of useful websites, weโ€™d like to thank this really useful link is helping us with our code for getting the cursor position and setting the cursor position, respectively via โ€ฆ



function wherearewe(ota) { // thanks to //stackoverflow.com/questions/2897155/get-cursor-position-in-characters-within-a-text-input-field

// Initialize

var ipos = 0;

if (document.selection) { // IE Support

// Set focus on the element

ota.focus();

// To get cursor position, get empty selection range

var oselis = document.selection.createRange();

// Move selection start to 0 position

oselis.moveStart('character', -ota.value.length);

// The caret position is selection length

ipos = oselis.text.length;

} else if (ota.selectionStart || ota.selectionStart == '0') { // Firefox support

ipos = ota.selectionStart;

}

// Return results

//alert(ipos);

return ipos;

}

โ€ฆ and โ€ฆ



function setwherearewe(ota, wota) { // thanks to //stackoverflow.com/questions/2897155/get-cursor-position-in-characters-within-a-text-input-field

if (ota.setSelectionRange) {

ota.setSelectionRange(wota, wota);

} else if (ota.createTextRange) {

var range = ota.createTextRange();

range.collapse(true);

range.moveEnd('character', wota);

range.moveStart('character', wota);

range.select();

}

// Return cursor position

ota.focus();

//document.title=ota.value.length + ' vs ' + wota;

return wota;

}

Todayโ€™s HTML and Javascript code you could call do_away_with_the_boring_bitsโšซhtml changed in thisway regarding textarea cursor functionality and can be seen in live action here, as it can for WordPress 4.1.1โ€™s Do It Yourself HTML Textarea Editor Cursor Tutorial.


Previous relevant Do It Yourself HTML Primer Tutorial is shown below.

Do It Yourself HTML Primer Tutorial

Do It Yourself HTML Primer Tutorial

It is because of yesterdayโ€™s generic HTTP Cookie thoughts we had when we presented Job Search Grid Game Cookie Tutorial, as shown below, that makes us feel okay using โ€œDo It Yourselfโ€ in the blog posting title โ€œDo It Yourself HTML Primer Tutorialโ€. Without the use of cookies what we do today is probably not worth the bother because we โ€ฆ

  • want to get you programming in HTML and Javascript and CSS, if you are curious, and have never done it before, and want to taste that incredible feeling programmers get when they โ€œsee something workingโ€ โ€ฆ so โ€ฆ
  • we get you to draft up some HTML and Javascript and CSS in an HTML textarea element โ€ฆ and weโ€™ll talk more about the limitations here later on โ€ฆ
  • click or tap the โ€œTry your HTML and Javascript and CSS Aboveโ€ button โ€ฆ then โ€ฆ
    1. see the results of your work to the right in a light blue area โ€ฆ and โ€ฆ
    2. notice up the top middle a new (and/or updated) HTML (select element) dropdown with some datetime flagged previous โ€œHTML Editโ€ sessions you can recall โ€ฆ thatโ€™s HTTP Cookie functionality at work

The thing is about hand coded HTML, and we think you learn more by hand coding your HTML, at least in the early days, you are going to need a few goes at things to get things going, and yet, like most programmers, youโ€™ll be curious to know โ€œdoes it work yet?โ€ (sound familiar to โ€œare we there yet?โ€ to you?), so remember those โ€œworthwhile coming back toโ€ datetime stamps, is our advice โ€ฆ gratuitous, as always?!

Now about those restrictions to use. Alas, within the web page โ€œheadโ€ section โ€ฆ between <head> and </head> โ€ฆ the โ€ฆ

  • good news is that all the CSS styling โ€ฆ between <style> and </style> โ€ฆ seems to be fine, but, alas, the โ€ฆ
  • bad news is that the Javascript scripting โ€ฆ between <script type=โ€™text/javascriptโ€™> and </script> โ€ฆ does not work, as of this first draft โ€ฆ not with code between <script type=โ€™text/javascriptโ€™> and </script> between <body> and </body> โ€ฆ but event logic defined within <body> and </body> such as onclick= works (but no โ€œbody onload pleaseโ€, nor โ€œbody anything elseโ€ either โ€ฆ just plain straight โ€œbodyโ€ please)

Be that as it may, you can still see a lot happening with this arrangement, and be like us, perhaps, still in wonder at that feeling of โ€œlook at that, it works!โ€.

So, thatโ€™s the go, and you can try it out via this liveโœ‚run link and/or peruse the code behind this (just HTML and CSS and Javascript) โ€œDo It Yourself HTML Editorโ€ you could call do_away_with_the_boring_bitsโšซhtml yourself.


Previous relevant Job Search Grid Game Cookie Tutorial is shown below.

Job Search Grid Game Cookie Tutorial

Job Search Grid Game Cookie Tutorial

Yesterday we got to a point with a web project we were working on called the โ€œJob Search Grid Gameโ€ (and thanks here to Science Puzzles for Young Einsteins by Helene Hovanec ISBN 0-8069-3542-1 for the inspiration) and we ended up with a game that could use Content Management System ideas whereby the user could control the content of the game. Guess you might categorize this functionality as โ€œpersonalizationโ€.

That โ€œpersonalizationโ€ only lasted as long as that web browser session lasted, and there was no recourse to recall any of that user โ€œpersonalizedโ€ game data settings again, but today weโ€™ve started, by using this project as the โ€œguinea pigโ€ project to start down the road of seeing whether the use of HTTP cookies might assist to extend functionality for โ€ฆ

  • only users who tailor their game via that โ€œManagementโ€ link down the bottom of the game โ€ฆ and who โ€ฆ
  • use this newโœ‚live run link (rather than the oldโœ‚live run link) โ€ฆ because there are checks to see that โ€ฆ
  • functionality occurs if the calling HTML has code such as <div id=dcookies_okay><input type=hidden id=cookies_okay value=โ€></input></div>

Weโ€™ve tried thoughts that are quite โ€œgenericโ€ by nature here, but we have to better monitor web browser cookie usage limits, as we go further down the road, but we โ€ฆ

  • in a web browser address bar URL such as //www.rjmprogramming.com.au/HTMLCSS/job_search_grid_game.htm that bold part is combined with a reworked date and timestamp to be the โ€œnameโ€ of the cookie โ€ฆ and only if โ€ฆ
  • the web browser address bar URL must contain a โ€œ&โ€ to attract any attention as a candidate for the creation of a new cookie โ€ฆ which, if never encountered before โ€ฆ
  • placed on a dropdown โ€œcookieโ€ list of game configurations that indicate the date and timestamp for reference purposes โ€ฆ and, as for all web browser scenarios โ€ฆ
  • cookie logic only works while the user has not cleared the Browser History at their web browser

โ€ฆ and that HTML (select element) dropdown is placed, in โ€œoverlayโ€ style โ€ฆ

  • position:absolute; top:0px ; left: 300px;
  • opacity: 0.7;
  • zIndex: 56;
  • โ€ฆ the Javascript logic for which has been placed into some external Javascript you could call cookie_getโšซjs that we are going to place at //www.rjmprogramming.com.au/ (document root) for maximal access purposes, and which is called by the job_search_grid_gameโšซhtm via โ€ฆ

    <script type='text/javascript' src='../../../../cookie_get.js'></script>

    โ€ฆ which is like saying any webpage out from document root to four subfolder hierarchy could all access this external Javascript with the same codeline between <head> and </head> as above, and that external Javascript uses a setTimeout function call to separate its logic from any clashes with document.body onload event logic, or any jQuery document ready logic.

    Now the HTML and Javascript could be called job_search_grid_gameโšซhtm and changed from yesterday for HTTP Cookie functionality in thisway.

    We hope you get something out of these โ€œearly daysโ€ HTTP Cookie thoughts, that we may apply to some of our game web applications.


    Previous relevant Job Search Grid Game Tutorial is shown below.

    Job Search Grid Game Tutorial

    Job Search Grid Game Tutorial

    We are always on the lookout for a good quiz or game. But what if that idea is โ€œsort ofโ€ โ€ฆ both? Well, we just had to give the dog a bone! But we digress.

    This is where we have to thank Science Puzzles for Young Einsteins by Helene Hovanec ISBN 0-8069-3542-1 profusely. This book is full of wonderful brain games that combine puzzle feels with game feel and quiz feel. We normally like to shape a game based on another we stumble across, and add our own content, but, alas, the content here for todayโ€™s game is so good, it makes my brain hurt thinking of another set to make it work. And that is where we โ€œvalue addโ€. Not with the โ€œdefault contentโ€ of the game, but to value add to the experience we CMS it. So what does โ€œCMS itโ€ mean? Well, โ€œCMSโ€ stands for โ€œContent Management Systemโ€, and we use the principles of CMS to encapsulate all the variable aspects we can think of about this game โ€ฆ within reason and present that in an HTML form โ€ฆ

    • method=GET
    • action=./job_search_grid_game.html

    โ€ฆ our usual โ€œsuspectsโ€ for such goings on. So should the information not be too long, this should allow the user to set their own content for the game โ€ฆ all you young and old Einsteins out there.

    However, if you find todayโ€™s game interesting and/or stimulating, rest assured Helene Hovanec has filled a book full of puzzles and quizzes and challenges like this, and so we would recommend you get out there and buy Science Puzzles for Young Einsteins by Helene Hovanec ISBN 0-8069-3542-1.

    Within the HTML and Javascript job_search_grid_gameโšซhtml code you will find lots of calls to Javascriptโ€™s eval method to get a CMS job done, but not involve a serverside language โ€ฆ does not compute โ€ฆ whatttevvvvvvvver.

    If this was interesting you may be interested in this too.


    If this was interesting you may be interested in this too.


    If this was interesting you may be interested in this too.


    If this was interesting you may be interested in this too.


    If this was interesting you may be interested in this too.


    If this was interesting you may be interested in this too.


    If this was interesting you may be interested in this too.


    If this was interesting you may be interested in this too.

This entry was posted in eLearning, Event-Driven Programming, Tutorials and tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , . Bookmark the permalink.

3 Responses to Do It Yourself HTML Editor Integration Tutorial

Leave a Reply

Your email address will not be published. Required fields are marked *