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

Starting sortable playlist implmentation to re-order songs.

This commit is contained in:
SUTJael 2013-11-25 14:36:12 +01:00
parent 40ef2d3de7
commit 0599214703
3 changed files with 116 additions and 77 deletions

View file

@ -19,6 +19,17 @@
//
$(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() {
@ -40,12 +51,12 @@ $(function() {
// flipField
// Toggles the disabled property on the specifed field
function flipField(field) {
if ($(field).disabled == false) {
$(field).disabled = true;
}
else {
$(field).disabled = false;
}
if ($(field).disabled == false) {
$(field).disabled = true;
}
else {
$(field).disabled = false;
}
}
// updateText
@ -68,9 +79,7 @@ function toggleVisible(element) {
// delayRun
// This function delays the run of another function by X milliseconds
function delayRun(element, time, method, page, source) {
var function_string = method + '(\'' + page + '\',\'' + source + '\')';
var action = function () { eval(function_string); };
if (element.zid) {
@ -78,7 +87,6 @@ function delayRun(element, time, method, page, source) {
}
element.zid = setTimeout(action, time);
}
// reloadUtil

View file

@ -18,6 +18,10 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
/*********************/
/* Edit modal dialog */
/*********************/
function showEditDialog(edit_type, edit_id, edit_form_id, edit_title, edit_tag_choices) {
var parent = this;
parent.editFormId = 'form#' + edit_form_id;
@ -96,3 +100,28 @@ function check_inline_song_edit(type, song) {
$(source).replaceWith('<input type="text" name="' + type + '_name" value="New ' + type + '" onclick="this.select();" />');
}
}
/*********************/
/* Sortable table */
/*********************/
$(document).ready(function () {
$('#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 playlistUpdatedIndex(item) {
var startIndex = item.data("startindex");
var newIndex = item.index();
if (newIndex != startIndex) {
alert('Start index {' + startIndex + '} Stop index {' + newIndex + '}');
}
}

View file

@ -24,73 +24,75 @@ $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_track" />
<col id="col_song" />
<col id="col_artist" />
<col id="col_album" />
<col id="col_genre" />
<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')) { ?>
<th class="cel_directplay"><?php echo T_('Play'); ?></th>
<?php } ?>
<th class="cel_add"><?php echo T_('Add'); ?></th>
<th class="cel_track"><?php echo T_('Track'); ?></th>
<th class="cel_song"><?php echo T_('Song Title'); ?></th>
<th class="cel_artist"><?php echo T_('Artist'); ?></th>
<th class="cel_album"><?php echo T_('Album'); ?></th>
<th class="cel_genre"><?php echo T_('Genre'); ?></th>
<th class="cel_track"><?php echo T_('Track'); ?></th>
<th class="cel_time"><?php echo T_('Time'); ?></th>
<?php if (Config::get('ratings')) {
Rating::build_cache('song', array_map(create_function('$i', 'return $i[\'object_id\'];'), $object_ids));
?>
<th class="cel_rating"><?php echo T_('Rating'); ?></th>
<?php } ?>
<?php if (Config::get('userflags')) {
Userflag::build_cache('song', array_map(create_function('$i', 'return $i[\'object_id\'];'), $object_ids));
?>
<th class="cel_userflag"><?php echo T_('Flag'); ?></th>
<?php } ?>
<th class="cel_action"><?php echo T_('Action'); ?></th>
</tr>
<?php
foreach ($object_ids as $object) {
$song = new Song($object['object_id']);
$song->format();
$playlist_track = $object['track'];
?>
<tr class="<?php echo UI::flip_class(); ?>" id="track_<?php echo $object['track_id']; ?>">
<?php require Config::get('prefix') . '/templates/show_playlist_song_row.inc.php'; ?>
</tr>
<?php } ?>
<tr class="th-bottom">
<?php if (Config::get('directplay')) { ?>
<th class="cel_directplay"><?php echo T_('Play'); ?></th>
<?php } ?>
<th class="cel_add"><?php echo T_('Add'); ?></th>
<th class="cel_track"><?php echo T_('Track'); ?></th>
<th class="cel_song"><?php echo T_('Song Title'); ?></th>
<th class="cel_artist"><?php echo T_('Artist'); ?></th>
<th class="cel_album"><?php echo T_('Album'); ?></th>
<th class="cel_genre"><?php echo T_('Genre'); ?></th>
<th class="cel_track"><?php echo T_('Track'); ?></th>
<th class="cel_time"><?php echo T_('Time'); ?></th>
<?php if (Config::get('ratings')) { ?>
<th class="cel_rating"><?php echo T_('Rating'); ?></th>
<?php } ?>
<?php if (Config::get('userflags')) { ?>
<th class="cel_userflag"><?php echo T_('Flag'); ?></th>
<?php } ?>
<th class="cel_action"><?php echo T_('Action'); ?></th>
</tr>
<colgroup>
<col id="col_directplay" />
<col id="col_add" />
<col id="col_track" />
<col id="col_song" />
<col id="col_artist" />
<col id="col_album" />
<col id="col_genre" />
<col id="col_track" />
<col id="col_time" />
<col id="col_rating" />
<col id="col_userflag" />
<col id="col_action" />
</colgroup>
<tbody id="sortableplaylist">
<tr class="th-top">
<?php if (Config::get('directplay')) { ?>
<th class="cel_directplay"><?php echo T_('Play'); ?></th>
<?php } ?>
<th class="cel_add"><?php echo T_('Add'); ?></th>
<th class="cel_track"><?php echo T_('Track'); ?></th>
<th class="cel_song"><?php echo T_('Song Title'); ?></th>
<th class="cel_artist"><?php echo T_('Artist'); ?></th>
<th class="cel_album"><?php echo T_('Album'); ?></th>
<th class="cel_genre"><?php echo T_('Genre'); ?></th>
<th class="cel_track"><?php echo T_('Track'); ?></th>
<th class="cel_time"><?php echo T_('Time'); ?></th>
<?php if (Config::get('ratings')) {
Rating::build_cache('song', array_map(create_function('$i', 'return $i[\'object_id\'];'), $object_ids));
?>
<th class="cel_rating"><?php echo T_('Rating'); ?></th>
<?php } ?>
<?php if (Config::get('userflags')) {
Userflag::build_cache('song', array_map(create_function('$i', 'return $i[\'object_id\'];'), $object_ids));
?>
<th class="cel_userflag"><?php echo T_('Flag'); ?></th>
<?php } ?>
<th class="cel_action"><?php echo T_('Action'); ?></th>
</tr>
<?php
foreach ($object_ids as $object) {
$song = new Song($object['object_id']);
$song->format();
$playlist_track = $object['track'];
?>
<tr class="<?php echo UI::flip_class(); ?>" id="track_<?php echo $object['track_id']; ?>">
<?php require Config::get('prefix') . '/templates/show_playlist_song_row.inc.php'; ?>
</tr>
<?php } ?>
<tr class="th-bottom">
<?php if (Config::get('directplay')) { ?>
<th class="cel_directplay"><?php echo T_('Play'); ?></th>
<?php } ?>
<th class="cel_add"><?php echo T_('Add'); ?></th>
<th class="cel_track"><?php echo T_('Track'); ?></th>
<th class="cel_song"><?php echo T_('Song Title'); ?></th>
<th class="cel_artist"><?php echo T_('Artist'); ?></th>
<th class="cel_album"><?php echo T_('Album'); ?></th>
<th class="cel_genre"><?php echo T_('Genre'); ?></th>
<th class="cel_track"><?php echo T_('Track'); ?></th>
<th class="cel_time"><?php echo T_('Time'); ?></th>
<?php if (Config::get('ratings')) { ?>
<th class="cel_rating"><?php echo T_('Rating'); ?></th>
<?php } ?>
<?php if (Config::get('userflags')) { ?>
<th class="cel_userflag"><?php echo T_('Flag'); ?></th>
<?php } ?>
<th class="cel_action"><?php echo T_('Action'); ?></th>
</tr>
</tbody>
</table>
<?php require Config::get('prefix') . '/templates/list_header.inc.php'; ?>