-
+
diff --git a/VERSION b/VERSION index 8d0c9d6..e7136ca 100644 --- a/VERSION +++ b/VERSION @@ -1,10 +1,12 @@ -v0.2.6 +v0.2.7 Changelog - * Settings Updates - * Choose to hide items on filter - * Choose boards when creating/editing a user - * Comments can be edited - * Dates show up on comments and attachments without reload - * Opening login page redirects to boards if a valid token is found + * Additional way to dismiss Activity Log in Settings + * Image attachments resize to fit preview pane + * Uploaded files show username immediately + * Items can be moved to collapsed columns with new context menu item + * Automatic actions bugfix. + * The color picker has a pre-defined palette to choose from + * Edit Board Columns and Categories input box bugfix + diff --git a/css/styles.css b/css/styles.css index 4536437..fca685b 100644 --- a/css/styles.css +++ b/css/styles.css @@ -496,6 +496,9 @@ p.detail { .list-group-item.small { padding: 3px; } +.list-group.editable > .list-group-item { + overflow: hidden; +} td > .list-group { margin: 0; padding: 0; @@ -572,6 +575,10 @@ input.custom-inline { } /* #FilesPage */ +.files-wrapper { + height: 100%; +} + .files-widget { border: 1px solid rgba(51,51,51,.2); border-radius: 5px; @@ -580,6 +587,10 @@ input.custom-inline { height: 100%; } +.files-widget .widget-content { + height: 90%; +} + .files-widget .small.pull-right { margin-top: .3em; } @@ -593,7 +604,6 @@ input.custom-inline { border: 1px solid rgba(51,51,51,.3); width: 100%; height: 100%; - min-height: 500px; } /* #3rdParty */ @@ -633,6 +643,9 @@ input.custom-inline { border-radius: 4px; box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); } +.sp-container { + width: 202px; +} .sp-disabled { background-color: #eee; } @@ -650,6 +663,10 @@ input.custom-inline { .sp-cf:before, .sp-cf:after { display: none !important; } +.sp-palette-container { + border: none; + padding-bottom: 290px; +} /* jQueryUI Datepicker */ .ui-datepicker { border: 1px solid rgba(51,51,51,.5); diff --git a/js/app.js b/js/app.js index eabc99d..07f39b3 100644 --- a/js/app.js +++ b/js/app.js @@ -53,7 +53,7 @@ function($routeProvider, $httpProvider) { // Custom handlers for route authentication and rejection of invalid board id taskBoard.run(['$rootScope', '$location', '$window', 'AuthenticationService', function($rootScope, $location, $window, AuthenticationService) { - $rootScope.version = 'v0.2.6'; + $rootScope.version = 'v0.2.7'; $rootScope.$on('$routeChangeStart', function(event, nextRoute, currentRoute) { // Redirect to default path if authentication is required but not present. diff --git a/js/controllers/boards.js b/js/controllers/boards.js index 678be7e..e072d0d 100644 --- a/js/controllers/boards.js +++ b/js/controllers/boards.js @@ -71,6 +71,13 @@ function ($scope, $routeParams, $location, $interval, $window, $scope.deleteItem(); }; + $scope.changeItemLane = function() { + $scope.itemFormData.loadItem($scope.contextItem); + $scope.itemFormData.isAdd = false; + + $scope.submitItem($scope.itemFormData); + }; + $scope.contextItem = {}; // Needs to exist prior to onContextMenu call. $scope.onContextMenu = function(laneId, item) { $scope.contextItem = item; diff --git a/js/controllers/boardsItemForm.js b/js/controllers/boardsItemForm.js index 7950338..8a5cc38 100644 --- a/js/controllers/boardsItemForm.js +++ b/js/controllers/boardsItemForm.js @@ -68,7 +68,7 @@ function ($scope, BoardService) { allowEmpty: false, localStorageKey: 'taskboard.colorPalette', showPalette: true, - palette: [[]], + palette: [ ['#fff', '#ececec', '#ffffe0', '#ffe0fa', '#bee7f4', '#c3f4b5', '#debee8', '#ffdea9', '#ffbaba'] ], showSelectionPalette: true, showButtons: false, showInput: true, @@ -120,6 +120,7 @@ function ($scope, BoardService) { }); } }; + $scope.$parent.submitItem = $scope.submitItem; var isSuccess = function(data) { $scope.alerts.showAlerts(data.alerts); diff --git a/js/controllers/settingsAutoActions.js b/js/controllers/settingsAutoActions.js index 7a421d5..8441b97 100644 --- a/js/controllers/settingsAutoActions.js +++ b/js/controllers/settingsAutoActions.js @@ -27,20 +27,12 @@ function ($scope, $interval, BoardService) { { id: 2, action: 'Set item assignee' }, { id: 3, action: 'Clear item due date' } ]; + $scope.actionOptions = { triggers: [ - { - id: 0, - trigger: 'Item moves to column' - }, - { - id: 1, - trigger: 'Item assigned to user' - }, - { - id: 2, - trigger: 'Item set to category' - } + { id: 0, trigger: 'Item moves to column' }, + { id: 1, trigger: 'Item assigned to user' }, + { id: 2, trigger: 'Item set to category' } ] }; @@ -63,10 +55,21 @@ function ($scope, $interval, BoardService) { getCategories = function(boardData) { var categories = [{ id: '0', name: 'Uncategorized' }]; - if (boardData) { + if (boardData && boardData.ownCategory) { boardData.ownCategory.forEach(function(category) { categories.push(category); }); + } else { + $scope.actionOptions.triggers.forEach(function(trigger, index) { + if (trigger.id === 2) { + $scope.actionOptions.triggers.splice(index, 1); + } + }); + $scope.actionTypes.forEach(function(type, index) { + if (type.id === 1) { + $scope.actionTypes.splice(index, 1); + } + }); } return categories; }, @@ -144,16 +147,29 @@ function ($scope, $interval, BoardService) { updateAutoActions = function(actions) { if (!actions) { + $scope.actions = []; return; } var mappedActions = []; actions.forEach(function(action) { + var actionTrigger, actionType; + $scope.actionOptions.triggers.forEach(function(trigger) { + if (trigger.id === parseInt(action.trigger_id)) { + actionTrigger = trigger.trigger; + } + }); + $scope.actionTypes.forEach(function(type) { + if (type.id === parseInt(action.action_id)) { + actionType = type.action; + } + }); + mappedActions.push({ id: action.id, board: $scope.boardLookup[action.board_id], - trigger: $scope.actionOptions.triggers[action.trigger_id].trigger + getSecondaryText(action), - action: $scope.actionTypes[action.action_id].action + getActionText(action) + trigger: actionTrigger + getSecondaryText(action), + action: actionType + getActionText(action) }); }); @@ -256,7 +272,7 @@ function ($scope, $interval, BoardService) { allowEmpty: false, localStorageKey: 'taskboard.colorPalette', showPalette: true, - palette: [[]], + palette: [ ['#fff', '#ececec', '#ffffe0', '#ffe0fa', '#bee7f4', '#c3f4b5', '#debee8', '#ffdea9', '#ffbaba'] ], showSelectionPalette: true, showButtons: false, showInput: true, @@ -274,13 +290,13 @@ function ($scope, $interval, BoardService) { $scope.actionData.color = null; }; - // Check every 250ms to see if a board has been chosen. + // Check every 500ms to see if a board has been chosen. var updateIfBoardChosen = function() { if ($scope.actionData.board !== null) { - $interval.cancel($scope.interval); // Stop checking once it has. + $interval.cancel($scope.interval); $scope.getTriggerWord(); } }; - $scope.interval = $interval(updateIfBoardChosen, 250); + $scope.interval = $interval(updateIfBoardChosen, 500); $scope.$on('$destroy', function () { $interval.cancel($scope.interval); }); }]); diff --git a/partials/board.html b/partials/board.html index c36961b..0f83cec 100644 --- a/partials/board.html +++ b/partials/board.html @@ -105,6 +105,15 @@
+