Contact Us Feedback Filtering WordPress Tutorial
โœ‚๐Ÿƒ๐Ÿพโ€โ™€๏ธ๐Ÿƒ๐Ÿผโ€โ™‚๏ธ
๐Ÿ“–

Contact Us Feedback Filtering WordPress Tutorial

Contact Us Feedback Filtering WordPress Tutorial

Yesterdayโ€™s Emoji Contact Us Feedback Filtering Tutorialโ€˜s new filtering functionality related to a โ€œsectionโ€ of the โ€œFeedbackโ€ web application it was applied to. And this exemplifies, for us, that the term โ€œmodularisationโ€ can take on various โ€œlevelsโ€ of modularisation such as โ€ฆ

  • high level modularisation as per MVC types of coding styles that modularise the underlying code, and in all likelihood, the โ€œlookโ€ of the resultant web pages โ€ฆ all the way through to โ€ฆ
  • โ€ฆ OOP code classes line up with web application โ€œitem lookโ€ โ€ฆ to โ€ฆ
  • a web application โ€œlooks modularโ€, with elements organized into โ€œcontainerโ€ elements, but to look at the Javascript, and maybe the HTML of the web application, it is hard to see any of this โ€œmodularisationโ€ in terms of its code

If it is your job to โ€œreduceโ€ a web application into a โ€œcontainedโ€ section of the web page display of that web application, even that (most rudimentary) last level of โ€œmodularisationโ€ above is fine to โ€ฆ

  • work out what differentiates normal โ€œbusyโ€ display from the pared down โ€œreducedโ€ look โ€ฆ today, for us, itโ€™s ?justideas=y added to our URL to become todayโ€™s reducedโœ‚live run link (as distinct to a fullโœ‚live run link)
  • work out codewise how to manifest that difference above, and that is, for us โ€ฆ


    if (document.URL.indexOf('justideas=') == -1) {

    // pared down "reduced" look code goes here

    } else {

    // normal "busy" display code goes here

    }

  • think about when and where to intervene in the code, so that you can come up with a code line like todayโ€™s โ€ฆ




    if (document.URL.indexOf('justideas=') != -1) {


    document.body.innerHTML='<div id=ideas>' + ideasprefix + amongthis + ideassuffix + '</div>';




    } else if (navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i)) {




    document.getElementById('ideas').innerHTML=ideasprefix + amongthis + '<br><iframe id=ideasiframe style="display:none;-webkit-overflow-scrolling:touch;overflow:scroll;" src=""></iframe>' + ideassuffix;




    } else {




    document.getElementById('ideas').innerHTML=ideasprefix + amongthis + ideassuffix;




    }



    โ€ฆ where ideas is an element โ€œIDโ€ (of a โ€œcontainerโ€ element) both before (when it is a table cell (td) element) and after (when it is a div element, on its own within the document.bodyโ€™s content (ie. its innerHTML))

  • โ€ฆ for us, that being the successful HTML iframe onload event (Client Pre-emptive Iframe logic) code, after which the HTML dropdown containing blog posting unique word โ€œoptionโ€ tags are complete
  • use a web inspector to see where else in the whole Javascript logic youโ€™ll need to refine with โ€œif (document.URL.indexOf(โ€˜justideas=โ€™) != -1) { } else { }โ€ interventions, via those web inspector Console tab errors, that are bound to occur instigating the steps above

So this leaves us with โ€œwhy?โ€. Well, what is a โ€œsectionโ€ of the โ€œFeedbackโ€ web application could happily sit as a WordPress Blog menu item, because we can imagine you, the reader, could benefit as a researcher, or โ€œdriller innerer oferer more detail and more specificityโ€ might like to hone in on a particular blog posting topic of interest using this technique.

What of the WordPress end of this interfacing of functionality? Further down the โ€œwellโ€ (tee hee), this is as easy as falling off a log โ€ฆ

  • Pick a menu item name, ours being โ€œWord Searchโ€
  • as admin of your WordPress Blog use the Add Page icon to type โ€œWord Searchโ€ into the title field โ€ฆ and then in the โ€œbody textareaโ€ โ€ฆ


  • <iframe src='//www.rjmprogramming.com.au/HTMLCSS/feedback.htm?justideas=y' title='Word Search'></iframe>

  • Add or Update into the WordPress Blog menu

Sew if you like, while you see the feedbackโšซhtm HTML and Javascript feedback functionality that changed from that last time to be able to be โ€œreducedโ€ (aka ?justideas=y) in thisway and which you can test for yourself at this reducedโœ‚live run link (the independent way, or the WordPress way) or fullโœ‚functionality live run link.



Previous relevant Emoji Contact Us Feedback Filtering Tutorial is shown below.

Emoji Contact Us Feedback Filtering Tutorial

Emoji Contact Us Feedback Filtering Tutorial

Do not know if you have been trying the functionality in the third table cell up near the top of the Feedback web application last talked about at yesterdayโ€™s Emoji Contact Us Feedback Email Animation Tutorial but if you have (or havenโ€™t (welcome aboard)) that dropdown in that third cell contains all the blog postings on this blog, as a prompter for a topic of an email you could send to us as an email piecing together your feedback.

Todayโ€™s improvements concern two areas โ€ฆ

  • redelving into our favourite HTML โ€œrevealโ€ tool, the details/summary partnership and the idea that the summary part of this could contain an HTML select (dropdown) element โ€ฆ and you might call todayโ€™s work the โ€œguinea pig projectโ€ here, as we expect to improve, and also โ€ฆ
  • finding a way, that we think has great potential, for people using this blog for research and development and/or as a learning tool, a โ€œfilteringโ€ mechanism to hone in on topics of interest (which now can open a popup or iframe (for mobile)) to any chosen blog posting of interest

How do we determine topics of interest? Scan every word weโ€™ve ever used in a blog posting title, and if that word satisfies a few criteria, and hasnโ€™t been mentioned before, gets added to an array of different such words, sorted at the end and added (ie. appended to the HTML select elementโ€™s innerHTML property) to the pre-existing options of that details/summary dropdown, that being โ€ฆ

โ€ฆ or as HTML (with innerHTML being emboldened โ€ฆ Iโ€™d just give up and take it to the beach โ€ฆ
You and innerHTML and Bondi Beach
โ€ฆ if I were you
) โ€ฆ



<select id='bigselect'><option value=''>Ideas:</option><option value='Cut to the Chase'>Cut to the Chase</option><option value='Feedback'>Feedback ... all versus ...</option></select>

โ€ฆ whereby if the user selects one of these โ€œfilterersโ€, they being given lowercase values, we filter that dropdownโ€™s initial โ€œbig contentโ€ filtering it down into โ€œlittle contentโ€ via that tried and true Siri dropdown, go and filterre-establishment of a smaller innerHTML property for that details/summary dropdown, the understanding being we can at any time go back to the โ€œbig contentโ€ by re-establishing the innerHTML to this (Javascript) global variable value should the user repick one of those non-lowercase options.

Whatโ€™s โ€œCut to the Chaseโ€? Itโ€™s our trying to help busy blog readers just wanting to jump to executing the โ€œaction itemโ€ of a blog posting straight away.

So, see the feedbackโšซhtm HTML and Javascript feedback functionality that changed from that last time in thisway and which you can test for yourself at this liveโœ‚run link.


Previous relevant Emoji Contact Us Feedback Email Animation Tutorial is shown below.

Emoji Contact Us Feedback Email Animation Tutorial

Emoji Contact Us Feedback Email Animation Tutorial

Adding to yesterdayโ€™s Emoji Contact Us Feedback Animation Tutorialโ€˜s Feedback animation beginnings, after todayโ€™s work, we can email animated GIF animations via an email attachment.

To avoid too many files being involved we sharpen up the data URI usage aspects to the โ€ฆ

โ€ฆ animated GIF email attachment functionality as you can see below โ€ฆ

Animated GIF countdown via Feedback web application usage

As you might imagine, using data URIs can avoid some file creation but asks a lot of data transfer techniques, hence the need below (in an example of 4 slides to an animated GIF where you can imagine the huge data URI strings within the src=โ€โ€s below) with the HTML form navigation used between the supervisor and the animated GIF creator PHP โ€ฆ



<form target='gifa' style='display:none;' action='//www.rjmprogramming.com.au/PHP/animegif/tutorial_to_animated_gif.php' method='POST'>

<input type=hidden id=slideshow name=slideshow value=' src="[dataURIslide1]" src="[dataURIslide2]" src="[dataURIslide3]" src="[dataURIslide4]" '></input>

<input type=hidden id=delay name=delay value='4000'></input>

<input type=hidden id=stitle name=stitle value='Animated Feedback'></input>

<input type=hidden id=outfile name=outfilex value='animated_gif_slideshow'></input>

<input id=olbit type=submit value=Submit></input>

</form>

โ€ฆ needs that method=โ€POSTโ€ to work these animated GIF creations.

We must say here, that to use an animated GIF is just one slideshow (or animation) approach, and we mention many other ideas regarding slideshow usage. Another we thought about would have involved HTML attachments that use no Javascript, just CSS, to create animations via document.body background images. We may try this technique further down the track.


Previous relevant Emoji Contact Us Feedback Animation Tutorial is shown below.

Emoji Contact Us Feedback Animation Tutorial

Emoji Contact Us Feedback Animation Tutorial

As we said early on in the recent blog postings on this thread of postings last talked about with yesterdayโ€™s Emoji Contact Us Feedback Copy and Paste Tutorial โ€ฆ

โ€ฆ but we envisage, optimistically, to involve animation and more refined positioning possibilities

Well, the news is, weโ€™re getting closer, by allowing for the โ€œinternal use onlyโ€ creation (and playing) of an animation slideshow from changing canvas image representations, if that is what you want to do, that is. It uses a self-destructing HTML div element presentation weโ€™re not sure whether weโ€™ve ever used before. As you may know, an HTML div element, being the โ€œcontainerโ€ (innerHTML) element that it is, can self-destruct via a myriad of methods, the last of which below being our method for todayโ€™s work โ€ฆ

  • Javascript DOM [divElementObject].style.display=โ€™noneโ€™;
  • Javascript DOM [divElementObject].style.visibility=โ€™hiddenโ€™; // this one may leave whitespace depending
  • Javascript DOM [divElementObject].style.width=โ€™0pxโ€™; (or [divElementObject].style.height=โ€™0pxโ€™; โ€ฆ you get the gist?)
  • Javascript DOM [divElementObject].style.top=โ€™-700pxโ€™; (or [divElementObject].style.left=โ€™-500pxโ€™; โ€ฆ you get the gist?)
  • Javascript DOM [divElementObject].style.opacity=โ€™0โ€ฒ;
  • Javascript DOM [divElementObject].style.fontColor=โ€™transparentโ€™; // if data is textual and this one may leave whitespace depending
  • Javascript DOM [divElementObject].className='[classThatMakesDivElementInvisible]โ€™; (or [divElementObject].className+='[classThatMakesDivElementInvisible]โ€™; โ€ฆ you get the gist?)
  • Javascript DOM [divElementObject].innerHTML=โ€;

โ€ฆ which we make happen today, after that HTML div is given the contents of each โ€œslideโ€ of the animation (or slideshow), separated, just for now, via a 4 second delay as per โ€ฆ



var filmslidenumber=1, fromfilmslidenumber=0, tofilmslidenumber=0;



function tanimation() {

if (fromfilmslidenumber < tofilmslidenumber) {

document.getElementById('dslideshow').innerHTML='<img style="border:8px dashed lightblue;" src=' + document.getElementById('tablefilmimg' + eval(1 + fromfilmslidenumber)).src + '></img>';

fromfilmslidenumber++;

setTimeout(tanimation, 4000);

} else {

document.getElementById('dslideshow').innerHTML='';

}

}


function animation() {

fromfilmslidenumber = 0;

tofilmslidenumber = eval(-1 + filmslidenumber);

document.getElementById('dslideshow').innerHTML='<img style="border:8px dashed lightblue;" src=' + document.getElementById('tablefilmimg1').src + '></img>';

location.href='#dslideshow';

fromfilmslidenumber++;

setTimeout(tanimation, 4000);

}


function addtofilm() {

var ptoh=elem.toDataURL('image/png',0);

if (filmslidenumber == 1) {

if (document.getElementById('eimg').innerHTML == '') {

if (document.getElementById('divannotation')) {

if (('' + document.getElementById('divannotation').style.top).indexOf('525') != -1) {

document.getElementById('divannotation').style.top=eval(eval(('' + document.getElementById('divannotation').style.top).replace('px','')) + 240) + 'px';

}

}

}

document.getElementById('eimg').innerHTML='<table id=tablefilm><tr id=tablefilmtr><td id=tablefilmcell1><img id=tablefilmimg1 style="border:8px dashed lightgreen;" src=' + ptoh + '></img></td></tr><tr id=tablefilmfooter><td id=tablefilmfooter1><a href=#tablefilmfooter1>Slide</a> 1 of ...</td></tr></table>';

} else {

document.getElementById('tablefilmtr').innerHTML+='<td id=tablefilmcell' + filmslidenumber + '><img id=tablefilmimg' + filmslidenumber + ' style="border:8px dashed lightgreen;" src=' + ptoh + '></img></td>';

document.getElementById('tablefilmfooter').innerHTML=document.getElementById('tablefilmfooter').innerHTML.replace(' ...',' <a href=#tablefilmfooter' + filmslidenumber + '>...</a>') + '<td id=tablefilmfooter' + filmslidenumber + '><a href=#tablefilmfooter1>Slide</a> ' + filmslidenumber + ' of ...</td>';

}

if (filmslidenumber == 2) {

document.getElementById('daddtofilm').innerHTML+=' <input style=display:inline-block; type=button onclick=animation(); value="Play Animation" id=banimation></input>';

}

filmslidenumber++;

}

โ€ฆ helped out by additional HTML as per โ€ฆ



document.write('<table style=width:100%;><tr><td><div id=dslideshow></div><h1 id=myh1 align="center">Feedback</h1></td><td style=width:90%; nowrap><div style=display:inline-block;width:100%;overflow-x:scroll; id=dviai><form style=display:none;width:100%;overflow-x:scroll; action=fairy_story_assistant.php method=GET target=fsa><input name=emoji id=iemoji value=></input><input type=submit id=isubm value=Submit></input></form><iframe style=display:none;width:100%;overflow-x:scroll; id=fsa name=fsa src=></iframe></div></td></tr></table>');

โ€ฆ and some changed Javascript as per โ€ฆ



document.getElementById('divannotation').innerHTML=document.getElementById('divannotation').innerHTML.replace('Annotations++','Annotations++ <input onclick="document.getElementById(' + "'" + 'canbet' + "'" + ').value=' + "'" + 'transparent' + "'" + ';" type=button value="Copy (via 2) and Paste (via 1) Parts of Canvas Above to Canvas Above"></input><br><div id=daddtofilm><input onclick="addtofilm();" value="Add to Animated Film" type="button" title="Make an Animation"></input></div>').replace('<input type="text" id="mycolour"','<input type="color" id="myrcolour" value="black" onchange="if (this.value.toLowerCase().indexOf(' + "'" + 'transparent' + "'" + ') == -1) { obeforetransparent=this.value; } document.getElementById(' + "'" + 'mycolour' + "'" + ').value=this.value;"></input> <input onblur="if (this.value.toLowercase().indexOf(' + "'" + 'transparent' + "'" + ') == -1) { obeforetransparent=this.value; }" type="text" id="mycolour"').replace('<input id="mycolour"','<input type="color" id="myrcolour" value="black" onchange="if (this.value.toLowerCase().indexOf(' + "'" + 'transparent' + "'" + ') == -1) { obeforetransparent=this.value; } document.getElementById(' + "'" + 'mycolour' + "'" + ').value=this.value;"></input> <input onblur="if (this.value.toLowerCase().indexOf(' + "'" + 'transparent' + "'" + ') == -1) { obeforetransparent=this.value; } " id="mycolour"').replace("</form>","<input type=hidden id=canbet value=></input><input type=hidden name=from id=from value=''></input></form>").replace("</form>","<input type=hidden name=cc id=cc value=''></input></form>").replace("</form>","<input type=hidden name=bcc id=bcc value=''></input></form>");

Now to think about emailing these optional animations.

Today, also, weโ€™ve made the CSS much better suited to the mobile devices you may be using, by introducing the equivalent canvas onclick event logic mapped to the touchstart event, that mobile devices detect.

Todayโ€™s changes just involved feedbackโšซhtm HTML and Javascript feedback functionality that changed from that last time in thisway and which you can test for yourself at this liveโœ‚run link.


Previous relevant Emoji Contact Us Feedback Copy and Paste Tutorial is shown below.

Emoji Contact Us Feedback Copy and Paste Tutorial

Emoji Contact Us Feedback Copy and Paste Tutorial

Weโ€™ve got quite a variety of functional improvements on top of what was there already with yesterdayโ€™s Emoji Contact Us Feedback Cross-Browser Tutorial (optionally email) Feedback web application. These changes, today, in brief, involved โ€ฆ

  • copy and paste with the canvas element whose image representation forms the body of an email sent via this web application
  • in order to ensure the consistency of canvas (y or top) positioning we had quite a lot to do, such as โ€ฆ
    1. no longer placing the image that results from โ€œSend Feedback and Show Body of Email as Imageโ€ up the top right, but now to under the canvas with a pink dashed border (for clarity)
    2. no longer making the emojis map (big) into the header h1 element but now in a table cell as per โ€ฆ


      <td style=width:90%; nowrap><div style=display:inline-block;width:100%;overflow-x:scroll; id=dviai><form style=display:none;width:100%;overflow-x:scroll; action=fairy_story_assistant.php method=GET target=fsa><input name=emoji id=iemoji value=></input><input type=submit id=isubm value=Submit></input></form><iframe style=display:none;width:100%;overflow-x:scroll; id=fsa name=fsa src=></iframe></div></td>


      โ€ฆ ensuring it takes up as little height as possible, but stretches out to the right as much as it likes, but you can scroll to those parts way out off the screen to the right
  • allowing some web browsers make use of their HTML5 input type=color colour wheel methods of defining annotation and canvas drawing foreground colour
  • inform the user, via a self-closing popup window, that the PHP mail has sent an email, the look of which has a little bit of โ€œAndroid toastโ€ about it

So letโ€™s talk about the โ€œCopy (via 2) and Paste (via 1) Parts of Canvas Above to Canvas Aboveโ€. After a little dead end thinking pixel level thoughts might be the go โ€ฆ no โ€ฆ it was image level thoughts we needed, trapped at the canvas elementโ€™s onclick logic โ€ฆ

  • the Copy (via 2 click/touch) aspects via [canvasElement].toDataURL(โ€˜image/pngโ€™,0) copies the whole canvas, but while we are at that we are recording the userโ€™s last two clickโ€™s โ€ฆ
    1. The x coordinate where to start clipping
    2. The y coordinate where to start clipping
    3. The width of the clipped image
    4. The height of the clipped image

    โ€ฆ which weโ€™ll come back to, and now to convert that into image data (for the statically defined HTML <img id=โ€™myimโ€™ style=โ€™dispay:none;โ€™ src=โ€ title=โ€ alt=โ€></img>), we โ€ฆ


    omyimgdata=elem.toDataURL('image/png',0);

    document.getElementById('myim').style.width=elem.style.width;

    document.getElementById('myim').style.height=elem.style.height;

    document.getElementById('myim').src=omyimgdata;

    omidatax=eval(Math.min(x,lastx));

    omidatay=eval(Math.min(y,lasty));

    omidataw=Math.abs(x - lastx);

    omidatah=Math.abs(y - lasty);

  • the Paste (via 1 click/touch) aspect using the โ€œfull mightโ€ of the [canvasContext].drawImage() calling incarnations as per โ€ฆ


    context.drawImage(document.getElementById('myim'),omidatax,omidatay,omidataw,omidatah,x,y,omidataw,omidatah);

Code changes, today, involved the PHP email helper โ€ฆ


Previous relevant Emoji Contact Us Feedback Cross-Browser Tutorial is shown below.

Emoji Contact Us Feedback Cross-Browser Tutorial

Emoji Contact Us Feedback Cross-Browser Tutorial

Yesterdayโ€™s Emoji Contact Us Feedback Textarea Tutorial had us more integrated involving emojis with the HTML5 canvas element we use as the source for an image attachment to a potential email for use as Feedback, perhaps.

There are cross-browser issues here.

  1. Firefox is not transferring the emojis to the canvas, at least for us.
  2. And Safari does not offer great two finger gesture options when hovering over the canvas, such as โ€œSave Image Asโ€ฆโ€. So, today, we offer those Safari users the chance to be able to โ€œSave Image Asโ€ฆโ€ image (email attachment) download possibilities by offering a new button called โ€œSend Feedback and Show Body of Email as Imageโ€. Use this, and that image that results is downloadable.

In order to allow for that last one, and not wrongly overlay the Annotations div element menus, we adjust the top (y) co-ordinate of the Annotations div element menus as per โ€ฆ



if (document.getElementById('divannotation')) {

if (('' + document.getElementById('divannotation').style.top).indexOf('485') != -1) {

document.getElementById('divannotation').style.top=eval(eval(('' + document.getElementById('divannotation').style.top).replace('px','')) + 300) + 'px';

}

}

โ€ฆ a technique that may fail for elements that do not define the top property, whether that be teamed or not (as for today) with position:absolute property โ€ฆ



document.getElementById('divannotation').style.top='485px';

A different child PHP helper to yesterdayโ€™s one needed work today โ€ฆ


Previous relevant Emoji Contact Us Feedback Textarea Tutorial is shown below.

Emoji Contact Us Feedback Textarea Tutorial

Emoji Contact Us Feedback Textarea Tutorial

Yesterdayโ€™s Emoji Contact Us Feedback Integration Tutorial started us down the road of trying to make emoji usage more functional with the annotation aspects of our Feedback (Contact Us type of) web application.

We have a textarea HTML element currently in use as a means by which we collect textual data, that may go into the feedback, and then onto an email, perhaps. Weโ€™ve lately been preferring to use โ€ฆ

  • div contenteditable=true โ€ฆ in preference to โ€ฆ
  • textarea

โ€ฆ and though we keep the textarea as the interfacing element of โ€œtextual data collectionโ€ for the user, today, it gets helped out by accompanying โ€ฆ

  • div contenteditable=true โ€ฆ and encompassing the textarea we have a new โ€ฆ
  • div โ€ฆ acting as a parent

How come? Well, in our experience, when you mix up the keyboard character type of text with emoji HTML Entity โ€œtextualโ€ data, the relationship between the textareaโ€™s โ€ฆ

  • value property
  • innerHTML property

โ€ฆ unique among elements, and really generally useful, stuffs up, or we stuff up, one of the two.

But โ€ฆ and didnโ€™t you just know thereโ€™d be a โ€œbutโ€ โ€ฆ combine the content of the first โ€œshadowingโ€ div element with a complete rewrite of the textarea via the innerHTML property of the โ€œencasingโ€ second div (parent) element and you can go back to the conditions at the start of the web application, as far as the textarea is concerned, where you can place HTML Entity representations of that mix of textual data that may include emojis, into the textareaโ€™s innerHTML via code like โ€ฆ



// store current innards of the textarea

var mtv=top.document.getElementById('myfeedback').value;

// at to those textarea innards the current HTML Entity emoji data addition and place into the innerHTML of the "shadowing" div contenteditable=true element

top.document.getElementById('dmyfeedback').innerHTML=mtv + cnotatend;

// clear contents of textarea

top.document.getElementById('myfeedback').value='';

// repopulate textarea in an innerHTML (HTML Entity friendly) way by reinstating its whole (outerHTML) instantiation by setting the innerHTML of that textarea's encasing div element, and in between where > meets </textarea> place that same div contenteditable=true innerHTML where spaces map to (HTML Entity) &nbsp;

top.document.getElementById('ddmyfeedback').innerHTML='<textarea style="color=lightgray;width:200px;" rows=6 cols=40 id="myfeedback" title="Feedback" value="" onchange=" pseudo_sentence=this.value; placetext(); " onblur=" pseudo_sentence=this.value; placetext(); ">' + mtv.replace(/\ /g,'&nbsp;') + cnotatend + '</textarea>';

โ€ฆ all carried out with an HTML iframe hosted child PHP helper โ€ฆ


Previous relevant Emoji Contact Us Feedback Integration Tutorial is shown below.

Emoji Contact Us Feedback Integration Tutorial

Emoji Contact Us Feedback Integration Tutorial

Weโ€™re revisiting the work of Contact Us Feedback Android Tutorial which features โ€ฆ

  • email
  • feedback
  • canvas

โ€ฆ with some early days integration with the recent work of Emoji Name Search Fairy Story PHP Tutorial, because we think the addition of more sophisticated emoji search (and later, usage) functionality would be a good improvement. Whoโ€™s to know if we can do it, but we envisage, optimistically, to involve animation and more refined positioning possibilities.

Hope you can hang around for the full journey that starts with feedbackโšซhtm HTML and Javascript feedback functionality that changed from that last time in thisway and which you can test for yourself at this liveโœ‚run link.


Previous relevant Contact Us Feedback Android Tutorial is shown below.

Contact Us Feedback Android Tutorial

Contact Us Feedback Android Tutorial

A couple of days ago we presented Contact Us Feedback Primer Tutorial as shown below โ€ฆ and said โ€ฆ

Maybe you remember reading about the recent Feedback functionality here at RJM Programming when we presented Feedback Email Attachment Iframe Tutorial. It struck us that it would be good to extend the โ€œContact Usโ€ webpage here at RJM Programming by adding a โ€œFeedbackโ€ form to the โ€œContact Usโ€ now presented via an HTML select โ€œdropdownโ€ element.

โ€ฆ well, we discovered down the track that the behaviour of the HTML a tagโ€™s mailto: href parameter navigation needs to be nuanced for Android (mobile) usage.

A bit of reading on this lead us in one direction and the useful link pulled us completely back into a good line, thanks, via the advice โ€ฆ

window.top.location = โ€œ//example.comโ€;

โ€ฆ but, for us, that goes (something like) โ€ฆ



window.top.location = "mailto:fill.in@email.address?subject=blah&cc=&bcc=&body=Lots%20Of%20Blah";

โ€ฆ presumably to get the external Android Mail app into the picture. On the way this link was useful, also, so, thanks.

Trap for young players? (Am blushing)

So for feedback functionality what changed for this Android fix (which also has trouble, perhaps, with inhouse Javascript functions called โ€œcaptureโ€?!) was โ€ฆ

So โ€ฆ pleeeeease donโ€™t fall in the trap, like me?!


Previous relevant Contact Us Feedback Primer Tutorial is shown below.

Contact Us Feedback Primer Tutorial

Contact Us Feedback Primer Tutorial

Maybe you remember reading about the recent Feedback functionality here at RJM Programming when we presented Feedback Email Attachment Iframe Tutorial. It struck us that it would be good to extend the โ€œContact Usโ€ webpage here at RJM Programming by adding a โ€œFeedbackโ€ form to the โ€œContact Usโ€ now presented via an HTML select โ€œdropdownโ€ element.

You can see the gist of what is involved with todayโ€™s tutorial picture for the creation of a short worded feedback email, via your default email client (ie. an HTML a mailto: link is used), perhaps regarding a tutorial here at this blog, which can be chosen via an HTML select โ€œdropdownโ€ element populated from the RJM Programming Landing Page, the logic for which you can read about with Client Pre-emptive Iframe Crontab Curl Rotated Report Tutorial. As you would glean from this blog posting title, what we are involving here is โ€ฆ

    1. WordPress Blogโ€™s MySql database
    2. curl call of PHP to extract blog posting information
    3. crontab scheduled execution of PHP to assemble this data into an updated HTML select โ€œdropdownโ€ element in the RJM Programming Landing Page
  • an HTML iframe element loads the Landing Page and the crontab/curl inspired PHP/MySql data is extracted (at that iframeโ€™s onload event) and reworked to the purposes of this Feedback functionality

So what changed here?

Maybe this is food for thought for your own โ€œContact Usโ€ page, perhaps second only to โ€œLanding Pageโ€ in popularity on todayโ€™s websites of the โ€œnetโ€.

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.


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.

Leave a Reply

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