How to link Javascript files to HTML recursively - javascript

I'm trying to recursively link some Javascript files in a directory into a HTML page:
<?php
$dir = '/opt/lampp/htdocs/my_project/js';
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::SELF_FIRST );
foreach ( $iterator as $path ) {
if ($path->isDir()) {
print('dir >>> ' . $path->__toString() . PHP_EOL . '\n');
} else {
print($path->__toString() . PHP_EOL . '\n\n\n');
echo("<script src='$path->__toString() . PHP_EOL>\</script>");
}
}
?>
This, however, doesn't seem to work. How can I go about adding all the files in the directory and sub-directories recursively? Any working recursive approach will do. It doesn't have to be the way I'm trying it above.
Thank you all in advance.

Try changing your foreach block to below code and see if that helps?
foreach ( $iterator as $path ) {
if ($path->isDir()) {
print('dir >>> ' . $path . PHP_EOL);
} else {
print($path . PHP_EOL);
echo("<script src='$path'></script>".PHP_EOL);
}
}
The issue was with the syntax of "<script src='$path->__toString() . PHP_EOL>\</script>" changing this line to "<script src='$path'></script>" will help.

Related

How to recursively link javascript files to HTML

I have the following file structure:
root - dir1 - js_dir - file.js
- dir2 - inner_dir - header.php
The directory js_dir contains my javascript files. I'm trying to recursively add them to my header in header.php as follows:
header.php
<head>
<?php
$dir = '../../dir1';
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::SELF_FIRST );
foreach ( $iterator as $path ) {
if ($path->isDir()) {
print('<div> DIR : ' . $path . PHP_EOL . "</div>");
} else {
$path_parts = pathinfo($path);
$file_parts = $path_parts['extension'];
if ($file_parts == "js")
{
$array = explode("/opt/lampp/htdocs", $path);
unset($array[0]);
echo $path = implode("/", $array);
print("<div>http://localhost$path" . PHP_EOL . "</div>");
echo("<script src='http://localhost/$path'></script>");
}
}
}
?>
</head>
I, however, keep getting the error:
Fatal error: Uncaught UnexpectedValueException: RecursiveDirectoryIterator::__construct(../js): failed to open dir: No such file or directory in /opt/lampp/htdocs/root
How can I go about getting it to work?
Thank you all in advance.

how to convert php script to javascript

we have construct the one secret URL for my application.i have PHP script how to change java script any one help me to solve the issue
Below mentioned script how to change java script in c# application
i have php script this to change javascript
<html>
<title>Live</title>
<head>
<script src="http://content.jwplatform.com/libraries/Y09dkRGs.js"></script>
<script>jwplayer.key = "ti8UU55KNdJCPX+oWrJhLJNjkZYGiX13KS7yhlM7Ok/wmU3R";</script>
</head>
<body>
<?php
function bg_gen_secure_uri($file, $directory, $secret, $expiry=0, $allowed_countries='',
$disallowed_countries='', $allowed_ip='', $allowed_useragent='',
$allowed_metros='', $disallowed_metros='',
$progressive_start='', $progressive_end='',
$extra_params='') {
if ($file==''||$secret=='') {
return false;
}
// Construct the values for the MD5 salt ...
if (substr($expiry,0,1)=='=') {
$timestamp=substr($expiry,1);
} else if ($expiry > 0) {
$now=time(); // use UTC time since the server does
$timestamp=$now+$expiry;
} else {
$timestamp=0;
}
if ($allowed_countries) {
$allowed_countries='&a='.$allowed_countries;
}
if ($disallowed_countries) {
$disallowed_countries='&d='.$disallowed_countries;
}
if ($allowed_ip) {
$allowed_ip='&i='.$allowed_ip;
}
if ($allowed_useragent) {
$allowed_useragent='&u='.$allowed_useragent;
}
if ($progressive_start!='') {
$progressive_start='&start='.$progressive_start;
}
if ($progressive_end) {
$progressive_end='&end='.$progressive_end;
}
if ($allowed_metros) {
$allowed_metros='&am='.$allowed_metros;
}
if ($disallowed_metros) {
$disallowed_metros='&dm='.$disallowed_metros;
}
if ($extra_params) {
$extra_params=urldecode($extra_params);
}
// Generate the MD5 salt ...
if ($directory == '') {
$salt = $secret . $file . '?e=' . $timestamp . $allowed_countries .
$disallowed_countries . $allowed_metros . $disallowed_metros . $allowed_ip .
$allowed_useragent . $progressive_start . $progressive_end;
} else {
$salt = $secret . $directory . '?e=' . $timestamp . $allowed_countries .
$disallowed_countries . $allowed_metros . $disallowed_metros . $allowed_ip .
$allowed_useragent . $progressive_start . $progressive_end;
}
// Generate the MD5 hash ...
$hash_code = md5($salt);
// Generate the link ...
$url = $file . '?e=' . $timestamp . $allowed_countries . $disallowed_countries .
$allowed_metros . $disallowed_metros . $allowed_ip . $allowed_useragent .
$progressive_start . $progressive_end . '&h=' . $hash_code . $extra_params;
return $url;
}
function get_secure_url($file,$directory,$secret) {
$expiry=3600;
$allowed_countries='';
$disallowed_countries='';
$allowed_ip='';
$allowed_useragent='';
$allowed_metros='';
$disallowed_metros='';
$progressive_start='';
$progressive_end='';
$extra_params='&bgsecuredir=1';
return bg_gen_secure_uri($file, $directory, $secret, $expiry, $allowed_countries, $disallowed_countries, $allowed_ip, $allowed_useragent, $allowed_metros, $disallowed_metros, $progressive_start, $progressive_end, $extra_params);
}
$url = 'http://tv.live-s.cdn.bitgravity.com/cdn-live/_definst_/tv'.get_secure_url('/secure/live/tv/playlist.m3u8','/tv/secure/','kkkfdashfsdiads');
?>
<div>
<div id="player">
<div id="myElement"> </div>
<script type="text/javascript">
jwplayer("myElement").setup({
file: '<?=$url?>',
width: '100%',
aspectratio: '16:9',
stretching:'exactfit',
autostart: false,
androidhls: true,
skin: 'vapor',
primary: 'html5'
});
</script>
</div>
</div>
Install Composer from http://getcomposer.org/
Add the "base-reality/php-to-javascript": ">=0.0.3" to your project's
composer.json file:
"require":{ "base-reality/php-to-javascript": "0.1.16" }
Or the latest tagged version. The dev master should only be used for
development, not production.\
Include the Composer SPL autoload file in your project:
require_once('../vendor/autoload.php');
Call the converter:
$phpToJavascript = new PHPToJavascript\PHPToJavascript();
$phpToJavascript->addFromFile($inputFilename); $jsOutput =
$phpToJavascript->toJavascript();
$jsOutput will now contain an auto-generated Javascript version of
the PHP source file.
Hope this helps!
Thanks
You can convert PHP syntax to JS with https://gitlab.com/kornelski/babel-preset-php

Dynamically include JavaScript from external file - PHP

Thanks in advance for your help. I am having a hard time keeping my codebase clean. I want to avoid intermixing PHP, HTML, and CSS.
Currently, my main site is broken down into numerous smaller tabs. The PHP code for these tabs is dynamically included after an ajax call is made.
elseif (file_exists('templates/custom/'.$center."/".$section."/".$tab.".php")) {
include 'templates/custom/'.$center."/".$section."/".$tab.".php";
}
It works great but I would also like to dynamically include JavaScript from an external file. In my mind it would work like this,
elseif (file_exists('templates/custom/'.$center."/".$section."/".$tab.".php")) {
include 'templates/custom/'.$center."/".$section."/".$tab.".php";
include 'templates/custom/'.$center."/".$section."/".$tab.".js";
}
How can I dynamically include javascript based on what tab the user wants to go to while still keeping the javascript separated by tab in individual files.
I have spent the entire day looking into this issue and keep coming across examples that look like this,
echo "<script language='javascript' type='text/javascript'>";
echo "alert('hello worldio');";
echo "</script>";
$URL="page.php";
echo "<script>location.href='$URL'</script>";
This site is a single page application. THanks again!
Just print the <script> tag to include it:
print '<script src="templates/custom/'.$center.'/'.$section.'/'.$tab.'.js'" type="text/javascript"></script>';
Javascript files cannot be included by php function. Use the below code
elseif (file_exists('templates/custom/'.$center."/".$section."/".$tab.".php")) {
include 'templates/custom/'.$center."/".$section."/".$tab.".php";
$file_path = "javascript external file path"; // replace with correct file path
?>
<script language="JavaScript" type="text/javascript" src="<?php echo $file_path;?>"></script>
<?php } ?>
hi in my case i use module base template that seprated to smaller parts.i have 3 main UI part in my site
1.public site js for all templates jquery,bootstrap ,... that use in all templates must put here
2.each style or template has a js folder that all public js file of this templates must be there
3.each module in template has js folder that js special for that module must be there
i do it for css too.in fact when i load a module check all of this folders by
array_slice(scandir($st_css_style_public_path), 2)
and create css link or js script and print final string of addresses in my page.
but some times you need to inject a peace of code directly into your page i use a folder and a file with name of plugins->plugins.php put all piece of script there get it's content and print it into my page
`$st_plugins .= (file_exists($st_plugin_style_public_path) ) ? file_get_contents($st_plugin_style_public_path) : ' ';
all of my render method in my view is this :
public function render($address, $data = '', $cache = 1, $showstyle = 1) {
$data['LINKPREFIX'] = '/' . $this->current_holding_unique_name
. '/'
. $this->current_lang;
if (isset($address)) {
$path = explode('/', $address);
$path[0] = $path[0];
$path[1] = $path[1];
}
$template = $this->twig->loadTemplate($path[0] . DS . $path[1] . '.twig');
if ($showstyle) {
$css_links = '';
$js_links = '';
$st_plugins = '';
//##################################################
//########################## CREATING CSS,JS ADDRESS
//##################################################
//####### SITE PUBLIC CSS & JS FILES
$st_js_public_path = '.' . DS . PUBLIC_DIR . DS . $this->set_address($path[0]) . 'js';
$st_css_public_path = '.' . DS . PUBLIC_DIR . DS . $this->set_address($path[0]) . 'css';
if (file_exists($st_js_public_path) && is_dir($st_js_public_path)) {
$ar_public_jsfile_list = array_slice(scandir($st_js_public_path), 2);
foreach ($ar_public_jsfile_list as $js_file_name) {
$js_links .= $this->create_css_js_link($st_js_public_path . DS . $js_file_name, 'js');
}
}
if (file_exists($st_css_public_path) && is_dir($st_css_public_path)) {
$ar_public_cssfile_list = array_slice(scandir($st_css_public_path), 2);
foreach ($ar_public_cssfile_list as $css_file_name) {
$css_links .= $this->create_css_js_link($st_css_public_path . DS . $css_file_name, 'css');
}
}
//####### STYLE PUBLIC CSS & JS & PLUGINS FILES
$st_js_style_public_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . 'public' . DS . $this->current_direction . DS . 'js';
$st_css_style_public_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . 'public' . DS . $this->current_direction . DS . 'css';
$st_plugin_style_public_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . 'public' . DS . $this->current_direction . DS . 'plugins' . DS . 'plugins.php';
if (file_exists($st_css_style_public_path) && is_dir($st_css_style_public_path)) {
$ar_cssfile_list = array_slice(scandir($st_css_style_public_path), 2);
foreach ($ar_cssfile_list as $css_file_name) {
$css_links .= $this->create_css_js_link($st_css_style_public_path . DS . $css_file_name, 'css');
}
}
if (file_exists($st_js_style_public_path) && is_dir($st_js_style_public_path)) {
$ar_jsfile_list = array_slice(scandir($st_js_style_public_path), 2);
foreach ($ar_jsfile_list as $js_file_name) {
$js_links .= $this->create_css_js_link($st_js_style_public_path . DS . $js_file_name, 'js');
}
}
$st_plugins .= (file_exists($st_plugin_style_public_path) ) ? file_get_contents($st_plugin_style_public_path) : ' ';
//####### MODULE CSS & JS FILES
$st_js_style_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . $path[0] . DS . $this->current_direction . DS . 'js';
$st_css_style_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . $path[0] . DS . $this->current_direction . DS . 'css';
$st_plugin_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . $path[0] . DS . $this->current_direction . DS . 'plugins' . DS . 'plugins.php';
if (file_exists($st_css_style_path) && is_dir($st_css_style_path)) {
$ar_cssfile_list = array_slice(scandir($st_css_style_path), 2);
foreach ($ar_cssfile_list as $css_file_name) {
$css_links .= $this->create_css_js_link($st_css_style_path . DS . $css_file_name, 'css');
}
}
if (file_exists($st_js_style_path) && is_dir($st_js_style_path)) {
$ar_jsfile_list = array_slice(scandir($st_js_style_path), 2);
foreach ($ar_jsfile_list as $js_file_name) {
$js_links .= $this->create_css_js_link($st_js_style_path . DS . $js_file_name, 'js');
}
}
$st_plugins .= (file_exists($st_plugin_path) && $showstyle ) ? file_get_contents($st_plugin_path) : ' ';
//################################################
//################################################
//################################################
//################################################
//# # # CREATING CSS,JS ADDRESS
$data['VARCSSADDR'] = $css_links;
$data['VARJSADDR'] = $js_links . $st_plugins;
$data['VARURL'] = '/';
$data = array_merge($data, lang_translate::$lang);
$template->display($data);
} else {
//$ar_langpropr = language::$ar_lanuage[session::get('current_lang')];
//$data['lang_code'] = $ar_langpropr['lang_code'];
$data = array_merge($data, lang_translate::$lang);
return $this->twig->render($address . '.twig', $data);
}
}
i am using twig template engine so there are some unrelated code to your question here;else part is for ajax call.
conclusion:
1-you can use this structure to add or delete file from a module as easy as copy or delete a file from it's folder.
2- you can use it to create correct js or css to create address by ajax and print it in your code
i hope it helped you and don't hesitate to as more question if you need
PHP include()'s are server-side.
JavaScript is client-side.
Therefore, you cannot use include() on a JavaScript.
However, if you would like to load a JavaScript with a URL that you want, use this:
$url = "JAVASCRIPT URL HERE";
echo('<script src="'. $url .'"></script>');

Javascript/PHP ignore quotes in string

I'm making a music player using php and javascript. I list the files like this:
<?php
if (isset($_GET["action"])) {
$action = htmlspecialchars($_GET["action"]);
if ($action == "listen") {
function listFolderFiles($dir) {
$ffs = scandir($dir);
echo '<ol>';
foreach($ffs as $ff){
if($ff != '.' && $ff != '..'){
echo '<li>'. $ff . '';
if (is_dir($dir . '/' . $ff)) listFolderFiles($dir . '/' . $ff);
echo '</li>';
}
}
echo '</ol>';
}
listFolderFiles("music");
}
} else {
echo '> listen';
}
?>
And I change the song like this:
<script>
function changesong(url) {
$("#audioplayer").attr("src", url);
$("#audioplayer").trigger('play');
}
</script>
The problem is that songs with quotes in them won't play (for example Don't Stop Me Now). Is there an easy way to fix this?
You should use addslashes(), like this:
echo '<li>'. $ff . '';
You can escape quotes for javascript function in HTML code like this:
Note that you probably need to escape double quotes as well, since they can interfere with HTML tag.
$link = $dir . '/' . $ff;
$link = str_replace("'", "&apos;", $link);
$link = str_replace('"', """, $link);
echo '<li>'. $ff . '';

php javascript autopopulated image gallery

I get the error message syntax error missing ; before statement at "var galleryarray=new Array();" . "\n"; here is the php code
function returnimages($dirname=".") {
$pattern="\.(jpg|jpeg|png|gif|bmp)$";
$files = array();$curimage=0;
if($handle = opendir($dirname)) {
while(false !== ($file = readdir($handle))){
if(eregi($pattern, $file)){
echo 'galleryarray[' . $curimage .']=["' . $file . '"];' . "\n";
$curimage++;
}
}
closedir($handle);
}
return($files);
}
echo "var galleryarray=new Array();" . "\n";
returnimages();
and here is the javascript:
var galleryarray=new Array();
var curimg=0
function rotateimages(){
document.getElementById("slideshow").setAttribute("src", "slideshow_images/"+galleryarray[curimg])
curimg=(curimg<galleryarray.length-1)? curimg+1 : 0
}
window.onload=function(){
setInterval("rotateimages()", 2500)
}
i just don't see my mistake any help with this problem would be appreciated
klein
Replace your below line:
echo "var galleryarray=new Array();" . "\n";
with the following line:
echo "<script>var galleryarray=new Array();</script>";
You are adding a JS code without script tag so you need to add this tag.
EDITED:
echo 'galleryarray[' . $curimage .']=["' . $file . '"];' . "\n";
You also have error in the above line replace it with the below line:
echo '<script>galleryarray["' . $curimage .'"]=["' . $file . '"];</script>';

Categories