1
0
Fork 0
mirror of https://github.com/Yetangitu/ampache synced 2025-10-03 09:49:30 +02:00

ok this is ugly but it works

This commit is contained in:
Karl 'vollmerk' Vollmer 2006-10-30 04:46:45 +00:00
parent 07ad109268
commit 598a200b96
9 changed files with 727 additions and 14 deletions

View file

@ -4,6 +4,8 @@
--------------------------------------------------------------------------
v.3.3.3-Alpha2
- Added XSPF Flash player, rough around the edges but it works
(Thx pb1dft/GrinningArmor)
- Fixed bug with Album --> Artist sorting, wasn't allowing you to
sort Z-A
- Fixed bug with most popular where links weren't being generated

View file

@ -227,9 +227,36 @@ class Stream {
/* First insert the songs we've got into
* a tmp_playlist
*/
$tmp_playlist = new tmpPlaylist();
$playlist_id = $tmp_playlist->create($this->sess,'xspf','song','');
$tmp_playlist = new tmpPlaylist($playlist_id);
/* Echo some ugly javascript to make it pop-open the player */
/* Add the songs to this new playlist */
foreach ($this->songs as $song_id) {
$tmp_playlist->add_object($song_id);
} // end foreach
/* Build the extra info we need to have it pass */
$play_info = "?action=show&tmpplaylist_id=" . $tmp_playlist->id;
// start ugly evil javascript code
//FIXME: This needs to go in a template, here for now though
echo "<html><head>\n";
echo "<title>" . conf('site_title') . "</title>\n";
echo "<script language=\"javascript\" type=\"text/javascript\">\n";
echo "<!-- begin\n";
echo "function PlayerPopUp(URL) {\n";
echo "window.open(URL, 'XSPF_player', 'width=400,height=168,scrollbars=0,toolbar=0,location=0,directories=0,status=1,resizable=0');\n";
echo "window.location = '" . return_referer() . "';\n";
echo "return false;\n";
echo "}\n";
echo "// end -->\n";
echo "</script>\n";
echo "</head>\n";
echo "<body onLoad=\"javascript:PlayerPopUp('" . conf('web_path') . "/modules/flash/xspf_player.php" . $play_info . "')\">\n";
echo "</body>\n";
echo "</html>\n";
} // create_xspf_player

View file

@ -89,7 +89,7 @@ class tmpPlaylist {
$db_results = mysql_query($sql, dbh());
while ($results = mysql_fetch_assoc($db_results)) {
$items[] = $results['id'];
$items[] = $results['object_id'];
}
return $items;
@ -97,7 +97,7 @@ class tmpPlaylist {
} // get_items
/**
* ceate
* create
* This function initializes a new tmpPlaylist it is assoicated with the current
* session rather then a user, as you could have same user multiple locations
*/
@ -114,10 +114,63 @@ class tmpPlaylist {
$id = mysql_insert_id(dbh());
/* Clean any other playlists assoicated with this sessoin */
$this->delete($sessid,$id);
return $id;
} // create
/**
* delete
* This deletes any other tmp_playlists assoicated with this
* session
*/
function delete($sessid,$id) {
$sessid = sql_escape($sessid);
$id = sql_escape($id);
$sql = "DELETE FROM tmp_playlist WHERE session='$sessid' AND id != '$id'";
$db_results = mysql_query($sql,dbh());
/* Remove assoicated tracks */
$this->prune_tracks();
return true;
} // delete
/**
* prune_tracks
* This prunes tracks that don't have playlists
*/
function prune_tracks() {
$sql = "DELETE FROM tmp_playlist_data USING tmp_playlist_data " .
"LEFT JOIN tmp_playlist ON tmp_playlist_data.tmp_playlist=tmp_playlist.id " .
"WHERE tmp_playlist.id IS NULL";
$db_results = mysql_query($sql,dbh());
} // prune_tracks
/**
* add_object
* This adds the object of $this->object_type to this tmp playlist
*/
function add_object($object_id) {
$object_id = sql_escape($object_id);
$playlist_id = sql_escape($this->id);
$sql = "INSERT INTO tmp_playlist_data (`object_id`,`tmp_playlist`) " .
" VALUES ('$object_id','$playlist_id')";
$db_results = mysql_query($sql, dbh());
return true;
} // add_object
/**
* vote
* This function is called by users to vote on a system wide playlist

View file

@ -286,12 +286,13 @@ function create_preference_input($name,$value) {
$var_name = $value . "_type";
${$var_name} = "selected=\"selected\"";
echo "<select name=\"$name\">\n";
echo "\t<option value=\"m3u\" $m3u_type>" . _("M3U") . "</option>\n";
echo "\t<option value=\"simple_m3u\" $simple_m3u_type>" . _("Simple M3U") . "</option>\n";
echo "\t<option value=\"pls\" $pls_type>" . _("PLS") . "</option>\n";
echo "\t<option value=\"asx\" $asx_type>" . _("Asx") . "</option>\n";
echo "\t<option value=\"ram\" $ram_type>" . _("RAM") . "</option>\n";
echo "\t<option value=\"xspf\" $xspf_type>" . _("XSPF") . "</option>\n";
echo "\t<option value=\"m3u\" $m3u_type>" . _('M3U') . "</option>\n";
echo "\t<option value=\"simple_m3u\" $simple_m3u_type>" . _('Simple M3U') . "</option>\n";
echo "\t<option value=\"pls\" $pls_type>" . _('PLS') . "</option>\n";
echo "\t<option value=\"asx\" $asx_type>" . _('Asx') . "</option>\n";
echo "\t<option value=\"ram\" $ram_type>" . _('RAM') . "</option>\n";
echo "\t<option value=\"xspf\" $xspf_type>" . _('XSPF') . "</option>\n";
echo "\t<option value=\"xspf_player\">" . _('Flash') . "</option>\n";
echo "</select>\n";
break;
case 'lang':

View file

@ -0,0 +1,46 @@
<?php
/*
Copyright (c) 2001 - 2006 Ampache.org
All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License v2
as published by the Free Software Foundation
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
require_once('../../lib/init.php');
$dbh = dbh();
$web_path = conf('web_path');
/* Attempt to build the temp playlist */
$action = scrub_in($_REQUEST['action']);
switch ($action) {
default:
case 'tmp_playlist':
$tmp_playlist = new tmpPlaylist($_REQUEST['tmp_id']);
$items = $tmp_playlist->get_items();
$stream = new Stream('xspf',$items);
$stream->start();
break;
case 'show':
$play_info = "?tmp_id=" . scrub_out($_REQUEST['tmpplaylist_id']);
require_once (conf('prefix') . '/templates/show_xspf_player.inc.php');
break;
} // end switch
?>

View file

@ -18,6 +18,8 @@
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
//FIXME: This should be renamed to stream.php as it makes a little more sense
//FIXME: considering what this file does
require('lib/init.php');
/* If we are running a demo, quick while you still can! */
@ -25,7 +27,6 @@ if (conf('demo_mode') || !$user->has_access('25')) {
access_denied();
}
$song_ids = array();
$web_path = conf('web_path');
@ -50,7 +51,8 @@ switch ($action) {
break;
/* This is run if we need to gather info based on a tmp playlist */
case 'tmp_playlist':
$tmp_playlist = new tmpPlaylist($_REQUEST['tmpplaylist_id']);
$song_ids = $tmp_playlist->get_items();
break;
case 'single_song':
$song_ids[] = scrub_in($_REQUEST['song_id']);

View file

@ -29,7 +29,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
if (count($results)) {
?>
<table class="box" cellspacing="0" cellpadding="0" style="width:625px;">
<table class="box" cellspacing="0">
<tr>
<td class="box-left-top"></td>
<td class="box-top"></td>

View file

@ -19,7 +19,6 @@
*/
?>
<html>
<head><title>Ampache XSPF Player</title></head>
<body style="margin:0px; padding:0px; border:0px;">
@ -28,7 +27,7 @@
<param name="movie" value="<?php echo conf('web_path'); ?>/modules/flash/xspf_player.swf?playlist_url=<?php echo conf('web_path'); ?>/song.php<?php echo $play_info; ?>&autoplay=true&autoload=true"/>
<param name="quality" value="high"/>
<param name="bgcolor" value="#E6E6E6"/>
<embed src="<?php echo conf('web_path'); ?>/modules/flash/xspf_player.swf?playlist_url=<?php echo conf('web_path'); ?>/song.php<?php echo $play_info; ?>&autoplay=true&autoload=true" quality="high" bgcolor="#E6E6E6" name="xspf_player" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" align="center" height="168" width="400"></embed>
<embed src="<?php echo conf('web_path'); ?>/modules/flash/xspf_player.swf?playlist_url=<?php echo conf('web_path'); ?>/modules/flash/xspf_player.php<?php echo $play_info; ?>&autoplay=true&autoload=true" quality="high" bgcolor="#E6E6E6" name="xspf_player" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" align="center" height="168" width="400"></embed>
</object>
</body>
</html>

View file

@ -0,0 +1,583 @@
<!--
/*
Copyright (c) 2001 - 2006 Ampache.org
All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License v2
as published by the Free Software Foundation
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-->
p {
color: #000000;
}
a {
color: #000000;
font-family: Verdana, Helvetica, sans-serif;
}
a:visited
{
color: #000000;
font-family: Verdana, Helvetica, sans-serif;
}
a:active {
color: #000000;
font-family: Verdana, Helvetica, sans-serif;
}
.text-box {
display: table-cell;
padding-left:5px;
padding-top:5px;
padding-right:5px;
margin-bottom:10px;
background-color: #bbbbbb;
border-right:2px solid #000000;
border-bottom:2px solid #000000;
border-left:2px solid #000000;
border-top:2px solid #000000;
}
.selected_button {
background-color: black;color:white;
}
.unselected_button {
/* there really isn't anything for this */
}
.display {}
#mpdpl td {
padding: 0px 2px 0px 2px;
text-align: left;
}
table.tabledata {}
td {
padding: 0px 8px 0px 8px;
color: #000000;
font-family: Verdana, Helvetica, sans-serif;
font-size: 12px;
}
th {
padding-right: 10px;
}
input {
color: #000000;
font-family: Verdana, Helvetica, sans-serif;
font-size: 12px;
font-weight: bold;
background-color: #dddddd;
margin: 2px 2px 2px 2px;
}
select {
color: #000000;
font-family: Verdana, Helvetica, sans-serif;
font-size: 12px;
background-color: #dddddd;
}
textarea {
background-color: #dddddd;
color: #000000;
font-family: Verdana, Helvetica, sans-serif;
font-size: 12px;
}
.table-header {
background: url(../images/ampache-light-bg.gif) #dddddd repeat-x;
vertical-align: top;
}
.header1
{
color: #000000;
font-family: Verdana, Helvetica, sans-serif;
font-size: 18px;
font-weight: 900;
}
.header2
{
color: #000000;
font-family: Verdana, Helvetica, sans-serif;
font-size: 14px;
font-weight: 900;
}
.headrow
{
background:#cccccc;
font-size: 12px;
}
.odd
{
background:#bbbbbb;
font-size: 12px;
}
.even
{
background:#dddddd;
font-size: 12px;
}
.blank {
background: #fff;
}
.border {
background:#000000;
}
.header {
font-size: 12px;
}
.error {
color: #990033;
}
.fatalerror {
padding-top: 3px;
padding-left: 3px;
padding-right: 3px;
display: table-cell;
padding-bottom: 3px;
color: #990033;
font-weight:bold;
border-right:2px solid #990033;
border-bottom:2px solid #990033;
border-left:2px solid #990033;
border-top:2px solid #990033;
}
#container div.fatalerror {
background:none;
height:auto;
padding:5px;
margin:10px;
display:block;
}
.disabled {
text-decoration: line-through;
}
.smallbutton {
border:0px;
padding-left:1px;
padding-right:1px;
font-size: 11px;
cursor: pointer;
}
/* These three lines make a menu vertical */
#sidebar li { float: none; }
#sidebar li ul { margin: -1.5em 0 0 9em; }
/* ////////////////////////////////////////////////////////////////*/
/* De aqui pa'bajo, ros esta creando una hoja de estilos unica para todo Ampache */
/* General style rules */
body{
padding-top: 0px;
margin-top: 0px;
margin-left: 0px;
margin-right: 0px;
background-color:#d3d3d3;
font-family:Arial, Helvetica, Sans-Serif;
}
#maincontainer{
margin: 0px;
}
.alphabet {
margin: 10px;
font-size: 10px;
font-weight: normal;
}
/* Content block */
#content {
top:90px;
float: none;
margin-top:7px;
margin-left:135px;
/*float:left; use for horizontal menu; comment out otherwise */
/* background:#fff url("../images/bg_content.gif") repeat-y right top; */
}
h3#content_title{
font-family:Arial,Helvetica,Sans-Serif;
font-size:12px;
line-height:32px;
color:#fff;
margin:0px;
padding:0px;
background:#8B8B8B url("../images/content_corner.gif") no-repeat right top;
}
h3#content_title span {
text-align:left;
}
/* Styles for Header */
div#Header{
height:80px;
margin-bottom:3px;
padding:0px;
}
#Header h1 {
background: transparent url("../images/bg_login_0.jpg") no-repeat top left;
border:0px;
width: 439px;
height: 84px;
float: left;
margin:0px;
padding:0px;
}
#Header h1 span {
display:none
}
#Header h2 {
background: transparent url(001/h2.gif) no-repeat top left;
margin-top: 75px;
width: 200px;
height: 18px;
float: right;
}
#Header h2 span {
font-size:10px;
margin-left:10px;
}
/* Sidebar */
/**
* Experimental for menus (Thx Sigger)
* TO DO: Fill in 1px border around menus & submenu items
* Make padding apply to the li, not just an a. Moving padding: to li throws off the dropdown menu alignment.
*/
div#sidebar{
clear:both;
position:absolute;
left:5px;
top:87px;
}
#sidebar h3 {
border:0px;
width: 120px;
height: 28px;
margin:0px;
padding:0px;
background: transparent url("../images/sidebar_top.jpg") no-repeat left;
}
#sidebar h3 span {
display:none
}
#sidebar ul {
margin: 0px;
list-style: none;
font-family:Arial, Helvetica, Sans-Serif;
font-size:10px;
padding: 0px;
line-height: 1.0;
}
#sidebar li {
margin: 0;
display: block;
border-bottom: 1px solid #8B8B8B;
border-left: 1px solid #8B8B8B;
border-right: 4px solid #B4B4B4;
border-top: 1px solid #8B8B8B;
/* float: left; /* use for horizontal menu; comment out otherwise */
padding: 5px 0px 5px 10px;
width: 10.5em;
background-color:#FFFFFF;
}
#sidebar ul.subnavside li {
border-right: 1px solid #B4B4B4;
}
#sidebar a, .navbutton {
display: block; /*Not sure why this is neccesary, but it is for IE*/
text-decoration: none;
}
#sidebar li:hover, #sidebar li.sfhover {
color:#000000;
background-color:#DDDDDD;
}
#sidebar li.hover:active {
background-color:#CCCCCC;
z-index:30;
}
#sidebar li ul {
float: left;
position: absolute;
width: 9em;
margin: -1.5em 0 0 10.5em; /* for vertical menu; comment out otherwise */
/* margin: 0.5em 0 0 -1.1em; /* for horizontal menu; comment out otherwise */
left: -999em; /* this -999em puts the submenu item way off to the left until it's called back by a hover (below) */
z-index:30;
}
#sidebar li:hover ul, #sidebar li.sfhover ul {
left: auto; /* this calls the submenu back when the parent li is hovered. */
}
/* Styles for Now Playing */
#nowplaying{
clear: both;
width: 625px;
}
#np_container1{
width: 260px;
height: 18px;
padding: 0px;
margin: 0px;
background: #fff url("../images/tb_tab.jpg") no-repeat top left;
}
#np_container1 h1{
font-size: 10px;
font-weight: bold;
padding: 2px;
}
#np_container2{
border-width: 1px 1px 1px 1px;
border-style: solid;
border-color:#ddd #999 #999 #ccc;
padding: 6px;
font-family: Verdana, sans-serif;
font-size: 10px;
line-height: 12px;
color: #000;
background: #D6D6D4 url("../images/bg_row.jpg") repeat top left;
}
/* Styles for Login template */
#container{
margin:100px auto 0px auto;
width:437px;
font-size: 12px;
text-align:center;
}
#container h1{
background:url("../images/bg_login_0.jpg") no-repeat;
height:81px;
margin-bottom:8px;
}
#container h1 span{
display:none;
}
#container div{
background:url("../images/bg_login_1.jpg") no-repeat;
height:285px;
}
#loginp_0{
color:#333;
margin-top:0px;
padding-top:60px;
}
.loginp_1{
text-align:right;
padding-right:100px;
}
.loginp_1 span{
font-weight:bold;
}
.loginp_1 input{
border:1px solid #999;
}
input.text_input {
width:12em;
}
.loginp_1 input.check_input {
margin-right:5em;
}
/* Footer */
#footer {
margin-left: 150px;
margin-bottom: 10px;
}
#footer p {
color:#999999;
font-size:10px;
}
#topbar {
height: 80px;
padding-top:3px;
padding-left:10px;
}
#topbarright {
float: right;
font-size: 10px;
}
#topbarleft, #topbarleft a{
float: left;
}
/* Box Related Styles */
.box {
padding:0px;
background: #f7f7f7;
}
.box-title {
border-bottom: solid 1px #000000;
font-size: 1.05em;
font-weight: bold;
}
.box-left-top {
background: url(../images/topleft.gif) no-repeat;
height:16px;
}
.box-left-bottom {
background: url(../images/bottomleft.gif) no-repeat;
height:18px;
}
.box-left {
background: url(../images/left.gif);
}
.box-bottom {
background: url(../images/bottom.gif);
height:18px;
}
.box-right-bottom {
background: url(../images/bottomright.gif) no-repeat;
}
.box-right-top {
background: url(../images/topright.gif) no-repeat;
}
.box-right {
background: url(../images/right.gif);
}
.box-top {
background: url(../images/top.gif);
}
/* List Header Styles */
.list-header {
text-decoration: none;
}
.list-header:hover {
color:#071fd4;
}
.confirmation-box {
padding-left:5px;
padding-top:5px;
padding-right:5px;
margin-bottom:10px;
display: table-cell;
background-color: #bbbbbb;
border-right:2px solid #000000;
border-bottom:2px solid #000000;
border-left:2px solid #000000;
border-top:2px solid #000000;}
.text-action, .text-action li {
margin-top:5px;
list-style: none;
margin-bottom:5px;
padding-left:0px;
}
.text-action a, .text-action span {
background: #dddddd;
border:1px solid #000000;
padding-left:2px;
padding-right:2px;
text-decoration: none;
}
.text-action #pt_active {
background: #000000;
color: #ffffff;
border:1px solid #dddddd;
}
#nowplaying {
width:600px;
}
.np_row {
padding-top: 3px;
padding-bottom: 3px;
display: block;
}
.np_cell {
margin: 10px;
}
/* 'Tab' Preferences, used by preferences.php */
#tablist {
padding: 3px 0;
margin: 12px 0 0 0;
font: bold 12px Verdana, sans-serif;
}
#tablist li {
list-style: none;
margin: 0;
display: inline;
}
#tablist li a {
padding: 3px 0.5em;
margin-left: 3px;
border: 1px solid #cccccc;
border-bottom: none;
background: #dddddd;
text-decoration: none;
}
#tablist li a:link { color: #222222; }
#tablist li a:visited { color: #000000; }
#tablist li a:hover {
color: #000000;
background: #bbbbbb;
border-color: #000000;
}
#tablist li a#current {
color: #000000;
background: #bbbbbb;
border-color: #000000;
border-bottom: 1px solid #000000;
}
/* TV Page Related Styles */
#tv_control {
float:left;
}
#tv_np {
float:right;
}
#tv_playlist {
clear: both;
}
/* User Online/Offline style, used in users.php */
td.user_online {
background-color: green;
}
td.user_offline {
background-color: #7f0000;
}
td.user_disabled {
background-color: gray;
}