From c12ad4ea4ffaa880298a302aab38fd19ed5a00ba Mon Sep 17 00:00:00 2001 From: Robb Ebright Date: Fri, 31 Mar 2017 00:00:19 -0400 Subject: [PATCH] added UI to toggle autoplaylist repeat option --- .../airtime_3.0.0-alpha.2/downgrade.sql | 1 + .../upgrade_sql/airtime_3.0.0-alpha.2/upgrade.sql | 1 + .../application/forms/AddShowAutoPlaylist.php | 7 +++++++ airtime_mvc/application/models/Show.php | 7 +++++++ airtime_mvc/application/models/ShowInstance.php | 10 +++++++++- airtime_mvc/application/models/airtime/CcShow.php | 1 + airtime_mvc/application/services/ShowFormService.php | 3 ++- airtime_mvc/application/services/ShowService.php | 1 + airtime_mvc/application/upgrade/Upgrades.php | 12 ++++++++++++ .../views/scripts/form/add-show-autoplaylist.phtml | 12 ++++++++++++ airtime_mvc/build/sql/schema.sql | 1 + airtime_mvc/public/js/airtime/schedule/add-show.js | 3 +++ .../tests/application/testdata/ShowServiceData.php | 7 +++++++ 13 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 airtime_mvc/application/controllers/downgrade_sql/airtime_3.0.0-alpha.2/downgrade.sql create mode 100644 airtime_mvc/application/controllers/upgrade_sql/airtime_3.0.0-alpha.2/upgrade.sql diff --git a/airtime_mvc/application/controllers/downgrade_sql/airtime_3.0.0-alpha.2/downgrade.sql b/airtime_mvc/application/controllers/downgrade_sql/airtime_3.0.0-alpha.2/downgrade.sql new file mode 100644 index 000000000..c018cd9d8 --- /dev/null +++ b/airtime_mvc/application/controllers/downgrade_sql/airtime_3.0.0-alpha.2/downgrade.sql @@ -0,0 +1 @@ +ALTER TABLE cc_show DROP COLUMN IF EXISTS autoplaylist_repeat; diff --git a/airtime_mvc/application/controllers/upgrade_sql/airtime_3.0.0-alpha.2/upgrade.sql b/airtime_mvc/application/controllers/upgrade_sql/airtime_3.0.0-alpha.2/upgrade.sql new file mode 100644 index 000000000..1a705ffc9 --- /dev/null +++ b/airtime_mvc/application/controllers/upgrade_sql/airtime_3.0.0-alpha.2/upgrade.sql @@ -0,0 +1 @@ +ALTER TABLE cc_show ADD COLUMN autoplaylist_repeat boolean default 'f' NOT NULL; diff --git a/airtime_mvc/application/forms/AddShowAutoPlaylist.php b/airtime_mvc/application/forms/AddShowAutoPlaylist.php index a77cb05b4..bb4cead12 100644 --- a/airtime_mvc/application/forms/AddShowAutoPlaylist.php +++ b/airtime_mvc/application/forms/AddShowAutoPlaylist.php @@ -27,6 +27,13 @@ class Application_Form_AddShowAutoPlaylist extends Zend_Form_SubForm $autoPlaylistSelect->setValue(null); $autoPlaylistSelect->setDecorators(array('ViewHelper')); $this->addElement($autoPlaylistSelect); + // Add autoplaylist checkbox element + $this->addElement('checkbox', 'add_show_autoplaylist_repeat', array( + 'label' => _('Repeat AutoPlaylist Until Show is Full ?'), + 'required' => false, + 'class' => 'input_text', + 'decorators' => array('ViewHelper') + )); } public function disable() diff --git a/airtime_mvc/application/models/Show.php b/airtime_mvc/application/models/Show.php index 9fbe4f759..8fdfeec0a 100644 --- a/airtime_mvc/application/models/Show.php +++ b/airtime_mvc/application/models/Show.php @@ -135,6 +135,13 @@ class Application_Model_Show $hasAutoPlaylist = $show->getDbHasAutoPlaylist(); return $hasAutoPlaylist; } + + public function getAutoPlaylistRepeat() { + $show = CcShowQuery::create()->findPK($this->_showId); + $AutoPlaylistRepeat = $show->getDbAutoPlaylistRepeat(); + return $AutoPlaylistRepeat; + } + public function setHasAutoPlaylist($value) { diff --git a/airtime_mvc/application/models/ShowInstance.php b/airtime_mvc/application/models/ShowInstance.php index a87d53951..f5db2f886 100644 --- a/airtime_mvc/application/models/ShowInstance.php +++ b/airtime_mvc/application/models/ShowInstance.php @@ -96,7 +96,15 @@ SQL; return $show->getDbAutoPlaylistId(); } - + + public function getAutoPlaylistRepeat() + { + $show = CcShowQuery::create()->findPK($this->getShowId()); + return $show->getDbAutoPlaylistRepeat(); + + } + + /** * Return the start time of the Show (UTC time) * @return string in format DEFAULT_TIMESTAMP_FORMAT (PHP time notation) diff --git a/airtime_mvc/application/models/airtime/CcShow.php b/airtime_mvc/application/models/airtime/CcShow.php index a9e36ca19..8ce596c34 100644 --- a/airtime_mvc/application/models/airtime/CcShow.php +++ b/airtime_mvc/application/models/airtime/CcShow.php @@ -321,6 +321,7 @@ class CcShow extends BaseCcShow { $info['linked'] = $this->getDbLinked(); $info['has_autoplaylist'] = $this->getDbHasAutoPlaylist(); $info['autoplaylist_id'] = $this->getDbAutoPlaylistId(); + $info['autoplaylist_repeat'] = $this->getDbAutoPlaylistRepeat(); return $info; } diff --git a/airtime_mvc/application/services/ShowFormService.php b/airtime_mvc/application/services/ShowFormService.php index 4489f70f0..765058825 100644 --- a/airtime_mvc/application/services/ShowFormService.php +++ b/airtime_mvc/application/services/ShowFormService.php @@ -153,7 +153,8 @@ class Application_Service_ShowFormService $form->populate( array( 'add_show_has_autoplaylist' => $this->ccShow->getDbHasAutoPlaylist() ? 1 : 0, - 'add_show_autoplaylist_id' => $this->ccShow->getDbAutoPlaylistId() + 'add_show_autoplaylist_id' => $this->ccShow->getDbAutoPlaylistId(), + 'add_show_autoplaylist_repeat' => $this->ccShow->getDbAutoPlaylistRepeat() )); } diff --git a/airtime_mvc/application/services/ShowService.php b/airtime_mvc/application/services/ShowService.php index b4e8c949b..61cfddc76 100644 --- a/airtime_mvc/application/services/ShowService.php +++ b/airtime_mvc/application/services/ShowService.php @@ -1541,6 +1541,7 @@ SQL; $ccShow->setDbLiveStreamUser($showData['custom_username']); $ccShow->setDbLiveStreamPass($showData['custom_password']); $ccShow->setDbHasAutoPlaylist($showData['add_show_has_autoplaylist'] == 1); + $ccShow->setDbAutoPlaylistRepeat($showData['add_show_autoplaylist_repeat'] == 1); // added to prevent errors with insert due to a lack of data if ($showData['add_show_autoplaylist_id'] != '') { $ccShow->setDbAutoPlaylistId($showData['add_show_autoplaylist_id']); diff --git a/airtime_mvc/application/upgrade/Upgrades.php b/airtime_mvc/application/upgrade/Upgrades.php index f5d70ef96..08e97bd73 100644 --- a/airtime_mvc/application/upgrade/Upgrades.php +++ b/airtime_mvc/application/upgrade/Upgrades.php @@ -519,3 +519,15 @@ class AirtimeUpgrader300alpha1 extends AirtimeUpgrader return '3.0.0-alpha.1'; } } +class AirtimeUpgrader300alpha2 extends AirtimeUpgrader +{ + protected function getSupportedSchemaVersions() { + return array( + '3.0.0-alpha' + ); + } + + public function getNewVersion() { + return '3.0.0-alpha.2'; + } +} diff --git a/airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml b/airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml index 9410a4b7e..5d5eda5f6 100644 --- a/airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml +++ b/airtime_mvc/application/views/scripts/form/add-show-autoplaylist.phtml @@ -18,5 +18,17 @@
element->getElement('add_show_autoplaylist_id') ?> +
+
+ +
+
+ element->getElement('add_show_autoplaylist_repeat') ?> +
+ + + diff --git a/airtime_mvc/build/sql/schema.sql b/airtime_mvc/build/sql/schema.sql index f98e6a012..0263cd4fa 100644 --- a/airtime_mvc/build/sql/schema.sql +++ b/airtime_mvc/build/sql/schema.sql @@ -162,6 +162,7 @@ CREATE TABLE "cc_show" "image_path" VARCHAR(255) DEFAULT '', "has_autoplaylist" BOOLEAN DEFAULT 'f' NOT NULL, "autoplaylist_id" INTEGER, + "autoplaylist_repeat" BOOLEAN DEFAULT 'f' NOT NULL, PRIMARY KEY ("id") ); diff --git a/airtime_mvc/public/js/airtime/schedule/add-show.js b/airtime_mvc/public/js/airtime/schedule/add-show.js index aba2e9c3a..921afa218 100644 --- a/airtime_mvc/public/js/airtime/schedule/add-show.js +++ b/airtime_mvc/public/js/airtime/schedule/add-show.js @@ -269,6 +269,7 @@ function setAddShowEvents(form) { if(!form.find("#add_show_has_autoplaylist").attr('checked')) { form.find("#add_show_playlist_dropdown").hide(); + form.find("#add_show_autoplaylist_repeat").hide(); } else { $("#add_show_playlist_dropdown").show(); @@ -300,12 +301,14 @@ function setAddShowEvents(form) { form.find("#add_show_has_autoplaylist").click(function(){ $(this).blur(); form.find("#add_show_playlist_dropdown").toggle(); + form.find("#add_show_autoplaylist_repeat").toggle(); var checkBoxSelected = false; //must switch rebroadcast displays if(form.find("#add_show_has_autoplaylist").attr('checked')) { form.find("#add_show_playlist_dropdown").show(); + form.find("#add_show_autoplaylist_repeat").show(); } else { form.find("#add_show_playlist_downdown").hide(); diff --git a/airtime_mvc/tests/application/testdata/ShowServiceData.php b/airtime_mvc/tests/application/testdata/ShowServiceData.php index cb774d775..ca3c1019d 100644 --- a/airtime_mvc/tests/application/testdata/ShowServiceData.php +++ b/airtime_mvc/tests/application/testdata/ShowServiceData.php @@ -18,6 +18,7 @@ Class ShowServiceData "add_show_duration" => "01h 00m", "add_show_timezone" => "UTC", "add_show_has_autoplaylist" => false, + "add_show_autoplaylist_repeat" => false, "add_show_autoplaylist_id" => null, "add_show_repeats" => 0, "add_show_linked" => 0, @@ -95,6 +96,7 @@ Class ShowServiceData "add_show_duration" => "01h 00m", "add_show_timezone" => "UTC", "add_show_has_autoplaylist" => false, + "add_show_autoplaylist_repeat" => false, "add_show_autoplaylist_id" => null, "add_show_repeats" => 1, "add_show_linked" => 0, @@ -172,6 +174,7 @@ Class ShowServiceData "add_show_duration" => "01h 00m", "add_show_timezone" => "UTC", "add_show_has_autoplaylist" => false, + "add_show_autoplaylist_repeat" => false, "add_show_autoplaylist_id" => null, "add_show_repeats" => 1, "add_show_linked" => 0, @@ -260,6 +263,7 @@ Class ShowServiceData "add_show_duration" => "01h 00m", "add_show_timezone" => "UTC", "add_show_has_autoplaylist" => false, + "add_show_autoplaylist_repeat" => false, "add_show_autoplaylist_id" => null, "add_show_repeats" => 0, "add_show_linked" => 0, @@ -288,6 +292,7 @@ Class ShowServiceData "add_show_duration" => "01h 00m", "add_show_timezone" => "UTC", "add_show_has_autoplaylist" => false, + "add_show_autoplaylist_repeat" => false, "add_show_autoplaylist_id" => null, "add_show_repeats" => 1, "add_show_linked" => 0, @@ -366,6 +371,7 @@ Class ShowServiceData "add_show_duration" => "01h 00m", "add_show_timezone" => "UTC", "add_show_has_autoplaylist" => false, + "add_show_autoplaylist_repeat" => false, "add_show_autoplaylist_id" => null, "add_show_repeats" => 0, "add_show_linked" => 0, @@ -443,6 +449,7 @@ Class ShowServiceData "add_show_duration" => "01h 00m", "add_show_timezone" => "UTC", "add_show_has_autoplaylist" => false, + "add_show_autoplaylist_repeat" => false, "add_show_autoplaylist_id" => null, "add_show_repeats" => 1, "add_show_linked" => 0,