diff --git a/airtime_mvc/application/Bootstrap.php b/airtime_mvc/application/Bootstrap.php
index f3bf8f561..458d45837 100644
--- a/airtime_mvc/application/Bootstrap.php
+++ b/airtime_mvc/application/Bootstrap.php
@@ -53,6 +53,7 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
$view->headLink()->appendStylesheet($baseUrl.'/css/redmond/jquery-ui-1.8.8.custom.css');
$view->headLink()->appendStylesheet($baseUrl.'/css/pro_dropdown_3.css');
+ $view->headLink()->appendStylesheet($baseUrl.'/css/qtip/jquery.qtip.min.css');
$view->headLink()->appendStylesheet($baseUrl.'/css/styles.css');
}
@@ -71,6 +72,7 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
//scripts for now playing bar
$view->headScript()->appendFile($baseUrl.'/js/airtime/dashboard/helperfunctions.js','text/javascript');
$view->headScript()->appendFile($baseUrl.'/js/airtime/dashboard/playlist.js','text/javascript');
+ $view->headScript()->appendFile($baseUrl.'/js/airtime/dashboard/versiontooltip.js','text/javascript');
$view->headScript()->appendFile($baseUrl.'/js/airtime/common/common.js','text/javascript');
}
diff --git a/airtime_mvc/application/controllers/LibraryController.php b/airtime_mvc/application/controllers/LibraryController.php
index 6aa4a5b43..2dad3da53 100644
--- a/airtime_mvc/application/controllers/LibraryController.php
+++ b/airtime_mvc/application/controllers/LibraryController.php
@@ -36,7 +36,6 @@ class LibraryController extends Zend_Controller_Action
$this->view->headLink()->appendStylesheet($baseUrl.'/css/media_library.css');
$this->view->headLink()->appendStylesheet($baseUrl.'/css/contextmenu.css');
- $this->view->headLink()->appendStylesheet($baseUrl.'/css/qtip/jquery.qtip.min.css');
$this->_helper->layout->setLayout('library');
diff --git a/airtime_mvc/application/controllers/PreferenceController.php b/airtime_mvc/application/controllers/PreferenceController.php
index 414f3dae2..6a8237ccf 100644
--- a/airtime_mvc/application/controllers/PreferenceController.php
+++ b/airtime_mvc/application/controllers/PreferenceController.php
@@ -160,8 +160,10 @@ class PreferenceController extends Zend_Controller_Action
$num_of_stream = intval(Application_Model_Preference::GetNumOfStreams());
$form = new Application_Form_StreamSetting();
- $form->setSetting($setting);
- $form->startFrom();
+ if(Application_Model_Preference::GetPlanLevel() == 'disabled'){
+ $form->setSetting($setting);
+ $form->startFrom();
+ }
for($i=1; $i<=$num_of_stream; $i++){
$subform = new Application_Form_StreamSettingSubForm();
$subform->setPrefix($i);
diff --git a/airtime_mvc/application/controllers/ScheduleController.php b/airtime_mvc/application/controllers/ScheduleController.php
index 05255ea5a..e72d4cd84 100644
--- a/airtime_mvc/application/controllers/ScheduleController.php
+++ b/airtime_mvc/application/controllers/ScheduleController.php
@@ -56,7 +56,6 @@ class ScheduleController extends Zend_Controller_Action
$this->view->headLink()->appendStylesheet($baseUrl.'/css/colorpicker/css/colorpicker.css');
$this->view->headLink()->appendStylesheet($baseUrl.'/css/add-show.css');
$this->view->headLink()->appendStylesheet($baseUrl.'/css/contextmenu.css');
- $this->view->headLink()->appendStylesheet($baseUrl.'/css/qtip/jquery.qtip.min.css');
Application_Model_Schedule::createNewFormSections($this->view);
diff --git a/airtime_mvc/application/layouts/scripts/layout.phtml b/airtime_mvc/application/layouts/scripts/layout.phtml
index 232fecd37..53ff557d1 100644
--- a/airtime_mvc/application/layouts/scripts/layout.phtml
+++ b/airtime_mvc/application/layouts/scripts/layout.phtml
@@ -10,6 +10,7 @@
+ versionNotify() ?>
partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining())) ?>
+ versionNotify() ?>
partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining())) ?>
$d){
@@ -76,6 +83,20 @@ class Application_Model_StreamSetting {
}
}
+ /*
+ * Sets indivisual stream setting.
+ *
+ * $data - data array. $data is [].
+ */
+ public static function setIndivisualStreamSetting($data){
+ global $CC_DBC;
+
+ foreach($data as $keyname => $v){
+ $sql = "UPDATE cc_stream_setting SET value='$v' WHERE keyname='$keyname'";
+ $CC_DBC->query($sql);
+ }
+ }
+
public static function setLiquidsoapError($stream_id, $msg){
global $CC_DBC;
diff --git a/airtime_mvc/application/views/helpers/VersionNotify.php b/airtime_mvc/application/views/helpers/VersionNotify.php
new file mode 100644
index 000000000..be87718a7
--- /dev/null
+++ b/airtime_mvc/application/views/helpers/VersionNotify.php
@@ -0,0 +1,61 @@
+" . $latest . "";
+ if(($diff == 0 && $current == $latest) || $diff < 0) {
+ // current version is up to date
+ $bg .= "icon_uptodate.png";
+ $msg = "You are running the latest version";
+ } else if($diff <= 2) {
+ // 2 or less major versions back
+ $bg .= "icon_update.png";
+ $msg = "New version available: " . $link;
+ } else if($diff == 3) {
+ // 3 major versions back
+ $bg .= "icon_update2.png";
+ $msg = "This version will soon be obsolete.
Please upgrade to " . $link;
+ } else {
+ // more than 3 major versions back
+ $bg .= "icon_outdated.png";
+ $msg = "This version is no longer supported.
Please upgrade to " . $link;
+ }
+
+ $result = "
" . $msg . "
"
+ . "
" . $current . "
"
+ . "
";
+ return $result;
+ }
+}
diff --git a/airtime_mvc/application/views/scripts/preference/stream-setting.phtml b/airtime_mvc/application/views/scripts/preference/stream-setting.phtml
index b86bbc855..d250be0cd 100644
--- a/airtime_mvc/application/views/scripts/preference/stream-setting.phtml
+++ b/airtime_mvc/application/views/scripts/preference/stream-setting.phtml
@@ -8,6 +8,7 @@
statusMsg;?>
+form->getElement('output_sound_device') != null){?>
+
num_stream;$i++){
echo $this->form->getSubform("s".$i."_subform");
diff --git a/airtime_mvc/public/css/images/icon_outdated.png b/airtime_mvc/public/css/images/icon_outdated.png
new file mode 100644
index 000000000..57202058f
Binary files /dev/null and b/airtime_mvc/public/css/images/icon_outdated.png differ
diff --git a/airtime_mvc/public/css/images/icon_update.png b/airtime_mvc/public/css/images/icon_update.png
new file mode 100644
index 000000000..7bd78081e
Binary files /dev/null and b/airtime_mvc/public/css/images/icon_update.png differ
diff --git a/airtime_mvc/public/css/images/icon_update2.png b/airtime_mvc/public/css/images/icon_update2.png
new file mode 100644
index 000000000..38fa5330f
Binary files /dev/null and b/airtime_mvc/public/css/images/icon_update2.png differ
diff --git a/airtime_mvc/public/css/images/icon_uptodate.png b/airtime_mvc/public/css/images/icon_uptodate.png
new file mode 100644
index 000000000..8ed6bb01d
Binary files /dev/null and b/airtime_mvc/public/css/images/icon_uptodate.png differ
diff --git a/airtime_mvc/public/css/styles.css b/airtime_mvc/public/css/styles.css
index c695fdb7d..927cea5f4 100644
--- a/airtime_mvc/public/css/styles.css
+++ b/airtime_mvc/public/css/styles.css
@@ -57,6 +57,31 @@ select {
display:block;
}
+/* Version Notification Starts*/
+#version_icon {
+ position:absolute;
+ right:85px;
+ top:104px;
+ height:35px;
+ width:35px;
+ z-index:1000;
+ display:block;
+ cursor:pointer;
+
+ background-repeat:no-repeat;
+ background-position:center;
+}
+
+#ui-tooltip-version a {
+ color:#ff5d1a;
+ text-decoration:none;
+}
+
+#ui-tooltip-version {
+ font-size: 14px;
+}
+/* Version Notification Ends*/
+
/* Clearfix */
.clearfix:after, li:after { content: "."; display: block; height: 0; clear: both; visibility: hidden;}
.clearfix, li { display: inline-block; }
diff --git a/airtime_mvc/public/js/airtime/dashboard/versiontooltip.js b/airtime_mvc/public/js/airtime/dashboard/versiontooltip.js
new file mode 100644
index 000000000..02660c019
--- /dev/null
+++ b/airtime_mvc/public/js/airtime/dashboard/versiontooltip.js
@@ -0,0 +1,53 @@
+/**
+ * Get the tooltip message to be displayed,
+ * which is stored inside a pair of hidden div tags
+ */
+function getContent() {
+ return $("#version_message").html();
+}
+
+/**
+ * Get the current version,
+ * which is stored inside a pair of hidden div tags
+ */
+function getCurrentVersion() {
+ return $("#version_current").html();
+}
+
+/**
+ * Sets up the tooltip for version notification
+ */
+function setupVersionQtip(){
+ var qtipElem = $('#version_icon');
+ if (qtipElem.length > 0){
+ qtipElem.qtip({
+ id: 'version',
+ content: {
+ text: getContent(),
+ title: {
+ text: getCurrentVersion(),
+ button: true
+ }
+ },
+ show: 'click', /* Show on click */
+ hide: false, /* Don't hide on mouseout */
+ position: {
+ my: "top right",
+ at: "bottom left"
+ },
+ style: {
+ border: {
+ width: 0,
+ radius: 4
+ },
+ classes: "ui-tooltip-dark ui-tooltip-rounded"
+ }
+ });
+ }
+}
+
+$(document).ready(function() {
+ if($('#version_message').length > 0) {
+ setupVersionQtip();
+ }
+});
\ No newline at end of file
diff --git a/airtime_mvc/public/js/airtime/preferences/streamsetting.js b/airtime_mvc/public/js/airtime/preferences/streamsetting.js
index d4198868f..09cc06529 100644
--- a/airtime_mvc/public/js/airtime/preferences/streamsetting.js
+++ b/airtime_mvc/public/js/airtime/preferences/streamsetting.js
@@ -30,7 +30,9 @@ function rebuildStreamURL(ele){
function restrictOggBitrate(ele, on){
var div = ele.closest("div")
if(on){
- div.find("select[id$=data-bitrate]").find("option[value='48']").attr('selected','selected');
+ if(parseInt(div.find("select[id$=data-bitrate]").val(),10) < 48){
+ div.find("select[id$=data-bitrate]").find("option[value='48']").attr("selected","selected");
+ }
div.find("select[id$=data-bitrate]").find("option[value='24']").attr("disabled","disabled");
div.find("select[id$=data-bitrate]").find("option[value='32']").attr("disabled","disabled");
}else{
diff --git a/utils/phone_home_stat.php b/utils/phone_home_stat.php
index 2ac9fc855..929325f97 100644
--- a/utils/phone_home_stat.php
+++ b/utils/phone_home_stat.php
@@ -74,6 +74,18 @@ if(Application_Model_Preference::GetSupportFeedback() == '1'){
$result = curl_exec($ch);
}
+// Get latest version from stat server and store to db
+if(Application_Model_Preference::GetPlanLevel() == 'disabled'){
+ $url = 'http://stat-dev.sourcefabric.org/airtime_latest_version';
+
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch, CURLOPT_URL, $url);
+ $result = curl_exec($ch);
+
+ Application_Model_Preference::SetLatestVersion($result);
+}
+
/**
* Ensures that the user is running this PHP script with root
* permissions. If not running with root permissions, causes the