mirror of
https://github.com/Yetangitu/ampache
synced 2025-10-03 17:59:21 +02:00
Add broadcast templates
This commit is contained in:
parent
265bd394cb
commit
916057fda7
27 changed files with 670 additions and 281 deletions
|
@ -399,6 +399,11 @@ wanted_types = "album,official"
|
|||
; DEFAULT: false
|
||||
;broadcast = "false"
|
||||
|
||||
; Web Socket address
|
||||
; Declare the web socket server address
|
||||
; DEFAULT: determined automatically
|
||||
;websocket_address = "ws://localhost:8080"
|
||||
|
||||
; Amazon base urls
|
||||
; An array of Amazon sites to search.
|
||||
; NOTE: This will search each of these sites in turn so don't expect it
|
||||
|
|
|
@ -62,15 +62,16 @@ class Broadcast extends database_object
|
|||
return Dba::write($sql, array($this->id));
|
||||
}
|
||||
|
||||
public static function create($name, $description)
|
||||
public static function create($name, $description='')
|
||||
{
|
||||
if (!empty($name)) {
|
||||
$sql = "INSERT INTO `broadcast` (`user`, `name`, `description`) VALUES (?, ?, ?)";
|
||||
$params = array($GLOBALS['user']->id, $name, $description);
|
||||
return Dba::write($sql, $params);
|
||||
Dba::write($sql, $params);
|
||||
return Dba::insert_id();
|
||||
}
|
||||
|
||||
return false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
public function update($data)
|
||||
|
@ -87,7 +88,8 @@ class Broadcast extends database_object
|
|||
|
||||
public function format()
|
||||
{
|
||||
$this->f_link = '<a href="' . AmpConfig::get('web_path') . '/broadcast.php?id=' . $this->id . '">' . scrub_out($this->name) . '</a>';
|
||||
$this->f_name = $this->name;
|
||||
$this->f_link = '<a href="' . AmpConfig::get('web_path') . '/broadcast.php?id=' . $this->id . '">' . scrub_out($this->f_name) . '</a>';
|
||||
$this->tags = Tag::get_top_tags('broadcast',$this->id);
|
||||
$this->f_tags = Tag::get_display($this->tags, $this->id, 'broadcast');
|
||||
}
|
||||
|
@ -140,4 +142,33 @@ class Broadcast extends database_object
|
|||
}
|
||||
}
|
||||
|
||||
public static function get_broadcast_link()
|
||||
{
|
||||
$link = "<div class=\"broadcast-action\">";
|
||||
$link .= "<a href=\"#\" onclick=\"showBroadcastsDialog(event);\">" . UI::get_icon('broadcast', T_('Broadcast')) . "</a>";
|
||||
$link .= "</div>";
|
||||
return $link;
|
||||
}
|
||||
|
||||
public static function get_unbroadcast_link($id)
|
||||
{
|
||||
$link = "<div class=\"broadcast-action\">";
|
||||
$link .= Ajax::button('?page=player&action=unbroadcast&broadcast_id=' . $id, 'broadcast', T_('Unbroadcast'), 'broadcast_action');
|
||||
$link .= "</div>";
|
||||
$link .= "<div class=\"broadcast-info\">(<span id=\"broadcast_listeners\">0</span>)</div>";
|
||||
return $link;
|
||||
}
|
||||
|
||||
public static function get_broadcasts($user_id)
|
||||
{
|
||||
$sql = "SELECT `id` FROM `broadcast` WHERE `user` = ?";
|
||||
$db_results = Dba::read($sql, array($user_id));
|
||||
|
||||
$broadcasts = array();
|
||||
while ($results = Dba::fetch_assoc($db_results)) {
|
||||
$broadcasts[] = $results['id'];
|
||||
}
|
||||
return $broadcasts;
|
||||
}
|
||||
|
||||
} // end of broadcast class
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
use Ratchet\MessageComponentInterface;
|
||||
use Ratchet\ConnectionInterface;
|
||||
|
||||
class Broadcast_Server extends MessageComponentInterface
|
||||
class Broadcast_Server implements MessageComponentInterface
|
||||
{
|
||||
const BROADCAST_SONG = "SONG";
|
||||
const BROADCAST_SONG_POSITION = "SONG_POSITION";
|
||||
|
@ -31,6 +31,8 @@ class Broadcast_Server extends MessageComponentInterface
|
|||
const BROADCAST_REGISTER_BROADCAST = "REGISTER_BROADCAST";
|
||||
const BROADCAST_REGISTER_LISTENER = "REGISTER_LISTENER";
|
||||
const BROADCAST_ENDED = "ENDED";
|
||||
const BROADCAST_INFO = "INFO";
|
||||
const BROADCAST_NB_LISTENERS = "NB_LISTENERS";
|
||||
|
||||
protected $clients;
|
||||
protected $listeners;
|
||||
|
@ -79,71 +81,101 @@ class Broadcast_Server extends MessageComponentInterface
|
|||
|
||||
protected function notifySong($from, $song_id)
|
||||
{
|
||||
$broadcast = $this->getConnectionBroadcast($from);
|
||||
if ($broadcast) {
|
||||
if ($this->isBroadcaster($from, $broadcast)) {
|
||||
if ($this->isBroadcaster($from)) {
|
||||
$broadcast = $broadcasters[$from];
|
||||
$clients = $this->getListeners($broadcast);
|
||||
$this->broadcastMessage($clients, self::BROADCAST_SONG, $song_id);
|
||||
} else {
|
||||
debug_event('broadcast', 'Action unauthorized.', '3');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function notifySongPosition($from, $song_position)
|
||||
{
|
||||
$broadcast = $this->getConnectionBroadcast($from);
|
||||
if ($broadcast) {
|
||||
if ($this->isBroadcaster($from, $broadcast)) {
|
||||
if ($this->isBroadcaster($from)) {
|
||||
$broadcast = $broadcasters[$from];
|
||||
$clients = $this->getListeners($broadcast);
|
||||
$this->broadcastMessage($clients, self::BROADCAST_SONG_POSITION, $song_position);
|
||||
} else {
|
||||
debug_event('broadcast', 'Action unauthorized.', '3');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function notifyPlayerPlay($from, $play)
|
||||
{
|
||||
$broadcast = $this->getConnectionBroadcast($from);
|
||||
if ($broadcast) {
|
||||
if ($this->isBroadcaster($from, $broadcast)) {
|
||||
if ($this->isBroadcaster($from)) {
|
||||
$broadcast = $broadcasters[$from];
|
||||
$clients = $this->getListeners($broadcast);
|
||||
$this->broadcastMessage($clients, self::BROADCAST_PLAYER_PLAY, $play);
|
||||
} else {
|
||||
debug_event('broadcast', 'Action unauthorized.', '3');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function registerBroadcast($from, $broadcast_key)
|
||||
{
|
||||
$broadcast = Broadcast::get_broadcast($broadcast_key);
|
||||
if ($broadcast) {
|
||||
$broadcasters[$from] = $broadcast;
|
||||
$listeners[$broadcast] = array();
|
||||
}
|
||||
}
|
||||
|
||||
protected function unregisterBroadcast($broadcast)
|
||||
protected function unregisterBroadcast($conn)
|
||||
{
|
||||
$broadcast = $broadcasters[$conn];
|
||||
$clients = $this->getListeners($broadcast);
|
||||
$this->broadcastMessage($clients, self::BROADCAST_ENDED);
|
||||
|
||||
unset($listeners[$broadcast]);
|
||||
unset($broadcasters[$conn]);
|
||||
}
|
||||
|
||||
protected function getRunningBroadcast($broadcast_id)
|
||||
{
|
||||
$broadcast = null;
|
||||
foreach ($broadcasters as $conn => $br) {
|
||||
if ($br->id == $broadcast_id) {
|
||||
$broadcast = $br;
|
||||
exit;
|
||||
}
|
||||
}
|
||||
return $broadcast;
|
||||
}
|
||||
|
||||
protected function registerListener($from, $broadcast_id)
|
||||
{
|
||||
$broadcast = $this->getRunningBroadcast();
|
||||
$listeners[$broadcast][] = $from;
|
||||
}
|
||||
|
||||
protected function unregisterListener($conn)
|
||||
{
|
||||
foreach ($listeners as $broadcast => $brlisteners) {
|
||||
$lindex = array_search($brlisteners, $conn);
|
||||
if ($lindex) {
|
||||
unset($brlisteners[$lindex]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function getConnectionBroadcast($conn)
|
||||
protected function notifyNbListeners($broadcast)
|
||||
{
|
||||
$broadcaster = array_search(broadcasters, $broadcast);
|
||||
$clients = $listeners[$broadcast];
|
||||
$clients[] = $broadcaster;
|
||||
$this->broadcastMessage($clients, self::BROADCAST_NB_LISTENERS, count($listeners[$broadcast]));
|
||||
}
|
||||
|
||||
protected function getListeners($broadcast)
|
||||
{
|
||||
return $listeners[$broadcast];
|
||||
}
|
||||
|
||||
protected function isBroadcaster($conn, $broadcast)
|
||||
protected function isBroadcaster($conn)
|
||||
{
|
||||
return bool(array_search($conn, $broadcasters));
|
||||
}
|
||||
|
||||
protected function broadcastMessage($clients, $cmd, $value='')
|
||||
|
@ -156,14 +188,12 @@ class Broadcast_Server extends MessageComponentInterface
|
|||
|
||||
public function onClose(ConnectionInterface $conn)
|
||||
{
|
||||
$broadcast = $this->getConnectionBroadcast($conn);
|
||||
if ($broadcast) {
|
||||
if ($this->isBroadcaster($conn, $broadcast)) {
|
||||
$this->unregisterBroadcast($broadcast);
|
||||
if ($this->isBroadcaster($conn)) {
|
||||
$this->unregisterBroadcast($conn);
|
||||
} else {
|
||||
$this->unregisterListener($conn);
|
||||
}
|
||||
}
|
||||
|
||||
$this->clients->detach($conn);
|
||||
}
|
||||
|
||||
|
@ -172,4 +202,14 @@ class Broadcast_Server extends MessageComponentInterface
|
|||
$conn->close();
|
||||
}
|
||||
|
||||
public static function get_address()
|
||||
{
|
||||
$websocket_address = AmpConfig::get('websocket_address');
|
||||
if (empty($websocket_address)) {
|
||||
$websocket_address = 'ws://' . $_SERVER['HTTP_HOST'] . ':8100';
|
||||
}
|
||||
|
||||
return $websocket_address . '/broadcast';
|
||||
}
|
||||
|
||||
} // end of broadcast_server class
|
||||
|
|
|
@ -85,6 +85,60 @@ function handlePlaylistAction(url, id) {
|
|||
$("#playlistdialog").dialog("close");
|
||||
}
|
||||
|
||||
/************************************************************/
|
||||
/* Dialog selection to start a broadcast */
|
||||
/************************************************************/
|
||||
|
||||
var closebroadcasts;
|
||||
function showBroadcastsDialog(e) {
|
||||
$("#broadcastsdialog").dialog("close");
|
||||
|
||||
var parent = this;
|
||||
parent.contentUrl = jsAjaxServer + '/ajax.server.php?page=player&action=show_broadcasts';
|
||||
parent.editDialogId = '<div id="broadcastsdialog"></div>';
|
||||
|
||||
$(parent.editDialogId).dialog({
|
||||
modal: false,
|
||||
dialogClass: 'broadcastsdialogstyle',
|
||||
resizable: false,
|
||||
draggable: false,
|
||||
width: 150,
|
||||
height: 70,
|
||||
autoOpen: false,
|
||||
open: function () {
|
||||
closebroadcasts = 1;
|
||||
$(document).bind('click', broverlayclickclose);
|
||||
$(this).load(parent.contentUrl, function() {
|
||||
$('#broadcastsdialog').focus();
|
||||
});
|
||||
},
|
||||
focus: function() {
|
||||
closebroadcasts = 0;
|
||||
},
|
||||
close: function (e) {
|
||||
$(document).unbind('click');
|
||||
$(this).empty();
|
||||
$(this).dialog("destroy");
|
||||
}
|
||||
});
|
||||
|
||||
$("#broadcastsdialog").dialog("option", "position", [e.clientX - 180, e.clientY]);
|
||||
$("#broadcastsdialog").dialog("open");
|
||||
closebroadcasts = 0;
|
||||
}
|
||||
|
||||
function broverlayclickclose() {
|
||||
if (closebroadcasts) {
|
||||
$("#broadcastsdialog").dialog("close");
|
||||
}
|
||||
closebroadcasts = 1;
|
||||
}
|
||||
|
||||
function handleBroadcastAction(url, id) {
|
||||
ajaxPut(url, id);
|
||||
$("#broadcastsdialog").dialog("close");
|
||||
}
|
||||
|
||||
/***************************************************/
|
||||
/* Edit modal dialog for artists, albums and songs */
|
||||
/***************************************************/
|
||||
|
|
|
@ -82,6 +82,10 @@ switch ($page) {
|
|||
require_once AmpConfig::get('prefix') . '/server/search.ajax.php';
|
||||
exit;
|
||||
break;
|
||||
case 'player':
|
||||
require_once AmpConfig::get('prefix') . '/server/player.ajax.php';
|
||||
exit;
|
||||
break;
|
||||
default:
|
||||
// A taste of compatibility
|
||||
break;
|
||||
|
|
67
server/player.ajax.php
Normal file
67
server/player.ajax.php
Normal file
|
@ -0,0 +1,67 @@
|
|||
<?php
|
||||
/* vim:set softtabstop=4 shiftwidth=4 expandtab: */
|
||||
/**
|
||||
*
|
||||
* LICENSE: GNU General Public License, version 2 (GPLv2)
|
||||
* Copyright 2001 - 2013 Ampache.org
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Sub-Ajax page, requires AJAX_INCLUDE
|
||||
*/
|
||||
if (!defined('AJAX_INCLUDE')) { exit; }
|
||||
|
||||
switch ($_REQUEST['action']) {
|
||||
case 'show_broadcasts':
|
||||
ob_start();
|
||||
require AmpConfig::get('prefix') . '/templates/show_broadcasts_dialog.inc.php';
|
||||
$results = ob_get_contents();
|
||||
ob_end_clean();
|
||||
echo $results;
|
||||
exit;
|
||||
break;
|
||||
case 'broadcast':
|
||||
$broadcast_id = $_GET['broadcast_id'];
|
||||
if (empty($broadcast_id)) {
|
||||
$broadcast_id = Broadcast::create(T_('My Broadcast'));
|
||||
}
|
||||
|
||||
$broadcast = new Broadcast($broadcast_id);
|
||||
if ($broadcast->id) {
|
||||
$key = Broadcast::generate_key();
|
||||
$broadcast->update_state(true, $key);
|
||||
$results['broadcast'] = Broadcast::get_unbroadcast_link($broadcast_id) . '' .
|
||||
'<script type="text/javascript">startBroadcast(\'' . $key . '\');</script>';
|
||||
}
|
||||
break;
|
||||
case 'unbroadcast':
|
||||
$broadcast_id = $_GET['broadcast_id'];
|
||||
$broadcast = new Broadcast($broadcast_id);
|
||||
if ($broadcast->id) {
|
||||
$broadcast->update_state(false);
|
||||
$results['broadcast'] = Broadcast::get_broadcast_link($broadcast_id) . '' .
|
||||
'<script type="text/javascript">stopBroadcast();</script>';
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$results['rfc3514'] = '0x1';
|
||||
break;
|
||||
} // switch on action;
|
||||
|
||||
// We always do this
|
||||
echo xoutput_from_array($results);
|
|
@ -552,7 +552,7 @@ CREATE TABLE `preference` (
|
|||
|
||||
LOCK TABLES `preference` WRITE;
|
||||
/*!40000 ALTER TABLE `preference` DISABLE KEYS */;
|
||||
INSERT INTO `preference` VALUES (1,'download','0','Allow Downloads',100,'boolean','options'),(4,'popular_threshold','10','Popular Threshold',25,'integer','interface'),(19,'sample_rate','32','Transcode Bitrate',25,'string','streaming'),(22,'site_title','Ampache :: Pour l\'Amour de la Musique','Website Title',100,'string','system'),(23,'lock_songs','0','Lock Songs',100,'boolean','system'),(24,'force_http_play','1','Forces Http play regardless of port',100,'boolean','system'),(25,'http_port','80','Non-Standard Http Port',100,'integer','system'),(41,'localplay_controller','0','Localplay Type',100,'special','options'),(29,'play_type','stream','Type of Playback',25,'special','streaming'),(31,'lang','fr_FR','Language',100,'special','interface'),(32,'playlist_type','m3u','Playlist Type',100,'special','playlist'),(33,'theme_name','reborn','Theme',0,'special','interface'),(51,'offset_limit','50','Offset Limit',5,'integer','interface'),(40,'localplay_level','0','Localplay Access',100,'special','options'),(44,'allow_stream_playback','1','Allow Streaming',100,'boolean','system'),(45,'allow_democratic_playback','0','Allow Democratic Play',100,'boolean','system'),(46,'allow_localplay_playback','0','Allow Localplay Play',100,'boolean','system'),(47,'stats_threshold','7','Statistics Day Threshold',25,'integer','interface'),(52,'rate_limit','8192','Rate Limit',100,'integer','streaming'),(53,'playlist_method','default','Playlist Method',5,'string','playlist'),(55,'transcode','default','Transcoding',25,'string','streaming'),(69,'show_lyrics','0','Show Lyrics',0,'boolean','interface'),(70,'mpd_active','0','MPD Active Instance',25,'integer','internal'),(71,'httpq_active','0','HTTPQ Active Instance',25,'integer','internal'),(72,'shoutcast_active','0','Shoutcast Active Instance',25,'integer','internal'),(73,'lastfm_user','','Last.FM Username',25,'string','plugins'),(74,'lastfm_pass','','Last.FM Password',25,'string','plugins'),(75,'lastfm_port','','Last.FM Submit Port',25,'string','internal'),(76,'lastfm_host','','Last.FM Submit Host',25,'string','internal'),(77,'lastfm_url','','Last.FM Submit URL',25,'string','internal'),(78,'lastfm_challenge','','Last.FM Submit Challenge',25,'string','internal'),(80,'features','50','Features',5,'integer','interface');
|
||||
INSERT INTO `preference` VALUES (1,'download','0','Allow Downloads',100,'boolean','options'),(4,'popular_threshold','10','Popular Threshold',25,'integer','interface'),(19,'sample_rate','32','Transcode Bitrate',25,'string','streaming'),(22,'site_title','Ampache :: For the love of Music','Website Title',100,'string','system'),(23,'lock_songs','0','Lock Songs',100,'boolean','system'),(24,'force_http_play','1','Forces Http play regardless of port',100,'boolean','system'),(25,'http_port','80','Non-Standard Http Port',100,'integer','system'),(41,'localplay_controller','0','Localplay Type',100,'special','options'),(29,'play_type','stream','Type of Playback',25,'special','streaming'),(31,'lang','fr_FR','Language',100,'special','interface'),(32,'playlist_type','m3u','Playlist Type',100,'special','playlist'),(33,'theme_name','reborn','Theme',0,'special','interface'),(51,'offset_limit','50','Offset Limit',5,'integer','interface'),(40,'localplay_level','0','Localplay Access',100,'special','options'),(44,'allow_stream_playback','1','Allow Streaming',100,'boolean','system'),(45,'allow_democratic_playback','0','Allow Democratic Play',100,'boolean','system'),(46,'allow_localplay_playback','0','Allow Localplay Play',100,'boolean','system'),(47,'stats_threshold','7','Statistics Day Threshold',25,'integer','interface'),(52,'rate_limit','8192','Rate Limit',100,'integer','streaming'),(53,'playlist_method','default','Playlist Method',5,'string','playlist'),(55,'transcode','default','Transcoding',25,'string','streaming'),(69,'show_lyrics','0','Show Lyrics',0,'boolean','interface'),(70,'mpd_active','0','MPD Active Instance',25,'integer','internal'),(71,'httpq_active','0','HTTPQ Active Instance',25,'integer','internal'),(72,'shoutcast_active','0','Shoutcast Active Instance',25,'integer','internal'),(73,'lastfm_user','','Last.FM Username',25,'string','plugins'),(74,'lastfm_pass','','Last.FM Password',25,'string','plugins'),(75,'lastfm_port','','Last.FM Submit Port',25,'string','internal'),(76,'lastfm_host','','Last.FM Submit Host',25,'string','internal'),(77,'lastfm_url','','Last.FM Submit URL',25,'string','internal'),(78,'lastfm_challenge','','Last.FM Submit Challenge',25,'string','internal'),(80,'features','50','Features',5,'integer','interface');
|
||||
/*!40000 ALTER TABLE `preference` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
@ -978,7 +978,7 @@ CREATE TABLE `user_preference` (
|
|||
|
||||
LOCK TABLES `user_preference` WRITE;
|
||||
/*!40000 ALTER TABLE `user_preference` DISABLE KEYS */;
|
||||
INSERT INTO `user_preference` VALUES (-1,1,'1'),(-1,4,'10'),(-1,19,'32'),(-1,22,'Ampache :: Pour l\'Amour de la Musique'),(-1,23,'0'),(-1,24,'1'),(-1,25,'80'),(-1,41,'mpd'),(-1,29,'stream'),(-1,31,'en_US'),(-1,32,'m3u'),(-1,33,'reborn'),(-1,34,'27'),(-1,35,'27'),(-1,36,'27'),(-1,51,'50'),(-1,40,'100'),(-1,44,'1'),(-1,45,'1'),(-1,46,'1'),(-1,47,'7'),(-1,49,'1'),(-1,52,'8192'),(-1,53,'default'),(-1,55,'default'),(-1,57,''),(-1,69,'0'),(-1,70,'0'),(-1,71,'0'),(-1,72,'0'),(-1,73,''),(-1,74,''),(-1,75,''),(-1,76,''),(-1,77,''),(-1,78,''),(1,1,'1'),(1,4,'10'),(1,19,'32'),(1,41,'mpd'),(1,29,'stream'),(1,31,'en_US'),(1,32,'m3u'),(1,33,'reborn'),(1,34,'27'),(1,35,'27'),(1,36,'27'),(1,51,'50'),(1,40,'100'),(1,47,'7'),(1,49,'1'),(1,52,'8192'),(1,53,'default'),(1,55,'default'),(1,57,''),(1,69,'0'),(1,70,'0'),(1,71,'0'),(1,72,'0'),(1,73,''),(1,74,''),(1,75,''),(1,76,''),(1,77,''),(1,78,''),(-1,79,'50'),(-1,80,'50'),(1,79,'50'),(1,80,'50');
|
||||
INSERT INTO `user_preference` VALUES (-1,1,'1'),(-1,4,'10'),(-1,19,'32'),(-1,22,'Ampache :: For the love of Music'),(-1,23,'0'),(-1,24,'1'),(-1,25,'80'),(-1,41,'mpd'),(-1,29,'stream'),(-1,31,'en_US'),(-1,32,'m3u'),(-1,33,'reborn'),(-1,34,'27'),(-1,35,'27'),(-1,36,'27'),(-1,51,'50'),(-1,40,'100'),(-1,44,'1'),(-1,45,'1'),(-1,46,'1'),(-1,47,'7'),(-1,49,'1'),(-1,52,'8192'),(-1,53,'default'),(-1,55,'default'),(-1,57,''),(-1,69,'0'),(-1,70,'0'),(-1,71,'0'),(-1,72,'0'),(-1,73,''),(-1,74,''),(-1,75,''),(-1,76,''),(-1,77,''),(-1,78,''),(1,1,'1'),(1,4,'10'),(1,19,'32'),(1,41,'mpd'),(1,29,'stream'),(1,31,'en_US'),(1,32,'m3u'),(1,33,'reborn'),(1,34,'27'),(1,35,'27'),(1,36,'27'),(1,51,'50'),(1,40,'100'),(1,47,'7'),(1,49,'1'),(1,52,'8192'),(1,53,'default'),(1,55,'default'),(1,57,''),(1,69,'0'),(1,70,'0'),(1,71,'0'),(1,72,'0'),(1,73,''),(1,74,''),(1,75,''),(1,76,''),(1,77,''),(1,78,''),(-1,79,'50'),(-1,80,'50'),(1,79,'50'),(1,80,'50');
|
||||
/*!40000 ALTER TABLE `user_preference` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
|
|
@ -40,6 +40,7 @@ if (AmpConfig::get('use_rss')) { ?>
|
|||
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=<?php echo AmpConfig::get('site_charset'); ?>" />
|
||||
<title><?php echo scrub_out(AmpConfig::get('site_title')); ?> - <?php echo $location['title']; ?></title>
|
||||
<?php require_once AmpConfig::get('prefix') . '/templates/stylesheets.inc.php'; ?>
|
||||
<link rel="stylesheet" href="<?php echo $web_path; ?>/templates/jquery-editdialog.css" type="text/css" media="screen" />
|
||||
<link rel="stylesheet" href="<?php echo $web_path; ?>/modules/jquery-ui/jquery-ui.min.css" type="text/css" media="screen" />
|
||||
<link rel="stylesheet" href="<?php echo $web_path; ?>/modules/tag-it/jquery.tagit.css" type="text/css" media="screen" />
|
||||
<script src="<?php echo $web_path; ?>/modules/jquery/jquery.min.js" language="javascript" type="text/javascript"></script>
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $htmllang; ?>" lang="<?php echo $htmllang; ?>">
|
||||
<head>
|
||||
<title>Ampache :: Pour l'Amour de la Musique - Install</title>
|
||||
<title>Ampache :: For the love of Music - Install</title>
|
||||
<link rel="stylesheet" href="templates/install.css" type="text/css" media="screen" />
|
||||
<meta http-equiv="Content-Type" content="text/html; Charset=<?php echo $charset; ?>" />
|
||||
</head>
|
||||
|
|
|
@ -774,7 +774,6 @@ a.jp-shuffle-off:hover {
|
|||
background-position: -90px -261px;
|
||||
}
|
||||
|
||||
|
||||
/* @end */
|
||||
|
||||
/* @group NO SOLUTION error feedback */
|
||||
|
@ -815,12 +814,13 @@ a.jp-shuffle-off:hover {
|
|||
.broadcast {
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
right:350px;
|
||||
margin-right: 2px;
|
||||
right:25%;
|
||||
font-size: 0.67em;
|
||||
}
|
||||
|
||||
.broadcast-info {
|
||||
display: none;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.broadcast-action {
|
||||
|
|
256
templates/jquery-editdialog.css
Normal file
256
templates/jquery-editdialog.css
Normal file
|
@ -0,0 +1,256 @@
|
|||
/***********************************************
|
||||
jQuery edit dialog
|
||||
***********************************************/
|
||||
.editdialogstyle.ui-dialog {
|
||||
background-image: url('../images/background.png');
|
||||
background-repeat: repeat;
|
||||
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
||||
font-family: "DejaVuSansCondensed",Helvetica,Arial,sans-serif;
|
||||
font-weight: normal;
|
||||
font-size: 16px;
|
||||
line-height: 1.5em;
|
||||
background-color: #222;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.editdialogstyle.ui-dialog .ui-dialog-titlebar {
|
||||
background: none;
|
||||
background-color: rgba(255,255,255,0.1);
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
border-color: #1d1d1d;
|
||||
border: 2px solid rgba(0,0,0,0.15);
|
||||
-webkit-box-shadow: 0 0 5px rgba(255,255,255,0.05);
|
||||
-moz-box-shadow: 0 0 5px rgba(255,255,255,0.05);
|
||||
box-shadow: 0 0 5px rgba(255,255,255,0.05);
|
||||
padding: 7px;
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
.editdialogstyle.ui-dialog .ui-dialog-title {
|
||||
}
|
||||
|
||||
.editdialogstyle.ui-dialog .ui-dialog-content {
|
||||
color: #999;
|
||||
border: 0;
|
||||
margin: 20px auto 20px auto;
|
||||
}
|
||||
|
||||
.editdialogstyle.ui-dialog .ui-dialog-buttonpane {
|
||||
background: none;
|
||||
background-color: rgba(255,255,255,0.1);
|
||||
height: 40px;
|
||||
border: 0;
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
border-color: #1d1d1d;
|
||||
border: 2px solid rgba(0,0,0,0.15);
|
||||
-webkit-box-shadow: 0 0 5px rgba(255,255,255,0.05);
|
||||
-moz-box-shadow: 0 0 5px rgba(255,255,255,0.05);
|
||||
box-shadow: 0 0 5px rgba(255,255,255,0.05);
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.editdialogstyle.ui-dialog .ui-dialog-buttonset button {
|
||||
background: none;
|
||||
background-image: -moz-linear-gradient(top,#ff9d00,#cc6200);
|
||||
background-image: -ms-linear-gradient(top,#ff9d00,#cc6200);
|
||||
background-image: -webkit-gradient(linear,0 0,0 100%,from(#ff9d00),to(#cc6200));
|
||||
background-image: -webkit-linear-gradient(top,#ff9d00,#cc6200);
|
||||
background-image: -o-linear-gradient(top,#ff9d00,#cc6200);
|
||||
background-image: linear-gradient(top,#ff9d00,#cc6200);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
position: relative;
|
||||
line-height: normal;
|
||||
border: 0;
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.2);
|
||||
-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.2);
|
||||
box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.2);
|
||||
cursor: pointer;
|
||||
color: #fff;
|
||||
min-width: 100px;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.editdialogstyle.ui-dialog .ui-dialog-buttonset button:hover {
|
||||
background-position: 0 -10px;
|
||||
background-color: #cc6200;
|
||||
-webkit-transition: background-position .1s linear;
|
||||
-moz-transition: background-position .1s linear;
|
||||
-ms-transition: background-position .1s linear;
|
||||
-o-transition: background-position .1s linear;
|
||||
transition: background-position .1s linear;
|
||||
text-shadow: 0 -1px 0 rgba(0,0,0,0.5);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.editdialogstyle.ui-dialog .ui-dialog-buttonset button:focus:active {
|
||||
-webkit-box-shadow:inset 0 0 3px #000,0 1px 0 rgba(255,255,255,0.1);
|
||||
-moz-box-shadow:inset 0 0 3px #000,0 1px 0 rgba(255,255,255,0.1);
|
||||
box-shadow:inset 0 0 3px #000,0 1px 0 rgba(255,255,255,0.1);
|
||||
-webkit-transition: background-position .1s linear;
|
||||
-moz-transition: background-position .1s linear;
|
||||
-ms-transition: background-position .1s linear;
|
||||
-o-transition: background-position .1s linear;
|
||||
transition: background-position .1s linear;
|
||||
}
|
||||
|
||||
.edit_dialog_content {
|
||||
min-height: 29px;
|
||||
font-size: 14px;
|
||||
color: #fff;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.edit_dialog_content td {
|
||||
min-width: 100px;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
.edit_dialog_content input[type=text] , .edit_dialog_content select {
|
||||
width: 450px;
|
||||
height: 30px;
|
||||
color: #fff;
|
||||
background: #333;
|
||||
background: rgba(255,255,255,0.2);
|
||||
border-color: #222;
|
||||
border-color: rgba(0,0,0,0.7);
|
||||
}
|
||||
|
||||
.edit_dialog_content input:focus, .edit_dialog_content select:focus {
|
||||
color: #555;
|
||||
background: #fff;
|
||||
background: rgba(255,255,255,0.9);
|
||||
border: 2px solid #ffc763;
|
||||
}
|
||||
|
||||
/***********************************************
|
||||
jQuery add to playlist dialog
|
||||
***********************************************/
|
||||
.playlistdialogstyle.ui-dialog {
|
||||
background-color: #222;
|
||||
font-size: 10px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 2px;
|
||||
border-color: #1d1d1d;
|
||||
border: 2px solid rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.playlistdialogstyle.ui-widget-content a {
|
||||
background-color: #222;
|
||||
color: #eee;
|
||||
text-decoration: none;
|
||||
text-align: left;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
.playlistdialogstyle.ui-widget-content a:hover {
|
||||
color: #ff9d00;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.playlistdialogstyle.ui-dialog .ui-dialog-titlebar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.playlistdialogstyle.ui-dialog .ui-dialog-title {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.playlistdialogstyle.ui-dialog .ui-dialog-content {
|
||||
background-color: #222;
|
||||
color: #999;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.playlistdialogstyle.ui-dialog .ui-dialog-buttonpane {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.playlistdialogstyle.ui-dialog .ui-dialog-buttonset button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.playlistdialogstyle.ui-dialog .ui-dialog-buttonset button:hover {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.playlistdialogstyle.ui-dialog .ui-dialog-buttonset button:focus:active {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/***********************************************
|
||||
jQuery broadcasts dialog
|
||||
***********************************************/
|
||||
.broadcastsdialogstyle.ui-dialog {
|
||||
background-color: #222;
|
||||
font-size: 10px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 2px;
|
||||
border-color: #1d1d1d;
|
||||
border: 2px solid rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.broadcastsdialogstyle.ui-widget-content a {
|
||||
background-color: #222;
|
||||
color: #eee;
|
||||
text-decoration: none;
|
||||
text-align: left;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
.broadcastsdialogstyle.ui-widget-content a:hover {
|
||||
color: #ff9d00;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.broadcastsdialogstyle.ui-dialog .ui-dialog-titlebar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.broadcastsdialogstyle.ui-dialog .ui-dialog-title {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.broadcastsdialogstyle.ui-dialog .ui-dialog-content {
|
||||
background-color: #222;
|
||||
color: #999;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.broadcastsdialogstyle.ui-dialog .ui-dialog-buttonpane {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.broadcastsdialogstyle.ui-dialog .ui-dialog-buttonset button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.broadcastsdialogstyle.ui-dialog .ui-dialog-buttonset button:hover {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.broadcastsdialogstyle.ui-dialog .ui-dialog-buttonset button:focus:active {
|
||||
display: none;
|
||||
}
|
40
templates/show_broadcasts_dialog.inc.php
Normal file
40
templates/show_broadcasts_dialog.inc.php
Normal file
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
/* vim:set softtabstop=4 shiftwidth=4 expandtab: */
|
||||
/**
|
||||
*
|
||||
* LICENSE: GNU General Public License, version 2 (GPLv2)
|
||||
* Copyright 2001 - 2013 Ampache.org
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
?>
|
||||
|
||||
<ul>
|
||||
<?php
|
||||
$broadcasts = Broadcast::get_broadcasts($GLOBALS['user']->id);
|
||||
foreach ($broadcasts as $broadcast_id) {
|
||||
$broadcast = new Broadcast($broadcast_id);
|
||||
$broadcast->format();
|
||||
?>
|
||||
<li>
|
||||
<a href="javascript:void(0);" id="rb_append_dbroadcast_<?php echo $broadcast->id; ?>" onclick="handleBroadcastAction('<?php echo AmpConfig::get('ajax_url').'?page=player&action=broadcast&broadcast_id='.$broadcast->id; ?>', 'rb_append_dbroadcast_<?php echo $broadcast->id; ?>');">
|
||||
<?php echo $broadcast->f_name; ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php } ?>
|
||||
</ul><br />
|
||||
<a href="javascript:void(0);" id="rb_append_dbroadcast_new" onclick="handleBroadcastAction('<?php echo AmpConfig::get('ajax_url'). '?page=player&action=broadcast'; ?>', 'rb_append_dbroadcast_new');">
|
||||
<?php echo T_('New broadcast'); ?>
|
||||
</a>
|
|
@ -43,7 +43,7 @@
|
|||
</p>
|
||||
<div id="bottom">
|
||||
<p><strong>Ampache</strong><br />
|
||||
Pour l'Amour de la Musique.</p>
|
||||
For the love of Music.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -13,10 +13,19 @@ if (!$iframed || $is_share) {
|
|||
require_once AmpConfig::get('prefix') . '/templates/stylesheets.inc.php';
|
||||
}
|
||||
?>
|
||||
<link rel="stylesheet" href="<?php echo AmpConfig::get('web_path'); ?>/templates/jquery-editdialog.css" type="text/css" media="screen" />
|
||||
<link rel="stylesheet" href="<?php echo AmpConfig::get('web_path'); ?>/modules/jquery-ui/jquery-ui.min.css" type="text/css" media="screen" />
|
||||
<script src="<?php echo AmpConfig::get('web_path'); ?>/modules/jquery/jquery.min.js" language="javascript" type="text/javascript"></script>
|
||||
<script src="<?php echo AmpConfig::get('web_path'); ?>/modules/jquery-ui/jquery-ui.min.js" language="javascript" type="text/javascript"></script>
|
||||
<script src="<?php echo AmpConfig::get('web_path'); ?>/modules/jquery/jquery.cookie.js" language="javascript" type="text/javascript"></script>
|
||||
<script src="<?php echo AmpConfig::get('web_path'); ?>/modules/jquery-jplayer/jquery.jplayer.min.js" language="javascript" type="text/javascript"></script>
|
||||
<script src="<?php echo AmpConfig::get('web_path'); ?>/modules/jquery-jplayer/jplayer.playlist.min.js" language="javascript" type="text/javascript"></script>
|
||||
<script src="<?php echo AmpConfig::get('web_path'); ?>/lib/javascript/base.js" language="javascript" type="text/javascript"></script>
|
||||
<script src="<?php echo AmpConfig::get('web_path'); ?>/lib/javascript/ajax.js" language="javascript" type="text/javascript"></script>
|
||||
<script src="<?php echo AmpConfig::get('web_path'); ?>/lib/javascript/tools.js" language="javascript" type="text/javascript"></script>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
var jsAjaxServer = "<?php echo AmpConfig::get('ajax_server') ?>";
|
||||
</script>
|
||||
<?php
|
||||
if ($iframed) {
|
||||
?>
|
||||
|
@ -199,16 +208,17 @@ if ($isVideo) {
|
|||
<?php
|
||||
}
|
||||
?>
|
||||
$("#jquery_jplayer_1").bind($.jPlayer.event.timeupdate, function (event) {
|
||||
sendBroadcastMessage('SONG_POSITION', event.jPlayer.status.currentTime);
|
||||
<?php
|
||||
if (AmpConfig::get('waveform') && !$is_share) {
|
||||
?>
|
||||
$("#jquery_jplayer_1").bind($.jPlayer.event.timeupdate, function (event) {
|
||||
if (event.jPlayer.status.duration > 0) {
|
||||
var leftpos = 400 * (event.jPlayer.status.currentTime / event.jPlayer.status.duration);
|
||||
$(".waveform-time").css({left: leftpos});
|
||||
}
|
||||
});
|
||||
<?php } ?>
|
||||
});
|
||||
$("#jquery_jplayer_1").bind($.jPlayer.event.volumechange, function(event) {
|
||||
$.cookie('jp_volume', event.jPlayer.options.volume, { expires: 7, path: '/'});
|
||||
});
|
||||
|
@ -253,6 +263,87 @@ function HideWaveform()
|
|||
$('.waveform').css('visibility', 'hidden');
|
||||
}
|
||||
<?php } ?>
|
||||
|
||||
var brkey = '';
|
||||
var brconn = null;
|
||||
|
||||
function startBroadcast(key)
|
||||
{
|
||||
brkey = key;
|
||||
|
||||
listenBroadcast();
|
||||
sendBroadcastMessage('REGISTER_BROADCAST', brkey);
|
||||
}
|
||||
|
||||
function listenBroadcast()
|
||||
{
|
||||
if (brconn != null) {
|
||||
stopBroadcast();
|
||||
}
|
||||
|
||||
brconn = new WebSocket('<?php echo Broadcast_Server::get_address(); ?>');
|
||||
brconn.onmessage = receiveBroadcastMessage;
|
||||
}
|
||||
|
||||
function receiveBroadcastMessage(e)
|
||||
{
|
||||
var jp = $("#jquery_jplayer_1").data("jPlayer");
|
||||
var msgs = e.data.split(';');
|
||||
for (var i = 0; i < msgs.length; ++i) {
|
||||
var msg = msgs[i].split('=');
|
||||
if (msg.count == 2) {
|
||||
switch (msg[0]) {
|
||||
case 'PLAY':
|
||||
if (msg[1] == '1') {
|
||||
if (jp.status.paused) {
|
||||
jp.play();
|
||||
}
|
||||
} else {
|
||||
if (!jp.status.paused) {
|
||||
jp.pause();
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'SONG':
|
||||
|
||||
break;
|
||||
|
||||
case 'SONG_POSITION':
|
||||
jp.play(msg[1]);
|
||||
break;
|
||||
|
||||
case 'NB_LISTENERS':
|
||||
$('#broadcast_listeners').text($msg[1]);
|
||||
break;
|
||||
|
||||
case 'INFO':
|
||||
// Display information notification to user here
|
||||
break;
|
||||
|
||||
case 'ENDED':
|
||||
jp.stop();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function sendBroadcastMessage(cmd, value)
|
||||
{
|
||||
if (brconn != null) {
|
||||
var msg = cmd + '=' + value + ';';
|
||||
brconn.send(cmd);
|
||||
}
|
||||
}
|
||||
|
||||
function stopBroadcast()
|
||||
{
|
||||
brkey = '';
|
||||
brconn.close();
|
||||
brconn = null;
|
||||
}
|
||||
|
||||
<?php if ($iframed && AmpConfig::get('webplayer_confirmclose') && !$is_share) { ?>
|
||||
window.parent.onbeforeunload = function (evt) {
|
||||
if (!$("#jquery_jplayer_1").data("jPlayer").status.paused) {
|
||||
|
@ -391,11 +482,8 @@ if ($isVideo) {
|
|||
</div>
|
||||
</div>
|
||||
<?php if (AmpConfig::get('broadcast')) { ?>
|
||||
<div class="broadcast">
|
||||
<div class="broadcast-action">
|
||||
<?php echo Ajax::button('?page=player&action=broadcast', 'broadcast', T_('Broadcast'), 'broadcast_action'); ?>
|
||||
</div>
|
||||
<div class="broadcast-info">(<span id="broadcast_listeners">0</span>)</div>
|
||||
<div id="broadcast" class="broadcast">
|
||||
<?php echo Broadcast::get_broadcast_link(); ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<div class="jp-playlist" style="position: absolute;">
|
||||
|
|
|
@ -85,7 +85,7 @@ require $prefix . '/templates/install_header.inc.php';
|
|||
</div>
|
||||
<div id="bottom">
|
||||
<p><strong>Ampache Installation.</strong><br />
|
||||
Pour l'Amour de la Musique</p>
|
||||
For the love of Music</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ $web_path = AmpConfig::get('web_path');
|
|||
</div><!--end <div>id="maincontainer-->
|
||||
<div id="bottom">
|
||||
<p><strong>Ampache</strong><br />
|
||||
Pour l'Amour de la Musique.</p>
|
||||
For the love of Music.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
</div>
|
||||
<div id="bottom">
|
||||
<p><strong>Ampache Debug.</strong><br />
|
||||
Pour l'Amour de la Musique.</p>
|
||||
For the love of Music.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -75,7 +75,7 @@ This variable no longer exists, all downsampling/transcoding is handled by the t
|
|||
</div>
|
||||
<div id="bottom">
|
||||
<p><strong>Ampache Debug.</strong><br />
|
||||
Pour l'Amour de la Musique.</p>
|
||||
For the love of Music.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -59,7 +59,7 @@ $web_path = AmpConfig::get('web_path');
|
|||
</div><!--end <div>id="maincontainer-->
|
||||
<div id="bottom">
|
||||
<p><strong>Ampache</strong><br />
|
||||
Pour l'Amour de la Musique.</p>
|
||||
For the love of Music.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -189,203 +189,6 @@ input[type=button]:focus:active, input[type=submit]:focus:active {
|
|||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
/***********************************************
|
||||
jQuery edit dialog
|
||||
***********************************************/
|
||||
.editdialogstyle.ui-dialog {
|
||||
background-image: url('../images/background.png');
|
||||
background-repeat: repeat;
|
||||
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
||||
font-family: "DejaVuSansCondensed",Helvetica,Arial,sans-serif;
|
||||
font-weight: normal;
|
||||
font-size: 16px;
|
||||
line-height: 1.5em;
|
||||
background-color: #222;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.editdialogstyle.ui-dialog .ui-dialog-titlebar {
|
||||
background: none;
|
||||
background-color: rgba(255,255,255,0.1);
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
border-color: #1d1d1d;
|
||||
border: 2px solid rgba(0,0,0,0.15);
|
||||
-webkit-box-shadow: 0 0 5px rgba(255,255,255,0.05);
|
||||
-moz-box-shadow: 0 0 5px rgba(255,255,255,0.05);
|
||||
box-shadow: 0 0 5px rgba(255,255,255,0.05);
|
||||
padding: 7px;
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
.editdialogstyle.ui-dialog .ui-dialog-title {
|
||||
}
|
||||
|
||||
.editdialogstyle.ui-dialog .ui-dialog-content {
|
||||
color: #999;
|
||||
border: 0;
|
||||
margin: 20px auto 20px auto;
|
||||
}
|
||||
|
||||
.editdialogstyle.ui-dialog .ui-dialog-buttonpane {
|
||||
background: none;
|
||||
background-color: rgba(255,255,255,0.1);
|
||||
height: 40px;
|
||||
border: 0;
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
border-color: #1d1d1d;
|
||||
border: 2px solid rgba(0,0,0,0.15);
|
||||
-webkit-box-shadow: 0 0 5px rgba(255,255,255,0.05);
|
||||
-moz-box-shadow: 0 0 5px rgba(255,255,255,0.05);
|
||||
box-shadow: 0 0 5px rgba(255,255,255,0.05);
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.editdialogstyle.ui-dialog .ui-dialog-buttonset button {
|
||||
background: none;
|
||||
background-image: -moz-linear-gradient(top,#ff9d00,#cc6200);
|
||||
background-image: -ms-linear-gradient(top,#ff9d00,#cc6200);
|
||||
background-image: -webkit-gradient(linear,0 0,0 100%,from(#ff9d00),to(#cc6200));
|
||||
background-image: -webkit-linear-gradient(top,#ff9d00,#cc6200);
|
||||
background-image: -o-linear-gradient(top,#ff9d00,#cc6200);
|
||||
background-image: linear-gradient(top,#ff9d00,#cc6200);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
position: relative;
|
||||
line-height: normal;
|
||||
border: 0;
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.2);
|
||||
-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.2);
|
||||
box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.2);
|
||||
cursor: pointer;
|
||||
color: #fff;
|
||||
min-width: 100px;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.editdialogstyle.ui-dialog .ui-dialog-buttonset button:hover {
|
||||
background-position: 0 -10px;
|
||||
background-color: #cc6200;
|
||||
-webkit-transition: background-position .1s linear;
|
||||
-moz-transition: background-position .1s linear;
|
||||
-ms-transition: background-position .1s linear;
|
||||
-o-transition: background-position .1s linear;
|
||||
transition: background-position .1s linear;
|
||||
text-shadow: 0 -1px 0 rgba(0,0,0,0.5);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.editdialogstyle.ui-dialog .ui-dialog-buttonset button:focus:active {
|
||||
-webkit-box-shadow:inset 0 0 3px #000,0 1px 0 rgba(255,255,255,0.1);
|
||||
-moz-box-shadow:inset 0 0 3px #000,0 1px 0 rgba(255,255,255,0.1);
|
||||
box-shadow:inset 0 0 3px #000,0 1px 0 rgba(255,255,255,0.1);
|
||||
-webkit-transition: background-position .1s linear;
|
||||
-moz-transition: background-position .1s linear;
|
||||
-ms-transition: background-position .1s linear;
|
||||
-o-transition: background-position .1s linear;
|
||||
transition: background-position .1s linear;
|
||||
}
|
||||
|
||||
.edit_dialog_content {
|
||||
min-height: 29px;
|
||||
font-size: 14px;
|
||||
color: #fff;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.edit_dialog_content td {
|
||||
min-width: 100px;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
.edit_dialog_content input[type=text] , .edit_dialog_content select {
|
||||
width: 450px;
|
||||
height: 30px;
|
||||
color: #fff;
|
||||
background: #333;
|
||||
background: rgba(255,255,255,0.2);
|
||||
border-color: #222;
|
||||
border-color: rgba(0,0,0,0.7);
|
||||
}
|
||||
|
||||
.edit_dialog_content input:focus, .edit_dialog_content select:focus {
|
||||
color: #555;
|
||||
background: #fff;
|
||||
background: rgba(255,255,255,0.9);
|
||||
border: 2px solid #ffc763;
|
||||
}
|
||||
|
||||
/***********************************************
|
||||
jQuery add to playlist dialog
|
||||
***********************************************/
|
||||
.playlistdialogstyle.ui-dialog {
|
||||
background-color: #222;
|
||||
font-size: 10px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 2px;
|
||||
border-color: #1d1d1d;
|
||||
border: 2px solid rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.playlistdialogstyle.ui-widget-content a {
|
||||
background-color: #222;
|
||||
color: #eee;
|
||||
text-decoration: none;
|
||||
text-align: left;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
.playlistdialogstyle.ui-widget-content a:hover {
|
||||
color: #ff9d00;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.playlistdialogstyle.ui-dialog .ui-dialog-titlebar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.playlistdialogstyle.ui-dialog .ui-dialog-title {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.playlistdialogstyle.ui-dialog .ui-dialog-content {
|
||||
background-color: #222;
|
||||
color: #999;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.playlistdialogstyle.ui-dialog .ui-dialog-buttonpane {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.playlistdialogstyle.ui-dialog .ui-dialog-buttonset button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.playlistdialogstyle.ui-dialog .ui-dialog-buttonset button:hover {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.playlistdialogstyle.ui-dialog .ui-dialog-buttonset button:focus:active {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/***********************************************
|
||||
Main
|
||||
***********************************************/
|
||||
|
|
|
@ -52,7 +52,7 @@ $htmllang = str_replace("_","-",AmpConfig::get('lang'));
|
|||
<body>
|
||||
<div id="header">
|
||||
<h1><?php echo T_('Ampache Update'); ?></h1>
|
||||
<p>Pour l'Amour de la Musique.</p>
|
||||
<p>For the love of Music.</p>
|
||||
</div>
|
||||
<div id="text-box">
|
||||
<div class="notify">
|
||||
|
@ -69,7 +69,7 @@ $htmllang = str_replace("_","-",AmpConfig::get('lang'));
|
|||
</div>
|
||||
<div id="bottom">
|
||||
<p><b><?php echo T_('Ampache Installation.'); ?></b><br />
|
||||
Pour l'Amour de la Musique.</p>
|
||||
For the love of Music.</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue