Harvie's JuKe!Box
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Version info:
+ * 0.3.6 - Now sorting also directories and have icon link support in css
* 0.3.5 - Fixed security bug - directory traversal in filelisting (upgrade recommended)
* 0.3.4 - Generating playlist for flashplayer, searching for bugs, cleaning code and preparing for new version release
* 0.3.3 - Shorter URLs for flashplayer (due to discussion at #skola ;o), nicer national characters handling
'" target="'.$GLOBALS['flash_player_frame'].'" class="icon ifplay">F</a>/'.
'<a href="?blank" target="'.$GLOBALS['flash_player_frame'].'" class="icon ifstop">S</a>');
}
- echo(' </td><td><a href="'.$temp.'">'.unxss(str_replace('_', ' ', $item)).'</a></td><td>'.$filesize." MiB </td></tr>\n");
+ echo(' </td><td class="maximize-width"><a href="'.$temp.'">'.unxss(str_replace('-',' - ',str_replace('_', ' ',
+$item))).'</a></td><td>'.$filesize." MiB </td></tr>\n");
+}
+
+function render_dir_line($current_dir, $item, $i) {
+ $parclass=($i%2?'even':'odd'); $parcolor=($i%2?'lightblue':'white');
+ $temp=str_replace('%2F', '/', rawurlencode($current_dir)).rawurlencode($item);
+ echo("<tr class=\"$parclass directory\" bgcolor=\"$parcolor\">".
+ '<td><a href="#up">'.$i.'</a></td><td class="btntd"><a href="?download&playlist&dir='.$temp.'" class="icon iplay">P</a>/'.
+ '<a href="?download&recursive&playlist&dir='.$temp.'" class="icon irplay">R</a>');
+ if($GLOBALS['useflash']) echo('/<a href="?f&playlist&dir='.$temp.'" target="'.$GLOBALS['flash_player_frame'].'" class="icon ifplay">F</a>');
+ echo('</td><td colspan="100%" class="maximize-width"><span class="icon ifolder">[DIR] </span><a href="?dir='.$temp.'">'.unxss(str_replace('_', ' ', $item)).
+ "</a></td></tr>\n");
}
function render_tr_playframe_show() {
if($GLOBALS['flash_player_frame'] == 'playframe-show' && $GLOBALS['useflash']) { ?>
<tr id="playframe-tr">
-<td><a href="?blank" target="playframe-show" title="Stop playback">S</a></td>
+<td><a href="?blank" target="playframe-show" title="Stop playback" class="icon ifstop">S</a></td>
<td colspan="100%">
<iframe
src="?blank"
name="playframe-show"
width="100%"
height="24"
-style="border: none;"
+style="border:none;"
transparentpagebg="yes"
></iframe></td></tr>
<?php }
</head>
<body>
-<div align="right" style="position: absolute; top: 0; right: 0;">
+<div align="right" style="position: absolute; top: 5px; right: 5px;">
<a name="up"></a>
- <iframe src="about:blank" name="playframe-hide" width="0" height="0" style="border: none;"></iframe><!-- -----------???--------------- -->
+ <iframe src="about:blank" name="playframe-hide" width="0" height="0" style="border: none;" class="hide"></iframe><!-- -----------???--------------- -->
<span class="icon"><</span> <a href="javascript: history.go(-1)" class="icon iback">BACK</a>
| <a href="?"><span class="icon ihome">HOME</span> (<?=$music_dir?>)</a>
| <a href="?help" class="icon ihelp">ABOUT/HELP</a>
<span style="float: right;">
<form action="?" method="GET" align="right" style="display: inline;">
<input type="hidden" name="download" value="" />
- <input type="text" name="random" value="<?=$default_random_count?>" />
+ <input type="number" min="1" name="random" value="<?=$default_random_count?>" style="width:4em;" title="how many randomly selected tracks should be in
+playlist?"
+/>
<input type="submit" value="random" title="Generate random music playlist..." />
</form>
<form action="?" method="GET" align="right" style="display: inline;">
- <input type="text" name="search"
+ <span class="icon isearch"></span><input type="search" name="search" autofocus placeholder="search regexp..."
title="Search in music/google/lyrics/mp3/youtube; Hint: You can use regular expressions in search query..."
value="<?=unxss($_GET['search'])?>"
/>
?>
<span style="float: right;">
<form action="?" method="POST" align="right">
- <input type="password" name="cache-refresh" value="" title="Password for refreshing - good for avoiding DoS Attacks!!!" />
+ <input type="password" name="cache-refresh" value="" style="width:5em;" title="Password for refreshing - good for avoiding DoS Attacks!!!" />
<input type="submit" value="refresh cache" title="You should refresh cache each time when you add new music or upgrade to newer version of JuKe!Box !!!" />
</form>
$i = 0;
echo('<table border="1" width="100%">');
render_tr_playframe_show();
-echo('<tr><td>S</td><td><a href="?download&playlist&search='.unxss($_GET['search']).'">P</a>');
-if($GLOBALS['useflash']) echo('/<a href="?f&playlist&search='.unxss($_GET['search']).'" target="'.$GLOBALS['flash_player_frame'].'">F</a>');
+echo('<tr class="directory"><td>S</td><td><a href="?download&playlist&search='.unxss($_GET['search']).'" class="icon iplay">P</a>');
+if($GLOBALS['useflash']) echo('/<a href="?f&playlist&search='.unxss($_GET['search']).'" target="'.$GLOBALS['flash_player_frame'].'" class="icon ifplay">F</a>');
echo('</td><td colspan="100%">Search: '.unxss($_GET['search']).'</td></tr>');
while(!feof($searchfp)) {
<?php render_tr_playframe_show(); ?>
<tr class="directory"><td>></td>
-<td><a href="?download&playlist&dir=<?=str_replace('%2F', '/', rawurlencode($current_dir))?>">P</a>/<a
-href="?download&recursive&playlist&dir=<?=str_replace('%2F', '/', rawurlencode($current_dir))?>">R</a><?php
-if($GLOBALS['useflash']) echo('/<a href="?f&playlist&dir='.str_replace('%2F', '/', rawurlencode($current_dir)).'" target="'.$GLOBALS['flash_player_frame'].'">F</a>'); ?>
+<td><a href="?download&playlist&dir=<?=str_replace('%2F', '/', rawurlencode($current_dir))?>" class="icon iplay">P</a>/<a
+href="?download&recursive&playlist&dir=<?=str_replace('%2F', '/', rawurlencode($current_dir))?>" class="icon irplay">R</a><?php
+if($GLOBALS['useflash']) echo('/<a href="?f&playlist&dir='.str_replace('%2F', '/', rawurlencode($current_dir)).'" target="'.$GLOBALS['flash_player_frame'].'"
+class="icon ifplay">F</a>'); ?>
</td>
<td colspan="100%"><?=unxss($dir)?></td></tr>
-<tr><td>^</td><td> </td><td colspan="100%" class="directory"><span class="icon ifolder">[DIR]</span> <a href="?dir=<?=rawurlencode($parent_dir)?>">.. (<?=$parent_dir?>)</a></td></tr>
+<tr><td>^</td><td> </td><td colspan="100%" class="directory"><span class="icon ifolder">[DIR] </span><a href="?dir=<?=rawurlencode($parent_dir)?>">..
+(<?=$parent_dir?>)</a></td></tr>
<?php
$i = 0;
if($item == '.' || $item == '..') continue;
if(($s==2 && is_file($dir.$item)) || ($s!=2 && is_dir($dir.$item))) continue;
$i++;
- $parclass=($i%2?'even':'odd'); $parcolor=($i%2?'lightblue':'white');
+ //$parclass=($i%2?'even':'odd'); $parcolor=($i%2?'lightblue':'white');
+ if($sort > 1) {
if(is_file($dir.$item)) {
- if($sort > 1) {
- $i--;
- $items[] = $item;
- } else {
- render_file_line($dir, $item, $music_dir_url, $i, filesize($dir.$item));
- }
+ $i--;
+ $itemsf[] = $item;
+ }
+ if(is_dir($dir.$item)) {
+ $i--;
+ $itemsd[] = $item;
+ }
+ } else {
+ if(is_file($dir.$item)) {
+ render_file_line($dir, $item, $music_dir_url, $i, filesize($dir.$item));
}
if(is_dir($dir.$item)) {
- $temp=str_replace('%2F', '/', rawurlencode($current_dir)).rawurlencode($item);
- echo("<tr class=\"$parclass directory\" bgcolor=\"$parcolor\">".
- '<td><a href="#up">'.$i.'</a></td><td class="btntd"><a href="?download&playlist&dir='.$temp.'" class="icon iplay">P</a>/'.
- '<a href="?download&recursive&playlist&dir='.$temp.'">R</a>');
- if($GLOBALS['useflash']) echo('/<a href="?f&playlist&dir='.$temp.'" target="'.$GLOBALS['flash_player_frame'].'" class="icon ifplay">F</a>');
- echo('</td><td colspan="100%"><span class="icon ifolder">[DIR]</span> <a href="?dir='.$temp.'">'.unxss(str_replace('_', ' ', $item))."</a></td></tr>\n");
+ render_dir_line($current_dir, $item, $i);
}
+ }
} rewinddir($dd); }
+
if($sort > 1) {
- @sort($items);
- foreach($items as $item) {
+ @sort($itemsf);
+ @sort($itemsd);
+ foreach($itemsd as $item) {
+ $i++;
+ render_dir_line($current_dir, $item, $i);
+ }
+ foreach($itemsf as $item) {
$i++;
render_file_line($dir, $item, $music_dir_url, $i, filesize($dir.$item));
}