From 19adb062cf386b0910d0e92cc3f8fedb59671523 Mon Sep 17 00:00:00 2001 From: Albert Santoni Date: Fri, 19 Jun 2015 14:22:58 -0400 Subject: [PATCH 1/7] SAAS-879 and add FAQ to Help menu * SAAS-879: When trying to save changes in the user setting pages changes do not save and goes to a "an error hass occured page" --- airtime_mvc/application/configs/navigation.php | 5 +++++ .../application/controllers/UserController.php | 9 +++++++-- airtime_mvc/application/forms/EditUser.php | 11 +++++++---- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/airtime_mvc/application/configs/navigation.php b/airtime_mvc/application/configs/navigation.php index 6f4caf71e..184b19a3f 100644 --- a/airtime_mvc/application/configs/navigation.php +++ b/airtime_mvc/application/configs/navigation.php @@ -133,6 +133,11 @@ $pages = array( 'action' => 'help', 'resource' => 'dashboard' ), + array( + 'label' => _('FAQ'), + 'uri' => "https://sourcefabricberlin.zendesk.com/hc/en-us/sections/200994309-Airtime-FAQ", + 'target' => "_blank" + ), array( 'label' => _('User Manual'), 'uri' => "http://sourcefabric.booktype.pro/airtime-pro-for-broadcasters", diff --git a/airtime_mvc/application/controllers/UserController.php b/airtime_mvc/application/controllers/UserController.php index 4c85dc8b0..264444562 100644 --- a/airtime_mvc/application/controllers/UserController.php +++ b/airtime_mvc/application/controllers/UserController.php @@ -138,8 +138,13 @@ class UserController extends Zend_Controller_Action $formData['cu_last_name'] = "admin"; //ditto, avoid non-null DB constraint } } - $user->setFirstName($formData['cu_first_name']); - $user->setLastName($formData['cu_last_name']); + if (isset($formData['cu_first_name'])) { + $user->setFirstName($formData['cu_first_name']); + } + + if (isset($formData['cu_last_name'])) { + $user->setLastName($formData['cu_last_name']); + } // We don't allow 6 x's as a password. // The reason is because we use that as a password placeholder // on the client side. diff --git a/airtime_mvc/application/forms/EditUser.php b/airtime_mvc/application/forms/EditUser.php index a4d5dc2a6..9b8311c7e 100644 --- a/airtime_mvc/application/forms/EditUser.php +++ b/airtime_mvc/application/forms/EditUser.php @@ -157,10 +157,13 @@ class Application_Form_EditUser extends Zend_Form // We need to add the password identical validator here in case // Zend version is less than 1.10.5 - public function isValid($data) { - $passwordIdenticalValidator = Application_Form_Helper_ValidationTypes::overridePasswordIdenticalValidator( - $data['cu_password']); - $this->getElement('cu_passwordVerify')->addValidator($passwordIdenticalValidator); + public function isValid($data) + { + if (isset($data['cu_password'])) { + $passwordIdenticalValidator = Application_Form_Helper_ValidationTypes::overridePasswordIdenticalValidator( + $data['cu_password']); + $this->getElement('cu_passwordVerify')->addValidator($passwordIdenticalValidator); + } return parent::isValid($data); } } From 1bb6ee63dc7b8d17b02883c028af1bab147e4062 Mon Sep 17 00:00:00 2001 From: Albert Santoni Date: Fri, 19 Jun 2015 15:30:51 -0400 Subject: [PATCH 2/7] SAAS-867: Embedded player spins in endless loop if connection is refused --- .../views/scripts/embed/player.phtml | 70 ++++++++++++------- 1 file changed, 45 insertions(+), 25 deletions(-) diff --git a/airtime_mvc/application/views/scripts/embed/player.phtml b/airtime_mvc/application/views/scripts/embed/player.phtml index 78baec3c8..0afe55bf9 100644 --- a/airtime_mvc/application/views/scripts/embed/player.phtml +++ b/airtime_mvc/application/views/scripts/embed/player.phtml @@ -8,6 +8,7 @@ - - - - - -
-
-
- - -CODE; - - return $code; - } - private function getWeekStartDays() { $days = array( diff --git a/airtime_mvc/application/layouts/scripts/layout.phtml b/airtime_mvc/application/layouts/scripts/layout.phtml index c3f5f5e2d..780a5f69e 100644 --- a/airtime_mvc/application/layouts/scripts/layout.phtml +++ b/airtime_mvc/application/layouts/scripts/layout.phtml @@ -2,7 +2,7 @@ - headTitle() ?> + headTitle() ?> headLink() ?> headScript() ?> google_analytics)?$this->google_analytics:"" ?> diff --git a/airtime_mvc/application/views/scripts/form/preferences_general.phtml b/airtime_mvc/application/views/scripts/form/preferences_general.phtml index de1f1c73f..614416765 100644 --- a/airtime_mvc/application/views/scripts/form/preferences_general.phtml +++ b/airtime_mvc/application/views/scripts/form/preferences_general.phtml @@ -37,7 +37,5 @@ element->getElement('thirdPartyApi')->render() ?> - element->getElement('widgetCode')->render() ?> - diff --git a/airtime_mvc/public/js/airtime/audiopreview/preview_jplayer.js b/airtime_mvc/public/js/airtime/audiopreview/preview_jplayer.js index 01badc43d..e01c2a2b3 100644 --- a/airtime_mvc/public/js/airtime/audiopreview/preview_jplayer.js +++ b/airtime_mvc/public/js/airtime/audiopreview/preview_jplayer.js @@ -198,7 +198,7 @@ function buildplaylist(p_url, p_playIndex) { width = 490; } - window.resizeTo(width, height); + window.resizeTo(width, height); }); } @@ -247,6 +247,4 @@ function playOne(uri, mime) { _playlist_jplayer.setPlaylist(playlist); _playlist_jplayer.play(0); } - - window.resizeTo(490, 167); } diff --git a/airtime_mvc/public/js/airtime/common/common.js b/airtime_mvc/public/js/airtime/common/common.js index 31f4668bf..33e1fe300 100644 --- a/airtime_mvc/public/js/airtime/common/common.js +++ b/airtime_mvc/public/js/airtime/common/common.js @@ -143,7 +143,8 @@ function open_show_preview(p_showID, p_showIndex) { } function openPreviewWindow(url) { - _preview_window = window.open(url, $.i18n._('Audio Player'), 'width=450,height=100,scrollbars=yes'); + // Hardcoding this here is kinda gross, but the alternatives aren't much better... + _preview_window = window.open(url, $.i18n._('Audio Player'), 'width=482,height=110,scrollbars=yes'); return false; } From 6497bc28c5f943869f076629c4317fbb2e4451df Mon Sep 17 00:00:00 2001 From: Duncan Sommerville Date: Thu, 25 Jun 2015 17:43:15 -0400 Subject: [PATCH 6/7] Show collapsible sections (other than 'dangerous settings') by default on preferences page --- .../views/scripts/form/preferences.phtml | 7 ++-- airtime_mvc/public/css/styles.css | 4 +- .../js/airtime/preferences/preferences.js | 39 +------------------ 3 files changed, 6 insertions(+), 44 deletions(-) diff --git a/airtime_mvc/application/views/scripts/form/preferences.phtml b/airtime_mvc/application/views/scripts/form/preferences.phtml index d200bf627..b5b96cb55 100644 --- a/airtime_mvc/application/views/scripts/form/preferences.phtml +++ b/airtime_mvc/application/views/scripts/form/preferences.phtml @@ -9,10 +9,11 @@ - + -

-
+ +

+ diff --git a/airtime_mvc/public/css/styles.css b/airtime_mvc/public/css/styles.css index 35a8ce343..dac82da55 100644 --- a/airtime_mvc/public/css/styles.css +++ b/airtime_mvc/public/css/styles.css @@ -1841,7 +1841,6 @@ span.errors.sp-errors{ } .collapsible-content { margin-top:-1px; - display:none; } .collapsible-header .arrow-icon, .collapsible-header-disabled .arrow-icon { display:block; @@ -1853,9 +1852,8 @@ span.errors.sp-errors{ top:8px; } -.collapsible-header.closed .arrow-icon, collapsible-header-disabled.close .arrow-icon { +.collapsible-header.closed .arrow-icon, .collapsible-header-disabled.close .arrow-icon { background-position: 0 -11px !important; - } #schedule-add-show .button-bar { height: 28px; diff --git a/airtime_mvc/public/js/airtime/preferences/preferences.js b/airtime_mvc/public/js/airtime/preferences/preferences.js index 252a64a99..aeb6e27e7 100644 --- a/airtime_mvc/public/js/airtime/preferences/preferences.js +++ b/airtime_mvc/public/js/airtime/preferences/preferences.js @@ -99,41 +99,6 @@ function setMsAuthenticationFieldsReadonly(ele) { } } -function setCollapsibleWidgetJsCode() { - var x = function() { - var val = $('input:radio[name=thirdPartyApi]:checked').val(); - if (val == "1") { - //show js textarea - $('#widgetCode-label').show("fast"); - $('#widgetCode-element').show("fast"); - } else { - if ($('#widgetCode-label').is(":visible")) { - //hide js textarea - $('#widgetCode-label').hide(); - $('#widgetCode-element').hide(); - } - } - } - x(); - $('#thirdPartyApi-element input').click(x); -} - -function setSoundCloudCheckBoxListener() { - var subCheckBox= $("#UseSoundCloud,#SoundCloudDownloadbleOption"); - var mainCheckBox= $("#UploadToSoundcloudOption"); - subCheckBox.change(function(e){ - if (subCheckBox.is(':checked')) { - mainCheckBox.attr("checked", true); - } - }); - - mainCheckBox.change(function(e){ - if (!mainCheckBox.is(':checked')) { - $("#UseSoundCloud,#SoundCloudDownloadbleOption").attr("checked", false); - } - }); -} - function removeLogo() { $.post(baseUrl+'Preference/remove-logo', function(json){}); location.reload(); @@ -153,7 +118,7 @@ $(document).ready(function() { $(this).next().toggle('fast'); $(this).toggleClass("closed"); return false; - }).next().hide(); + }); if ($("#tunein-settings").find(".errors").length > 0) { $(".collapsible-content#tunein-settings").show(); @@ -176,12 +141,10 @@ $(document).ready(function() { showErrorSections(); - setSoundCloudCheckBoxListener(); setMailServerInputReadonly(); setSystemFromEmailReadonly(); setConfigureMailServerListener(); setEnableSystemEmailsListener(); - setCollapsibleWidgetJsCode(); setTuneInSettingsReadonly(); setTuneInSettingsListener(); }); From c59f401eb1bc5fb09057ea4259455d92f0794d29 Mon Sep 17 00:00:00 2001 From: Duncan Sommerville Date: Thu, 25 Jun 2015 18:21:22 -0400 Subject: [PATCH 7/7] Fix shift selection in library and builder views --- .../public/js/airtime/library/library.js | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js index 4edf022ad..ebfd0aa0b 100644 --- a/airtime_mvc/public/js/airtime/library/library.js +++ b/airtime_mvc/public/js/airtime/library/library.js @@ -6,7 +6,9 @@ var AIRTIME = (function(AIRTIME) { $libTable, LIB_SELECTED_CLASS = "lib-selected", chosenItems = {}, - visibleChosenItems = {}; + visibleChosenItems = {}, + $previouslySelected; + // we need to know whether the criteria value is string or // numeric in order to provide a single textbox or range textboxes @@ -868,28 +870,35 @@ var AIRTIME = (function(AIRTIME) { }); $libTable.find("tbody").on("click", "input[type=checkbox]", function(ev) { - + var $cb = $(this), - $prev, $tr = $cb.parents("tr"), - $trs; - + // Get the ID of the selected row + $rowId = $tr.attr("id"); + if ($cb.is(":checked")) { - - if (ev.shiftKey) { - $prev = $libTable.find("tbody").find("tr."+LIB_SELECTED_CLASS).eq(-1); - $trs = $prev.nextUntil($tr); - - $trs.each(function(i, el){ - mod.selectItem($(el)); - }); + if (ev.shiftKey && $previouslySelected !== undefined) { + // If the selected row comes before the previously selected row, + // we want to select previous rows, otherwise we select next + if ($previouslySelected.prevAll("#"+$rowId).length !== 0) { + $previouslySelected.prevUntil($tr).each(function(i, el){ + mod.selectItem($(el)); + }); + } else { + $previouslySelected.nextUntil($tr).each(function(i, el){ + mod.selectItem($(el)); + }); + } } mod.selectItem($tr); + // Remember this row so we can properly multiselect + $previouslySelected = $tr; } else { - mod.deselectItem($tr); + mod.deselectItem($tr); } + }); checkImportStatus();