186 lines
5.4 KiB
JavaScript
186 lines
5.4 KiB
JavaScript
var AIRTIME = (function (AIRTIME) {
|
|
var mod;
|
|
|
|
if (AIRTIME.publish === undefined) {
|
|
AIRTIME.publish = {};
|
|
}
|
|
|
|
mod = AIRTIME.publish;
|
|
|
|
var endpoint = "rest/media/";
|
|
var dialogUrl = "library/publish-dialog";
|
|
var PUBLISH_APP_NAME = "publish";
|
|
|
|
//AngularJS app
|
|
var publishApp = angular
|
|
.module(PUBLISH_APP_NAME, [])
|
|
.controller("Publish", function ($sce, $scope, $http, mediaId, tab) {
|
|
$scope.publishData = {};
|
|
var sourceInterval;
|
|
|
|
tab.contents.on("click", "input[type='checkbox']", function () {
|
|
var noSourcesChecked = true;
|
|
$.each(tab.contents.find("input[type='checkbox']"), function () {
|
|
if ($(this).is(":checked")) {
|
|
noSourcesChecked = false;
|
|
}
|
|
});
|
|
tab.contents.find(".publish-btn").prop("disabled", noSourcesChecked);
|
|
});
|
|
|
|
function fetchSourceData() {
|
|
var csrfToken = jQuery("#csrf").val();
|
|
$http
|
|
.get(endpoint + mediaId, { csrf_token: csrfToken })
|
|
.success(function (json) {
|
|
$scope.media = json;
|
|
tab.setName($scope.media.track_title);
|
|
});
|
|
|
|
// Get an object containing all sources, their translated labels,
|
|
// and their publication state for the file with the given ID
|
|
$http
|
|
.get(endpoint + mediaId + "/publish-sources", {
|
|
csrf_token: csrfToken,
|
|
})
|
|
.success(function (json) {
|
|
$scope.sources = { toPublish: [], published: [] };
|
|
$.each(json, function () {
|
|
if (Math.abs(this.status) == 1) {
|
|
$scope.sources.published.push(this);
|
|
} else {
|
|
$scope.sources.toPublish.push(this);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
function init() {
|
|
fetchSourceData();
|
|
sourceInterval = setInterval(function () {
|
|
fetchSourceData();
|
|
}, 5000);
|
|
|
|
tab.assignOnCloseHandler(function () {
|
|
clearInterval(sourceInterval);
|
|
$scope.$destroy();
|
|
});
|
|
}
|
|
|
|
$scope.openEditDialog = function () {
|
|
var uid = AIRTIME.library.MediaTypeStringEnum.FILE + "_" + mediaId;
|
|
$.get(
|
|
baseUrl + "library/edit-file-md/id/" + mediaId,
|
|
{ format: "json" },
|
|
function (json) {
|
|
AIRTIME.playlist.fileMdEdit(json, uid);
|
|
},
|
|
);
|
|
};
|
|
|
|
$scope.publish = function () {
|
|
var data = {};
|
|
jQuery.each($scope.publishData, function (k, v) {
|
|
if (v) {
|
|
data[k] = "publish"; // FIXME: should be more robust
|
|
}
|
|
});
|
|
|
|
if (data && Object.keys(data).length > 0) {
|
|
$http
|
|
.put(endpoint + mediaId + "/publish", {
|
|
csrf_token: jQuery("#csrf").val(),
|
|
sources: data,
|
|
})
|
|
.success(function () {
|
|
tab.contents.find(".publish-btn").prop("disabled", true);
|
|
fetchSourceData();
|
|
$scope.publishData = {}; // Reset the publishData in case the user publishes
|
|
// and unpublishes without closing the tab
|
|
});
|
|
}
|
|
};
|
|
|
|
$scope.remove = function (source) {
|
|
var data = {};
|
|
data[source] = "unpublish"; // FIXME: should be more robust
|
|
$http
|
|
.put(endpoint + mediaId + "/publish", {
|
|
csrf_token: jQuery("#csrf").val(),
|
|
sources: data,
|
|
})
|
|
.success(function () {
|
|
fetchSourceData();
|
|
});
|
|
};
|
|
|
|
$scope.discard = function () {
|
|
tab.close();
|
|
$scope.media = {};
|
|
};
|
|
|
|
init();
|
|
});
|
|
|
|
/*
|
|
var selected = $("#podcast_table").find(".selected"),
|
|
ids = [];
|
|
var selectedData = AIRTIME.library.podcastTableWidget.getSelectedRows();
|
|
selectedData.forEach(function(el) {
|
|
ids.push(el.id);
|
|
});*/
|
|
|
|
function _bootstrapAngularApp(mediaId, tab) {
|
|
publishApp.value("mediaId", mediaId);
|
|
publishApp.value("tab", tab);
|
|
var wrapper = AIRTIME.tabs.getActiveTab().contents.find(".angular_wrapper");
|
|
angular.bootstrap(wrapper.get(0), [PUBLISH_APP_NAME]);
|
|
}
|
|
|
|
mod.publishSelectedTracks = function () {
|
|
/*
|
|
_bulkAction("GET", function(json) {
|
|
json.forEach(function(el) {
|
|
var uid = AIRTIME.library.MediaTypeStringEnum.FILE+"_"+el.id;
|
|
var mediaId = el.id;
|
|
|
|
$http.get(dialogUrl, { csrf_token: jQuery("#csrf").val() })
|
|
.success(function(json) {
|
|
|
|
AIRTIME.tabs.openTab(json, uid, null);
|
|
_bootstrapAngularApp(mediaId);
|
|
});
|
|
});
|
|
});*/
|
|
};
|
|
|
|
mod.openPublishDialog = function (mediaId) {
|
|
jQuery
|
|
.get(dialogUrl, { csrf_token: jQuery("#csrf").val() })
|
|
.success(function (html) {
|
|
var tab = AIRTIME.tabs.openTab(
|
|
html,
|
|
PUBLISH_APP_NAME + "_" + mediaId,
|
|
null,
|
|
);
|
|
_bootstrapAngularApp(mediaId, tab);
|
|
});
|
|
|
|
/*
|
|
_bulkAction("GET", function(json) {
|
|
json.forEach(function(el) {
|
|
var uid = AIRTIME.library.MediaTypeStringEnum.FILE+"_"+el.id;
|
|
|
|
$http.get(dialogUrl, { csrf_token: jQuery("#csrf").val() })
|
|
.success(function(json) {
|
|
|
|
AIRTIME.tabs.openTab(json, uid, null);
|
|
_bootstrapAngularApp(el.media);
|
|
});
|
|
});
|
|
});*/
|
|
};
|
|
|
|
return AIRTIME;
|
|
})(AIRTIME || {});
|