From 68f142470abb974ef261f0bb58a8aaad472c889f Mon Sep 17 00:00:00 2001 From: james Date: Sun, 13 Nov 2011 13:58:47 -0500 Subject: [PATCH 1/3] SAAS-67: "Hardware Audio Out" shows when SaaS is enabled - "Hardware Audio Out" is not visible when plan-level is not diabled --- .../application/controllers/PreferenceController.php | 6 ++++-- .../views/scripts/preference/stream-setting.phtml | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) 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/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){?>
Hardware Audio Out
@@ -21,6 +22,7 @@
+ num_stream;$i++){ echo $this->form->getSubform("s".$i."_subform"); From 8e283c9e02ba3bf822577eb4722349abc55d7e61 Mon Sep 17 00:00:00 2001 From: james Date: Sun, 13 Nov 2011 15:34:26 -0500 Subject: [PATCH 2/3] SAAS-66: Ability to set the stream values from the command line - done - extra fix: Fixed a javascript issue when it always changed bitrate to 48, when type is set to ogg --- .../application/models/StreamSetting.php | 21 +++++++++++++++++++ .../js/airtime/preferences/streamsetting.js | 4 +++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/airtime_mvc/application/models/StreamSetting.php b/airtime_mvc/application/models/StreamSetting.php index 5675de6c2..4486178ae 100644 --- a/airtime_mvc/application/models/StreamSetting.php +++ b/airtime_mvc/application/models/StreamSetting.php @@ -50,6 +50,13 @@ class Application_Model_StreamSetting { return $rows; } + /* + * function that take all the information of stream and sets them. + * This is used by stream setting via UI. + * + * @param $data - array that contains all the data. $data is [][] which + * contains multiple stream information + */ public static function setStreamSetting($data){ global $CC_DBC; foreach($data as $key=>$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/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{ From 1a1db1892f847d91b02169309532d969a6105294 Mon Sep 17 00:00:00 2001 From: Yuchen Wang Date: Mon, 14 Nov 2011 00:34:53 -0500 Subject: [PATCH 3/3] CC-2950: Tell users if they are running an out-of-date version or not Initial implementation. - added some code in phone_home_stat to retrieve latest version from stat server and store result in db - created new view helper VersionNotify.php, which queries and calculates version difference, then returns the necessary information in html to the view files - created new javascript file versiontooltip.js, which sets up the qtip stuff so that when the version notification icon is clicked, a tooltip is displayed --- airtime_mvc/application/Bootstrap.php | 2 + .../controllers/LibraryController.php | 1 - .../controllers/ScheduleController.php | 1 - .../application/layouts/scripts/layout.phtml | 1 + .../application/layouts/scripts/library.phtml | 1 + airtime_mvc/application/models/Preference.php | 17 +++++ .../views/helpers/VersionNotify.php | 61 ++++++++++++++++++ .../public/css/images/icon_outdated.png | Bin 0 -> 3861 bytes airtime_mvc/public/css/images/icon_update.png | Bin 0 -> 3686 bytes .../public/css/images/icon_update2.png | Bin 0 -> 3787 bytes .../public/css/images/icon_uptodate.png | Bin 0 -> 3747 bytes airtime_mvc/public/css/styles.css | 25 +++++++ .../js/airtime/dashboard/versiontooltip.js | 53 +++++++++++++++ utils/phone_home_stat.php | 12 ++++ 14 files changed, 172 insertions(+), 2 deletions(-) create mode 100644 airtime_mvc/application/views/helpers/VersionNotify.php create mode 100644 airtime_mvc/public/css/images/icon_outdated.png create mode 100644 airtime_mvc/public/css/images/icon_update.png create mode 100644 airtime_mvc/public/css/images/icon_update2.png create mode 100644 airtime_mvc/public/css/images/icon_uptodate.png create mode 100644 airtime_mvc/public/js/airtime/dashboard/versiontooltip.js 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/ScheduleController.php b/airtime_mvc/application/controllers/ScheduleController.php index 194fc0df0..ceb330552 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())) ?> " . $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 = "" + . "" + . "
"; + return $result; + } +} 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 0000000000000000000000000000000000000000..57202058fdf8b21f0db7e9176cd3f144b501788c GIT binary patch literal 3861 zcmV+w59;uVP)4Tx0C?K1*LgJ5>l*;@XAEN>lY|i&A(N%-wA!-E8d(c7wqlGmvR`G-PS$KK zM3F3UX|WVimZ&755=mTSm-+pneYyAdJNNhe^?aZ6zUO@3_j8`}o(F&hY{+D1DgbaH zdAb{_E8|Sf%yG0&ff3k&9b`eyhTuU~(%094-^To7KmY(d60;$bo#zs(dc^Jbv|;X7 zTVji+7~$`O+1=F48~}j>05*s9Tp9q_Y}a!Q0AM@eN%jOlSONeW!O?~YfFJ{asQV#9 z6#zsQ0H7V#^AZ3++pgzz0D$%;ICuge+5u3kB%%`ufOZG~wV!C`K>$GG0KkVpcJ~B8 zrvZSXi;F7}0R0pI@TO+wxb@#W!UZ7f1;8NxwdQsR;F>D{cI<0S$Ps{37NC^oYi(8^ z5CDK+zv*EwB?$lk2qq-}ngI%B77sw12=FnULRrbDP(Bs_Ao~Gs`w+a`y+7R%f=UYD zpT5`6`6-YH04e}5L8ww;sX~$5)G{=9no5*5YLwQWZU?VwTEjj_1?*SefygfN)?xs zqg8wlII5beX{zti5Y^<-!f4;rSw1+W`&zGGzuTbIu)*k0<4q=Ihl@=wn&q44SY%qJ zTcsUIJ(_BrYLjaFfS6&IWuN1a?|9Ma^0Ct670xv-w@EFo9poo&gYIJ<)1E8dG$$}V z+`jme(tb+*x&fAf$AWx=BSO;tC=9)Es`Ye#*!%Ft2%SiQD7k3u80#~hu~Bik@l^@! ziLa8DQ&>}l&#I(Zrh8??Wfo;MWe=WP&SlS&%GWD!J|B7E(#7UWuZobDw-zgv*jx#@ znqS&jHd2ndzP&=bl2nygU3p`rmQu%GuW{4mR?_X7JA;j=Cb4GYy8-tuv^;E`zt7vQ z`4HQY-PzJL`-rCp-E+P-_i_7^rM_*?jQT^KmktaJG7aq+c6yoqs`d5MNcbDG(WtSy zx0CN^-kqBWeP1>CcIxzBdegh7duAqPBR?FPQEUwF%I1~oRio9Z zk1=cbwPuPfh4RT?2`Nv_LY?$q_$&X$-|-v&1E2g;g zuDxEDev83v!&;+?LsyLpP0k$&%>5k$P6UPpr37CLsr=(^ z=+jfxrxnA{;d~L&k(yCf(e5!3XR>3j$F;=|CoCpmlJUvoDc-4WXQR_Dq~Ffy&s@l6 zJ-0JQJJ&HUEWeRX58@x3t zwN8J=)>YK^-%`6H++fh?+mzSbc6X*_bE|3_>3-USx`$Jp*e=y>w@2AMt-bS4_@CZHc_yysG=Ee4o%{LTgPF8_F607=P-2G%}G|h`NGCi)IAn zM=MI_MsLl4Vkl)aXQE-c&TNm~g6?Dq!zf~wH&n5DY?RtK$5yrJB)bv^14kEUI+nmC z!A048pF4xcdCPuYR^HdR8ov0g4*UuNSb-VA2iuB-!tliHD#H9C)FN+0Tf~ZY#O?GF zHA-D)*|iA81sq zRXeFRuYO+RoMyUKvUa@AnS+tK;d){Ej{2hpp@yMGrw*Mq4mXKDe8x1vEX6#-!q4KP zWwBNHk(#4-tXplmZTkr$#3{Qg_EHWQM;<5PV{*q;osC>a+pQ9S43Ro<*4T9@)*T49I?`I z2JxhXn8eFTEy<&)sI!7;s_Awa;hBY5t=Z!_Ou0Mr4D-DU($Cjl7`}um6e-d#)-K7q z(s=c48RnXNx%Kskin7YS>ccgnwI+WC*Ilmfy`^(Uw86CTR8v{=S_@;Ve4G9Kr1pk~ zTRL%FdfkDKuJ*imZ1hyI&+S=3fA0Y5h5X?0VaJzUuW3ehy>S`M8+$y?@J?aE>wWR$ z@L$?9y0fQ0)XjZZ5LqNFWi9utGJjNClV9tl%mA#vcK`q=S%9Q%048PtCL#cFQ2=-V zU@rvFX9hU53#h~kfQlOri0e{c-VX#Ife|pk4uT*D2f+;NAOv#Y4vfGef)OEuutCHl z?jW8a=BPxdh*UXL|C+{mNI0^~TgG<6X5Md}AMJTzpQCe&t>Cn^usK`TZZLpw=l zNOyzo9X*adihiDf$k5BE&REB|z$D33%)E^`AI*o(V-a8}Vwu3~#N61RvY~_3igj{h zFxw`!Vzz}%Dw_t_eK|NdsyIzKSFw3q8eG|2)0?xnHMtjg3b$DBvhX(J0{Gg+Z z)!ojc$aBhD_C%0R>&Z=i1po2?^FU;fad1%xCDi0pX&8ODT|`3^Uvx;!t6258k_6U7 zzogeG`l)qiJ<>$dGc%d8g0es49LqN^=)GWYv7=D8=wY!zNzYaD(xGckxXZhxPxxE)TGor(28xVZMS$p>C)<+eysXrx?lG>Wr+9^I}$OrI$kp=J6$uU zyx6&FN1=T3M*-vi&A$V+_SOHBzSw8~AN1{6ihkDrVsHPA{`dCBzSaN#*sJ`5{lAz0 z**((jSMq5h>6sZupXGCh|JlCoVEyoC`+I(^*mjEtl#YV#>7LBTs(m^Ax-YH`5npwF z)}LCK^ncuD&eflsn{ffZHvX0H?|j!g z`)A+3>+FA}OZB_HPR{u3yRLig>bJg^Vt)`8`@xvw+aAB?*NSbcy&tu1-KDjz{baf? zr(gFu<;Arj;!EtS&etU)5u-|DtK&5j-jlLZ3)3~T{&UI;bc>zK8EX<03c&h|1ONaG zngmypva>7U_~#je0W^UCu0R51a0XW(!0}%%{NKaV&c_n~K*g2p>+a;>=!sJzlb!8w znk2#wQJkc>xcuMmU!UOs08ki!ECm37x&)@5*8K-8=JKxedEoT`000JJOGiWi{{a60 z|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^RW3k?q%3G+It!Ty7$lw_4;ndD=VKa$)D z0N1Zy|8GzjhB;%*9T5pcr1~$eiAZ3K`Q&Ac&7N0RSJT;Sb_sw5fbFqgm`N!`k^tb6 z{Kj#dkK#Cn<2V2S-Dorb0GUkYG60JtEz3fwRB|oLV)wtbEQ>)9sP;jTQtG`pj*oO; zn`$y7c_DefxOr>ec5YD^V0xTdh`ge0+TU?UN^?Mi5lvIIcud zRE?tO_imO30Il`cBGM2M+`M_y{o>-qZ1K<`mP)1UwJTTBj^oJG)Kt&v%1SEby3YIO z&*zgQfrwBZ{5o7+O>;wb931T3ky4fdfh&- ze?K#s4BwrYsB5huA_{;3a0I{|0I;>zy&|GJ3u-o->h$T;AxO;6&1GNh>w{9t9vL16 zNt`)*cCEj^-y})Wy|A5|BXdLOcB|D=XV0B$rgrQ|lv2p$a_H^t#puC<;o#t4yuH5r zHt6;B^}1|`B7%-5CntOVc=X8bN(FzOpZ7|olBc!aQY#`)Hi3mgAq4O%NsA;r&*S9e zWY3?EAE)~J`$>`mgM-aVrJ`)x=Iv4``|XVzY0I)YlUV@fS5{X3*|IU_V*oAy*6VeZ z@jT`GKGL4YQ)kYszIpt3@cQAyLA6#>S>MMGckgDFmzQxqLo(XMB9EudmNE8x8%&v18$(VljAHF7vbL>1V$0i-=fp9G`k2 zdL(iG{{76JJ$oJi$hD(Kt#v16APL*HQLELgTrNido`}p83We!~g$0a^jBLrW0^ke} z5BJQ@&dz$CHxkD&;yAWDPgMH=v2B|GTFcAJUkwcneQMjbPLf2nB&GBH@Zm$JSS)@x zGc$832m%Gb6%p4M;~HZelBuPorKJ-m-kKO49lZ>|-*z9jbZEP->${fQ7lgrX0DF%f zJzCs7Fp%?mdaSjzdT{UFProfLF8%_`dJ1F80M-D6?UZeOz5rNCsZ`oaXOlR|8Dk0% z@eP>*pe!H)5D<7KzzTq%4NCy2zAhaqQTM?IlQ32@<4Tx0C?K1*LgJ5>l*;@XAEN>lY|i&A(N%-wA!-E8d(c7wqlGmvR`G-PS$KK zM3F3UX|WVimZ&755=mTSm-+pneYyAdJNNhe^?aZ6zUO@3_j8`}o(F&hY{+D1DgbaH zdAb{_E8|Sf%yG0&ff3k&9b`eyhTuU~(%094-^To7KmY(d60;$bo#zs(dc^Jbv|;X7 zTVji+7~$`O+1=F48~}j>05*s9Tp9q_Y}a!Q0AM@eN%jOlSONeW!O?~YfFJ{asQV#9 z6#zsQ0H7V#^AZ3++pgzz0D$%;ICuge+5u3kB%%`ufOZG~wV!C`K>$GG0KkVpcJ~B8 zrvZSXi;F7}0R0pI@TO+wxb@#W!UZ7f1;8NxwdQsR;F>D{cI<0S$Ps{37NC^oYi(8^ z5CDK+zv*EwB?$lk2qq-}ngI%B77sw12=FnULRrbDP(Bs_Ao~Gs`w+a`y+7R%f=UYD zpT5`6`6-YH04e}5L8ww;sX~$5)G{=9no5*5YLwQWZU?VwTEjj_1?*SefygfN)?xs zqg8wlII5beX{zti5Y^<-!f4;rSw1+W`&zGGzuTbIu)*k0<4q=Ihl@=wn&q44SY%qJ zTcsUIJ(_BrYLjaFfS6&IWuN1a?|9Ma^0Ct670xv-w@EFo9poo&gYIJ<)1E8dG$$}V z+`jme(tb+*x&fAf$AWx=BSO;tC=9)Es`Ye#*!%Ft2%SiQD7k3u80#~hu~Bik@l^@! ziLa8DQ&>}l&#I(Zrh8??Wfo;MWe=WP&SlS&%GWD!J|B7E(#7UWuZobDw-zgv*jx#@ znqS&jHd2ndzP&=bl2nygU3p`rmQu%GuW{4mR?_X7JA;j=Cb4GYy8-tuv^;E`zt7vQ z`4HQY-PzJL`-rCp-E+P-_i_7^rM_*?jQT^KmktaJG7aq+c6yoqs`d5MNcbDG(WtSy zx0CN^-kqBWeP1>CcIxzBdegh7duAqPBR?FPQEUwF%I1~oRio9Z zk1=cbwPuPfh4RT?2`Nv_LY?$q_$&X$-|-v&1E2g;g zuDxEDev83v!&;+?LsyLpP0k$&%>5k$P6UPpr37CLsr=(^ z=+jfxrxnA{;d~L&k(yCf(e5!3XR>3j$F;=|CoCpmlJUvoDc-4WXQR_Dq~Ffy&s@l6 zJ-0JQJJ&HUEWeRX58@x3t zwN8J=)>YK^-%`6H++fh?+mzSbc6X*_bE|3_>3-USx`$Jp*e=y>w@2AMt-bS4_@CZHc_yysG=Ee4o%{LTgPF8_F607=P-2G%}G|h`NGCi)IAn zM=MI_MsLl4Vkl)aXQE-c&TNm~g6?Dq!zf~wH&n5DY?RtK$5yrJB)bv^14kEUI+nmC z!A048pF4xcdCPuYR^HdR8ov0g4*UuNSb-VA2iuB-!tliHD#H9C)FN+0Tf~ZY#O?GF zHA-D)*|iA81sq zRXeFRuYO+RoMyUKvUa@AnS+tK;d){Ej{2hpp@yMGrw*Mq4mXKDe8x1vEX6#-!q4KP zWwBNHk(#4-tXplmZTkr$#3{Qg_EHWQM;<5PV{*q;osC>a+pQ9S43Ro<*4T9@)*T49I?`I z2JxhXn8eFTEy<&)sI!7;s_Awa;hBY5t=Z!_Ou0Mr4D-DU($Cjl7`}um6e-d#)-K7q z(s=c48RnXNx%Kskin7YS>ccgnwI+WC*Ilmfy`^(Uw86CTR8v{=S_@;Ve4G9Kr1pk~ zTRL%FdfkDKuJ*imZ1hyI&+S=3fA0Y5h5X?0VaJzUuW3ehy>S`M8+$y?@J?aE>wWR$ z@L$?9y0fQ0)XjZZ5LqNFWi9utGJjNClV9tl%mA#vcK`q=S%9Q%048PtCL#cFQ2=-V zU@rvFX9hU53#h~kfQlOri0e{c-VX#Ife|pk4uT*D2f+;NAOv#Y4vfGef)OEuutCHl z?jW8a=BPxdh*UXL|C+{mNI0^~TgG<6X5Md}AMJTzpQCe&t>Cn^usK`TZZLpw=l zNOyzo9X*adihiDf$k5BE&REB|z$D33%)E^`AI*o(V-a8}Vwu3~#N61RvY~_3igj{h zFxw`!Vzz}%Dw_t_eK|NdsyIzKSFw3q8eG|2)0?xnHMtjg3b$DBvhX(J0{Gg+Z z)!ojc$aBhD_C%0R>&Z=i1po2?^FU;fad1%xCDi0pX&8ODT|`3^Uvx;!t6258k_6U7 zzogeG`l)qiJ<>$dGc%d8g0es49LqN^=)GWYv7=D8=wY!zNzYaD(xGckxXZhxPxxE)TGor(28xVZMS$p>C)<+eysXrx?lG>Wr+9^I}$OrI$kp=J6$uU zyx6&FN1=T3M*-vi&A$V+_SOHBzSw8~AN1{6ihkDrVsHPA{`dCBzSaN#*sJ`5{lAz0 z**((jSMq5h>6sZupXGCh|JlCoVEyoC`+I(^*mjEtl#YV#>7LBTs(m^Ax-YH`5npwF z)}LCK^ncuD&eflsn{ffZHvX0H?|j!g z`)A+3>+FA}OZB_HPR{u3yRLig>bJg^Vt)`8`@xvw+aAB?*NSbcy&tu1-KDjz{baf? zr(gFu<;Arj;!EtS&etU)5u-|DtK&5j-jlLZ3)3~T{&UI;bc>zK8EX<03c&h|1ONaG zngmypva>7U_~#je0W^UCu0R51a0XW(!0}%%{NKaV&c_n~K*g2p>+a;>=!sJzlb!8w znk2#wQJkc>xcuMmU!UOs08ki!ECm37x&)@5*8K-8=JKxedEoT`000JJOGiWi00000 z0Qp0^e*gdg32;bRa{vGf6951U69E94oEQKA00(qQO+^RW3l0Pj5B^rCasU7WFiAu~ zR5;6xR6%PbMHK#CReHLodnP)OKm?U&Jct(+K@EGF%Rp}4WWBh!`cFJ~2?(ASgL`s_ zAc`QYc<_+qpdi8=HtV9GlaY z-d5EURUJF$?y2f&eU-V1b8e95`C9-m7z~y;QU_fu7H?QSOOl{H?o**wg$EUa2zo}6XbrvTom=R`ywW04zx|`BhbIonbs4%X`$EZn3}^zRlfj$PN#F9;b=61@B7b-$WH*Ya^?E;++9|9H?Q`3y#W9Zmo%sg?fZe>v9wR8i}cwjieBE?*?DPWV^+SZs6scFXr6rREfO)xhWquj|0@oHE7lEY11poj507*qoM6N<$ Eg32W~ZU6uP literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..38fa5330f27acf86bfca3232a070d96219d73eb3 GIT binary patch literal 3787 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 BZ%qII literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..8ed6bb01dcd8e58f19d877278839ac9423c44600 GIT binary patch literal 3747 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 N002ovPDHLkV1nTLSU~^) literal 0 HcmV?d00001 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/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