Files
2019-11-23 21:51:02 -05:00

105 lines
3.7 KiB
JavaScript

Umbraco.Sys.registerNamespace("Umbraco.Dialogs");
(function ($) {
Umbraco.Dialogs.PublishDialog = base2.Base.extend({
//private methods/variables
_opts: null,
_koViewModel: null,
// Constructor
constructor: function () {
},
//public methods
init: function (opts) {
/// <summary>Initializes the class and any UI bindings</summary>
// Merge options with default
this._opts = $.extend({
}, opts);
var self = this;
//The knockout js view model for the selected item
self._koViewModel = {
publishAll: ko.observable(false),
includeUnpublished: ko.observable(false),
processStatus: ko.observable("init"),
isSuccessful: ko.observable(false),
resultMessages: ko.observableArray(),
resultMessage: ko.observable(""), //if there's only one result message
closeDialog: function () {
UmbClientMgr.closeModalWindow();
},
startPublish: function() {
this.processStatus("publishing");
var includeUnpublished = self._koViewModel.includeUnpublished();
$.post(self._opts.restServiceLocation + "PublishDocument",
JSON.stringify({
documentId: self._opts.documentId,
publishDescendants: self._koViewModel.publishAll(),
includeUnpublished: includeUnpublished
}),
function (e) {
self._koViewModel.processStatus("complete");
self._koViewModel.isSuccessful(e.success);
var msgs = e.message.trim().split("\r\n");
if (msgs.length > 1) {
for (var m in msgs) {
self._koViewModel.resultMessages.push({ message: msgs[m] });
}
}
else {
self._koViewModel.resultMessage(msgs[0]);
}
//sync the tree
UmbClientMgr.mainTree().setActiveTreeType('content');
UmbClientMgr.mainTree().syncTree(self._opts.documentPath, true)
if (includeUnpublished) {
var node = UmbClientMgr.mainTree().getActionNode();
if (node.expanded === true) {
UmbClientMgr.mainTree().reloadActionNode();
}
}
});
}
};
//ensure includeUnpublished is always false if publishAll is ever false
self._koViewModel.publishAll.subscribe(function (newValue) {
if (newValue === false) {
self._koViewModel.includeUnpublished(false);
}
});
ko.applyBindings(self._koViewModel);
}
}, {
//Static members
//private methods/variables
_instance: null,
// Singleton accessor
getInstance: function () {
if (this._instance == null)
this._instance = new Umbraco.Dialogs.PublishDialog();
return this._instance;
}
});
//Set defaults for jQuery ajax calls.
$.ajaxSetup({
dataType: 'json',
cache: false,
contentType: 'application/json; charset=utf-8'
});
})(jQuery);