diff --git a/css/style.scss b/css/style.scss index 3a9e252b9..b44c8f386 100644 --- a/css/style.scss +++ b/css/style.scss @@ -727,10 +727,23 @@ input.input-inline { flex: 1; } } + .section-header-tabbed { + margin-top: 10px; + margin-bottom: 5px; + flex-shrink: 0; + display: flex; + .tabHeaders { + margin: 0; + flex-grow: 1; + } + .tabDetails { + display: flex; + } + } .save-indicator { border-radius: 3px; - float: right; + margin: 5px; padding: 0 10px; font-size: 8pt; display: none; diff --git a/js/app/Config.js b/js/app/Config.js index c0039d4ad..bcc1391c8 100644 --- a/js/app/Config.js +++ b/js/app/Config.js @@ -74,6 +74,9 @@ app.config(function ($provide, $interpolateProvider, $httpProvider, $urlRouterPr }) .state('board.card', { url: '/card/:cardId', + params: { + tab: {value: 0, dynamic: true}, + }, views: { 'sidebarView': { templateUrl: '/card.sidebarView.html', diff --git a/js/controller/BoardController.js b/js/controller/BoardController.js index 7df5f1f75..460818ffd 100644 --- a/js/controller/BoardController.js +++ b/js/controller/BoardController.js @@ -48,7 +48,7 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St }, function (params) { $scope.params = params; }, true); - $scope.params = $state; + $scope.params = $state.params; /** * Check for markdown checkboxes in description to render the counter diff --git a/js/controller/CardController.js b/js/controller/CardController.js index 756dcafe5..afc15bffa 100644 --- a/js/controller/CardController.js +++ b/js/controller/CardController.js @@ -23,7 +23,7 @@ /* global app moment */ import app from '../app/App.js'; -app.controller('CardController', function ($scope, $rootScope, $sce, $location, $stateParams, $interval, $timeout, $filter, BoardService, CardService, StackService, StatusService, markdownItConverter, FileService) { +app.controller('CardController', function ($scope, $rootScope, $sce, $location, $stateParams, $state, $interval, $timeout, $filter, BoardService, CardService, StackService, StatusService, markdownItConverter, FileService) { $scope.sidebar = $rootScope.sidebar; $scope.status = { lastEdit: 0, @@ -38,7 +38,13 @@ app.controller('CardController', function ($scope, $rootScope, $sce, $location, $scope.boardservice = BoardService; $scope.isArray = angular.isArray; - + // workaround for $stateParams changes not being propagated + $scope.$watch(function() { + return $state.params; + }, function (params) { + $scope.params = params; + }, true); + $scope.params = $state.params; $scope.mimetypeForAttachment = function(attachment) { let url = OC.MimeType.getIconUrl(attachment.extendedData.mimetype); let style = { @@ -97,7 +103,7 @@ app.controller('CardController', function ($scope, $rootScope, $sce, $location, return match; }); CardService.update($scope.status.edit).then(function (data) { - var header = $('.section-header.card-description'); + var header = $('.section-header-tabbed .tabDetails'); header.find('.save-indicator.unsaved').hide(); header.find('.save-indicator.saved').fadeIn(250).fadeOut(1000); }); @@ -126,7 +132,7 @@ app.controller('CardController', function ($scope, $rootScope, $sce, $location, }; $scope.cardEditDescriptionChanged = function ($event) { $scope.status.lastEdit = Date.now(); - var header = $('.section-header.card-description'); + var header = $('.section-header-tabbed .tabDetails'); header.find('.save-indicator.unsaved').show(); header.find('.save-indicator.saved').hide(); }; @@ -136,10 +142,10 @@ app.controller('CardController', function ($scope, $rootScope, $sce, $location, if (timeSinceEdit > 1000 && $scope.status.lastEdit > $scope.status.lastSave && !$scope.status.saving) { $scope.status.lastSave = currentTime; $scope.status.saving = true; - var header = $('.section-header.card-description'); + var header = $('.section-header-tabbed .tabDetails'); header.find('.save-indicator.unsaved').fadeIn(500); CardService.update($scope.status.edit).then(function (data) { - var header = $('.section-header.card-description'); + var header = $('.section-header-tabbed .tabDetails'); header.find('.save-indicator.unsaved').hide(); header.find('.save-indicator.saved').fadeIn(250).fadeOut(1000); $scope.status.saving = false; @@ -156,7 +162,7 @@ app.controller('CardController', function ($scope, $rootScope, $sce, $location, $scope.cardUpdate = function (card) { CardService.update(card).then(function (data) { $scope.status.cardEditDescription = false; - var header = $('.section-content.card-description'); + var header = $('.section-header-tabbed .tabDetails'); header.find('.save-indicator.unsaved').hide(); header.find('.save-indicator.saved').fadeIn(500).fadeOut(1000); }); diff --git a/templates/part.card.php b/templates/part.card.php index c34fa46fb..77d39162f 100644 --- a/templates/part.card.php +++ b/templates/part.card.php @@ -87,12 +87,21 @@ -
-

t('Attachments')); ?>

- - + +
+ +
+ t('Saved')); ?> + t('Unsaved changes')); ?> + t('Formatting help')); ?> + + +
-
+
  • @@ -128,18 +137,7 @@
- -
-

-
- t('Description')); ?> - t('Formatting help')); ?> -
-

- t('Saved')); ?> - t('Unsaved changes')); ?> -
-
+