{"id":72209,"date":"2026-02-24T03:01:00","date_gmt":"2026-02-23T17:01:00","guid":{"rendered":"https:\/\/www.rjmprogramming.com.au\/ITblog\/?p=72209"},"modified":"2026-02-25T16:58:58","modified_gmt":"2026-02-25T06:58:58","slug":"document-root-relative-folder-listing-links-word-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/document-root-relative-folder-listing-links-word-tutorial\/","title":{"rendered":"Document Root Relative Folder Listing Links Word Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Document Root Relative Folder Listing Links Word Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/uses_word.gif\" title=\"Document Root Relative Folder Listing Links Word Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Document Root Relative Folder Listing Links Word Tutorial<\/p><\/div>\n<p>The <i>word<\/i> is, in workplaces all around Earth now, workers are unwrapping their Mars Bars and shaping to use &#8230;<\/p>\n<p><code><br \/>\nWord<br \/>\n<\/code><\/p>\n<p> &#8230; <font size=1>huh?! Isn&#8217;t that a coincidence?!  Who would have thunk it.<\/font>  They are constructing documents.  So that being the case, do you think &#8230;<\/p>\n<blockquote><p>\nThe barsoomian is, in workplaces all around Mars now, martians are unwrapping their Earth Bars and shaping to use &#8230;<br \/>\n<br \/>\n<code><br \/>\nWord<br \/>\n<\/code><br \/>\n<br \/>\n &#8230; to write haikus\n<\/p><\/blockquote>\n<p>?  But if not, why not?!<\/p>\n<p>As such, the creation of a &#8220;Word assembly&#8221; is our &#8220;fourth cab off the rank&#8221; as an output format offered to users trying out the recent select (ie. dropdown) &#8220;assemblies&#8221; we PowerPoint<sup>ized<\/sup> yesterday with <a title='Document Root Relative Folder Listing Links PowerPoint Tutorial' href='#drrfllppt'>Document Root Relative Folder Listing Links PowerPoint Tutorial<\/a>.  We use a window.open popup again, latching onto the PHP recipient code &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\n  $pconvprefix='\/bin\/';<br \/>\n  if (file_exists('\/usr\/local\/bin\/pandoc')) {<br \/>\n    $pconvprefix='\/usr\/local\/bin\/';<br \/>\n  } else if (!file_exists('\/bin\/pandoc')) {<br \/>\n    $pconvprefix='';<br \/>\n  }<br \/>\n<br \/>\n  if (isset($_GET['amslist']) && isset($_GET['amsname'])) {<br \/>\n    $dname=\"input.docx\";<br \/>\n    $themd=str_replace(\",\",\"\\n\" . $_SERVER['DOCUMENT_ROOT'], $_SERVER['DOCUMENT_ROOT'] . str_replace('+',' ',urldecode($_GET['amslist'])));<br \/>\n    $thelines=explode(\"\\n\", $themd);<br \/>\n    $themd=\"\";<br \/>\n    for ($i=0; $i&lt;sizeof($thelines); $i++) {<br \/>\n      if ($i == 0) {<br \/>\n        $dname=explode('.', basename($thelines[$i]))[0] . '_et-al_' . sizeof($thelines) . '.docx';<br \/>\n      }<br \/>\n      if ($i == (-1 + sizeof($thelines))) {<br \/>\n        $themd.='![' . basename($thelines[$i]) . \"](\" . $thelines[$i] . \")\";<br \/>\n      } else {<br \/>\n        $themd.='![' . basename($thelines[$i]) . \"](\" . $thelines[$i] . \")\\n\\n---\\n\\n\";<br \/>\n      }<br \/>\n    }<br \/>\n    file_put_contents($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace(\".docx\",\".yyy\",str_replace('+',' ',urldecode($_GET['amsname'])))), $themd);<br \/>\n    exec($pconvprefix . 'pandoc ' . $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace(\".docx\",\".yyy\",str_replace('+',' ',urldecode($_GET['amsname'])))) . ' -o ' . $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['amsname']))));<br \/>\n    $hsofar=\"&lt;html&gt;&lt;body&gt;&lt;object data=\\\"\/tmp\/\" . basename(str_replace('+',' ',urldecode($_GET['amsname']))) . \"\\\" type=\\\"application\/vnd.openxmlformats-officedocument.wordprocessingml.document\\\" data-base=data:application\/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,\" . base64_encode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['amsname']))))) . \"&gt;&lt;\/object&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n    unlink($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace(\".docx\",\".yyy\",str_replace('+',' ',urldecode($_GET['amsname'])))));<br \/>\n    if (4 == 4) {<br \/>\n    header('Content-Type: application\/vnd.openxmlformats-officedocument.wordprocessingml.document');<br \/>\n    header('Cache-Control: public, must-revalidate, max-age=0'); \/\/ HTTP\/1.1<br \/>\n    header('Pragma: public');<br \/>\n    header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); \/\/ Date in the past<br \/>\n    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');<br \/>\n    header('Content-Length: ' . strlen(file_get_contents($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['amsname']))))));<br \/>\n    header(\"Content-Disposition: inline; filename=\" . $dname);<br \/>\n    echo file_get_contents($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['amsname']))));<br \/>\n    unlink($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['amsname']))));<br \/>\n    exit;<br \/>\n    } else {<br \/>\n    echo $hsofar;<br \/>\n    $thingtoattendto=$_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['amsname'])));<br \/>\n    register_shutdown_function('shutdown');<br \/>\n    \/\/sleep(45);<br \/>\n    \/\/unlink($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['amsname']))));<br \/>\n    shutdown() and exit;<br \/>\n    }<br \/>\n  }<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p> &#8230; engendering that same frisson of excitement we got yesterday, with <a title='Document Root Relative Folder Listing Links PowerPoint Tutorial' href='#drrfllppt'>Document Root Relative Folder Listing Links PowerPoint Tutorial<\/a> &#8230; as (for us here on macOS) &#8230;<\/p>\n<ul>\n<li>we open a popup in Google Chrome (via selected slides) &#8230;<\/li>\n<li>the recipient PHP constructs the wherewithal to construct Word *.docx data via (exec called) &#8230;<br \/>\n<code><br \/>\n<a target=\"_blank\" title='Pandoc' href='https:\/\/pandoc.org' rel=\"noopener\">pandoc<\/a> presentation.md -o output.docx<br \/>\n<\/code><br \/>\n &#8230; and from there &#8230;<\/li>\n<li>the PHP uses the header arrangements implied by the code above &#8230; but where it &#8230; <\/li>\n<li>is unable to display, but still shows a download link &#8230;<\/li>\n<li>we click &#8230;<\/li>\n<li>showing a new Downloads folder file &#8230;<\/li>\n<li>we get to in Finder &#8230;<\/li>\n<li>we hover over that *.docx and see an Open With &#8230;<\/li>\n<li><a target=\"_blank\" title=\"LibreOffice\" href='https:\/\/www.libreoffice.org\/' rel=\"noopener\">LibreOffice<\/a> choice we select &#8230;<\/li>\n<li>displaying the Word document containing the images selected<\/li>\n<\/ul>\n<p>Cute, huh?!<sub>?<\/sub><sup>!<\/sup><\/p>\n<p>The <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/one_line_find.php-------GETME\" rel=\"noopener\">&#8220;eighth draft&#8221;<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php-------GETME\" rel=\"noopener\">one_line_find.php<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php\" rel=\"noopener\">Document Root Relative Folder Listing<\/a> web application you can <a href='#myif' onclick=\"document.getElementById('myif').src='\/one_line_find.php?rand=' + Math.floor(Math.random() * 1675645); document.getElementById('myif').style.display='block'; document.getElementById('myif').scrollIntoView(); \">&#8220;crank up&#8221; below<\/a>, yet again, if you, and your ilk, along with their family and friends, girls and boys, cousins and removalists (to get rid of those pesky second ones), Martians with visas, townfolk and countryfolk alike, like.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/new-document-root-relative-folder-listing-links-powerpoint-tutorial\/' rel=\"noopener\">New Document Root Relative Folder Listing Links PowerPoint Tutorial<\/a> ...<\/p>\n\n\n\n\n\n<hr>\n\n\n\n\n\n<p id='drrfllppt'>Previous relevant <a target=\"_blank\" title='Document Root Relative Folder Listing Links PowerPoint Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/document-root-relative-folder-listing-links-powerpoint-tutorial\/' rel=\"noopener\">Document Root Relative Folder Listing Links PowerPoint Tutorial<\/a> is shown below.<\/p>\n\n\n\n[caption id=\"\" align=\"alignnone\" width=\"220\" caption=\"Document Root Relative Folder Listing Links PowerPoint Tutorial\"]<a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Document Root Relative Folder Listing Links PowerPoint Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/uses_powerpoint.gif\" title=\"Document Root Relative Folder Listing Links PowerPoint Tutorial\"  style=\"float:left;\" \/><\/a>[\/caption]\n\n\n\n<p>All around the boardrooms of the world, as we speak ...<\/p>\n\n\n\n<code>\nPowerPoint\n<\/code>\n\n\n\n<p> ... slideshow presentations will be taking place.  As such, the creation of a \"PowerPoint assembly\" is our \"third cab off the rank\" as an output format offered to users trying out the recent select (ie. dropdown) \"assemblies\" we PDF<sup>ized<\/sup> yesterday with <a title='Document Root Relative Folder Listing Links PDF Tutorial' href='#xdrrfllpdft'>Document Root Relative Folder Listing Links PDF Tutorial<\/a>.  We use a window.open popup again, latching onto the PHP recipient code ...<\/p>\n\n\n\n&lt;?php\n<code>\n  $pconvprefix='\/bin\/';\n  if (file_exists('\/usr\/local\/bin\/pandoc')) {\n    $pconvprefix='\/usr\/local\/bin\/';\n  } else if (!file_exists('\/bin\/pandoc')) {\n    $pconvprefix='';\n  }\n<br \/>\n  if (isset($_GET['applist']) && isset($_GET['appname'])) {\n    $dname=\"input.pptx\";\n    $themd=str_replace(\",\",\"\\n\" . $_SERVER['DOCUMENT_ROOT'], $_SERVER['DOCUMENT_ROOT'] . str_replace('+',' ',urldecode($_GET['applist'])));\n    $thelines=explode(\"\\n\", $themd);\n    $themd=\"\";\n    for ($i=0; $i&lt;sizeof($thelines); $i++) {\n      if ($i == 0) {\n        $dname=explode('.', basename($thelines[$i]))[0] . '_et-al_' . sizeof($thelines) . '.pptx';\n      }\n      if ($i == (-1 + sizeof($thelines))) {\n        $themd.='![' . basename($thelines[$i]) . \"](\" . $thelines[$i] . \")\";\n      } else {\n        $themd.='![' . basename($thelines[$i]) . \"](\" . $thelines[$i] . \")\\n\\n---\\n\\n\";\n      }\n    }\n    file_put_contents($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace(\".pptx\",\".zzz\",str_replace('+',' ',urldecode($_GET['appname'])))), $themd);\n    exec($pconvprefix . 'pandoc ' . $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace(\".pptx\",\".zzz\",str_replace('+',' ',urldecode($_GET['appname'])))) . ' -o ' . $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['appname']))));\n    $hsofar=\"&lt;html&gt;&lt;body&gt;&lt;object data=\\\"\/tmp\/\" . basename(str_replace('+',' ',urldecode($_GET['appname']))) . \"\\\" type=\\\"application\/pptx\\\" data-base=data:application\/pptx;base64,\" . base64_encode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['appname']))))) . \"&gt;&lt;\/object&gt;&lt;\/body&gt;&lt;\/html&gt;\";\n    unlink($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace(\".pptx\",\".zzz\",str_replace('+',' ',urldecode($_GET['appname'])))));\n    if (4 == 4) {\n    header('Content-Type: application\/pptx');\n    header('Cache-Control: public, must-revalidate, max-age=0'); \/\/ HTTP\/1.1\n    header('Pragma: public');\n    header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); \/\/ Date in the past\n    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');\n    header('Content-Length: ' . strlen(file_get_contents($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['appname']))))));\n    header(\"Content-Disposition: inline; filename=\" . $dname);\n    echo file_get_contents($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['appname']))));\n    unlink($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['appname']))));\n    exit;\n    } else {\n    echo $hsofar;\n    $thingtoattendto=$_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['appname'])));\n    register_shutdown_function('shutdown');\n    \/\/sleep(45);\n    \/\/unlink($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['appname']))));\n    shutdown() and exit;\n    }\n  }\n<\/code>\n?&gt;\n\n\n\n<p> ... exciting to us, here, in that it can work with a web browser such as Google Chrome even though, up at the RJM Programming web server we have no application installed which can display a PowerPoint *.pptx slideshow presentation file, but we do back at macOS because we installed <a target=\"_blank\" title=\"LibreOffice\" href='https:\/\/www.libreoffice.org\/' rel=\"noopener\">LibreOffice<\/a>, and so, in our case ...<\/p>\n\n\n\n\n\n<ul>\n\n\n<li>we open a popup in Google Chrome (via selected slides) ...<\/li>\n\n\n\n\n<li>the recipient PHP constructs the wherewithal to construct PowerPoint *.pptx data via (exec called) ...\n<code>\n<a target=\"_blank\" title='Pandoc' href='https:\/\/pandoc.org' rel=\"noopener\">pandoc<\/a> presentation.md -o output.pptx\n<\/code>\n ... and from there ...<\/li>\n\n\n\n\n<li>the PHP uses the header arrangements implied by the code above ... but where it ... <\/li>\n\n\n\n\n<li>is unable to display, but still shows a download link ...<\/li>\n\n\n\n\n<li>we click ...<\/li>\n\n\n\n\n<li>showing a new Downloads folder file ...<\/li>\n\n\n\n\n<li>we get to in Finder ...<\/li>\n\n\n\n\n<li>we hover over that *.pptx and see an Open With ...<\/li>\n\n\n\n\n<li>LibreOffice choice we select ...<\/li>\n\n\n\n\n<li>displaying the PowerPoint slideshow<\/li>\n\n\n<\/ul>\n\n\n\n\n\n<p>Cute, huh?!<\/p>\n\n\n\n\n\n<p>The <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/one_line_find.php------GETME\" rel=\"noopener\">\"seventh draft\"<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php------GETME\" rel=\"noopener\">one_line_find.php<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php\" rel=\"noopener\">Document Root Relative Folder Listing<\/a> web application you can <a href='#myif' onclick=\"document.getElementById('myif').src='\/one_line_find.php?rand=' + Math.floor(Math.random() * 1675645); document.getElementById('myif').style.display='block'; document.getElementById('myif').scrollIntoView(); \">\"crank up\" below<\/a>, yet again, if you, and your ilk, along with their family and friends, girls and boys, townfolk and countryfolk alike, like.<\/p>\n\n\n\n<!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/document-root-relative-folder-listing-links-powerpoint-tutorial\/' rel=\"noopener\">Document Root Relative Folder Listing Links PowerPoint Tutorial<\/a>.<\/p-->\n<hr>\n<p id='xdrrfllpdft'>Previous relevant <a target=\"_blank\" title='Document Root Relative Folder Listing Links PDF Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/document-root-relative-folder-listing-links-pdf-tutorial\/' rel=\"noopener\">Document Root Relative Folder Listing Links PDF Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Document Root Relative Folder Listing Links PDF Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/uses_pdf.gif\" title=\"Document Root Relative Folder Listing Links PDF Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Document Root Relative Folder Listing Links PDF Tutorial<\/p><\/div>\n<p>Hopefully, all around the world, the idea of a &#8230;<\/p>\n<p><code><br \/>\nPDF<br \/>\n<\/code><\/p>\n<p> &#8230; display is replacing the &#8220;paper hungry&#8221; &#8220;hardcopy printout&#8221; concept.  As such, the creation of a &#8220;PDF assembly&#8221; is our &#8220;second cab off the rank&#8221; as an output format offered to users trying out the recent select (ie. dropdown) &#8220;assemblies&#8221; we started yesterday with  <a title='Document Root Relative Folder Listing Links Assemblies Tutorial' href='#drrfllat'>Document Root Relative Folder Listing Links Assemblies Tutorial<\/a>.  We use a window.open popup again, latching onto the PHP recipient code &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\n$thingtoattendto='';<br \/>\n<br \/>\nfunction shutdown() {<br \/>\n    global $thingtoattendto;<br \/>\n    \/\/ This is our shutdown function, in<br \/>\n    \/\/ here we can do any last operations<br \/>\n    \/\/ before the script is complete.<br \/>\n<br \/>\n    if ($thingtoattendto != '') {<br \/>\n     sleep(145);<br \/>\n     unlink($thingtoattendto);<br \/>\n    }<br \/>\n}<br \/>\n<br \/>\n  $convprefix='\/bin\/';<br \/>\n  if (file_exists('\/usr\/local\/bin\/convert')) {<br \/>\n    $convprefix='\/usr\/local\/bin\/';<br \/>\n  } else if (!file_exists('\/bin\/convert')) {<br \/>\n    $convprefix='';<br \/>\n  }<br \/>\n<br \/>\n  if (isset($_GET['apdflist']) && isset($_GET['apdfname'])) {<br \/>\n    file_put_contents($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace(\".pdf\",\".xxx\",str_replace('+',' ',urldecode($_GET['apdfname'])))), str_replace(\",\",\"\\n\" . $_SERVER['DOCUMENT_ROOT'], $_SERVER['DOCUMENT_ROOT'] . str_replace('+',' ',urldecode($_GET['apdflist']))));<br \/>\n    exec($convprefix . 'convert @' . $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace(\".pdf\",\".xxx\",str_replace('+',' ',urldecode($_GET['apdfname'])))) . ' ' . $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['apdfname']))));<br \/>\n    $hsofar=\"&lt;html&gt;&lt;body&gt;&lt;object data=\\\"\/tmp\/\" . basename(str_replace('+',' ',urldecode($_GET['apdfname']))) . \"\\\" type=\\\"application\/pdf\\\" data-base=data:application\/pdf;base64,\" . base64_encode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['apdfname']))))) . \"&gt;&lt;\/object&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n    unlink($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace(\".pdf\",\".xxx\",str_replace('+',' ',urldecode($_GET['apdfname'])))));<br \/>\n    if (4 == 4) {<br \/>\n    header('Content-Type: application\/pdf');<br \/>\n    header('Cache-Control: public, must-revalidate, max-age=0'); \/\/ HTTP\/1.1<br \/>\n    header('Pragma: public');<br \/>\n    header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); \/\/ Date in the past<br \/>\n    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');<br \/>\n    header('Content-Length: ' . strlen(file_get_contents($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['apdfname']))))));<br \/>\n    header(\"Content-Disposition: inline; filename=input.pdf\");<br \/>\n    echo file_get_contents($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['apdfname']))));<br \/>\n    unlink($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['apdfname']))));<br \/>\n    exit;<br \/>\n    } else {<br \/>\n    echo $hsofar;<br \/>\n    $thingtoattendto=$_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['apdfname'])));<br \/>\n    register_shutdown_function('shutdown');<br \/>\n    \/\/sleep(45);<br \/>\n    \/\/unlink($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"tmp\" . DIRECTORY_SEPARATOR . basename(str_replace('+',' ',urldecode($_GET['apdfname']))));<br \/>\n    shutdown() and exit;<br \/>\n    }<br \/>\n  }<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p> &#8230; using <a target=\"_blank\" title='ImageMagick command line' href='http:\/\/www.imagemagick.org\/script\/command-line-tools.php' rel=\"noopener\">ImageMagick<\/a>&#8216;s brilliant &#8220;convert&#8221; command line command idea &#8230;<\/p>\n<blockquote><p>\nconvert @list.txt output.pdf\n<\/p><\/blockquote>\n<p> as the backbone as to how in the <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/one_line_find.php-----GETME\" rel=\"noopener\">&#8220;sixth draft&#8221;<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php-----GETME\" rel=\"noopener\">one_line_find.php<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php\" rel=\"noopener\">Document Root Relative Folder Listing<\/a> web application you can <a href='#myif' onclick=\"document.getElementById('myif').src='\/one_line_find.php?rand=' + Math.floor(Math.random() * 1675645); document.getElementById('myif').style.display='block'; document.getElementById('myif').scrollIntoView(); \">&#8220;crank up&#8221; below<\/a>, yet again, if you, and your ilk, along with their family and friends, townfolk and countryfolk alike, like.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/document-root-relative-folder-listing-links-pdf-tutorial\/' rel=\"noopener\">Document Root Relative Folder Listing Links PDF Tutorial<\/a>.<\/p-->\n<hr>\n<p id='drrfllat'>Previous relevant <a target=\"_blank\" title='Document Root Relative Folder Listing Links Assemblies Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/document-root-relative-folder-listing-links-assemblies-tutorial\/' rel=\"noopener\">Document Root Relative Folder Listing Links Assemblies Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Document Root Relative Folder Listing Links Assemblies Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/uses_assemblies.gif\" title=\"Document Root Relative Folder Listing Links Assemblies Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Document Root Relative Folder Listing Links Assemblies Tutorial<\/p><\/div>\n<p>So far, with the Document Root Relative Folder Listing work of recent times, up until the day before yesterday&#8217;s <a title='Document Root Relative Folder Listing Links Ajax Tutorial' href='#xdrrfllat'>Document Root Relative Folder Listing Links Ajax Tutorial<\/a>, it&#8217;s been mainly &#8230;<\/p>\n<ul>\n<li>reporting &#8230; and &#8230;\n<li>display &#8230; but we want to move on to the user being able to create their own what we are referring to as &#8230;<\/li>\n<li>assemblies<\/li>\n<\/ul>\n<p>To us, these are user driven (is it widgets) they create by selecting multiple media (today images, but down the line, other combinations) from the left hand table cell&#8217;s listing links.  We do not ask anymore of that left hand cell&#8217;s workings, as it will get too complex, but we have a penchant for adding intelligence to hardcodings, and the hardcoding &#8230;<\/p>\n<blockquote><p>\nhttps:\/\/www.rjmprogramming.com.au\/\n<\/p><\/blockquote>\n<p> &#8230; is ripe for the picking, with that &#8220;just moseying along there innocently&#8221; &#8230;<\/p>\n<blockquote><p>\n:\n<\/p><\/blockquote>\n<p> &#8230; a candidate for a new multiple mode select (ie dropdown) element &#8230;<\/p>\n<p>&lt;?php echo &#8221;<br \/>\n<code><br \/>\n         document.getElementById('prefix').innerHTML=document.getElementById('prefix').innerHTML.replace(':','&lt;select ontouchstart=\\\"thismultiple(this);\\\" onmouseover=\\\"thismultiple(this);\\\" onclick=\\\"thismultiple(this);\\\" size=1 id=compsel title=\\\"Animated slideshow via slides possible selecting multiple images here.\\\" style=display:inline-block;width:28px; onblur=process(this); data-multiple&gt;&lt;option value=\\\"\\\"&gt;&#58;&lt;\/option&gt;&lt;\/select&gt;')<br \/>\n<\/code><br \/>\n&#8220;; ?&gt;<\/p>\n<p> &#8230; means by which a <font color=blue>user can specify<\/font> &#8220;assembly components&#8221;.<\/p>\n<p>Our simplest first &#8220;cab off the rank&#8221; here is a Javascript animated sequence, so far 4 second duration slides in a slideshow popup window, as per &#8230;<\/p>\n<p>&lt;?php echo &#8221;<br \/>\n<code><br \/>\n  <font color=blue>var lastretval='', origprefix='', wesayso=false, needten=0, sofarval='', woo=null;<br \/>\n  <br \/>\n  function agifit(incsv) {<br \/>\n    if (incsv != '') {<br \/>\n    var myimgs=incsv.split(',');<br \/>\n    if (woo) {<br \/>\n      if (!woo.closed) { woo=woo; } else { woo.close(); woo=null; }<br \/>\n    }<br \/>\n    if (!woo) {<br \/>\n    woo=window.open('','_blank','top=50,left=50,width=800,height=800');<br \/>\n    woo.document.write('&lt;ht' + 'ml&gt;&lt;he' + 'ad&gt;' + myimgs[0] + '&lt;ti' + 'tle&gt;&lt;\/ti' + 'tle&gt;&lt;scr' + 'ipt type=text\/javascript&gt; var jimg=0, imgs=(\\\"' + incsv + '\\\").split(String.fromCharCode(44)), kimg=eval(\\\"\\\" + imgs.length);  function startit() { jimg++; jimg=eval(jimg % kimg);  document.body.style.background=' + \\\"'url(' + imgs[jimg] + ')'\\\" + '; document.title=' + \\\"'' + imgs[jimg] + ''\\\" + '; document.body.style.backgroundRepeat=\\\"no-repeat\\\"; document.body.style.backgroundSize=\\\"contain\\\";  } setInterval(startit,4000); &lt;\/scri' + 'pt&gt;&lt;\/head&gt;&lt;body id=xbody style=background:url(' + myimgs[0] + ');background-repeat:no-repeat;background-size:contain;&gt;&lt;\/body&gt;&lt;\/html&gt;');<br \/>\n    if (origprefix != '') {  document.getElementById('prefix').innerHTML=origprefix; wesayso=true; needten=0; sofarval=''; lastretval=''; }<br \/>\n    return woo;<br \/>\n    }<br \/>\n    }<br \/>\n    needten=0;<br \/>\n    return null;<br \/>\n  }<br \/>\n  <br \/>\n  function monitorsel() {<br \/>\n    var yesdo=true;<br \/>\n    if (needten &gt; 10) { setTimeout(monitorsel, 2000);  return ''; }<br \/>\n    var osel=document.getElementById('compsel');<br \/>\n    var retval='', delim='';<br \/>\n    if (sofarval != '') { delim=','; retval=sofarval; }<br \/>\n    for (var i=0; i&lt;osel.length; i++) {  if (osel.options[i].selected) { if (osel.options[i].value != '') { if ((',' + sofarval + ',').indexOf(',' + osel.options[i].value + ',') == -1) { retval+=delim + osel.options[i].value; delim=','; }   } }  }<br \/>\n    if (document.getElementById('compsel')) {<br \/>\n      if (retval != '') {<br \/>\n       if (retval != '' && retval.indexOf(',') == -1) {<br \/>\n       needten=0;<br \/>\n       }<br \/>\n       if (lastretval != retval) {<br \/>\n       lastretval=retval;<br \/>\n       sofarval=retval;<br \/>\n       needten=0;<br \/>\n       } else if (needten &lt; 10) {<br \/>\n       needten++;<br \/>\n       } else {<br \/>\n       yesdo=false;<br \/>\n       needten++;<br \/>\n       if (agifit(sofarval)) {<br \/>\n       if (origprefix != '') {  document.getElementById('prefix').innerHTML=origprefix; wesayso=true; needten=0; sofarval=''; lastretval=''; }<br \/>\n       }<br \/>\n       }<br \/>\n      }<br \/>\n      if (yesdo) { setTimeout(monitorsel, 2000); }<br \/>\n    }<br \/>\n  }<br \/>\n  <br \/>\n  function thismultiple(osel) {<br \/>\n    if (document.getElementById('lefttd').outerHTML.split('&gt;')[0].indexOf('overflow') == -1 || wesayso) {<br \/>\n    wesayso=false;<br \/>\n    document.getElementById('lefttd').style.overflowY='visible';<br \/>\n    osel.style.height='30px';<br \/>\n    osel.setAttribute('multiple', 'true');<br \/>\n    setTimeout(monitorsel, 2000);<br \/>\n    }<br \/>\n  }<\/font><br \/>\n  <br \/>\n  function massage(tv) {<br \/>\n    var tscnt=0, itv=0, ihis='', uids=[]<font color=blue>, addthese=''<\/font>;<br \/>\n    var tlls=tv.split('&lt;br&gt;');<br \/>\n    for (itv=eval(-1 + tlls.length); itv&gt;=0; itv--) {<br \/>\n      if (tlls[itv].indexOf(' \/') != -1) {<br \/>\n       if (document.getElementById('prefix') && !document.getElementById('compsel')) {<br \/>\n       if (document.getElementById('prefix').innerHTML.replace('p:\/\/','s:\/\/').indexOf('s:\/\/') != -1) {<br \/>\n         document.getElementById('prefix').innerHTML=document.getElementById('prefix').innerHTML.replace(':','&lt;select ontouchstart=\\\"thismultiple(this);\\\" onmouseover=\\\"thismultiple(this);\\\" onclick=\\\"thismultiple(this);\\\" size=1 id=compsel title=\\\"Animated slideshow via slides possible selecting multiple images here.\\\" style=display:inline-block;width:28px; onblur=process(this); data-multiple&gt;&lt;option value=\\\"\\\"&gt;&#58;&lt;\/option&gt;&lt;\/select&gt;')<br \/>\n       }<br \/>\n       }<br \/>\n       uids=tlls[itv].split(' \/');<br \/>\n       ihis=tlls[itv].replace(tlls[itv].split(' \/')[0] + ' ','');<br \/>\n       if (eval('' + uids.length) == 3) {<br \/>\n       ajaxs.unshift('\/' + uids[2]);<br \/>\n       \/\/alert('0:' + outwo('\/' + uids[2]) + ' ... ' + '\/' + uids[2]);<br \/>\n       <font color=blue>if (outwo('\/' + uids[2]).replace(' ','IMAGE\/') == 'IMAGE\/') {<br \/>\n              addthese+='&lt;option value=\\\"\/' + uids[2] + '\\\"&gt;\/' + uids[2] + '&lt;\/option&gt;';<br \/>\n       }<\/font><br \/>\n       if (outwo('\/' + uids[2]) == 'IMAGE\/' && navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i) && 1 == 1) {<br \/>\n              tv=tv.replace(tlls[itv].split(' \/')[0] + ' ' + ihis, tlls[itv].split(' \/')[0] + '&#9;&lt;span id=\\\"' + encodeURIComponent('\/' + uids[2]) + '\\\" title=\\\"\\\" style=text-decoration:underline; onmouseover=showit(this); onmouseout=hideit(this); ontouchmove=showit(this); ontouchend=hideitlater(this); href=# data-href=\\\"\/' + uids[2] + '\\\"&gt;' + ihis.split('%20-')[0].split(' -')[0] + '&lt;\/span&gt;');<br \/>\n       } else {<br \/>\n              tv=tv.replace(tlls[itv].split(' \/')[0] + ' ' + ihis, tlls[itv].split(' \/')[0] + '&#9;&lt;a id=\\\"' + encodeURIComponent('\/' + uids[2]) + '\\\" title=\\\"\\\" target=_blank onmouseover=showit(this); onmouseout=hideit(this); ontouchmove=showit(this); ontouchend=hideitlater(this) href=\\\"\/' + uids[2] + '\\\"&gt;' + ihis.split('%20-')[0].split(' -')[0] + '&lt;\/a&gt;');<br \/>\n       }<br \/>\n       } else {<br \/>\n       ajaxs.unshift(ihis.split('%20-')[0].split(' -')[0]);<br \/>\n       \/\/alert('1:' + outwo((ihis.split('%20-')[0].split(' -')[0])) + ' ... ' + (ihis.split('%20-')[0].split(' -')[0]));<br \/>\n       <font color=blue>if (outwo(ihis.split('%20-')[0].split(' -')[0]).replace(' ','IMAGE\/') == 'IMAGE\/') {<br \/>\n              addthese+='&lt;option value=\\\"' + (ihis.split('%20-')[0].split(' -')[0]) + '\\\"&gt;' + (ihis.split('%20-')[0].split(' -')[0]) + '&lt;\/option&gt;';<br \/>\n       }<\/font><br \/>\n       if (outwo(ihis.split('%20-')[0].split(' -')[0]) == 'IMAGE\/' && navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i) && 1 == 1) {<br \/>\n              tv=tv.replace(tlls[itv].split(' \/')[0] + ' ' + ihis, tlls[itv].split(' \/')[0] + '&#9;&lt;span id=\\\"' + encodeURIComponent(ihis.split('%20-')[0].split(' -')[0]) + '\\\" title=\\\"\\\" style=text-decoration:underline; onmouseover=showit(this); onmouseout=hideit(this); ontouchmove=showit(this); ontouchend=hideitlater(this); href=# data-href=\\\"' + ihis.split('%20-')[0].split(' -')[0] + '\\\"&gt;' + ihis.split('%20-')[0].split(' -')[0] + '&lt;\/span&gt;');<br \/>\n       } else {<br \/>\n              tv=tv.replace(tlls[itv].split(' \/')[0] + ' ' + ihis, tlls[itv].split(' \/')[0] + '&#9;&lt;a id=\\\"' + encodeURIComponent(ihis.split('%20-')[0].split(' -')[0]) + '\\\" title=\\\"\\\" target=_blank onmouseover=showit(this); onmouseout=hideit(this); ontouchmove=showit(this); ontouchend=hideitlater(this); href=\\\"' + ihis.split('%20-')[0].split(' -')[0] + '\\\"&gt;' + ihis.split('%20-')[0].split(' -')[0] + '&lt;\/a&gt;');<br \/>\n       }<br \/>\n       }<br \/>\n      }<br \/>\n    }<br \/>\n    <font color=blue>if (addthese != '') {<br \/>\n      document.getElementById('compsel').innerHTML+=addthese;<br \/>\n      origprefix=document.getElementById('prefix').innerHTML; \/\/.replace(' data-multiple', ' multiple data-multiple');<br \/>\n    }<\/font><br \/>\n    setInterval(function(){ var onerect=document.getElementById('djc').getBoundingClientRect(), tworect=document.getElementById('jc').getBoundingClientRect();   if (Math.abs(eval(eval(('' + onerect.height) - eval('' + tworect.height)))) &gt; 20) {  document.getElementById('djc').style.height='' + tworect.height + 'px';  document.getElementById('djc').style.width='' + eval(-20 + tworect.width) + 'px'; } }, 6000);<br \/>\n    setTimeout(doajaxs, 1000);<br \/>\n    return tv;<br \/>\n  }<br \/>\n<\/code><br \/>\n&#8220;; ?&gt;<\/p>\n<p> &#8230; in the <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/one_line_find.php----GETME\" rel=\"noopener\">&#8220;fifth draft&#8221;<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php----GETME\" rel=\"noopener\">one_line_find.php<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php\" rel=\"noopener\">Document Root Relative Folder Listing<\/a> web application you can <a href='#myif' onclick=\"document.getElementById('myif').src='\/one_line_find.php?rand=' + Math.floor(Math.random() * 1675645); document.getElementById('myif').style.display='block'; document.getElementById('myif').scrollIntoView(); \">&#8220;crank up&#8221; below<\/a>, yet again, if you, and your ilk, along with their family and friends, like.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/document-root-relative-folder-listing-links-assemblies-tutorial\/' rel=\"noopener\">Document Root Relative Folder Listing Links Assemblies Tutorial<\/a>.<\/p-->\n<hr>\n<p id='xdrrfllat'>Previous relevant <a target=\"_blank\" title='Document Root Relative Folder Listing Links Ajax Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/document-root-relative-folder-listing-links-ajax-tutorial\/' rel=\"noopener\">Document Root Relative Folder Listing Links Ajax Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Document Root Relative Folder Listing Links Ajax Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/uses_ajax.gif\" title=\"Document Root Relative Folder Listing Links Ajax Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Document Root Relative Folder Listing Links Ajax Tutorial<\/p><\/div>\n<p>It was &#8220;faux <a target=\"_blank\" title='Ajax information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Ajax_(programming)' rel=\"noopener\">Ajax<\/a> day&#8221; with yesterday&#8217;s <a title='Document Root Relative Folder Listing Links Before and On Click Tutorial' href='#drrfllboct'>Document Root Relative Folder Listing Links Before and On Click Tutorial<\/a>, but today &#8230;<\/p>\n<blockquote><p>\nIt&#8217;s Ajax Day &#8230; <a target=\"_blank\" title=\"?\" href='https:\/\/www.facebook.com\/ABCKidsCommunity\/videos\/get-ready-to-play-hardtom-gleesons-back-to-host-the-popular-hard-quiz-spin-off-w\/3740483856244190\/' rel=\"noopener\">yayyyyy!!!!<\/a>\n<\/p><\/blockquote>\n<p>Howevvvvvvvver, just to confuse, there is no <i>onmouseover<\/i> involved, but the Ajax work does, at least for non-mobile users, sort of, affect display data, in that when hovering over a link, they <i title=\"If processing has reached that link, as it works behind the scenes ...\">may<\/i> see within the <i>title<\/i> attribute of that link, whatevvvvvvvvver &#8230;<\/p>\n<p><code><br \/>\n<a target=\"_blank\" title='Linux file command information from computerhope' href='http:\/\/www.computerhope.com\/unix\/ufile.htm' rel=\"noopener\">file<\/a> \"[a link href]\"<br \/>\n<\/code><\/p>\n<p> &#8230; can &#8220;value add&#8221;, via Ajax logic, into the &#8220;up until now just an <a target=\"_blank\" title='Linux ls command information from computerhope' href='https:\/\/www.computerhope.com\/unix\/uls.htm' rel=\"noopener\"><i>ls<\/i><\/a> (underlying operating system command) based file listing&#8221; report.<\/p>\n<p>Ajax is great here, as helping a <sub>sub<\/sub>process that can be &#8230;<\/p>\n<ul>\n<li>spawned off &#8230;<\/li>\n<li>working away as a secondary (optional) process<\/li>\n<\/ul>\n<p> &#8230; supplementing the primary workflow, if you will, but probably not too impactive, <font color=blue>we&#8217;re hoping<\/font>  &#8230;<\/p>\n<p>&lt;?php echo &#8221;<br \/>\n<code><br \/>\n  <font color=blue>var ajaxs=[], zhr=null, zform=null;<\/font><br \/>\n  <br \/>\n  function massage(tv) {<br \/>\n    var tscnt=0, itv=0, ihis='', uids=[];<br \/>\n    var tlls=tv.split('&lt;br&gt;');<br \/>\n    for (itv=eval(-1 + tlls.length); itv&gt;=0; itv--) {<br \/>\n      if (tlls[itv].indexOf(' \/') != -1) {<br \/>\n       uids=tlls[itv].split(' \/');<br \/>\n       ihis=tlls[itv].replace(tlls[itv].split(' \/')[0] + ' ','');<br \/>\n       if (eval('' + uids.length) == 3) {<br \/>\n       <font color=blue>ajaxs.unshift('\/' + uids[2]);<\/font><br \/>\n       if (outwo('\/' + uids[2]) == 'IMAGE\/' && navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i) && 1 == 1) {<br \/>\n              tv=tv.replace(tlls[itv].split(' \/')[0] + ' ' + ihis, tlls[itv].split(' \/')[0] + '&amp;#9;&lt;span <font color=blue>id=\\\"' + encodeURIComponent('\/' + uids[2]) + '\\\" <\/font>title=\\\"\\\" style=text-decoration:underline; onmouseover=showit(this); onmouseout=hideit(this); ontouchmove=showit(this); ontouchend=hideitlater(this); href=# data-href=\\\"\/' + uids[2] + '\\\"&gt;' + ihis.split('%20-')[0].split(' -')[0] + '&lt;\/span&gt;');<br \/>\n       } else {<br \/>\n              tv=tv.replace(tlls[itv].split(' \/')[0] + ' ' + ihis, tlls[itv].split(' \/')[0] + '&amp;#9;&lt;a <font color=blue>id=\\\"' + encodeURIComponent('\/' + uids[2]) + '\\\" <\/font>title=\\\"\\\" target=_blank onmouseover=showit(this); onmouseout=hideit(this); ontouchmove=showit(this); ontouchend=hideitlater(this) href=\\\"\/' + uids[2] + '\\\"&gt;' + ihis.split('%20-')[0].split(' -')[0] + '&lt;\/a&gt;');<br \/>\n       }<br \/>\n       } else {<br \/>\n       <font color=blue>ajaxs.unshift(ihis.split('%20-')[0].split(' -')[0]);<\/font><br \/>\n       if (outwo(ihis.split('%20-')[0].split(' -')[0]) == 'IMAGE\/' && navigator.userAgent.match(\/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile\/i) && 1 == 1) {<br \/>\n              tv=tv.replace(tlls[itv].split(' \/')[0] + ' ' + ihis, tlls[itv].split(' \/')[0] + '&amp;#9;&lt;span <font color=blue>id=\\\"' + encodeURIComponent(ihis.split('%20-')[0].split(' -')[0]) + '\\\" <\/font>title=\\\"\\\" style=text-decoration:underline; onmouseover=showit(this); onmouseout=hideit(this); ontouchmove=showit(this); ontouchend=hideitlater(this); href=# data-href=\\\"' + ihis.split('%20-')[0].split(' -')[0] + '\\\"&gt;' + ihis.split('%20-')[0].split(' -')[0] + '&lt;\/span&gt;');<br \/>\n       } else {<br \/>\n              tv=tv.replace(tlls[itv].split(' \/')[0] + ' ' + ihis, tlls[itv].split(' \/')[0] + '&amp;#9;&lt;a <font color=blue>id=\\\"' + encodeURIComponent(ihis.split('%20-')[0].split(' -')[0]) + '\\\" <\/font>title=\\\"\\\" target=_blank onmouseover=showit(this); onmouseout=hideit(this); ontouchmove=showit(this); ontouchend=hideitlater(this); href=\\\"' + ihis.split('%20-')[0].split(' -')[0] + '\\\"&gt;' + ihis.split('%20-')[0].split(' -')[0] + '&lt;\/a&gt;');<br \/>\n       }<br \/>\n       }<br \/>\n      }<br \/>\n    }<br \/>\n    setInterval(function(){ var onerect=document.getElementById('djc').getBoundingClientRect(), tworect=document.getElementById('jc').getBoundingClientRect();   if (Math.abs(eval(eval(('' + onerect.height) - eval('' + tworect.height)))) &gt; 20) {  document.getElementById('djc').style.height='' + tworect.height + 'px';  document.getElementById('djc').style.width='' + eval(-20 + tworect.width) + 'px'; } }, 6000);<br \/>\n    <font color=blue>setTimeout(doajaxs, 1000);<\/font><br \/>\n    return tv;<br \/>\n  }<br \/>\n  <br \/>\n <font color=blue>function stateChanged() {<br \/>\n  if (zhr.readyState == 4) {<br \/>\n   if (zhr.status == 200) {<br \/>\n    var rawhtml = zhr.response;<br \/>\n    var spans=rawhtml.split('&lt;\/span');<br \/>\n    var ps=rawhtml.split('&lt;\/p');<br \/>\n    if (eval('' + ps.length) == 2 && eval('' + spans.length) == 2) {<br \/>\n      document.getElementById(spans[0].split('&gt;')[eval(-1 + spans[0].split('&gt;').length)]).title+=ps[0].split('&gt;')[eval(-1 + ps[0].split('&gt;').length)];<br \/>\n    }<br \/>\n    setTimeout(doajaxs, 1000);<br \/>\n   }<br \/>\n  }<br \/>\n }<br \/>\n  <br \/>\n  function doajaxs() {<br \/>\n    var nexttogo='';<br \/>\n    for (var ii=0; ii&lt;ajaxs.length; ii++) {<br \/>\n      if (nexttogo == '' && ajaxs[ii] != '') {<br \/>\n        nexttogo=ajaxs[ii];<br \/>\n        ajaxs[ii]='';<br \/>\n      }<br \/>\n    }<br \/>\n    if (nexttogo != '') {<br \/>\n        zhr = new XMLHttpRequest();<br \/>\n        zform = new FormData();<br \/>\n        zform.append('ajaxid', encodeURIComponent(nexttogo));<br \/>\n        zform.append('ajaxurl', nexttogo);<br \/>\n        zhr.onreadystatechange=stateChanged;<br \/>\n        zhr.open('post', '.\/one_line_find.php', true);<br \/>\n        zhr.send(zform);<br \/>\n    }<br \/>\n  }<\/font><br \/>\n<\/code><br \/>\n&#8220;; ?&gt;<\/p>\n<p> &#8230; Javascript calling logic using PHP recipient code &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\n  if (isset($_POST['ajaxurl']) && isset($_POST['ajaxid'])) {<br \/>\n    echo \"&lt;html&gt;&lt;body&gt;&lt;span&gt;\" . $_POST['ajaxid'] . '&lt;\/span&gt;&lt;p&gt;' . str_replace($_SERVER['DOCUMENT_ROOT'],'',shell_exec('file \"' . $_SERVER['DOCUMENT_ROOT'] . str_replace('+',' ',urldecode($_POST['ajaxurl'])) . '\"')) . \"&lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n    exit;<br \/>\n  }<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p> &#8230; in the <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/one_line_find.php---GETME\" rel=\"noopener\">&#8220;fourth draft&#8221;<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php---GETME\" rel=\"noopener\">one_line_find.php<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php\" rel=\"noopener\">Document Root Relative Folder Listing<\/a> web application you can <a href='#myif' onclick=\"document.getElementById('myif').src='\/one_line_find.php?rand=' + Math.floor(Math.random() * 1675645); document.getElementById('myif').style.display='block'; document.getElementById('myif').scrollIntoView(); \">&#8220;crank up&#8221; below<\/a>, yet again, if you, and your ilk, like.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/document-root-relative-folder-listing-links-ajax-tutorial\/' rel=\"noopener\">Document Root Relative Folder Listing Links Ajax Tutorial<\/a>.<\/p-->\n<hr>\n<p id='drrfllboct'>Previous relevant <a target=\"_blank\" title='Document Root Relative Folder Listing Links Before and On Click Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/document-root-relative-folder-listing-links-before-and-on-click-tutorial\/' rel=\"noopener\">Document Root Relative Folder Listing Links Before and On Click Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Document Root Relative Folder Listing Links Before and On Click Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/like_ajax.jpg\" title=\"Document Root Relative Folder Listing Links Before and On Click Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Document Root Relative Folder Listing Links Before and On Click Tutorial<\/p><\/div>\n<p>Today&#8217;s work has an <a target=\"_blank\" title='Ajax information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Ajax_(programming)' rel=\"noopener\">Ajax<\/a> feel to it, despite the fact we use no Ajax type Javascript code, onto yesterday&#8217;s <a title='Document Root Relative Folder Listing Links Tutorial' href='#drrfllt'>Document Root Relative Folder Listing Links Tutorial<\/a> onclick event logics, we guess, because &#8230;<\/p>\n<ul>\n<li>coding for the non-mobile <i>onmouseover<\/i> event, with display change logic, has a very Ajax<sup>y<\/sup> feel to it &#8230; and  &#8230;<\/li>\n<li>on mobile we code for <i>ontouchmove<\/i> (feeding into user click actions)<\/li>\n<\/ul>\n<p> &#8230; <font color=blue>calling via<\/font> &#8230;<\/p>\n<p>&lt;?php echo &#8221;<br \/>\n<code><br \/>\n              tv=tv.replace(tlls[itv].split(' \/')[0] + ' ' + ihis, tlls[itv].split(' \/')[0] + '&amp;#9;&lt;a target=\"_blank\" <font color=blue>onmouseover=showit(this); onmouseout=hideit(this); ontouchmove=showit(this); ontouchend=hideitlater(this); <\/font>href=\\\"' + ihis.split('%20-')[0].split(' -')[0] + '\\\"&gt;' + ihis.split('%20-')[0].split(' -')[0] + '&lt;\/a&gt;');<br \/>\n<\/code><br \/>\n&#8220;; ?&gt;<\/p>\n<p> &#8230; calling on &#8230;<\/p>\n<p>&lt;?php echo &#8221;<br \/>\n<code><br \/>\n  function showit(ioi) {<br \/>\n     document.getElementById('mymediatr').innerHTML=mytrih;<br \/>\n     if (ioi.outerHTML.indexOf('&lt;span') != -1) {<br \/>\n     outwo(ioi.getAttribute('data-href'));<br \/>\n     } else {<br \/>\n     outwo(ioi.href);<br \/>\n     }<br \/>\n  }<br \/>\n<br \/>\n  function hideit(ioi) {<br \/>\n     document.getElementById('mymediatr').innerHTML=mytrih;<br \/>\n  }<br \/>\n  <br \/>\n  function hideitlater(ioi) {<br \/>\n     if (2 == 5) {<br \/>\n     setTimeout(function(){<br \/>\n     document.getElementById('mymediatr').innerHTML=mytrih;<br \/>\n     }, 15000);<br \/>\n     }<br \/>\n  }<br \/>\n<\/code><br \/>\n&#8220;; ?&gt;<\/p>\n<p>Along the way we decided, in very Ajax<sup>y<\/sup> thinking, on mobile, to be less disruptive with navigations after a click, so as to stay on the original webpage more often, in the <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/one_line_find.php--GETME\" rel=\"noopener\">&#8220;third draft&#8221;<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php--GETME\" rel=\"noopener\">one_line_find.php<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php\" rel=\"noopener\">Document Root Relative Folder Listing<\/a> web application you can <a href='#myif' onclick=\"document.getElementById('myif').src='\/one_line_find.php?rand=' + Math.floor(Math.random() * 1675645); document.getElementById('myif').style.display='block'; document.getElementById('myif').scrollIntoView(); \">&#8220;crank up&#8221; below<\/a>, yet again, if you like.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/new-document-root-relative-folder-listing-links-tutorial\/' rel=\"noopener\">New Document Root Relative Folder Listing Links Tutorial<\/a>.<\/p-->\n<hr>\n<p id='drrfllt'>Previous relevant <a target=\"_blank\" title='Document Root Relative Folder Listing Links Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/document-root-relative-folder-listing-links-tutorial\/' rel=\"noopener\">Document Root Relative Folder Listing Links Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Document Root Relative Folder Listing Links Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/one_line_links.gif\" title=\"Document Root Relative Folder Listing Links Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Document Root Relative Folder Listing Links Tutorial<\/p><\/div>\n<p>Regular readers will &#8220;know the drill&#8221; with today&#8217;s work, on top of yesterday&#8217;s <a title='Document Root Relative Folder Listing Tutorial' href='#drrflt'>Document Root Relative Folder Listing Tutorial<\/a>.<\/p>\n<p>The new word in the posting title is &#8230;<\/p>\n<p><code><br \/>\nLinks<br \/>\n<\/code><\/p>\n<p> &#8230; and those regular readers would know &#8230;<\/p>\n<ul>\n<li>yesterday&#8217;s Document Root Relative Folder Listing output was placed into a <i>textarea<\/i> element &#8230; clue 1<\/li>\n<li>that <i>textarea<\/i> element we all admire for it&#8217;s textual data line feed talents and it&#8217;s talents for resizing capabilities &#8230; clue 2<\/li>\n<li>that <i>textarea<\/i> element textual data is unembellishable (if that is a word) &#8230; clue 3<\/li>\n<li>whereas your meek and mild <i>div<\/i> element, say, could <a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/overlay\" rel=\"noopener\">overlay<\/a> that <i>textarea<\/i> element, except for the right hand resizer, <span><a target=\"_blank\" title='?' class=\"audioytplay\" href='https:\/\/www.youtube.com\/watch?v=PtR4cWb4HNg' rel=\"noopener\">that is<\/a><\/span> &#8230; clue 4<\/li>\n<li>and the <i>div<\/i> element could latch onto that <i>textarea<\/i> basis of content and enhance filenames into filename links too <font size=1>(but am not sure about the <a target=\"_blank\" title=\"?\" href='https:\/\/www.youtube.com\/watch?v=LDWXfVcXmb4' rel=\"noopener\">Singing Glasses idea<\/a> in the &#8220;talent quest section&#8221; &#8230; that seems a bridge too far)<\/font> &#8230; clue 5<\/li>\n<\/ul>\n<p> &#8230; leaving us <a target=\"_blank\" title=\"?\" href='https:\/\/www.youtube.com\/watch?v=8toaz_9BHrY' rel=\"noopener\">clueless<\/a> as to what else to say &#8230; chortle, chortle?!<\/p>\n<p>Also helpful would be, to our minds &#8230;<\/p>\n<ul>\n<li>still restrict the file specification to a &#8220;buttoned down&#8221; setting (because of security concerns) &#8230; but &#8230;<\/li>\n<li>add complexity to the extension part &#8230;<br \/>\n&lt;?php<br \/>\n<code><br \/>\n     $extbit='*.[tjpmwag][xpnopaid][etgvf34]*';<br \/>\n<\/code><br \/>\n?&gt;<br \/>\n &#8230;to allow relatively innocent media files and PDFs reach the file listing (tweaked a bit too) now &#8230;<br \/>\n&lt;?php<br \/>\n<code><br \/>\n    $resis=str_replace($_SERVER['DOCUMENT_ROOT'],'',shell_exec('ls -lhgo ' . $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . $offdr . $extbit));<br \/>\n<\/code><br \/>\n?&gt;\n<\/ul>\n<p> &#8230; in the <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/one_line_find.php-GETME\" rel=\"noopener\">&#8220;second draft&#8221;<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php-GETME\" rel=\"noopener\">one_line_find.php<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php\" rel=\"noopener\">Document Root Relative Folder Listing<\/a> web application you can <a href='#myif' onclick=\"document.getElementById('myif').src='\/one_line_find.php?rand=' + Math.floor(Math.random() * 1675645); document.getElementById('myif').style.display='block'; document.getElementById('myif').scrollIntoView(); \">&#8220;crank up&#8221; below<\/a>, again, if you like.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/document-root-relative-folder-listing-links-tutorial\/' rel=\"noopener\">Document Root Relative Folder Listing Links Tutorial<\/a>.<\/p-->\n<hr>\n<p id='drrflt'>Previous relevant <a target=\"_blank\" title='Document Root Relative Folder Listing Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/document-root-relative-folder-listing-tutorial\/' rel=\"noopener\">Document Root Relative Folder Listing Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Document Root Relative Folder Listing Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.gif\" title=\"Document Root Relative Folder Listing Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Document Root Relative Folder Listing Tutorial<\/p><\/div>\n<p>The Apache web server has, for it&#8217;s PHP environment, if that is it&#8217;s server language, the concept of &#8230;<\/p>\n<p><code><br \/>\n<a target=\"_blank\" title='Document Root' href='https:\/\/httpd.apache.org\/docs\/2.4\/urlmapping.html' rel=\"noopener\">Document Root<\/a><br \/>\n<\/code><\/p>\n<p> &#8230; so that, for the website of the webpage you are reading from now, a URL such as our RJM Programming&#8217;s Landing Page&#8217;s URL &#8230;<\/p>\n<p><code><br \/>\n<a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/\" rel=\"noopener\">https:\/\/www.rjmprogramming.com.au\/<\/a><br \/>\n<\/code><\/p>\n<p> &#8230; scours that Document Root folder to find the <i>index.php<\/i> webpage code to display that Landing Page.<\/p>\n<p>You can &#8220;abstract&#8221;, and we do also with our Difference Reporting, what that Document Root is as a folder path &#8230; bit forlorn we know, as we&#8217;ve shown what it is, probably, in many tutorial images &#8230; but the thing here is that a <i>URL<\/i> such as &#8230;<\/p>\n<p><code><br \/>\n<a target=\"_blank\" href=\"\/index.php\" rel=\"noopener\">\/index.php<\/a><br \/>\n<\/code><\/p>\n<p> &#8230; is understood and gets you to our Landing Page as well, because to the public, Document Root is the limit of where they are allowed to surf &#8230; if you like Document Root is the left hand beach flag at Surfers Paradise <font size=1>(or perhaps the right hand beach flag in the <a target=\"_blank\" href='https:\/\/www.google.com\/search?q=todd+river+floods&#038;rlz=1C5OZZY_en&#038;oq=todd+river+floods&#038;gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIICAEQABgWGB4yCAgCEAAYFhgeMggIAxAAGBYYHjINCAQQABiGAxiABBiKBTINCAUQABiGAxiABBiKBTINCAYQABiGAxiABBiKBTIKCAcQABiABBiiBNIBCDYyMjVqMGo0qAIAsAIB&#038;sourceid=chrome&#038;ie=UTF-8' rel=\"noopener\">Todd River<\/a> &#8230; when it gets water, <span><a target=\"_blank\" title='?' class=\"audioytplay\" href='https:\/\/www.youtube.com\/watch?v=PtR4cWb4HNg' rel=\"noopener\">that is<\/a><\/span>?!)<\/font>.<\/p>\n<p>Okay, that&#8217;s one theme of today&#8217;s new PHP web application.  The other we wrote out to ourself was &#8230;<\/p>\n<blockquote><p>\nOne line ls -clt https:\/\/www.rjmprogramming.com.au\/*.txt via find $_SERVER[&#8216;DOCUMENT_ROOT&#8217;] -type d -name &#8216;*&#8217;\n<\/p><\/blockquote>\n<p> &#8230; as a presentation idea whereby just the one table row of data is used to present &#8230;<\/p>\n<ul>\n<li>https:\/\/www.rjmprogramming.com.au\/<\/li>\n<li>dropdown of list of folders off Document Root (&#8220;abstracting&#8221; Document Root itself &#8230; ie. relative referencing)<\/li>\n<li>a file specification (minus the path) of interest &#8230; we are, for now, locking in as &#8230;<br \/>\n<code><br \/>\n*.txt<br \/>\n<\/code><br \/>\n &#8230; as the input data, to the output data that is &#8230;\n<\/li>\n<li>output folder listing (as for Linux and macOS)<\/li>\n<\/ul>\n<p>The concept of &#8220;one table row&#8221; for a multiple file listing is a mute point, but in our defence &#8230;<\/p>\n<ul>\n<li>the textarea it is presented in (via <i>rows=1<\/i>) is user resizable<\/li>\n<li>the textarea it is presented in is given a title with line feeds for the whole report so that non-mobile users can see this on hovering over the textarea<\/li>\n<\/ul>\n<p>This was a PHP project definitely needing the mildly better outcomes of PHP <a target=\"_blank\" title='PHP shell_exec() method information' href='http:\/\/php.net\/manual\/en\/function.shell-exec.php' rel=\"noopener\"><i>shell_exec<\/i><\/a> (where multiple line outputs are possible) as distinct from <a target=\"_blank\" title='PHP shell_exec() method information' href='http:\/\/php.net\/manual\/en\/function.exec.php' rel=\"noopener\"><i>exec<\/i><\/a> where only the last output line is returned, but is the usual method we use around here.<\/p>\n<p>Keeping the report to one row also asks for &#8230;<\/p>\n<ul>\n<li>use of elements that have CSS styling display:inline; as a default (eg. span element) &#8230; or &#8230;<\/li>\n<li>user supplying CSS display:inline; or  display:inline-block; as applicable &#8230; and &#8230;<\/li>\n<li>table cell <i>text-align:right;<\/i> came in handy &#8230; as well as &#8230;<\/li>\n<li>select element &#8220;dynamic shrinker&#8221; &#8230;<br \/>\n<code><br \/>\nfunction resizeSelect(sel) { \/\/ thanks to https:\/\/www.google.com\/search?q=make+select+element+width+in+sympathy+with+length+of+its+value&rlz=1C5OZZY_en&oq=make+select+element+width+in+sympathy+with+length+of+its+value&gs_lcrp=EgZjaHJvbWUyBggAEEUYOdIBCTI3MzEzajBqNKgCALACAQ&sourceid=chrome&ie=UTF-8<br \/>\n  \/\/ 1. Create a temporary span to measure text width<br \/>\n  var tempSpan = document.createElement('span');<br \/>\n  tempSpan.style.visibility = 'hidden';<br \/>\n  tempSpan.style.position = 'absolute';<br \/>\n  tempSpan.style.whiteSpace = 'pre';<br \/>\n  \/\/ 2. Set font styles to match the select box<br \/>\n  tempSpan.style.font = window.getComputedStyle(sel).font;<br \/>\n  \/\/ 3. Set content to selected text<br \/>\n  tempSpan.innerText = sel.options[sel.selectedIndex].text;<br \/>\n  document.body.appendChild(tempSpan);<br \/>\n  <br \/>\n  \/\/ 4. Update width (with extra space for the dropdown arrow)<br \/>\n  sel.style.width = (tempSpan.offsetWidth + 30) + 'px';<br \/>\n  document.body.removeChild(tempSpan);<br \/>\n}<br \/>\n<\/code>\n<\/li>\n<\/ul>\n<p> &#8230; in the &#8220;proof of concept&#8221; <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php_GETME\" rel=\"noopener\">one_line_find.php<\/a> first draft <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/one_line_find.php\" rel=\"noopener\">Document Root Relative Folder Listing<\/a> web application you can <a href='#myif' onclick=\"document.getElementById('myif').src='\/one_line_find.php?rand=' + Math.floor(Math.random() * 1675645); document.getElementById('myif').style.display='block'; \">&#8220;crank up&#8221; below<\/a> if you like &#8230;<\/p>\n<div id=dmyif style=width:1200px;overflow:visible;z-index:876;height:80px;>\n<iframe scrolling=yes frameborder=0 name=myif id=myif src=\/About_Us.html style=zoom:0.7;z-index:876;display:none;width:80%;height:80px;overflow-y:visible;><\/iframe>\n<\/div>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d72124' onclick='var dv=document.getElementById(\"d72124\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/report\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d72124' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d72148' onclick='var dv=document.getElementById(\"d72148\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/link\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d72148' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d72156' onclick='var dv=document.getElementById(\"d72156\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/onmouseover\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d72156' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d72167' onclick='var dv=document.getElementById(\"d72167\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/ajax\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d72167' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d72196' onclick='var dv=document.getElementById(\"d72196\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/pdf\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d72196' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d72186' onclick='var dv=document.getElementById(\"d72186\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/popup\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d72186' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d72201' onclick='var dv=document.getElementById(\"d72201\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/slideshow\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d72201' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d72209' onclick='var dv=document.getElementById(\"d72209\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/document\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d72209' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>The word is, in workplaces all around Earth now, workers are unwrapping their Mars Bars and shaping to use &#8230; Word &#8230; huh?! Isn&#8217;t that a coincidence?! Who would have thunk it. They are constructing documents. So that being the &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/document-root-relative-folder-listing-links-word-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,12,14,29,37],"tags":[2458,69,84,85,5428,5427,1614,1580,233,234,2650,281,336,342,1750,367,400,405,5423,418,3336,435,450,2730,590,1658,597,2487,3580,2533,1807,707,5422,5421,760,2732,2092,861,5424,871,2723,885,894,3365,2120,913,932,967,968,975,980,997,2945,1045,1054,1059,1075,1866,3942,1149,2734,1151,1238,1581,5085,1254,2005,1319,1345,1411,5429],"class_list":["post-72209","post","type-post","status-publish","format-standard","hentry","category-animation","category-elearning","category-event-driven-programming","category-operating-system","category-tutorials","tag-abstraction","tag-ajax","tag-animation-2","tag-apache","tag-assemblies","tag-assembly","tag-asynchronous","tag-cell","tag-command","tag-command-line","tag-convert","tag-css","tag-directory","tag-div","tag-document-root","tag-dropdown","tag-event","tag-exec","tag-extensio","tag-file","tag-filename","tag-find","tag-folder","tag-formdata","tag-image","tag-imagemagick","tag-images","tag-inline","tag-inline-block","tag-line-feed","tag-link","tag-linux","tag-listing","tag-ls","tag-media","tag-mimetype","tag-multiple","tag-onclick","tag-one-row","tag-onmouseover","tag-ontouchmove","tag-operating-system-2","tag-overlay","tag-pandoc","tag-path","tag-pdf","tag-php","tag-popup","tag-popup-window","tag-powerpoint","tag-presentation","tag-programming","tag-relative","tag-relative-url","tag-report","tag-resize","tag-row","tag-select","tag-shell_exec","tag-slide","tag-slides","tag-slideshow","tag-table","tag-table-cell","tag-talent","tag-text","tag-tool","tag-tutorial","tag-url","tag-web-server","tag-word-document"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/72209"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=72209"}],"version-history":[{"count":6,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/72209\/revisions"}],"predecessor-version":[{"id":72244,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/72209\/revisions\/72244"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=72209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=72209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=72209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}