diff --git a/airtime_mvc/application/models/MusicDir.php b/airtime_mvc/application/models/MusicDir.php index 3c8b64e01..70609fad3 100644 --- a/airtime_mvc/application/models/MusicDir.php +++ b/airtime_mvc/application/models/MusicDir.php @@ -82,17 +82,9 @@ class Application_Model_MusicDir { $show_instances = $con->query($sql)->fetchAll(); // get all the files on this dir - $sql = "SELECT f.id FROM cc_music_dirs as md " - ." LEFT JOIN cc_files as f on f.directory = md.id WHERE md.id = $music_dir_id"; - $files = $con->query($sql)->fetchAll(); - - // set file_exist flag to false - foreach ($files as $file_row) { - $temp_file = Application_Model_StoredFile::Recall($file_row['id']); - if($temp_file != null){ - $temp_file->setFileExistsFlag(false); - } - } + $sql = "UPDATE cc_files SET file_exists = 'f' WHERE id IN (SELECT f.id FROM cc_music_dirs as md " + ." LEFT JOIN cc_files as f on f.directory = md.id WHERE md.id = $music_dir_id)"; + $affected = $con->exec($sql); // set RemovedFlag to true if ($userAddedWatchedDir) { @@ -399,14 +391,16 @@ class Application_Model_MusicDir { * otherwise, it will set "Exists" flag to true **/ public static function removeWatchedDir($p_dir, $userAddedWatchedDir=true){ + + //make sure that $p_dir has a trailing "/" $real_path = Application_Common_OsPath::normpath($p_dir)."/"; if($real_path != "/"){ $p_dir = $real_path; } $dir = Application_Model_MusicDir::getDirByPath($p_dir); - if($dir == NULL){ - return array("code"=>1,"error"=>"'$p_dir' doesn't exist in the watched list."); - }else{ + if (is_null($dir)) { + return array("code"=>1, "error"=>"'$p_dir' doesn't exist in the watched list."); + } else { $dir->remove($userAddedWatchedDir); $data = array(); $data["directory"] = $p_dir; diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index 81d449ee6..54168bced 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -618,7 +618,7 @@ class Application_Model_Preference if (defined('APPLICATION_ENV') && APPLICATION_ENV == "development" && function_exists('exec')){ $version = exec("git rev-parse --short HEAD 2>/dev/null", $out, $return_code); if ($return_code == 0){ - return self::GetValue("system_version")."+".$version; + return self::GetValue("system_version")."+".$version.":".time(); } } return self::GetValue("system_version"); diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php index d69e28e19..ccee5525c 100644 --- a/airtime_mvc/application/models/StoredFile.php +++ b/airtime_mvc/application/models/StoredFile.php @@ -890,8 +890,7 @@ Logging::log("getting media! - 2"); exec($command, $output, $rv); if ($rv != 0 || (!empty($output) && $output[0] == 'TagLib: MPEG::Properties::read() -- Could not find a valid last MPEG frame in the stream.')) { $result = array("code" => 110, "message" => "This file appears to be corrupted and will not be added to media library."); - } - else { + } else { //Martin K.: changed to rename: Much less load + quicker since this is an atomic operation $r = @rename($audio_file, $audio_stor); diff --git a/airtime_mvc/public/js/airtime/showbuilder/builder.js b/airtime_mvc/public/js/airtime/showbuilder/builder.js index f0a02be81..0ea7b943d 100644 --- a/airtime_mvc/public/js/airtime/showbuilder/builder.js +++ b/airtime_mvc/public/js/airtime/showbuilder/builder.js @@ -8,7 +8,9 @@ var AIRTIME = (function(AIRTIME){ $sbTable, $toolbar, $ul, - $lib; + $lib, + cursors = [], + cursorIds = []; if (AIRTIME.showbuilder === undefined) { AIRTIME.showbuilder = {}; @@ -127,7 +129,7 @@ var AIRTIME = (function(AIRTIME){ }; mod.selectCursor = function($el) { - + $el.addClass(CURSOR_SELECTED_CLASS); mod.checkToolBarIcons(); }; @@ -208,11 +210,16 @@ var AIRTIME = (function(AIRTIME){ mod.fnItemCallback = function(json) { checkError(json); + + cursors = $(".cursor-selected-row"); + for (i = 0; i < cursors.length; i++) { + cursorIds.push(($(cursors.get(i)).attr("id"))); + } oSchedTable.fnDraw(); mod.enableUI(); }; - + mod.fnAdd = function(aMediaIds, aSchedIds) { mod.disableUI(); @@ -401,7 +408,6 @@ var AIRTIME = (function(AIRTIME){ headerIcon; fnPrepareSeparatorRow = function fnPrepareSeparatorRow(sRowContent, sClass, iNodeIndex) { - $node = $(nRow.children[iNodeIndex]); $node.html(sRowContent); $node.attr('colspan',100); @@ -413,7 +419,9 @@ var AIRTIME = (function(AIRTIME){ $nRow.addClass(sClass); }; - + + $nRow.attr("id", aData.id); + if (aData.header === true) { //remove the column classes from all tds. $nRow.find('td').removeClass(); @@ -615,6 +623,7 @@ var AIRTIME = (function(AIRTIME){ $cursorRows, $table = $(this), $parent = $table.parent(), + $tr, //use this array to cache DOM heights then we can detach the table to manipulate it to increase speed. heights = []; @@ -653,8 +662,16 @@ var AIRTIME = (function(AIRTIME){ }); $td.append(markerDiv).wrapInner(wrapperDiv); + } + //re-highlight selected cursors before draw took place + for (i = 0; i < cursorIds.length; i++) { + $tr = $table.find("tr[id="+cursorIds[i]+"]"); + mod.selectCursor($tr); + } + cursorIds = []; + //if there is only 1 cursor on the page highlight it by default. if ($cursorRows.length === 1) { $td = $cursorRows.find("td:first"); diff --git a/airtime_mvc/public/js/airtime/showbuilder/main_builder.js b/airtime_mvc/public/js/airtime/showbuilder/main_builder.js index ca007e69c..c474e49df 100644 --- a/airtime_mvc/public/js/airtime/showbuilder/main_builder.js +++ b/airtime_mvc/public/js/airtime/showbuilder/main_builder.js @@ -30,7 +30,7 @@ AIRTIME = (function(AIRTIME) { oBaseDatePickerSettings = { dateFormat: 'yy-mm-dd', - onSelect: function(sDate, oDatePicker) { + onClick: function(sDate, oDatePicker) { $(this).datepicker( "setDate", sDate ); } }; @@ -277,4 +277,4 @@ AIRTIME = (function(AIRTIME) { } (AIRTIME || {})); $(document).ready(AIRTIME.builderMain.onReady); -$(window).resize(AIRTIME.builderMain.onResize); \ No newline at end of file +$(window).resize(AIRTIME.builderMain.onResize);