mirror of
https://github.com/Yetangitu/ampache
synced 2025-10-04 10:19:25 +02:00
Add broadcast templates
This commit is contained in:
parent
265bd394cb
commit
916057fda7
27 changed files with 670 additions and 281 deletions
|
@ -48,7 +48,7 @@ switch ($_REQUEST['action']) {
|
||||||
case 'video':
|
case 'video':
|
||||||
case 'song':
|
case 'song':
|
||||||
case 'channel':
|
case 'channel':
|
||||||
case 'broadcast':
|
case 'broadcast':
|
||||||
$browse->set_type($_REQUEST['action']);
|
$browse->set_type($_REQUEST['action']);
|
||||||
$browse->set_simple_browse(true);
|
$browse->set_simple_browse(true);
|
||||||
break;
|
break;
|
||||||
|
@ -118,7 +118,7 @@ switch ($_REQUEST['action']) {
|
||||||
$browse->set_sort('id', 'ASC');
|
$browse->set_sort('id', 'ASC');
|
||||||
$browse->show_objects();
|
$browse->show_objects();
|
||||||
break;
|
break;
|
||||||
case 'broadcast':
|
case 'broadcast':
|
||||||
$browse->set_sort('id', 'ASC');
|
$browse->set_sort('id', 'ASC');
|
||||||
$browse->show_objects();
|
$browse->show_objects();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -399,6 +399,11 @@ wanted_types = "album,official"
|
||||||
; DEFAULT: false
|
; DEFAULT: false
|
||||||
;broadcast = "false"
|
;broadcast = "false"
|
||||||
|
|
||||||
|
; Web Socket address
|
||||||
|
; Declare the web socket server address
|
||||||
|
; DEFAULT: determined automatically
|
||||||
|
;websocket_address = "ws://localhost:8080"
|
||||||
|
|
||||||
; Amazon base urls
|
; Amazon base urls
|
||||||
; An array of Amazon sites to search.
|
; An array of Amazon sites to search.
|
||||||
; NOTE: This will search each of these sites in turn so don't expect it
|
; 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));
|
return Dba::write($sql, array($this->id));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function create($name, $description)
|
public static function create($name, $description='')
|
||||||
{
|
{
|
||||||
if (!empty($name)) {
|
if (!empty($name)) {
|
||||||
$sql = "INSERT INTO `broadcast` (`user`, `name`, `description`) VALUES (?, ?, ?)";
|
$sql = "INSERT INTO `broadcast` (`user`, `name`, `description`) VALUES (?, ?, ?)";
|
||||||
$params = array($GLOBALS['user']->id, $name, $description);
|
$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)
|
public function update($data)
|
||||||
|
@ -87,7 +88,8 @@ class Broadcast extends database_object
|
||||||
|
|
||||||
public function format()
|
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->tags = Tag::get_top_tags('broadcast',$this->id);
|
||||||
$this->f_tags = Tag::get_display($this->tags, $this->id, 'broadcast');
|
$this->f_tags = Tag::get_display($this->tags, $this->id, 'broadcast');
|
||||||
}
|
}
|
||||||
|
@ -129,8 +131,8 @@ class Broadcast extends database_object
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function show_action_buttons($tags_list = "")
|
public function show_action_buttons($tags_list = "")
|
||||||
{
|
{
|
||||||
if ($this->id) {
|
if ($this->id) {
|
||||||
if ($GLOBALS['user']->has_access('75')) {
|
if ($GLOBALS['user']->has_access('75')) {
|
||||||
|
@ -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
|
} // end of broadcast class
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
use Ratchet\MessageComponentInterface;
|
use Ratchet\MessageComponentInterface;
|
||||||
use Ratchet\ConnectionInterface;
|
use Ratchet\ConnectionInterface;
|
||||||
|
|
||||||
class Broadcast_Server extends MessageComponentInterface
|
class Broadcast_Server implements MessageComponentInterface
|
||||||
{
|
{
|
||||||
const BROADCAST_SONG = "SONG";
|
const BROADCAST_SONG = "SONG";
|
||||||
const BROADCAST_SONG_POSITION = "SONG_POSITION";
|
const BROADCAST_SONG_POSITION = "SONG_POSITION";
|
||||||
|
@ -31,6 +31,8 @@ class Broadcast_Server extends MessageComponentInterface
|
||||||
const BROADCAST_REGISTER_BROADCAST = "REGISTER_BROADCAST";
|
const BROADCAST_REGISTER_BROADCAST = "REGISTER_BROADCAST";
|
||||||
const BROADCAST_REGISTER_LISTENER = "REGISTER_LISTENER";
|
const BROADCAST_REGISTER_LISTENER = "REGISTER_LISTENER";
|
||||||
const BROADCAST_ENDED = "ENDED";
|
const BROADCAST_ENDED = "ENDED";
|
||||||
|
const BROADCAST_INFO = "INFO";
|
||||||
|
const BROADCAST_NB_LISTENERS = "NB_LISTENERS";
|
||||||
|
|
||||||
protected $clients;
|
protected $clients;
|
||||||
protected $listeners;
|
protected $listeners;
|
||||||
|
@ -79,71 +81,101 @@ class Broadcast_Server extends MessageComponentInterface
|
||||||
|
|
||||||
protected function notifySong($from, $song_id)
|
protected function notifySong($from, $song_id)
|
||||||
{
|
{
|
||||||
$broadcast = $this->getConnectionBroadcast($from);
|
if ($this->isBroadcaster($from)) {
|
||||||
if ($broadcast) {
|
$broadcast = $broadcasters[$from];
|
||||||
if ($this->isBroadcaster($from, $broadcast)) {
|
$clients = $this->getListeners($broadcast);
|
||||||
$clients = $this->getListeners($broadcast);
|
$this->broadcastMessage($clients, self::BROADCAST_SONG, $song_id);
|
||||||
$this->broadcastMessage($clients, self::BROADCAST_SONG, $song_id);
|
} else {
|
||||||
} else {
|
debug_event('broadcast', 'Action unauthorized.', '3');
|
||||||
debug_event('broadcast', 'Action unauthorized.', '3');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function notifySongPosition($from, $song_position)
|
protected function notifySongPosition($from, $song_position)
|
||||||
{
|
{
|
||||||
$broadcast = $this->getConnectionBroadcast($from);
|
if ($this->isBroadcaster($from)) {
|
||||||
if ($broadcast) {
|
$broadcast = $broadcasters[$from];
|
||||||
if ($this->isBroadcaster($from, $broadcast)) {
|
$clients = $this->getListeners($broadcast);
|
||||||
$clients = $this->getListeners($broadcast);
|
$this->broadcastMessage($clients, self::BROADCAST_SONG_POSITION, $song_position);
|
||||||
$this->broadcastMessage($clients, self::BROADCAST_SONG_POSITION, $song_position);
|
} else {
|
||||||
} else {
|
debug_event('broadcast', 'Action unauthorized.', '3');
|
||||||
debug_event('broadcast', 'Action unauthorized.', '3');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function notifyPlayerPlay($from, $play)
|
protected function notifyPlayerPlay($from, $play)
|
||||||
{
|
{
|
||||||
$broadcast = $this->getConnectionBroadcast($from);
|
if ($this->isBroadcaster($from)) {
|
||||||
if ($broadcast) {
|
$broadcast = $broadcasters[$from];
|
||||||
if ($this->isBroadcaster($from, $broadcast)) {
|
$clients = $this->getListeners($broadcast);
|
||||||
$clients = $this->getListeners($broadcast);
|
$this->broadcastMessage($clients, self::BROADCAST_PLAYER_PLAY, $play);
|
||||||
$this->broadcastMessage($clients, self::BROADCAST_PLAYER_PLAY, $play);
|
} else {
|
||||||
} else {
|
debug_event('broadcast', 'Action unauthorized.', '3');
|
||||||
debug_event('broadcast', 'Action unauthorized.', '3');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function registerBroadcast($from, $broadcast_key)
|
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);
|
$clients = $this->getListeners($broadcast);
|
||||||
$this->broadcastMessage($clients, self::BROADCAST_ENDED);
|
$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)
|
protected function registerListener($from, $broadcast_id)
|
||||||
{
|
{
|
||||||
|
$broadcast = $this->getRunningBroadcast();
|
||||||
|
$listeners[$broadcast][] = $from;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function unregisterListener($conn)
|
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)
|
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='')
|
protected function broadcastMessage($clients, $cmd, $value='')
|
||||||
|
@ -156,14 +188,12 @@ class Broadcast_Server extends MessageComponentInterface
|
||||||
|
|
||||||
public function onClose(ConnectionInterface $conn)
|
public function onClose(ConnectionInterface $conn)
|
||||||
{
|
{
|
||||||
$broadcast = $this->getConnectionBroadcast($conn);
|
if ($this->isBroadcaster($conn)) {
|
||||||
if ($broadcast) {
|
$this->unregisterBroadcast($conn);
|
||||||
if ($this->isBroadcaster($conn, $broadcast)) {
|
} else {
|
||||||
$this->unregisterBroadcast($broadcast);
|
$this->unregisterListener($conn);
|
||||||
} else {
|
|
||||||
$this->unregisterListener($conn);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->clients->detach($conn);
|
$this->clients->detach($conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,4 +202,14 @@ class Broadcast_Server extends MessageComponentInterface
|
||||||
$conn->close();
|
$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
|
} // end of broadcast_server class
|
||||||
|
|
|
@ -220,7 +220,7 @@ class Browse extends Query
|
||||||
$box_title = T_('Channels');
|
$box_title = T_('Channels');
|
||||||
$box_req = AmpConfig::get('prefix') . '/templates/show_channels.inc.php';
|
$box_req = AmpConfig::get('prefix') . '/templates/show_channels.inc.php';
|
||||||
break;
|
break;
|
||||||
case 'broadcast':
|
case 'broadcast':
|
||||||
$box_title = T_('Broadcasts');
|
$box_title = T_('Broadcasts');
|
||||||
$box_req = AmpConfig::get('prefix') . '/templates/show_broadcasts.inc.php';
|
$box_req = AmpConfig::get('prefix') . '/templates/show_broadcasts.inc.php';
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -259,10 +259,10 @@ class Query
|
||||||
'max_listeners',
|
'max_listeners',
|
||||||
'listeners'
|
'listeners'
|
||||||
),
|
),
|
||||||
'broadcast' => array(
|
'broadcast' => array(
|
||||||
'name',
|
'name',
|
||||||
'user',
|
'user',
|
||||||
'started',
|
'started',
|
||||||
'listeners'
|
'listeners'
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -594,7 +594,7 @@ class Query
|
||||||
case 'share':
|
case 'share':
|
||||||
case 'song_preview':
|
case 'song_preview':
|
||||||
case 'channel':
|
case 'channel':
|
||||||
case 'broadcast':
|
case 'broadcast':
|
||||||
// Set it
|
// Set it
|
||||||
$this->_state['type'] = $type;
|
$this->_state['type'] = $type;
|
||||||
$this->set_base_sql(true, $custom_base);
|
$this->set_base_sql(true, $custom_base);
|
||||||
|
@ -886,7 +886,7 @@ class Query
|
||||||
$this->set_select("DISTINCT(`channel`.`id`)");
|
$this->set_select("DISTINCT(`channel`.`id`)");
|
||||||
$sql = "SELECT %%SELECT%% FROM `channel` ";
|
$sql = "SELECT %%SELECT%% FROM `channel` ";
|
||||||
break;
|
break;
|
||||||
case 'broadcast':
|
case 'broadcast':
|
||||||
$this->set_select("DISTINCT(`broadcast`.`id`)");
|
$this->set_select("DISTINCT(`broadcast`.`id`)");
|
||||||
$sql = "SELECT %%SELECT%% FROM `broadcast` ";
|
$sql = "SELECT %%SELECT%% FROM `broadcast` ";
|
||||||
break;
|
break;
|
||||||
|
@ -1620,7 +1620,7 @@ class Query
|
||||||
break;
|
break;
|
||||||
} // end switch on field
|
} // end switch on field
|
||||||
break;
|
break;
|
||||||
case 'broadcast':
|
case 'broadcast':
|
||||||
switch ($field) {
|
switch ($field) {
|
||||||
case 'name':
|
case 'name':
|
||||||
$sql = "`broadcast`.`name`";
|
$sql = "`broadcast`.`name`";
|
||||||
|
@ -1628,7 +1628,7 @@ class Query
|
||||||
case 'user':
|
case 'user':
|
||||||
$sql = "`broadcast`.`user`";
|
$sql = "`broadcast`.`user`";
|
||||||
break;
|
break;
|
||||||
case 'started':
|
case 'started':
|
||||||
$sql = "`broadcast`.`started`";
|
$sql = "`broadcast`.`started`";
|
||||||
break;
|
break;
|
||||||
case 'listeners':
|
case 'listeners':
|
||||||
|
|
|
@ -719,16 +719,16 @@ class User extends database_object
|
||||||
/* Now Insert this new user */
|
/* Now Insert this new user */
|
||||||
$sql = "INSERT INTO `user` (`username`, `disabled`, " .
|
$sql = "INSERT INTO `user` (`username`, `disabled`, " .
|
||||||
"`fullname`, `email`, `password`, `access`, `create_date`";
|
"`fullname`, `email`, `password`, `access`, `create_date`";
|
||||||
$params = array($username, $disabled, $fullname, $email, $password, $access, time());
|
$params = array($username, $disabled, $fullname, $email, $password, $access, time());
|
||||||
if (!empty($website)) {
|
if (!empty($website)) {
|
||||||
$sql .= ", `website`";
|
$sql .= ", `website`";
|
||||||
$params[] = $website;
|
$params[] = $website;
|
||||||
}
|
}
|
||||||
$sql .= ") VALUES(?, ?, ?, ?, ?, ?, ?";
|
$sql .= ") VALUES(?, ?, ?, ?, ?, ?, ?";
|
||||||
if (!empty($website)) {
|
if (!empty($website)) {
|
||||||
$sql .= ", ?";
|
$sql .= ", ?";
|
||||||
}
|
}
|
||||||
$sql .= ")";
|
$sql .= ")";
|
||||||
$db_results = Dba::write($sql, $params);
|
$db_results = Dba::write($sql, $params);
|
||||||
|
|
||||||
if (!$db_results) { return false; }
|
if (!$db_results) { return false; }
|
||||||
|
|
|
@ -85,6 +85,60 @@ function handlePlaylistAction(url, id) {
|
||||||
$("#playlistdialog").dialog("close");
|
$("#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 */
|
/* Edit modal dialog for artists, albums and songs */
|
||||||
/***************************************************/
|
/***************************************************/
|
||||||
|
|
|
@ -82,6 +82,10 @@ switch ($page) {
|
||||||
require_once AmpConfig::get('prefix') . '/server/search.ajax.php';
|
require_once AmpConfig::get('prefix') . '/server/search.ajax.php';
|
||||||
exit;
|
exit;
|
||||||
break;
|
break;
|
||||||
|
case 'player':
|
||||||
|
require_once AmpConfig::get('prefix') . '/server/player.ajax.php';
|
||||||
|
exit;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
// A taste of compatibility
|
// A taste of compatibility
|
||||||
break;
|
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);
|
|
@ -64,7 +64,7 @@ switch ($_REQUEST['action']) {
|
||||||
$channel->format();
|
$channel->format();
|
||||||
require AmpConfig::get('prefix') . '/templates/show_channel_row.inc.php';
|
require AmpConfig::get('prefix') . '/templates/show_channel_row.inc.php';
|
||||||
break;
|
break;
|
||||||
case 'refresh_broadcast':
|
case 'refresh_broadcast':
|
||||||
$broadcast = new Broadcast($_REQUEST['id']);
|
$broadcast = new Broadcast($_REQUEST['id']);
|
||||||
$broadcast->format();
|
$broadcast->format();
|
||||||
require AmpConfig::get('prefix') . '/templates/show_broadcast_row.inc.php';
|
require AmpConfig::get('prefix') . '/templates/show_broadcast_row.inc.php';
|
||||||
|
|
|
@ -74,7 +74,7 @@ switch ($_REQUEST['action']) {
|
||||||
$channel = new Channel($_GET['id']);
|
$channel = new Channel($_GET['id']);
|
||||||
$channel->format();
|
$channel->format();
|
||||||
break;
|
break;
|
||||||
case 'broadcast_row':
|
case 'broadcast_row':
|
||||||
$broadcast = new Broadcast($_GET['id']);
|
$broadcast = new Broadcast($_GET['id']);
|
||||||
$broadcast->format();
|
$broadcast->format();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -552,7 +552,7 @@ CREATE TABLE `preference` (
|
||||||
|
|
||||||
LOCK TABLES `preference` WRITE;
|
LOCK TABLES `preference` WRITE;
|
||||||
/*!40000 ALTER TABLE `preference` DISABLE KEYS */;
|
/*!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 */;
|
/*!40000 ALTER TABLE `preference` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
@ -978,7 +978,7 @@ CREATE TABLE `user_preference` (
|
||||||
|
|
||||||
LOCK TABLES `user_preference` WRITE;
|
LOCK TABLES `user_preference` WRITE;
|
||||||
/*!40000 ALTER TABLE `user_preference` DISABLE KEYS */;
|
/*!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 */;
|
/*!40000 ALTER TABLE `user_preference` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
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'); ?>" />
|
<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>
|
<title><?php echo scrub_out(AmpConfig::get('site_title')); ?> - <?php echo $location['title']; ?></title>
|
||||||
<?php require_once AmpConfig::get('prefix') . '/templates/stylesheets.inc.php'; ?>
|
<?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/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" />
|
<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>
|
<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">
|
<!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; ?>">
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $htmllang; ?>" lang="<?php echo $htmllang; ?>">
|
||||||
<head>
|
<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" />
|
<link rel="stylesheet" href="templates/install.css" type="text/css" media="screen" />
|
||||||
<meta http-equiv="Content-Type" content="text/html; Charset=<?php echo $charset; ?>" />
|
<meta http-equiv="Content-Type" content="text/html; Charset=<?php echo $charset; ?>" />
|
||||||
</head>
|
</head>
|
||||||
|
|
|
@ -774,7 +774,6 @@ a.jp-shuffle-off:hover {
|
||||||
background-position: -90px -261px;
|
background-position: -90px -261px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* @end */
|
/* @end */
|
||||||
|
|
||||||
/* @group NO SOLUTION error feedback */
|
/* @group NO SOLUTION error feedback */
|
||||||
|
@ -815,12 +814,13 @@ a.jp-shuffle-off:hover {
|
||||||
.broadcast {
|
.broadcast {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 2px;
|
top: 2px;
|
||||||
right:350px;
|
margin-right: 2px;
|
||||||
|
right:25%;
|
||||||
font-size: 0.67em;
|
font-size: 0.67em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.broadcast-info {
|
.broadcast-info {
|
||||||
display: none;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
|
||||||
.broadcast-action {
|
.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>
|
</p>
|
||||||
<div id="bottom">
|
<div id="bottom">
|
||||||
<p><strong>Ampache</strong><br />
|
<p><strong>Ampache</strong><br />
|
||||||
Pour l'Amour de la Musique.</p>
|
For the love of Music.</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -13,10 +13,19 @@ if (!$iframed || $is_share) {
|
||||||
require_once AmpConfig::get('prefix') . '/templates/stylesheets.inc.php';
|
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/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/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/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'); ?>/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
|
<?php
|
||||||
if ($iframed) {
|
if ($iframed) {
|
||||||
?>
|
?>
|
||||||
|
@ -199,16 +208,17 @@ if ($isVideo) {
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
$("#jquery_jplayer_1").bind($.jPlayer.event.timeupdate, function (event) {
|
||||||
|
sendBroadcastMessage('SONG_POSITION', event.jPlayer.status.currentTime);
|
||||||
<?php
|
<?php
|
||||||
if (AmpConfig::get('waveform') && !$is_share) {
|
if (AmpConfig::get('waveform') && !$is_share) {
|
||||||
?>
|
?>
|
||||||
$("#jquery_jplayer_1").bind($.jPlayer.event.timeupdate, function (event) {
|
|
||||||
if (event.jPlayer.status.duration > 0) {
|
if (event.jPlayer.status.duration > 0) {
|
||||||
var leftpos = 400 * (event.jPlayer.status.currentTime / event.jPlayer.status.duration);
|
var leftpos = 400 * (event.jPlayer.status.currentTime / event.jPlayer.status.duration);
|
||||||
$(".waveform-time").css({left: leftpos});
|
$(".waveform-time").css({left: leftpos});
|
||||||
}
|
}
|
||||||
});
|
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
});
|
||||||
$("#jquery_jplayer_1").bind($.jPlayer.event.volumechange, function(event) {
|
$("#jquery_jplayer_1").bind($.jPlayer.event.volumechange, function(event) {
|
||||||
$.cookie('jp_volume', event.jPlayer.options.volume, { expires: 7, path: '/'});
|
$.cookie('jp_volume', event.jPlayer.options.volume, { expires: 7, path: '/'});
|
||||||
});
|
});
|
||||||
|
@ -253,6 +263,87 @@ function HideWaveform()
|
||||||
$('.waveform').css('visibility', 'hidden');
|
$('.waveform').css('visibility', 'hidden');
|
||||||
}
|
}
|
||||||
<?php } ?>
|
<?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) { ?>
|
<?php if ($iframed && AmpConfig::get('webplayer_confirmclose') && !$is_share) { ?>
|
||||||
window.parent.onbeforeunload = function (evt) {
|
window.parent.onbeforeunload = function (evt) {
|
||||||
if (!$("#jquery_jplayer_1").data("jPlayer").status.paused) {
|
if (!$("#jquery_jplayer_1").data("jPlayer").status.paused) {
|
||||||
|
@ -391,12 +482,9 @@ if ($isVideo) {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php if (AmpConfig::get('broadcast')) { ?>
|
<?php if (AmpConfig::get('broadcast')) { ?>
|
||||||
<div class="broadcast">
|
<div id="broadcast" class="broadcast">
|
||||||
<div class="broadcast-action">
|
<?php echo Broadcast::get_broadcast_link(); ?>
|
||||||
<?php echo Ajax::button('?page=player&action=broadcast', 'broadcast', T_('Broadcast'), 'broadcast_action'); ?>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="broadcast-info">(<span id="broadcast_listeners">0</span>)</div>
|
|
||||||
</div>
|
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
<div class="jp-playlist" style="position: absolute;">
|
<div class="jp-playlist" style="position: absolute;">
|
||||||
<ul>
|
<ul>
|
||||||
|
|
|
@ -85,7 +85,7 @@ require $prefix . '/templates/install_header.inc.php';
|
||||||
</div>
|
</div>
|
||||||
<div id="bottom">
|
<div id="bottom">
|
||||||
<p><strong>Ampache Installation.</strong><br />
|
<p><strong>Ampache Installation.</strong><br />
|
||||||
Pour l'Amour de la Musique</p>
|
For the love of Music</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ $web_path = AmpConfig::get('web_path');
|
||||||
</div><!--end <div>id="maincontainer-->
|
</div><!--end <div>id="maincontainer-->
|
||||||
<div id="bottom">
|
<div id="bottom">
|
||||||
<p><strong>Ampache</strong><br />
|
<p><strong>Ampache</strong><br />
|
||||||
Pour l'Amour de la Musique.</p>
|
For the love of Music.</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="bottom">
|
<div id="bottom">
|
||||||
<p><strong>Ampache Debug.</strong><br />
|
<p><strong>Ampache Debug.</strong><br />
|
||||||
Pour l'Amour de la Musique.</p>
|
For the love of Music.</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -75,7 +75,7 @@ This variable no longer exists, all downsampling/transcoding is handled by the t
|
||||||
</div>
|
</div>
|
||||||
<div id="bottom">
|
<div id="bottom">
|
||||||
<p><strong>Ampache Debug.</strong><br />
|
<p><strong>Ampache Debug.</strong><br />
|
||||||
Pour l'Amour de la Musique.</p>
|
For the love of Music.</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -59,7 +59,7 @@ $web_path = AmpConfig::get('web_path');
|
||||||
</div><!--end <div>id="maincontainer-->
|
</div><!--end <div>id="maincontainer-->
|
||||||
<div id="bottom">
|
<div id="bottom">
|
||||||
<p><strong>Ampache</strong><br />
|
<p><strong>Ampache</strong><br />
|
||||||
Pour l'Amour de la Musique.</p>
|
For the love of Music.</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -189,203 +189,6 @@ input[type=button]:focus:active, input[type=submit]:focus:active {
|
||||||
margin-bottom: 10px;
|
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
|
Main
|
||||||
***********************************************/
|
***********************************************/
|
||||||
|
|
|
@ -52,7 +52,7 @@ $htmllang = str_replace("_","-",AmpConfig::get('lang'));
|
||||||
<body>
|
<body>
|
||||||
<div id="header">
|
<div id="header">
|
||||||
<h1><?php echo T_('Ampache Update'); ?></h1>
|
<h1><?php echo T_('Ampache Update'); ?></h1>
|
||||||
<p>Pour l'Amour de la Musique.</p>
|
<p>For the love of Music.</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="text-box">
|
<div id="text-box">
|
||||||
<div class="notify">
|
<div class="notify">
|
||||||
|
@ -69,7 +69,7 @@ $htmllang = str_replace("_","-",AmpConfig::get('lang'));
|
||||||
</div>
|
</div>
|
||||||
<div id="bottom">
|
<div id="bottom">
|
||||||
<p><b><?php echo T_('Ampache Installation.'); ?></b><br />
|
<p><b><?php echo T_('Ampache Installation.'); ?></b><br />
|
||||||
Pour l'Amour de la Musique.</p>
|
For the love of Music.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue