diff --git a/airtime_mvc/application/controllers/FeedsController.php b/airtime_mvc/application/controllers/FeedsController.php index 49d25ab36..5e33eb8c6 100644 --- a/airtime_mvc/application/controllers/FeedsController.php +++ b/airtime_mvc/application/controllers/FeedsController.php @@ -7,8 +7,9 @@ class FeedsController extends Zend_Controller_Action $this->view->layout()->disableLayout(); $this->_helper->viewRenderer->setNoRender(true); - if (Application_Model_Preference::getStationPodcastPrivacy() - && $this->getRequest()->getParam("sharing_token") != Application_Model_Preference::getStationPodcastDownloadKey()) { + if (!RestAuth::verifyAuth(true, true, $this) + && (Application_Model_Preference::getStationPodcastPrivacy() + && $this->getRequest()->getParam("sharing_token") != Application_Model_Preference::getStationPodcastDownloadKey())) { $this->getResponse() ->setHttpResponseCode(401); return; diff --git a/airtime_mvc/application/services/PodcastEpisodeService.php b/airtime_mvc/application/services/PodcastEpisodeService.php index 26714796b..b9622cfa9 100644 --- a/airtime_mvc/application/services/PodcastEpisodeService.php +++ b/airtime_mvc/application/services/PodcastEpisodeService.php @@ -239,10 +239,8 @@ class Application_Service_PodcastEpisodeService extends Application_Service_Thir $isStationPodcast = $podcastId === Application_Model_Preference::getStationPodcastId(); $episodes = PodcastEpisodesQuery::create() - ->joinWith('PodcastEpisodes.CcFiles') + ->joinWithCcFiles('files') ->filterByDbPodcastId($podcastId); - // TODO: how should we limit the number of episodes for imported podcasts (since they include feed episodes?) - // FIXME if ($isStationPodcast) { $episodes = $episodes->setLimit($limit); } @@ -259,7 +257,7 @@ class Application_Service_PodcastEpisodeService extends Application_Service_Thir foreach ($episodes as $episode) { /** @var PodcastEpisodes $episode */ $episodeArr = $episode->toArray(BasePeer::TYPE_FIELDNAME, true, [], true); - // $episodeArr["cc_files"] = CcFiles::getSanitizedFileById($episode->getDbFileId()); + Logging::info($episodeArr); array_push($episodesArray, $episodeArr); } return $episodesArray; diff --git a/airtime_mvc/application/views/scripts/library/publish-dialog.phtml b/airtime_mvc/application/views/scripts/library/publish-dialog.phtml index 5ae7a1054..6f9f5fabc 100644 --- a/airtime_mvc/application/views/scripts/library/publish-dialog.phtml +++ b/airtime_mvc/application/views/scripts/library/publish-dialog.phtml @@ -1,61 +1,62 @@ -
-

- "" -

-
-
-
- +
+
+

+ "" +

- - - -
- -
- -
-
-
- " - . _("Published tracks can be removed or updated below.") ?> -
-
-
- -
- - {{label}} - -
-
- " - . _("Check the boxes above and hit 'Publish' to publish this track to the marked sources.") ?> -
-
- -
- -
-
-
-
- +
+
- -
+
+
+ +
+
+ +
+ +
+
diff --git a/airtime_mvc/application/views/scripts/podcast/podcast.phtml b/airtime_mvc/application/views/scripts/podcast/podcast.phtml index fdbfdf0d4..0277ec0c7 100644 --- a/airtime_mvc/application/views/scripts/podcast/podcast.phtml +++ b/airtime_mvc/application/views/scripts/podcast/podcast.phtml @@ -7,24 +7,14 @@
diff --git a/airtime_mvc/application/views/scripts/podcast/station_podcast.phtml b/airtime_mvc/application/views/scripts/podcast/station_podcast.phtml index 2972e94e9..e9bc0dd5d 100644 --- a/airtime_mvc/application/views/scripts/podcast/station_podcast.phtml +++ b/airtime_mvc/application/views/scripts/podcast/station_podcast.phtml @@ -1,30 +1,77 @@
-

- "" -

+

+ "" +

+ + +
diff --git a/airtime_mvc/public/css/dashboard.css b/airtime_mvc/public/css/dashboard.css index 312bf94b7..55645379f 100644 --- a/airtime_mvc/public/css/dashboard.css +++ b/airtime_mvc/public/css/dashboard.css @@ -51,6 +51,7 @@ .content-pane { height: auto !important; width: 100% !important; + min-height: 500px; } .spl_sortable { max-height: 50%; @@ -303,10 +304,6 @@ thead th.ui-state-default:focus { float: right; } -#show_builder .fg-toolbar.ui-corner-tl.ui-corner-tr { - border-top: none; -} - .sb-content .dataTables_wrapper { margin: 0; } @@ -489,6 +486,11 @@ li.ui-state-default { top: 4px; left: 4px; overflow-x: hidden; /* Show the y-direction scrollbar (magic!) */ + color: #efefef; +} + +.editor_pane_wrapper a:visited, .angular_wrapper a:visited { + color: #cecece; } .tab-name { @@ -512,7 +514,7 @@ li.ui-state-default { .inner_editor_title h2 { margin: 10px 0 0 10px; - width: 85%; + width: 70%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; @@ -639,24 +641,30 @@ li.ui-state-default { padding-top: 4px; } -/* DataTables */ +/* Schedule tab DataTable */ -#show_builder .fg-toolbar > .btn-toolbar, -#show_builder .ColVis.TableTools { +#show_builder_table_wrapper .fg-toolbar.ui-corner-tl.ui-corner-tr { + border-top: none; +} + +#show_builder_table_wrapper .fg-toolbar > .btn-toolbar, +#show_builder_table_wrapper .ColVis.TableTools { position: absolute; top: 35px; } -#show_builder .fg-toolbar > .btn-toolbar { +#show_builder_table_wrapper .fg-toolbar > .btn-toolbar { left: 6px; padding: 0; } -#show_builder .ColVis.TableTools { +#show_builder_table_wrapper .ColVis.TableTools { right: 6px; margin: 0; } +/* DataTables */ + div.ColVis_collectionBackground { background-color: transparent; } @@ -679,6 +687,10 @@ div.ColVis_collectionBackground { color: #000; } +.ColVis { + margin-bottom: 0; +} + /* Hacky stuff here */ #show_builder .dataTables_scrolling { top: 66px; diff --git a/airtime_mvc/public/css/showbuilder.css b/airtime_mvc/public/css/showbuilder.css index 624475c9f..1bf82ee92 100644 --- a/airtime_mvc/public/css/showbuilder.css +++ b/airtime_mvc/public/css/showbuilder.css @@ -41,13 +41,14 @@ } .sb-content fieldset legend { - font-size: 13px; + font-size: 16px; white-space: nowrap; width: 110px; } .sb-content fieldset label { - padding: 2px; + /*padding: 2px;*/ + padding: 0 16px 0 0; font-size: 12px; } diff --git a/airtime_mvc/public/css/styles.css b/airtime_mvc/public/css/styles.css index 07443757c..9188cf1f2 100644 --- a/airtime_mvc/public/css/styles.css +++ b/airtime_mvc/public/css/styles.css @@ -3949,7 +3949,7 @@ li .ui-state-hover { height: 100%; float: left; flex: 1 100%; - margin: 4px 0; + margin: 4px 0 !important; min-height: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; @@ -3963,13 +3963,54 @@ li .ui-state-hover { max-width: 300px; } -.podcast-metadata label { - display: inline-block; - width: 150px; +.inner_editor_title > h2 { + float: left; } -.podcast-metadata input[type="text"] { +.inner_editor_title button { + float: right; + margin: 5px 10px 0 0; +} + +.angular_wrapper .inner_editor_wrapper { + flex: 1 100%; +} + +.angular_wrapper legend { + background-color: #242424; + color: #efefef; +} + +.angular_wrapper .dataTables_scrolling { + /* Should find a better way to do this... */ + top: 74px !important; +} + +.podcast-metadata p { + text-align: center; + padding: 0 5%; +} + +.podcast-metadata label, +.podcast-metadata input, +.podcast-metadata textarea { + margin: 4px 0; +} + +.podcast-metadata input[type="checkbox"] { + margin: 8px 60% 0 0; +} + +.podcast-metadata label { + display: block; + width: 20%; + float: left; +} + +.podcast-metadata input[type="text"], +.podcast-metadata textarea { width: 60%; + float: left; } /* UI Revamp Video */ diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js index e56775de9..a0214cba4 100644 --- a/airtime_mvc/public/js/airtime/library/library.js +++ b/airtime_mvc/public/js/airtime/library/library.js @@ -1264,9 +1264,9 @@ var AIRTIME = (function(AIRTIME) { podcastToolbarButtons[AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.DELETE].eventHandlers.click = AIRTIME.podcast.deleteSelectedPodcasts; // Add a button to view the station podcast podcastToolbarButtons["StationPodcast"] = { - 'title' : $.i18n._("My Station Podcast"), - 'iconClass' : "icon-music", - extraBtnClass : "", + title : $.i18n._("My Station Podcast"), + iconClass : "icon-music", + extraBtnClass : "btn-small", elementId : "", eventHandlers : { click: AIRTIME.podcast.openStationPodcast @@ -1279,10 +1279,10 @@ var AIRTIME = (function(AIRTIME) { true, //Enable item selection podcastToolbarButtons, //Toolbar buttons { //Datatables overrides. - 'aoColumns' : aoColumns, - 'sAjaxSource' : ajaxSourceURL, - 'oColReorder': { - 'iFixedColumns': 1 // Checkbox + aoColumns : aoColumns, + sAjaxSource : ajaxSourceURL, + oColReorder: { + iFixedColumns: 1 // Checkbox } }); diff --git a/airtime_mvc/public/js/airtime/library/podcast.js b/airtime_mvc/public/js/airtime/library/podcast.js index d3eb1656c..c24d13d2b 100644 --- a/airtime_mvc/public/js/airtime/library/podcast.js +++ b/airtime_mvc/public/js/airtime/library/podcast.js @@ -16,7 +16,7 @@ var AIRTIME = (function (AIRTIME) { * @param {{}} $http angular http service object * @param {{}} podcast podcast metadata object * @param {Tab} tab Tab object the controller is being bootstrapped in - * + * * @constructor */ function PodcastController($scope, $http, podcast, tab) { @@ -186,9 +186,9 @@ var AIRTIME = (function (AIRTIME) { var $scope = this.$scope, buttons = { deleteBtn: { - 'title' : $.i18n._('Delete'), - 'iconClass' : "icon-trash", - extraBtnClass : "btn-danger", + title : $.i18n._('Delete'), + iconClass : 'icon-trash', + extraBtnClass : 'btn-small btn-danger', elementId : '', eventHandlers : { click: $scope.deleteSelectedEpisodes @@ -213,7 +213,7 @@ var AIRTIME = (function (AIRTIME) { * @override */ StationPodcastController.prototype.reloadEpisodeTable = function() { - self.episodeTable.getDatatable().fnDraw(); + this.episodeTable.getDatatable().fnDraw(); }; /** @@ -397,14 +397,23 @@ var AIRTIME = (function (AIRTIME) { * @returns {*} the created Table object */ mod.initPodcastEpisodeDatatable = function(podcast, tab, params, buttons) { + buttons = $.extend({ + slideToggle: { + title : '', + iconClass : 'spl-no-r-margin icon-chevron-up', + extraBtnClass : 'toggle-editor-form', + elementId : '', + eventHandlers : {} + } + }, buttons); params = $.extend(params, { - oColVis : { - sAlign: "right", - aiExclude: [0, 1], - buttonText: $.i18n._("Columns"), + oColVis: { + sAlign : 'right', + aiExclude : [0, 1], + buttonText : $.i18n._("Columns"), iOverlayFade: 0, - oColReorder: { + oColReorder : { iFixedColumns: 1 // Checkbox } } diff --git a/airtime_mvc/public/js/airtime/library/publish.js b/airtime_mvc/public/js/airtime/library/publish.js index fe88ae519..01b449ac7 100644 --- a/airtime_mvc/public/js/airtime/library/publish.js +++ b/airtime_mvc/public/js/airtime/library/publish.js @@ -99,8 +99,7 @@ var AIRTIME = (function (AIRTIME) { function _bootstrapAngularApp(mediaId, tab) { publishApp.value('mediaId', mediaId); publishApp.value('tab', tab); - var wrapper = AIRTIME.tabs.getActiveTab().contents.find(".editor_pane_wrapper"); - wrapper.attr("ng-controller", "Publish"); + var wrapper = AIRTIME.tabs.getActiveTab().contents.find(".angular_wrapper"); angular.bootstrap(wrapper.get(0), [PUBLISH_APP_NAME]); } diff --git a/airtime_mvc/public/js/airtime/library/spl.js b/airtime_mvc/public/js/airtime/library/spl.js index d2f94d349..f08815445 100644 --- a/airtime_mvc/public/js/airtime/library/spl.js +++ b/airtime_mvc/public/js/airtime/library/spl.js @@ -912,13 +912,6 @@ var AIRTIME = (function(AIRTIME){ oData = {}; playlistRequest(sUrl, oData); }); - - $pl.find(".toggle-editor-form").unbind().on("click", function(event) { - $pl.find(".inner_editor_wrapper").slideToggle(200); - var buttonIcon = $(this).find('span.icon-white'); - buttonIcon.toggleClass('icon-chevron-up'); - buttonIcon.toggleClass('icon-chevron-down'); - }); } function setUpPlaylist() { @@ -1138,9 +1131,6 @@ var AIRTIME = (function(AIRTIME){ type = pl.find('.obj_type').val(); url = baseUrl+'playlist/delete'; - console.log(id); - console.log(type); - $.post(url, {format: "json", ids: id, modified: lastMod, type: type}, function(json) { diff --git a/airtime_mvc/public/js/airtime/showbuilder/tabs.js b/airtime_mvc/public/js/airtime/showbuilder/tabs.js index d9384bca9..d67d0cc69 100644 --- a/airtime_mvc/public/js/airtime/showbuilder/tabs.js +++ b/airtime_mvc/public/js/airtime/showbuilder/tabs.js @@ -131,6 +131,13 @@ var AIRTIME = (function(AIRTIME){ AIRTIME.library.fnDrawCallback(); self.close(); }); + + self.contents.on("click", ".toggle-editor-form", function(event) { + self.contents.find(".inner_editor_wrapper").slideToggle(200); + var buttonIcon = $(this).find('.icon-white'); + buttonIcon.toggleClass('icon-chevron-up'); + buttonIcon.toggleClass('icon-chevron-down'); + }); }; /** diff --git a/airtime_mvc/public/js/airtime/widgets/table.js b/airtime_mvc/public/js/airtime/widgets/table.js index 4bcd8c180..b55349eff 100644 --- a/airtime_mvc/public/js/airtime/widgets/table.js +++ b/airtime_mvc/public/js/airtime/widgets/table.js @@ -210,7 +210,8 @@ var AIRTIME = (function(AIRTIME) { outerDiv.className = 'btn-group'; outerDiv.title = title; var innerButton = document.createElement("button"); - innerButton.className = 'btn btn-small ' + extraBtnClass; + //innerButton.className = 'btn btn-small ' + extraBtnClass; + innerButton.className = 'btn ' + extraBtnClass; innerButton.id = elementId; var innerIcon = document.createElement("i"); innerIcon.className = 'icon-white ' + iconClass; @@ -440,9 +441,9 @@ var AIRTIME = (function(AIRTIME) { //Set of standard buttons. Use getStandardToolbarButtons() to grab these and pass them to the init() function. Table._STANDARD_TOOLBAR_BUTTONS = {}; - Table._STANDARD_TOOLBAR_BUTTONS[Table.TOOLBAR_BUTTON_ROLES.NEW] = { 'title' : $.i18n._('New'), 'iconClass' : "icon-plus", extraBtnClass : "btn-new", elementId : '', eventHandlers : {} }; - Table._STANDARD_TOOLBAR_BUTTONS[Table.TOOLBAR_BUTTON_ROLES.EDIT] = { 'title' : $.i18n._('Edit'), 'iconClass' : "icon-pencil", extraBtnClass : "", elementId : '', eventHandlers : {} }; - Table._STANDARD_TOOLBAR_BUTTONS[Table.TOOLBAR_BUTTON_ROLES.DELETE] = { 'title' : $.i18n._('Delete'), 'iconClass' : "icon-trash", extraBtnClass : "btn-danger", elementId : '', eventHandlers : {} }; + Table._STANDARD_TOOLBAR_BUTTONS[Table.TOOLBAR_BUTTON_ROLES.NEW] = { 'title' : $.i18n._('New'), 'iconClass' : "icon-plus", extraBtnClass : "btn-small btn-new", elementId : '', eventHandlers : {} }; + Table._STANDARD_TOOLBAR_BUTTONS[Table.TOOLBAR_BUTTON_ROLES.EDIT] = { 'title' : $.i18n._('Edit'), 'iconClass' : "icon-pencil", extraBtnClass : "btn-small", elementId : '', eventHandlers : {} }; + Table._STANDARD_TOOLBAR_BUTTONS[Table.TOOLBAR_BUTTON_ROLES.DELETE] = { 'title' : $.i18n._('Delete'), 'iconClass' : "icon-trash", extraBtnClass : "btn-small btn-danger", elementId : '', eventHandlers : {} }; Object.freeze(Table._STANDARD_TOOLBAR_BUTTONS);