diff --git a/airtime_mvc/application/controllers/PreferenceController.php b/airtime_mvc/application/controllers/PreferenceController.php
index 8cfa1b85d..b4baba7fd 100644
--- a/airtime_mvc/application/controllers/PreferenceController.php
+++ b/airtime_mvc/application/controllers/PreferenceController.php
@@ -34,37 +34,47 @@ class PreferenceController extends Zend_Controller_Action
$form = new Application_Form_Preferences();
if ($request->isPost()) {
- if ($form->isValid($request->getPost())) {
- $values = $form->getValues();
+ $params = $request->getPost();
+ $postData = explode('&', $params['data']);
+ foreach($postData as $k=>$v) {
+ $v = explode('=', $v);
+ $values[$v[0]] = urldecode($v[1]);
+ }
+ if ($form->isValid($values)) {
- Application_Model_Preference::SetHeadTitle($values["preferences_general"]["stationName"], $this->view);
- Application_Model_Preference::SetDefaultFade($values["preferences_general"]["stationDefaultFade"]);
- Application_Model_Preference::SetAllow3rdPartyApi($values["preferences_general"]["thirdPartyApi"]);
- Application_Model_Preference::SetTimezone($values["preferences_general"]["timezone"]);
- Application_Model_Preference::SetWeekStartDay($values["preferences_general"]["weekStartDay"]);
+ Application_Model_Preference::SetHeadTitle($values["stationName"], $this->view);
+ Application_Model_Preference::SetDefaultFade($values["stationDefaultFade"]);
+ Application_Model_Preference::SetAllow3rdPartyApi($values["thirdPartyApi"]);
+ Application_Model_Preference::SetTimezone($values["timezone"]);
+ Application_Model_Preference::SetWeekStartDay($values["weekStartDay"]);
if (!$isSaas) {
- Application_Model_Preference::SetEnableSystemEmail($values["preferences_email_server"]["enableSystemEmail"]);
- Application_Model_Preference::SetSystemEmail($values["preferences_email_server"]["systemEmail"]);
- Application_Model_Preference::SetMailServerConfigured($values["preferences_email_server"]["configureMailServer"]);
- Application_Model_Preference::SetMailServer($values["preferences_email_server"]["mailServer"]);
- Application_Model_Preference::SetMailServerEmailAddress($values["preferences_email_server"]["email"]);
- Application_Model_Preference::SetMailServerPassword($values["preferences_email_server"]["ms_password"]);
- Application_Model_Preference::SetMailServerPort($values["preferences_email_server"]["port"]);
- Application_Model_Preference::SetMailServerRequiresAuth($values["preferences_email_server"]["msRequiresAuth"]);
+ Application_Model_Preference::SetEnableSystemEmail($values["enableSystemEmail"]);
+ Application_Model_Preference::SetSystemEmail($values["systemEmail"]);
+ Application_Model_Preference::SetMailServerConfigured($values["configureMailServer"]);
+ Application_Model_Preference::SetMailServer($values["mailServer"]);
+ Application_Model_Preference::SetMailServerEmailAddress($values["email"]);
+ Application_Model_Preference::SetMailServerPassword($values["ms_password"]);
+ Application_Model_Preference::SetMailServerPort($values["port"]);
+ Application_Model_Preference::SetMailServerRequiresAuth($values["msRequiresAuth"]);
}
- Application_Model_Preference::SetAutoUploadRecordedShowToSoundcloud($values["preferences_soundcloud"]["UseSoundCloud"]);
- Application_Model_Preference::SetUploadToSoundcloudOption($values["preferences_soundcloud"]["UploadToSoundcloudOption"]);
- Application_Model_Preference::SetSoundCloudDownloadbleOption($values["preferences_soundcloud"]["SoundCloudDownloadbleOption"]);
- Application_Model_Preference::SetSoundCloudUser($values["preferences_soundcloud"]["SoundCloudUser"]);
- Application_Model_Preference::SetSoundCloudPassword($values["preferences_soundcloud"]["SoundCloudPassword"]);
- 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::SetAutoUploadRecordedShowToSoundcloud($values["UseSoundCloud"]);
+ Application_Model_Preference::SetUploadToSoundcloudOption($values["UploadToSoundcloudOption"]);
+ Application_Model_Preference::SetSoundCloudDownloadbleOption($values["SoundCloudDownloadbleOption"]);
+ Application_Model_Preference::SetSoundCloudUser($values["SoundCloudUser"]);
+ Application_Model_Preference::SetSoundCloudPassword($values["SoundCloudPassword"]);
+ Application_Model_Preference::SetSoundCloudTags($values["SoundCloudTags"]);
+ Application_Model_Preference::SetSoundCloudGenre($values["SoundCloudGenre"]);
+ Application_Model_Preference::SetSoundCloudTrackType($values["SoundCloudTrackType"]);
+ Application_Model_Preference::SetSoundCloudLicense($values["SoundCloudLicense"]);
$this->view->statusMsg = "
Preferences updated.
";
+ $this->view->form = $form;
+ die(json_encode(array("valid"=>"true", "html"=>$this->view->render('preference/index.phtml'))));
+ } else {
+ $this->view->form = $form;
+ die(json_encode(array("valid"=>"false", "html"=>$this->view->render('preference/index.phtml'))));
}
}
$this->view->form = $form;
@@ -77,7 +87,6 @@ class PreferenceController extends Zend_Controller_Action
$request = $this->getRequest();
$baseUrl = Application_Common_OsPath::getBaseDir();
- Logging::info($baseUrl);
$this->view->headScript()->appendFile($baseUrl.'/js/airtime/preferences/support-setting.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
$this->view->statusMsg = "";
@@ -207,10 +216,37 @@ class PreferenceController extends Zend_Controller_Action
$form->addSubForm($subform, "s".$i."_subform");
}
if ($request->isPost()) {
- $values = $request->getPost();
+ $params = $request->getPost();
+ /* Parse through post data and put in format
+ * $form->isValid() is expecting it in
+ */
+ $postData = explode('&', $params['data']);
+ $s1_data = array();
+ $s2_data = array();
+ $s3_data = array();
+ foreach($postData as $k=>$v) {
+ $v = explode('=', urldecode($v));
+ if (strpos($v[0], "s1_data") !== false) {
+ /* In this case $v[0] may be 's1_data[enable]' , for example.
+ * We only want the 'enable' part
+ */
+ preg_match('/\[(.*)\]/', $v[0], $matches);
+ $s1_data[$matches[1]] = $v[1];
+ } elseif (strpos($v[0], "s2_data") !== false) {
+ preg_match('/\[(.*)\]/', $v[0], $matches);
+ $s2_data[$matches[1]] = $v[1];
+ } elseif (strpos($v[0], "s3_data") !== false) {
+ preg_match('/\[(.*)\]/', $v[0], $matches);
+ $s3_data[$matches[1]] = $v[1];
+ } else {
+ $values[$v[0]] = $v[1];
+ }
+ }
+ $values["s1_data"] = $s1_data;
+ $values["s2_data"] = $s2_data;
+ $values["s3_data"] = $s3_data;
$error = false;
-
if ($form->isValid($values)) {
if (!$isSaas) {
$values['output_sound_device'] = $form->getValue('output_sound_device');
@@ -271,12 +307,23 @@ class PreferenceController extends Zend_Controller_Action
}
Application_Model_RabbitMq::SendMessageToPypo("update_stream_setting", $data);
+
+ $live_stream_subform->updateVariables();
+ $this->view->enable_stream_conf = Application_Model_Preference::GetEnableStreamConf();
+ $this->view->form = $form;
+ $this->view->num_stream = $num_of_stream;
$this->view->statusMsg = "Stream Setting Updated.
";
+ die(json_encode(array("valid"=>"true", "html"=>$this->view->render('preference/stream-setting.phtml'))));
+ } else {
+ $live_stream_subform->updateVariables();
+ $this->view->enable_stream_conf = Application_Model_Preference::GetEnableStreamConf();
+ $this->view->form = $form;
+ $this->view->num_stream = $num_of_stream;
+ die(json_encode(array("valid"=>"false", "html"=>$this->view->render('preference/stream-setting.phtml'))));
}
}
$live_stream_subform->updateVariables();
- $this->view->confirm_pypo_restart_text = "If you change the username or password values for an enabled stream the playout engine will be rebooted and your listeners will hear silence for 5-10 seconds. Changing the following fields will NOT cause a reboot: Stream Label (Global Settings), and Switch Transition Fade(s), Master Username, and Master Password (Input Stream Settings). If Airtime is recording, and if the change causes a playout engine restart, the recording will be interrupted.";
$this->view->num_stream = $num_of_stream;
$this->view->enable_stream_conf = Application_Model_Preference::GetEnableStreamConf();
diff --git a/airtime_mvc/application/controllers/UserController.php b/airtime_mvc/application/controllers/UserController.php
index 4447f0acc..28a3361ea 100644
--- a/airtime_mvc/application/controllers/UserController.php
+++ b/airtime_mvc/application/controllers/UserController.php
@@ -38,39 +38,53 @@ class UserController extends Zend_Controller_Action
$this->view->successMessage = "";
if ($request->isPost()) {
- if ($form->isValid($request->getPost())) {
+ $params = $request->getPost();
+ $postData = explode('&', $params['data']);
+ foreach($postData as $k=>$v) {
+ $v = explode('=', $v);
+ $formData[$v[0]] = urldecode($v[1]);
+ }
+
+ if ($form->isValid($formData)) {
- $formdata = $form->getValues();
if (isset($CC_CONFIG['demo']) && $CC_CONFIG['demo'] == 1
- && $formdata['login'] == 'admin'
- && $formdata['user_id'] != 0) {
+ && $formData['login'] == 'admin'
+ && $formData['user_id'] != 0) {
+ $this->view->form = $form;
$this->view->successMessage = "Specific action is not allowed in demo version!
";
- } elseif ($form->validateLogin($formdata)) {
- $user = new Application_Model_User($formdata['user_id']);
- $user->setFirstName($formdata['first_name']);
- $user->setLastName($formdata['last_name']);
- $user->setLogin($formdata['login']);
+ die(json_encode(array("valid"=>"false", "html"=>$this->view->render('user/add-user.phtml'))));
+ } elseif ($form->validateLogin($formData)) {
+ $user = new Application_Model_User($formData['user_id']);
+ $user->setFirstName($formData['first_name']);
+ $user->setLastName($formData['last_name']);
+ $user->setLogin($formData['login']);
// We don't allow 6 x's as a password.
// The reason is because we that as a password placeholder
// on the client side.
- if ($formdata['password'] != "xxxxxx") {
- $user->setPassword($formdata['password']);
+ if ($formData['password'] != "xxxxxx") {
+ $user->setPassword($formData['password']);
}
- $user->setType($formdata['type']);
- $user->setEmail($formdata['email']);
- $user->setCellPhone($formdata['cell_phone']);
- $user->setSkype($formdata['skype']);
- $user->setJabber($formdata['jabber']);
+ $user->setType($formData['type']);
+ $user->setEmail($formData['email']);
+ $user->setCellPhone($formData['cell_phone']);
+ $user->setSkype($formData['skype']);
+ $user->setJabber($formData['jabber']);
$user->save();
$form->reset();
+ $this->view->form = $form;
- if (strlen($formdata['user_id']) == 0) {
+ if (strlen($formData['user_id']) == 0) {
$this->view->successMessage = "User added successfully!
";
} else {
$this->view->successMessage = "User updated successfully!
";
}
+
+ die(json_encode(array("valid"=>"true", "html"=>$this->view->render('user/add-user.phtml'))));
}
+ } else {
+ $this->view->form = $form;
+ die(json_encode(array("valid"=>"false", "html"=>$this->view->render('user/add-user.phtml'))));
}
}
diff --git a/airtime_mvc/application/forms/AddUser.php b/airtime_mvc/application/forms/AddUser.php
index 059dbe8af..080c41bff 100644
--- a/airtime_mvc/application/forms/AddUser.php
+++ b/airtime_mvc/application/forms/AddUser.php
@@ -11,6 +11,8 @@ class Application_Form_AddUser extends Zend_Form
'validate');
* */
+ $this->setAttrib('id', 'user_form');
+
$hidden = new Zend_Form_Element_Hidden('user_id');
$hidden->setDecorators(array('ViewHelper'));
$this->addElement($hidden);
@@ -85,11 +87,11 @@ class Application_Form_AddUser extends Zend_Form
$select->setRequired(true);
$this->addElement($select);
- $submit = new Zend_Form_Element_Submit('submit');
- $submit->setAttrib('class', 'ui-button ui-state-default right-floated');
- $submit->setIgnore(true);
- $submit->setLabel('Save');
- $this->addElement($submit);
+ $saveBtn = new Zend_Form_Element_Button('save_user');
+ $saveBtn->setAttrib('class', 'btn btn-small right-floated');
+ $saveBtn->setIgnore(true);
+ $saveBtn->setLabel('Save');
+ $this->addElement($saveBtn);
}
public function validateLogin($data)
diff --git a/airtime_mvc/application/forms/Preferences.php b/airtime_mvc/application/forms/Preferences.php
index ebce7f10e..d0b825d3f 100644
--- a/airtime_mvc/application/forms/Preferences.php
+++ b/airtime_mvc/application/forms/Preferences.php
@@ -8,7 +8,6 @@ class Application_Form_Preferences extends Zend_Form
{
$baseUrl = Application_Common_OsPath::getBaseDir();
- $this->setAction($baseUrl . '/Preference');
$this->setMethod('post');
$isSaas = Application_Model_Preference::GetPlanLevel() == 'disabled'?false:true;
@@ -29,13 +28,11 @@ class Application_Form_Preferences extends Zend_Form
$soundcloud_pref = new Application_Form_SoundcloudPreferences();
$this->addSubForm($soundcloud_pref, 'preferences_soundcloud');
- $this->addElement('submit', 'submit', array(
- 'class' => 'ui-button ui-state-default right-floated',
- 'ignore' => true,
- 'label' => 'Save',
- 'decorators' => array(
- 'ViewHelper'
- )
- ));
+ $saveBtn = new Zend_Form_Element_Button('pref_save');
+ $saveBtn->setAttrib('class', 'btn btn-small right-floated');
+ $saveBtn->setIgnore(true);
+ $saveBtn->setLabel('Save');
+ $this->addElement($saveBtn);
+
}
}
diff --git a/airtime_mvc/application/views/scripts/form/preferences.phtml b/airtime_mvc/application/views/scripts/form/preferences.phtml
index 1e1589117..cc930e773 100644
--- a/airtime_mvc/application/views/scripts/form/preferences.phtml
+++ b/airtime_mvc/application/views/scripts/form/preferences.phtml
@@ -1,4 +1,4 @@
-
diff --git a/airtime_mvc/application/views/scripts/preference/index.phtml b/airtime_mvc/application/views/scripts/preference/index.phtml
index faed63a15..5dfc83166 100644
--- a/airtime_mvc/application/views/scripts/preference/index.phtml
+++ b/airtime_mvc/application/views/scripts/preference/index.phtml
@@ -1,11 +1,9 @@
diff --git a/airtime_mvc/public/js/airtime/common/common.js b/airtime_mvc/public/js/airtime/common/common.js
index 8d15efa7a..77f05b57e 100644
--- a/airtime_mvc/public/js/airtime/common/common.js
+++ b/airtime_mvc/public/js/airtime/common/common.js
@@ -109,3 +109,9 @@ function openPreviewWindow(url) {
function pad(number, length) {
return sprintf("%'0"+length+"d", number);
}
+
+function removeSuccessMsg() {
+ var $status = $('.success');
+
+ $status.fadeOut("slow", function(){$status.empty()});
+}
diff --git a/airtime_mvc/public/js/airtime/playlist/smart_blockbuilder.js b/airtime_mvc/public/js/airtime/playlist/smart_blockbuilder.js
index 0dc3bc0a9..f05b55873 100644
--- a/airtime_mvc/public/js/airtime/playlist/smart_blockbuilder.js
+++ b/airtime_mvc/public/js/airtime/playlist/smart_blockbuilder.js
@@ -483,12 +483,6 @@ function callback(data, type) {
setTimeout(removeSuccessMsg, 5000);
}
-function removeSuccessMsg() {
- var $status = $('.success');
-
- $status.fadeOut("slow", function(){$status.empty()});
-}
-
function appendAddButton() {
var add_button = "" +
"";
diff --git a/airtime_mvc/public/js/airtime/preferences/preferences.js b/airtime_mvc/public/js/airtime/preferences/preferences.js
index 17734240e..25d9e30e1 100644
--- a/airtime_mvc/public/js/airtime/preferences/preferences.js
+++ b/airtime_mvc/public/js/airtime/preferences/preferences.js
@@ -88,6 +88,17 @@ $(document).ready(function() {
$(this).toggleClass("closed");
return false;
}).next().hide();
+
+ $('#pref_save').live('click', function() {
+ var data = $('#pref_form').serialize();
+ var url = baseUrl+'/Preference/index';
+
+ $.post(url, {format: "json", data: data}, function(data){
+ var json = $.parseJSON(data);
+ $('#content').empty().append(json.html);
+ setTimeout(removeSuccessMsg, 5000);
+ });
+ });
showErrorSections();
diff --git a/airtime_mvc/public/js/airtime/preferences/streamsetting.js b/airtime_mvc/public/js/airtime/preferences/streamsetting.js
index d6116da5c..18cd8ddd8 100644
--- a/airtime_mvc/public/js/airtime/preferences/streamsetting.js
+++ b/airtime_mvc/public/js/airtime/preferences/streamsetting.js
@@ -352,4 +352,22 @@ $(document).ready(function() {
at: "right center"
},
})
+
+ $('#stream_save').live('click', function(){
+ var confirm_pypo_restart_text = "If you change the username or password values for an enabled stream the "
+ + "playout engine will be rebooted and your listeners will hear silence for"
+ + "5-10 seconds. Changing the following fields will NOT cause a reboot: "
+ + "Stream Label (Global Settings), and Switch Transition Fade(s), Master "
+ + "Username, and Master Password (Input Stream Settings). If Airtime is recording"
+ + ", and if the change causes a playout engine restart, the recording will be interrupted.";
+ if (confirm(confirm_pypo_restart_text)) {
+ var data = $('#stream_form').serialize();
+ var url = baseUrl+'/Preference/stream-setting';
+
+ $.post(url, {format:"json", data: data}, function(data){
+ var json = $.parseJSON(data);
+ $('#content').empty().append(json.html);
+ });
+ }
+ });
});
diff --git a/airtime_mvc/public/js/airtime/user/user.js b/airtime_mvc/public/js/airtime/user/user.js
index d816b3094..637666719 100644
--- a/airtime_mvc/public/js/airtime/user/user.js
+++ b/airtime_mvc/public/js/airtime/user/user.js
@@ -60,7 +60,7 @@ function rowCallback( nRow, aData, iDisplayIndex ){
return nRow;
}
-$(document).ready(function() {
+function populateUserTable() {
$('#users_datatable').dataTable( {
"bProcessing": true,
"bServerSide": true,
@@ -92,11 +92,32 @@ $(document).ready(function() {
"sDom": '<"H"lf<"dt-process-rel"r>>t<"F"ip>',
});
+}
+
+$(document).ready(function() {
+ populateUserTable();
//$('#user_details').hide();
var newUser = {login:"", first_name:"", last_name:"", type:"G", id:""};
- $('#add_user_button').click(function(){populateForm(newUser)});
+ $('#add_user_button').live('click', function(){populateForm(newUser)});
+
+ $('#save_user').live('click', function(){
+ var data = $('#user_form').serialize();
+ var url = baseUrl+'/User/add-user';
+
+ $.post(url, {format: "json", data: data}, function(data){
+ var json = $.parseJSON(data);
+ if (json.valid === "true") {
+ $('#content').empty().append(json.html);
+ populateUserTable();
+ } else {
+ //if form is invalid we only need to redraw the form
+ $('#user_form').empty().append($(json.html).find('#user_form').children());
+ }
+ setTimeout(removeSuccessMsg, 5000);
+ });
+ });
});