From 1afdcb8c2d20ad3bf4c22b5c10bf98b6a8f5a429 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 14:05:40 -0400 Subject: [PATCH 01/52] Shortened an if statement to p ? x : y --- airtime_mvc/application/models/Datatables.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/airtime_mvc/application/models/Datatables.php b/airtime_mvc/application/models/Datatables.php index 6560925de..016ff0362 100644 --- a/airtime_mvc/application/models/Datatables.php +++ b/airtime_mvc/application/models/Datatables.php @@ -192,12 +192,8 @@ class Application_Model_Datatables $r['length'] = $pl->getLength(); } elseif ($r['ftype'] == "block") { $bl = new Application_Model_Block($r['id']); - if ($bl->isStatic()) { - $r['bl_type'] = 'static'; - } else { - $r['bl_type'] = 'dynamic'; - } - $r['length'] = $bl->getLength(); + $r['bl_type'] = $bl->isStatic() ? 'static' : 'dynamic'; + $r['length'] = $bl->getLength(); } } } From 1304111682842c91aeef7a815d3b42fcf815aac8 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 14:10:13 -0400 Subject: [PATCH 02/52] Shortened code with if -> ? --- airtime_mvc/application/models/Preference.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index 44baf5575..b1a723816 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -909,11 +909,7 @@ class Application_Model_Preference public static function GetDiskQuota() { $val = self::getValue("disk_quota"); - if (strlen($val) == 0) { - $val = "0"; - } - - return $val; + return (strlen($val) == 0) ? 0 : $val; } public static function SetLiveSteamMasterUsername($value) From 57b59a3290fd4d0cb0a331a6d8dd7496dde6d2b9 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 14:33:50 -0400 Subject: [PATCH 03/52] Cleaned up preference.php --- airtime_mvc/application/models/Preference.php | 53 +++++-------------- 1 file changed, 12 insertions(+), 41 deletions(-) diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index b1a723816..82e83abcc 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -226,11 +226,7 @@ class Application_Model_Preference public static function GetDefaultTransitionFade() { $transition_fade = self::getValue("default_transition_fade"); - if ($transition_fade == "") { - $transition_fade = "00.000000"; - } - - return $transition_fade; + return ($transition_fade == "") ? "00.000000" : $transition_fade; } public static function SetStreamLabelFormat($type) @@ -332,11 +328,7 @@ class Application_Model_Preference public static function GetAllow3rdPartyApi() { $val = self::getValue("third_party_api"); - if (strlen($val) == 0) { - return "0"; - } else { - return $val; - } + return (strlen($val) == 0 ) ? "0" : $val; } public static function SetPhone($phone) @@ -447,6 +439,8 @@ class Application_Model_Preference $image = @file_get_contents($imagePath); $image = base64_encode($image); self::setValue("logoImage", $image); + } else { + Logging::warn("Attempting to set imagePath to empty string"); } } @@ -786,11 +780,7 @@ class Application_Model_Preference public static function GetWeekStartDay() { $val = self::getValue("week_start_day"); - if (strlen($val) == 0) { - return "0"; - } else { - return $val; - } + return (strlen($val) == 0) ? "0" : $val; } /** @@ -808,11 +798,7 @@ class Application_Model_Preference public static function GetStreamUpdateTimestemp() { $update_time = self::getValue("stream_update_timestamp"); - if ($update_time == null) { - $update_time = 0; - } - - return $update_time; + return ($update_time == null) ? 0 : $update_time; } public static function GetClientId() @@ -824,6 +810,8 @@ class Application_Model_Preference { if (is_numeric($id)) { self::setValue("client_id", $id); + } else { + Logging::warn("Attempting to set client_id to invalid value: $id"); } } @@ -894,11 +882,7 @@ class Application_Model_Preference public static function GetCalendarTimeInterval() { $val = self::getValue("calendar_time_interval", true /* user specific */); - if (strlen($val) == 0) { - $val = "30"; - } - - return $val; + return (strlen($val) == 0) ? "30" : $val; } public static function SetDiskQuota($value) @@ -940,11 +924,7 @@ class Application_Model_Preference public static function GetSourceStatus($sourcename) { $value = self::getValue($sourcename); - if ($value == null || $value == "false") { - return false; - } else { - return true; - } + return !($value == null || $value == "false"); } public static function SetSourceSwitchStatus($sourcename, $status) @@ -955,11 +935,7 @@ class Application_Model_Preference public static function GetSourceSwitchStatus($sourcename) { $value = self::getValue($sourcename."_switch"); - if ($value == null || $value == "off") { - return "off"; - } else { - return "on"; - } + return ($value == null || $value == "off") ? 'off' : 'on'; } public static function SetMasterDJSourceConnectionURL($value) @@ -1032,12 +1008,7 @@ class Application_Model_Preference public static function GetEnableSystemEmail() { $v = self::getValue("enable_system_email"); - - if ($v === "") { - return 0; - } - - return $v; + return ($v === "") ? 0 : $v; } public static function SetSystemEmail($value) From 6c1d7fedc1a6d2940313a5444292f629627c4ed5 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 14:34:03 -0400 Subject: [PATCH 04/52] Made Loggging::warn proper. --- airtime_mvc/application/logging/Logging.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/airtime_mvc/application/logging/Logging.php b/airtime_mvc/application/logging/Logging.php index 0e2492f53..dfe7e1fbe 100644 --- a/airtime_mvc/application/logging/Logging.php +++ b/airtime_mvc/application/logging/Logging.php @@ -64,7 +64,8 @@ class Logging { $function = $caller['function']; $logger = self::getLogger(); - $logger->info("[$file : $function() : line $line] [WARN] - ".self::toString($p_msg)); + $logger->warn("[$file : $function() : line $line] - " + . self::toString($p_msg)); } public static function debug($p_msg) From 8af91f39011c57f89535d11c6efbc0f6efe7d580 Mon Sep 17 00:00:00 2001 From: denise Date: Tue, 11 Sep 2012 15:02:12 -0400 Subject: [PATCH 05/52] -webstream controller wasn't setting webstream object properly --- airtime_mvc/application/controllers/WebstreamController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airtime_mvc/application/controllers/WebstreamController.php b/airtime_mvc/application/controllers/WebstreamController.php index 1a9f6e67c..d0b1ebf42 100644 --- a/airtime_mvc/application/controllers/WebstreamController.php +++ b/airtime_mvc/application/controllers/WebstreamController.php @@ -50,7 +50,7 @@ class WebstreamController extends Zend_Controller_Action //clear the session in case an old playlist was open: CC-4196 Application_Model_Library::changePlaylist(null, null); - $this->view->obj = new Application_Model_Webstream($webstream); + $this->view->obj = new Application_Model_Webstream($webstream->getDbId()); $this->view->action = "new"; $this->view->html = $this->view->render('webstream/webstream.phtml'); } From 1ba24a8d0b02d853da102d106459a20ed6bd53e9 Mon Sep 17 00:00:00 2001 From: James Date: Tue, 11 Sep 2012 15:09:57 -0400 Subject: [PATCH 06/52] CC-4353: Numeric search fields in Library would benefit from format labels - done --- airtime_mvc/public/js/airtime/library/library.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js index 78efad4ed..680c33144 100644 --- a/airtime_mvc/public/js/airtime/library/library.js +++ b/airtime_mvc/public/js/airtime/library/library.js @@ -350,10 +350,22 @@ var AIRTIME = (function(AIRTIME) { $.each(aoCols, function(i,ele){ if (ele.bSearchable) { var currentColId = ele._ColReorder_iOrigCol; + var label = ""; + console.log(ele); + if (ele.mDataProp == "bit_rate") { + label = " (bps)"; + } else if (ele.mDataProp == "utime" || ele.mDataPro == "mtime" || ele.mDataPro == "lptime") { + label = " (yyyy-mm-dd)"; + } else if (ele.mDataProp == "length") { + label = " (hh:mm:ss.t)"; + } else if (ele.mDataProp == "sample_rate") { + label = " (Hz)"; + } + if (ele.bVisible) { - advanceSearchDiv.append("
"+ele.sTitle+" :
"); + advanceSearchDiv.append("
"+ele.sTitle+label+" :
"); } else { - advanceSearchDiv.append(""); + advanceSearchDiv.append(""); } if (criteriaTypes[ele.mDataProp] == "s") { var obj = { sSelector: "#"+ele.mDataProp } From bc355fe7a7d843ba65db14948316ea8d57db7f45 Mon Sep 17 00:00:00 2001 From: denise Date: Tue, 11 Sep 2012 15:10:30 -0400 Subject: [PATCH 07/52] - webstream controller wasn't assigning webstream object properly --- airtime_mvc/application/controllers/WebstreamController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airtime_mvc/application/controllers/WebstreamController.php b/airtime_mvc/application/controllers/WebstreamController.php index d0b1ebf42..0a691246f 100644 --- a/airtime_mvc/application/controllers/WebstreamController.php +++ b/airtime_mvc/application/controllers/WebstreamController.php @@ -68,7 +68,7 @@ class WebstreamController extends Zend_Controller_Action if ($webstream) { Application_Model_Library::changePlaylist($id, "stream"); } - $this->view->obj = new Application_Model_Webstream($webstream); + $this->view->obj = new Application_Model_Webstream($webstream->getDbId()); $this->view->action = "edit"; $this->view->html = $this->view->render('webstream/webstream.phtml'); } From 355b0ad35dabcf190dae56af5ae250e6020aac95 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 16:02:39 -0400 Subject: [PATCH 08/52] cc-4292: Initial fix of the MD5 issue. Now MD5's are only collected not really used for anything. Moves are handled completely through paths. --- airtime_mvc/application/controllers/ApiController.php | 7 ++++--- airtime_mvc/application/models/Webstream.php | 2 +- python_apps/media-monitor2/media/monitor/events.py | 11 +++++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index 57b4efddd..5bdbd298a 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -513,11 +513,11 @@ class ApiController extends Zend_Controller_Action $file->setMetadata($md); } } elseif ($mode == "moved") { - $md5 = $md['MDATA_KEY_MD5']; - $file = Application_Model_StoredFile::RecallByMd5($md5); + $file = Application_Model_StoredFile::RecallByFilepath( + $md['MDATA_KEY_ORIGINAL_PATH']); if (is_null($file)) { - return "File doesn't exist in Airtime."; + $return_hash['error'] = 'File does not exist in Airtime'; } else { $filepath = $md['MDATA_KEY_FILEPATH']; //$filepath = str_replace("\\", "", $filepath); @@ -661,6 +661,7 @@ class ApiController extends Zend_Controller_Action } } elseif ($mode == "moved") { $md5 = $md['MDATA_KEY_MD5']; + Logging::info("Original path: {$md['MDATA_KEY_ORIGINAL_PATH']}"); $file = Application_Model_StoredFile::RecallByMd5($md5); if (is_null($file)) { diff --git a/airtime_mvc/application/models/Webstream.php b/airtime_mvc/application/models/Webstream.php index 9b054fa04..838de4235 100644 --- a/airtime_mvc/application/models/Webstream.php +++ b/airtime_mvc/application/models/Webstream.php @@ -46,7 +46,7 @@ class Application_Model_Webstream implements Application_Model_LibraryEditable $di = new DateInterval("PT{$hours}H{$min}M{$sec}S"); return $di->format("%Hh %Im"); - } + } return ""; } diff --git a/python_apps/media-monitor2/media/monitor/events.py b/python_apps/media-monitor2/media/monitor/events.py index 1941ea5b1..88c7c1b30 100644 --- a/python_apps/media-monitor2/media/monitor/events.py +++ b/python_apps/media-monitor2/media/monitor/events.py @@ -110,7 +110,7 @@ class BaseEvent(Loggable): # nothing to see here, please move along def morph_into(self, evt): self.logger.info("Morphing %s into %s" % ( str(self), str(evt) ) ) - self._raw_event = evt + self._raw_event = evt._raw_event self.path = evt.path self.__class__ = evt.__class__ # Clean up old hook and transfer the new events hook @@ -181,11 +181,14 @@ class MoveFile(BaseEvent, HasMetaData): """ def __init__(self, *args, **kwargs): super(MoveFile, self).__init__(*args, **kwargs) + def old_path(self): + return self._raw_event.src_pathname def pack(self): - req_dict = {} - req_dict['mode'] = u'moved' + req_dict = {} + req_dict['mode'] = u'moved' + req_dict['MDATA_KEY_ORIGINAL_PATH'] = self.old_path() + req_dict['MDATA_KEY_FILEPATH'] = unicode( self.path ) req_dict['MDATA_KEY_MD5'] = self.metadata.extract()['MDATA_KEY_MD5'] - req_dict['MDATA_KEY_FILEPATH'] = unicode( self.path ) return [req_dict] class ModifyFile(BaseEvent, HasMetaData): From d95731f2f382915de8ace1c6361b134ce7ed19df Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 16:13:39 -0400 Subject: [PATCH 09/52] Reformatted sql to use heredoc --- airtime_mvc/application/models/StoredFile.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php index e69599ce8..3d1956b8c 100644 --- a/airtime_mvc/application/models/StoredFile.php +++ b/airtime_mvc/application/models/StoredFile.php @@ -1101,10 +1101,14 @@ class Application_Model_StoredFile try { $con = Propel::getConnection(); - $sql = "SELECT soundcloud_id as id, soundcloud_upload_time" - ." FROM CC_FILES" - ." WHERE (id != -2 and id != -3) and" - ." (soundcloud_upload_time >= (now() - (INTERVAL '1 day')))"; + $sql = <<= (now() - (INTERVAL '1 day'))) +SQL; $rows = $con->query($sql)->fetchAll(); From 51d4f35c55404e58335254042d8f54fece6ebba0 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 16:15:15 -0400 Subject: [PATCH 10/52] Removed unused global variable --- airtime_mvc/application/models/StoredFile.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php index 3d1956b8c..92eecca8f 100644 --- a/airtime_mvc/application/models/StoredFile.php +++ b/airtime_mvc/application/models/StoredFile.php @@ -1024,11 +1024,8 @@ class Application_Model_StoredFile public static function getFileCount() { - global $CC_CONFIG; $con = Propel::getConnection(); - $sql = "SELECT count(*) as cnt FROM cc_files WHERE file_exists"; - return $con->query($sql)->fetchColumn(0); } From 0dd38920a35e31942d66de9614451d89e8b16646 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 16:20:59 -0400 Subject: [PATCH 11/52] Cosmetic changes. --- airtime_mvc/application/models/StoredFile.php | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php index 92eecca8f..211c1d9e4 100644 --- a/airtime_mvc/application/models/StoredFile.php +++ b/airtime_mvc/application/models/StoredFile.php @@ -315,12 +315,13 @@ class Application_Model_StoredFile */ public function getPlaylists() { - global $CC_CONFIG; $con = Propel::getConnection(); - $sql = "SELECT playlist_id " - ." FROM cc_playlist" - ." WHERE file_id = :file_id"; + $sql = <<prepare($sql); $stmt->bindParam(':file_id', $this->id, PDO::PARAM_INT); @@ -332,14 +333,13 @@ class Application_Model_StoredFile throw new Exception("Error: $msg"); } - $playlists = array(); if (is_array($ids) && count($ids) > 0) { - foreach ($ids as $id) { - $playlists[] = Application_Model_Playlist::Recall($id); - } + return array_map( function ($id) { + return Application_Model_Playlist::Recall($id); + }, $ids); + } else { + return array(); } - - return $playlists; } /** @@ -593,7 +593,6 @@ class Application_Model_StoredFile public function getName() { $info = pathinfo($this->getFilePath()); - return $info['filename']; } From 728a0dd7368b1fe2e501e5c818a7b667596c2697 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 16:24:59 -0400 Subject: [PATCH 12/52] Added todo documenting slight inefficiency --- airtime_mvc/application/controllers/ApiController.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index 5bdbd298a..a352fd677 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -454,6 +454,8 @@ class ApiController extends Zend_Controller_Action $showCanceled = true; } + // TODO : the following is inefficient because it calls save on both + // fields $file->setMetadataValue('MDATA_KEY_CREATOR', "Airtime Show Recorder"); $file->setMetadataValue('MDATA_KEY_TRACKNUMBER', $show_instance_id); From 72a424bb7ebf9f820c67e14907d6639caed7d749 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 16:25:45 -0400 Subject: [PATCH 13/52] Added todo to fix crust --- airtime_mvc/application/models/StoredFile.php | 1 + 1 file changed, 1 insertion(+) diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php index 211c1d9e4..62f2afc82 100644 --- a/airtime_mvc/application/models/StoredFile.php +++ b/airtime_mvc/application/models/StoredFile.php @@ -226,6 +226,7 @@ class Application_Model_StoredFile return; } if (isset($this->_dbMD[$p_category])) { + // TODO : fix this crust -- RG $propelColumn = $this->_dbMD[$p_category]; $method = "set$propelColumn"; $this->_file->$method($p_value); From b0a7f60b10d8f8a8d132cb60a42098c4d478cdb9 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 16:29:45 -0400 Subject: [PATCH 14/52] Fixed typo --- python_apps/media-monitor2/media/monitor/airtime.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python_apps/media-monitor2/media/monitor/airtime.py b/python_apps/media-monitor2/media/monitor/airtime.py index 1cd81b3dc..5e31dbfe4 100644 --- a/python_apps/media-monitor2/media/monitor/airtime.py +++ b/python_apps/media-monitor2/media/monitor/airtime.py @@ -135,7 +135,7 @@ class AirtimeMessageReceiver(Loggable): msg['directory']) self.new_watch(msg) else: - self.__reFalsequest_now_bootstrap( directory=msg['directory'], + self.__request_now_bootstrap( directory=msg['directory'], all_files=restart) self.manager.add_watch_directory(msg['directory']) From 03d3dc831275fd69320659f8663668fa4ede2621 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 17:03:49 -0400 Subject: [PATCH 15/52] Added good debugging for removed_watch_directory --- python_apps/media-monitor2/media/monitor/manager.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/python_apps/media-monitor2/media/monitor/manager.py b/python_apps/media-monitor2/media/monitor/manager.py index 53599f3cb..78a5c8d92 100644 --- a/python_apps/media-monitor2/media/monitor/manager.py +++ b/python_apps/media-monitor2/media/monitor/manager.py @@ -231,6 +231,8 @@ class Manager(Loggable): else: self.logger.info("'%s' is not being watched, hence cannot be \ removed" % watch_dir) + self.logger.info("The directories we are watching now are:") + self.logger.info( self.__wd_path ) def loop(self): """ From 58d39d74d471bb7d2c37acbd9caf60d4c569034d Mon Sep 17 00:00:00 2001 From: denise Date: Tue, 11 Sep 2012 17:18:17 -0400 Subject: [PATCH 16/52] CC-4355: Smart block criteria do not match library columns or metadata editor -fixed --- .../application/forms/SmartBlockCriteria.php | 43 +++++------ airtime_mvc/application/models/Block.php | 72 ++++++++++--------- airtime_mvc/application/models/StoredFile.php | 4 +- .../public/js/airtime/library/library.js | 13 ++-- .../js/airtime/playlist/smart_blockbuilder.js | 52 +++++++------- 5 files changed, 94 insertions(+), 90 deletions(-) diff --git a/airtime_mvc/application/forms/SmartBlockCriteria.php b/airtime_mvc/application/forms/SmartBlockCriteria.php index 4627b7646..8fc9e52ef 100644 --- a/airtime_mvc/application/forms/SmartBlockCriteria.php +++ b/airtime_mvc/application/forms/SmartBlockCriteria.php @@ -5,12 +5,12 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm 0 => "Select criteria", "album_title" => "Album", "bit_rate" => "Bit Rate (Kbps)", - "bpm" => "Bpm", - "comments" => "Comments", + "bpm" => "BPM", "composer" => "Composer", "conductor" => "Conductor", + "copyright" => "Copyright", "artist_name" => "Creator", - "disc_number" => "Disc Number", + "encoded_by" => "Encoded By", "genre" => "Genre", "isrc_number" => "ISRC", "label" => "Label", @@ -18,44 +18,44 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm "mtime" => "Last Modified", "lptime" => "Last Played", "length" => "Length", - "lyricist" => "Lyricist", + "mime" => "Mime", "mood" => "Mood", - "name" => "Name", - "orchestra" => "Orchestra", - "rating" => "Rating", + "owner_id" => "Owner", + "replay_gain" => "Replay Gain", "sample_rate" => "Sample Rate (kHz)", "track_title" => "Title", "track_number" => "Track Number", "utime" => "Uploaded", + "info_url" => "Website", "year" => "Year" ); private $criteriaTypes = array( 0 => "", "album_title" => "s", - "artist_name" => "s", "bit_rate" => "n", "bpm" => "n", - "comments" => "s", "composer" => "s", "conductor" => "s", + "copyright" => "s", + "artist_name" => "s", + "encoded_by" => "s", "utime" => "n", "mtime" => "n", "lptime" => "n", - "disc_number" => "n", "genre" => "s", "isrc_number" => "s", "label" => "s", "language" => "s", "length" => "n", - "lyricist" => "s", + "mime" => "s", "mood" => "s", - "name" => "s", - "orchestra" => "s", - "rating" => "n", + "owner_id" => "s", + "replay_gain" => "n", "sample_rate" => "n", "track_title" => "s", "track_number" => "n", + "info_url" => "s", "year" => "n" ); @@ -382,23 +382,23 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm "artist_name" => "DbArtistName", "bit_rate" => "DbBitRate", "bpm" => "DbBpm", - "comments" => "DbComments", "composer" => "DbComposer", "conductor" => "DbConductor", + "copyright" => "DbCopyright", + "encoded_by" => "DbEncodedBy", "utime" => "DbUtime", "mtime" => "DbMtime", "lptime" => "DbLPtime", - "disc_number" => "DbDiscNumber", "genre" => "DbGenre", + "info_url" => "DbInfoUrl", "isrc_number" => "DbIsrcNumber", "label" => "DbLabel", "language" => "DbLanguage", "length" => "DbLength", - "lyricist" => "DbLyricist", + "mime" => "DbMime", "mood" => "DbMood", - "name" => "DbName", - "orchestra" => "DbOrchestra", - "rating" => "DbRating", + "owner_id" => "DbOwnerId", + "replay_gain" => "DbReplayGain", "sample_rate" => "DbSampleRate", "track_title" => "DbTrackTitle", "track_number" => "DbTrackNumber", @@ -489,7 +489,8 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm } } } - } elseif ($column->getType() == PropelColumnTypes::INTEGER) { + } elseif ($column->getType() == PropelColumnTypes::INTEGER && + $d['sp_criteria_field'] != 'owner_id') { if (!is_numeric($d['sp_criteria_value'])) { $element->addError("The value has to be numeric"); $isValid = false; diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index dc05ab5a0..4c69f9fca 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -60,23 +60,23 @@ class Application_Model_Block implements Application_Model_LibraryEditable "artist_name" => "DbArtistName", "bit_rate" => "DbBitRate", "bpm" => "DbBpm", - "comments" => "DbComments", "composer" => "DbComposer", "conductor" => "DbConductor", + "copyright" => "DbCopyright", + "encoded_by" => "DbEncodedBy", "utime" => "DbUtime", "mtime" => "DbMtime", "lptime" => "DbLPtime", - "disc_number" => "DbDiscNumber", "genre" => "DbGenre", + "info_url" => "DbInfoUrl", "isrc_number" => "DbIsrcNumber", "label" => "DbLabel", "language" => "DbLanguage", "length" => "DbLength", - "lyricist" => "DbLyricist", + "mime" => "DbMime", "mood" => "DbMood", - "name" => "DbName", - "orchestra" => "DbOrchestra", - "rating" => "DbRating", + "owner_id" => "DbOwnerId", + "replay_gain" => "DbReplayGain", "sample_rate" => "DbSampleRate", "track_title" => "DbTrackTitle", "track_number" => "DbTrackNumber", @@ -325,7 +325,7 @@ EOT; { $sql = "SELECT SUM(cliplength) as length FROM cc_blockcontents WHERE block_id = :block_id"; $result = Application_Common_Database::prepareAndExecute($sql, array(':block_id'=>$this->id), 'all', PDO::FETCH_NUM); - Logging::info($result); + //Logging::info($result); return $result[0][0]; } @@ -1049,7 +1049,7 @@ EOT; { // delete criteria under $p_blockId CcBlockcriteriaQuery::create()->findByDbBlockId($this->id)->delete(); - Logging::info($p_criteriaData); + //Logging::info($p_criteriaData); //insert modifier rows if (isset($p_criteriaData['criteria'])) { $critKeys = array_keys($p_criteriaData['criteria']); @@ -1145,32 +1145,32 @@ EOT; public function getCriteria() { $criteriaOptions = array( - 0 => "Select criteria", - "album_title" => "Album", - "bit_rate" => "Bit Rate", - "bpm" => "Bpm", - "comments" => "Comments", - "composer" => "Composer", - "conductor" => "Conductor", - "artist_name" => "Creator", - "disc_number" => "Disc Number", - "genre" => "Genre", - "isrc_number" => "ISRC", - "label" => "Label", - "language" => "Language", - "mtime" => "Last Modified", - "lptime" => "Last Played", - "length" => "Length", - "lyricist" => "Lyricist", - "mood" => "Mood", - "name" => "Name", - "orchestra" => "Orchestra", - "rating" => "Rating", - "sample_rate" => "Sample Rate", - "track_title" => "Title", + 0 => "Select criteria", + "album_title" => "Album", + "bit_rate" => "Bit Rate (Kbps)", + "bpm" => "BPM", + "composer" => "Composer", + "conductor" => "Conductor", + "copyright" => "Copyright", + "artist_name" => "Creator", + "encoded_by" => "Encoded By", + "genre" => "Genre", + "isrc_number" => "ISRC", + "label" => "Label", + "language" => "Language", + "mtime" => "Last Modified", + "lptime" => "Last Played", + "length" => "Length", + "mime" => "Mime", + "mood" => "Mood", + "owner_id" => "Owner", + "replay_gain" => "Replay Gain", + "sample_rate" => "Sample Rate (kHz)", + "track_title" => "Title", "track_number" => "Track Number", - "utime" => "Uploaded", - "year" => "Year" + "utime" => "Uploaded", + "info_url" => "Website", + "year" => "Year" ); // Load criteria from db @@ -1200,12 +1200,13 @@ EOT; $storedCrit = $this->getCriteria(); $qry = CcFilesQuery::create(); + $qry->useFkOwnerQuery("subj", "left join"); if (isset($storedCrit["crit"])) { foreach ($storedCrit["crit"] as $crit) { $i = 0; foreach ($crit as $criteria) { - $spCriteriaPhpName = self::$criteria2PeerMap[$criteria['criteria']]; + //$spCriteriaPhpName = self::$criteria2PeerMap[$criteria['criteria']]; $spCriteria = $criteria['criteria']; $spCriteriaModifier = $criteria['modifier']; @@ -1274,6 +1275,9 @@ EOT; $spCriteriaModifier = self::$modifier2CriteriaMap[$spCriteriaModifier]; try { + if ($spCriteria == "owner_id") { + $spCriteria = "subj.login"; + } if ($i > 0) { $qry->addOr($spCriteria, $spCriteriaValue, $spCriteriaModifier); } else { diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php index e69599ce8..0e7cf25e4 100644 --- a/airtime_mvc/application/models/StoredFile.php +++ b/airtime_mvc/application/models/StoredFile.php @@ -649,7 +649,7 @@ class Application_Model_StoredFile $displayColumns = array("id", "track_title", "artist_name", "album_title", "genre", "length", "year", "utime", "mtime", "ftype", "track_number", "mood", "bpm", "composer", "info_url", "bit_rate", "sample_rate", "isrc_number", "encoded_by", "label", "copyright", "mime", - "language", "filepath", "owner", "conductor", "replay_gain", "lptime" + "language", "filepath", "owner_id", "conductor", "replay_gain", "lptime" ); //Logging::info($datatables); @@ -680,7 +680,7 @@ class Application_Model_StoredFile $blSelect[] = "login AS ".$key; $fileSelect[] = $key; $streamSelect[] = "login AS ".$key; - } elseif ($key === "owner") { + } elseif ($key === "owner_id") { $plSelect[] = "login AS ".$key; $blSelect[] = "login AS ".$key; $fileSelect[] = "sub.login AS $key"; diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js index 140750762..1055ff87c 100644 --- a/airtime_mvc/public/js/airtime/library/library.js +++ b/airtime_mvc/public/js/airtime/library/library.js @@ -36,7 +36,7 @@ var AIRTIME = (function(AIRTIME) { "track_title" : "s", "track_num" : "n", "year" : "n", - "owner" : "s", + "owner_id" : "s", "replay_gain" : "n" }; @@ -414,20 +414,20 @@ var AIRTIME = (function(AIRTIME) { /* Upload Time */ { "sTitle" : "Uploaded" , "mDataProp" : "utime" , "sClass" : "library_upload_time" , "sWidth" : "125px" } , /* Last Modified */ { "sTitle" : "Last Modified" , "mDataProp" : "mtime" , "bVisible" : false , "sClass" : "library_modified_time" , "sWidth" : "125px" } , /* Last Played */ { "sTitle" : "Last Played " , "mDataProp" : "lptime" , "bVisible" : false , "sClass" : "library_modified_time" , "sWidth" : "125px" } , - /* Track Number */ { "sTitle" : "Track" , "mDataProp" : "track_number" , "bVisible" : false , "sClass" : "library_track" , "sWidth" : "65px" } , + /* Track Number */ { "sTitle" : "Track Number" , "mDataProp" : "track_number" , "bVisible" : false , "sClass" : "library_track" , "sWidth" : "65px" } , /* Mood */ { "sTitle" : "Mood" , "mDataProp" : "mood" , "bVisible" : false , "sClass" : "library_mood" , "sWidth" : "70px" } , /* BPM */ { "sTitle" : "BPM" , "mDataProp" : "bpm" , "bVisible" : false , "sClass" : "library_bpm" , "sWidth" : "50px" } , /* Composer */ { "sTitle" : "Composer" , "mDataProp" : "composer" , "bVisible" : false , "sClass" : "library_composer" , "sWidth" : "150px" } , /* Website */ { "sTitle" : "Website" , "mDataProp" : "info_url" , "bVisible" : false , "sClass" : "library_url" , "sWidth" : "150px" } , /* Bit Rate */ { "sTitle" : "Bit Rate" , "mDataProp" : "bit_rate" , "bVisible" : false , "sClass" : "library_bitrate" , "sWidth" : "80px" } , - /* Sample Rate */ { "sTitle" : "Sample" , "mDataProp" : "sample_rate" , "bVisible" : false , "sClass" : "library_sr" , "sWidth" : "80px" } , + /* Sample Rate */ { "sTitle" : "Sample Rate" , "mDataProp" : "sample_rate" , "bVisible" : false , "sClass" : "library_sr" , "sWidth" : "80px" } , /* ISRC Number */ { "sTitle" : "ISRC" , "mDataProp" : "isrc_number" , "bVisible" : false , "sClass" : "library_isrc" , "sWidth" : "150px" } , /* Encoded */ { "sTitle" : "Encoded By" , "mDataProp" : "encoded_by" , "bVisible" : false , "sClass" : "library_encoded" , "sWidth" : "150px" } , /* Label */ { "sTitle" : "Label" , "mDataProp" : "label" , "bVisible" : false , "sClass" : "library_label" , "sWidth" : "125px" } , /* Copyright */ { "sTitle" : "Copyright" , "mDataProp" : "copyright" , "bVisible" : false , "sClass" : "library_copyright" , "sWidth" : "125px" } , /* Mime */ { "sTitle" : "Mime" , "mDataProp" : "mime" , "bVisible" : false , "sClass" : "library_mime" , "sWidth" : "80px" } , /* Language */ { "sTitle" : "Language" , "mDataProp" : "language" , "bVisible" : false , "sClass" : "library_language" , "sWidth" : "125px" } , - /* Owner */ { "sTitle" : "Owner" , "mDataProp" : "owner" , "bVisible" : false , "sClass" : "library_language" , "sWidth" : "125px" } , + /* Owner */ { "sTitle" : "Owner" , "mDataProp" : "owner_id" , "bVisible" : false , "sClass" : "library_language" , "sWidth" : "125px" } , /* Conductor */ { "sTitle" : "Conductor" , "mDataProp" : "conductor" , "bVisible" : false , "sClass" : "library_conductor" , "sWidth" : "125px" }, /* Replay Gain */ { "sTitle" : "Replay Gain" , "mDataProp" : "replay_gain" , "bVisible" : false , "sClass" : "library_language" , "sWidth" : "80px" } ], @@ -1115,13 +1115,12 @@ var validationTypes = { "mood" : "s", "name" : "s", "orchestra" : "s", - "owner" : "s", + "owner_id" : "s", "rating" : "i", "replay_gain" : "n", "sample_rate" : "i", "track_title" : "s", "track_number" : "i", "info_url" : "s", - "year" : "i", - "lptime" : "t" + "year" : "i" }; diff --git a/airtime_mvc/public/js/airtime/playlist/smart_blockbuilder.js b/airtime_mvc/public/js/airtime/playlist/smart_blockbuilder.js index e53c33f81..503e243a8 100644 --- a/airtime_mvc/public/js/airtime/playlist/smart_blockbuilder.js +++ b/airtime_mvc/public/js/airtime/playlist/smart_blockbuilder.js @@ -520,32 +520,32 @@ function disableLoadingIcon() { } var criteriaTypes = { - 0 : "", - "album_title" : "s", - "artist_name" : "s", - "bit_rate" : "n", - "bpm" : "n", - "comments" : "s", - "composer" : "s", - "conductor" : "s", - "utime" : "n", - "mtime" : "n", - "lptime" : "n", - "disc_number" : "n", - "genre" : "s", - "isrc_number" : "s", - "label" : "s", - "language" : "s", - "length" : "n", - "lyricist" : "s", - "mood" : "s", - "name" : "s", - "orchestra" : "s", - "rating" : "n", - "sample_rate" : "n", - "track_title" : "s", - "track_num" : "n", - "year" : "n" + 0 : "", + "album_title" : "s", + "bit_rate" : "n", + "bpm" : "n", + "composer" : "s", + "conductor" : "s", + "copyright" : "s", + "artist_name" : "s", + "encoded_by" : "s", + "utime" : "n", + "mtime" : "n", + "lptime" : "n", + "genre" : "s", + "isrc_number" : "s", + "label" : "s", + "language" : "s", + "length" : "n", + "mime" : "s", + "mood" : "s", + "owner_id" : "s", + "replay_gain" : "n", + "sample_rate" : "n", + "track_title" : "s", + "track_number" : "n", + "info_url" : "s", + "year" : "n" }; var stringCriteriaOptions = { From f1b8ada1e61bc6204b88749efbea713d15f72555 Mon Sep 17 00:00:00 2001 From: denise Date: Tue, 11 Sep 2012 17:19:02 -0400 Subject: [PATCH 17/52] - removed logging --- airtime_mvc/public/js/airtime/library/library.js | 1 - 1 file changed, 1 deletion(-) diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js index 1055ff87c..543ec1e40 100644 --- a/airtime_mvc/public/js/airtime/library/library.js +++ b/airtime_mvc/public/js/airtime/library/library.js @@ -351,7 +351,6 @@ var AIRTIME = (function(AIRTIME) { if (ele.bSearchable) { var currentColId = ele._ColReorder_iOrigCol; var label = ""; - console.log(ele); if (ele.mDataProp == "bit_rate") { label = " (bps)"; } else if (ele.mDataProp == "utime" || ele.mDataPro == "mtime" || ele.mDataPro == "lptime") { From fc8b2096afb0eb1fb86721e9f6c08be39b039d55 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 17:21:20 -0400 Subject: [PATCH 18/52] Added debugging for Clifford --- airtime_mvc/application/controllers/ApiController.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index a352fd677..61b5e7999 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -551,6 +551,11 @@ class ApiController extends Zend_Controller_Action return $return_hash; } + + Logging::info("action: $mode"); + Logging::info("md: $md"); + + $return_hash['fileid'] = $file->getId(); return $return_hash; From b8db4197175f14ebc33c93d03bb6b0c0c0d00e73 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 17:23:07 -0400 Subject: [PATCH 19/52] All hands for America. Added robust debugging --- airtime_mvc/application/controllers/ApiController.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index 61b5e7999..ade923e5c 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -552,11 +552,13 @@ class ApiController extends Zend_Controller_Action return $return_hash; } - Logging::info("action: $mode"); - Logging::info("md: $md"); + if( !$file ) { + Logging::info("action: $mode"); + Logging::info("md: $md"); + Logging::info("return: $return_hash"); + } - - $return_hash['fileid'] = $file->getId(); + $return_hash['fileid'] = is_null($file) ? '-1' : $file->getId(); return $return_hash; } From cc3ba90ec3639e3f66af1e477c84228ed8d005d6 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 17:32:26 -0400 Subject: [PATCH 20/52] added debugging --- airtime_mvc/application/controllers/ApiController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index ade923e5c..7b38c8a3e 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -554,8 +554,8 @@ class ApiController extends Zend_Controller_Action if( !$file ) { Logging::info("action: $mode"); - Logging::info("md: $md"); - Logging::info("return: $return_hash"); + Logging::info("md: " . print_r($md, true)); + Logging::info('return: ' . print_r($return_hash, true)); } $return_hash['fileid'] = is_null($file) ? '-1' : $file->getId(); From bc5718ec0936cd07c489d8338068760124b6d75e Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 17:39:28 -0400 Subject: [PATCH 21/52] logging removed --- airtime_mvc/application/controllers/ApiController.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index 7b38c8a3e..7a626fca3 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -552,12 +552,6 @@ class ApiController extends Zend_Controller_Action return $return_hash; } - if( !$file ) { - Logging::info("action: $mode"); - Logging::info("md: " . print_r($md, true)); - Logging::info('return: ' . print_r($return_hash, true)); - } - $return_hash['fileid'] = is_null($file) ? '-1' : $file->getId(); return $return_hash; From ceccb547c2df815e0d7ababe6e565e3e18d6aff7 Mon Sep 17 00:00:00 2001 From: denise Date: Tue, 11 Sep 2012 17:39:47 -0400 Subject: [PATCH 22/52] CC-4355: Smart block criteria do not match library columns or metadata editor -put library column filter in alphabetical order to match smart block criteria order --- .../public/js/airtime/library/library.js | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js index 543ec1e40..021f67e60 100644 --- a/airtime_mvc/public/js/airtime/library/library.js +++ b/airtime_mvc/public/js/airtime/library/library.js @@ -404,31 +404,31 @@ var AIRTIME = (function(AIRTIME) { /* ftype */ { "sTitle" : "" , "mDataProp" : "ftype" , "bSearchable" : false , "bVisible" : false } , /* Checkbox */ { "sTitle" : "" , "mDataProp" : "checkbox" , "bSortable" : false , "bSearchable" : false , "sWidth" : "25px" , "sClass" : "library_checkbox" } , /* Type */ { "sTitle" : "" , "mDataProp" : "image" , "bSearchable" : false , "sWidth" : "25px" , "sClass" : "library_type" , "iDataSort" : 0 } , - /* Title */ { "sTitle" : "Title" , "mDataProp" : "track_title" , "sClass" : "library_title" , "sWidth" : "170px" } , - /* Creator */ { "sTitle" : "Creator" , "mDataProp" : "artist_name" , "sClass" : "library_creator" , "sWidth" : "160px" } , /* Album */ { "sTitle" : "Album" , "mDataProp" : "album_title" , "sClass" : "library_album" , "sWidth" : "150px" } , - /* Genre */ { "sTitle" : "Genre" , "mDataProp" : "genre" , "bVisible" : false , "sClass" : "library_genre" , "sWidth" : "100px" } , - /* Year */ { "sTitle" : "Year" , "mDataProp" : "year" , "bVisible" : false , "sClass" : "library_year" , "sWidth" : "60px" } , - /* Length */ { "sTitle" : "Length" , "mDataProp" : "length" , "sClass" : "library_length" , "sWidth" : "80px" } , - /* Upload Time */ { "sTitle" : "Uploaded" , "mDataProp" : "utime" , "sClass" : "library_upload_time" , "sWidth" : "125px" } , - /* Last Modified */ { "sTitle" : "Last Modified" , "mDataProp" : "mtime" , "bVisible" : false , "sClass" : "library_modified_time" , "sWidth" : "125px" } , - /* Last Played */ { "sTitle" : "Last Played " , "mDataProp" : "lptime" , "bVisible" : false , "sClass" : "library_modified_time" , "sWidth" : "125px" } , - /* Track Number */ { "sTitle" : "Track Number" , "mDataProp" : "track_number" , "bVisible" : false , "sClass" : "library_track" , "sWidth" : "65px" } , - /* Mood */ { "sTitle" : "Mood" , "mDataProp" : "mood" , "bVisible" : false , "sClass" : "library_mood" , "sWidth" : "70px" } , - /* BPM */ { "sTitle" : "BPM" , "mDataProp" : "bpm" , "bVisible" : false , "sClass" : "library_bpm" , "sWidth" : "50px" } , - /* Composer */ { "sTitle" : "Composer" , "mDataProp" : "composer" , "bVisible" : false , "sClass" : "library_composer" , "sWidth" : "150px" } , - /* Website */ { "sTitle" : "Website" , "mDataProp" : "info_url" , "bVisible" : false , "sClass" : "library_url" , "sWidth" : "150px" } , /* Bit Rate */ { "sTitle" : "Bit Rate" , "mDataProp" : "bit_rate" , "bVisible" : false , "sClass" : "library_bitrate" , "sWidth" : "80px" } , - /* Sample Rate */ { "sTitle" : "Sample Rate" , "mDataProp" : "sample_rate" , "bVisible" : false , "sClass" : "library_sr" , "sWidth" : "80px" } , - /* ISRC Number */ { "sTitle" : "ISRC" , "mDataProp" : "isrc_number" , "bVisible" : false , "sClass" : "library_isrc" , "sWidth" : "150px" } , - /* Encoded */ { "sTitle" : "Encoded By" , "mDataProp" : "encoded_by" , "bVisible" : false , "sClass" : "library_encoded" , "sWidth" : "150px" } , - /* Label */ { "sTitle" : "Label" , "mDataProp" : "label" , "bVisible" : false , "sClass" : "library_label" , "sWidth" : "125px" } , + /* BPM */ { "sTitle" : "BPM" , "mDataProp" : "bpm" , "bVisible" : false , "sClass" : "library_bpm" , "sWidth" : "50px" } , + /* Composer */ { "sTitle" : "Composer" , "mDataProp" : "composer" , "bVisible" : false , "sClass" : "library_composer" , "sWidth" : "150px" } , + /* Conductor */ { "sTitle" : "Conductor" , "mDataProp" : "conductor" , "bVisible" : false , "sClass" : "library_conductor" , "sWidth" : "125px" }, /* Copyright */ { "sTitle" : "Copyright" , "mDataProp" : "copyright" , "bVisible" : false , "sClass" : "library_copyright" , "sWidth" : "125px" } , - /* Mime */ { "sTitle" : "Mime" , "mDataProp" : "mime" , "bVisible" : false , "sClass" : "library_mime" , "sWidth" : "80px" } , + /* Creator */ { "sTitle" : "Creator" , "mDataProp" : "artist_name" , "sClass" : "library_creator" , "sWidth" : "160px" } , + /* Encoded */ { "sTitle" : "Encoded By" , "mDataProp" : "encoded_by" , "bVisible" : false , "sClass" : "library_encoded" , "sWidth" : "150px" } , + /* Genre */ { "sTitle" : "Genre" , "mDataProp" : "genre" , "bVisible" : false , "sClass" : "library_genre" , "sWidth" : "100px" } , + /* ISRC Number */ { "sTitle" : "ISRC" , "mDataProp" : "isrc_number" , "bVisible" : false , "sClass" : "library_isrc" , "sWidth" : "150px" } , + /* Label */ { "sTitle" : "Label" , "mDataProp" : "label" , "bVisible" : false , "sClass" : "library_label" , "sWidth" : "125px" } , /* Language */ { "sTitle" : "Language" , "mDataProp" : "language" , "bVisible" : false , "sClass" : "library_language" , "sWidth" : "125px" } , - /* Owner */ { "sTitle" : "Owner" , "mDataProp" : "owner_id" , "bVisible" : false , "sClass" : "library_language" , "sWidth" : "125px" } , - /* Conductor */ { "sTitle" : "Conductor" , "mDataProp" : "conductor" , "bVisible" : false , "sClass" : "library_conductor" , "sWidth" : "125px" }, - /* Replay Gain */ { "sTitle" : "Replay Gain" , "mDataProp" : "replay_gain" , "bVisible" : false , "sClass" : "library_language" , "sWidth" : "80px" } + /* Last Modified */ { "sTitle" : "Last Modified" , "mDataProp" : "mtime" , "bVisible" : false , "sClass" : "library_modified_time" , "sWidth" : "125px" } , + /* Last Played */ { "sTitle" : "Last Played " , "mDataProp" : "lptime" , "bVisible" : false , "sClass" : "library_modified_time" , "sWidth" : "125px" } , + /* Length */ { "sTitle" : "Length" , "mDataProp" : "length" , "sClass" : "library_length" , "sWidth" : "80px" } , + /* Mime */ { "sTitle" : "Mime" , "mDataProp" : "mime" , "bVisible" : false , "sClass" : "library_mime" , "sWidth" : "80px" } , + /* Mood */ { "sTitle" : "Mood" , "mDataProp" : "mood" , "bVisible" : false , "sClass" : "library_mood" , "sWidth" : "70px" } , + /* Owner */ { "sTitle" : "Owner" , "mDataProp" : "owner_id" , "bVisible" : false , "sClass" : "library_language" , "sWidth" : "125px" } , + /* Replay Gain */ { "sTitle" : "Replay Gain" , "mDataProp" : "replay_gain" , "bVisible" : false , "sClass" : "library_replay_gain" , "sWidth" : "80px" }, + /* Sample Rate */ { "sTitle" : "Sample Rate" , "mDataProp" : "sample_rate" , "bVisible" : false , "sClass" : "library_sr" , "sWidth" : "80px" } , + /* Title */ { "sTitle" : "Title" , "mDataProp" : "track_title" , "sClass" : "library_title" , "sWidth" : "170px" } , + /* Track Number */ { "sTitle" : "Track Number" , "mDataProp" : "track_number" , "bVisible" : false , "sClass" : "library_track" , "sWidth" : "65px" } , + /* Upload Time */ { "sTitle" : "Uploaded" , "mDataProp" : "utime" , "sClass" : "library_upload_time" , "sWidth" : "125px" } , + /* Website */ { "sTitle" : "Website" , "mDataProp" : "info_url" , "bVisible" : false , "sClass" : "library_url" , "sWidth" : "150px" } , + /* Year */ { "sTitle" : "Year" , "mDataProp" : "year" , "bVisible" : false , "sClass" : "library_year" , "sWidth" : "60px" } ], "bProcessing": true, From dc91db1f4690092698a472ee924bcbbbc5e19a25 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 17:48:08 -0400 Subject: [PATCH 23/52] formatting --- .../application/controllers/ApiController.php | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index 7a626fca3..96ab1c13f 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -8,33 +8,33 @@ class ApiController extends Zend_Controller_Action $this->checkAuth(); /* Initialize action controller here */ $context = $this->_helper->getHelper('contextSwitch'); - $context->addActionContext('version', 'json') - ->addActionContext('recorded-shows', 'json') - ->addActionContext('calendar-init', 'json') - ->addActionContext('upload-file', 'json') - ->addActionContext('upload-recorded', 'json') - ->addActionContext('media-monitor-setup', 'json') - ->addActionContext('media-item-status', 'json') - ->addActionContext('reload-metadata', 'json') - ->addActionContext('list-all-files', 'json') - ->addActionContext('list-all-watched-dirs', 'json') - ->addActionContext('add-watched-dir', 'json') - ->addActionContext('remove-watched-dir', 'json') - ->addActionContext('set-storage-dir', 'json') - ->addActionContext('get-stream-setting', 'json') - ->addActionContext('status', 'json') - ->addActionContext('register-component', 'json') - ->addActionContext('update-liquidsoap-status', 'json') - ->addActionContext('live-chat', 'json') - ->addActionContext('update-file-system-mount', 'json') - ->addActionContext('handle-watched-dir-missing', 'json') - ->addActionContext('rabbitmq-do-push', 'json') - ->addActionContext('check-live-stream-auth', 'json') - ->addActionContext('update-source-status', 'json') - ->addActionContext('get-bootstrap-info', 'json') - ->addActionContext('get-files-without-replay-gain', 'json') - ->addActionContext('reload-metadata-group', 'json') - ->addActionContext('notify-webstream-data', 'json') + $context->addActionContext('version' , 'json') + ->addActionContext('recorded-shows' , 'json') + ->addActionContext('calendar-init' , 'json') + ->addActionContext('upload-file' , 'json') + ->addActionContext('upload-recorded' , 'json') + ->addActionContext('media-monitor-setup' , 'json') + ->addActionContext('media-item-status' , 'json') + ->addActionContext('reload-metadata' , 'json') + ->addActionContext('list-all-files' , 'json') + ->addActionContext('list-all-watched-dirs' , 'json') + ->addActionContext('add-watched-dir' , 'json') + ->addActionContext('remove-watched-dir' , 'json') + ->addActionContext('set-storage-dir' , 'json') + ->addActionContext('get-stream-setting' , 'json') + ->addActionContext('status' , 'json') + ->addActionContext('register-component' , 'json') + ->addActionContext('update-liquidsoap-status' , 'json') + ->addActionContext('live-chat' , 'json') + ->addActionContext('update-file-system-mount' , 'json') + ->addActionContext('handle-watched-dir-missing' , 'json') + ->addActionContext('rabbitmq-do-push' , 'json') + ->addActionContext('check-live-stream-auth' , 'json') + ->addActionContext('update-source-status' , 'json') + ->addActionContext('get-bootstrap-info' , 'json') + ->addActionContext('get-files-without-replay-gain' , 'json') + ->addActionContext('reload-metadata-group' , 'json') + ->addActionContext('notify-webstream-data' , 'json') ->initContext(); } From e2d69df4a62310d0460bf95550aa97e62513519a Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 17:51:39 -0400 Subject: [PATCH 24/52] Removed unused code --- .../application/controllers/ApiController.php | 106 +----------------- 1 file changed, 6 insertions(+), 100 deletions(-) diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index 96ab1c13f..f29b8e73b 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -73,7 +73,8 @@ class ApiController extends Zend_Controller_Action $this->view->layout()->disableLayout(); $this->_helper->viewRenderer->setNoRender(true); - $jsonStr = json_encode(array("version"=>Application_Model_Preference::GetAirtimeVersion())); + $jsonStr = json_encode( array( + "version" => Application_Model_Preference::GetAirtimeVersion())); echo $jsonStr; } @@ -94,11 +95,11 @@ class ApiController extends Zend_Controller_Action } $this->view->calendarInit = array( - "timestamp" => time(), + "timestamp" => time(), "timezoneOffset" => date("Z"), - "timeScale" => Application_Model_Preference::GetCalendarTimeScale(), - "timeInterval" => Application_Model_Preference::GetCalendarTimeInterval(), - "weekStartDay" => Application_Model_Preference::GetWeekStartDay() + "timeScale" => Application_Model_Preference::GetCalendarTimeScale(), + "timeInterval" => Application_Model_Preference::GetCalendarTimeInterval(), + "weekStartDay" => Application_Model_Preference::GetWeekStartDay() ); } @@ -607,101 +608,6 @@ class ApiController extends Zend_Controller_Action die( json_encode($responses) ); } - public function reloadMetadataAction() - { - $request = $this->getRequest(); - - $mode = $request->getParam('mode'); - $params = $request->getParams(); - - $md = array(); - //extract all file metadata params from the request. - foreach ($params as $key => $value) { - if (preg_match('/^MDATA_KEY/', $key)) { - $md[$key] = $value; - } - } - - Logging::info( $md ); - - // update import timestamp - Application_Model_Preference::SetImportTimestamp(); - if ($mode == "create") { - $filepath = $md['MDATA_KEY_FILEPATH']; - //$filepath = str_replace("\\", "", $filepath); - //$filepath = str_replace("//", "/", $filepath); - $filepath = Application_Common_OsPath::normpath($filepath); - - $file = Application_Model_StoredFile::RecallByFilepath($filepath); - if (is_null($file)) { - $file = Application_Model_StoredFile::Insert($md); - } else { - // path already exist - if ($file->getFileExistsFlag()) { - // file marked as exists - $this->view->error = "File already exists in Airtime."; - - return; - } else { - // file marked as not exists - $file->setFileExistsFlag(true); - $file->setMetadata($md); - } - } - } elseif ($mode == "modify") { - $filepath = $md['MDATA_KEY_FILEPATH']; - //$filepath = str_replace("\\", "", $filepath); - $file = Application_Model_StoredFile::RecallByFilepath($filepath); - - //File is not in database anymore. - if (is_null($file)) { - $this->view->error = "File does not exist in Airtime."; - - return; - } else { - //Updating a metadata change. - $file->setMetadata($md); - } - } elseif ($mode == "moved") { - $md5 = $md['MDATA_KEY_MD5']; - Logging::info("Original path: {$md['MDATA_KEY_ORIGINAL_PATH']}"); - $file = Application_Model_StoredFile::RecallByMd5($md5); - - if (is_null($file)) { - $this->view->error = "File doesn't exist in Airtime."; - - return; - } else { - $filepath = $md['MDATA_KEY_FILEPATH']; - //$filepath = str_replace("\\", "", $filepath); - $file->setFilePath($filepath); - } - } elseif ($mode == "delete") { - $filepath = $md['MDATA_KEY_FILEPATH']; - //$filepath = str_replace("\\", "", $filepath); - $file = Application_Model_StoredFile::RecallByFilepath($filepath); - - if (is_null($file)) { - $this->view->error = "File doesn't exist in Airtime."; - - return; - } else { - $file->deleteByMediaMonitor(); - } - } elseif ($mode == "delete_dir") { - $filepath = $md['MDATA_KEY_FILEPATH']; - //$filepath = str_replace("\\", "", $filepath); - $files = Application_Model_StoredFile::RecallByPartialFilepath($filepath); - - foreach ($files as $file) { - $file->deleteByMediaMonitor(); - } - - return; - } - $this->view->id = $file->getId(); - } - public function listAllFilesAction() { $request = $this->getRequest(); From 77215d175c85eb81d014cdf1ba968e0a4bba372c Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 18:22:12 -0400 Subject: [PATCH 25/52] More verbose exceptions --- airtime_mvc/public/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airtime_mvc/public/index.php b/airtime_mvc/public/index.php index 8bfa58136..d65654e9a 100644 --- a/airtime_mvc/public/index.php +++ b/airtime_mvc/public/index.php @@ -67,6 +67,6 @@ try { echo $e->getTraceAsString(); echo ""; Logging::info($e->getMessage()); - Logging::info($e->getTraceAsString()); + Logging::info($e->getTrace()); } From 975830ff9024b74449044f1bd8387ba833e9b7e7 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 18:22:24 -0400 Subject: [PATCH 26/52] Removed wrong comments --- airtime_mvc/application/controllers/ApiController.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index f29b8e73b..f6aca8937 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -484,11 +484,12 @@ class ApiController extends Zend_Controller_Action public function dispatchMetadata($md, $mode) { - // Replace this compound result in a hash with proper error handling later on $return_hash = array(); Application_Model_Preference::SetImportTimestamp(); //Logging::info("--->Mode: $mode || file: {$md['MDATA_KEY_FILEPATH']} "); //Logging::info( $md ); + + // create also modifies the file if it exists if ($mode == "create") { $filepath = $md['MDATA_KEY_FILEPATH']; $filepath = Application_Common_OsPath::normpath($filepath); From faa04a2f5c4f4302cebd87aead3c6d0cedc9f848 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 11 Sep 2012 18:22:46 -0400 Subject: [PATCH 27/52] Refactored RecallByX --- airtime_mvc/application/models/StoredFile.php | 122 ++++++++++-------- 1 file changed, 70 insertions(+), 52 deletions(-) diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php index 2750e6917..ef921f802 100644 --- a/airtime_mvc/application/models/StoredFile.php +++ b/airtime_mvc/application/models/StoredFile.php @@ -84,6 +84,12 @@ class Application_Model_StoredFile $this->_file->save(); } + public static function createWithFile($f) { + $storedFile = new Application_Model_StoredFile(); + $storedFile->_file = $f; + return $storedFile; + } + /** * Set multiple metadata values using defined metadata constants. * @@ -534,60 +540,61 @@ SQL; return $storedFile; } - /** - * Fetch instance of StoreFile object.
- * Should be supplied with only ONE parameter, all the rest should - * be NULL. - * - * @param int $p_id - * local id - * @param string $p_gunid - TODO: Remove this! - * global unique id of file - * @param string $p_md5sum - * MD5 sum of the file - * @param boolean $exist - * When this is true, it check against only files with file_exist is 'true' - * @return Application_Model_StoredFile|NULL - * Return NULL if the object doesnt exist in the DB. - */ - public static function Recall($p_id=null, $p_gunid=null, $p_md5sum=null, $p_filepath=null, $exist=false) - { - if (isset($p_id)) { - $file = CcFilesQuery::create()->findPK(intval($p_id)); - } elseif (isset($p_md5sum)) { - if ($exist) { - $file = CcFilesQuery::create() - ->filterByDbMd5($p_md5sum) - ->filterByDbFileExists(true) - ->findOne(); - } else { - $file = CcFilesQuery::create() - ->filterByDbMd5($p_md5sum) - ->findOne(); - } - } elseif (isset($p_filepath)) { - $path_info = Application_Model_MusicDir::splitFilePath($p_filepath); + //public static function Recall2($p_id=null, $p_gunid=null, $p_md5sum=null, $p_filepath=null, $exist=false) + //{ + //if (isset($p_id)) { + //$file = CcFilesQuery::create()->findPK(intval($p_id)); + //} elseif (isset($p_md5sum)) { + //if ($exist) { + //$file = CcFilesQuery::create() + //->filterByDbMd5($p_md5sum) + //->filterByDbFileExists(true) + //->findOne(); + //} else { + //$file = CcFilesQuery::create() + //->filterByDbMd5($p_md5sum) + //->findOne(); + //} + //} elseif (isset($p_filepath)) { + //$path_info = Application_Model_MusicDir::splitFilePath($p_filepath); - if (is_null($path_info)) { - return null; - } - $music_dir = Application_Model_MusicDir::getDirByPath($path_info[0]); + //if (is_null($path_info)) { + //return null; + //} + //$music_dir = Application_Model_MusicDir::getDirByPath($path_info[0]); - $file = CcFilesQuery::create() - ->filterByDbDirectory($music_dir->getId()) - ->filterByDbFilepath($path_info[1]) - ->findOne(); + //$file = CcFilesQuery::create() + //->filterByDbDirectory($music_dir->getId()) + //->filterByDbFilepath($path_info[1]) + //->findOne(); + //} else { + //return null; + //} + + //if (isset($file)) { + //$storedFile = new Application_Model_StoredFile(); + //$storedFile->_file = $file; + + //return $storedFile; + //} else { + //return null; + //} + //} + + public static function Recall($p_id=null, $p_gunid=null, $p_md5sum=null, + $p_filepath=null) { + if( isset($p_id ) ) { + $f = CcFilesQuery::create()->findPK(intval($p_id)); + return is_null($f) ? null : self::createWithFile($f); + } elseif ( isset($p_gunid) ) { + throw new Exception("You should never use gunid ($gunid) anymore"); + } elseif ( isset($p_md5sum) ) { + throw new Exception("Searching by md5($p_md5sum) is disabled"); + } elseif ( isset($p_filepath) ) { + return is_null($f) ? null : self::createWithFile( + Application_Model_StoredFile::RecallByFilepath($p_filepath)); } else { - return null; - } - - if (isset($file)) { - $storedFile = new Application_Model_StoredFile(); - $storedFile->_file = $file; - - return $storedFile; - } else { - return null; + throw new Exception("No arguments passsed to Recall"); } } @@ -616,7 +623,18 @@ SQL; */ public static function RecallByFilepath($p_filepath) { - return Application_Model_StoredFile::Recall(null, null, null, $p_filepath); + $path_info = Application_Model_MusicDir::splitFilePath($p_filepath); + + if (is_null($path_info)) { + return null; + } + + $music_dir = Application_Model_MusicDir::getDirByPath($path_info[0]); + $file = CcFilesQuery::create() + ->filterByDbDirectory($music_dir->getId()) + ->filterByDbFilepath($path_info[1]) + ->findOne(); + return is_null($file) ? null : self::createWithFile($file); } public static function RecallByPartialFilepath($partial_path) From 14611781186f00e0ef9bb56ec39de3936c42a3d2 Mon Sep 17 00:00:00 2001 From: denise Date: Wed, 12 Sep 2012 10:46:27 -0400 Subject: [PATCH 28/52] CC-4375: DB Upgrade Error, from 2.0.3 to 2.2 -fixed --- install_minimal/upgrades/airtime-2.2.0/data/upgrade.sql | 2 -- 1 file changed, 2 deletions(-) diff --git a/install_minimal/upgrades/airtime-2.2.0/data/upgrade.sql b/install_minimal/upgrades/airtime-2.2.0/data/upgrade.sql index 4a86dc356..ab129de75 100644 --- a/install_minimal/upgrades/airtime-2.2.0/data/upgrade.sql +++ b/install_minimal/upgrades/airtime-2.2.0/data/upgrade.sql @@ -15,8 +15,6 @@ ALTER TABLE cc_files DROP TABLE cc_access; -DROP SEQUENCE cc_access_id_seq; - CREATE FUNCTION airtime_to_int(chartoconvert character varying) RETURNS integer AS 'SELECT CASE WHEN trim($1) SIMILAR TO ''[0-9]+'' THEN CAST(trim($1) AS integer) ELSE NULL END;' From e0286b112f6dff9b4cd6f6888d7d394e405a5c73 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 12 Sep 2012 11:10:25 -0400 Subject: [PATCH 29/52] cc-4292: Removed unnecessary code related to md5. --- airtime_mvc/application/models/StoredFile.php | 54 +------------------ 1 file changed, 1 insertion(+), 53 deletions(-) diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php index ef921f802..ab17314dc 100644 --- a/airtime_mvc/application/models/StoredFile.php +++ b/airtime_mvc/application/models/StoredFile.php @@ -43,7 +43,7 @@ class Application_Model_StoredFile "bit_rate" => "DbBitRate", "sample_rate" => "DbSampleRate", "mime" => "DbMime", - "md5" => "DbMd5", + //"md5" => "DbMd5", "ftype" => "DbFtype", "language" => "DbLanguage", "replay_gain" => "DbReplayGain", @@ -540,47 +540,6 @@ SQL; return $storedFile; } - //public static function Recall2($p_id=null, $p_gunid=null, $p_md5sum=null, $p_filepath=null, $exist=false) - //{ - //if (isset($p_id)) { - //$file = CcFilesQuery::create()->findPK(intval($p_id)); - //} elseif (isset($p_md5sum)) { - //if ($exist) { - //$file = CcFilesQuery::create() - //->filterByDbMd5($p_md5sum) - //->filterByDbFileExists(true) - //->findOne(); - //} else { - //$file = CcFilesQuery::create() - //->filterByDbMd5($p_md5sum) - //->findOne(); - //} - //} elseif (isset($p_filepath)) { - //$path_info = Application_Model_MusicDir::splitFilePath($p_filepath); - - //if (is_null($path_info)) { - //return null; - //} - //$music_dir = Application_Model_MusicDir::getDirByPath($path_info[0]); - - //$file = CcFilesQuery::create() - //->filterByDbDirectory($music_dir->getId()) - //->filterByDbFilepath($path_info[1]) - //->findOne(); - //} else { - //return null; - //} - - //if (isset($file)) { - //$storedFile = new Application_Model_StoredFile(); - //$storedFile->_file = $file; - - //return $storedFile; - //} else { - //return null; - //} - //} - public static function Recall($p_id=null, $p_gunid=null, $p_md5sum=null, $p_filepath=null) { if( isset($p_id ) ) { @@ -604,17 +563,6 @@ SQL; return $info['filename']; } - /** - * Fetch the Application_Model_StoredFile by looking up the MD5 value. - * - * @param string $p_md5sum - * @return Application_Model_StoredFile|NULL - */ - public static function RecallByMd5($p_md5sum, $exist=false) - { - return Application_Model_StoredFile::Recall(null, null, $p_md5sum, null, $exist); - } - /** * Fetch the Application_Model_StoredFile by looking up its filepath. * From 7b41d94352f822f8c4a31b1437c143e76ecf1438 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 12 Sep 2012 11:31:41 -0400 Subject: [PATCH 30/52] Reforamtted Block.php --- airtime_mvc/application/models/Block.php | 108 +++++++++++++---------- 1 file changed, 61 insertions(+), 47 deletions(-) diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index 4c69f9fca..ba21c8429 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -26,61 +26,61 @@ class Application_Model_Block implements Application_Model_LibraryEditable * info needed to insert a new block element. */ private $blockItem = array( - "id" => "", - "pos" => "", + "id" => "", + "pos" => "", "cliplength" => "", - "cuein" => "00:00:00", - "cueout" => "00:00:00", - "fadein" => "0.0", - "fadeout" => "0.0", + "cuein" => "00:00:00", + "cueout" => "00:00:00", + "fadein" => "0.0", + "fadeout" => "0.0", ); //using propel's phpNames. private $categories = array( - "dc:title" => "Name", - "dc:creator" => "Creator", + "dc:title" => "Name", + "dc:creator" => "Creator", "dc:description" => "Description", "dcterms:extent" => "Length" ); private static $modifier2CriteriaMap = array( - "contains" => Criteria::ILIKE, + "contains" => Criteria::ILIKE, "does not contain" => Criteria::NOT_ILIKE, - "is" => Criteria::EQUAL, - "is not" => Criteria::NOT_EQUAL, - "starts with" => Criteria::ILIKE, - "ends with" => Criteria::ILIKE, - "is greater than" => Criteria::GREATER_THAN, - "is less than" => Criteria::LESS_THAN, - "is in the range" => Criteria::CUSTOM); + "is" => Criteria::EQUAL, + "is not" => Criteria::NOT_EQUAL, + "starts with" => Criteria::ILIKE, + "ends with" => Criteria::ILIKE, + "is greater than" => Criteria::GREATER_THAN, + "is less than" => Criteria::LESS_THAN, + "is in the range" => Criteria::CUSTOM); private static $criteria2PeerMap = array( - 0 => "Select criteria", - "album_title" => "DbAlbumTitle", - "artist_name" => "DbArtistName", - "bit_rate" => "DbBitRate", - "bpm" => "DbBpm", - "composer" => "DbComposer", - "conductor" => "DbConductor", - "copyright" => "DbCopyright", - "encoded_by" => "DbEncodedBy", - "utime" => "DbUtime", - "mtime" => "DbMtime", - "lptime" => "DbLPtime", - "genre" => "DbGenre", - "info_url" => "DbInfoUrl", - "isrc_number" => "DbIsrcNumber", - "label" => "DbLabel", - "language" => "DbLanguage", - "length" => "DbLength", - "mime" => "DbMime", - "mood" => "DbMood", - "owner_id" => "DbOwnerId", - "replay_gain" => "DbReplayGain", - "sample_rate" => "DbSampleRate", - "track_title" => "DbTrackTitle", + 0 => "Select criteria", + "album_title" => "DbAlbumTitle", + "artist_name" => "DbArtistName", + "bit_rate" => "DbBitRate", + "bpm" => "DbBpm", + "composer" => "DbComposer", + "conductor" => "DbConductor", + "copyright" => "DbCopyright", + "encoded_by" => "DbEncodedBy", + "utime" => "DbUtime", + "mtime" => "DbMtime", + "lptime" => "DbLPtime", + "genre" => "DbGenre", + "info_url" => "DbInfoUrl", + "isrc_number" => "DbIsrcNumber", + "label" => "DbLabel", + "language" => "DbLanguage", + "length" => "DbLength", + "mime" => "DbMime", + "mood" => "DbMood", + "owner_id" => "DbOwnerId", + "replay_gain" => "DbReplayGain", + "sample_rate" => "DbSampleRate", + "track_title" => "DbTrackTitle", "track_number" => "DbTrackNumber", - "year" => "DbYear" + "year" => "DbYear" ); public function __construct($id=null, $con=null) @@ -192,12 +192,26 @@ class Application_Model_Block implements Application_Model_LibraryEditable $files = array(); $sql = <<<"EOT" - SELECT pc.id as id, pc.position, pc.cliplength as length, pc.cuein, pc.cueout, pc.fadein, pc.fadeout, bl.type, f.length as orig_length, - f.id as item_id, f.track_title, f.artist_name as creator, f.file_exists as exists, f.filepath as path FROM cc_blockcontents AS pc - LEFT JOIN cc_files AS f ON pc.file_id=f.id - LEFT JOIN cc_block AS bl ON pc.block_id = bl.id - WHERE pc.block_id = :block_id - ORDER BY pc.position; +SELECT pc.id AS id, + pc.position, + pc.cliplength AS LENGTH, + pc.cuein, + pc.cueout, + pc.fadein, + pc.fadeout, + bl.type, + f.LENGTH AS orig_length, + f.id AS item_id, + f.track_title, + f.artist_name AS creator, + f.file_exists AS EXISTS, + f.filepath AS path +FROM cc_blockcontents AS pc +LEFT JOIN cc_files AS f ON pc.file_id=f.id +LEFT JOIN cc_block AS bl ON pc.block_id = bl.id +WHERE pc.block_id = :block_id +ORDER BY pc.position; + EOT; $rows = Application_Common_Database::prepareAndExecute($sql, array(':block_id'=>$this->id)); From d69391d2dda00b241afb4b1b1f5486eb5d122634 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 12 Sep 2012 11:35:28 -0400 Subject: [PATCH 31/52] Formatted Block.php --- airtime_mvc/application/models/Block.php | 48 ++++++++++++------------ 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index ba21c8429..e73250db2 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -304,20 +304,20 @@ EOT; $hour = "00"; if ($modifier == "minutes") { if ($value >59) { - $hour = intval($value/60); + $hour = intval($value/60); $value = $value%60; } } elseif ($modifier == "hours") { $mins = $value * 60; if ($mins >59) { - $hour = intval($mins/60); - $hour = str_pad($hour, 2, "0", STR_PAD_LEFT); + $hour = intval($mins/60); + $hour = str_pad($hour, 2, "0", STR_PAD_LEFT); $value = $mins%60; } } - $hour = str_pad($hour, 2, "0", STR_PAD_LEFT); - $value = str_pad($value, 2, "0", STR_PAD_LEFT); + $hour = str_pad($hour, 2, "0", STR_PAD_LEFT); + $value = str_pad($value, 2, "0", STR_PAD_LEFT); $length = $hour.":".$value.":00"; } @@ -329,7 +329,7 @@ EOT; $result = CcBlockcriteriaQuery::create()->filterByDbBlockId($this->id) ->filterByDbCriteria('limit')->findOne(); $modifier = $result->getDbModifier(); - $value = $result->getDbValue(); + $value = $result->getDbValue(); return array($value, $modifier); } @@ -337,10 +337,12 @@ EOT; // this function returns sum of all track length under this block. public function getStaticLength() { - $sql = "SELECT SUM(cliplength) as length FROM cc_blockcontents WHERE block_id = :block_id"; + $sql = <<$this->id), 'all', PDO::FETCH_NUM); - //Logging::info($result); - return $result[0][0]; } @@ -371,11 +373,11 @@ EOT; $file = CcFilesQuery::create()->findPK($p_item, $this->con); if (isset($file) && $file->getDbFileExists()) { - $entry = $this->blockItem; - $entry["id"] = $file->getDbId(); - $entry["pos"] = $pos; + $entry = $this->blockItem; + $entry["id"] = $file->getDbId(); + $entry["pos"] = $pos; $entry["cliplength"] = $file->getDbLength(); - $entry["cueout"] = $file->getDbLength(); + $entry["cueout"] = $file->getDbLength(); return $entry; } else { @@ -750,10 +752,10 @@ EOT; throw new Exception("Block item does not exist."); } - $oldCueIn = $row->getDBCuein(); + $oldCueIn = $row->getDBCuein(); $oldCueOut = $row->getDbCueout(); - $fadeIn = $row->getDbFadein(); - $fadeOut = $row->getDbFadeout(); + $fadeIn = $row->getDbFadein(); + $fadeOut = $row->getDbFadeout(); $file = $row->getCcFiles($this->con); $origLength = $file->getDbLength(); @@ -1052,11 +1054,7 @@ EOT; public function hasItemLimit() { list($value, $modifier) = $this->getLimitValueAndModifier(); - if ($modifier == 'items') { - return true; - } else { - return false; - } + return ($modifier == 'items'); } public function storeCriteriaIntoDb($p_criteriaData) @@ -1128,12 +1126,12 @@ EOT; public function getListOfFilesUnderLimit() { - $info = $this->getListofFilesMeetCriteria(); - $files = $info['files']; - $limit = $info['limit']; + $info = $this->getListofFilesMeetCriteria(); + $files = $info['files']; + $limit = $info['limit']; $insertList = array(); - $totalTime = 0; + $totalTime = 0; $totalItems = 0; // this moves the pointer to the first element in the collection From 8b433de006c1d0b9029470c6a6fd34fa30131e41 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 12 Sep 2012 11:45:08 -0400 Subject: [PATCH 32/52] Made verbose trace opt out. --- airtime_mvc/public/index.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/airtime_mvc/public/index.php b/airtime_mvc/public/index.php index d65654e9a..f7eff6fed 100644 --- a/airtime_mvc/public/index.php +++ b/airtime_mvc/public/index.php @@ -22,6 +22,9 @@ defined('APPLICATION_PATH') defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); +defined('VERBOSE_STACK_TRACE') + || define('VERBOSE_STACK_TRACE', (getenv('VERBOSE_STACK_TRACE') ? getenv('VERBOSE_STACK_TRACE') : true)); + // Ensure library/ is on include_path set_include_path(implode(PATH_SEPARATOR, array( get_include_path(), @@ -67,6 +70,10 @@ try { echo $e->getTraceAsString(); echo ""; Logging::info($e->getMessage()); - Logging::info($e->getTrace()); + if (VERBOSE_STACK_TRACE) { + Logging::info($e->getTrace()); + } else { + Logging::info($e->getTraceAsString()); + } } From f47593575c1716714a16ab0a793e7376683a05b7 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 12 Sep 2012 11:51:11 -0400 Subject: [PATCH 33/52] switch defaults for verbose stack trace --- airtime_mvc/public/index.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/public/index.php b/airtime_mvc/public/index.php index f7eff6fed..1ba5fec0f 100644 --- a/airtime_mvc/public/index.php +++ b/airtime_mvc/public/index.php @@ -71,9 +71,9 @@ try { echo ""; Logging::info($e->getMessage()); if (VERBOSE_STACK_TRACE) { - Logging::info($e->getTrace()); - } else { Logging::info($e->getTraceAsString()); + } else { + Logging::info($e->getTrace()); } } From 651951292482c5dd4b77ad49fec7b74ccc49cf25 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 12 Sep 2012 11:54:37 -0400 Subject: [PATCH 34/52] fixed array_map over iterable --- airtime_mvc/application/models/Show.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/airtime_mvc/application/models/Show.php b/airtime_mvc/application/models/Show.php index 8214f4c03..96b208231 100644 --- a/airtime_mvc/application/models/Show.php +++ b/airtime_mvc/application/models/Show.php @@ -136,10 +136,10 @@ class Application_Model_Show $hosts = Application_Common_Database::prepareAndExecute( $sql, array( ':show_id' => $this->getId() ), 'all'); - $res = array_map( function($host) { - return $host['first_name']." ".$host['last_name']; - }, $hosts); - + $res = array(); + foreach ($hosts as $host) { + $res[] = $host['first_name']." ".$host['last_name']; + } return $res; } From cebfdd65581d12222f613f439810c44594a3f984 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 12 Sep 2012 11:59:27 -0400 Subject: [PATCH 35/52] Changed sql string to heredoc --- airtime_mvc/application/models/Show.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/airtime_mvc/application/models/Show.php b/airtime_mvc/application/models/Show.php index 96b208231..8de6435f1 100644 --- a/airtime_mvc/application/models/Show.php +++ b/airtime_mvc/application/models/Show.php @@ -147,9 +147,11 @@ class Application_Model_Show { $con = Propel::getConnection(); - $sql = "SELECT subjs_id - FROM cc_show_hosts - WHERE show_id = :show_id"; + $sql = << $this->getId() ), 'all'); From 6d32c03351414525b0a19807af5f4cbae48569cf Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 12 Sep 2012 12:00:53 -0400 Subject: [PATCH 36/52] getHosts() changed sql style --- airtime_mvc/application/models/Show.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/airtime_mvc/application/models/Show.php b/airtime_mvc/application/models/Show.php index 8de6435f1..dbcf76c59 100644 --- a/airtime_mvc/application/models/Show.php +++ b/airtime_mvc/application/models/Show.php @@ -129,9 +129,13 @@ class Application_Model_Show { $con = Propel::getConnection(); - $sql = "SELECT first_name, last_name - FROM cc_show_hosts LEFT JOIN cc_subjs ON cc_show_hosts.subjs_id = cc_subjs.id - WHERE show_id = :show_id"; + $sql = << $this->getId() ), 'all'); From d194ff1809b2280fe2dbde4f6b739cbddfa47f35 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 12 Sep 2012 12:05:03 -0400 Subject: [PATCH 37/52] PDO'd a few things missed before in cancelShow() --- airtime_mvc/application/models/Show.php | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/airtime_mvc/application/models/Show.php b/airtime_mvc/application/models/Show.php index dbcf76c59..bb1ff663c 100644 --- a/airtime_mvc/application/models/Show.php +++ b/airtime_mvc/application/models/Show.php @@ -287,11 +287,16 @@ SQL; ->filterByDbShowId($this->_showId) ->update(array('DbLastShow' => $timeinfo[0])); - $sql = "UPDATE cc_show_instances - SET modified_instance = TRUE - WHERE starts >= '{$day_timestamp}' AND show_id = {$this->_showId}"; + $sql = <<= :dayTimestamp::TIMESTAMP + AND show_id = :showId +SQL; - $con->exec($sql); + Application_Common_Database::prepareAndExecute( $sql, array( + ':dayTimestamp' => $day_timestamp, + ':showId' => $this->getId()), 'execute'); // check if we can safely delete the show $showInstancesRow = CcShowInstancesQuery::create() @@ -300,7 +305,9 @@ SQL; ->findOne(); if (is_null($showInstancesRow)) { - $sql = "DELETE FROM cc_show WHERE id = :show_id"; + $sql = << $this->_showId ), "execute"); $con->exec($sql); From ad75849a6f0cbe50673e06fde51768a752a588c7 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 12 Sep 2012 12:09:38 -0400 Subject: [PATCH 38/52] Fixed array_map over query instances --- airtime_mvc/application/models/Show.php | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/airtime_mvc/application/models/Show.php b/airtime_mvc/application/models/Show.php index bb1ff663c..7b92ea35a 100644 --- a/airtime_mvc/application/models/Show.php +++ b/airtime_mvc/application/models/Show.php @@ -792,9 +792,11 @@ SQL; array( ':showId' => $this->getId(), ':timestamp' => gmdate("Y-m-d H:i:s")), "all"); - return array_map( function($i) { - return $i['id']; - }, $rows); + $res = array(); + foreach ($rows as $r) { + $res[] = $r['id']; + } + return $res; } /* Called when a show's duration is changed (edited). @@ -892,9 +894,11 @@ SQL; { $showDays = CcShowDaysQuery::create()->filterByDbShowId( $this->getId())->find(); - return array_map( function($showDay) { - return $showDay->getDbDay(); - }, $showDays); + $res = array(); + foreach ($showDays as $showDay) { + $res[] = $showDay->getDbDay(); + } + return $res; } /* Only used for shows that aren't repeating. From 845ec23fa37209548b5a86f3eb3e9759e2325bff Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 12 Sep 2012 12:15:47 -0400 Subject: [PATCH 39/52] fixed booboo --- airtime_mvc/application/models/Show.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airtime_mvc/application/models/Show.php b/airtime_mvc/application/models/Show.php index 7b92ea35a..4112303cb 100644 --- a/airtime_mvc/application/models/Show.php +++ b/airtime_mvc/application/models/Show.php @@ -784,7 +784,7 @@ SQL; $sql = << :timestamp::TIMESTAMP AND modified_instance != TRUE SQL; From 195008d1e47ec050409710054b558e1b736a9b52 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 12 Sep 2012 12:16:53 -0400 Subject: [PATCH 40/52] more pdo fix --- airtime_mvc/application/models/Show.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airtime_mvc/application/models/Show.php b/airtime_mvc/application/models/Show.php index 4112303cb..3ecc56b8b 100644 --- a/airtime_mvc/application/models/Show.php +++ b/airtime_mvc/application/models/Show.php @@ -970,7 +970,7 @@ SQL; $sql = << Date: Wed, 12 Sep 2012 12:18:06 -0400 Subject: [PATCH 41/52] Fixed typo --- airtime_mvc/application/models/Show.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/airtime_mvc/application/models/Show.php b/airtime_mvc/application/models/Show.php index 3ecc56b8b..c595fc7da 100644 --- a/airtime_mvc/application/models/Show.php +++ b/airtime_mvc/application/models/Show.php @@ -976,8 +976,8 @@ WHERE date(starts) = date(:timestamp::TIMESTAMP) SQL; try { $row = Application_Common_Database::prepareAndExecute( $sql, - array( 'showId' => $this->getId(), - ':timestamp' => $timestamp ), 'column'); + array( ':showId' => $this->getId(), + ':timestamp' => $timestamp ), 'column'); return CcShowInstancesQuery::create() ->findPk($row); } catch (Exception $e) { From dd68f6d945fe160e1c39c32c5fe772b265594027 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 12 Sep 2012 13:44:20 -0400 Subject: [PATCH 42/52] Changed schedule to use james' helper function --- airtime_mvc/application/models/Schedule.php | 62 +++++++++++---------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/airtime_mvc/application/models/Schedule.php b/airtime_mvc/application/models/Schedule.php index fb8ff7020..e1d2b03f2 100644 --- a/airtime_mvc/application/models/Schedule.php +++ b/airtime_mvc/application/models/Schedule.php @@ -1106,45 +1106,49 @@ SQL; public static function checkOverlappingShows($show_start, $show_end, $update=false, $instanceId=null) { - global $CC_CONFIG; - $overlapping = false; - - $con = Propel::getConnection(); - /* If a show is being edited, exclude it from the query * In both cases (new and edit) we only grab shows that * are scheduled 2 days prior */ //$se = $show_end->format('Y-m-d H:i:s'); if ($update) { - $stmt = $con->prepare("SELECT id, starts, ends FROM {$CC_CONFIG['showInstances']} - where (ends <= :show_end1 - or starts <= :show_end2) - and date(starts) >= (date(:show_end3) - INTERVAL '2 days') - and modified_instance = false and id != :instanceId order by ends"); - - $stmt->execute(array( - ':show_end1' => $show_end->format('Y-m-d H:i:s'), - ':show_end2' => $show_end->format('Y-m-d H:i:s'), - ':show_end3' => $show_end->format('Y-m-d H:i:s'), - ':instanceId' => $instanceId - )); + $sql = <<= (date(:show_end3) - INTERVAL '2 days') + AND modified_instance = FALSE + AND id != :instanceId +ORDER BY ends +SQL; + $rows = Application_Common_Database::prepareAndExecute($sql, array( + ':show_end1' => $show_end->format('Y-m-d H:i:s'), + ':show_end2' => $show_end->format('Y-m-d H:i:s'), + ':show_end3' => $show_end->format('Y-m-d H:i:s'), + ':instanceId' => $instanceId + ), 'all'); } else { - $stmt = $con->prepare("SELECT id, starts, ends FROM - {$CC_CONFIG['showInstances']} - where (ends <= :show_end1 or starts <= :show_end2) - and date(starts) >= (date(:show_end3) - INTERVAL '2 days') - and modified_instance = false order by ends"); + $sql = <<= (date(:show_end3) - INTERVAL '2 days') + AND modified_instance = FALSE +ORDER BY ends +SQL; - $stmt->execute(array( - ':show_end1' => $show_end->format('Y-m-d H:i:s'), - ':show_end2' => $show_end->format('Y-m-d H:i:s'), - ':show_end3' => $show_end->format('Y-m-d H:i:s') - )); + $rows = Application_Common_Database::prepareAndExecute($sql, array( + ':show_end1' => $show_end->format('Y-m-d H:i:s'), + ':show_end2' => $show_end->format('Y-m-d H:i:s'), + ':show_end3' => $show_end->format('Y-m-d H:i:s')), 'all'); } - $rows = $stmt->fetchAll(); - foreach ($rows as $row) { $start = new DateTime($row["starts"], new DateTimeZone('UTC')); $end = new DateTime($row["ends"], new DateTimeZone('UTC')); From 806fd83ccc2e596eb05799a4931a629188b6bc9f Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 12 Sep 2012 14:14:55 -0400 Subject: [PATCH 43/52] Reformatted schedule --- airtime_mvc/application/models/Schedule.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/airtime_mvc/application/models/Schedule.php b/airtime_mvc/application/models/Schedule.php index e1d2b03f2..d922c15af 100644 --- a/airtime_mvc/application/models/Schedule.php +++ b/airtime_mvc/application/models/Schedule.php @@ -942,7 +942,8 @@ SQL; * Another clean-up is to move all the form manipulation to the proper form class..... * -Martin */ - public static function addUpdateShow($data, $controller, $validateStartDate, $originalStartDate=null, $update=false, $instanceId=null) + public static function addUpdateShow($data, $controller, $validateStartDate, + $originalStartDate=null, $update=false, $instanceId=null) { $userInfo = Zend_Auth::getInstance()->getStorage()->read(); $user = new Application_Model_User($userInfo->id); @@ -1076,6 +1077,7 @@ SQL; } } else { if ($isAdminOrPM) { + Logging::info( $data ); Application_Model_Show::create($data); } @@ -1086,12 +1088,12 @@ SQL; return true; } } else { - $controller->view->what = $formWhat; - $controller->view->when = $formWhen; + $controller->view->what = $formWhat; + $controller->view->when = $formWhen; $controller->view->repeats = $formRepeats; - $controller->view->who = $formWho; - $controller->view->style = $formStyle; - $controller->view->live = $formLive; + $controller->view->who = $formWho; + $controller->view->style = $formStyle; + $controller->view->live = $formLive; if (!$isSaas) { $controller->view->rr = $formRecord; @@ -1104,7 +1106,8 @@ SQL; } } - public static function checkOverlappingShows($show_start, $show_end, $update=false, $instanceId=null) + public static function checkOverlappingShows($show_start, $show_end, + $update=false, $instanceId=null) { $overlapping = false; /* If a show is being edited, exclude it from the query From d62ba61ea6a8fb0d0aee66d1066202f2477fd0ef Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 12 Sep 2012 14:19:02 -0400 Subject: [PATCH 44/52] Formatting schedule.php --- airtime_mvc/application/models/Schedule.php | 68 ++++++++++----------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/airtime_mvc/application/models/Schedule.php b/airtime_mvc/application/models/Schedule.php index d922c15af..8a70dc9b6 100644 --- a/airtime_mvc/application/models/Schedule.php +++ b/airtime_mvc/application/models/Schedule.php @@ -626,21 +626,21 @@ SQL; private static function createFileScheduleEvent(&$data, $item, $media_id, $uri) { $start = self::AirtimeTimeToPypoTime($item["start"]); - $end = self::AirtimeTimeToPypoTime($item["end"]); + $end = self::AirtimeTimeToPypoTime($item["end"]); $schedule_item = array( - 'id' => $media_id, - 'type' => 'file', - 'row_id' => $item["id"], - 'uri' => $uri, - 'fade_in' => Application_Model_Schedule::WallTimeToMillisecs($item["fade_in"]), - 'fade_out' => Application_Model_Schedule::WallTimeToMillisecs($item["fade_out"]), - 'cue_in' => Application_Common_DateHelper::CalculateLengthInSeconds($item["cue_in"]), - 'cue_out' => Application_Common_DateHelper::CalculateLengthInSeconds($item["cue_out"]), - 'start' => $start, - 'end' => $end, - 'show_name' => $item["show_name"], - 'replay_gain' => is_null($item["replay_gain"]) ? "0": $item["replay_gain"], + 'id' => $media_id, + 'type' => 'file', + 'row_id' => $item["id"], + 'uri' => $uri, + 'fade_in' => Application_Model_Schedule::WallTimeToMillisecs($item["fade_in"]), + 'fade_out' => Application_Model_Schedule::WallTimeToMillisecs($item["fade_out"]), + 'cue_in' => Application_Common_DateHelper::CalculateLengthInSeconds($item["cue_in"]), + 'cue_out' => Application_Common_DateHelper::CalculateLengthInSeconds($item["cue_out"]), + 'start' => $start, + 'end' => $end, + 'show_name' => $item["show_name"], + 'replay_gain' => is_null($item["replay_gain"]) ? "0": $item["replay_gain"], 'independent_event' => true ); self::appendScheduleItem($data, $start, $schedule_item); @@ -649,7 +649,7 @@ SQL; private static function createStreamScheduleEvent(&$data, $item, $media_id, $uri) { $start = self::AirtimeTimeToPypoTime($item["start"]); - $end = self::AirtimeTimeToPypoTime($item["end"]); + $end = self::AirtimeTimeToPypoTime($item["end"]); //create an event to start stream buffering 5 seconds ahead of the streams actual time. $buffer_start = new DateTime($item["start"], new DateTimeZone('UTC')); @@ -658,24 +658,24 @@ SQL; $stream_buffer_start = self::AirtimeTimeToPypoTime($buffer_start->format("Y-m-d H:i:s")); $schedule_item = array( - 'start' => $stream_buffer_start, - 'end' => $stream_buffer_start, - 'uri' => $uri, - 'row_id' => $item["id"], - 'type' => 'stream_buffer_start', + 'start' => $stream_buffer_start, + 'end' => $stream_buffer_start, + 'uri' => $uri, + 'row_id' => $item["id"], + 'type' => 'stream_buffer_start', 'independent_event' => true ); self::appendScheduleItem($data, $start, $schedule_item); $schedule_item = array( - 'id' => $media_id, - 'type' => 'stream_output_start', - 'row_id' => $item["id"], - 'uri' => $uri, - 'start' => $start, - 'end' => $end, - 'show_name' => $item["show_name"], + 'id' => $media_id, + 'type' => 'stream_output_start', + 'row_id' => $item["id"], + 'uri' => $uri, + 'start' => $start, + 'end' => $end, + 'show_name' => $item["show_name"], 'independent_event' => true ); self::appendScheduleItem($data, $start, $schedule_item); @@ -688,19 +688,19 @@ SQL; $stream_end = self::AirtimeTimeToPypoTime($dt->format("Y-m-d H:i:s")); $schedule_item = array( - 'start' => $stream_end, - 'end' => $stream_end, - 'uri' => $uri, - 'type' => 'stream_buffer_end', + 'start' => $stream_end, + 'end' => $stream_end, + 'uri' => $uri, + 'type' => 'stream_buffer_end', 'independent_event' => true ); self::appendScheduleItem($data, $stream_end, $schedule_item); $schedule_item = array( - 'start' => $stream_end, - 'end' => $stream_end, - 'uri' => $uri, - 'type' => 'stream_output_end', + 'start' => $stream_end, + 'end' => $stream_end, + 'uri' => $uri, + 'type' => 'stream_output_end', 'independent_event' => true ); self::appendScheduleItem($data, $stream_end, $schedule_item); From 54d18b7bcd8e8e9295fd191a34b8cf6543ca4a6c Mon Sep 17 00:00:00 2001 From: denise Date: Wed, 12 Sep 2012 14:27:17 -0400 Subject: [PATCH 45/52] CC-4382: Editing the color of a repeating show gives error message -fixed --- airtime_mvc/application/forms/AddShowWhen.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/airtime_mvc/application/forms/AddShowWhen.php b/airtime_mvc/application/forms/AddShowWhen.php index 53a545dca..e9e0157c4 100644 --- a/airtime_mvc/application/forms/AddShowWhen.php +++ b/airtime_mvc/application/forms/AddShowWhen.php @@ -202,7 +202,20 @@ class Application_Form_AddShowWhen extends Zend_Form_SubForm $repeatShowEnd->add(new DateInterval("P".$daysAdd."D")); } while ($repeatShowStart->getTimestamp() < $populateUntilDateTime->getTimestamp()) { - $overlapping = Application_Model_Schedule::checkOverlappingShows($repeatShowStart, $repeatShowEnd, $update, $instanceId); + //need to get each repeating show's instance id + $qry = CcShowInstancesQuery::create() + ->filterByDbStarts($repeatShowStart->format('Y-m-d H:i:s')) + ->filterByDbEnds($repeatShowEnd->format('Y-m-d H:i:s')) + ->find(); + $count = $qry->count(); + if ($count > 1) { + $overlapping = true; + } elseif ($count == 1) { + $instanceId = $qry->getFirst()->getDbId(); + $overlapping = Application_Model_Schedule::checkOverlappingShows($repeatShowStart, $repeatShowEnd, $update, $instanceId); + } else { + $overlapping = false; + } if ($overlapping) { $valid = false; $this->getElement('add_show_duration')->setErrors(array('Cannot schedule overlapping shows')); From 92532cb708c7f2790e6432aa29942939eeb38022 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 12 Sep 2012 14:54:11 -0400 Subject: [PATCH 46/52] cc-4394: Added m4a --- airtime_mvc/public/js/airtime/library/plupload.js | 10 +++++----- python_apps/media-monitor2/media/monitor/pure.py | 4 +++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/airtime_mvc/public/js/airtime/library/plupload.js b/airtime_mvc/public/js/airtime/library/plupload.js index cd61be802..28190f3ef 100644 --- a/airtime_mvc/public/js/airtime/library/plupload.js +++ b/airtime_mvc/public/js/airtime/library/plupload.js @@ -3,13 +3,13 @@ $(document).ready(function() { $("#plupload_files").pluploadQueue({ // General settings - runtimes : 'gears, html5, html4', - url : '/Plupload/upload/format/json', - chunk_size: '5mb', - unique_names: 'true', + runtimes : 'gears, html5, html4', + url : '/Plupload/upload/format/json', + chunk_size : '5mb', + unique_names : 'true', multiple_queues : 'true', filters : [ - {title: "Audio Files", extensions: "ogg,mp3,oga,flac,aac,wav"} + {title: "Audio Files", extensions: "ogg,mp3,oga,flac,aac,wav,m4a"} ] }); diff --git a/python_apps/media-monitor2/media/monitor/pure.py b/python_apps/media-monitor2/media/monitor/pure.py index 480778ebc..103902001 100644 --- a/python_apps/media-monitor2/media/monitor/pure.py +++ b/python_apps/media-monitor2/media/monitor/pure.py @@ -20,7 +20,9 @@ from configobj import ConfigObj from media.monitor.exceptions import FailedToSetLocale, FailedToCreateDir #supported_extensions = [u"mp3", u"ogg", u"oga"] -supported_extensions = [u"mp3", u"ogg", u"oga", u"flac", u"aac", u"wav"] +supported_extensions = [u"mp3", u"ogg", u"oga", u"flac", u"aac", u"wav", + u'm4a'] + unicode_unknown = u'unknown' path_md = ['MDATA_KEY_TITLE', 'MDATA_KEY_CREATOR', 'MDATA_KEY_SOURCE', From 07ac651f718df7fb4b26b6caab71af8a6e6a5b93 Mon Sep 17 00:00:00 2001 From: denise Date: Wed, 12 Sep 2012 15:09:07 -0400 Subject: [PATCH 47/52] - move title and creator to top of library column view --- airtime_mvc/public/js/airtime/library/library.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js index 021f67e60..bc6aa8c12 100644 --- a/airtime_mvc/public/js/airtime/library/library.js +++ b/airtime_mvc/public/js/airtime/library/library.js @@ -403,14 +403,15 @@ var AIRTIME = (function(AIRTIME) { "aoColumns": [ /* ftype */ { "sTitle" : "" , "mDataProp" : "ftype" , "bSearchable" : false , "bVisible" : false } , /* Checkbox */ { "sTitle" : "" , "mDataProp" : "checkbox" , "bSortable" : false , "bSearchable" : false , "sWidth" : "25px" , "sClass" : "library_checkbox" } , - /* Type */ { "sTitle" : "" , "mDataProp" : "image" , "bSearchable" : false , "sWidth" : "25px" , "sClass" : "library_type" , "iDataSort" : 0 } , + /* Type */ { "sTitle" : "" , "mDataProp" : "image" , "bSearchable" : false , "sWidth" : "25px" , "sClass" : "library_type" , "iDataSort" : 0 } , + /* Title */ { "sTitle" : "Title" , "mDataProp" : "track_title" , "sClass" : "library_title" , "sWidth" : "170px" } , + /* Creator */ { "sTitle" : "Creator" , "mDataProp" : "artist_name" , "sClass" : "library_creator" , "sWidth" : "160px" } , /* Album */ { "sTitle" : "Album" , "mDataProp" : "album_title" , "sClass" : "library_album" , "sWidth" : "150px" } , /* Bit Rate */ { "sTitle" : "Bit Rate" , "mDataProp" : "bit_rate" , "bVisible" : false , "sClass" : "library_bitrate" , "sWidth" : "80px" } , /* BPM */ { "sTitle" : "BPM" , "mDataProp" : "bpm" , "bVisible" : false , "sClass" : "library_bpm" , "sWidth" : "50px" } , /* Composer */ { "sTitle" : "Composer" , "mDataProp" : "composer" , "bVisible" : false , "sClass" : "library_composer" , "sWidth" : "150px" } , /* Conductor */ { "sTitle" : "Conductor" , "mDataProp" : "conductor" , "bVisible" : false , "sClass" : "library_conductor" , "sWidth" : "125px" }, - /* Copyright */ { "sTitle" : "Copyright" , "mDataProp" : "copyright" , "bVisible" : false , "sClass" : "library_copyright" , "sWidth" : "125px" } , - /* Creator */ { "sTitle" : "Creator" , "mDataProp" : "artist_name" , "sClass" : "library_creator" , "sWidth" : "160px" } , + /* Copyright */ { "sTitle" : "Copyright" , "mDataProp" : "copyright" , "bVisible" : false , "sClass" : "library_copyright" , "sWidth" : "125px" } , /* Encoded */ { "sTitle" : "Encoded By" , "mDataProp" : "encoded_by" , "bVisible" : false , "sClass" : "library_encoded" , "sWidth" : "150px" } , /* Genre */ { "sTitle" : "Genre" , "mDataProp" : "genre" , "bVisible" : false , "sClass" : "library_genre" , "sWidth" : "100px" } , /* ISRC Number */ { "sTitle" : "ISRC" , "mDataProp" : "isrc_number" , "bVisible" : false , "sClass" : "library_isrc" , "sWidth" : "150px" } , @@ -423,8 +424,7 @@ var AIRTIME = (function(AIRTIME) { /* Mood */ { "sTitle" : "Mood" , "mDataProp" : "mood" , "bVisible" : false , "sClass" : "library_mood" , "sWidth" : "70px" } , /* Owner */ { "sTitle" : "Owner" , "mDataProp" : "owner_id" , "bVisible" : false , "sClass" : "library_language" , "sWidth" : "125px" } , /* Replay Gain */ { "sTitle" : "Replay Gain" , "mDataProp" : "replay_gain" , "bVisible" : false , "sClass" : "library_replay_gain" , "sWidth" : "80px" }, - /* Sample Rate */ { "sTitle" : "Sample Rate" , "mDataProp" : "sample_rate" , "bVisible" : false , "sClass" : "library_sr" , "sWidth" : "80px" } , - /* Title */ { "sTitle" : "Title" , "mDataProp" : "track_title" , "sClass" : "library_title" , "sWidth" : "170px" } , + /* Sample Rate */ { "sTitle" : "Sample Rate" , "mDataProp" : "sample_rate" , "bVisible" : false , "sClass" : "library_sr" , "sWidth" : "80px" } , /* Track Number */ { "sTitle" : "Track Number" , "mDataProp" : "track_number" , "bVisible" : false , "sClass" : "library_track" , "sWidth" : "65px" } , /* Upload Time */ { "sTitle" : "Uploaded" , "mDataProp" : "utime" , "sClass" : "library_upload_time" , "sWidth" : "125px" } , /* Website */ { "sTitle" : "Website" , "mDataProp" : "info_url" , "bVisible" : false , "sClass" : "library_url" , "sWidth" : "150px" } , From a4326651466f00277d3b494384263f157d41760f Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 12 Sep 2012 15:19:39 -0400 Subject: [PATCH 48/52] Changed to heredoc --- airtime_mvc/application/models/Schedule.php | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/airtime_mvc/application/models/Schedule.php b/airtime_mvc/application/models/Schedule.php index 8a70dc9b6..0e9b07b5f 100644 --- a/airtime_mvc/application/models/Schedule.php +++ b/airtime_mvc/application/models/Schedule.php @@ -559,16 +559,20 @@ SQL; $dt->add(new DateInterval("PT24H")); $range_end = $dt->format("Y-m-d H:i:s"); - $predicates = " WHERE st.ends > :startTime1" - ." AND st.starts < :rangeEnd" - ." AND st.playout_status > 0" - ." AND si.ends > :startTime2" - ." ORDER BY st.starts" - ." LIMIT 3"; + $predicates = << :startTime1 + AND st.starts < :rangeEnd + AND st.playout_status > 0 + AND si.ends > :startTime2 +ORDER BY st.starts LIMIT 3 +SQL; $sql = $baseQuery.$predicates; $rows = Application_Common_Database::prepareAndExecute($sql, - array(':startTime1'=>$p_startTime, ':rangeEnd'=>$range_end, ':startTime2'=>$p_startTime)); + array( + ':startTime1' => $p_startTime, + ':rangeEnd' => $range_end, + ':startTime2' => $p_startTime)); } return $rows; From 77824afdd33060750e216f74f71550159f4ba920 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Wed, 12 Sep 2012 21:23:05 +0200 Subject: [PATCH 49/52] Added Bootstrap CSS, images and JS for new buttons and dropdown menues --- .../public/css/images/icon_smart-block.png | Bin 0 -> 1213 bytes .../public/css/images/icon_webstream.png | Bin 0 -> 1322 bytes .../css/img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes .../public/css/img/glyphicons-halflings.png | Bin 0 -> 12799 bytes airtime_mvc/public/css/img/icon_cut_white.png | Bin 0 -> 1013 bytes airtime_mvc/public/css/media_library.css | 357 +- airtime_mvc/public/css/playlist_builder.css | 9 +- airtime_mvc/public/css/showbuilder.css | 561 +- airtime_mvc/public/css/styles.css | 5800 +++++++++-------- airtime_mvc/public/js/bootstrap/bootstrap.js | 2027 ++++++ .../public/js/bootstrap/bootstrap.min.js | 6 + 11 files changed, 5452 insertions(+), 3308 deletions(-) create mode 100644 airtime_mvc/public/css/images/icon_smart-block.png create mode 100644 airtime_mvc/public/css/images/icon_webstream.png create mode 100644 airtime_mvc/public/css/img/glyphicons-halflings-white.png create mode 100644 airtime_mvc/public/css/img/glyphicons-halflings.png create mode 100644 airtime_mvc/public/css/img/icon_cut_white.png create mode 100644 airtime_mvc/public/js/bootstrap/bootstrap.js create mode 100644 airtime_mvc/public/js/bootstrap/bootstrap.min.js diff --git a/airtime_mvc/public/css/images/icon_smart-block.png b/airtime_mvc/public/css/images/icon_smart-block.png new file mode 100644 index 0000000000000000000000000000000000000000..0a66dfdba7a3a082639a543320e7e24a5c6070f8 GIT binary patch literal 1213 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 B7G?kd literal 0 HcmV?d00001 diff --git a/airtime_mvc/public/css/img/glyphicons-halflings.png b/airtime_mvc/public/css/img/glyphicons-halflings.png new file mode 100644 index 0000000000000000000000000000000000000000..a9969993201f9cee63cf9f49217646347297b643 GIT binary patch literal 12799 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 literal 0 HcmV?d00001 diff --git a/airtime_mvc/public/css/img/icon_cut_white.png b/airtime_mvc/public/css/img/icon_cut_white.png new file mode 100644 index 0000000000000000000000000000000000000000..cd13d0a7cdf69c7314eec23c36cfc1fcf8a63648 GIT binary patch literal 1013 zcmaJ=PiWIn9FB7g8Jh>vsrJUJB)^W@E=7s07`(4&F~LqtTp3WBhMIA6N9^I#20-XFf-_xpbD_r06bQ|G!n z`#LF#>eeTe0vV5zuj@z$`4_I;+95+PR!evW&Eu*WKq_maG6cG7F2Djb?X~4MaD<`` z(@wF3OU8N0LM~&*7$$Ok5=~JfW07xKix7h{TyQ*@{{D2E297P$vx31HejZkwiS+=^ ztWOoK^+hXV(_^DxB$5b$3$Y0zcgYK-NTzGN5}C)_EDdT9yeQNAqDsaz$fE!Pfk`JV zj^}|WGW?(*iu_rS;`kKHkylLegOVUhsUc8*Xp$|k=cR(8)pL=ROjj`WC6=vLt4uY` zpkRUJGnq`xkxC^AA{nlE*o=~1m}oF4Fth^4#}4v9%xIR;3YKZ2biV}GZ_;{U{g}vs zv61PsJj2B$HGqckf2iv=(IGCt1HJzw4vT9(WD77vD}hBCH=l@8`BFZBCPqOKp{2$t zPFD~{VFmdhKO=(EvyNw@YIvrGHw;PlLTq{#)D@W~42Q4~eUe#$fwKy2EkG`)l`J`}wPafI)no0} zT8QQrb+AMX8#nf^MmM&Id*W%+wq(&XKJL7e^LNj?_G1Yxaed&fh97M_zjFEhT;KA&XU8`Omipcb*8BFC=exeP zO+J`h{d~K>-#$g1*c$qoy{P_pGJ0ogmwL4^{_Et8p7A#7PzQD4!$+MR-rkHaqOMLU Jk8^Vye*lN*K<5Ae literal 0 HcmV?d00001 diff --git a/airtime_mvc/public/css/media_library.css b/airtime_mvc/public/css/media_library.css index 2db478196..3b0db5046 100644 --- a/airtime_mvc/public/css/media_library.css +++ b/airtime_mvc/public/css/media_library.css @@ -1,132 +1,225 @@ -.lib-content .fg-toolbar ul { - float: left; - padding: 0; - margin: 0.5em 0 0 10px; - cursor: pointer; -} - -.lib-content .fg-toolbar ul li { - list-style-type: none; - float: left; - padding: 1px 2px; - margin-right: 5px; -} - -.lib-selected.even { - background-color: rgba(240, 109, 53, 1); -} -.lib-selected.odd { - background-color: rgba(255, 136, 56, 1); -} - -#library_content { - float: left; - width: 50%; - overflow: hidden; -} - -#library_display { - /* for breaking up long strings that don't have delimiters */ - table-layout:fixed; -} - -#library_display th { - text-align: left; -} - -#library_content #library_display { - width:100%; -} - -#library_display td { - /* for breaking up long strings that don't have delimiters */ - word-wrap: break-word; -} - -#library_display th, -#library_display td, -.paginationControl { - font-size: 13px; -} - -#library_content .ui-tabs-panel { - padding-top:16px; -} - -.paginationControl { - font-size: 12px; - background-color: #9a9a9a; - background: -moz-linear-gradient(top, #ababab 0, #9a9a9a 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ababab), color-stop(100%, #9a9a9a)); - border:1px solid #5b5b5b; - border-width:0 1px 1px 1px; - padding:12px 8px 8px 8px; -} - -.paginationControl p { - color:#555555; - font-size:12px; - margin:2px 0 10px 0; -} - -.paginationControl .ui-button-text-only .ui-button-text { - padding: 0.2em 1em; -} - -#library_display td { - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - user-select: none; -} - -.datatable_checkbox { - text-align: center; -} - -.datatable_checkbox .DataTables_sort_wrapper { - text-align: center; -} - -.library_year { - text-align: center; -} - -td.library_track, -td.library_sr, -td.library_bitrate { - text-align: right; -} - -.library_import { - padding-bottom: 5px; -} - -.library_import img { - vertical-align: middle; - padding-left: 5px; -} - - -.file_type { - width:16px; - height:13px; - display:block; - background-image: url(images/filetype_icons.png); - background-repeat:no-repeat; - } - .file_type.audioclip { - background-position: 0 0; - } - a.file_type.audioclip:hover { - background-position: 0 -15px; - } - .file_type.playlist { - background-position: -20px 0; - } - a.file_type.playlist:hover { - background-position: -20px -15px; - } - - +.lib-content .fg-toolbar ul { + float: left; + padding: 0; + margin: 0.5em 0 0 10px; + cursor: pointer; +} + +.lib-content .fg-toolbar ul li { + list-style-type: none; + float: left; + padding: 1px 2px; + margin-right: 5px; +} + +.lib-content .fg-toolbar ul.dropdown-menu { + float: none; + padding: 5px 0; + margin: 2px 0 0; + cursor: default; + } + .lib-content .fg-toolbar ul.dropdown-menu li { + list-style-type: none; + float: none; + padding: 0; + margin-right: 0; + } + .lib-content .fg-toolbar ul.dropdown-menu li.nav-header { + padding-right: 20px; + padding-left: 20px; + } +.lib-selected.even { + background-color: rgba(240, 109, 53, 1); +} +.lib-selected.odd { + background-color: rgba(255, 136, 56, 1); +} + +#library_content { + float: left; + width: 50%; + overflow: hidden; +} + +#library_display { + /* for breaking up long strings that don't have delimiters */ + table-layout:fixed; +} + +#library_display th { + text-align: left; +} + +#library_content #library_display { + width:100%; +} + +#library_display td { + /* for breaking up long strings that don't have delimiters */ + word-wrap: break-word; +} + +#library_display th, +#library_display td, +.paginationControl { + font-size: 13px; +} + +#library_content .ui-tabs-panel { + padding-top:16px; +} + +.paginationControl { + font-size: 12px; + background-color: #9a9a9a; + background: -moz-linear-gradient(top, #ababab 0, #9a9a9a 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ababab), color-stop(100%, #9a9a9a)); + border:1px solid #5b5b5b; + border-width:0 1px 1px 1px; + padding:12px 8px 8px 8px; +} + +.paginationControl p { + color:#555555; + font-size:12px; + margin:2px 0 10px 0; +} + +.paginationControl .ui-button-text-only .ui-button-text { + padding: 0.2em 1em; +} + +#library_display td { + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -o-user-select: none; + user-select: none; +} + +.datatable_checkbox { + text-align: center; +} + +.datatable_checkbox .DataTables_sort_wrapper { + text-align: center; +} + +.library_year { + text-align: center; +} + +td.library_track, +td.library_sr, +td.library_bitrate { + text-align: right; +} + +.library_import { + padding-bottom: 5px; +} + +.library_import img { + vertical-align: middle; + padding-left: 5px; +} + + +.file_type { + width:16px; + height:13px; + display:block; + background-image: url(images/filetype_icons.png); + background-repeat:no-repeat; + } + .file_type.audioclip { + background-position: 0 0; + } + a.file_type.audioclip:hover { + background-position: 0 -15px; + } + .file_type.playlist { + background-position: -20px 0; + } + a.file_type.playlist:hover { + background-position: -20px -15px; + } + + +.fg-toolbar .btn-toolbar {margin: 6px 5px 6px 2px;} + + +/* ///////////////////// ADVANCED SEARCH ///////////////////// */ +.advanced_search { + margin-bottom: 0; + } + .advanced_search > div { + margin-bottom: 6px; + } + +.lib-content fieldset { + border: 1px solid #9a9a9a; + margin: 0 0 8px 0; + padding: 8px; + } + .lib-content > div + fieldset { + margin-top:3px; + } + .lib-content fieldset.closed { + border-width: 1px 0 0; + margin-bottom: -6px; + margin-left: 1px; + } +.dataTables_filter input[type="text"], .dataTables_filter select { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 25px; + width:60%; + } +.dataTables_filter label { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: inline; +} + +.search-criteria .criteria-element > div { + margin-bottom: 5px; + } + .search-criteria .criteria-element > div input[type="text"], + .search-criteria .criteria-element > div select { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 25px; + } + .search-criteria .criteria-element > div .btn-small { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 25px; + padding: 3px 6px; + } + +.sb-timerange .btn-small { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 25px; + vertical-align: middle; + margin: 0 !important; + line-height: 16px; + } + +.sb-timerange input { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: inline-block; + float: none !important; + margin: 0 !important; + height: 25px; + outline: none; + vertical-align: middle !important; + } \ No newline at end of file diff --git a/airtime_mvc/public/css/playlist_builder.css b/airtime_mvc/public/css/playlist_builder.css index b386176e2..48f8c68c4 100644 --- a/airtime_mvc/public/css/playlist_builder.css +++ b/airtime_mvc/public/css/playlist_builder.css @@ -22,12 +22,12 @@ clear: left; } -#side_playlist button { +/*#side_playlist button { float: left; font-size: 12px; height: 28px; margin: 0 7px 20px 0; -} +}*/ #side_playlist input, #side_playlist textarea { @@ -48,11 +48,11 @@ margin-bottom:0; } -#side_playlist li { +/*#side_playlist li { width: 99.5%; margin-bottom:-1px; position:relative; -} +}*/ #side_playlist li div.list-item-container, #side_playlist li div.list-item-container.ui-state-active { height:56px; @@ -464,3 +464,4 @@ div.helper li { li.spl_empty { height: 56px; } + diff --git a/airtime_mvc/public/css/showbuilder.css b/airtime_mvc/public/css/showbuilder.css index 2598f759e..0271a9224 100644 --- a/airtime_mvc/public/css/showbuilder.css +++ b/airtime_mvc/public/css/showbuilder.css @@ -1,283 +1,280 @@ -@CHARSET "UTF-8"; - -.sb-content { - overflow: hidden; -} - -.sb-content .dataTables_scrolling { - overflow: auto; -} - -.sb-content .dataTables_wrapper { - margin-left: -16px; -} - -.sb-selected.even { - background-color: rgba(240, 109, 53, 1); -} -.sb-selected.odd { - background-color: rgba(255, 136, 56, 1); -} - -.sb-content .fg-toolbar ul { - float: left; - padding: 0; - margin: 0.5em 0 0 10px; - cursor: pointer; -} - -.sb-content .fg-toolbar ul li { - list-style-type: none; - float: left; - padding: 1px 2px; - margin-right: 5px; -} - -.sb-padded { - /* - the padding is needed here so that the cursor arrows with a negative margin are displayable. - */ - padding-left: 16px; -} - -.sb-content fieldset legend { - font-size: 13px; - white-space: nowrap; - width: 110px; -} - -.sb-content fieldset label { - padding: 2px; - font-size: 12px; -} - -.sb-content fieldset select { - margin-right: 10px; -} - -.sb-content input[type="checkbox"] { - position: relative; - top: 3px; -} - -.sb-content fieldset { - margin-bottom: 8px; -} - -.sb-content fieldset.closed { - border-width: 1px 0 0; - margin-bottom: -16px; - margin-left:1px; -} - -.sb-content fieldset.closed .sb-options-form { - display: none; -} - -.sb-content th { - text-align: left; -} - -.sb-content input.input_text.hasDatepicker { - width:95px; -} - -.sb-content input.input_text.hasTimepicker { - width:60px; -} - -div.sb-timerange { - position: relative; -} - -div.sb-timerange div#sb_edit { - position:absolute; - padding: 3px; -} - -div.sb-timerange div#sb_submit { - padding: 3px; - margin-left: 5px; -} - -div.sb-timerange input { - vertical-align: top; -} - -div.sb-timerange input#sb_date_start { - margin-left: 30px; -} - -.sb-starts, -.sb-ends { - text-align: center; -} - -.innerWrapper { - position:relative; - width:100%; -} -.marker { - background: url(images/tl-arrow.png) no-repeat scroll 3px 4px; - top: -14px; - display: block; - height: 9px; - left: -17px; - padding: 4px 0 4px 3px; - position: absolute; - width: 9px; - background-color: rgba(70, 70, 70, 0.35); - border-radius: 2px 0 0 2px; - cursor:pointer; -} -.marker:hover { - background-color: rgba(70, 70, 70, 0.95); - border-radius: 2px 0 0 2px; -} -tr.cursor-selected-row .marker { - background-color: rgba(215, 0, 0, 1); -} - -table.datatable tr.cursor-selected-row td, table.datatable tr.cursor-selected-row th { - border-top: 1px solid rgba(215, 0, 0, 1) !important; -} - -.sb-content .sb-past { - opacity: .6; -} - -.sb-placeholder { - height: 35px; - padding: 5px; -} - -.sb-boundry td.sb-image, -.sb-boundry td.sb-starts, -.sb-boundry td.sb-ends, -.sb-boundry td.sb-length, -.sb-boundry td.sb-title, -.sb-boundry td.sb-creator, -.sb-boundry td.sb-album, -.sb-boundry td.sb-cue-in, -.sb-boundry td.sb-cue-out, -.sb-boundry td.sb-fade-in, -.sb-boundry td.sb-fade-out { - background-color: rgba(230, 106, 49, 0.5); -} - -.sb-over td.sb-image, -.sb-over td.sb-starts, -.sb-over td.sb-ends, -.sb-over td.sb-length, -.sb-over td.sb-title, -.sb-over td.sb-creator, -.sb-over td.sb-album, -.sb-over td.sb-cue-in, -.sb-over td.sb-cue-out, -.sb-over td.sb-fade-in, -.sb-over td.sb-fade-out { - background-color: rgba(255, 0, 0, 0.5); -} - -.sb-now-playing td { - background-color: rgba(23, 235, 37, 1) !important; -} - -.sb-content.padded { - padding: 8px 8px 8px 16px; -} - -table.dataTable tr.sb-past, -table.dataTable tr.sb-header, -table.dataTable tr.sb-footer, -table.dataTable tr.sb-not-allowed { - cursor: auto; -} - -table.dataTable td.sb-image { - cursor: pointer; -} - -table.datatable tr.sb-header.odd td, table.datatable tr.sb-header.even td, -table.datatable tr.sb-header.odd:hover td, table.datatable tr.sb-header.even:hover td{ - background: -moz-linear-gradient(top, #a4a4a4 0, #bcbcbc 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #a4a4a4), color-stop(100%, #bcbcbc)); - background: linear-gradient(top, #a4a4a4 0, #bcbcbc 100%); - border-top-color:#6b6a6a !important; -} - -.sb-content tr:last-child td { - border-bottom-width: 1px !important; - border-bottom-color:#6b6a6a !important; -} - -.sb-header div.ui-state-default { - float: left; -} - -.sb-content input.ui-button { - padding: 3px 1em; -} -.color-box { - position:absolute; - top:-5px; - bottom:-5px; - left:-5px; - width:27px; - background: rgba(140, 2, 140, 1); -} - -.show-title, .show-time { - display:inline-block; - font-size:13px; -} -.show-title { - font-weight: bold; - margin: 0 8px; -} - -.show-date { - font-size:12px; - color: #363636; - margin-left: 5px; -} - -.show-time { - font-size:12px; - color: #363636; - margin: 0 5px; -} - -.push-right { - float:right; - margin-right:5px; -} - -/* -* keep the dialog css at the bottom so it can override previous rules if needed. -*/ - -.ui-dialog .wrapper { - margin: 0; - padding: 10px 0 0 0; - overflow: hidden; -} - -.ui-dialog .lib_content { - margin: 0 10px 10px 0; - overflow: auto; - min-height: 0; -} - -.ui-dialog .sb-content { - margin: 0 0 10px 0; - overflow: auto; -} - -.ui-dialog .lib_content .padded { - padding: 5px 10px 5px 8px; -} - -.ui-dialog .sb_content .padded { - padding: 5px 10px 5px 16px; +@CHARSET "UTF-8"; + +.sb-content { + overflow: hidden; +} + +.sb-content .dataTables_scrolling { + overflow: auto; +} + +.sb-content .dataTables_wrapper { + margin-left: -16px; +} + +.sb-selected.even { + background-color: rgba(240, 109, 53, 1); +} +.sb-selected.odd { + background-color: rgba(255, 136, 56, 1); +} + +.sb-content .fg-toolbar ul { + float: left; + padding: 0; + margin: 0.5em 0 0 10px; + cursor: pointer; +} + +.sb-content .fg-toolbar ul li { + list-style-type: none; + float: left; + padding: 1px 2px; + margin-right: 5px; +} + +.sb-padded { + /* + the padding is needed here so that the cursor arrows with a negative margin are displayable. + */ + padding-left: 16px; +} + +.sb-content fieldset legend { + font-size: 13px; + white-space: nowrap; + width: 110px; +} + +.sb-content fieldset label { + padding: 2px; + font-size: 12px; +} + +.sb-content fieldset select { + margin-right: 10px; +} + +.sb-content input[type="checkbox"] { + position: relative; + top: 3px; +} + +.sb-content fieldset { + margin-bottom: 8px; +} + +.sb-content fieldset.closed { + border-width: 1px 0 0; + margin-bottom: -16px; + margin-left:1px; +} + +.sb-content fieldset.closed .sb-options-form { + display: none; +} + +.sb-content th { + text-align: left; +} + +.sb-content input.input_text.hasDatepicker { + width:95px; +} + +.sb-content input.input_text.hasTimepicker { + width:60px; +} + +div.sb-timerange { + position: relative; +} + +div.sb-timerange div#sb_edit { + position:absolute; + padding: 3px; +} + +div.sb-timerange div#sb_submit { + padding: 3px; + margin-left: 5px; +} + + +div.sb-timerange input#sb_date_start { + margin-left: 30px; +} + +.sb-starts, +.sb-ends { + text-align: center; +} + +.innerWrapper { + position:relative; + width:100%; +} +.marker { + background: url(images/tl-arrow.png) no-repeat scroll 3px 4px; + top: -14px; + display: block; + height: 9px; + left: -17px; + padding: 4px 0 4px 3px; + position: absolute; + width: 9px; + background-color: rgba(70, 70, 70, 0.35); + border-radius: 2px 0 0 2px; + cursor:pointer; +} +.marker:hover { + background-color: rgba(70, 70, 70, 0.95); + border-radius: 2px 0 0 2px; +} +tr.cursor-selected-row .marker { + background-color: rgba(215, 0, 0, 1); +} + +table.datatable tr.cursor-selected-row td, table.datatable tr.cursor-selected-row th { + border-top: 1px solid rgba(215, 0, 0, 1) !important; +} + +.sb-content .sb-past { + opacity: .6; +} + +.sb-placeholder { + height: 35px; + padding: 5px; +} + +.sb-boundry td.sb-image, +.sb-boundry td.sb-starts, +.sb-boundry td.sb-ends, +.sb-boundry td.sb-length, +.sb-boundry td.sb-title, +.sb-boundry td.sb-creator, +.sb-boundry td.sb-album, +.sb-boundry td.sb-cue-in, +.sb-boundry td.sb-cue-out, +.sb-boundry td.sb-fade-in, +.sb-boundry td.sb-fade-out { + background-color: rgba(230, 106, 49, 0.5); +} + +.sb-over td.sb-image, +.sb-over td.sb-starts, +.sb-over td.sb-ends, +.sb-over td.sb-length, +.sb-over td.sb-title, +.sb-over td.sb-creator, +.sb-over td.sb-album, +.sb-over td.sb-cue-in, +.sb-over td.sb-cue-out, +.sb-over td.sb-fade-in, +.sb-over td.sb-fade-out { + background-color: rgba(255, 0, 0, 0.5); +} + +.sb-now-playing td { + background-color: rgba(23, 235, 37, 1) !important; +} + +.sb-content.padded { + padding: 8px 8px 8px 16px; +} + +table.dataTable tr.sb-past, +table.dataTable tr.sb-header, +table.dataTable tr.sb-footer, +table.dataTable tr.sb-not-allowed { + cursor: auto; +} + +table.dataTable td.sb-image { + cursor: pointer; +} + +table.datatable tr.sb-header.odd td, table.datatable tr.sb-header.even td, +table.datatable tr.sb-header.odd:hover td, table.datatable tr.sb-header.even:hover td{ + background: -moz-linear-gradient(top, #a4a4a4 0, #bcbcbc 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #a4a4a4), color-stop(100%, #bcbcbc)); + background: linear-gradient(top, #a4a4a4 0, #bcbcbc 100%); + border-top-color:#6b6a6a !important; +} + +.sb-content tr:last-child td { + border-bottom-width: 1px !important; + border-bottom-color:#6b6a6a !important; +} + +.sb-header div.ui-state-default { + float: left; +} + +.sb-content input.ui-button { + padding: 3px 1em; +} +.color-box { + position:absolute; + top:-5px; + bottom:-5px; + left:-5px; + width:27px; + background: rgba(140, 2, 140, 1); +} + +.show-title, .show-time { + display:inline-block; + font-size:13px; +} +.show-title { + font-weight: bold; + margin: 0 8px; +} + +.show-date { + font-size:12px; + color: #363636; + margin-left: 5px; +} + +.show-time { + font-size:12px; + color: #363636; + margin: 0 5px; +} + +.push-right { + float:right; + margin-right:5px; +} + +/* +* keep the dialog css at the bottom so it can override previous rules if needed. +*/ + +.ui-dialog .wrapper { + margin: 0; + padding: 10px 0 0 0; + overflow: hidden; +} + +.ui-dialog .lib_content { + margin: 0 10px 10px 0; + overflow: auto; + min-height: 0; +} + +.ui-dialog .sb-content { + margin: 0 0 10px 0; + overflow: auto; +} + +.ui-dialog .lib_content .padded { + padding: 5px 10px 5px 8px; +} + +.ui-dialog .sb_content .padded { + padding: 5px 10px 5px 16px; } \ No newline at end of file diff --git a/airtime_mvc/public/css/styles.css b/airtime_mvc/public/css/styles.css index ff0a78974..0a2a24f3a 100644 --- a/airtime_mvc/public/css/styles.css +++ b/airtime_mvc/public/css/styles.css @@ -1,2890 +1,2910 @@ -@charset "utf-8"; -/* CSS Document */ - -body { - font-size: 62.5%; - font-family:Arial, Helvetica, sans-serif; - background: #7f7f7f; - margin: 0; - padding: 0; -} -html, body { - height: 100%; -} - -#login-page { - background: #1f1f1f url(images/login_page_bg.png) no-repeat center 0; - margin: 0; - padding: 0; - height:100%; - text-align:center; -} - -h2 { - color: #000000; - font-size: 2.1em; - font-weight: normal; - margin: 0; - padding: 0 0 10px; -} -h3 { - font-size:1.7em; - font-weight:normal; - color:#000; - padding:0 0 10px 0; - margin:0; -} -a, a:focus { - outline:none; -} -label { - font-size:12px; -} -select { - font-size:12px; - font-family:Arial, Helvetica, sans-serif; - border:1px solid #9d9d9d; -} - -.logo { - position:absolute; - right:20px; - top:104px; - background:transparent url(images/airtime_logo.png) no-repeat 0 0; - height:35px; - width:66px; - z-index:1000; - display:block; -} - -/* Version Notification Starts*/ -#version-icon { - position:absolute; - right:96px; - top:104px; - height:35px; - width:35px; - z-index:1000; - display:block; - cursor:pointer; - background-repeat:no-repeat; - background-position:center; -} -#version-icon.outdated { - background-image:url(/css/images/icon_outdated.png); -} -#version-icon.update2 { - background-image:url(/css/images/icon_update2.png); -} -#version-icon.update { - background-image:url(/css/images/icon_update.png); -} -#version-icon.uptodate { - background-image:url(/css/images/icon_uptodate.png); -} - -#ui-tooltip-version a { - color:#ff5d1a; - text-decoration:none; -} - -#ui-tooltip-version { - font-size: 14px; -} -/* Version Notification Ends*/ - -.override_help_icon, .icecast_metadata_help_icon { - cursor: help; - position: relative; - - display:inline-block; zoom:1; display:inline; - width:14px; height:14px; - background:url(/css/images/icon_info.png) 0 0 no-repeat; - float:right; position:relative; top:2px; right:7px; - line-height:16px !important; -} - -.airtime_auth_help_icon, .custom_auth_help_icon, .stream_username_help_icon, .playlist_type_help_icon { - cursor: help; - position: relative; - display:inline-block; zoom:1; - width:14px; height:14px; - background:url(/css/images/icon_info.png) 0 0 no-repeat; - top:2px; right:7px; left: 3px; - line-height:16px !important; -} - -/* Clearfix */ -.clearfix:after, #side_playlist li:after { content: "."; display: block; height: 0; clear: both; visibility: hidden;} -.clearfix, #side_playlist li { display: inline-block; } -* html .clearfix, * html li { height: 1%;} -.clearfix, #side_playlist li { display: block; } - - -/* Master Panel */ -#sticky { - position:fixed; - height:130px; - top:0; - left:0; -} - - -#master-panel { - background:#3d3d3d url(images/masterpanel_bg.png) repeat-x 0 0; - height:100px; - border:1px solid #000; - border-width: 1px 0; - overflow:hidden; - position:relative; -} - -.now-playing-block, .show-block, .on-air-block, .time-info-block, .personal-block, .listen-control-block, .trial-info-block, .source-info-block { - height:100px; - float:left; - margin-right:10px; -} -.personal-block { - float:right; - margin-right:20px; - text-align:right; - min-width:110px; -} - -.personal-block ul { - margin:0; - padding:8px 0 0; -} -.personal-block li { - font-size:11px; - color:#bdbdbd; - list-style-type:none; - margin:0 0 2px 0; -} -.personal-block li.name { - color:#fff; - font-weight:normal; -} -.personal-block li a { - color:#fff; - text-decoration:underline; -} -.personal-block li a:hover { - color:#ff5d1a; -} -.now-playing-block { - width:30%; - padding-left:20px; -} -.show-block { - width:18%; -} -.text-row { - height:30px; - padding:0px 0 0; - font-size:12px; - text-wrap:none; - text-indent:2px; - overflow:hidden; - line-height:30px; -} -#master-panel .text-row { - color:#dfdfdf; -} -.text-row.next-song { - color:#d9d9d9; -} -.text-row strong { - font-weight:bold; - color:#969696; - padding-right:12px; -} -.text-row.rebroadcast, #master-panel .text-row.rebroadcast { - color:#969696; -} -.now-playing-info { - height:25px; - background:#3a3a3a url(images/playinfo_bg.png) repeat-x 0 0; - border: 1px solid #242424; - border-bottom-color:#727272; - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - border-radius: 2px; - color:#fff; - font-size:15px; - line-height:22px; - text-indent:5px; - overflow:hidden; - margin-bottom:3px; -} -.time-elapsed { - color:#9b9b9b; - padding-right:6px; -} -.time-remaining { - color:#ff6f01; -} -.progressbar { - height:6px; - border:1px solid #242424; - border-width:1px 1px 0 1px; - background:#141414 url(images/progressbar_bg.png) repeat-x 0 0; -} -.progressbar .progress-song, .progressbar .progress-show, .progressbar .progress-show-error { - height:4px; - width:0%; - background:#f97202 url(images/progressbar_song.png) repeat-x 0 0; -} -.progressbar .progress-show { - background:#02cef9 url(images/progressbar_show.png) repeat-x 0 0; -} -.progressbar .progress-show-error { - background:#d40000 url(images/progressbar_show_error.png) repeat-x 0 0; -} -.now-playing-info .show-length { - color:#c4c4c4; - padding-left:6px; -} - -.on-air-block { - padding:0 12px 0 0; - background:url(images/masterpanel_spacer.png) no-repeat right 0; -} -.time-info-block { - padding:0 14px 0 2px; - background:url(images/masterpanel_spacer.png) no-repeat right 0; - min-width:105px; -} -.time-info-block ul { - margin:0; - padding:6px 0 0; -} -.time-info-block li { - list-style-type:none; - font-size:14px; - color:#bdbdbd; - margin:0 0 6px; -} -.time-info-block li.time { - font-size:26px; - color:#fff; - width:auto; - text-align:left; -} -.time-info-block li.time-zone { - font-size:17px; - margin-bottom:0; -} -.listen-control-block a, .listen-control-button { - font-size:11px; - text-transform:uppercase; - padding:0; - border:1px solid #242424; - color:#fff; - text-decoration:none; - font-weight:bold; - margin-top:34px; - display:block; - text-align:center; - -} -.listen-control-button { - margin-top:6px; -} -.listen-control-block a span, .listen-control-button span { - background-color: #6e6e6e; - background: -moz-linear-gradient(top, #868686 0, #6e6e6e 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #868686), color-stop(100%, #6e6e6e)); - padding:5px 10px; - border:1px solid #a1a1a1; - border-width:1px 0; - border-bottom-color:#646464; - color:#dcdcdc; - text-shadow: #555555 0px -1px; - display:block; -} -.listen-control-button span { - padding:2px 10px; -} -.listen-control-block a:hover, .listen-control-button:hover { - border:1px solid #000; -} -.listen-control-block a:hover span, .listen-control-button:hover span { - background-color: #292929; - background: -moz-linear-gradient(top, #3b3b3b 0, #292929 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #3b3b3b), color-stop(100%, #292929)); - border:1px solid #555555; - border-width:1px 0; - border-bottom-color:#1e1e1e; - color:#fff; - color:#0C0; - text-shadow: #000 0px -1px; - display:block; -} -.listen-control-block a:active span { - color:#fff; -} - -/* END Master Panel */ - - -.wrapper { - margin: 0 5px 0 5px; - padding:10px 0 0 0; -} - -.alpha-block { - padding:0; - float:left; - margin:0 16px 10px 0; -} -.omega-block { - padding:0; - float:left; - margin:0 0 10px 0; -} -.block-shadow { - -moz-box-shadow: 0 2px 2px rgba(0,0,0,.10); - -webkit-box-shadow: 0 2px 2px rgba(0,0,0,.10); - box-shadow: 0 2px 2px rgba(0,0,0,.10); -} -.clear { - clear: both; - display: block; - height: 0; - overflow: hidden; - visibility: hidden; - width: 0; -} -fieldset.plain { - border:none; - padding:0; - margin:0; -} -.frame { - padding:0; - border:1px solid #5b5b5b; - margin: 0 0 8px 0; -} -.padded { - padding:8px; -} -.padded-strong { - padding:10px; -} -.input_text, input[type="text"], input[type="password"] { - font-family:Arial, Helvetica, sans-serif; - border: 1px solid #5b5b5b; - font-size: 12px; - /*height: 23px;*/ - margin: 0; - padding: 4px 3px; - /*text-indent: 3px;*/ - width:auto; - background-color: #dddddd; - border: 1px solid #5b5b5b; - box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2) inset; -} - -input[readonly]{ - background-color:#b1b1b1 -} - -input[type="text"]:focus, input[type="password"]:focus, textarea:focus, .input_text_area:focus { - border: 1px solid #0088f1; -} -.auto-search { - background:#dddddd url(images/search_auto_bg.png) no-repeat 0 0; - text-indent:25px; -} -.input_text_area, textarea { - background-color: #dddddd; - border: 1px solid #5b5b5b; - box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2) inset; - font-size: 13px; - text-indent: 3px; - margin:0; -} -.input_select, select { - background-color: #DDDDDD; - box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2) inset; - border: 1px solid #5b5b5b; - font-family: Arial,Helvetica,sans-serif; - font-size: 12px; - height: 25px; - margin: 0; - padding: 2px 2px 2px 0; - vertical-align: top; -} - -/***** LIBRARY QTIP METADATA SPECIFIC STYLES BEGIN *****/ -table.library-track-md{ - width: 280px; -} - -.ui-tooltip-dark.file-md-long{ - max-width: 415px !important; -} - -.library-get-file-md tr td, .library-track-md tr td{ - font-size:10px; - padding: 0px; - vertical-align:top; -} - -table.library-get-file-md{ - margin-left:15px; - margin-right:15px; - width:350px; -} - -table.library-get-file-md.table-small{ - width: 290px !important; -} - -.file-md-qtip-nowrap{ - white-space: nowrap; - overflow: hidden; -} - -.file-md-qtip-criteria-width-small{ - width:70px; - max-width: 70px; -} - -.file-md-qtip-criteria-width{ - width:110px; - max-width: 110px; -} - -.file-md-qtip-row-width-title{ - width:170px; - max-width: 170px; - padding-right:5px !important; -} - -.file-md-qtip-row-width-artist{ - width:110px; - max-width: 110px; -} - -.file-md-qtip-row-width-small{ - width:40x; - max-width: 40px; - text-align:right; -} - -.file-md-qtip-playlist td{ - font-weight: bold; - font-style: italic; -} - -.file-md-qtip-left{ - float: left; - width: 60%; -} - -.file-md-qtip-legend { - float: right; - width: 30%; - font-size: 9px; - padding: 0px; - vertical-align:top; - line-height: 13px; -} -.static { - color: #f09839; -} -.dynamic { - color: #63a2f0; -} -.webstream { - color: #4eba70; -} - -/***** LIBRARY QTIP METADATA SPECIFIC STYLES END *****/ - - -/***** SMART BLOCK SPECIFIC STYLES BEGIN *****/ -.sp-invisible{ - visibility: hidden; -} - -.sp_input_select{ - width: 130px; -} - -.sp_input_text_limit{ - width: 75px !important; -} - -.sp_no_margins{ - margin-left: 0px !important; - margin-right: 0px !important; -} - -input.input_text.sp_input_text{ - width: 200px !important; -} - -input.input_text.sp_extra_input_text{ - width: 87px !important; -} - -.sp_text_font{ - font-size: 13px; - font-family: Helvetica, Arial, sans-serif; - color: #5B5B5B; -} - -.sp_text_font_bold{ - font-weight: bold; -} - -.sp-ui-button-icon-only { - position: relative; - top: 5px; - margin-top: -10px; - margin-left: 5px; -} - -.sp-ui-button-icon-only .ui-icon-closethick:hover, .sp-ui-button-icon-only .ui-icon-plusthick:hover { - background-image:url(redmond/images/ui-icons_ff5d1a_256x240.png) -} - -.sp-button{ - float: right !important; - width: 60px; - height: 24px !important; - margin-right: 0px !important; - margin-left: 10px !important; -} - -.sp-save{ - margin-left: 7px !important; -} - -.sp-checked-icon{ - width: 16px !important; - display: inline-block !important; -} - -.sp-warning-icon{ - margin: 0; - background-image: url(redmond/images/ui-icons_ff5d1a_256x240.png); - background-repeat: no-repeat; - background-position: 0px -140px; - height:16px; - width: 16px; - display: inline-block; -} - -.sp-label{ - padding: 0px !important; -} - -.sp-closed{ - border-width: 0 0 0 !important; -} -/***** SMART BLOCK SPECIFIC STYLES END *****/ - -label { - font-size:13px; - color:#5b5b5b; - padding:0 16px 0 0; -} -.static_text { - font-size:13px; - color:#3b3b3b; - padding:0 16px 0 0; - word-wrap: break-word; -} -#library_quick_search { - margin-bottom:16px; -} -#library_quick_search label { - -} -#library_quick_search input { - width:60%; -} -dl.inline-list { - float: left; - margin: 0; - padding: 0; - -} - -dl.inline-list dt { - clear: left; - float: left; - margin: 0; - padding: 0px 0; - font-weight: bold; - color:#333333; - font-size:12px; - font-weight:bold; - text-align:left; - min-width:70px; -} -dl.inline-list dd { - float: left; - margin: 0; - padding: 0px 0 4px 15px; - font-size:12px; -} -.left-floated { - float:left; - margin-left:0; - margin-right:10px; -} -.right-floated { - float:right; - margin-left:10px; - margin-right:0; - text-align:right; -} -/*----Data Table----*/ - -.datatable tr th.ui-state-default { - border: 1px solid #CCC; - border-width: 0 0 0 1px !important; -} -.datatable { - border-color: #5b5b5b; - border-style: solid; - border-width: 1px 1px 1px 1px; - width:100%; -} - -.datatable th { - text-align: left; -} - -.datatable tr td, .datatable tr th { - border-color: #b1b1b1; - border-style: solid; - border-width: 1px 0 0 1px; - font-size: 13px; - padding: 5px 5px; -} -.odd { - background-color: #d8d8d8; -} -.even { - background-color:#c7c7c7; -} - -.datatable tr.even.selected td { - background-color: #abcfe2; -} -.datatable tr.odd.selected td { - background-color: #c5deeb; -} -.datatable tr.odd:hover td, .datatable tr.even:hover td { - background-color: #95d5f7 !important; -} - -.datatable tr td:first-child, .datatable tr th:first-child, .datatable tr th.ui-state-default:first-child { - border-left-width:0 !important; -} -.ui-widget-header + .datatable { - border-width: 0px 1px 1px 1px; -} -.datatable + .ui-widget-header { - border-width: 0px 1px 1px 1px; -} -.dataTables_scrollHeadInner > .datatable { - border-width: 0px 1px 0 1px; -} -.dataTables_scroll .datatable { - border-width: 0px 1px 0 1px; -} - -.dataTables_scrolling { - overflow: auto; -} - -.dataTables_scrolling table{ - border-width: 0px 1px 0 1px; -} - -.DataTables_sort_wrapper .ui-icon { - display: block; - float: left; - margin: 0 3px 0 -2px; -} -.dataTables_type { - float:right; - margin:0 8px 0 0; - -} - -.dataTables_length { - float:right; - margin:0 8px 0 0; - -} -.dataTables_length label { - padding:10px 6px 0 0; - font-size:12px; - color:#404040; - line-height:22px; -} -.dataTables_filter { - margin:0 0 8px 8px; -} -.dataTables_filter .auto-search { - width:55%; -} -.dt-process-rel { - position: relative; -} -.dataTables_processing { - opacity: 1 !important; - position: absolute; - top: 100px; - left: 10%; - width: 80%; - height: 50px; - text-align: center; - font-size:14px; - font-weight:bold; - padding-top: 40px; - background: -moz-linear-gradient(top, #b2b2b2 0, #a2a2a2 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #b2b2b2), color-stop(100%, #a2a2a2)); - background: linear-gradient(top, #b2b2b2 0, #a2a2a2 100%); - border: 1px solid #8F8F8F; - color: #ffffff; -} -#library_display_wrapper .ui-widget-header:first-child { - background:none; - border-width:0 0 1px 0; - color: #444444; - font-weight: bold; -} -#library_display_wrapper .ui-widget-header:first-child .dataTables_length { - margin:0; -} -#library_display_wrapper .ui-widget-header:first-child .dataTables_filter { - margin:0; -} - -.dataTables_info { - float: left; - padding: 8px 0 0 8px; - font-size:12px; - color:#555555; - font-weight:normal; -} - -.dataTables_paginate { - float: right; - padding: 8px 0 8px 8px; - clear: left; -} -.dataTables_paginate .ui-button { - font-size:12px; - font-weight:normal; - padding: 0.2em 1em; - margin-right:3px; -} -.dataTables_filter input { - background: url("images/search_auto_bg.png") no-repeat scroll 0 0 #DDDDDD; - width: 40%; - border: 1px solid #5B5B5B; - margin-left: -8px; - padding: 5px 3px 4px 25px; -} -.dataTables_length select { - background-color: #DDDDDD; - border: 1px solid #5B5B5B; - font-family: Arial,Helvetica,sans-serif; - font-size: 12px; - height: 25px; - margin: 0; - padding: 2px 2px 2px 0; - vertical-align: top; -} -table.dataTable tbody tr, -table.dataTable span.DataTables_sort_icon { - cursor: pointer; -} - -table.dataTable th.ui-state-default { - background: -moz-linear-gradient(top, #b2b2b2 0, #a2a2a2 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #b2b2b2), color-stop(100%, #a2a2a2)); - background: linear-gradient(top, #b2b2b2 0, #a2a2a2 100%); - border: 1px solid #8F8F8F; - color: #363636; -} - -.ColVis.TableTools .ui-button { - height: 21px; -} -button.ColVis_Button.ColVis_ShowAll { - text-align: center; - margin-top: 10px; -} -.library_toolbar .ui-button, .ColVis.TableTools .ui-button { - float: right; - text-align:center; - font-size:12px; - font-weight:normal; - padding: 0.2em 1em; - margin: 0.5em 7px -0.5em -2px; -} - -.library_length { - text-align: right; -} - -/*----END Data Table----*/ - -fieldset { - border: 1px solid #8f8f8f; - margin: 0; - padding: 0; -} -fieldset.plain { - border: none; - margin: 0; - padding: 0; -} -input[type="checkbox"] { - margin:0; - outline:none; - padding:0; - width:13px; - height:13px; -} -/*---//////////////////// LOGIN & PASSWORD RESET ////////////////////---*/ - -.login_box { - margin: 0 auto 0 auto; - text-align:center; - width:420px; - border:1px solid #181818; - border-width: 0 0 1px 0; - padding:0; - padding-top:60px; -} - -.login_box h2 { - background:#1f1f1f; - background: -moz-linear-gradient(center top , #2c2c2c 0pt, #1f1f1f 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #2c2c2c), color-stop(100%, #1f1f1f)); - border:1px solid #181818; - border-top-color:#4f4f4f; - margin:0; - padding:8px 0 8px 20px; - font-size:15px; - font-weight:bold; - color:#bebebe; - text-align:left; - -moz-box-shadow: 0 2px 2px rgba(0,0,0,.10); - -webkit-box-shadow: 0 2px 2px rgba(0,0,0,.10); - box-shadow: 0 2px 2px rgba(0,0,0,.10); -} -.login_box p { - margin:0; - padding:8px 0 16px 0; - font-size:12px; - color:#717171; - text-align:left; -} -.logobox { - height:120px; - text-align:center; - background:url(images/airtime_logo_big.png) no-repeat 50% 0; -} - -.login { - margin:2px 0 0 4px; - border:none; - background:none; - text-align:left; - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} - -.login td { - border:none; - background-color:transparent; - color:#696969; -} - -.login h2 { - padding:7px 0 10px 0; -} - -.light { - color:#1683b0; -} -.alert { - color:#C00; -} - -.login-content { - background:url(images/login_content_bg.png) no-repeat 0 bottom; - padding:10px 20px 14px; - text-align:left; -} -.login-content dl, .login-content dl.zend_form { - margin: 12px 0 0 0; - margin-bottom:8px; - margin:0; - padding:0; - width:100%; -} - -.login-content dd { - /*float: left;*/ - font-size: 1.2em; - margin: 0; - padding: 0 0 9px 0; - display:block; -} -.login-content dt { - color: #666666; - /*float: left;*/ - font-size: 1.2em; - font-weight: bold; - margin: 0; - padding: 0 0 6px 0; - text-align: left; - min-width:90px; - clear:left; - display:block; -} - -dt.block-display, dd.block-display { - display:block; - float:none; - margin-left:0; - padding-left:0; -} - -.login-content dt label { - padding-right:0; - color:#a8a8a8; -} -.login-content dd .input_text, .login-content dd input[type="text"], .login-content dd input[type="password"] { - width:99%; - font-size:14px; - padding: 6px 0 6px 3px; -} -.login-content dd input.ui-button, .login-content dd input.btn { - width:100%; - font-size:14px; - padding: 6px 10px 6px; -} - -.login-content dd button.ui-button, .login-content dd button.btn { - width:100%; - font-size:14px; - padding: 6px 10px 6px; -} -.login-content .hidden, .hidden { - display:none; -} -.login-content .text-right, .text-right { - text-align:right; -} -.login-content .link { - color:#FF5D1A; - text-decoration:none; - } - .login-content .link:hover { - text-decoration:underline; - } - -/*---//////////////////// END LOGIN ////////////////////---*/ - - -/*---//////////////////// FOOTER ////////////////////---*/ -.footer { - display:block; - height:40px; - clear:both; - color:#4b4b4b; - margin-top:12px; - font-size:11px; - line-height:140%; - text-align:center; - padding:10px 0 0 0; -} - -.footer a { - color:#ff5d1a; - text-decoration:none; -} -#login-page .footer { - color:#6d6d6d; -} -.footer a:hover { - color:#ff5d1a; - text-decoration:underline; -} -/*---//////////////////// END FOOTER ////////////////////---*/ - -.button-bar { - height: 28px; - margin-top:12px; -} -/*.sticky { - padding:0; - width:100%; - z-index:2000; - position:fixed; - top:0; - left:0; - margin-bottom:140px; -}*/ -.sticky { - padding:0; - width:100%; -} - -.floated-panel { - margin-top:0; - width:99.99%; - z-index:999; -} - - -/*---//////////////////// Schedule Show ////////////////////---*/ - - -#schedule_playlist_dialog .wrapp-two { - float: left; - width: 50%; - padding: 0; -} - -#schedule_playlist_dialog .wrapp-one { - margin-right:2%; - width: 48%; - float: left; -} - -#schedule_playlist_dialog div:first-child .ui-widget-header:first-child { - background: none repeat scroll 0 0 transparent; - border-width: 0 0 1px; - color: #444444; - font-weight: bold; -} - -#schedule_playlist_dialog div:first-child .ui-widget-header:first-child { - background: none repeat scroll 0 0 transparent; - border-width: 0 0 1px; - color: #444444; - font-weight: bold; -} -#schedule_playlist_dialog .ui-widget-header:first-child .dataTables_filter, -#schedule_playlist_dialog .ui-widget-header:first-child .dataTables_length { - margin: 0; -} - -.ui-dialog #schedule_playlist_dialog.ui-dialog-content { - padding:0; -} - - -#schedule_playlist_dialog > div { - background: none repeat scroll 0 0 transparent; - border: 1px solid #8f8f8f; - padding: 8px; - margin:8px 8px 0 8px; -} - - -#schedule_playlist_dialog > div h4 { - padding: 13px 0 12px 0; - margin: 0; - font-size:16px; - font-weight:normal; -} -#schedule_calendar { - width:98.5% -} -div.ui-datepicker { - /*font-size: 75%;*/ -} - - -#schedule_playlist_dialog ul { - list-style-type: none; - overflow: auto; - margin: 0 0 8px 0; - padding: 0; - height: 280px; - background:#9a9a9a; - width:100%; -} - -#schedule_playlist_chosen li { - float: left; - clear: left; - margin: 0; - width: 100%; - display:block; - margin-bottom:-1px; -} - -#schedule_playlist_chosen li > h3 { - font-size:15px; - padding: 7px 0 0 0; - margin: 0; - min-height:25px; - -} - -#schedule_playlist_chosen li > h3 > div { - float: left; - margin: 0 5px 2px 0; -} - -#schedule_playlist_chosen li > h3 > div > span.ui-icon { - margin-top: 0px; -} -#schedule_playlist_chosen li > h3 > span.ui-icon.ui-icon-triangle-1-e, -#schedule_playlist_chosen li > h3 > span.ui-icon.ui-icon-triangle-1-s { - float:left; - margin-right: 8px; -} -#schedule_playlist_chosen li > h3 > span.ui-icon.ui-icon-close { - float:right; - margin-right: 8px; -} -#schedule_playlist_chosen div.group_list { - border-width:0 1px 1px 1px; -} -/*#schedule_playlist_chosen li div{ - float: left; -} - -#schedule_playlist_chosen li > div{ - width: 475px; -} -*/ - -#schedule_playlist_chosen li > div > div{ - clear: left; - padding-top: 5px; - padding-left: 5px; -} -#schedule_playlist_chosen li > div:first-child { - border-bottom:1px solid #b1b1b1; -} -.sched_description { - clear: left; - font-size: 85%; - margin-left: 2em; -} - -.sh_pl_name { - min-width: 150px; -} - -.sh_pl_creator { - -} - -#schedule_playlist_chosen li > h3 > div.sh_pl_time { - float:right; - margin-right:22px; -} - -#schedule_playlist_chosen li > div > div > span { - float: right; - margin-right:46px; -} -#schedule_playlist_chosen li > div > div > span.sh_file_name { - display: inline-block; - float: left; - margin-right:0; -} - -.sh_file_artist, #schedule_playlist_chosen li > div > div.sh_file_artist { - font-size: 11px; - padding-top: 2px; - padding-bottom: 8px; - color:#5b5b5b; -} - -#schedule_playlist_chosen li > div > div.sched_description { - font-size: 12px; - padding-top: 5px; - padding-bottom: 7px; - border-bottom:1px solid #b1b1b1; - color:#5b5b5b; - margin:0; - background:#dddddd; -} -#show_time_info { - font-size:12px; - height:30px; -} - -#show_time_info > div, #show_time_info > span{ - float: left; -} - -#show_progressbar { - width: 46%; - height: 5px; - margin: 9px 9px 0 0; -} -#show_progressbar.ui-widget-content { - background: #646464 url(images/schedule-show_progressbar_bg.png) repeat-x 0 0; - border-color:#343434; - border-bottom-color:#cfcfcf; -} - -#show_progressbar .ui-progressbar-value { - background: #ff5d1a; - border-color:#343434; - border-width: 1px 0 0 1px; -} - -h2#scheduled_playlist_name { - font-size:21px; - font-weight:normal; - margin:0; - padding:8px 0 0px 12px; - color:#1c1c1c; -} - -h2#scheduled_playlist_name span { - color:#656565; -} - -.time { - width: 80px; - margin: 5px; - text-align: left; -} - -/* --- Add show Dialog --- */ - -#add_show_name { - -} - -#add_show_description { - width: 400px; - height: 200px; -} - -#fullcalendar_show_display { - width: 400px; -} - -.fc-agenda-body { - max-height:560px; -} - -#schedule_calendar .ui-progressbar { - width: 46%; - height: 5px; - margin: 9px 9px 0 0; -} - -#schedule_calendar .ui-progressbar.ui-widget-content { - background: #646464 url(images/schedule-show_progressbar_bg.png) repeat-x 0 0; - border-color:#343434; - border-bottom-color:#cfcfcf; -} -#schedule_calendar .ui-progressbar .ui-progressbar-value { - background: #ff5d1a; - border-color:#343434; - border-width: 1px 0 0 1px; -} -/*---//////////////////// Advenced Search ////////////////////---*/ - -.search_control { - padding:8px; - border:1pxp solid #8f8f8f; - background:#d8d8d8; - margin-bottom:8px; -} -.search_group { - padding:8px; - border:1pxp solid #8f8f8f; - margin-bottom:8px; -} -.search_group > fieldset { - padding:0; - border:none; - margin-top:8px; -} -.search_group > fieldset .input_text { - width:45%; -} -.search_group > fieldset .input_text, .search_group > fieldset .input_select { - margin-right:6px; -} -.search_group fieldset .ui-button-icon-only .ui-button-text, .search_group fieldset .ui-button-icons-only .ui-button-text { - padding: 3px 2px; - text-indent: -1e+7px; -} -.search_group fieldset .ui-button-icon-only { - width: 2.1em; -} - -.search_group fieldset .ui-button-icon-only .ui-icon { - left: 48%; - margin-top: -9px; - position: absolute; - top: 50%; -} - -/*---//////////////////// USERS ////////////////////---*/ - -.simple-formblock { - width: 30%; -} - -.simple-formblock dl, .simple-formblock dl.zend_form { - margin: 0; - padding: 0; - width: 100%; -} -.simple-formblock dt { - clear: left; - color: #666666; - float: left; - font-size: 1.2em; - font-weight: bold; - margin: 0; - min-width: 90px; - padding: 4px 0; - text-align: left; -} -.simple-formblock dd { - float: left; - font-size: 1.2em; - margin: 0; - padding: 4px 0 4px 15px; - width:60%; -} - -.simple-formblock .liquidsoap_status{ - width: 95%; -} - -.simple-formblock dd.block-display { - width: 100%; -} - -.stream-setting-content dd.block-display { - /*width: 60%;*/ -} - -.simple-formblock.padded-strong { - padding:12px; -} - -.simple-formblock dd .input_text { - width: 97.8%; -} - -.simple-formblock h2 { - font-size:1.7em; - padding-bottom:16px; -} -.simple-formblock label { - padding:0; -} - -.ui-button-icon-only.crossfade-main-button, .ui-button-icons-only.crossfade-main-button { - float: left; - height: 26px; - margin: 0 0 20px 0; - padding-right: 8px; -} -.ui-button-icon-only.crossfade-main-button .ui-button-text, .ui-button-icons-only.crossfade-main-button .ui-button-text { - padding: 0; - text-indent: -1e+7px; - padding: 0.1em 1em; -} - -.ui-state-default .ui-icon.crossfade-main-icon { - background:url(images/crossfade_main.png) no-repeat 0 2px; - width:25px; -} - -.ui-button-icon-only.crossfade-main-button .ui-icon { - left: 44%; - margin-left: -8px; -} - -button, input { - margin-top:0; - margin-bottom:0; -} - -.user-management { - width:910px; - /*width:380px;*/ -} -.user-management-expanded { - width:910px; -} -.user-data { - float:left; - width:420px; - margin-left:10px; - /*display:none;*/ -} -.user-list-wrapper { - float:left; - width:480px; - /*margin-right:10px;*/ -} - -.user-management div.user-list-wrapper .ui-widget-header:first-child { - background: none repeat scroll 0 0 transparent; - border-width: 0 0 1px; - color: #444444; - font-weight: bold; -} -.user-list-wrapper .ui-widget-header:first-child .dataTables_filter { - margin:0; -} -.user-management h2 { - font-size: 1.7em; - padding-bottom: 12px; -} -.user-management .dataTables_filter input { - width: 93.8%; - margin-bottom:8px; -} -.user-data.simple-formblock dd { - width: 73%; -} - -.user-data fieldset { - margin-bottom:8px; -} -.user-data fieldset:last-child { - margin-bottom:0; -} - -.user-list-wrapper .button-holder { - padding:0; - text-align:right; - height:37px; -} -.user-list-wrapper .button-holder .ui-button { - margin:0; -} -.ui-widget-content .user-list-wrapper .ui-icon.ui-icon-closethick { - background-image:url(redmond/images/ui-icons_666666_256x240.png); - cursor:pointer; - float:right; - margin-right:5px; -} -.ui-widget-content .user-list-wrapper .ui-icon.ui-icon-closethick:hover { - background-image:url(redmond/images/ui-icons_ff5d1a_256x240.png); -} - - -#ui-datepicker-div { z-index: 10 !important } - -.button-bar-top { - text-align:right; - height:38px; -} - -.toggle-button, .toggle-button-active { - border: 1px solid #505050; - background-color: #5e5e5e; - background: -moz-linear-gradient(top, #757575 0, #5e5e5e 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #757575), color-stop(100%, #5e5e5e)); - color: #ffffff; - margin:0; - font-size:12px; - padding:5px 12px; - text-decoration:none; - text-shadow: #343434 0px -1px; - border-width:1px 0 1px 1px; - cursor:pointer; -} -.toggle-button:hover { - background-color: #292929; - background: -moz-linear-gradient(top, #3b3b3b 0, #292929 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #3b3b3b), color-stop(100%, #292929)); - text-shadow: #000000 0px -1px; -} - -.toggle-button-active { - background-color: #c6c6c6; - background: -moz-linear-gradient(top, #767676 0, #c6c6c6 20%, #c6c6c6 35%, #a0a0a0 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #767676), color-stop(20%, #c6c6c6), color-stop(35%, #c6c6c6), color-stop(100%, #a0a0a0)); - color: #2e2e2e; - cursor:default; - text-shadow: #d8d8d8 0px 1px; -} -.end-button { - border-width:1px; -} - -.button-bar-top .toggle-button, .button-bar-top .toggle-button-active { - float:right; -} - -.button-bar-top .input_text { - height:25px; - margin-right:6px; - padding: 0 3px; -} -.button-bar-top .input_text.hasDatepicker, .input_text.hasDatepicker { - background-image:url(images/input_with_calendar_bg.png); - background-repeat:no-repeat; - background-position:right 0; -} -.input_text.hasTimepicker { - background-image:url(images/input_with_time_bg.png); - background-repeat:no-repeat; - background-position:right 0; -} -ul.errors { - display:block; - clear:left; - padding:3px 0 0 0; - margin:0; -} - -.formrow-repeat ul.errors { - width:278px; -} - -ul.errors li { - color:#902d2d; - font-size:11px; - padding:2px 4px; - background:#c6b4b4; - margin-bottom:2px; - border:1px solid #c83f3f; - list-style: none; -} - -div.success{ - color:#3B5323; - font-size:11px; - padding:2px 4px; - background:#93DB70; - margin-bottom:2px; - border:1px solid #488214; -} - -div.errors, span.errors{ - color:#902d2d; - font-size:11px; - padding:2px 4px; - background:#c6b4b4; - margin-bottom:2px; - border:1px solid #c83f3f; -} - -span.errors.sp-errors{ - width: 486px; - display: block; -} - -.collapsible-header, .collapsible-header-disabled { - border: 1px solid #8f8f8f; - background-color: #cccccc; - background: -moz-linear-gradient(top, #cccccc 0, #b9b9b9 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #cccccc), color-stop(100%, #b9b9b9)); - font-size:13px; - color:#353535; - font-weight:bold; - padding:6px 0 6px 20px; - margin:8px 0 0 0; - cursor:pointer; - position:relative; -} -.collapsible-content { - margin-top:-1px; - display:none; -} -.collapsible-header .arrow-icon, .collapsible-header-disabled .arrow-icon { - display:block; - background:url(images/arrows_collapse.png) no-repeat 0 0; - height:11px; - width:11px; - position:absolute; - left:5px; - top:8px; - -} -.collapsible-header.close .arrow-icon, collapsible-header-disabled.close .arrow-icon { - background-position: 0 -11px; - -} -#schedule-add-show .button-bar { - height: 28px; - margin: 0 0 8px 0; -} -#schedule-add-show .button-bar.bottom { - margin: 16px 0 0; -} -.schedule { - text-align:left; - height:38px; -} - -.add-button, .ui-widget-content a.add-button { - border: 1px solid #242424; - background-color: #353535; - background: -moz-linear-gradient(top, #494949 0, #353535 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #494949), color-stop(100%, #353535)); - color: #ffffff; - margin:0; - font-size:12px; - font-weight:bold; - padding:4px 12px 4px 22px; - text-decoration:none; - text-shadow: #000 0px -1px; - display:block; - float:left; - position:relative; -} -.add-button:hover, .ui-widget-content a.add-button:hover { - border: 1px solid #000000; - background-color: #353535; - background: -moz-linear-gradient(top, #353535 0, #000000 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #353535), color-stop(100%, #000000)); - color: #ffffff; -} -.add-button span { - position:absolute; - top:3px; - left:3px; - height:16px; - width:16px; - display:block; - background:url(redmond/images/ui-icons_ffffff_256x240.png) no-repeat; -} -.add-button:hover span { - background:url(redmond/images/ui-icons_ff5d1a_256x240.png) no-repeat; -} -.add-button span.add-icon { - background-position: -32px -128px; -} - -/*---//////////////////// NOW PLAYING COLORS ////////////////////---*/ -.playing-song, .datatable tr.playing-song:hover td { - background-color:#ff753c !important; -} -.playing-list { - background-color:#b0dcf2; -} -.odd.playing-list { - background-color:#bfe5f8; -} -.gap, .datatable tr.gap:hover td { - background-color:#da5454 !important; -} -.group, tr td.group { - background-color:#0aa2be; - color:#FFF; -} - - -/*---//////////////////// END NOW PLAYING COLORS ////////////////////---*/ -.icon-link, .ui-widget-content a.icon-link { - color: #646464; - position: relative; - text-decoration: none; - padding: 0 0 0 20px; -} -.icon-link .ui-icon { - background-image:url(redmond/images/ui-icons_666666_256x240.png); - background-repeat: no-repeat; - display: block; - height: 16px; - left: 0.2em; - margin: -3px 5px 0 0; - overflow: hidden; - position: absolute; - top: 2px; - width: 16px; -} -.icon-link:hover, .ui-widget-content a.icon-link:hover { - color: #444444; - text-decoration:underline; -} -.icon-link:hover .ui-icon { - background-image:url(redmond/images/ui-icons_454545_256x240.png); -} - -.button-bar .icon-link { - float:left; - margin:7px 0 0 1px; -} - -#show_content_dialog .datatable tr:first-child td { - border-top:none; -} - -#show_content_dialog .datatable { - margin-top:8px; -} -.simple-formblock.metadata, #side_playlist .simple-formblock.metadata { - border:none; - width:auto; - display:block; - padding: 2px; -} -#side_playlist .simple-formblock.metadata .input_text, #side_playlist .simple-formblock.metadata .input_text_area { - width:95%; -} -#side_playlist .simple-formblock.metadata.simple-formblock dd { - width:70%; -} -#side_playlist h3.plain { - float:none; - font-size:18px; - margin:2px 0 20px 0; -} - -.qtip { - font-size:11px; - line-height:160%; -} - -#schedule-show-who.scrolled { - margin-bottom: 0; - max-height:300px; - overflow:auto; -} -.text-content { - padding:20px 10px 40px 58px; - background: url(images/sf_arror.png) no-repeat 60% 0; - min-height: 300px; -} -.text-content h2 { - font-size:2.4em; - color:#1f1f1f; -} -.text-content p { - font-size:1.6em; - line-height:140%; - color:#1f1f1f; - margin:0 0 1.4em 0; -} -.text-content a { - color:#f2f2f2; - text-decoration:none; -} -.text-content a:hover { - text-decoration:underline; -} - -.text-content ol { - margin:0 0 22px 25px; - padding:0; - list-style-position:outside; -} - -.text-content ol li { - margin:0 0 6px 0; - font-size:1.7em; - display:list-item; - color:#1f1f1f; -} -.gray-logo { - margin:5px 0 0 20px; -} -.formrow-repeat { - list-style-type:none; - margin:0; - padding:0; -} -.formrow-repeat li { - list-style-type:none; - margin:0 0 8px 0; - padding:0; - display:block; -} -/* -.formrow-repeat li .ui-button-icon-only { - width:1.8em; -} -.formrow-repeat li .ui-button-icon-only .ui-button-text, .formrow-repeat li .ui-button-icons-only .ui-button-text { - padding: 3px 3px 4px; -} - -.formrow-repeat li .ui-button-icon-only .ui-icon { - left: 48%; - margin-top: -9px; - position: absolute; - top: 50%; -} -.formrow-repeat li .ui-button .ui-button-text { - display: block; - line-height: 110%; -} -*/ - -#add_show_rebroadcast_relative .ui-button-icon-only, -#add_show_rebroadcast_absolute .ui-button-icon-only { - width: 1.8em; -} -#add_show_rebroadcast_relative .ui-button-icon-only .ui-button-text, -#add_show_rebroadcast_absolute .ui-button-icon-only .ui-button-text, -#add_show_rebroadcast_relative .ui-button-icons-only .ui-button-text, -#add_show_rebroadcast_absolute .ui-button-icons-only .ui-button-text, -#add_show_rebroadcast_relative .ui-button-text-icon-primary .ui-button-text, -#add_show_rebroadcast_absolute .ui-button-text-icon-primary .ui-button-text { - font-size:12px; -} - -#add_show_rebroadcast_relative .ui-button-icon-only .ui-icon, -#add_show_rebroadcast_absolute .ui-button-icon-only .ui-icon { - margin-top: -8px; - position: absolute; - top: 50%; -} -#add_show_rebroadcast_relative .ui-button-text-icon-primary .ui-icon, -#add_show_rebroadcast_absolute .ui-button-text-icon-primary .ui-icon { - left: 0.4em; -} -#add_show_rebroadcast_relative .ui-button .ui-button-text, -#add_show_rebroadcast_absolute .ui-button .ui-button-text { - display: block; - line-height: 14px; -} - -.formrow-repeat li .inline-text { - color: #666666; - padding: 0 6px 0 0; -} -.formrow-repeat li .input_text, .formrow-repeat li .input_select { - margin-right:6px; -} -.formrow-repeat li .hasDatepicker, .formrow-repeat li .input_select { - width:95px; -} -.formrow-repeat li .hasTimepicker { - width:60px; -} -.recording-show { - float: right; - background:url(images/record_icon.png) no-repeat 0 0; - width:23px; - height:23px; -} - -.datatable td .info-icon { - margin:-4px 3px -3px 0; - float:right; -} -.time-flow { - float:right; - margin-right:4px; -} -.small-icon { - display:block; - width:20px; - height:10px; - float:right; - margin-left:3px; - margin-top:2px; -} -.small-icon.recording { - background:url(images/icon_record.png) no-repeat 0 0; - margin-top: 0px !important; -} -.small-icon.rebroadcast { - background:url(images/icon_rebroadcast.png) no-repeat 0 0; - margin-top: 0px !important; -} -.small-icon.soundcloud { - background:url(images/icon_soundcloud.png) no-repeat 0 0; - width:21px; - margin-top: 0px !important; -} -.small-icon.sc-error { - background:url(images/icon_soundcloud_error2.png) no-repeat 0 0; - width:21px; - margin-top: 0px !important; -} -.small-icon.now-playing { - background:url(images/icon_nowplaying_n.png) no-repeat 0 0; - height:8px; -} -.small-icon.progress { - background:url(images/upload-icon.gif) no-repeat; - background-color:black; - background-position:center; - border-radius:2px; - -webkit-border-radius:2px; - -moz-border-radius:2px; - margin-top: 0px !important; -} -.small-icon.alert { - background:url(images/icon_alert.png) no-repeat; - float:left; - width:13px; - margin-right:3px; - margin-left:1px; -} -.small-icon.show-empty { - background:url(redmond/images/ui-icons_ff5d1a_256x240.png) no-repeat 0 -144px; - width: 16px; - margin-top: 0px !important; -} -.medium-icon { - display:block; - width:25px; - height:12px; - float:right; - margin-left:4px; -} -.medium-icon.recording { - background:url(images/icon_record_m.png) no-repeat 0 0; - width:20px; -} -.medium-icon.rebroadcast { - background:url(images/icon_rebroadcast_m.png) no-repeat 0 0; -} -.medium-icon.soundcloud { - background:url(images/icon_soundcloud_m.png) no-repeat 0 0; - width:21px; -} -.medium-icon.nowplaying, .medium-icon.finishedplaying { - background:url(images/icon_nowplaying_m.png) no-repeat 0 0; - width:12px; - height:9px; - float:left; - margin-left:6px; - margin-right:0; -} -.medium-icon.finishedplaying { - background:url(images/icon_finishedplaying_m.png) no-repeat 0 0; -} -.preferences, .manage-folders { - width: 500px; -} - -.stream-config { - width: 1100px; -} - -.preferences .padded { - margin-top: 5px; /* Firefox needs this */ -} - -dt.block-display, dd.block-display { - display: block; - float: none; - margin-left: 0; - padding-left: 0; -} -.preferences dt.block-display, .preferences dd.block-display { - padding: 0 0 5px 0; -} -.preferences dd.block-display, .stream-config dd.block-display { - margin-bottom:4px; -} -.preferences dd.block-display:last-child, .stream-config dd.block-display:last-child { - margin-bottom:0; - padding-bottom:0; -} -.preferences input[type="radio"], .stream-config input[type="radio"] { - margin:0; -} -.preferences label input[type="radio"], .stream-config label input[type="radio"] { - margin:0 1px 0 0; -} -.preferences label input[type="checkbox"], .stream-config label input[type="checkbox"] { - margin:0 5px 0 0; -} -dd.radio-inline-list, .preferences dd.radio-inline-list, .stream-config dd.radio-inline-list { - margin-bottom:6px; -} -.radio-inline-list label { - margin-right:12px; -} -.preferences.simple-formblock dd.block-display { - width: 100%; -} - -.preferences.simple-formblock dd.block-display select, .stream-config.simple-formblock dd.block-display select { - width: 100%; -} -.preferences dd.block-display .input_select, .stream-config dd.block-display .input_select { - width: 100%; -} -.preferences dd.block-display .input_text_area, .preferences dd.block-display .input_text -.stream-config dd.block-display .input_text_area, .stream-config dd.block-display .input_text, -.stream-config dd.block-display input[type="text"], .stream-config dd.block-display input[type="password"] { - width: 98.5%; -} - -.preferences dd#SoundCloudTags-element.block-display .input_text_area { - height: 120px; -} - -#show_time_info { - font-size:12px; - height:30px; -} -#show_time_warning { - background:#c83f3f url(images/icon_alert_ffffff.png) no-repeat 5px 4px; - border:1px solid #9d1010; - color:#fff; - padding: 2px 5px 2px 24px; - font-size: 12px; - line-height: 140%; -} - -/* HACK, to be removed after 1.7.0 */ -button.ui-button.md-cancel { - padding: .4em 1em; -} - -/*--//////////////////////// Changes/add-ons Jun 8th, 2011 ////////////////////////--*/ - -.dialogPopup.ui-dialog-content { - padding: 0.9em 1em; -} -.dialogPopup dl { - margin:0; - padding:0; - clear:both; - width:100%; -} -.dialogPopup dt { - clear: left; - padding: 0; - float:left; - width:35%; -} - -.dialogPopup dt.block-display { - float:none; - width:100%; - padding: 0 0 10px; -} - -.dialogPopup dt label { - font-weight: bold; - line-height:24px; -} -.dialogPopup dd { - padding: 0; - float:left; - width:65%; - margin:0 0 6px 0; -} -.dialogPopup dd.block-display { - float:none; - width:100%; - padding: 0 0 10px; - margin:0 0 8px 0; -} -.dialogPopup fieldset dt:last-child, .dialogPopup fieldset dd:last-child { - margin:0; -} - -.info-text { - font-size:12px; - color:#5b5b5b; - line-height:150%; - padding:0 0 6px; - margin:0; - -} -.dialogPopup label input[type="checkbox"] { - float:left; - margin-right:6px; -} - -.dialogPopup fieldset { - padding: 0; - clear:both; - border:none; -} -.dialogPopup fieldset dd input[type="text"], .dialogPopup fieldset dd textarea { - width:99.5%; - padding:0; -} -.dialogPopup fieldset dd input[type="text"] { - height:23px; -} -.dialogPopup fieldset dd select { - width:100%; -} - -fieldset.display_field { - /*background-color:#d5d5d5; - box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2) inset;*/ - padding:10px; - border: 1px solid #8F8F8F; -} -label span { - font-weight:normal; -} - -.dialogPopup .display_field dt, .dialogPopup .display_field dd { - color: #353535; - float: left; - font-size: 12px; - margin: 0; - padding: 4px 0; - text-align: left; - width:auto; -} - -.dialogPopup .display_field dt { - clear: left; - font-weight:bold; - width:auto; - min-width:auto; - padding-right:8px; -} -#show_what_sending textarea { - background-color:transparent; - border:none; - box-shadow: none; - font-size: 12px; - text-indent: 0; - margin:0; - width:99%; - line-height:180%; - resize: none; -} -#show_what_sending textarea:focus { - border:none; -} -#show_what_sending dl { - overflow-x: hidden; -} - -#watched-folder-section dd.block-display input[type="text"] { - width: 63.6%; -} - -#watched-folder-section dd.block-display input[type="button"] { - border: 1px solid #5b5b5b; - background-color: #6e6e6e; - background: -moz-linear-gradient(top, #868686 0, #6e6e6e 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #868686), color-stop(100%, #6e6e6e)); - color: #ffffff; - font-family:Arial, Helvetica, sans-serif; - font-size:12px; - height:25px; - margin:0; - display:block; - margin-left:5px; - line-height:12px; - padding:0 10px 1px 10px; -} - -#watched-folder-section a { - font-size: 12px; -} - -#watched-folder-section a:hover { - text-decoration:none; - color:#FF5D1A; - cursor:pointer; -} - -#watched-folder-section dd.block-display input[type="button"]:hover { - border: 1px solid #242424; - background-color: #292929; - background: -moz-linear-gradient(top, #3b3b3b 0, #292929 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #3b3b3b), color-stop(100%, #292929)); - color: #ffffff; -} - -#watched-folder-section dd.block-display { - clear:both; - min-height:25px; - -} -#watched-folder-section dd.block-display.selected-item { - clear:both; - background:#9a9a9a; - margin:2px 0 5px 0; - width:84%; - padding:4px 8px 0; - position:relative; - min-height:22px; - border-radius: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - font-size:13px; -} - -#watched-folder-section dd.block-display.selected-item .ui-icon { - position:absolute; - top:4px; - right:5px; - cursor:pointer; -} - -#watched-folder-section dd.block-display.selected-item .ui-icon.ui-icon-refresh { - position:absolute; - top:4px; - right:20px; - cursor:pointer; - background-image:url(redmond/images/ui-icons_ffffff_256x240.png); - background-position: -128px -63px; -} - -#watched-folder-section dd.block-display.selected-item .ui-icon:hover { - background-image:url(redmond/images/ui-icons_ff5d1a_256x240.png) -} -#watched-folder-section dd.block-display input { - float:left; -} - -fieldset > legend { - color: #4F4F4F; - font-size: 12px; - line-height: 140%; -} -fieldset.closed, fieldset.display_field.closed { - border-width: 1px 0 0; - margin-bottom: -6px; - margin-left: 1px; -} - -fieldset.closed dl, fieldset.closed textarea, fieldset.closed div, fieldset.closed h2 { - display:none; -} - -fieldset legend .ui-icon, .ui-widget-content fieldset legend .ui-icon { - background-image: url(redmond/images/ui-icons_454545_256x240.png); - float: left; -} - -input[type="checkbox"][disabled] { - opacity: 0.6; -} - -.play_small { - height:11px; - width: 15px; - display:inline-block; - background:url(images/play_pause_small.png) no-repeat 0 0; - margin:0 7px 0 0; - text-indent:-9999px; - overflow:hidden; - line-height:10px; -} -.play_small:hover, .play_small.paused { - background-position: 0 -11px; -} -.play_small.paused:hover { - background-position: 0 -22px; -} - -.play_small.playing { - background-position: -20px 0; -} -.play_small.playing:hover { - background-position: -20px -11px; -} - -.info-text-small { - color: #5B5B5B; - font-size: 11px; - line-height: 150%; - margin: 0; - padding: 0 0 6px; - font-style:italic; - font-weight:normal; -} -dd .info-text-small { - padding: 1px 0 2px; - display:inline-block; -} - -.stream-config dt { - width:120px; - padding: 4px 0; -} -.stream-config dt.block-display { - width:auto; -} -.stream-config dd { - margin-bottom:0px; -} -.stream-config dd select { - width:160px; - line-height:140%; -} - -.stream-config input[type="text"] { - /*width:98.5%;*/ - min-width:152px; -} -.stream-config .display_field dd input[type="text"], .stream-config .display_field dd input[type="password"], .stream-config .display_field dd textarea { - min-width:99%; - padding: 4px 3px; -} -.stream-config .display_field dd textarea { - min-height:60px; -} -.simple-formblock .display_field dd { - min-width:68%; -} -.stream-config dd input[id$=port] { - width:152px; -} - -dt.block-display.info-block { - width: auto; - font-size:12px; - padding:10px 0; -} -.top-margin { - margin-top:10px; - float: left; -} -.left-margin { - margin-left:20px; - float: left; -} -.stream-config dd.block-display textarea { - width: 99.5%; - height: 110px; -} - -.input-info { - font-size:12px; - padding:0 0 0 5px; -} - -.stream-config dd.block-display input[type="text"].with-info, .stream-config dd.block-display input[type="password"].with-info { - width: 83.6%; -} -.stream-config dd.block-display p { - font-size:13px; - margin:4px 0 4px 2px; -} - -.stream-config #output_setting { - width: 96%; -} - -.stream-config dt.block-display, .stream-config dd.block-display { - /*float: left;*/ -} -.collapsible-header-disabled { - cursor:default; - opacity:0.6; -} - -/*---//////////////////// ERROR PAGE ////////////////////---*/ - -.error-content { - background:url(images/404.png) no-repeat 0 0; - width:300px; - margin: 24px 15px; - padding: 0px 10px 0 420px; -} -.error-content h2 { - margin:0; - padding:0 0 10px 0; - font-size:36px; - font-weight:bold; - color:#3e3e3e; - text-align:left; - letter-spacing:-.3px; - text-shadow: rgba(248,248,248,.3) 0 1px 0, rgba(0,0,0,.8) 0 -1px 0; - rgba(51,51,51,.9) -} -.error-content p { - color: #272727; - font-size: 16px; - margin: 0; - padding:8px 2px; -} -.error-content .button-bar { - margin-top:47px; - padding-left:2px; -} -.error-content .toggle-button { - border: 1px solid #434343; - border-width:1px 1px 0px 1px; - background-color: #636363; - background: -moz-linear-gradient(top, #737373 0, #545454 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #737373), color-stop(100%, #545454)); - color: #1b1b1b; - font-size:15px; - font-weight:bold; - padding:5px 14px 6px 15px; - text-shadow: rgba(248,248,248,.24) 0 1px 0; - box-shadow: rgba(248,248,248,.3) 0px 1px 0px, rgba(0, 0, 0, 0.2) 0 2px 2px inset; - -moz-box-shadow: rgba(248,248,248,.3) 0px 1px 0px, rgba(0, 0, 0, 0.2) 0 2px 2px inset; - -webkit-box-shadow: rgba(248,248,248,.3) 0px 1px 0px, rgba(0, 0, 0, 0.2) 0 2px 2px inset; - margin: 0 5px 0 0; -} -.error-content .toggle-button:hover { - border: 1px solid #000; - border-width:1px 1px 0px 1px; - background-color: #353535; - background: -moz-linear-gradient(top, #393939 0, #000000 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #393939), color-stop(100%, #000000)); - color: #ff5d1a; - text-shadow:none; - box-shadow: rgba(248,248,248,.3) 0px 1px 0px, rgba(0, 0, 0, 0.6) 0 2px 2px inset; - -moz-box-shadow: rgba(248,248,248,.3) 0px 1px 0px, rgba(0, 0, 0, 0.6) 0 2px 2px inset; - -webkit-box-shadow: rgba(248,248,248,.3) 0px 1px 0px, rgba(0, 0, 0, 0.6) 0 2px 2px inset; -} - -/*---//////////////////// DEFAULT TABLE ////////////////////---*/ - -table { - border-color: #5b5b5b; - border-style: solid; - border-width: 0; -} -tbody tr th { - color: #000000; - background-color: #b1b1b1; - background: -moz-linear-gradient(top, #bebebe 0, #a2a2a2 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #bebebe), color-stop(100%, #a2a2a2)); - font-size: 13px; - padding: 5px 5px; - border-color: #b1b1b1; - border-style: solid; - border-width: 1px 0 0 1px; - border-top-color: #5b5b5b; - text-align:left; -} -thead tr th { - color: #FFFFFF; - font-size: 12px; - padding: 5px 5px; - border-color:#CCCCCC; - background-color: #6e6e6e; - background: -moz-linear-gradient(top, #868686 0, #6e6e6e 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #868686), color-stop(100%, #6e6e6e)); - border-style: solid; - border-width: 0 0 0 1px; -} -tr td { - border-color: #b1b1b1; - border-style: solid; - border-width: 0; - font-size: 12px; - padding: 5px 5px; -} -tfoot tr td, tfoot tr th { - color:#FFFFFF; - background-color: #6e6e6e; - background: -moz-linear-gradient(top, #6e6e6e 0, #868686 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #6e6e6e), color-stop(100%, #868686)); - font-size: 13px; - padding: 5px 5px; - border-color: #b1b1b1; - border-style: solid; - border-width: 1px 0 0 1px; -} -tfoot tr th { - font-weight:bold; - text-align:left; -} - - -/*---//////////////////// STATUS TABLE ////////////////////---*/ -.statustable { - background-color: #D8D8D8; - border-width: 2px 1px 1px; -} -.statustable tr td, .statustable tr th { - text-align:center; - vertical-align:text-top; - font-size:13px; -} -.statustable tr td { - border-width: 1px 0 0 1px; -} -.statustable tr td:first-child, .statustable tr th:first-child { - text-align:left; - border-left-width: 0 !important; -} -.checked-icon { - width:100%; - margin:0; - background: url("images/accept.png") no-repeat center center; - height:16px; - margin:0; - display:block; -} -.not-available-icon { - width:100%; - margin:0; - background: url("images/delete.png") no-repeat center center; - height:16px; - margin:0; - display:block; -} -.warning-icon { - width:100%; - margin:0; - background: url("images/warning-icon.png") no-repeat center center; - height:16px; - margin:0; - display:block; -} -.statustable ul { - margin:4px 0; - padding:0; - list-style-type: none; -} -.statustable ul li { - background:#bbb; - margin:2px 0 6px 0; - padding:4px 8px 0; - position:relative; - min-height:22px; - border-radius: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - font-size:13px; -} -.statustable .big { - width:120px; - height:10px; - background:#444444; - background: -moz-linear-gradient(top, #464646 0, #3e3e3e 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #3e3e3e), color-stop(100%, #464646)); - border-bottom:1px solid #fff; - margin: 0 auto; - padding: 1px; - display:inline-block; -} -.diskspace { - background-color:#e76400; - background: -moz-linear-gradient(top, #ff6f01 0, #bc5200 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ff6f01), color-stop(100%, #bc5200)); - height:10px; -} -.statustable a { - color: #222; - text-decoration: underline; -} - -.statustable a:visited { - color: #666; - text-decoration: underline; -} -.statustable a:hover { - color: #e76400; - text-decoration: underline; -} -.strong { - font-weight:bold; -} - - -/*---//////////////////// PLUPLOAD ERROR ////////////////////---*/ - -#plupload_error{ - margin-top:10px; -} - -#plupload_error table { - color:red; - border:1px solid #c83f3f; - background:#c6b4b4; - display:none; -} -#plupload_error table td { - color:#902d2d; - font-size:12px; - font-weight:bold; - padding:2px 4px; - margin-bottom:2px; - border:none; - margin:0; -} - -/*---//////////////////// TRIAL BOX HEADER ////////////////////---*/ - -.trial-box { - width:142px; - height:38px; - display:block; - position:fixed; - left:20px; - bottom:10px; - background-color:#222; - background-color:rgba(0, 0, 0, 0.7); - z-index:100; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - color:#FFF; - font-size:11px; - padding:7px; -} -.trial-box p { - padding:0 0 3px 0; - margin:0 0 5px 0; - float:left; -} -.trial-box-button a { - width:92px; - height:14px; - display:block; - padding: 1px 3px; - -moz-border-radius: 1px; - -webkit-border-radius: 1px; - border-radius: 1px; - text-transform:uppercase; - text-align:center; - font-family:Arial, Helvetica, sans-serif; - font-weight:bold; - text-decoration:none; - color:#FFFFFF; - background-color:#ff5d1a; - background: -moz-linear-gradient(top, #ff5d1a 0, #dd4202 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ff5d1a), color-stop(100%, #dd4202)); - box-shadow: rgba(248, 248, 248, 0.4) 0 1px 1px inset; - -moz-box-shadow: rgba(248, 248, 248, 0.4) 0 1px 1px inset; - -webkit-box-shadow: rgba(248, 248, 248, 0.4) 0 1px 1px inset; - float:left; -} -.trial-box-button a:hover { - background-color:#dd4202; - background: -moz-linear-gradient(top, #dd4202 0, #ff5d1a 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #dd4202), color-stop(100%, #ff5d1a)); - box-shadow: rgba(248, 248, 248, 0.4) 0 1px 1px inset; - -moz-box-shadow: rgba(248, 248, 248, 0.4) 0 1px 1px inset; - -webkit-box-shadow: rgba(248, 248, 248, 0.4) 0 1px 1px inset; -} -.trial-box-calendar { - float:right; - text-align:center; - font-weight:bold; -} -.trial-box-calendar-white { - font-size:18px; - color:#ff5d1a; - background:#FFF; - width:36px; - height:22px; - display:block; - -webkit-border-top-right-radius: 1px; - -moz-border-radius-topright: 1px; - -webkit-border-top-left-radius: 1px; - -moz-border-radius-topleft: 1px; -} -.trial-box-calendar-gray { - width:36px; - height:14px; - display:block; - color:#FFF; - font-size:11px; - padding:1px 0; - text-transform:uppercase; - background-color:#676767; - background: -moz-linear-gradient(top, #7f7f7f 0, #555555 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #7f7f7f), color-stop(100%, #555555)); - -webkit-border-bottom-right-radius: 1px; - -moz-border-radius-bottomright: 1px; - -webkit-border-bottom-left-radius: 1px; - -moz-border-radius-bottomleft: 1px; - box-shadow: rgba(0, 0, 0, 0.4) 0 2px 1px inset; - -moz-box-shadow: rgba(0, 0, 0, 0.4) 0 2px 2px inset; - -webkit-box-shadow: rgba(0, 0, 0, 0.4) 0 2px 2px inset; -} -#stream_url {font-size:12px; line-height: 170%;} -.stream-setting-content fieldset {border-width:0 1px 1px 1px;} - -.stream-setting-content fieldset { - border-width: 0 1px 1px; -} -.stream-setting-content fieldset.display_field { - border: 1px solid #8F8F8F; - padding: 10px; -} -.stream-setting-content fieldset.display_field.closed { - border-width: 1px 0 0; -} - -/*---//////////////////// STREAM SETTINGS STATUS ////////////////////---*/ -.stream-status { - border: 1px solid; - padding:2px 10px 4px 22px; - margin:2px 1px 10px 0px; - width: auto; -} -dd .stream-status { - margin-bottom:1px; -} -.stream-status h3 { - font-size: 12px; - font-weight: bold; - line-height: 12px; - padding:0; - margin:5px 4px 2px 4px; -} -.stream-status p { - padding:0; - margin:2px 3px 1px 4px; - color:#4F4F4F; - font-size: 11px; -} -.stream-config dd.stream-status { - padding:2px 10px 4px 22px; - margin:4px 0 10px 14px; - width: 65%; -} -.status-good { - background:#e3ffc9 url(images/stream_status.png) no-repeat 5px 5px; - border-color:#54b300; -} -.status-good h3 { - color:#54b300; -} -.status-error { - background:#ffeded url(images/stream_status.png) no-repeat 5px -128px; - border-color:#f90000; -} -.status-error h3 { - color:#DA0101; -} -.status-info { - background:#fff7e0 url(images/stream_status.png) no-repeat 5px -278px; - border-color:#f68826; -} -.status-info h3 { - color:#f1830c; -} -.status-disabled { - background:#c8ccc8 url(images/stream_status.png) no-repeat 5px -429px; - border-color:#7f827f; -} -.status-disabled h3 { - color:#646664; -} - -.stream-setting-global dt{ - width: 195px; -} - -.stream-setting-global dd{ - width: auto; -} - -.qtip div > span { - padding: 5px; -} - -.pull-left { - float:left; -} -.pull-right { - float:right; -} -.push-down-8 { - margin-top:8px !important -} -.push-down-12 { - margin-top:12px !important -} -.push-down-16 { - margin-top:16px !important -} -.close-round { - display:block; - float:right; - height:18px; - width:18px; - background:url(images/round_delete.png) no-repeat 0 0; - text-indent: 100%; - white-space: nowrap; - overflow: hidden; - margin: 3px 0 0 10px; - } -.close-round:hover { - background-position:0 -36px; -} -.close-round:active { - background-position:0 -36px; -} - - -/*---//////////////////// NEW BUTTONS ////////////////////---*/ -.btn { - display: inline-block; - *display: inline; - /* IE7 inline-block hack */ - - *zoom: 1; - padding: 4px 10px 4px; - margin-bottom: 0; - font-size: 13px; - line-height: 18px; - color: #fff; - text-align: center; - vertical-align: middle; - background-image: -moz-linear-gradient(top, #a3a3a3, #6e6e6e); - background-image: -ms-linear-gradient(top, #a3a3a3, #6e6e6e); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#a3a3a3), to(#6e6e6e)); - background-image: -webkit-linear-gradient(top, #a3a3a3, #6e6e6e); - background-image: -o-linear-gradient(top, #a3a3a3, #6e6e6e); - background-image: linear-gradient(top, #a3a3a3, #6e6e6e); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#a3a3a3', endColorstr='#6e6e6e', GradientType=0); - border:1px solid #575757; - border-bottom-color: #333333; - filter: progid:dximagetransform.microsoft.gradient(enabled=false); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.05); - cursor: pointer; - *margin-left: .3em; -} - - -.btn.disabled, -.btn[disabled] { - background: #fff; -} -.btn:active, -.btn.active { - background-color: #cccccc \9; -} -.btn:first-child { - *margin-left: 0; -} -.btn:hover { - color: #fff; - text-decoration: none; - background-color: #e6e6e6; - background-image: -moz-linear-gradient(top, #868686, #535353); - background-image: -ms-linear-gradient(top, #868686, #535353); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#868686), to(#535353)); - background-image: -webkit-linear-gradient(top, #868686, #535353); - background-image: -o-linear-gradient(top, #868686, #535353); - background-image: linear-gradient(top, #868686, #535353); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#868686', endColorstr='#535353', GradientType=0); -} - -.btn.active, -.btn:active { - background-image: none; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.3), 0 1px 0 rgba(255, 255, 255, 0.2); - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.3), 0 1px 0 rgba(255, 255, 255,0.2); - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.3), 0 1px 0 rgba(255, 255, 255, 0.2); - background-color: #727272; - outline: 0; - border-top-color:#333333 -} +@charset "utf-8"; +/* CSS Document */ + +body { + font-size: 62.5%; + font-family:Arial, Helvetica, sans-serif; + background: #7f7f7f; + margin: 0; + padding: 0; +} +html, body { + height: 100%; +} + +#login-page { + background: #1f1f1f url(images/login_page_bg.png) no-repeat center 0; + margin: 0; + padding: 0; + height:100%; + text-align:center; +} + +h2 { + color: #000000; + font-size: 2.1em; + font-weight: normal; + margin: 0; + padding: 0 0 10px; +} +h3 { + font-size:1.7em; + font-weight:normal; + color:#000; + padding:0 0 10px 0; + margin:0; +} +a, a:focus { + outline:none; +} +label { + font-size:12px; +} +select { + font-size:12px; + font-family:Arial, Helvetica, sans-serif; + border:1px solid #9d9d9d; +} + +.logo { + position:absolute; + right:20px; + top:104px; + background:transparent url(images/airtime_logo.png) no-repeat 0 0; + height:35px; + width:66px; + z-index:1000; + display:block; +} + +/* Version Notification Starts*/ +#version-icon { + position:absolute; + right:96px; + top:104px; + height:35px; + width:35px; + z-index:1000; + display:block; + cursor:pointer; + background-repeat:no-repeat; + background-position:center; +} +#version-icon.outdated { + background-image:url(/css/images/icon_outdated.png); +} +#version-icon.update2 { + background-image:url(/css/images/icon_update2.png); +} +#version-icon.update { + background-image:url(/css/images/icon_update.png); +} +#version-icon.uptodate { + background-image:url(/css/images/icon_uptodate.png); +} + +#ui-tooltip-version a { + color:#ff5d1a; + text-decoration:none; +} + +#ui-tooltip-version { + font-size: 14px; +} +/* Version Notification Ends*/ + +.override_help_icon, .icecast_metadata_help_icon { + cursor: help; + position: relative; + + display:inline-block; zoom:1; display:inline; + width:14px; height:14px; + background:url(/css/images/icon_info.png) 0 0 no-repeat; + float:right; position:relative; top:2px; right:7px; + line-height:16px !important; +} + +.airtime_auth_help_icon, .custom_auth_help_icon, .stream_username_help_icon, .playlist_type_help_icon { + cursor: help; + position: relative; + display:inline-block; zoom:1; + width:14px; height:14px; + background:url(/css/images/icon_info.png) 0 0 no-repeat; + top:2px; right:7px; left: 3px; + line-height:16px !important; +} + +/* Clearfix */ +.clearfix:after, #side_playlist li:after { content: "."; display: block; height: 0; clear: both; visibility: hidden;} +.clearfix, #side_playlist li { display: inline-block; } +* html .clearfix, * html li { height: 1%;} +.clearfix, #side_playlist li { display: block; } + + +/* Master Panel */ +#sticky { + position:fixed; + height:130px; + top:0; + left:0; +} + + +#master-panel { + background:#3d3d3d url(images/masterpanel_bg.png) repeat-x 0 0; + height:100px; + border:1px solid #000; + border-width: 1px 0; + overflow:hidden; + position:relative; +} + +.now-playing-block, .show-block, .on-air-block, .time-info-block, .personal-block, .listen-control-block, .trial-info-block, .source-info-block { + height:100px; + float:left; + margin-right:10px; +} +.personal-block { + float:right; + margin-right:20px; + text-align:right; + min-width:110px; +} + +.personal-block ul { + margin:0; + padding:8px 0 0; +} +.personal-block li { + font-size:11px; + color:#bdbdbd; + list-style-type:none; + margin:0 0 2px 0; +} +.personal-block li.name { + color:#fff; + font-weight:normal; +} +.personal-block li a { + color:#fff; + text-decoration:underline; +} +.personal-block li a:hover { + color:#ff5d1a; +} +.now-playing-block { + width:30%; + padding-left:20px; +} +.show-block { + width:18%; +} +.text-row { + height:30px; + padding:0px 0 0; + font-size:12px; + text-wrap:none; + text-indent:2px; + overflow:hidden; + line-height:30px; +} +#master-panel .text-row { + color:#dfdfdf; +} +.text-row.next-song { + color:#d9d9d9; +} +.text-row strong { + font-weight:bold; + color:#969696; + padding-right:12px; +} +.text-row.rebroadcast, #master-panel .text-row.rebroadcast { + color:#969696; +} +.now-playing-info { + height:25px; + background:#3a3a3a url(images/playinfo_bg.png) repeat-x 0 0; + border: 1px solid #242424; + border-bottom-color:#727272; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + color:#fff; + font-size:15px; + line-height:22px; + text-indent:5px; + overflow:hidden; + margin-bottom:3px; +} +.time-elapsed { + color:#9b9b9b; + padding-right:6px; +} +.time-remaining { + color:#ff6f01; +} +.progressbar { + height:6px; + border:1px solid #242424; + border-width:1px 1px 0 1px; + background:#141414 url(images/progressbar_bg.png) repeat-x 0 0; +} +.progressbar .progress-song, .progressbar .progress-show, .progressbar .progress-show-error { + height:4px; + width:0%; + background:#f97202 url(images/progressbar_song.png) repeat-x 0 0; +} +.progressbar .progress-show { + background:#02cef9 url(images/progressbar_show.png) repeat-x 0 0; +} +.progressbar .progress-show-error { + background:#d40000 url(images/progressbar_show_error.png) repeat-x 0 0; +} +.now-playing-info .show-length { + color:#c4c4c4; + padding-left:6px; +} + +.on-air-block { + padding:0 12px 0 0; + background:url(images/masterpanel_spacer.png) no-repeat right 0; +} +.time-info-block { + padding:0 14px 0 2px; + background:url(images/masterpanel_spacer.png) no-repeat right 0; + min-width:105px; +} +.time-info-block ul { + margin:0; + padding:6px 0 0; +} +.time-info-block li { + list-style-type:none; + font-size:14px; + color:#bdbdbd; + margin:0 0 6px; +} +.time-info-block li.time { + font-size:26px; + color:#fff; + width:auto; + text-align:left; +} +.time-info-block li.time-zone { + font-size:17px; + margin-bottom:0; +} +.listen-control-block a, .listen-control-button { + font-size:11px; + text-transform:uppercase; + padding:0; + border:1px solid #242424; + color:#fff; + text-decoration:none; + font-weight:bold; + margin-top:34px; + display:block; + text-align:center; + +} +.listen-control-button { + margin-top:6px; +} +.listen-control-block a span, .listen-control-button span { + background-color: #6e6e6e; + background: -moz-linear-gradient(top, #868686 0, #6e6e6e 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #868686), color-stop(100%, #6e6e6e)); + padding:5px 10px; + border:1px solid #a1a1a1; + border-width:1px 0; + border-bottom-color:#646464; + color:#dcdcdc; + text-shadow: #555555 0px -1px; + display:block; +} +.listen-control-button span { + padding:2px 10px; +} +.listen-control-block a:hover, .listen-control-button:hover { + border:1px solid #000; +} +.listen-control-block a:hover span, .listen-control-button:hover span { + background-color: #292929; + background: -moz-linear-gradient(top, #3b3b3b 0, #292929 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #3b3b3b), color-stop(100%, #292929)); + border:1px solid #555555; + border-width:1px 0; + border-bottom-color:#1e1e1e; + color:#fff; + color:#0C0; + text-shadow: #000 0px -1px; + display:block; +} +.listen-control-block a:active span { + color:#fff; +} + +/* END Master Panel */ + + +.wrapper { + margin: 0 5px 0 5px; + padding:10px 0 0 0; +} + +.alpha-block { + padding:0; + float:left; + margin:0 16px 10px 0; +} +.omega-block { + padding:0; + float:left; + margin:0 0 10px 0; +} +.block-shadow { + -moz-box-shadow: 0 2px 2px rgba(0,0,0,.10); + -webkit-box-shadow: 0 2px 2px rgba(0,0,0,.10); + box-shadow: 0 2px 2px rgba(0,0,0,.10); +} +.clear { + clear: both; + display: block; + height: 0; + overflow: hidden; + visibility: hidden; + width: 0; +} +fieldset.plain { + border:none; + padding:0; + margin:0; +} +.frame { + padding:0; + border:1px solid #5b5b5b; + margin: 0 0 8px 0; +} +.padded { + padding:8px; +} +.padded-strong { + padding:10px; +} +.input_text, input[type="text"], input[type="password"] { + font-family:Arial, Helvetica, sans-serif; + border: 1px solid #5b5b5b; + font-size: 12px; + /*height: 23px;*/ + margin: 0; + padding: 4px 3px; + /*text-indent: 3px;*/ + width:auto; + background-color: #dddddd; + border: 1px solid #5b5b5b; + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2) inset; +} + +input[readonly]{ + background-color:#b1b1b1 +} + +input[type="text"]:focus, input[type="password"]:focus, textarea:focus, .input_text_area:focus { + border: 1px solid #0088f1; + outline: none; +} +.auto-search { + background:#dddddd url(images/search_auto_bg.png) no-repeat 0 0; + text-indent:25px; +} +.input_text_area, textarea { + background-color: #dddddd; + border: 1px solid #5b5b5b; + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2) inset; + font-size: 13px; + text-indent: 3px; + margin:0; +} +.input_select, select { + background-color: #DDDDDD; + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2) inset; + border: 1px solid #5b5b5b; + font-family: Arial,Helvetica,sans-serif; + font-size: 12px; + height: 25px; + margin: 0; + padding: 2px 2px 2px 0; + vertical-align: top; +} + +/***** LIBRARY QTIP METADATA SPECIFIC STYLES BEGIN *****/ +table.library-track-md{ + width: 280px; +} + +.ui-tooltip-dark.file-md-long{ + max-width: 415px !important; +} + +.library-get-file-md tr td, .library-track-md tr td{ + font-size:10px; + padding: 0px; + vertical-align:top; +} + +table.library-get-file-md{ + margin-left:15px; + margin-right:15px; + width:350px; +} + +table.library-get-file-md.table-small{ + width: 290px !important; +} + +.file-md-qtip-nowrap{ + white-space: nowrap; + overflow: hidden; +} + +.file-md-qtip-criteria-width-small{ + width:70px; + max-width: 70px; +} + +.file-md-qtip-criteria-width{ + width:110px; + max-width: 110px; +} + +.file-md-qtip-row-width-title{ + width:170px; + max-width: 170px; + padding-right:5px !important; +} + +.file-md-qtip-row-width-artist{ + width:110px; + max-width: 110px; +} + +.file-md-qtip-row-width-small{ + width:40x; + max-width: 40px; + text-align:right; +} + +.file-md-qtip-playlist td{ + font-weight: bold; + font-style: italic; +} + +.file-md-qtip-left{ + float: left; + width: 60%; +} + +.file-md-qtip-legend { + float: right; + width: 30%; + font-size: 9px; + padding: 0px; + vertical-align:top; + line-height: 13px; +} +.static { + color: #f09839; +} +.dynamic { + color: #63a2f0; +} +.webstream { + color: #4eba70; +} + +/***** LIBRARY QTIP METADATA SPECIFIC STYLES END *****/ + + +/***** SMART BLOCK SPECIFIC STYLES BEGIN *****/ +.sp-invisible{ + visibility: hidden; +} + +.sp_input_select{ + width: 130px; +} + +.sp_input_text_limit{ + width: 75px !important; +} + +.sp_no_margins{ + margin-left: 0px !important; + margin-right: 0px !important; +} + +input.input_text.sp_input_text{ + width: 200px !important; +} + +input.input_text.sp_extra_input_text{ + width: 87px !important; +} + +.sp_text_font{ + font-size: 13px; + font-family: Helvetica, Arial, sans-serif; + color: #5B5B5B; +} + +.sp_text_font_bold{ + font-weight: bold; +} + +.sp-ui-button-icon-only { + position: relative; + top: 5px; + margin-top: -10px; + margin-left: 5px; +} + +.sp-ui-button-icon-only .ui-icon-closethick:hover, .sp-ui-button-icon-only .ui-icon-plusthick:hover { + background-image:url(redmond/images/ui-icons_ff5d1a_256x240.png) +} + +.sp-button{ + float: right !important; + width: 60px; + height: 24px !important; + margin-right: 0px !important; + margin-left: 10px !important; +} + +.sp-save{ + margin-left: 7px !important; +} + +.sp-checked-icon{ + width: 16px !important; + display: inline-block !important; +} + +.sp-warning-icon{ + margin: 0; + background-image: url(redmond/images/ui-icons_ff5d1a_256x240.png); + background-repeat: no-repeat; + background-position: 0px -140px; + height:16px; + width: 16px; + display: inline-block; +} + +.sp-label{ + padding: 0px !important; +} + +.sp-closed{ + border-width: 0 0 0 !important; +} +/***** SMART BLOCK SPECIFIC STYLES END *****/ + +label { + font-size:13px; + color:#5b5b5b; + padding:0 16px 0 0; +} +.static_text { + font-size:13px; + color:#3b3b3b; + padding:0 16px 0 0; + word-wrap: break-word; +} +#library_quick_search { + margin-bottom:16px; +} +#library_quick_search label { + +} +#library_quick_search input { + width:60%; +} +dl.inline-list { + float: left; + margin: 0; + padding: 0; + +} + +dl.inline-list dt { + clear: left; + float: left; + margin: 0; + padding: 0px 0; + font-weight: bold; + color:#333333; + font-size:12px; + font-weight:bold; + text-align:left; + min-width:70px; +} +dl.inline-list dd { + float: left; + margin: 0; + padding: 0px 0 4px 15px; + font-size:12px; +} +.left-floated { + float:left; + margin-left:0; + margin-right:10px; +} +.right-floated { + float:right; + margin-left:10px; + margin-right:0; + text-align:right; +} +/*----Data Table----*/ + +.datatable tr th.ui-state-default { + border: 1px solid #CCC; + border-width: 0 0 0 1px !important; +} +.datatable { + border-color: #5b5b5b; + border-style: solid; + border-width: 1px 1px 1px 1px; + width:100%; +} + +.datatable th { + text-align: left; +} + +.datatable tr td, .datatable tr th { + border-color: #b1b1b1; + border-style: solid; + border-width: 1px 0 0 1px; + font-size: 13px; + padding: 5px 5px; +} +.odd { + background-color: #d8d8d8; +} +.even { + background-color:#c7c7c7; +} + +.datatable tr.even.selected td { + background-color: #abcfe2; +} +.datatable tr.odd.selected td { + background-color: #c5deeb; +} +.datatable tr.odd:hover td, .datatable tr.even:hover td { + background-color: #95d5f7 !important; +} + +.datatable tr td:first-child, .datatable tr th:first-child, .datatable tr th.ui-state-default:first-child { + border-left-width:0 !important; +} +.ui-widget-header + .datatable { + border-width: 0px 1px 1px 1px; +} +.datatable + .ui-widget-header { + border-width: 0px 1px 1px 1px; +} +.dataTables_scrollHeadInner > .datatable { + border-width: 0px 1px 0 1px; +} +.dataTables_scroll .datatable { + border-width: 0px 1px 0 1px; +} + +.dataTables_scrolling { + overflow: auto; +} + +.dataTables_scrolling table{ + border-width: 0px 1px 0 1px; +} + +.DataTables_sort_wrapper .ui-icon { + display: block; + float: left; + margin: 0 3px 0 -2px; +} +.dataTables_type { + float:right; + margin:0 8px 0 0; + +} + +.dataTables_length { + float:right; + margin:0; + +} +.dataTables_length label { + padding:0; + font-size:12px; + color:#404040; + line-height:24px; +} +.dataTables_filter { + margin:0 0 8px 8px; +} +.dataTables_filter .auto-search { + width:55%; +} +.dt-process-rel { + position: relative; +} +.dataTables_processing { + opacity: 1 !important; + position: absolute; + top: 100px; + left: 10%; + width: 80%; + height: 50px; + text-align: center; + font-size:14px; + font-weight:bold; + padding-top: 40px; + background: -moz-linear-gradient(top, #b2b2b2 0, #a2a2a2 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #b2b2b2), color-stop(100%, #a2a2a2)); + background: linear-gradient(top, #b2b2b2 0, #a2a2a2 100%); + border: 1px solid #8F8F8F; + color: #ffffff; +} +#library_display_wrapper .ui-widget-header:first-child { + background:none; + border-width:0 0 1px 0; + color: #444444; + font-weight: bold; +} +#library_display_wrapper .ui-widget-header:first-child .dataTables_length { + margin:0; +} +#library_display_wrapper .ui-widget-header:first-child .dataTables_filter { + margin:0; +} + +.dataTables_info { + float: left; + padding: 8px 0 0 8px; + font-size:12px; + color:#555555; + font-weight:normal; +} + +.dataTables_paginate { + float: right; + padding: 8px 0 8px 8px; + clear: left; +} +.dataTables_paginate .ui-button { + font-size:12px; + font-weight:normal; + padding: 0.2em 1em; + margin-right:3px; +} +.dataTables_filter input { + background: url("images/search_auto_bg.png") no-repeat scroll 0 0 #DDDDDD; + width: 40%; + border: 1px solid #5B5B5B; + margin-left: -8px; + padding: 5px 3px 4px 25px; +} +.dataTables_length select { + background-color: #DDDDDD; + border: 1px solid #5B5B5B; + font-family: Arial,Helvetica,sans-serif; + font-size: 12px; + height: 25px; + margin: 0; + padding: 2px 2px 2px 0; + vertical-align: top; +} +table.dataTable tbody tr, +table.dataTable span.DataTables_sort_icon { + cursor: pointer; +} + +table.dataTable th.ui-state-default { + background: -moz-linear-gradient(top, #b2b2b2 0, #a2a2a2 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #b2b2b2), color-stop(100%, #a2a2a2)); + background: linear-gradient(top, #b2b2b2 0, #a2a2a2 100%); + border: 1px solid #8F8F8F; + color: #363636; +} + +.ColVis.TableTools .ui-button { + height: 21px; +} +button.ColVis_Button.ColVis_ShowAll { + text-align: center; + margin-top: 10px; +} +.library_toolbar .ui-button, .ColVis.TableTools .ui-button { + float: right; + text-align:center; + font-size:12px; + font-weight:normal; + padding: 0.2em 1em; + margin: 0.5em 7px -0.5em -2px; +} + +.library_length { + text-align: right; +} + +/*----END Data Table----*/ + +fieldset { + border: 1px solid #8f8f8f; + margin: 0; + padding: 0; +} +fieldset.plain { + border: none; + margin: 0; + padding: 0; +} +input[type="checkbox"] { + margin:0; + outline:none; + padding:0; + width:13px; + height:13px; +} +/*---//////////////////// LOGIN & PASSWORD RESET ////////////////////---*/ + +.login_box { + margin: 0 auto 0 auto; + text-align:center; + width:420px; + border:1px solid #181818; + border-width: 0 0 1px 0; + padding:0; + padding-top:60px; +} + +.login_box h2 { + background:#1f1f1f; + background: -moz-linear-gradient(center top , #2c2c2c 0pt, #1f1f1f 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #2c2c2c), color-stop(100%, #1f1f1f)); + border:1px solid #181818; + border-top-color:#4f4f4f; + margin:0; + padding:8px 0 8px 20px; + font-size:15px; + font-weight:bold; + color:#bebebe; + text-align:left; + -moz-box-shadow: 0 2px 2px rgba(0,0,0,.10); + -webkit-box-shadow: 0 2px 2px rgba(0,0,0,.10); + box-shadow: 0 2px 2px rgba(0,0,0,.10); +} +.login_box p { + margin:0; + padding:8px 0 16px 0; + font-size:12px; + color:#717171; + text-align:left; +} +.logobox { + height:120px; + text-align:center; + background:url(images/airtime_logo_big.png) no-repeat 50% 0; +} + +.login { + margin:2px 0 0 4px; + border:none; + background:none; + text-align:left; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.login td { + border:none; + background-color:transparent; + color:#696969; +} + +.login h2 { + padding:7px 0 10px 0; +} + +.light { + color:#1683b0; +} +.alert { + color:#C00; +} + +.login-content { + background:url(images/login_content_bg.png) no-repeat 0 bottom; + padding:10px 20px 14px; + text-align:left; +} +.login-content dl, .login-content dl.zend_form { + margin: 12px 0 0 0; + margin-bottom:8px; + margin:0; + padding:0; + width:100%; +} + +.login-content dd { + /*float: left;*/ + font-size: 1.2em; + margin: 0; + padding: 0 0 9px 0; + display:block; +} +.login-content dt { + color: #666666; + /*float: left;*/ + font-size: 1.2em; + font-weight: bold; + margin: 0; + padding: 0 0 6px 0; + text-align: left; + min-width:90px; + clear:left; + display:block; +} + +dt.block-display, dd.block-display { + display:block; + float:none; + margin-left:0; + padding-left:0; +} + +.login-content dt label { + padding-right:0; + color:#a8a8a8; +} +.login-content dd .input_text, .login-content dd input[type="text"], .login-content dd input[type="password"] { + width:99%; + font-size:14px; + padding: 6px 0 6px 3px; +} +.login-content dd input.ui-button, .login-content dd input.btn { + width:100%; + font-size:14px; + padding: 6px 10px 6px; +} + +.login-content dd button.ui-button, .login-content dd button.btn { + width:100%; + font-size:14px; + padding: 6px 10px 6px; +} +.login-content .hidden, .hidden { + display:none; +} +.login-content .text-right, .text-right { + text-align:right; +} +.login-content .link { + color:#FF5D1A; + text-decoration:none; + } + .login-content .link:hover { + text-decoration:underline; + } + +/*---//////////////////// END LOGIN ////////////////////---*/ + + +/*---//////////////////// FOOTER ////////////////////---*/ +.footer { + display:block; + height:40px; + clear:both; + color:#4b4b4b; + margin-top:12px; + font-size:11px; + line-height:140%; + text-align:center; + padding:10px 0 0 0; +} + +.footer a { + color:#ff5d1a; + text-decoration:none; +} +#login-page .footer { + color:#6d6d6d; +} +.footer a:hover { + color:#ff5d1a; + text-decoration:underline; +} +/*---//////////////////// END FOOTER ////////////////////---*/ + +.button-bar { + height: 28px; + margin-top:12px; +} +/*.sticky { + padding:0; + width:100%; + z-index:2000; + position:fixed; + top:0; + left:0; + margin-bottom:140px; +}*/ +.sticky { + padding:0; + width:100%; +} + +.floated-panel { + margin-top:0; + width:99.99%; + z-index:999; +} + + +/*---//////////////////// Schedule Show ////////////////////---*/ + + +#schedule_playlist_dialog .wrapp-two { + float: left; + width: 50%; + padding: 0; +} + +#schedule_playlist_dialog .wrapp-one { + margin-right:2%; + width: 48%; + float: left; +} + +#schedule_playlist_dialog div:first-child .ui-widget-header:first-child { + background: none repeat scroll 0 0 transparent; + border-width: 0 0 1px; + color: #444444; + font-weight: bold; +} + +#schedule_playlist_dialog div:first-child .ui-widget-header:first-child { + background: none repeat scroll 0 0 transparent; + border-width: 0 0 1px; + color: #444444; + font-weight: bold; +} +#schedule_playlist_dialog .ui-widget-header:first-child .dataTables_filter, +#schedule_playlist_dialog .ui-widget-header:first-child .dataTables_length { + margin: 0; +} + +.ui-dialog #schedule_playlist_dialog.ui-dialog-content { + padding:0; +} + + +#schedule_playlist_dialog > div { + background: none repeat scroll 0 0 transparent; + border: 1px solid #8f8f8f; + padding: 8px; + margin:8px 8px 0 8px; +} + + +#schedule_playlist_dialog > div h4 { + padding: 13px 0 12px 0; + margin: 0; + font-size:16px; + font-weight:normal; +} +#schedule_calendar { + width:98.5% +} +div.ui-datepicker { + /*font-size: 75%;*/ +} + + +#schedule_playlist_dialog ul { + list-style-type: none; + overflow: auto; + margin: 0 0 8px 0; + padding: 0; + height: 280px; + background:#9a9a9a; + width:100%; +} + +#schedule_playlist_chosen li { + float: left; + clear: left; + margin: 0; + width: 100%; + display:block; + margin-bottom:-1px; +} + +#schedule_playlist_chosen li > h3 { + font-size:15px; + padding: 7px 0 0 0; + margin: 0; + min-height:25px; + +} + +#schedule_playlist_chosen li > h3 > div { + float: left; + margin: 0 5px 2px 0; +} + +#schedule_playlist_chosen li > h3 > div > span.ui-icon { + margin-top: 0px; +} +#schedule_playlist_chosen li > h3 > span.ui-icon.ui-icon-triangle-1-e, +#schedule_playlist_chosen li > h3 > span.ui-icon.ui-icon-triangle-1-s { + float:left; + margin-right: 8px; +} +#schedule_playlist_chosen li > h3 > span.ui-icon.ui-icon-close { + float:right; + margin-right: 8px; +} +#schedule_playlist_chosen div.group_list { + border-width:0 1px 1px 1px; +} +/*#schedule_playlist_chosen li div{ + float: left; +} + +#schedule_playlist_chosen li > div{ + width: 475px; +} +*/ + +#schedule_playlist_chosen li > div > div{ + clear: left; + padding-top: 5px; + padding-left: 5px; +} +#schedule_playlist_chosen li > div:first-child { + border-bottom:1px solid #b1b1b1; +} +.sched_description { + clear: left; + font-size: 85%; + margin-left: 2em; +} + +.sh_pl_name { + min-width: 150px; +} + +.sh_pl_creator { + +} + +#schedule_playlist_chosen li > h3 > div.sh_pl_time { + float:right; + margin-right:22px; +} + +#schedule_playlist_chosen li > div > div > span { + float: right; + margin-right:46px; +} +#schedule_playlist_chosen li > div > div > span.sh_file_name { + display: inline-block; + float: left; + margin-right:0; +} + +.sh_file_artist, #schedule_playlist_chosen li > div > div.sh_file_artist { + font-size: 11px; + padding-top: 2px; + padding-bottom: 8px; + color:#5b5b5b; +} + +#schedule_playlist_chosen li > div > div.sched_description { + font-size: 12px; + padding-top: 5px; + padding-bottom: 7px; + border-bottom:1px solid #b1b1b1; + color:#5b5b5b; + margin:0; + background:#dddddd; +} +#show_time_info { + font-size:12px; + height:30px; +} + +#show_time_info > div, #show_time_info > span{ + float: left; +} + +#show_progressbar { + width: 46%; + height: 5px; + margin: 9px 9px 0 0; +} +#show_progressbar.ui-widget-content { + background: #646464 url(images/schedule-show_progressbar_bg.png) repeat-x 0 0; + border-color:#343434; + border-bottom-color:#cfcfcf; +} + +#show_progressbar .ui-progressbar-value { + background: #ff5d1a; + border-color:#343434; + border-width: 1px 0 0 1px; +} + +h2#scheduled_playlist_name { + font-size:21px; + font-weight:normal; + margin:0; + padding:8px 0 0px 12px; + color:#1c1c1c; +} + +h2#scheduled_playlist_name span { + color:#656565; +} + +.time { + width: 80px; + margin: 5px; + text-align: left; +} + +/* --- Add show Dialog --- */ + +#add_show_name { + +} + +#add_show_description { + width: 400px; + height: 200px; +} + +#fullcalendar_show_display { + width: 400px; +} + +.fc-agenda-body { + max-height:560px; +} + +#schedule_calendar .ui-progressbar { + width: 46%; + height: 5px; + margin: 9px 9px 0 0; +} + +#schedule_calendar .ui-progressbar.ui-widget-content { + background: #646464 url(images/schedule-show_progressbar_bg.png) repeat-x 0 0; + border-color:#343434; + border-bottom-color:#cfcfcf; +} +#schedule_calendar .ui-progressbar .ui-progressbar-value { + background: #ff5d1a; + border-color:#343434; + border-width: 1px 0 0 1px; +} +/*---//////////////////// Advenced Search ////////////////////---*/ + +.search_control { + padding:8px; + border:1pxp solid #8f8f8f; + background:#d8d8d8; + margin-bottom:8px; +} +.search_group { + padding:8px; + border:1pxp solid #8f8f8f; + margin-bottom:8px; +} +.search_group > fieldset { + padding:0; + border:none; + margin-top:8px; +} +.search_group > fieldset .input_text { + width:45%; +} +.search_group > fieldset .input_text, .search_group > fieldset .input_select { + margin-right:6px; +} +.search_group fieldset .ui-button-icon-only .ui-button-text, .search_group fieldset .ui-button-icons-only .ui-button-text { + padding: 3px 2px; + text-indent: -1e+7px; +} +.search_group fieldset .ui-button-icon-only { + width: 2.1em; +} + +.search_group fieldset .ui-button-icon-only .ui-icon { + left: 48%; + margin-top: -9px; + position: absolute; + top: 50%; +} + +/*---//////////////////// USERS ////////////////////---*/ + +.simple-formblock { + width: 30%; +} + +.simple-formblock dl, .simple-formblock dl.zend_form { + margin: 0; + padding: 0; + width: 100%; +} +.simple-formblock dt { + clear: left; + color: #666666; + float: left; + font-size: 1.2em; + font-weight: bold; + margin: 0; + min-width: 90px; + padding: 4px 0; + text-align: left; +} +.simple-formblock dd { + float: left; + font-size: 1.2em; + margin: 0; + padding: 4px 0 4px 15px; + width:60%; +} + +.simple-formblock .liquidsoap_status{ + width: 95%; +} + +.simple-formblock dd.block-display { + width: 100%; +} + +.stream-setting-content dd.block-display { + /*width: 60%;*/ +} + +.simple-formblock.padded-strong { + padding:12px; +} + +.simple-formblock dd .input_text { + width: 97.8%; +} + +.simple-formblock h2 { + font-size:1.7em; + padding-bottom:16px; +} +.simple-formblock label { + padding:0; +} + +.ui-button-icon-only.crossfade-main-button, .ui-button-icons-only.crossfade-main-button { + float: left; + height: 26px; + margin: 0 0 20px 0; + padding-right: 8px; +} +.ui-button-icon-only.crossfade-main-button .ui-button-text, .ui-button-icons-only.crossfade-main-button .ui-button-text { + padding: 0; + text-indent: -1e+7px; + padding: 0.1em 1em; +} + +.ui-state-default .ui-icon.crossfade-main-icon { + background:url(images/crossfade_main.png) no-repeat 0 2px; + width:25px; +} + +.btn.crossfade-main-button span { + text-indent: 100%; + white-space: nowrap; + overflow: hidden; + display:inline-block; + width: 0; + height:0; +} +.btn i.crossfade-main-icon { + display: inline-block; + background:url(images/crossfade_main.png) no-repeat 0 2px; + width:22px; + height: 14px; + line-height: 14px; + vertical-align: text-top; + margin-top: 1px; + margin-right: -5px; +} + +.ui-button-icon-only.crossfade-main-button .ui-icon { + left: 44%; + margin-left: -8px; +} + +button, input { + margin-top:0; + margin-bottom:0; +} + +.user-management { + width:910px; + /*width:380px;*/ +} +.user-management-expanded { + width:910px; +} +.user-data { + float:left; + width:420px; + margin-left:10px; + /*display:none;*/ +} +.user-list-wrapper { + float:left; + width:480px; + /*margin-right:10px;*/ +} + +.user-management div.user-list-wrapper .ui-widget-header:first-child { + background: none repeat scroll 0 0 transparent; + border-width: 0 0 1px; + color: #444444; + font-weight: bold; +} +.user-list-wrapper .ui-widget-header:first-child .dataTables_filter { + margin:0; +} +.user-management h2 { + font-size: 1.7em; + padding-bottom: 12px; +} +.user-management .dataTables_filter input { + width: 93.8%; + margin-bottom:8px; +} +.user-data.simple-formblock dd { + width: 73%; +} + +.user-data fieldset { + margin-bottom:8px; +} +.user-data fieldset:last-child { + margin-bottom:0; +} + +.user-list-wrapper .button-holder { + padding:0; + text-align:right; + height:37px; +} +.user-list-wrapper .button-holder .ui-button { + margin:0; +} +.ui-widget-content .user-list-wrapper .ui-icon.ui-icon-closethick { + background-image:url(redmond/images/ui-icons_666666_256x240.png); + cursor:pointer; + float:right; + margin-right:5px; +} +.ui-widget-content .user-list-wrapper .ui-icon.ui-icon-closethick:hover { + background-image:url(redmond/images/ui-icons_ff5d1a_256x240.png); +} + + +#ui-datepicker-div { z-index: 10 !important } + +.button-bar-top { + text-align:right; + height:38px; +} + +.toggle-button, .toggle-button-active { + border: 1px solid #505050; + background-color: #5e5e5e; + background: -moz-linear-gradient(top, #757575 0, #5e5e5e 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #757575), color-stop(100%, #5e5e5e)); + color: #ffffff; + margin:0; + font-size:12px; + padding:5px 12px; + text-decoration:none; + text-shadow: #343434 0px -1px; + border-width:1px 0 1px 1px; + cursor:pointer; +} +.toggle-button:hover { + background-color: #292929; + background: -moz-linear-gradient(top, #3b3b3b 0, #292929 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #3b3b3b), color-stop(100%, #292929)); + text-shadow: #000000 0px -1px; +} + +.toggle-button-active { + background-color: #c6c6c6; + background: -moz-linear-gradient(top, #767676 0, #c6c6c6 20%, #c6c6c6 35%, #a0a0a0 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #767676), color-stop(20%, #c6c6c6), color-stop(35%, #c6c6c6), color-stop(100%, #a0a0a0)); + color: #2e2e2e; + cursor:default; + text-shadow: #d8d8d8 0px 1px; +} +.end-button { + border-width:1px; +} + +.button-bar-top .toggle-button, .button-bar-top .toggle-button-active { + float:right; +} + +.button-bar-top .input_text { + height:25px; + margin-right:6px; + padding: 0 3px; +} +.button-bar-top .input_text.hasDatepicker, .input_text.hasDatepicker { + background-image:url(images/input_with_calendar_bg.png); + background-repeat:no-repeat; + background-position:right 0; +} +.input_text.hasTimepicker { + background-image:url(images/input_with_time_bg.png); + background-repeat:no-repeat; + background-position:right 0; +} +ul.errors { + display:block; + clear:left; + padding:3px 0 0 0; + margin:0; +} + +.formrow-repeat ul.errors { + width:278px; +} + +ul.errors li { + color:#902d2d; + font-size:11px; + padding:2px 4px; + background:#c6b4b4; + margin-bottom:2px; + border:1px solid #c83f3f; + list-style: none; +} + +div.success{ + color:#3B5323; + font-size:11px; + padding:2px 4px; + background:#93DB70; + margin-bottom:2px; + border:1px solid #488214; +} + +div.errors, span.errors{ + color:#902d2d; + font-size:11px; + padding:2px 4px; + background:#c6b4b4; + margin-bottom:2px; + border:1px solid #c83f3f; +} + +span.errors.sp-errors{ + width: 486px; + display: block; +} + +.collapsible-header, .collapsible-header-disabled { + border: 1px solid #8f8f8f; + background-color: #cccccc; + background: -moz-linear-gradient(top, #cccccc 0, #b9b9b9 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #cccccc), color-stop(100%, #b9b9b9)); + font-size:13px; + color:#353535; + font-weight:bold; + padding:6px 0 6px 20px; + margin:8px 0 0 0; + cursor:pointer; + position:relative; +} +.collapsible-content { + margin-top:-1px; + display:none; +} +.collapsible-header .arrow-icon, .collapsible-header-disabled .arrow-icon { + display:block; + background:url(images/arrows_collapse.png) no-repeat 0 0; + height:11px; + width:11px; + position:absolute; + left:5px; + top:8px; + +} +.collapsible-header.close .arrow-icon, collapsible-header-disabled.close .arrow-icon { + background-position: 0 -11px; + +} +#schedule-add-show .button-bar { + height: 28px; + margin: 0 0 8px 0; +} +#schedule-add-show .button-bar.bottom { + margin: 16px 0 0; +} +.schedule { + text-align:left; + height:38px; +} + +.add-button, .ui-widget-content a.add-button { + border: 1px solid #242424; + background-color: #353535; + background: -moz-linear-gradient(top, #494949 0, #353535 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #494949), color-stop(100%, #353535)); + color: #ffffff; + margin:0; + font-size:12px; + font-weight:bold; + padding:4px 12px 4px 22px; + text-decoration:none; + text-shadow: #000 0px -1px; + display:block; + float:left; + position:relative; +} +.add-button:hover, .ui-widget-content a.add-button:hover { + border: 1px solid #000000; + background-color: #353535; + background: -moz-linear-gradient(top, #353535 0, #000000 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #353535), color-stop(100%, #000000)); + color: #ffffff; +} +.add-button span { + position:absolute; + top:3px; + left:3px; + height:16px; + width:16px; + display:block; + background:url(redmond/images/ui-icons_ffffff_256x240.png) no-repeat; +} +.add-button:hover span { + background:url(redmond/images/ui-icons_ff5d1a_256x240.png) no-repeat; +} +.add-button span.add-icon { + background-position: -32px -128px; +} + +/*---//////////////////// NOW PLAYING COLORS ////////////////////---*/ +.playing-song, .datatable tr.playing-song:hover td { + background-color:#ff753c !important; +} +.playing-list { + background-color:#b0dcf2; +} +.odd.playing-list { + background-color:#bfe5f8; +} +.gap, .datatable tr.gap:hover td { + background-color:#da5454 !important; +} +.group, tr td.group { + background-color:#0aa2be; + color:#FFF; +} + + +/*---//////////////////// END NOW PLAYING COLORS ////////////////////---*/ +.icon-link, .ui-widget-content a.icon-link { + color: #646464; + position: relative; + text-decoration: none; + padding: 0 0 0 20px; +} +.icon-link .ui-icon { + background-image:url(redmond/images/ui-icons_666666_256x240.png); + background-repeat: no-repeat; + display: block; + height: 16px; + left: 0.2em; + margin: -3px 5px 0 0; + overflow: hidden; + position: absolute; + top: 2px; + width: 16px; +} +.icon-link:hover, .ui-widget-content a.icon-link:hover { + color: #444444; + text-decoration:underline; +} +.icon-link:hover .ui-icon { + background-image:url(redmond/images/ui-icons_454545_256x240.png); +} + +.button-bar .icon-link { + float:left; + margin:7px 0 0 1px; +} + +#show_content_dialog .datatable tr:first-child td { + border-top:none; +} + +#show_content_dialog .datatable { + margin-top:8px; +} +.simple-formblock.metadata, #side_playlist .simple-formblock.metadata { + border:none; + width:auto; + display:block; + padding: 2px; +} +#side_playlist .simple-formblock.metadata .input_text, #side_playlist .simple-formblock.metadata .input_text_area { + width:95%; +} +#side_playlist .simple-formblock.metadata.simple-formblock dd { + width:70%; +} +#side_playlist h3.plain { + float:none; + font-size:18px; + margin:2px 0 20px 0; +} + +.qtip { + font-size:11px; + line-height:160%; +} + +#schedule-show-who.scrolled { + margin-bottom: 0; + max-height:300px; + overflow:auto; +} +.text-content { + padding:20px 10px 40px 58px; + background: url(images/sf_arror.png) no-repeat 60% 0; + min-height: 300px; +} +.text-content h2 { + font-size:2.4em; + color:#1f1f1f; +} +.text-content p { + font-size:1.6em; + line-height:140%; + color:#1f1f1f; + margin:0 0 1.4em 0; +} +.text-content a { + color:#f2f2f2; + text-decoration:none; +} +.text-content a:hover { + text-decoration:underline; +} + +.text-content ol { + margin:0 0 22px 25px; + padding:0; + list-style-position:outside; +} + +.text-content ol li { + margin:0 0 6px 0; + font-size:1.7em; + display:list-item; + color:#1f1f1f; +} +.gray-logo { + margin:5px 0 0 20px; +} +.formrow-repeat { + list-style-type:none; + margin:0; + padding:0; +} +.formrow-repeat li { + list-style-type:none; + margin:0 0 8px 0; + padding:0; + display:block; +} +/* +.formrow-repeat li .ui-button-icon-only { + width:1.8em; +} +.formrow-repeat li .ui-button-icon-only .ui-button-text, .formrow-repeat li .ui-button-icons-only .ui-button-text { + padding: 3px 3px 4px; +} + +.formrow-repeat li .ui-button-icon-only .ui-icon { + left: 48%; + margin-top: -9px; + position: absolute; + top: 50%; +} +.formrow-repeat li .ui-button .ui-button-text { + display: block; + line-height: 110%; +} +*/ + +#add_show_rebroadcast_relative .ui-button-icon-only, +#add_show_rebroadcast_absolute .ui-button-icon-only { + width: 1.8em; +} +#add_show_rebroadcast_relative .ui-button-icon-only .ui-button-text, +#add_show_rebroadcast_absolute .ui-button-icon-only .ui-button-text, +#add_show_rebroadcast_relative .ui-button-icons-only .ui-button-text, +#add_show_rebroadcast_absolute .ui-button-icons-only .ui-button-text, +#add_show_rebroadcast_relative .ui-button-text-icon-primary .ui-button-text, +#add_show_rebroadcast_absolute .ui-button-text-icon-primary .ui-button-text { + font-size:12px; +} + +#add_show_rebroadcast_relative .ui-button-icon-only .ui-icon, +#add_show_rebroadcast_absolute .ui-button-icon-only .ui-icon { + margin-top: -8px; + position: absolute; + top: 50%; +} +#add_show_rebroadcast_relative .ui-button-text-icon-primary .ui-icon, +#add_show_rebroadcast_absolute .ui-button-text-icon-primary .ui-icon { + left: 0.4em; +} +#add_show_rebroadcast_relative .ui-button .ui-button-text, +#add_show_rebroadcast_absolute .ui-button .ui-button-text { + display: block; + line-height: 14px; +} + +.formrow-repeat li .inline-text { + color: #666666; + padding: 0 6px 0 0; +} +.formrow-repeat li .input_text, .formrow-repeat li .input_select { + margin-right:6px; +} +.formrow-repeat li .hasDatepicker, .formrow-repeat li .input_select { + width:95px; +} +.formrow-repeat li .hasTimepicker { + width:60px; +} +.recording-show { + float: right; + background:url(images/record_icon.png) no-repeat 0 0; + width:23px; + height:23px; +} + +.datatable td .info-icon { + margin:-4px 3px -3px 0; + float:right; +} +.time-flow { + float:right; + margin-right:4px; +} +.small-icon { + display:block; + width:20px; + height:10px; + float:right; + margin-left:3px; + margin-top:2px; +} +.small-icon.recording { + background:url(images/icon_record.png) no-repeat 0 0; + margin-top: 0px !important; +} +.small-icon.rebroadcast { + background:url(images/icon_rebroadcast.png) no-repeat 0 0; + margin-top: 0px !important; +} +.small-icon.soundcloud { + background:url(images/icon_soundcloud.png) no-repeat 0 0; + width:21px; + margin-top: 0px !important; +} +.small-icon.sc-error { + background:url(images/icon_soundcloud_error2.png) no-repeat 0 0; + width:21px; + margin-top: 0px !important; +} +.small-icon.now-playing { + background:url(images/icon_nowplaying_n.png) no-repeat 0 0; + height:8px; +} +.small-icon.progress { + background:url(images/upload-icon.gif) no-repeat; + background-color:black; + background-position:center; + border-radius:2px; + -webkit-border-radius:2px; + -moz-border-radius:2px; + margin-top: 0px !important; +} +.small-icon.alert { + background:url(images/icon_alert.png) no-repeat; + float:left; + width:13px; + margin-right:3px; + margin-left:1px; +} +.small-icon.show-empty { + background:url(redmond/images/ui-icons_ff5d1a_256x240.png) no-repeat 0 -144px; + width: 16px; + margin-top: 0px !important; +} +.medium-icon { + display:block; + width:25px; + height:12px; + float:right; + margin-left:4px; +} +.medium-icon.recording { + background:url(images/icon_record_m.png) no-repeat 0 0; + width:20px; +} +.medium-icon.rebroadcast { + background:url(images/icon_rebroadcast_m.png) no-repeat 0 0; +} +.medium-icon.soundcloud { + background:url(images/icon_soundcloud_m.png) no-repeat 0 0; + width:21px; +} +.medium-icon.nowplaying, .medium-icon.finishedplaying { + background:url(images/icon_nowplaying_m.png) no-repeat 0 0; + width:12px; + height:9px; + float:left; + margin-left:6px; + margin-right:0; +} +.medium-icon.finishedplaying { + background:url(images/icon_finishedplaying_m.png) no-repeat 0 0; +} +.preferences, .manage-folders { + width: 500px; +} + +.stream-config { + width: 1100px; +} + +.preferences .padded { + margin-top: 5px; /* Firefox needs this */ +} + +dt.block-display, dd.block-display { + display: block; + float: none; + margin-left: 0; + padding-left: 0; +} +.preferences dt.block-display, .preferences dd.block-display { + padding: 0 0 5px 0; +} +.preferences dd.block-display, .stream-config dd.block-display { + margin-bottom:4px; +} +.preferences dd.block-display:last-child, .stream-config dd.block-display:last-child { + margin-bottom:0; + padding-bottom:0; +} +.preferences input[type="radio"], .stream-config input[type="radio"] { + margin:0; +} +.preferences label input[type="radio"], .stream-config label input[type="radio"] { + margin:0 1px 0 0; +} +.preferences label input[type="checkbox"], .stream-config label input[type="checkbox"] { + margin:0 5px 0 0; +} +dd.radio-inline-list, .preferences dd.radio-inline-list, .stream-config dd.radio-inline-list { + margin-bottom:6px; +} +.radio-inline-list label { + margin-right:12px; +} +.preferences.simple-formblock dd.block-display { + width: 100%; +} + +.preferences.simple-formblock dd.block-display select, .stream-config.simple-formblock dd.block-display select { + width: 100%; +} +.preferences dd.block-display .input_select, .stream-config dd.block-display .input_select { + width: 100%; +} +.preferences dd.block-display .input_text_area, .preferences dd.block-display .input_text +.stream-config dd.block-display .input_text_area, .stream-config dd.block-display .input_text, +.stream-config dd.block-display input[type="text"], .stream-config dd.block-display input[type="password"] { + width: 98.5%; +} + +.preferences dd#SoundCloudTags-element.block-display .input_text_area { + height: 120px; +} + +#show_time_info { + font-size:12px; + height:30px; +} +#show_time_warning { + background:#c83f3f url(images/icon_alert_ffffff.png) no-repeat 5px 4px; + border:1px solid #9d1010; + color:#fff; + padding: 2px 5px 2px 24px; + font-size: 12px; + line-height: 140%; +} + +/* HACK, to be removed after 1.7.0 */ +button.ui-button.md-cancel { + padding: .4em 1em; +} + +/*--//////////////////////// Changes/add-ons Jun 8th, 2011 ////////////////////////--*/ + +.dialogPopup.ui-dialog-content { + padding: 0.9em 1em; +} +.dialogPopup dl { + margin:0; + padding:0; + clear:both; + width:100%; +} +.dialogPopup dt { + clear: left; + padding: 0; + float:left; + width:35%; +} + +.dialogPopup dt.block-display { + float:none; + width:100%; + padding: 0 0 10px; +} + +.dialogPopup dt label { + font-weight: bold; + line-height:24px; +} +.dialogPopup dd { + padding: 0; + float:left; + width:65%; + margin:0 0 6px 0; +} +.dialogPopup dd.block-display { + float:none; + width:100%; + padding: 0 0 10px; + margin:0 0 8px 0; +} +.dialogPopup fieldset dt:last-child, .dialogPopup fieldset dd:last-child { + margin:0; +} + +.info-text { + font-size:12px; + color:#5b5b5b; + line-height:150%; + padding:0 0 6px; + margin:0; + +} +.dialogPopup label input[type="checkbox"] { + float:left; + margin-right:6px; +} + +.dialogPopup fieldset { + padding: 0; + clear:both; + border:none; +} +.dialogPopup fieldset dd input[type="text"], .dialogPopup fieldset dd textarea { + width:99.5%; + padding:0; +} +.dialogPopup fieldset dd input[type="text"] { + height:23px; +} +.dialogPopup fieldset dd select { + width:100%; +} + +fieldset.display_field { + /*background-color:#d5d5d5; + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2) inset;*/ + padding:10px; + border: 1px solid #8F8F8F; +} +label span { + font-weight:normal; +} + +.dialogPopup .display_field dt, .dialogPopup .display_field dd { + color: #353535; + float: left; + font-size: 12px; + margin: 0; + padding: 4px 0; + text-align: left; + width:auto; +} + +.dialogPopup .display_field dt { + clear: left; + font-weight:bold; + width:auto; + min-width:auto; + padding-right:8px; +} +#show_what_sending textarea { + background-color:transparent; + border:none; + box-shadow: none; + font-size: 12px; + text-indent: 0; + margin:0; + width:99%; + line-height:180%; + resize: none; +} +#show_what_sending textarea:focus { + border:none; +} +#show_what_sending dl { + overflow-x: hidden; +} + +#watched-folder-section dd.block-display input[type="text"] { + width: 63.6%; +} + +#watched-folder-section dd.block-display input[type="button"] { + border: 1px solid #5b5b5b; + background-color: #6e6e6e; + background: -moz-linear-gradient(top, #868686 0, #6e6e6e 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #868686), color-stop(100%, #6e6e6e)); + color: #ffffff; + font-family:Arial, Helvetica, sans-serif; + font-size:12px; + height:25px; + margin:0; + display:block; + margin-left:5px; + line-height:12px; + padding:0 10px 1px 10px; +} + +#watched-folder-section a { + font-size: 12px; +} + +#watched-folder-section a:hover { + text-decoration:none; + color:#FF5D1A; + cursor:pointer; +} + +#watched-folder-section dd.block-display input[type="button"]:hover { + border: 1px solid #242424; + background-color: #292929; + background: -moz-linear-gradient(top, #3b3b3b 0, #292929 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #3b3b3b), color-stop(100%, #292929)); + color: #ffffff; +} + +#watched-folder-section dd.block-display { + clear:both; + min-height:25px; + +} +#watched-folder-section dd.block-display.selected-item { + clear:both; + background:#9a9a9a; + margin:2px 0 5px 0; + width:84%; + padding:4px 8px 0; + position:relative; + min-height:22px; + border-radius: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + font-size:13px; +} + +#watched-folder-section dd.block-display.selected-item .ui-icon { + position:absolute; + top:4px; + right:5px; + cursor:pointer; +} + +#watched-folder-section dd.block-display.selected-item .ui-icon.ui-icon-refresh { + position:absolute; + top:4px; + right:20px; + cursor:pointer; + background-image:url(redmond/images/ui-icons_ffffff_256x240.png); + background-position: -128px -63px; +} + +#watched-folder-section dd.block-display.selected-item .ui-icon:hover { + background-image:url(redmond/images/ui-icons_ff5d1a_256x240.png) +} +#watched-folder-section dd.block-display input { + float:left; +} + +fieldset > legend { + color: #4F4F4F; + font-size: 12px; + line-height: 140%; +} +fieldset.closed, fieldset.display_field.closed { + border-width: 1px 0 0; + margin-bottom: -6px; + margin-left: 1px; +} + +fieldset.closed dl, fieldset.closed textarea, fieldset.closed div, fieldset.closed h2 { + display:none; +} + +fieldset legend .ui-icon, .ui-widget-content fieldset legend .ui-icon { + background-image: url(redmond/images/ui-icons_454545_256x240.png); + float: left; +} + +input[type="checkbox"][disabled] { + opacity: 0.6; +} + +.play_small { + height:11px; + width: 15px; + display:inline-block; + background:url(images/play_pause_small.png) no-repeat 0 0; + margin:0 7px 0 0; + text-indent:-9999px; + overflow:hidden; + line-height:10px; +} +.play_small:hover, .play_small.paused { + background-position: 0 -11px; +} +.play_small.paused:hover { + background-position: 0 -22px; +} + +.play_small.playing { + background-position: -20px 0; +} +.play_small.playing:hover { + background-position: -20px -11px; +} + +.info-text-small { + color: #5B5B5B; + font-size: 11px; + line-height: 150%; + margin: 0; + padding: 0 0 6px; + font-style:italic; + font-weight:normal; +} +dd .info-text-small { + padding: 1px 0 2px; + display:inline-block; +} + +.stream-config dt { + width:120px; + padding: 4px 0; +} +.stream-config dt.block-display { + width:auto; +} +.stream-config dd { + margin-bottom:0px; +} +.stream-config dd select { + width:160px; + line-height:140%; +} + +.stream-config input[type="text"] { + /*width:98.5%;*/ + min-width:152px; +} +.stream-config .display_field dd input[type="text"], .stream-config .display_field dd input[type="password"], .stream-config .display_field dd textarea { + min-width:99%; + padding: 4px 3px; +} +.stream-config .display_field dd textarea { + min-height:60px; +} +.simple-formblock .display_field dd { + min-width:68%; +} +.stream-config dd input[id$=port] { + width:152px; +} + +dt.block-display.info-block { + width: auto; + font-size:12px; + padding:10px 0; +} +.top-margin { + margin-top:10px; + float: left; +} +.left-margin { + margin-left:20px; + float: left; +} +.stream-config dd.block-display textarea { + width: 99.5%; + height: 110px; +} + +.input-info { + font-size:12px; + padding:0 0 0 5px; +} + +.stream-config dd.block-display input[type="text"].with-info, .stream-config dd.block-display input[type="password"].with-info { + width: 83.6%; +} +.stream-config dd.block-display p { + font-size:13px; + margin:4px 0 4px 2px; +} + +.stream-config #output_setting { + width: 96%; +} + +.stream-config dt.block-display, .stream-config dd.block-display { + /*float: left;*/ +} +.collapsible-header-disabled { + cursor:default; + opacity:0.6; +} + +/*---//////////////////// ERROR PAGE ////////////////////---*/ + +.error-content { + background:url(images/404.png) no-repeat 0 0; + width:300px; + margin: 24px 15px; + padding: 0px 10px 0 420px; +} +.error-content h2 { + margin:0; + padding:0 0 10px 0; + font-size:36px; + font-weight:bold; + color:#3e3e3e; + text-align:left; + letter-spacing:-.3px; + text-shadow: rgba(248,248,248,.3) 0 1px 0, rgba(0,0,0,.8) 0 -1px 0; + rgba(51,51,51,.9) +} +.error-content p { + color: #272727; + font-size: 16px; + margin: 0; + padding:8px 2px; +} +.error-content .button-bar { + margin-top:47px; + padding-left:2px; +} +.error-content .toggle-button { + border: 1px solid #434343; + border-width:1px 1px 0px 1px; + background-color: #636363; + background: -moz-linear-gradient(top, #737373 0, #545454 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #737373), color-stop(100%, #545454)); + color: #1b1b1b; + font-size:15px; + font-weight:bold; + padding:5px 14px 6px 15px; + text-shadow: rgba(248,248,248,.24) 0 1px 0; + box-shadow: rgba(248,248,248,.3) 0px 1px 0px, rgba(0, 0, 0, 0.2) 0 2px 2px inset; + -moz-box-shadow: rgba(248,248,248,.3) 0px 1px 0px, rgba(0, 0, 0, 0.2) 0 2px 2px inset; + -webkit-box-shadow: rgba(248,248,248,.3) 0px 1px 0px, rgba(0, 0, 0, 0.2) 0 2px 2px inset; + margin: 0 5px 0 0; +} +.error-content .toggle-button:hover { + border: 1px solid #000; + border-width:1px 1px 0px 1px; + background-color: #353535; + background: -moz-linear-gradient(top, #393939 0, #000000 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #393939), color-stop(100%, #000000)); + color: #ff5d1a; + text-shadow:none; + box-shadow: rgba(248,248,248,.3) 0px 1px 0px, rgba(0, 0, 0, 0.6) 0 2px 2px inset; + -moz-box-shadow: rgba(248,248,248,.3) 0px 1px 0px, rgba(0, 0, 0, 0.6) 0 2px 2px inset; + -webkit-box-shadow: rgba(248,248,248,.3) 0px 1px 0px, rgba(0, 0, 0, 0.6) 0 2px 2px inset; +} + +/*---//////////////////// DEFAULT TABLE ////////////////////---*/ + +table { + border-color: #5b5b5b; + border-style: solid; + border-width: 0; +} +tbody tr th { + color: #000000; + background-color: #b1b1b1; + background: -moz-linear-gradient(top, #bebebe 0, #a2a2a2 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #bebebe), color-stop(100%, #a2a2a2)); + font-size: 13px; + padding: 5px 5px; + border-color: #b1b1b1; + border-style: solid; + border-width: 1px 0 0 1px; + border-top-color: #5b5b5b; + text-align:left; +} +thead tr th { + color: #FFFFFF; + font-size: 12px; + padding: 5px 5px; + border-color:#CCCCCC; + background-color: #6e6e6e; + background: -moz-linear-gradient(top, #868686 0, #6e6e6e 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #868686), color-stop(100%, #6e6e6e)); + border-style: solid; + border-width: 0 0 0 1px; +} +tr td { + border-color: #b1b1b1; + border-style: solid; + border-width: 0; + font-size: 12px; + padding: 5px 5px; +} +tfoot tr td, tfoot tr th { + color:#FFFFFF; + background-color: #6e6e6e; + background: -moz-linear-gradient(top, #6e6e6e 0, #868686 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #6e6e6e), color-stop(100%, #868686)); + font-size: 13px; + padding: 5px 5px; + border-color: #b1b1b1; + border-style: solid; + border-width: 1px 0 0 1px; +} +tfoot tr th { + font-weight:bold; + text-align:left; +} + + +/*---//////////////////// STATUS TABLE ////////////////////---*/ +.statustable { + background-color: #D8D8D8; + border-width: 2px 1px 1px; +} +.statustable tr td, .statustable tr th { + text-align:center; + vertical-align:text-top; + font-size:13px; +} +.statustable tr td { + border-width: 1px 0 0 1px; +} +.statustable tr td:first-child, .statustable tr th:first-child { + text-align:left; + border-left-width: 0 !important; +} +.checked-icon { + width:100%; + margin:0; + background: url("images/accept.png") no-repeat center center; + height:16px; + margin:0; + display:block; +} +.not-available-icon { + width:100%; + margin:0; + background: url("images/delete.png") no-repeat center center; + height:16px; + margin:0; + display:block; +} +.warning-icon { + width:100%; + margin:0; + background: url("images/warning-icon.png") no-repeat center center; + height:16px; + margin:0; + display:block; +} +.statustable ul { + margin:4px 0; + padding:0; + list-style-type: none; +} +.statustable ul li { + background:#bbb; + margin:2px 0 6px 0; + padding:4px 8px 0; + position:relative; + min-height:22px; + border-radius: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + font-size:13px; +} +.statustable .big { + width:120px; + height:10px; + background:#444444; + background: -moz-linear-gradient(top, #464646 0, #3e3e3e 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #3e3e3e), color-stop(100%, #464646)); + border-bottom:1px solid #fff; + margin: 0 auto; + padding: 1px; + display:inline-block; +} +.diskspace { + background-color:#e76400; + background: -moz-linear-gradient(top, #ff6f01 0, #bc5200 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ff6f01), color-stop(100%, #bc5200)); + height:10px; +} +.statustable a { + color: #222; + text-decoration: underline; +} + +.statustable a:visited { + color: #666; + text-decoration: underline; +} +.statustable a:hover { + color: #e76400; + text-decoration: underline; +} +.strong { + font-weight:bold; +} + + +/*---//////////////////// PLUPLOAD ERROR ////////////////////---*/ + +#plupload_error{ + margin-top:10px; +} + +#plupload_error table { + color:red; + border:1px solid #c83f3f; + background:#c6b4b4; + display:none; +} +#plupload_error table td { + color:#902d2d; + font-size:12px; + font-weight:bold; + padding:2px 4px; + margin-bottom:2px; + border:none; + margin:0; +} + +/*---//////////////////// TRIAL BOX HEADER ////////////////////---*/ + +.trial-box { + width:142px; + height:38px; + display:block; + position:fixed; + left:20px; + bottom:10px; + background-color:#222; + background-color:rgba(0, 0, 0, 0.7); + z-index:100; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + color:#FFF; + font-size:11px; + padding:7px; +} +.trial-box p { + padding:0 0 3px 0; + margin:0 0 5px 0; + float:left; +} +.trial-box-button a { + width:92px; + height:14px; + display:block; + padding: 1px 3px; + -moz-border-radius: 1px; + -webkit-border-radius: 1px; + border-radius: 1px; + text-transform:uppercase; + text-align:center; + font-family:Arial, Helvetica, sans-serif; + font-weight:bold; + text-decoration:none; + color:#FFFFFF; + background-color:#ff5d1a; + background: -moz-linear-gradient(top, #ff5d1a 0, #dd4202 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ff5d1a), color-stop(100%, #dd4202)); + box-shadow: rgba(248, 248, 248, 0.4) 0 1px 1px inset; + -moz-box-shadow: rgba(248, 248, 248, 0.4) 0 1px 1px inset; + -webkit-box-shadow: rgba(248, 248, 248, 0.4) 0 1px 1px inset; + float:left; +} +.trial-box-button a:hover { + background-color:#dd4202; + background: -moz-linear-gradient(top, #dd4202 0, #ff5d1a 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #dd4202), color-stop(100%, #ff5d1a)); + box-shadow: rgba(248, 248, 248, 0.4) 0 1px 1px inset; + -moz-box-shadow: rgba(248, 248, 248, 0.4) 0 1px 1px inset; + -webkit-box-shadow: rgba(248, 248, 248, 0.4) 0 1px 1px inset; +} +.trial-box-calendar { + float:right; + text-align:center; + font-weight:bold; +} +.trial-box-calendar-white { + font-size:18px; + color:#ff5d1a; + background:#FFF; + width:36px; + height:22px; + display:block; + -webkit-border-top-right-radius: 1px; + -moz-border-radius-topright: 1px; + -webkit-border-top-left-radius: 1px; + -moz-border-radius-topleft: 1px; +} +.trial-box-calendar-gray { + width:36px; + height:14px; + display:block; + color:#FFF; + font-size:11px; + padding:1px 0; + text-transform:uppercase; + background-color:#676767; + background: -moz-linear-gradient(top, #7f7f7f 0, #555555 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #7f7f7f), color-stop(100%, #555555)); + -webkit-border-bottom-right-radius: 1px; + -moz-border-radius-bottomright: 1px; + -webkit-border-bottom-left-radius: 1px; + -moz-border-radius-bottomleft: 1px; + box-shadow: rgba(0, 0, 0, 0.4) 0 2px 1px inset; + -moz-box-shadow: rgba(0, 0, 0, 0.4) 0 2px 2px inset; + -webkit-box-shadow: rgba(0, 0, 0, 0.4) 0 2px 2px inset; +} +#stream_url {font-size:12px; line-height: 170%;} +.stream-setting-content fieldset {border-width:0 1px 1px 1px;} + +.stream-setting-content fieldset { + border-width: 0 1px 1px; +} +.stream-setting-content fieldset.display_field { + border: 1px solid #8F8F8F; + padding: 10px; +} +.stream-setting-content fieldset.display_field.closed { + border-width: 1px 0 0; +} + +/*---//////////////////// STREAM SETTINGS STATUS ////////////////////---*/ +.stream-status { + border: 1px solid; + padding:2px 10px 4px 22px; + margin:2px 1px 10px 0px; + width: auto; +} +dd .stream-status { + margin-bottom:1px; +} +.stream-status h3 { + font-size: 12px; + font-weight: bold; + line-height: 12px; + padding:0; + margin:5px 4px 2px 4px; +} +.stream-status p { + padding:0; + margin:2px 3px 1px 4px; + color:#4F4F4F; + font-size: 11px; +} +.stream-config dd.stream-status { + padding:2px 10px 4px 22px; + margin:4px 0 10px 14px; + width: 65%; +} +.status-good { + background:#e3ffc9 url(images/stream_status.png) no-repeat 5px 5px; + border-color:#54b300; +} +.status-good h3 { + color:#54b300; +} +.status-error { + background:#ffeded url(images/stream_status.png) no-repeat 5px -128px; + border-color:#f90000; +} +.status-error h3 { + color:#DA0101; +} +.status-info { + background:#fff7e0 url(images/stream_status.png) no-repeat 5px -278px; + border-color:#f68826; +} +.status-info h3 { + color:#f1830c; +} +.status-disabled { + background:#c8ccc8 url(images/stream_status.png) no-repeat 5px -429px; + border-color:#7f827f; +} +.status-disabled h3 { + color:#646664; +} + +.stream-setting-global dt{ + width: 195px; +} + +.stream-setting-global dd{ + width: auto; +} + +.qtip div > span { + padding: 5px; +} + +.pull-left { + float:left; +} +.pull-right { + float:right; +} +.push-down-8 { + margin-top:8px !important +} +.push-down-12 { + margin-top:12px !important +} +.push-down-16 { + margin-top:16px !important +} +.close-round { + display:block; + float:right; + height:18px; + width:18px; + background:url(images/round_delete.png) no-repeat 0 0; + text-indent: 100%; + white-space: nowrap; + overflow: hidden; + margin: 3px 0 0 10px; + } +.close-round:hover { + background-position:0 -36px; +} +.close-round:active { + background-position:0 -36px; +} + + +/*---//////////////////// NEW BUTTONS //////////////////// +.btn { + display: inline-block; + *display: inline; + + + *zoom: 1; + padding: 4px 10px 4px; + margin-bottom: 0; + font-size: 13px; + line-height: 18px; + color: #fff; + text-align: center; + vertical-align: middle; + background-image: -moz-linear-gradient(top, #a3a3a3, #6e6e6e); + background-image: -ms-linear-gradient(top, #a3a3a3, #6e6e6e); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#a3a3a3), to(#6e6e6e)); + background-image: -webkit-linear-gradient(top, #a3a3a3, #6e6e6e); + background-image: -o-linear-gradient(top, #a3a3a3, #6e6e6e); + background-image: linear-gradient(top, #a3a3a3, #6e6e6e); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#a3a3a3', endColorstr='#6e6e6e', GradientType=0); + border:1px solid #575757; + border-bottom-color: #333333; + filter: progid:dximagetransform.microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.05); + cursor: pointer; + *margin-left: .3em; +} + + +.btn.disabled, +.btn[disabled] { + background: #fff; +} +.btn:active, +.btn.active { + background-color: #cccccc \9; +} +.btn:first-child { + *margin-left: 0; +} +.btn:hover { + color: #fff; + text-decoration: none; + background-color: #e6e6e6; + background-image: -moz-linear-gradient(top, #868686, #535353); + background-image: -ms-linear-gradient(top, #868686, #535353); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#868686), to(#535353)); + background-image: -webkit-linear-gradient(top, #868686, #535353); + background-image: -o-linear-gradient(top, #868686, #535353); + background-image: linear-gradient(top, #868686, #535353); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#868686', endColorstr='#535353', GradientType=0); +}---*/ + +.btn.active, +.btn:active { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.3), 0 1px 0 rgba(255, 255, 255, 0.2); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.3), 0 1px 0 rgba(255, 255, 255,0.2); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.3), 0 1px 0 rgba(255, 255, 255, 0.2); + background-color: #727272; + outline: 0; + border-top-color:#333333 +} diff --git a/airtime_mvc/public/js/bootstrap/bootstrap.js b/airtime_mvc/public/js/bootstrap/bootstrap.js new file mode 100644 index 000000000..7f303eb88 --- /dev/null +++ b/airtime_mvc/public/js/bootstrap/bootstrap.js @@ -0,0 +1,2027 @@ +/* =================================================== + * bootstrap-transition.js v2.1.0 + * http://twitter.github.com/bootstrap/javascript.html#transitions + * =================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + $(function () { + + "use strict"; // jshint ;_; + + + /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) + * ======================================================= */ + + $.support.transition = (function () { + + var transitionEnd = (function () { + + var el = document.createElement('bootstrap') + , transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd' + , 'MozTransition' : 'transitionend' + , 'OTransition' : 'oTransitionEnd otransitionend' + , 'transition' : 'transitionend' + } + , name + + for (name in transEndEventNames){ + if (el.style[name] !== undefined) { + return transEndEventNames[name] + } + } + + }()) + + return transitionEnd && { + end: transitionEnd + } + + })() + + }) + +}(window.jQuery);/* ========================================================== + * bootstrap-alert.js v2.1.0 + * http://twitter.github.com/bootstrap/javascript.html#alerts + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* ALERT CLASS DEFINITION + * ====================== */ + + var dismiss = '[data-dismiss="alert"]' + , Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + + e && e.preventDefault() + + $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) + + $parent.trigger(e = $.Event('close')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent + .trigger('closed') + .remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent.on($.support.transition.end, removeElement) : + removeElement() + } + + + /* ALERT PLUGIN DEFINITION + * ======================= */ + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('alert') + if (!data) $this.data('alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + /* ALERT DATA-API + * ============== */ + + $(function () { + $('body').on('click.alert.data-api', dismiss, Alert.prototype.close) + }) + +}(window.jQuery);/* ============================================================ + * bootstrap-button.js v2.1.0 + * http://twitter.github.com/bootstrap/javascript.html#buttons + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* BUTTON PUBLIC CLASS DEFINITION + * ============================== */ + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.button.defaults, options) + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + , $el = this.$element + , data = $el.data() + , val = $el.is('input') ? 'val' : 'html' + + state = state + 'Text' + data.resetText || $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d) + }, 0) + } + + Button.prototype.toggle = function () { + var $parent = this.$element.parent('[data-toggle="buttons-radio"]') + + $parent && $parent + .find('.active') + .removeClass('active') + + this.$element.toggleClass('active') + } + + + /* BUTTON PLUGIN DEFINITION + * ======================== */ + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('button') + , options = typeof option == 'object' && option + if (!data) $this.data('button', (data = new Button(this, options))) + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.defaults = { + loadingText: 'loading...' + } + + $.fn.button.Constructor = Button + + + /* BUTTON DATA-API + * =============== */ + + $(function () { + $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + }) + }) + +}(window.jQuery);/* ========================================================== + * bootstrap-carousel.js v2.1.0 + * http://twitter.github.com/bootstrap/javascript.html#carousel + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CAROUSEL CLASS DEFINITION + * ========================= */ + + var Carousel = function (element, options) { + this.$element = $(element) + this.options = options + this.options.slide && this.slide(this.options.slide) + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.prototype = { + + cycle: function (e) { + if (!e) this.paused = false + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + return this + } + + , to: function (pos) { + var $active = this.$element.find('.item.active') + , children = $active.parent().children() + , activePos = children.index($active) + , that = this + + if (pos > (children.length - 1) || pos < 0) return + + if (this.sliding) { + return this.$element.one('slid', function () { + that.to(pos) + }) + } + + if (activePos == pos) { + return this.pause().cycle() + } + + return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos])) + } + + , pause: function (e) { + if (!e) this.paused = true + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle() + } + clearInterval(this.interval) + this.interval = null + return this + } + + , next: function () { + if (this.sliding) return + return this.slide('next') + } + + , prev: function () { + if (this.sliding) return + return this.slide('prev') + } + + , slide: function (type, next) { + var $active = this.$element.find('.item.active') + , $next = next || $active[type]() + , isCycling = this.interval + , direction = type == 'next' ? 'left' : 'right' + , fallback = type == 'next' ? 'first' : 'last' + , that = this + , e = $.Event('slide', { + relatedTarget: $next[0] + }) + + this.sliding = true + + isCycling && this.pause() + + $next = $next.length ? $next : this.$element.find('.item')[fallback]() + + if ($next.hasClass('active')) return + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + this.$element.one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + } + + + /* CAROUSEL PLUGIN DEFINITION + * ========================== */ + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('carousel') + , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option) + , action = typeof option == 'string' ? option : options.slide + if (!data) $this.data('carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.cycle() + }) + } + + $.fn.carousel.defaults = { + interval: 5000 + , pause: 'hover' + } + + $.fn.carousel.Constructor = Carousel + + + /* CAROUSEL DATA-API + * ================= */ + + $(function () { + $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) { + var $this = $(this), href + , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data()) + $target.carousel(options) + e.preventDefault() + }) + }) + +}(window.jQuery);/* ============================================================= + * bootstrap-collapse.js v2.1.0 + * http://twitter.github.com/bootstrap/javascript.html#collapse + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* COLLAPSE PUBLIC CLASS DEFINITION + * ================================ */ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.collapse.defaults, options) + + if (this.options.parent) { + this.$parent = $(this.options.parent) + } + + this.options.toggle && this.toggle() + } + + Collapse.prototype = { + + constructor: Collapse + + , dimension: function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + , show: function () { + var dimension + , scroll + , actives + , hasData + + if (this.transitioning) return + + dimension = this.dimension() + scroll = $.camelCase(['scroll', dimension].join('-')) + actives = this.$parent && this.$parent.find('> .accordion-group > .in') + + if (actives && actives.length) { + hasData = actives.data('collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('collapse', null) + } + + this.$element[dimension](0) + this.transition('addClass', $.Event('show'), 'shown') + $.support.transition && this.$element[dimension](this.$element[0][scroll]) + } + + , hide: function () { + var dimension + if (this.transitioning) return + dimension = this.dimension() + this.reset(this.$element[dimension]()) + this.transition('removeClass', $.Event('hide'), 'hidden') + this.$element[dimension](0) + } + + , reset: function (size) { + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + [dimension](size || 'auto') + [0].offsetWidth + + this.$element[size !== null ? 'addClass' : 'removeClass']('collapse') + + return this + } + + , transition: function (method, startEvent, completeEvent) { + var that = this + , complete = function () { + if (startEvent.type == 'show') that.reset() + that.transitioning = 0 + that.$element.trigger(completeEvent) + } + + this.$element.trigger(startEvent) + + if (startEvent.isDefaultPrevented()) return + + this.transitioning = 1 + + this.$element[method]('in') + + $.support.transition && this.$element.hasClass('collapse') ? + this.$element.one($.support.transition.end, complete) : + complete() + } + + , toggle: function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + } + + + /* COLLAPSIBLE PLUGIN DEFINITION + * ============================== */ + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('collapse') + , options = typeof option == 'object' && option + if (!data) $this.data('collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.defaults = { + toggle: true + } + + $.fn.collapse.Constructor = Collapse + + + /* COLLAPSIBLE DATA-API + * ==================== */ + + $(function () { + $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + , target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + , option = $(target).data('collapse') ? 'toggle' : $this.data() + $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + $(target).collapse(option) + }) + }) + +}(window.jQuery);/* ============================================================ + * bootstrap-dropdown.js v2.1.0 + * http://twitter.github.com/bootstrap/javascript.html#dropdowns + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* DROPDOWN CLASS DEFINITION + * ========================= */ + + var toggle = '[data-toggle=dropdown]' + , Dropdown = function (element) { + var $el = $(element).on('click.dropdown.data-api', this.toggle) + $('html').on('click.dropdown.data-api', function () { + $el.parent().removeClass('open') + }) + } + + Dropdown.prototype = { + + constructor: Dropdown + + , toggle: function (e) { + var $this = $(this) + , $parent + , isActive + + if ($this.is('.disabled, :disabled')) return + + $parent = getParent($this) + + isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + $parent.toggleClass('open') + $this.focus() + } + + return false + } + + , keydown: function (e) { + var $this + , $items + , $active + , $parent + , isActive + , index + + if (!/(38|40|27)/.test(e.keyCode)) return + + $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + $parent = getParent($this) + + isActive = $parent.hasClass('open') + + if (!isActive || (isActive && e.keyCode == 27)) return $this.click() + + $items = $('[role=menu] li:not(.divider) a', $parent) + + if (!$items.length) return + + index = $items.index($items.filter(':focus')) + + if (e.keyCode == 38 && index > 0) index-- // up + if (e.keyCode == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items + .eq(index) + .focus() + } + + } + + function clearMenus() { + getParent($(toggle)) + .removeClass('open') + } + + function getParent($this) { + var selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + $parent.length || ($parent = $this.parent()) + + return $parent + } + + + /* DROPDOWN PLUGIN DEFINITION + * ========================== */ + + $.fn.dropdown = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('dropdown') + if (!data) $this.data('dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.dropdown.Constructor = Dropdown + + + /* APPLY TO STANDARD DROPDOWN ELEMENTS + * =================================== */ + + $(function () { + $('html') + .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus) + $('body') + .on('click.dropdown touchstart.dropdown.data-api', '.dropdown', function (e) { e.stopPropagation() }) + .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle) + .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) + }) + +}(window.jQuery);/* ========================================================= + * bootstrap-modal.js v2.1.0 + * http://twitter.github.com/bootstrap/javascript.html#modals + * ========================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================= */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* MODAL CLASS DEFINITION + * ====================== */ + + var Modal = function (element, options) { + this.options = options + this.$element = $(element) + .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) + this.options.remote && this.$element.find('.modal-body').load(this.options.remote) + } + + Modal.prototype = { + + constructor: Modal + + , toggle: function () { + return this[!this.isShown ? 'show' : 'hide']() + } + + , show: function () { + var that = this + , e = $.Event('show') + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + $('body').addClass('modal-open') + + this.isShown = true + + this.escape() + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(document.body) //don't move modals dom position + } + + that.$element + .show() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element + .addClass('in') + .attr('aria-hidden', false) + .focus() + + that.enforceFocus() + + transition ? + that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) : + that.$element.trigger('shown') + + }) + } + + , hide: function (e) { + e && e.preventDefault() + + var that = this + + e = $.Event('hide') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + $('body').removeClass('modal-open') + + this.escape() + + $(document).off('focusin.modal') + + this.$element + .removeClass('in') + .attr('aria-hidden', true) + + $.support.transition && this.$element.hasClass('fade') ? + this.hideWithTransition() : + this.hideModal() + } + + , enforceFocus: function () { + var that = this + $(document).on('focusin.modal', function (e) { + if (that.$element[0] !== e.target && !that.$element.has(e.target).length) { + that.$element.focus() + } + }) + } + + , escape: function () { + var that = this + if (this.isShown && this.options.keyboard) { + this.$element.on('keyup.dismiss.modal', function ( e ) { + e.which == 27 && that.hide() + }) + } else if (!this.isShown) { + this.$element.off('keyup.dismiss.modal') + } + } + + , hideWithTransition: function () { + var that = this + , timeout = setTimeout(function () { + that.$element.off($.support.transition.end) + that.hideModal() + }, 500) + + this.$element.one($.support.transition.end, function () { + clearTimeout(timeout) + that.hideModal() + }) + } + + , hideModal: function (that) { + this.$element + .hide() + .trigger('hidden') + + this.backdrop() + } + + , removeBackdrop: function () { + this.$backdrop.remove() + this.$backdrop = null + } + + , backdrop: function (callback) { + var that = this + , animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $('