CC-84: Smart Playlists

- add qtip for smart playlists
- modified qtip content for regular playlists that contain smart playlists
This commit is contained in:
denise 2012-08-01 12:04:48 -04:00
parent e1f962baa9
commit c9afac239a
5 changed files with 159 additions and 14 deletions

View file

@ -311,6 +311,22 @@ class LibraryController extends Zend_Controller_Action
$this->view->md = $md;
$this->view->contents = $file->getContents();
} else if ($type == "block") {
$file = new Application_Model_Block($id);
$this->view->type = $type;
$md = $file->getAllPLMetaData();
$formatter = new LengthFormatter($md["dcterms:extent"]);
$md["dcterms:extent"] = $formatter->format();
$this->view->md = $md;
if ($file->isStatic()) {
$this->view->blType = 'Static';
$this->view->contents = $file->getContents();
} else {
$this->view->blType = 'Dynamic';
$this->view->contents = $file->getCriteria();
}
} else if ($type == "stream") {
$file = new Application_Model_Webstream($id);

View file

@ -21,21 +21,93 @@
<?php endif; ?>
<?php if($this->type == "playlist") : ?>
<?php if($this->type == "playlist" || $this->type == "block") : ?>
<div><span>Name:</span><span><?php echo ($this->md["dc:title"]);?></span></div>
<div><span>Creator:</span><span><?php echo ($this->md["dc:creator"]);?></span></div>
<?php if ($this->type == "block" && $this->blType == "Dynamic") { ?>
<?php if ($this->contents["limit"]["modifier"] == "items") { ?>
<?php $len = $this->contents["limit"]["value"]." tracks"; ?>
<?php } elseif ($this->contents["limit"]["modifier"] == "minutes") { ?>
<?php
$mins = $this->contents["limit"]["value"];
if ($mins > 59) {
$hours = intval($mins / 60);
$minutes = $mins % 60;
$len = $hours.":".str_pad($minutes, 2, "0", STR_PAD_LEFT).":00.0";
} else {
$len = $this->contents["limit"]["value"].":00.0";
}
?>
<?php } else {?>
<?php $len = $this->contents["limit"]["value"].":00:00.0"; ?>
<?php } ?>
<div><span>Length:</span><span><?php echo $len;?></span></div>
<?php } else { ?>
<div><span>Length:</span><span><?php echo ($this->md["dcterms:extent"]);?></span></div>
<?php } ?>
<div><span>Description:</span><span><?php echo ($this->md["dc:description"]);?></span></div>
<div><span>Contents: </span>
<?php if ($this->type == "playlist" || ($this->type == "block" && $this->blType == "Static")) {?>
<?php if ($this->type == "playlist") { ?>
<div><span>Playlist Contents: </span></div>
<?php } else { ?>
<div><span>Static Playlist Contents: </span></div>
<?php } ?>
<table class='library-get-file-md'>
<?php foreach($this->contents as $row) : ?>
<div>
<span><?php echo $row["track_title"] ?></span>
<span><?php echo $row["creator"] ?></span>
<span><?php echo $row["album_title"] ?></span>
<span><?php echo $row["length"] ?></span>
</div>
<?php
$maxStrLen = 35;
if (strlen($row["track_title"]) > $maxStrLen) {
$row["track_title"] = substr($row["track_title"], 0, 34)."...";
}
?>
<?php if ($row["type"] == 2) {
$bl = new Application_Model_Block($row["item_id"]);
$isStatic = $bl->isStatic(); ?>
<tr class='file-md-qtip-playlist <?php if ($isStatic) echo 'static'; else echo 'dynamic';?>'>
<td colspan="3"><?php if ($isStatic) echo 'Static Playlist'; else echo 'Dynamic Playlist';?></td>
</tr>
<tr class='file-md-qtip-playlist <?php if ($isStatic) echo 'static'; else echo 'dynamic';?>'>
<td class='file-md-qtip-row-width-title'><?php echo $row["track_title"] ?></td>
<td class='file-md-qtip-row-width-artist'><?php echo $row["creator"] ?></td>
<?php if (!$isStatic) { ?>
<?php $criteria = $bl->getCriteria();?>
<?php $len = $bl->getLength();?>
<td class='file-md-qtip-row-width-small'><?php echo $len ?></td>
<?php } else { ?>
<td class='file-md-qtip-row-width-small'><?php echo $row["length"] ?></td>
<?php } ?>
</tr>
<?php } else { ?>
<tr>
<td class='file-md-qtip-row-width-title'><?php echo $row["track_title"] ?></td>
<td class='file-md-qtip-row-width-artist'><?php echo $row["creator"] ?></td>
<td class='file-md-qtip-row-width-small'><?php echo $row["length"] ?></td>
</tr>
<?php } ?>
<?php endforeach; ?>
</div>
</table>
<?php } elseif ($this->blType == "Dynamic") { ?>
<div><span>Dynamic Playlist Criteria: </span></div>
<table class='library-get-file-md table-small'>
<?php foreach ($this->contents["crit"] as $criterias) : ?>
<?php foreach ($criterias as $crit ) : ?>
<tr>
<td class='file-md-qtip-criteria-width-small'><?php echo $crit["display_name"] ?></td>
<td class='file-md-qtip-criteria-width-small'><?php echo $crit["modifier"] ?></td>
<td class='file-md-qtip-criteria-width'><?php echo $crit["value"] ?>
<?php if (isset($crit["extra"])) { ?>
to <?php echo $crit["extra"] ?></td>
<?php } ?>
</tr>
<?php endforeach; ?>
<tr>
<td>Limit to </td>
<td><?php echo $this->contents["limit"]["value"] ?> <?php echo $this->contents["limit"]["modifier"] ?></td>
</tr>
<?php endforeach; ?>
</table>
<?php } ?>
<?php endif; ?>
<?php if ($this->type == "stream") : ?>

File diff suppressed because one or more lines are too long

View file

@ -417,6 +417,61 @@ input[type="text"]:focus, input[type="password"]:focus, textarea:focus, .input_t
vertical-align: top;
}
/***** LIBRARY QTIP METADATA SPECIFIC STYLES BEGIN *****/
.library-get-file-md tr td{
font-size:10px;
padding: 0px;
vertical-align:top;
}
table.library-get-file-md{
margin-left:15px;
width:350px;
}
table.library-get-file-md.table-small{
width:290px !important;
}
.file-md-qtip-criteria-width-small{
width:80px;
}
.file-md-qtip-criteria-width{
width:120px;
}
.file-md-qtip-row-width-title{
width:170px;
padding-right:5px !important;
}
.file-md-qtip-row-width-artist{
width:100px;
}
.file-md-qtip-row-width-small{
width:50x;
text-align:right;
}
.file-md-qtip-playlist td{
font-weight: bold;
font-style: italic;
}
.file-md-qtip-playlist.dynamic td{
color: #63a2f0;
}
.file-md-qtip-playlist.static td{
color: #f09839;
}
/***** LIBRARY QTIP METADATA SPECIFIC STYLES END *****/
/***** SMART PLAYLIST SPECIFIC STYLES BEGIN *****/
.sp-invisible{
visibility: hidden;

View file

@ -429,7 +429,8 @@ function getCriteriaOptionType(e) {
function callback(data, type) {
var form = $('#smart-playlist-form'),
json = $.parseJSON(data);
json = $.parseJSON(data),
dt = $('table[id="library_display"]').dataTable();
form.find('span[class="errors sp-errors"]').remove();
@ -449,7 +450,6 @@ function callback(data, type) {
} else if (type == 'generate') {
form.find('.success').text('Smart playlist generated and saved');
//redraw library table so the length gets updated
var dt = $('table[id="library_display"]').dataTable();
dt.fnStandingRedraw();
}
form.find('.success').show();
@ -457,6 +457,8 @@ function callback(data, type) {
} else {
form.find('.success').text('Criteria saved');
form.find('.success').show();
//redraw library table incase block changed from static to dynamic or vice versa
dt.fnStandingRedraw();
/* Update number of files that meet criteria and change icon to success/warning
* as appropriate. This is also done in the form but we do not pass the form