diff --git a/airtime_mvc/application/controllers/PlaylistController.php b/airtime_mvc/application/controllers/PlaylistController.php
index 4f511f4b5..2bbe691e1 100644
--- a/airtime_mvc/application/controllers/PlaylistController.php
+++ b/airtime_mvc/application/controllers/PlaylistController.php
@@ -31,6 +31,8 @@ class PlaylistController extends Zend_Controller_Action
->addActionContext('empty-content', 'json')
->initContext();
+ //This controller writes to the session all over the place, so we're going to reopen it for writing here.
+ session_start(); //Reopen the session for writing
}
private function getPlaylist($p_type)
diff --git a/airtime_mvc/application/controllers/ShowbuilderController.php b/airtime_mvc/application/controllers/ShowbuilderController.php
index a30baac4c..324e39b61 100644
--- a/airtime_mvc/application/controllers/ShowbuilderController.php
+++ b/airtime_mvc/application/controllers/ShowbuilderController.php
@@ -158,7 +158,7 @@ class ShowbuilderController extends Zend_Controller_Action
//populate date range form for show builder.
$now = time();
$from = $request->getParam("from", $now);
- $to = $request->getParam("to", $now + (24*60*60));
+ $to = $request->getParam("to", $now + (3*60*60));
$utcTimezone = new DateTimeZone("UTC");
$displayTimeZone = new DateTimeZone(Application_Model_Preference::GetTimezone());
@@ -343,7 +343,8 @@ class ShowbuilderController extends Zend_Controller_Action
$request = $this->getRequest();
$selectedItems = $request->getParam("selectedItem");
$afterItem = $request->getParam("afterItem");
-
+
+ /*
$log_vars = array();
$log_vars["url"] = $_SERVER['HTTP_HOST'];
$log_vars["action"] = "showbuilder/schedule-move";
@@ -351,6 +352,7 @@ class ShowbuilderController extends Zend_Controller_Action
$log_vars["params"]["selected_items"] = $selectedItems;
$log_vars["params"]["destination_after_item"] = $afterItem;
Logging::info($log_vars);
+ */
try {
$scheduler = new Application_Model_Scheduler();
diff --git a/airtime_mvc/application/models/Scheduler.php b/airtime_mvc/application/models/Scheduler.php
index 4208ff5c7..a4a9e9aca 100644
--- a/airtime_mvc/application/models/Scheduler.php
+++ b/airtime_mvc/application/models/Scheduler.php
@@ -1011,10 +1011,10 @@ class Application_Model_Scheduler
*/
public function moveItem($selectedItems, $afterItems, $adjustSched = true)
{
- $startProfile = microtime(true);
+ //$startProfile = microtime(true);
$this->con->beginTransaction();
- $this->con->useDebug(true);
+ //$this->con->useDebug(true);
try {
@@ -1023,8 +1023,8 @@ class Application_Model_Scheduler
$this->validateRequest($afterItems);
$endProfile = microtime(true);
- Logging::debug("validating move request took:");
- Logging::debug(floatval($endProfile) - floatval($startProfile));
+ //Logging::debug("validating move request took:");
+ //Logging::debug(floatval($endProfile) - floatval($startProfile));
$afterInstance = CcShowInstancesQuery::create()->findPK($afterItems[0]["instance"], $this->con);
@@ -1065,18 +1065,18 @@ class Application_Model_Scheduler
$this->removeGaps($instance, $schedIds);
- $endProfile = microtime(true);
- Logging::debug("removing gaps from instance $instance:");
- Logging::debug(floatval($endProfile) - floatval($startProfile));
+ //$endProfile = microtime(true);
+ //Logging::debug("removing gaps from instance $instance:");
+ //Logging::debug(floatval($endProfile) - floatval($startProfile));
}
- $startProfile = microtime(true);
+ //$startProfile = microtime(true);
$this->insertAfter($afterItems, null, $movedData, $adjustSched, true);
- $endProfile = microtime(true);
- Logging::debug("inserting after removing gaps.");
- Logging::debug(floatval($endProfile) - floatval($startProfile));
+ //$endProfile = microtime(true);
+ //Logging::debug("inserting after removing gaps.");
+ //Logging::debug(floatval($endProfile) - floatval($startProfile));
$modified = array_keys($modifiedMap);
//need to adjust shows we have moved items from.
@@ -1086,7 +1086,7 @@ class Application_Model_Scheduler
$instance->updateScheduleStatus($this->con);
}
- $this->con->useDebug(false);
+ //$this->con->useDebug(false);
$this->con->commit();
Application_Model_RabbitMq::PushSchedule();
diff --git a/airtime_mvc/public/js/airtime/showbuilder/builder.js b/airtime_mvc/public/js/airtime/showbuilder/builder.js
index 29e86963b..aa179f8e2 100644
--- a/airtime_mvc/public/js/airtime/showbuilder/builder.js
+++ b/airtime_mvc/public/js/airtime/showbuilder/builder.js
@@ -278,7 +278,8 @@ var AIRTIME = (function(AIRTIME){
oSchedTable.fnDraw();
mod.enableUI();
- $("#library_content").find("#library_display").dataTable().fnStandingRedraw();
+ //Unneccessary reload of the library pane after moving tracks in the showbuilder pane.
+ //$("#library_content").find("#library_display").dataTable().fnStandingRedraw();
};
mod.getSelectedCursors = function() {
@@ -319,7 +320,7 @@ var AIRTIME = (function(AIRTIME){
mod.fnMove = function(aSelect, aAfter) {
- mod.disableUI();
+ //mod.disableUI();
$.post(baseUrl+"showbuilder/schedule-move",
{"format": "json", "selectedItem": aSelect, "afterItem": aAfter},
@@ -398,13 +399,20 @@ var AIRTIME = (function(AIRTIME){
$scroll.scrollTop(currentTop - scrollingTop + scrolled);
}
-
+
mod.builderDataTable = function() {
$sbContent = $('#show_builder');
$lib = $("#library_content"),
$sbTable = $sbContent.find('table');
var isInitialized = false;
+ var emptyNode = document.createElement('div');
+ var lockedPreviewIcon = document.createElement('span');
+ lockedPreviewIcon.setAttribute('class', 'ui-icon ui-icon-locked');
+ var previewIcon = document.createElement('img');
+ previewIcon.setAttribute('src', baseUrl+'css/images/icon_audioclip.png');
+ previewIcon.setAttribute('title', $.i18n._("Track preview"));
+
oSchedTable = $sbTable.dataTable( {
"aoColumns": [
/* checkbox */ {"mDataProp": "allowed", "sTitle": "", "sWidth": "15px", "sClass": "sb-checkbox"},
@@ -429,6 +437,7 @@ var AIRTIME = (function(AIRTIME){
"bServerSide": true,
"bInfo": false,
"bAutoWidth": false,
+ "bDeferRender": true,
"bStateSave": true,
"fnStateSaveParams": function (oSettings, oData) {
@@ -494,8 +503,13 @@ var AIRTIME = (function(AIRTIME){
headerIcon;
fnPrepareSeparatorRow = function fnPrepareSeparatorRow(sRowContent, sClass, iNodeIndex) {
+ //Albert:
+ //$(nRow.children[iNodeIndex]).replaceWith(emptyNode);
+
+
$node = $(nRow.children[iNodeIndex]);
$node.html(sRowContent);
+
$node.attr('colspan',100);
for (i = iNodeIndex + 1, length = nRow.children.length; i < length; i = i+1) {
$node = $(nRow.children[i]);
@@ -504,6 +518,7 @@ var AIRTIME = (function(AIRTIME){
}
$nRow.addClass(sClass);
+
};
if (aData.header === true) {
@@ -575,8 +590,9 @@ var AIRTIME = (function(AIRTIME){
//remove the column classes from all tds.
$nRow.find('td').removeClass();
- $node = $(nRow.children[0]);
- $node.html('');
+ //$node = $(nRow.children[0]).replaceWith(emptyNode);;
+ //$node.html('');
+ $node.empty();
sSeparatorHTML = ''+$.i18n._("Show Empty")+'';
cl = cl + " sb-empty odd";
@@ -592,24 +608,32 @@ var AIRTIME = (function(AIRTIME){
sSeparatorHTML = ''+$.i18n._("Recording From Line In")+'';
cl = cl + " sb-record odd";
-
fnPrepareSeparatorRow(sSeparatorHTML, cl, 1);
}
else {
//add the play function if the file exists on disk.
$image = $nRow.find('td.sb-image');
+ $image.empty();
//check if the file exists.
if (aData.image === true) {
$nRow.addClass("lib-audio");
if (!isAudioSupported(aData.mime)) {
- $image.html('');
+ //$image.html('');
+ $image.append(lockedPreviewIcon);
} else {
+ /*
$image.html('')
.click(function() {
open_show_preview(aData.instance, aData.pos);
return false;
+ });*/
+ $image.append(previewIcon.cloneNode(false));
+ $image.click(function() {
+ open_show_preview(aData.instance, aData.pos);
+ return false;
});
+
}
}
else {
@@ -625,13 +649,13 @@ var AIRTIME = (function(AIRTIME){
hide: 'mouseout'
});
}
-
+
$node = $(nRow.children[0]);
if (aData.allowed === true && aData.scheduled >= 1 && aData.linked_allowed) {
$node.html('');
}
else {
- $node.html('');
+ $node.empty();
}
}
@@ -705,7 +729,6 @@ var AIRTIME = (function(AIRTIME){
$("#draggingContainer").remove();
},
"fnDrawCallback": function fnBuilderDrawCallback(oSettings, json) {
- var isInitialized = false;
if (!isInitialized) {
//when coming to 'Now Playing' page we want the page
@@ -730,7 +753,8 @@ var AIRTIME = (function(AIRTIME){
heights = [];
clearTimeout(mod.timeout);
-
+
+ /*
//only create the cursor arrows if the library is on the page.
if ($lib.length > 0 && $lib.filter(":visible").length > 0) {
@@ -775,18 +799,18 @@ var AIRTIME = (function(AIRTIME){
$tr = $table.find("tr[id="+cursorIds[i]+"][si_id="+showInstanceIds[i]+"]");
}
- /* If the currently playing track's cursor is selected,
- * and that track is deleted, the cursor position becomes
- * unavailble. We have to check the position is available
- * before re-highlighting it.
- */
+ //If the currently playing track's cursor is selected,
+ //and that track is deleted, the cursor position becomes
+ //unavailble. We have to check the position is available
+ // before re-highlighting it.
+ //
if ($tr.find(".sb-checkbox").children().hasClass("innerWrapper")) {
mod.selectCursor($tr);
- /* If the selected cursor is the footer row we need to
- * explicitly select it because that row does not have
- * innerWrapper class
- */
+ // If the selected cursor is the footer row we need to
+ //explicitly select it because that row does not have
+ // innerWrapper class
+ //
} else if ($tr.hasClass("sb-footer")) {
mod.selectCursor($tr);
}
@@ -801,6 +825,7 @@ var AIRTIME = (function(AIRTIME){
}
$parent.append($table);
+
}
//order of importance of elements for setting the next timeout.
@@ -825,7 +850,7 @@ var AIRTIME = (function(AIRTIME){
mod.timeout = setTimeout(function() {mod.refresh(aData.id)}, refreshInterval); //need refresh in milliseconds
break;
}
- }
+ }*/
mod.checkToolBarIcons();
},
@@ -957,9 +982,9 @@ var AIRTIME = (function(AIRTIME){
//item was reordered.
else {
- ui.item
- .empty()
- .after(draggingContainer.html());
+ //ui.item
+ // .empty()
+ // .after(draggingContainer.html());
aItemData.push(ui.item.data("aData"));
fnMove();
@@ -968,9 +993,10 @@ var AIRTIME = (function(AIRTIME){
return {
placeholder: "sb-placeholder ui-state-highlight",
- forcePlaceholderSize: true,
+ //forcePlaceholderSize: true,
distance: 10,
- helper: function(event, item) {
+ helper:
+ function(event, item) {
var selected = mod.getSelectedData(NOW_PLAYING_CLASS),
thead = $("#show_builder_table thead"),
colspan = thead.find("th").length,
@@ -985,23 +1011,24 @@ var AIRTIME = (function(AIRTIME){
}
if (selected.length === 1) {
- message = $.i18n._("Moving 1 Item");
+ //message = $.i18n._("Moving 1 Item");
+ draggingContainer = item;
}
else {
message = sprintf($.i18n._("Moving %s Items"), selected.length);
- }
-
- draggingContainer = $('