X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/30214fde74c954ee6cf4daeb562764343b546b58..refs/pull/84/head:/resources/assets/js/controllers.js diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js index 76b8cc67d..dbd2e1ae6 100644 --- a/resources/assets/js/controllers.js +++ b/resources/assets/js/controllers.js @@ -4,6 +4,7 @@ module.exports = function (ngApp, events) { ngApp.controller('ImageManagerController', ['$scope', '$attrs', '$http', '$timeout', 'imageManagerService', function ($scope, $attrs, $http, $timeout, imageManagerService) { + $scope.images = []; $scope.imageType = $attrs.imageType; $scope.selectedImage = false; @@ -12,6 +13,8 @@ module.exports = function (ngApp, events) { $scope.hasMore = false; $scope.imageUpdateSuccess = false; $scope.imageDeleteSuccess = false; + $scope.uploadedTo = $attrs.uploadedTo; + var page = 0; var previousClickTime = 0; var dataLoaded = false; @@ -213,16 +216,25 @@ module.exports = function (ngApp, events) { }]); - ngApp.controller('PageEditController', ['$scope', '$http', '$attrs', '$interval', '$timeout', function ($scope, $http, $attrs, $interval, $timeout) { + ngApp.controller('PageEditController', ['$scope', '$http', '$attrs', '$interval', '$timeout', '$sce', + function ($scope, $http, $attrs, $interval, $timeout, $sce) { $scope.editorOptions = require('./pages/page-form'); - $scope.editorHtml = ''; + $scope.editContent = ''; $scope.draftText = ''; var pageId = Number($attrs.pageId); var isEdit = pageId !== 0; var autosaveFrequency = 30; // AutoSave interval in seconds. - $scope.isDraft = Number($attrs.pageDraft) === 1; - if ($scope.isDraft) $scope.draftText = 'Editing Draft'; + var isMarkdown = $attrs.editorType === 'markdown'; + $scope.isUpdateDraft = Number($attrs.pageUpdateDraft) === 1; + $scope.isNewPageDraft = Number($attrs.pageNewDraft) === 1; + + // Set inital header draft text + if ($scope.isUpdateDraft || $scope.isNewPageDraft) { + $scope.draftText = 'Editing Draft' + } else { + $scope.draftText = 'Editing Page' + }; var autoSave = false; @@ -237,7 +249,18 @@ module.exports = function (ngApp, events) { }, 1000); } - $scope.editorChange = function () {} + // Actions specifically for the markdown editor + if (isMarkdown) { + $scope.displayContent = ''; + // Editor change event + $scope.editorChange = function (content) { + $scope.displayContent = $sce.trustAsHtml(content); + } + } + + if (!isMarkdown) { + $scope.editorChange = function() {}; + } /** * Start the AutoSave loop, Checks for content change @@ -245,17 +268,18 @@ module.exports = function (ngApp, events) { */ function startAutoSave() { currentContent.title = $('#name').val(); - currentContent.html = $scope.editorHtml; + currentContent.html = $scope.editContent; autoSave = $interval(() => { var newTitle = $('#name').val(); - var newHtml = $scope.editorHtml; + var newHtml = $scope.editContent; if (newTitle !== currentContent.title || newHtml !== currentContent.html) { currentContent.html = newHtml; currentContent.title = newTitle; - saveDraftUpdate(newTitle, newHtml); + saveDraft(); } + }, 1000 * autosaveFrequency); } @@ -264,16 +288,24 @@ module.exports = function (ngApp, events) { * @param title * @param html */ - function saveDraftUpdate(title, html) { - $http.put('/ajax/page/' + pageId + '/save-draft', { - name: title, - html: html - }).then((responseData) => { + function saveDraft() { + var data = { + name: $('#name').val(), + html: isMarkdown ? $sce.getTrustedHtml($scope.displayContent) : $scope.editContent + }; + + if (isMarkdown) data.markdown = $scope.editContent; + + $http.put('/ajax/page/' + pageId + '/save-draft', data).then((responseData) => { $scope.draftText = responseData.data.message; - $scope.isDraft = true; + if (!$scope.isNewPageDraft) $scope.isUpdateDraft = true; }); } + $scope.forceDraftSave = function() { + saveDraft(); + }; + /** * Discard the current draft and grab the current page * content from the system via an AJAX request. @@ -281,10 +313,11 @@ module.exports = function (ngApp, events) { $scope.discardDraft = function () { $http.get('/ajax/page/' + pageId).then((responseData) => { if (autoSave) $interval.cancel(autoSave); - $scope.draftText = ''; - $scope.isDraft = false; + $scope.draftText = 'Editing Page'; + $scope.isUpdateDraft = false; $scope.$broadcast('html-update', responseData.data.html); - $('#name').val(currentContent.title); + $scope.$broadcast('markdown-update', responseData.data.markdown || responseData.data.html); + $('#name').val(responseData.data.name); $timeout(() => { startAutoSave(); }, 1000);