diff --git a/airtime_mvc/application/controllers/PreferenceController.php b/airtime_mvc/application/controllers/PreferenceController.php index 23727b9f1..bcc1388dd 100644 --- a/airtime_mvc/application/controllers/PreferenceController.php +++ b/airtime_mvc/application/controllers/PreferenceController.php @@ -6,6 +6,9 @@ class PreferenceController extends Zend_Controller_Action public function init() { /* Initialize action controller here */ + $ajaxContext = $this->_helper->getHelper('AjaxContext'); + $ajaxContext->addActionContext('register', 'json') + ->initContext(); } public function indexAction() @@ -16,6 +19,9 @@ class PreferenceController extends Zend_Controller_Action $this->view->headScript()->appendFile($baseUrl.'/js/airtime/preferences/preferences.js','text/javascript'); $this->view->statusMsg = ""; + $this->view->registered = Application_Model_Preference::GetRegistered(); + $this->view->supportFeedback = Application_Model_Preference::GetSupportFeedback(); + $form = new Application_Form_Preferences(); if ($request->isPost()) { @@ -35,14 +41,28 @@ class PreferenceController extends Zend_Controller_Action Application_Model_Preference::SetSoundCloudTags($values["preferences_soundcloud"]["SoundCloudTags"]); Application_Model_Preference::SetSoundCloudGenre($values["preferences_soundcloud"]["SoundCloudGenre"]); Application_Model_Preference::SetSoundCloudTrackType($values["preferences_soundcloud"]["SoundCloudTrackType"]); - Application_Model_Preference::SetSoundCloudLicense($values["preferences_soundcloud"]["SoundCloudLicense"]); + Application_Model_Preference::SetSoundCloudLicense($values["preferences_soundcloud"]["SoundCloudLicense"]); + + Application_Model_Preference::SetPhone($values["preferences_support"]["Phone"]); + Application_Model_Preference::SetEmail($values["preferences_support"]["Email"]); + Application_Model_Preference::SetStationWebSite($values["preferences_support"]["StationWebSite"]); + Application_Model_Preference::SetSupportFeedback($values["preferences_support"]["SupportFeedback"]); $this->view->statusMsg = "
Preferences updated.
"; } } - $this->view->form = $form; } + + public function registerAction(){ + $request = $this->getRequest(); + $baseUrl = $request->getBaseUrl(); + + $this->view->headScript()->appendFile($baseUrl.'/js/airtime/preferences/preferences.js','text/javascript'); + + $form = new Application_Form_RegisterAirtime(); + $this->view->dialog = $form->render($this->view); + } } diff --git a/airtime_mvc/application/forms/Preferences.php b/airtime_mvc/application/forms/Preferences.php index e329e48ff..4d46563ec 100644 --- a/airtime_mvc/application/forms/Preferences.php +++ b/airtime_mvc/application/forms/Preferences.php @@ -17,6 +17,9 @@ class Application_Form_Preferences extends Zend_Form $soundcloud_pref = new Application_Form_SoundcloudPreferences(); $this->addSubForm($soundcloud_pref, 'preferences_soundcloud'); + + $support_pref = new Application_Form_SupportPreferences(); + $this->addSubForm($support_pref, 'preferences_support'); $this->addElement('submit', 'submit', array( 'class' => 'ui-button ui-state-default right-floated', diff --git a/airtime_mvc/application/forms/RegisterAirtime.php b/airtime_mvc/application/forms/RegisterAirtime.php new file mode 100644 index 000000000..843cce502 --- /dev/null +++ b/airtime_mvc/application/forms/RegisterAirtime.php @@ -0,0 +1,83 @@ +setDecorators(array( + array('ViewScript', array('viewScript' => 'form/register-dialog.phtml')) + )); + + // checkbox for publicise + $this->addElement('checkbox', 'Publicise', array( + 'label' => 'Publicise my station on Sourcefabric.org', + 'required' => false, + 'value' => Application_Model_Preference::GetSupportFeedback(), + 'decorators' => array( + 'ViewHelper' + ) + )); + + // Station Name + $this->addElement('text', 'StationName', array( + 'label' => 'Station Name:', + 'required' => false, + 'class' => 'input_text', + 'value' => Application_Model_Preference::GetStationName(), + 'decorators' => array( + 'ViewHelper' + ) + )); + + // Station Web Site + $this->addElement('text', 'StationWebSite', array( + 'label' => 'Station Web Site:', + 'required' => false, + 'class' => 'input_text', + 'value' => Application_Model_Preference::GetStationWebSite(), + 'decorators' => array( + 'ViewHelper' + ) + )); + + // Phone number + $this->addElement('text', 'Phone', array( + 'class' => 'input_text', + 'label' => 'Phone:', + 'required' => false, + 'filters' => array('StringTrim'), + 'value' => Application_Model_Preference::GetPhone(), + 'decorators' => array( + 'ViewHelper' + ) + )); + + //Email + $this->addElement('text', 'Email', array( + 'class' => 'input_text', + 'label' => 'Email:', + 'required' => false, + 'filters' => array('StringTrim'), + 'value' => Application_Model_Preference::GetEmail(), + 'decorators' => array( + 'ViewHelper' + ) + )); + + // text area for sending detail + $this->addElement('textarea', 'SendInfo', array( + 'class' => 'textarea', + 'required' => false, + 'filters' => array('StringTrim'), + 'cols' => 48, + 'rows' => 20, + 'readonly' => true, + 'value' => Application_Model_Preference::GetSystemInfo(), + 'decorators' => array( + 'ViewHelper' + ) + )); + } +} + diff --git a/airtime_mvc/application/forms/SupportPreferences.php b/airtime_mvc/application/forms/SupportPreferences.php new file mode 100644 index 000000000..745d432c4 --- /dev/null +++ b/airtime_mvc/application/forms/SupportPreferences.php @@ -0,0 +1,72 @@ +setDecorators(array( + array('ViewScript', array('viewScript' => 'form/preferences_support.phtml')) + )); + + // Phone number + $this->addElement('text', 'Phone', array( + 'class' => 'input_text', + 'label' => 'Phone:', + 'required' => false, + 'filters' => array('StringTrim'), + 'value' => Application_Model_Preference::GetPhone(), + 'decorators' => array( + 'ViewHelper' + ) + )); + + //Email + $this->addElement('text', 'Email', array( + 'class' => 'input_text', + 'label' => 'Email:', + 'required' => false, + 'filters' => array('StringTrim'), + 'value' => Application_Model_Preference::GetEmail(), + 'decorators' => array( + 'ViewHelper' + ) + )); + + // Station Web Site + $this->addElement('text', 'StationWebSite', array( + 'label' => 'Station Web Site:', + 'required' => false, + 'class' => 'input_text', + 'value' => Application_Model_Preference::GetStationWebSite(), + 'decorators' => array( + 'ViewHelper' + ) + )); + + //enable support feedback + $this->addElement('checkbox', 'SupportFeedback', array( + 'label' => 'Support feedback enabled', + 'required' => false, + 'value' => Application_Model_Preference::GetSupportFeedback(), + 'decorators' => array( + 'ViewHelper' + ) + )); + + //add register button if not registered + if( !Application_Model_Preference::GetRegistered() ){ + $this->addElement('submit', 'Register', array( + 'class' => 'ui-button ui-state-default', + 'ignore' => true, + 'label' => 'Register', + 'decorators' => array( + 'ViewHelper' + ) + )); + } + } + + +} + diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index 400e99d8a..5c754318f 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -188,6 +188,55 @@ class Application_Model_Preference return $val; } } - + + public static function SetPhone($phone){ + Application_Model_Preference::SetValue("phone", $phone); + } + + public static function GetPhone(){ + return Application_Model_Preference::GetValue("phone"); + } + + public static function SetEmail($email){ + Application_Model_Preference::SetValue("email", $email); + } + + public static function GetEmail(){ + return Application_Model_Preference::GetValue("email"); + } + + public static function SetStationWebSite($site){ + Application_Model_Preference::SetValue("station_website", $site); + } + + public static function GetStationWebSite(){ + return Application_Model_Preference::GetValue("station_website"); + } + + public static function SetSupportFeedback($feedback){ + Application_Model_Preference::SetValue("support_feedback", $feedback); + } + + public static function GetSupportFeedback(){ + return Application_Model_Preference::GetValue("support_feedback"); + } + + public static function SetRegistered($registered){ + Application_Model_Preference::SetValue("registered", $registered); + } + + public static function GetRegistered(){ + return Application_Model_Preference::GetValue("registered"); + } + + public static function GetSystemInfo(){ + $output; + exec('airtime-check-system', $output); + $out = implode("\n", preg_replace('/\s+/', ' ', $output)); + + // Sever API + $out .= php_sapi_name(); + return $out; + } } diff --git a/airtime_mvc/application/views/scripts/form/preferences.phtml b/airtime_mvc/application/views/scripts/form/preferences.phtml index 88c87e5a6..7bb5fa5c0 100644 --- a/airtime_mvc/application/views/scripts/form/preferences.phtml +++ b/airtime_mvc/application/views/scripts/form/preferences.phtml @@ -6,6 +6,11 @@ + +

Support Settings

+
element->getElement('submit') ?> diff --git a/airtime_mvc/application/views/scripts/form/preferences_support.phtml b/airtime_mvc/application/views/scripts/form/preferences_support.phtml new file mode 100644 index 000000000..af17a91c6 --- /dev/null +++ b/airtime_mvc/application/views/scripts/form/preferences_support.phtml @@ -0,0 +1,67 @@ +
+
+ element->getView()->registered){?> +
Registered
+ +
Please register your Airtime system by clicking Register button at the bottom.
+ + element->getView()->supportFeedback === '0'){?> +
Be more awesome by selecting "Support feedback" below. You will be helping Airtim improve!
+ +
+ +
+
+ element->getElement('Phone') ?> + element->getElement('Phone')->hasErrors()) : ?> +
    + element->getElement('Phone')->getMessages() as $error): ?> +
  • + +
+ +
+
+ +
+
+ element->getElement('Email') ?> + element->getElement('Email')->hasErrors()) : ?> +
    + element->getElement('Email')->getMessages() as $error): ?> +
  • + +
+ +
+
+ +
+
+ element->getElement('StationWebSite') ?> + element->getElement('StationWebSite')->hasErrors()) : ?> +
    + element->getElement('StationWebSite')->getMessages() as $error): ?> +
  • + +
+ +
+
+ + element->getElement('SupportFeedback')->hasErrors()) : ?> +
    + element->getElement('SupportFeedback')->getMessages() as $error): ?> +
  • + +
+ +
+
+ element->getElement('Register') ?> +
+
+
diff --git a/airtime_mvc/application/views/scripts/form/register-dialog.phtml b/airtime_mvc/application/views/scripts/form/register-dialog.phtml new file mode 100644 index 000000000..e42a15224 --- /dev/null +++ b/airtime_mvc/application/views/scripts/form/register-dialog.phtml @@ -0,0 +1,103 @@ +
+
+

Help Airtime improve by letting us know you are using it. This info + will be collected once per month and is anonymous unless you chose to + advertise your station on sourcefabric.org

+ +
+
+ +
+
+ + element->getElement('Publicise')->hasErrors()) : ?> +
    + element->getElement('Publicise')->getMessages() as $error): ?> +
  • + +
+ +
+
+ +
+
+
+ +
+
+ element->getElement('StationName') ?> + element->getElement('StationName')->hasErrors()) : ?> +
    + element->getElement('StationName')->getMessages() as $error): ?> +
  • + +
+ +
+
+ +
+
+ element->getElement('StationWebSite') ?> + element->getElement('StationWebSite')->hasErrors()) : ?> +
    + element->getElement('StationWebSite')->getMessages() as $error): ?> +
  • + +
+ +
+
+ +
+
+ element->getElement('Phone') ?> + element->getElement('Phone')->hasErrors()) : ?> +
    + element->getElement('Phone')->getMessages() as $error): ?> +
  • + +
+ +
+
+ +
+
+ element->getElement('Email') ?> + element->getElement('Email')->hasErrors()) : ?> +
    + element->getElement('Email')->getMessages() as $error): ?> +
  • + +
+ +
+
+
+
+ +

+ Show me what I am sending +

+ +
+
+
+ element->getElement('SendInfo') ?> +
Airtime version:
+
1.9.0
+ +
Unique ID:
+
AT19236520FR00673
+ +
Station name:
+
BBC Radio 1
+
+
+
+
\ No newline at end of file diff --git a/airtime_mvc/public/css/redmond/jquery-ui-1.8.8.custom.css b/airtime_mvc/public/css/redmond/jquery-ui-1.8.8.custom.css index 1de938884..4956e096e 100644 --- a/airtime_mvc/public/css/redmond/jquery-ui-1.8.8.custom.css +++ b/airtime_mvc/public/css/redmond/jquery-ui-1.8.8.custom.css @@ -1136,9 +1136,10 @@ button.ui-button.::-moz-focus-inner { */ .ui-dialog { position: absolute; - padding: .2em; + padding: .4em; width: 300px; overflow: hidden; + border-width: 3px; } .ui-dialog .ui-dialog-titlebar { padding: 6px 8px 6px 8px; @@ -1171,13 +1172,16 @@ button.ui-button.::-moz-focus-inner { background: none; overflow: auto; zoom: 1; + } .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; - background-image: none; + background: none; margin: .5em 0 0 0; - padding: .3em 1em .5em .4em; + margin: 0.3em -0.4em 0; + padding: 0.3em 1em 0 0.4em; + border-color: #9f9f9f; } .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; diff --git a/airtime_mvc/public/js/airtime/preferences/preferences.js b/airtime_mvc/public/js/airtime/preferences/preferences.js index a6fa7448e..a8b292827 100644 --- a/airtime_mvc/public/js/airtime/preferences/preferences.js +++ b/airtime_mvc/public/js/airtime/preferences/preferences.js @@ -13,5 +13,39 @@ $(document).ready(function() { h3.addClass("close"); } }); + + $('#Register').click(function(event){ + event.preventDefault(); + $.get("/Preference/register", {format:"json"}, function(json){ + var dialog = $(json.dialog); + + dialog.dialog({ + autoOpen: false, + title: 'Register Airtime', + width: 400, + height: 500, + modal: true, + buttons: {"Ok": function() { + dialog.remove(); + }} + }); + + dialog.dialog('open'); + + var form = $("form"); + + form.find("h3").click(function(){ + var h3 = $(this); + h3.next().toggle(); + + if(h3.hasClass("close")) { + h3.removeClass("close"); + } + else { + h3.addClass("close"); + } + }); + }) + }) });