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

Can now re-order playlist and album songs #53 (new grab icon displayed on sortable list)

Updating only the modified item (not refreshing page anymore) #43
Removed last 'Flag' items found #54
Reborn theme set as default #22
Fix: filters are now working
Fix: Artist edition
This commit is contained in:
SUTJael 2013-12-03 15:50:00 +01:00
parent f16e1267fe
commit a53d308b6c
46 changed files with 9475 additions and 488 deletions

View file

@ -164,6 +164,31 @@ switch ($_REQUEST['action']) {
$target_url = Config::get('web_path') . '/albums.php?action=show&album=' . $object_id;
require_once Config::get('prefix') . '/templates/show_update_items.inc.php';
break;
case 'set_track_numbers':
debug_event('albums', 'Set track numbers called.', '5');
if (!Access::check('interface','75')) {
UI::access_denied();
exit;
}
// Retrieving final song order from url
foreach ($_GET as $key => $data) {
$_GET[$key] = unhtmlentities(scrub_in($data));
debug_event('albums', $key.'='.$_GET[$key], '5');
}
if (isset($_GET['order'])) {
$songs = explode(";", $_GET['order']);
$track = 1;
foreach ($songs as $song_id) {
if ($song_id != '') {
Song::update_track($track, $song_id);
++$track;
}
}
}
break;
// Browse by Album
default:
case 'show':

BIN
images/icon_drag.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 B

View file

@ -160,7 +160,7 @@ class Browse extends Query
UI::show_box_bottom();
break;
case 'playlist_song':
UI::show_box_top(T_('Playlist Songs') . $match,$class);
UI::show_box_top(T_('Playlist Songs') . $match, $class);
require_once Config::get('prefix') . '/templates/show_playlist_songs.inc.php';
UI::show_box_bottom();
break;

View file

@ -427,11 +427,11 @@ class Preference
if (strlen($results['theme_name']) > 0) {
$results['theme_path'] = '/themes/' . $results['theme_name'];
}
// Default to the fresh theme if we don't get anything from their
// Default theme if we don't get anything from their
// preferences because we're going to want at least something otherwise
// the page is going to be really ugly
else {
$results['theme_path'] = '/themes/fresh';
$results['theme_path'] = '/themes/reborn';
}
Config::set_by_array($results, true);

View file

@ -372,7 +372,6 @@ class Song extends database_object implements media
}
return $results;
}
/**

View file

@ -497,12 +497,14 @@ class Tag extends database_object
*/
public static function update_tag_list($tags_comma, $type, $object_id)
{
if ($tags_comma != '') {
debug_event('tag.class', 'Updating tags for values {'.$tags_comma.'} type {'.$type.'} object_id {'.$object_id.'}', '5');
$ctags = Tag::get_top_tags($type, $object_id);
$editedTags = explode(",", $tags_comma);
foreach ($ctags as $ctid => $ctv) {
if ($ctid != '') {
$ctag = new Tag($ctid);
foreach ($editedTags as $tk => $tv) {
if ($ctag->name == $tv) {
@ -517,12 +519,16 @@ class Tag extends database_object
}
}
}
}
// Look if we need to add some new tags
foreach ($editedTags as $tk => $tv) {
debug_event('tag.class', 'Adding new tag {'.$tv.'}', '5');
if ($tv != '') {
Tag::add($type, $object_id, $tv, false);
}
}
}
} // update_tag_list
/**

View file

@ -31,13 +31,13 @@ function load_gettext()
$lang = Config::get('lang');
$charset = Config::get('site_charset') ?: 'UTF-8';
$locale = $lang . '.' . $charset;
debug_event('i18n', 'Setting locale to ' . $locale, 5);
//debug_event('i18n', 'Setting locale to ' . $locale, 5);
T_setlocale(LC_MESSAGES, $locale);
/* Bind the Text Domain */
T_bindtextdomain('messages', Config::get('prefix') . "/locale/");
T_bind_textdomain_codeset('messages', $charset);
T_textdomain('messages');
debug_event('i18n', 'gettext is ' . (locale_emulation() ? 'emulated' : 'native'), 5);
//debug_event('i18n', 'gettext is ' . (locale_emulation() ? 'emulated' : 'native'), 5);
} // load_gettext
/**

View file

@ -208,7 +208,7 @@ if (session_id()) {
/* Add in some variables for ajax done here because we need the user */
Config::set('ajax_url', Config::get('web_path') . '/server/ajax.server.php', true);
Config::set('ajax_show_edit_url', Config::get('web_path') . '/server/show_edit.server.php', true);
Config::set('ajax_server', Config::get('web_path') . '/server', true);
// Load gettext mojo
load_gettext();

View file

@ -26,7 +26,6 @@ $(document).ajaxComplete(function () {
// ajaxPost
// Post the contents of a form.
function ajaxPost(url, input, source) {
//$('#' + input)
if ($(source)) {
$(source).off('click', function(){ ajaxPost(url, input, source); });
}
@ -45,23 +44,20 @@ function ajaxPut(url, source) {
// ajaxState
// Post the contents of a form without doing any observe() things.
function ajaxState(url, input) {
new Ajax.Request(url, {
method: 'post',
parameters: $(input).serialize(true),
onSuccess: processContents
$.ajax({
url : url,
type : 'POST',
data : $('#' + input).serialize(true),
success : processContents
});
} // ajaxState
// processContents
// Iterate over a response and do any updates we received.
function processContents(data, status) {
function processContents(data) {
$(data).find('content').each(function () {
$('#' + $(this).attr('div')).html($(this).text())
/*var text = $.parseHTML($(this).text(), document, true);
var dom = $(text);
dom.filter('script').each(function(){
$.globalEval(this.text || this.textContent || this.innerHtml || '');
});*/
})
$('#' + $(this).attr('div')).html($(this).text());
});
} // processContents

View file

@ -19,17 +19,6 @@
//
$(document).ready(function () {
$('.default_hidden').hide();
$('#sortableplaylist').sortable({
axis: 'y',
delay: 200,
start: function (event, ui) {
$(ui.item).data("startindex", ui.item.index());
},
stop: function (event, ui) {
playlistUpdatedIndex(ui.item);
}
});
});
$(function() {

View file

@ -22,12 +22,15 @@
/* Edit modal dialog */
/*********************/
function showEditDialog(edit_type, edit_id, edit_form_id, edit_title, edit_tag_choices) {
function showEditDialog(edit_type, edit_id, edit_form_id, edit_title, edit_tag_choices, refresh_row_prefix, refresh_action) {
var parent = this;
parent.editFormId = 'form#' + edit_form_id;
parent.contentUrl = jsAjaxShowEditUrl + '?action=show_edit_object&id=' + edit_id + '&type=' + edit_type;
parent.contentUrl = jsAjaxServer + '/show_edit.server.php?action=show_edit_object&id=' + edit_id + '&type=' + edit_type;
parent.saveUrl = jsAjaxUrl + '?action=edit_object&id=' + edit_id + '&type=' + edit_type;
parent.editDialogId = '<div id="editdialog"></div>';
parent.refreshRowPrefix = refresh_row_prefix;
parent.refreshAction = refresh_action;
parent.editId = edit_id;
// Convert choices string ("tag0,tag1,tag2,...") to choices array
parent.editTagChoices = new Array();
@ -46,9 +49,20 @@ function showEditDialog(edit_type, edit_id, edit_form_id, edit_title, edit_tag_c
type : 'POST',
data : $(parent.editFormId).serializeArray(),
success : function(resp){
var new_id = $.trim(resp.lastChild.textContent);
$("#editdialog").dialog("close");
// Need to replace current div instead of refreshing frame.
window.location.reload();
// resp should contain the new identifier, otherwise we take the same as the edited item
if (new_id == '') {
new_id = parent.editId;
}
var url = jsAjaxServer + '/refresh_updated.server.php?action=' + parent.refreshAction + '&id=' + new_id;
// Reload only table
$('#' + parent.refreshRowPrefix + parent.editId).load(url, function() {
// Update the current row identifier with new id
$('#' + parent.refreshRowPrefix + parent.editId).attr("id", parent.refreshRowPrefix + new_id);
});
},
error : function(resp){
$("#editdialog").dialog("close");
@ -112,7 +126,10 @@ $(document).ready(function () {
});
});
function submitPlaylistOrder(playlistUrl, tableid) {
function submitNewItemsOrder(itemId, tableid, rowPrefix, updateUrl, refreshAction) {
var parent = this;
parent.itemId = itemId;
parent.refreshAction = refreshAction;
var table = document.getElementById(tableid);
var rowLength = table.rows.length;
@ -121,16 +138,26 @@ function submitPlaylistOrder(playlistUrl, tableid) {
for (var i = 0; i < rowLength; ++i) {
var row = table.rows[i];
if (row.id != '') {
var songid = row.id.replace('track_', '');
var songid = row.id.replace(rowPrefix, '');
finalOrder += songid + ";"
}
}
if (finalOrder != '') {
$.ajax({
url : playlistUrl,
url : updateUrl,
type : 'GET',
data : 'order=' + finalOrder
data : 'order=' + finalOrder,
success : function(resp){
var url = jsAjaxServer + '/refresh_reordered.server.php?action=' + parent.refreshAction + '&id=' + parent.itemId;
// Reload only table
$('#reordered_list').load(url, function() {
$('#sortableplaylist').sortable({
axis: 'y',
delay: 200
});
});
}
});
}
}

8829
modules/jquery/jquery-2.0.3.js vendored Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -138,8 +138,6 @@ switch ($_REQUEST['action']) {
}
}
}
//require Config::get('prefix') . '/templates/show_playlist.inc.php';
break;
case 'prune_empty':
/* Make sure they have permission */

View file

@ -39,6 +39,8 @@ header("Pragma: no-cache");
$page = isset($_REQUEST['page']) ? $_REQUEST['page'] : null;
debug_event('ajax.server.php', 'Called for page: {'.$page.'}', '5');
switch ($page) {
case 'stats':
require_once Config::get('prefix') . '/server/stats.ajax.php';
@ -122,6 +124,7 @@ switch ($_REQUEST['action']) {
break;
}
$new_id = '';
switch ($_POST['type']) {
case 'album_row':
$key = 'album_' . $_POST['id'];
@ -130,9 +133,6 @@ switch ($_REQUEST['action']) {
$new_id = $album->update($_POST);
if ($new_id != $_POST['id']) {
$album = new Album($new_id);
foreach ($songs as $song_id) {
Flag::add($song_id, 'song', 'retag',' Inline Album Update');
}
}
$album->format();
break;
@ -143,16 +143,12 @@ switch ($_REQUEST['action']) {
$new_id = $artist->update($_POST);
if ($new_id != $_POST['id']) {
$artist = new Artist($new_id);
foreach ($songs as $song_id) {
Flag::add($song_id, 'song', 'retag', 'Inline Artist Update');
}
}
$artist->format();
break;
case 'song_row':
$key = 'song_' . $_POST['id'];
$song = new Song($_POST['id']);
Flag::add($song->id, 'song', 'retag', 'Inline Single Song Update');
$song->update($_POST);
$song->format();
break;
@ -165,7 +161,7 @@ switch ($_REQUEST['action']) {
break;
case 'smartplaylist_row':
case 'smartplaylist_title':
$key = 'playlist_row_' . $_POST['id'];
$key = 'smartplaylist_row_' . $_POST['id'];
$playlist->name = $_POST['name'];
$playlist->type = $_POST['pl_type'];
$playlist->update();
@ -184,10 +180,7 @@ switch ($_REQUEST['action']) {
break;
} // end switch on type
ob_start();
require Config::get('prefix') . '/templates/show_' . $_POST['type'] . '.inc.php';
$results[$key] = ob_get_contents();
ob_end_clean();
$results['id'] = $new_id;
break;
case 'current_playlist':
switch ($_REQUEST['type']) {

View file

@ -37,6 +37,8 @@ if (isset($_REQUEST['browse_id'])) {
$list_uid = scrub_in($_REQUEST['uid']);
$browse = new Browse($browse_id);
debug_event('browse.ajax.php', 'Called for action: {'.$_REQUEST['action'].'}', '5');
switch ($_REQUEST['action']) {
case 'browse':
$object_ids = array();
@ -45,7 +47,7 @@ switch ($_REQUEST['action']) {
//(user type a "start with" word and deletes it)
if ($_REQUEST['key'] && (isset($_REQUEST['multi_alpha_filter']) OR isset($_REQUEST['value']))) {
// Set any new filters we've just added
$browse->set_filter($_REQUEST['key'],$_REQUEST['multi_alpha_filter']);
$browse->set_filter($_REQUEST['key'], $_REQUEST['multi_alpha_filter']);
$browse->set_catalog($_SESSION['catalog']);
}
@ -54,7 +56,6 @@ switch ($_REQUEST['action']) {
$browse->set_sort($_REQUEST['sort']);
}
if ($_REQUEST['catalog_key'] || $SESSION['catalog'] != 0) {
$browse->set_filter('catalog',$_REQUEST['catalog_key']);
$_SESSION['catalog'] = $_REQUEST['catalog_key'];
@ -67,9 +68,7 @@ switch ($_REQUEST['action']) {
$browse->show_objects();
$results['browse_content_' . $browse->get_type()] = ob_get_clean();
break;
case 'set_sort':
if ($_REQUEST['sort']) {
$browse->set_sort($_REQUEST['sort']);
}
@ -97,7 +96,7 @@ switch ($_REQUEST['action']) {
$playlist = new Search('song', $_REQUEST['id']);
if (!$playlist->has_access()) { exit; }
$playlist->delete();
$key = 'playlist_row_' . $playlist->id;
$key = 'smartplaylist_row_' . $playlist->id;
break;
case 'live_stream':
if (!$GLOBALS['user']->has_access('75')) { exit; }

View file

@ -0,0 +1,54 @@
<?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.
*
*/
define('AJAX_INCLUDE','1');
require_once '../lib/init.php';
debug_event('refresh_reordered.server.php', 'Called for action: {'.$_REQUEST['action'].'}', '5');
/* Switch on the action passed in */
switch ($_REQUEST['action']) {
case 'refresh_playlist_songs':
$playlist = new Playlist($_REQUEST['id']);
$playlist->format();
$object_ids = $playlist->get_items();
$browse = new Browse();
$browse->set_type('playlist_song');
$browse->add_supplemental_object('playlist', $playlist->id);
$browse->set_static_content(true);
$browse->show_objects($object_ids);
$browse->store();
break;
case 'refresh_album_songs':
$album = new Album($_REQUEST['id']);
$album->format();
$browse = new Browse();
$browse->set_type('song');
$browse->set_simple_browse(true);
$browse->set_filter('album', $album->id);
$browse->set_sort('track', 'ASC');
$browse->get_objects();
$browse->show_objects();
$browse->store();
break;
} // switch on the action

View file

@ -0,0 +1,62 @@
<?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.
*
*/
define('AJAX_INCLUDE','1');
require_once '../lib/init.php';
debug_event('refresh_updated.server.php', 'Called for action: {'.$_REQUEST['action'].'}', '5');
/* Switch on the action passed in */
switch ($_REQUEST['action']) {
case 'refresh_song':
$song = new Song($_REQUEST['id']);
$song->format();
require Config::get('prefix') . '/templates/show_song_row.inc.php';
break;
case 'refresh_album':
$album = new Album($_REQUEST['id']);
$album->format();
require Config::get('prefix') . '/templates/show_album_row.inc.php';
break;
case 'refresh_artist':
$artist = new Artist($_REQUEST['id'], $_SESSION['catalog']);
$artist->format();
require Config::get('prefix') . '/templates/show_artist_row.inc.php';
break;
case 'refresh_playlist':
$playlist = new Playlist($_REQUEST['id']);
$playlist->format();
$count = $playlist->get_song_count();
require Config::get('prefix') . '/templates/show_playlist_row.inc.php';
break;
case 'refresh_smartplaylist':
$playlist = new Search('song', $_REQUEST['id']);
$playlist->format();
require Config::get('prefix') . '/templates/show_smartplaylist_row.inc.php';
break;
case 'refresh_livestream':
$radio = new Radio($_REQUEST['id']);
$radio->format();
require Config::get('prefix') . '/templates/show_live_stream_row.inc.php';
break;
} // switch on the action

View file

@ -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','fresh','Theme',0,'special','interface'),(34,'ellipse_threshold_album','27','Album Ellipse Threshold',0,'integer','interface'),(35,'ellipse_threshold_artist','27','Artist Ellipse Threshold',0,'integer','interface'),(36,'ellipse_threshold_title','27','Title Ellipse Threshold',0,'integer','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'),(49,'min_object_count','1','Min Element Count',5,'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'),(57,'tags_userlist','','User to track',0,'string','tags'),(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'),(79,'bandwidth','50','Bandwidth',5,'integer','interface'),(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 :: 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'),(34,'ellipse_threshold_album','27','Album Ellipse Threshold',0,'integer','interface'),(35,'ellipse_threshold_artist','27','Artist Ellipse Threshold',0,'integer','interface'),(36,'ellipse_threshold_title','27','Title Ellipse Threshold',0,'integer','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'),(49,'min_object_count','1','Min Element Count',5,'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'),(57,'tags_userlist','','User to track',0,'string','tags'),(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'),(79,'bandwidth','50','Bandwidth',5,'integer','interface'),(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,'fresh'),(-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,'fresh'),(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 :: 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');
/*!40000 ALTER TABLE `user_preference` ENABLE KEYS */;
UNLOCK TABLES;

View file

@ -71,7 +71,9 @@ function forceIframe()
// Using the following workaround to set global variable available from any javascript script.
var jsAjaxUrl = "<?php echo Config::get('ajax_url') ?>";
var jsAjaxShowEditUrl = "<?php echo Config::get('ajax_show_edit_url') ?>";
var jsWebPath = "<?php echo Config::get('web_path') ?>";
var jsPrefix = "<?php echo Config::get('prefix') ?>";
var jsAjaxServer = "<?php echo Config::get('ajax_server') ?>";
var jsSaveTitle = "<?php echo T_('Save') ?>";
var jsCancelTitle = "<?php echo T_('Cancel') ?>";

View file

@ -77,6 +77,13 @@ if (Config::get('show_played_times')) {
<?php echo Ajax::button('?action=basket&type=album_random&id=' . $album->id,'random', T_('Random'),'play_random_' . $album->id); ?>
<?php echo Ajax::text('?action=basket&type=album_random&id=' . $album->id, T_('Add Random from Album'), 'play_random_text_' . $album->id); ?>
</li>
<li>
<a onclick="submitNewItemsOrder('<?php echo $album->id; ?>', 'reorder_songs_table', 'song_',
'<?php echo Config::get('web_path'); ?>/albums.php?action=set_track_numbers', 'refresh_album_songs')">
<?php echo UI::get_icon('download', T_('Save Tracks Order')); ?>
&nbsp;&nbsp;<?php echo T_('Save Tracks Order'); ?>
</a>
</li>
<?php if (Access::check('interface','75')) { ?>
<li>
<a href="<?php echo $web_path; ?>/albums.php?action=clear_art&amp;album_id=<?php echo $album->id; ?>" onclick="return confirm('<?php echo T_('Do you really want to reset album art?'); ?>');"><?php echo UI::get_icon('delete', T_('Reset Album Art')); ?></a>
@ -105,6 +112,7 @@ if (Config::get('show_played_times')) {
<div id="additional_information">
&nbsp;
</div>
<div id='reordered_list'>
<?php
$browse = new Browse();
$browse->set_type('song');
@ -115,3 +123,4 @@ if (Config::get('show_played_times')) {
$browse->show_objects();
$browse->store();
?>
</div>

View file

@ -20,6 +20,7 @@
*
*/
?>
<?php if (Config::get('directplay')) { ?>
<td class="cel_directplay">
<?php echo Ajax::button('?page=stream&action=directplay&playtype=album&album_id=' . $album->id,'play', T_('Play album'),'play_album_' . $album->id); ?>
@ -62,7 +63,7 @@ if (Art::is_enabled()) {
</a>
<?php } ?>
<?php if (Access::check('interface','50')) { ?>
<a id="<?php echo 'edit_song_'.$song->id ?>" onclick="showEditDialog('album_row', '<?php echo $album->id ?>', '<?php echo 'edit_album_'.$album->id ?>', '<?php echo T_('Album edit') ?>', '<?php echo Tag::get_display(Tag::get_tags()) ?>')">
<a id="<?php echo 'edit_album_'.$album->id ?>" onclick="showEditDialog('album_row', '<?php echo $album->id ?>', '<?php echo 'edit_album_'.$album->id ?>', '<?php echo T_('Album edit') ?>', '<?php echo Tag::get_display(Tag::get_tags()) ?>', 'album_', 'refresh_album')">
<?php echo UI::get_icon('edit', T_('Edit')); ?>
</a>
<?php } ?>

View file

@ -24,78 +24,65 @@ $web_path = Config::get('web_path');
?>
<?php require Config::get('prefix') . '/templates/list_header.inc.php'; ?>
<table class="tabledata" cellpadding="0" cellspacing="0">
<colgroup>
<col id="col_directplay" />
<col id="col_add" />
<col id="col_cover" />
<col id="col_album" />
<col id="col_artist" />
<col id="col_songs" />
<col id="col_year" />
<col id="col_tags" />
<col id="col_rating" />
<col id="col_userflag" />
<col id="col_action" />
</colgroup>
<tr class="th-top">
<?php if (Config::get('directplay')) { ?>
<tr class="th-top">
<?php if (Config::get('directplay')) { ?>
<th class="cel_directplay"><?php echo T_('Play'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_add"><?php echo T_('Add'); ?></th>
<?php if (Art::is_enabled()) { ?>
<?php if (Art::is_enabled()) { ?>
<th class="cel_cover"><?php echo T_('Cover'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_album"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&sort=name', T_('Album'),'album_sort_name'); ?></th>
<th class="cel_artist"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&sort=artist', T_('Artist'),'album_sort_artist'); ?></th>
<th class="cel_songs"><?php echo T_('Songs'); ?></th>
<th class="cel_year"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&sort=year', T_('Year'),'album_sort_year'); ?></th>
<th class="cel_tags"><?php echo T_('Tags'); ?></th>
<?php if (Config::get('ratings')) { ?>
<?php if (Config::get('ratings')) { ?>
<th class="cel_rating"><?php echo T_('Rating'); ?></th>
<?php } ?>
<?php if (Config::get('userflags')) { ?>
<?php } ?>
<?php if (Config::get('userflags')) { ?>
<th class="cel_userflag"><?php echo T_('Flag'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_action"><?php echo T_('Actions'); ?></th>
</tr>
<?php
if (Config::get('ratings')) { Rating::build_cache('album',$object_ids); }
if (Config::get('userflags')) { Userflag::build_cache('album',$object_ids); }
</tr>
<?php
if (Config::get('ratings')) { Rating::build_cache('album',$object_ids); }
if (Config::get('userflags')) { Userflag::build_cache('album',$object_ids); }
/* Foreach through the albums */
foreach ($object_ids as $album_id) {
/* Foreach through the albums */
foreach ($object_ids as $album_id) {
$album = new Album($album_id);
$album->format();
?>
<tr id="album_<?php echo $album->id; ?>" class="<?php echo UI::flip_class(); ?>">
?>
<tr id="album_<?php echo $album->id; ?>" class="<?php echo UI::flip_class(); ?>">
<?php require Config::get('prefix') . '/templates/show_album_row.inc.php'; ?>
</tr>
<?php } //end foreach ($albums as $album) ?>
<?php if (!count($object_ids)) { ?>
<tr class="<?php echo UI::flip_class(); ?>">
</tr>
<?php } //end foreach ($albums as $album) ?>
<?php if (!count($object_ids)) { ?>
<tr class="<?php echo UI::flip_class(); ?>">
<td colspan="7"><span class="nodata"><?php echo T_('No album found'); ?></span></td>
</tr>
<?php } ?>
<tr class="th-bottom">
<?php if (Config::get('directplay')) { ?>
</tr>
<?php } ?>
<tr class="th-bottom">
<?php if (Config::get('directplay')) { ?>
<th class="cel_directplay"><?php echo T_('Play'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_add"><?php echo T_('Add'); ?></th>
<?php if (Art::is_enabled()) { ?>
<?php if (Art::is_enabled()) { ?>
<th class="cel_cover"><?php echo T_('Cover'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_album"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&sort=name', T_('Album'),'album_sort_name_bottom'); ?></th>
<th class="cel_artist"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&sort=artist', T_('Artist'),'album_sort_artist'); ?></th>
<th class="cel_songs"><?php echo T_('Songs'); ?></th>
<th class="cel_year"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&sort=year', T_('Year'),'album_sort_year_bottom'); ?></th>
<th class="cel_tags"><?php echo T_('Tags'); ?></th>
<?php if (Config::get('ratings')) { ?>
<?php if (Config::get('ratings')) { ?>
<th class="cel_rating"><?php echo T_('Rating'); ?></th>
<?php } ?>
<?php if (Config::get('userflags')) { ?>
<?php } ?>
<?php if (Config::get('userflags')) { ?>
<th class="cel_userflag"><?php echo T_('Flag'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_action"><?php echo T_('Actions'); ?></th>
</tr>
</tr>
</table>
<?php require Config::get('prefix') . '/templates/list_header.inc.php'; ?>

View file

@ -47,7 +47,7 @@
</a>
<?php } ?>
<?php if (Access::check('interface','50')) { ?>
<a id="<?php echo 'edit_artist_'.$artist->id ?>" onclick="showEditDialog('artist_row', '<?php echo $artist->id ?>', '<?php echo 'edit_artist_'.$artist->id ?>', '<?php echo T_('Artist edit') ?>', '<?php echo Tag::get_display(Tag::get_tags()) ?>')">
<a id="<?php echo 'edit_artist_'.$artist->id ?>" onclick="showEditDialog('artist_row', '<?php echo $artist->id ?>', '<?php echo 'edit_artist_'.$artist->id ?>', '<?php echo T_('Artist edit') ?>', '<?php echo Tag::get_display(Tag::get_tags()) ?>', 'artist_', 'refresh_artist')">
<?php echo UI::get_icon('edit', T_('Edit')); ?>
</a>
<?php } ?>

View file

@ -27,71 +27,60 @@ $web_path = Config::get('web_path');
?>
<?php require Config::get('prefix') . '/templates/list_header.inc.php'; ?>
<table class="tabledata" cellpadding="0" cellspacing="0">
<colgroup>
<col id="col_directplay">
<col id="col_add" />
<col id="col_artist" />
<col id="col_songs" />
<col id="col_albums" />
<col id="col_tags" />
<col id="col_rating" />
<col id="col_userflag" />
<col id="col_action" />
</colgroup>
<tr class="th-top">
<?php if (Config::get('directplay')) { ?>
<tr class="th-top">
<?php if (Config::get('directplay')) { ?>
<th class="cel_directplay"><?php echo T_('Play'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_add"><?php echo T_('Add'); ?></th>
<th class="cel_artist"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&type=artist&sort=name', T_('Artist'),'artist_sort_name'); ?></th>
<th class="cel_songs"><?php echo T_('Songs'); ?></th>
<th class="cel_albums"><?php echo T_('Albums'); ?></th>
<th class="cel_time"><?php echo T_('Time'); ?></th>
<th class="cel_tags"><?php echo T_('Tags'); ?></th>
<?php if (Config::get('ratings')) { ?>
<?php if (Config::get('ratings')) { ?>
<th class="cel_rating"><?php echo T_('Rating'); ?></th>
<?php } ?>
<?php if (Config::get('userflags')) { ?>
<?php } ?>
<?php if (Config::get('userflags')) { ?>
<th class="cel_userflag"><?php echo T_('Flag'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_action"> <?php echo T_('Action'); ?> </th>
</tr>
<?php
// Cache the ratings we are going to use
if (Config::get('ratings')) { Rating::build_cache('artist',$object_ids); }
if (Config::get('userflags')) { Userflag::build_cache('artist',$object_ids); }
</tr>
<?php
// Cache the ratings we are going to use
if (Config::get('ratings')) { Rating::build_cache('artist',$object_ids); }
if (Config::get('userflags')) { Userflag::build_cache('artist',$object_ids); }
/* Foreach through every artist that has been passed to us */
foreach ($object_ids as $artist_id) {
/* Foreach through every artist that has been passed to us */
foreach ($object_ids as $artist_id) {
$artist = new Artist($artist_id, $_SESSION['catalog']);
$artist->format();
?>
<tr id="artist_<?php echo $artist->id; ?>" class="<?php echo UI::flip_class(); ?>">
?>
<tr id="artist_<?php echo $artist->id; ?>" class="<?php echo UI::flip_class(); ?>">
<?php require Config::get('prefix') . '/templates/show_artist_row.inc.php'; ?>
</tr>
<?php } //end foreach ($artists as $artist) ?>
<?php if (!count($object_ids)) { ?>
<tr class="<?php echo UI::flip_class(); ?>">
</tr>
<?php } //end foreach ($artists as $artist) ?>
<?php if (!count($object_ids)) { ?>
<tr class="<?php echo UI::flip_class(); ?>">
<td colspan="5"><span class="nodata"><?php echo T_('No artist found'); ?></span></td>
</tr>
<?php } ?>
<tr class="th-bottom">
<?php if (Config::get('directplay')) { ?>
</tr>
<?php } ?>
<tr class="th-bottom">
<?php if (Config::get('directplay')) { ?>
<th class="cel_directplay"><?php echo T_('Play'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_add"><?php echo T_('Add'); ?></th>
<th class="cel_artist"><?php echo Ajax::text('?page=browse&action=set_sort&type=artist&browse_id=' . $browse->id . '&sort=name', T_('Artist'),'artist_sort_name_bottom'); ?></th>
<th class="cel_songs"> <?php echo T_('Songs'); ?> </th>
<th class="cel_albums"> <?php echo T_('Albums'); ?> </th>
<th class="cel_time"> <?php echo T_('Time'); ?> </th>
<th class="cel_tags"><?php echo T_('Tags'); ?></th>
<?php if (Config::get('ratings')) { ?>
<?php if (Config::get('ratings')) { ?>
<th class="cel_rating"><?php echo T_('Rating'); ?></th>
<?php } ?>
<?php if (Config::get('userflags')) { ?>
<?php } ?>
<?php if (Config::get('userflags')) { ?>
<th class="cel_userflag"><?php echo T_('Flag'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_action"> <?php echo T_('Action'); ?> </th>
</tr>
</tr>
</table>
<?php require Config::get('prefix') . '/templates/list_header.inc.php'; ?>

View file

@ -33,7 +33,7 @@
<td class="cel_codec"><?php echo $radio->codec; ?></td>
<td class="cel_action">
<?php if (Access::check('interface','50')) { ?>
<a id="<?php echo 'edit_live_stream_'.$radio->id ?>" onclick="showEditDialog('live_stream_row', '<?php echo $radio->id ?>', '<?php echo 'edit_live_stream_'.$radio->id ?>', '<?php echo T_('Live Stream edit') ?>', '')">
<a id="<?php echo 'edit_live_stream_'.$radio->id ?>" onclick="showEditDialog('live_stream_row', '<?php echo $radio->id ?>', '<?php echo 'edit_live_stream_'.$radio->id ?>', '<?php echo T_('Live Stream edit') ?>', '', 'live_stream_', 'refresh_livestream')">
<?php echo UI::get_icon('edit', T_('Edit')); ?>
</a>
<?php } ?>

View file

@ -25,47 +25,39 @@ $web_path = Config::get('web_path');
?>
<?php require Config::get('prefix') . '/templates/list_header.inc.php'; ?>
<table class="tabledata" cellpadding="0" cellspacing="0">
<colgroup>
<col id="col_directplay" />
<col id="col_add" />
<col id="col_streamname" />
<col id="col_streamurl" />
<col id="col_codec" />
<col id="col_action" />
</colgroup>
<tr class="th-top">
<tr class="th-top">
<?php if (Config::get('directplay')) { ?>
<th class="cel_directplay"><?php echo T_('Play'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_add"><?php echo T_('Add'); ?></th>
<th class="cel_streamname"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&sort=name', T_('Name'),'live_stream_sort_name'); ?></th>
<th class="cel_streamurl"><?php echo T_('Stream URL'); ?></th>
<th class="cel_codec"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&sort=codec', T_('Codec'),'live_stream_codec'); ?></th>
<th class="cel_action"><?php echo T_('Action'); ?></th>
</tr>
<?php
foreach ($object_ids as $radio_id) {
</tr>
<?php
foreach ($object_ids as $radio_id) {
$radio = new Radio($radio_id);
$radio->format();
?>
<tr id="live_stream_<?php echo $radio->id; ?>" class="<?php echo UI::flip_class(); ?>">
?>
<tr id="live_stream_<?php echo $radio->id; ?>" class="<?php echo UI::flip_class(); ?>">
<?php require Config::get('prefix') . '/templates/show_live_stream_row.inc.php'; ?>
</tr>
<?php } //end foreach ($artists as $artist) ?>
<?php if (!count($object_ids)) { ?>
<tr>
</tr>
<?php } //end foreach ($artists as $artist) ?>
<?php if (!count($object_ids)) { ?>
<tr>
<td colspan="6"><span class="nodata"><?php echo T_('No live stream found'); ?></span></td>
</tr>
<?php } ?>
<tr class="th-bottom">
</tr>
<?php } ?>
<tr class="th-bottom">
<?php if (Config::get('directplay')) { ?>
<th class="cel_directplay"><?php echo T_('Play'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_add"><?php echo T_('Add'); ?></th>
<th class="cel_streamname"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&sort=name', T_('Name'),'live_stream_sort_name_bottom'); ?></th>
<th class="cel_streamurl"><?php echo T_('Stream URL'); ?></th>
<th class="cel_codec"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&sort=codec', T_('Codec'),'live_stream_codec_bottom'); ?></th>
<th class="cel_action"><?php echo T_('Action'); ?> </th>
</tr>
</tr>
</table>
<?php require Config::Get('prefix') . '/templates/list_header.inc.php'; ?>

View file

@ -31,31 +31,37 @@ ob_start();
require Config::get('prefix') . '/templates/show_playlist_title.inc.php';
$title = ob_get_contents();
ob_end_clean();
UI::show_box_top('<div id="playlist_row_' . $playlist->id . '">' . $title .
'</div>', 'info-box');
UI::show_box_top('<div id="playlist_row_' . $playlist->id . '">' . $title . '</div>', 'info-box');
?>
<div id="information_actions">
<ul>
<ul>
<li>
<a href="<?php echo Config::get('web_path'); ?>/playlist.php?action=normalize_tracks&amp;playlist_id=<?php echo $playlist->id; ?>"><?php echo UI::get_icon('statistics', T_('Normalize Tracks')); ?></a>
<?php echo T_('Normalize Tracks'); ?>
<a href="<?php echo Config::get('web_path'); ?>/playlist.php?action=normalize_tracks&amp;playlist_id=<?php echo $playlist->id; ?>">
<?php echo UI::get_icon('statistics', T_('Normalize Tracks')); ?>
&nbsp;&nbsp;<?php echo T_('Normalize Tracks'); ?>
</a>
</li>
<li>
<a onclick="submitPlaylistOrder('<?php echo Config::get('web_path'); ?>/playlist.php?action=set_track_numbers&amp;playlist_id=<?php echo $playlist->id; ?>', 'reorder_playlist_table');"><?php echo UI::get_icon('download', T_('Save Tracks Order')); ?></a>
<?php echo T_('Save Tracks Order'); ?>
<a onclick="submitNewItemsOrder('<?php echo $playlist->id; ?>', 'reorder_playlist_table', 'track_',
'<?php echo Config::get('web_path'); ?>/playlist.php?action=set_track_numbers&playlist_id=<?php echo $playlist->id; ?>', 'refresh_playlist_songs')">
<?php echo UI::get_icon('download', T_('Save Tracks Order')); ?>
&nbsp;&nbsp;<?php echo T_('Save Tracks Order'); ?>
</a>
</li>
<?php if (Access::check_function('batch_download')) { ?>
<?php if (Access::check_function('batch_download')) { ?>
<li>
<a href="<?php echo Config::get('web_path'); ?>/batch.php?action=playlist&amp;id=<?php echo $playlist->id; ?>"><?php echo UI::get_icon('batch_download', T_('Batch Download')); ?></a>
<?php echo T_('Batch Download'); ?>
<a href="<?php echo Config::get('web_path'); ?>/batch.php?action=playlist&amp;id=<?php echo $playlist->id; ?>">
<?php echo UI::get_icon('batch_download', T_('Batch Download')); ?>
&nbsp;&nbsp;<?php echo T_('Batch Download'); ?>
</a>
</li>
<?php } ?>
<?php if (Config::get('directplay')) { ?>
<?php } ?>
<?php if (Config::get('directplay')) { ?>
<li>
<?php echo Ajax::button('?page=stream&action=directplay&playtype=playlist&playlist_id=' . $playlist->id,'play', T_('Play All'),'directplay_full_' . $playlist->id); ?>
<?php echo Ajax::text('?page=stream&action=directplay&playtype=playlist&playlist_id=' . $playlist->id, T_('Play All'),'directplay_full_text_' . $playlist->id); ?>
</li>
<?php } ?>
<?php } ?>
<li>
<?php echo Ajax::button('?action=basket&type=playlist&id=' . $playlist->id,'add', T_('Add All'),'play_playlist'); ?>
<?php echo Ajax::text('?action=basket&type=playlist&id=' . $playlist->id, T_('Add All'),'play_playlist_text'); ?>
@ -64,18 +70,19 @@ UI::show_box_top('<div id="playlist_row_' . $playlist->id . '">' . $title .
<?php echo Ajax::button('?action=basket&type=playlist_random&id=' . $playlist->id,'random', T_('Add Random'),'play_playlist_random'); ?>
<?php echo Ajax::text('?action=basket&type=playlist_random&id=' . $playlist->id, T_('Add Random'),'play_playlist_random_text'); ?>
</li>
<?php if ($playlist->has_access()) { ?>
<?php if ($playlist->has_access()) { ?>
<li>
<a href="<?php echo Config::get('web_path'); ?>/playlist.php?action=delete_playlist&playlist_id=<?php echo $playlist->id; ?>" onclick="return confirm('<?php echo T_('Do you really want to delete the playlist?'); ?>');">
<?php echo UI::get_icon('delete'); ?>
<?php echo T_('Delete'); ?>
&nbsp;&nbsp;<?php echo T_('Delete'); ?>
</a>
</li>
<?php } ?>
</ul>
<?php } ?>
</ul>
</div>
<?php UI::show_box_bottom(); ?>
<div id='reordered_list'>
<?php
$browse = new Browse();
$browse->set_type('playlist_song');
@ -84,3 +91,4 @@ UI::show_box_top('<div id="playlist_row_' . $playlist->id . '">' . $title .
$browse->show_objects($object_ids);
$browse->store();
?>
</div>

View file

@ -40,7 +40,7 @@
</a>
<?php } ?>
<?php if ($playlist->has_access()) { ?>
<a id="<?php echo 'edit_playlist_'.$playlist->id ?>" onclick="showEditDialog('playlist_row', '<?php echo $playlist->id ?>', '<?php echo 'edit_playlist_'.$playlist->id ?>', '<?php echo T_('Playlist edit') ?>', '<?php echo Tag::get_display(Tag::get_tags()) ?>')">
<a id="<?php echo 'edit_playlist_'.$playlist->id ?>" onclick="showEditDialog('playlist_row', '<?php echo $playlist->id ?>', '<?php echo 'edit_playlist_'.$playlist->id ?>', '<?php echo T_('Playlist edit') ?>', '', 'playlist_row_', 'refresh_playlist')">
<?php echo UI::get_icon('edit', T_('Edit')); ?>
</a>
<?php echo Ajax::button('?page=browse&action=delete_object&type=playlist&id=' . $playlist->id,'delete', T_('Delete'),'delete_playlist_' . $playlist->id); ?>

View file

@ -48,3 +48,6 @@
<?php echo Ajax::button('?page=playlist&action=delete_track&playlist_id=' . $playlist->id . '&track_id=' . $object['track_id'],'delete', T_('Delete'),'track_del_' . $object['track_id']); ?>
<?php } ?>
</td>
<td class="cel_drag">
<?php echo UI::get_icon('drag', T_('Reorder')); ?>
</td>

View file

@ -47,6 +47,7 @@ $web_path = Config::get('web_path');
<th class="cel_userflag"><?php echo T_('Flag'); ?></th>
<?php } ?>
<th class="cel_action"><?php echo T_('Action'); ?></th>
<th class="cel_drag"></th>
</tr>
<tbody id="sortableplaylist">
@ -79,6 +80,7 @@ $web_path = Config::get('web_path');
<th class="cel_userflag"><?php echo T_('Flag'); ?></th>
<?php } ?>
<th class="cel_action"><?php echo T_('Action'); ?></th>
<th class="cel_drag"></th>
</tr>
</table>
</form>

View file

@ -22,51 +22,42 @@
?>
<?php require Config::get('prefix') . '/templates/list_header.inc.php' ?>
<table class="tabledata" cellpadding="0" cellspacing="0">
<colgroup>
<col id="col_directplay" />
<col id="col_add" />
<col id="col_playlist" />
<col id="col_type" />
<col id="col_songs" />
<col id="col_owner" />
<col id="col_action" />
</colgroup>
<tr class="th-top">
<?php if (Config::get('directplay')) { ?>
<tr class="th-top">
<?php if (Config::get('directplay')) { ?>
<th class="cel_directplay"><?php echo T_('Play'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_add"><?php echo T_('Add'); ?></th>
<th class="cel_playlist"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&type=playlist&sort=name', T_('Playlist Name'),'playlist_sort_name'); ?></th>
<th class="cel_type"><?php echo T_('Type'); ?></th>
<th class="cel_songs"><?php echo T_('# Songs'); ?></th>
<th class="cel_owner"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&type=playlist&sort=user', T_('Owner'),'playlist_sort_owner'); ?></th>
<th class="cel_action"><?php echo T_('Actions'); ?></th>
</tr>
<?php
foreach ($object_ids as $playlist_id) {
</tr>
<?php
foreach ($object_ids as $playlist_id) {
$playlist = new Playlist($playlist_id);
$playlist->format();
$count = $playlist->get_song_count();
?>
<tr class="<?php echo UI::flip_class(); ?>" id="playlist_row_<?php echo $playlist->id; ?>">
?>
<tr class="<?php echo UI::flip_class(); ?>" id="playlist_row_<?php echo $playlist->id; ?>">
<?php require Config::get('prefix') . '/templates/show_playlist_row.inc.php'; ?>
</tr>
<?php } // end foreach ($playlists as $playlist) ?>
<?php if (!count($object_ids)) { ?>
<tr class="<?php echo UI::flip_class(); ?>">
</tr>
<?php } // end foreach ($playlists as $playlist) ?>
<?php if (!count($object_ids)) { ?>
<tr class="<?php echo UI::flip_class(); ?>">
<td colspan="6"><span class="nodata"><?php echo T_('No playlist found'); ?></span></td>
</tr>
<?php } ?>
<tr class="th-bottom">
<?php if (Config::get('directplay')) { ?>
</tr>
<?php } ?>
<tr class="th-bottom">
<?php if (Config::get('directplay')) { ?>
<th class="cel_directplay"><?php echo T_('Play'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_add"><?php echo T_('Add'); ?></th>
<th class="cel_playlist"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&type=playlist&sort=name', T_('Playlist Name'),'playlist_sort_name_bottom'); ?></th>
<th class="cel_type"><?php echo T_('Type'); ?></th>
<th class="cel_songs"><?php echo T_('# Songs'); ?></th>
<th class="cel_owner"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&type=playlist&sort=user', T_('Owner'),'playlist_sort_owner_bottom'); ?></th>
<th class="cel_action"><?php echo T_('Actions'); ?></th>
</tr>
</tr>
</table>
<?php require Config::get('prefix') . '/templates/list_header.inc.php' ?>

View file

@ -25,7 +25,7 @@ ob_start();
require Config::get('prefix') . '/templates/show_smartplaylist_title.inc.php';
$title = ob_get_contents();
ob_end_clean();
UI::show_box_top('<div id="playlist_row_' . $playlist->id . '">' . $title .
UI::show_box_top('<div id="smartplaylist_row_' . $playlist->id . '">' . $title .
'</div>' , 'box box_smartplaylist');
?>
<div id="information_actions">

View file

@ -38,7 +38,7 @@
</a>
<?php } ?>
<?php if ($playlist->has_access()) { ?>
<a id="<?php echo 'edit_playlist_'.$playlist->id ?>" onclick="showEditDialog('smartplaylist_row', '<?php echo $playlist->id ?>', '<?php echo 'edit_playlist_'.$playlist->id ?>', '<?php echo T_('Smart Playlist edit') ?>', '<?php echo Tag::get_display(Tag::get_tags()) ?>')">
<a id="<?php echo 'edit_playlist_'.$playlist->id ?>" onclick="showEditDialog('smartplaylist_row', '<?php echo $playlist->id ?>', '<?php echo 'edit_playlist_'.$playlist->id ?>', '<?php echo T_('Smart Playlist edit') ?>', '<?php echo Tag::get_display(Tag::get_tags()) ?>', 'smartplaylist_row_', 'refresh_smartplaylist')">
<?php echo UI::get_icon('edit', T_('Edit')); ?>
</a>
<?php echo Ajax::button('?page=browse&action=delete_object&type=smartplaylist&id=' . $playlist->id,'delete', T_('Delete'),'delete_playlist_' . $playlist->id); ?>

View file

@ -22,48 +22,39 @@
?>
<?php require Config::get('prefix') . '/templates/list_header.inc.php' ?>
<table class="tabledata" cellpadding="0" cellspacing="0">
<colgroup>
<col id="col_directplay" />
<col id="col_add" />
<col id="col_playlist" />
<col id="col_type" />
<col id="col_songs" />
<col id="col_owner" />
<col id="col_action" />
</colgroup>
<tr class="th-top">
<?php if (Config::get('directplay')) { ?>
<tr class="th-top">
<?php if (Config::get('directplay')) { ?>
<th class="cel_directplay"><?php echo T_('Play'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_add"><?php echo T_('Add'); ?></th>
<th class="cel_playlist"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&type=smartplaylist&sort=name', T_('Playlist Name'),'playlist_sort_name'); ?></th>
<th class="cel_type"><?php echo T_('Type'); ?></th>
<th class="cel_owner"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&type=smartplaylist&sort=user', T_('Owner'),'playlist_sort_owner'); ?></th>
<th class="cel_action"><?php echo T_('Actions'); ?></th>
</tr>
<?php
foreach ($object_ids as $playlist_id) {
</tr>
<?php
foreach ($object_ids as $playlist_id) {
$playlist = new Search('song', $playlist_id);
$playlist->format();
?>
<tr class="<?php echo UI::flip_class(); ?>" id="playlist_row_<?php echo $playlist->id; ?>">
?>
<tr class="<?php echo UI::flip_class(); ?>" id="smartplaylist_row_<?php echo $playlist->id; ?>">
<?php require Config::get('prefix') . '/templates/show_smartplaylist_row.inc.php'; ?>
</tr>
<?php } // end foreach ($playlists as $playlist) ?>
<?php if (!count($object_ids)) { ?>
<tr class="<?php echo UI::flip_class(); ?>">
</tr>
<?php } // end foreach ($playlists as $playlist) ?>
<?php if (!count($object_ids)) { ?>
<tr class="<?php echo UI::flip_class(); ?>">
<td colspan="6"><span class="nodata"><?php echo T_('No smart playlist found'); ?></span></td>
</tr>
<?php } ?>
<tr class="th-bottom">
<?php if (Config::get('directplay')) { ?>
</tr>
<?php } ?>
<tr class="th-bottom">
<?php if (Config::get('directplay')) { ?>
<th class="cel_directplay"><?php echo T_('Play'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_add"><?php echo T_('Add'); ?></th>
<th class="cel_playlist"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&type=playlist&sort=name', T_('Playlist Name'),'playlist_sort_name_bottom'); ?></th>
<th class="cel_type"><?php echo T_('Type'); ?></th>
<th class="cel_owner"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&type=playlist&sort=user', T_('Owner'),'playlist_sort_owner_bottom'); ?></th>
<th class="cel_action"><?php echo T_('Actions'); ?></th>
</tr>
</tr>
</table>
<?php require Config::get('prefix') . '/templates/list_header.inc.php' ?>

View file

@ -50,7 +50,7 @@
<?php if (Access::check_function('download')) { ?>
<a href="<?php echo Config::get('web_path'); ?>/stream.php?action=download&amp;song_id=<?php echo $song->id; ?>"><?php echo UI::get_icon('download', T_('Download')); ?></a><?php } ?>
<?php if (Access::check('interface','75')) { ?>
<a id="<?php echo 'edit_song_'.$song->id ?>" onclick="showEditDialog('song_row', '<?php echo $song->id ?>', '<?php echo 'edit_song_'.$song->id ?>', '<?php echo T_('Song edit') ?>', '<?php echo Tag::get_display(Tag::get_tags()) ?>')">
<a id="<?php echo 'edit_song_'.$song->id ?>" onclick="showEditDialog('song_row', '<?php echo $song->id ?>', '<?php echo 'edit_song_'.$song->id ?>', '<?php echo T_('Song edit') ?>', '<?php echo Tag::get_display(Tag::get_tags()) ?>', 'song_', 'refresh_song')">
<?php echo UI::get_icon('edit', T_('Edit')); ?>
</a>
<?php $icon = $song->enabled ? 'disable' : 'enable'; ?>
@ -60,3 +60,6 @@
</span>
<?php } ?>
</td>
<td class="cel_drag">
<?php echo UI::get_icon('drag', T_('Reorder')); ?>
</td>

View file

@ -23,23 +23,11 @@
$web_path = Config::get('web_path');
?>
<?php require Config::get('prefix') . '/templates/list_header.inc.php'; ?>
<table class="tabledata" cellpadding="0" cellspacing="0">
<colgroup>
<col id="col_directplay" />
<col id="col_add" />
<col id="col_song" />
<col id="col_artist" />
<col id="col_album" />
<col id="col_track" />
<col id="col_time" />
<col id="col_rating" />
<col id="col_userflag" />
<col id="col_action" />
</colgroup>
<tr class="th-top">
<?php if (Config::get('directplay')) { ?>
<table id="reorder_songs_table" class="tabledata" cellpadding="0" cellspacing="0">
<tr class="th-top">
<?php if (Config::get('directplay')) { ?>
<th class="cel_directplay"><?php echo T_('Play'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_add"><?php echo T_('Add'); ?></th>
<th class="cel_song"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&sort=title', T_('Song Title'), 'sort_song_title'); ?></th>
<th class="cel_artist"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&sort=artist', T_('Artist'), 'sort_song_artist'); ?></th>
@ -47,36 +35,42 @@ $web_path = Config::get('web_path');
<th class="cel_tags"><?php echo T_('Tags'); ?></th>
<th class="cel_track"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&sort=track', T_('Track'), 'sort_song_track'); ?></th>
<th class="cel_time"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&sort=time', T_('Time'), 'sort_song_time'); ?></th>
<?php if (Config::get('ratings')) {
<?php if (Config::get('ratings')) {
Rating::build_cache('song', $object_ids);
?>
?>
<th class="cel_rating"><?php echo T_('Rating'); ?></th>
<?php } ?>
<?php if (Config::get('userflags')) {
<?php } ?>
<?php if (Config::get('userflags')) {
Userflag::build_cache('song', $object_ids);
?>
?>
<th class="cel_userflag"><?php echo T_('Flag'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_action"><?php echo T_('Action'); ?></th>
</tr>
<?php
<th class="cel_drag"></th>
</tr>
<tbody id="sortableplaylist">
<?php
foreach ($object_ids as $song_id) {
$song = new Song($song_id);
$song->format();
?>
<tr class="<?php echo UI::flip_class(); ?>" id="song_<?php echo $song->id; ?>">
?>
<tr class="<?php echo UI::flip_class(); ?>" id="song_<?php echo $song->id; ?>">
<?php require Config::get('prefix') . '/templates/show_song_row.inc.php'; ?>
</tr>
<?php } ?>
</tr>
<?php } ?>
</tbody>
<?php if (!count($object_ids)) { ?>
<tr class="<?php echo UI::flip_class(); ?>">
<td colspan="9"><span class="nodata"><?php echo T_('No song found'); ?></span></td>
</tr>
<tr class="<?php echo UI::flip_class(); ?>">
<td colspan="10"><span class="nodata"><?php echo T_('No song found'); ?></span></td>
</tr>
<?php } ?>
<tr class="th-bottom">
<?php if (Config::get('directplay')) { ?>
<tr class="th-bottom">
<?php if (Config::get('directplay')) { ?>
<th class="cel_directplay"><?php echo T_('Play'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_add"><?php echo T_('Add'); ?></th>
<th class="cel_song"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&type=song&sort=title', T_('Song Title'),'sort_song_title_bottom'); ?></th>
<th class="cel_artist"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&type=song&sort=artist', T_('Artist'),'sort_song_artist_bottom'); ?></th>
@ -84,13 +78,14 @@ $web_path = Config::get('web_path');
<th class="cel_tags"><?php echo T_('Tags'); ?></th>
<th class="cel_track"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&type=song&sort=track', T_('Track'),'sort_song_track_bottom'); ?></th>
<th class="cel_time"><?php echo Ajax::text('?page=browse&action=set_sort&browse_id=' . $browse->id . '&type=song&sort=time', T_('Time'),'sort_song_time_bottom'); ?></th>
<?php if (Config::get('ratings')) { ?>
<?php if (Config::get('ratings')) { ?>
<th class="cel_rating"><?php echo T_('Rating'); ?></th>
<?php } ?>
<?php if (Config::get('userflags')) { ?>
<?php } ?>
<?php if (Config::get('userflags')) { ?>
<th class="cel_userflag"><?php echo T_('Flag'); ?></th>
<?php } ?>
<?php } ?>
<th class="cel_action"><?php echo T_('Action'); ?></th>
</tr>
<th class="cel_drag"></th>
</tr>
</table>
<?php require Config::get('prefix') . '/templates/list_header.inc.php'; ?>

View file

@ -582,6 +582,16 @@ a.button{padding:1px 3px;}
.tabledata .even:hover, .tabledata .odd:hover {
background:#9cf;
}
table.tabledata .cel_drag {
max-width: 16px;
width: 16px !important;
}
table.tabledata .cel_drag img:hover {
cursor: pointer;
}
.row-highlight:hover {
background:#c33;
}

View file

@ -497,6 +497,15 @@ table.tabledata tbody .cel_cover img
border: 4px double #bbb;
}
table.tabledata .cel_drag {
max-width: 16px;
width: 16px !important;
}
table.tabledata .cel_drag img:hover {
cursor: pointer;
}
.box_preferences h4
{
font-size:15px;
@ -672,7 +681,7 @@ span.nodata {
.star-rating a:hover,
.star-rating .current-rating
{
background: url(../../../themes/fresh/images/ratings/star_rating.png) left -1000px repeat-x;
background: url(../images/ratings/star_rating.png) left -1000px repeat-x;
}
.star-rating ul
{

View file

@ -565,6 +565,15 @@ table.tabledata tbody .cel_cover img
border: 4px double #bbb;
}
table.tabledata .cel_drag {
max-width: 16px;
width: 16px !important;
}
table.tabledata .cel_drag img:hover {
cursor: pointer;
}
.box_preferences h4
{
font-size:15px;
@ -814,7 +823,7 @@ span.nodata {
.star-rating a:hover,
.star-rating .current-rating
{
background: url(../../../themes/fresh/images/ratings/star_rating.png) left -1000px repeat-x;
background: url(../images/ratings/star_rating.png) left -1000px repeat-x;
}
.star-rating ul
{

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

View file

@ -382,6 +382,11 @@ input[type=button]:focus:active, input[type=submit]:focus:active {
width: 20%;
}
#header #headerlogo img {
height: 64px;
width: 64px;
}
#header #headerbox {
float:left;
width: 80%;
@ -481,7 +486,7 @@ input[type=button]:focus:active, input[type=submit]:focus:active {
#loginPage #headerlogo {
width: 256px;
height: 256px;
background: url('../images/login-logo.png') no-repeat center;
background: url('../images/ampache.png') no-repeat center;
background-size: contain;
margin: auto;
}
@ -957,7 +962,7 @@ table.tabledata tbody .th-bottom:focus {
color: #fff;
background-color: #262626;
background-image: none;
background-repeat: none;
background-repeat: no-repeat;
}
table.tabledata tbody .odd {
@ -973,6 +978,7 @@ table.tabledata tbody .cel_directplay
table.tabledata tbody .cel_add {
min-width: 40px;
width: 40px !important;
}
table.tabledata tbody .cel_artist {
@ -1005,6 +1011,15 @@ table.tabledata tbody .cel_cover img:hover {
margin: 0px;
}
table.tabledata .cel_drag {
max-width: 16px;
width: 16px !important;
}
table.tabledata .cel_drag img:hover {
cursor: pointer;
}
.box_preferences h4 {
font-size: 15px;
margin-bottom: 10px;
@ -1325,7 +1340,7 @@ span.fatalerror {
.star-rating ul,
.star-rating a:hover,
.star-rating .current-rating {
background: url(../../../themes/fresh/images/ratings/star_rating.png) left -1000px repeat-x;
background: url(../images/ratings/star_rating.png) left -1000px repeat-x;
}
.star-rating ul {
position:relative;
@ -1449,13 +1464,6 @@ dl.song_details dd {
text-decoration: underline;
}
/***********************************************
Import playlist
***********************************************/
div.box-content td {
width: 200px;
}
/***********************************************
Other
***********************************************/