Fixes
This commit is contained in:
@@ -135,6 +135,11 @@
|
|||||||
<length>8</length>
|
<length>8</length>
|
||||||
<notnull>false</notnull>
|
<notnull>false</notnull>
|
||||||
</field>
|
</field>
|
||||||
|
<field>
|
||||||
|
<name>archived</name>
|
||||||
|
<type>boolean</type>
|
||||||
|
<default>false</default>
|
||||||
|
</field>
|
||||||
</declaration>
|
</declaration>
|
||||||
</table>
|
</table>
|
||||||
<table>
|
<table>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<description>My first ownCloud app</description>
|
<description>My first ownCloud app</description>
|
||||||
<licence>AGPL</licence>
|
<licence>AGPL</licence>
|
||||||
<author>Julius Härtl</author>
|
<author>Julius Härtl</author>
|
||||||
<version>0.0.1.13</version>
|
<version>0.0.1.14</version>
|
||||||
<namespace>Deck</namespace>
|
<namespace>Deck</namespace>
|
||||||
<category>other</category>
|
<category>other</category>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|||||||
@@ -22,10 +22,10 @@ return [
|
|||||||
['name' => 'board#read', 'url' => '/boards/{boardId}/', 'verb' => 'GET'],
|
['name' => 'board#read', 'url' => '/boards/{boardId}/', 'verb' => 'GET'],
|
||||||
['name' => 'board#update', 'url' => '/boards/', 'verb' => 'PUT'],
|
['name' => 'board#update', 'url' => '/boards/', 'verb' => 'PUT'],
|
||||||
['name' => 'board#delete', 'url' => '/boards/{boardId}/', 'verb' => 'DELETE'],
|
['name' => 'board#delete', 'url' => '/boards/{boardId}/', 'verb' => 'DELETE'],
|
||||||
// boards - sharees
|
// boards - acl
|
||||||
['name' => 'board#addSharee', 'url' => '/boards/sharee', 'verb' => 'POST'],
|
['name' => 'board#addAcl', 'url' => '/boards/acl', 'verb' => 'POST'],
|
||||||
['name' => 'board#removeSharee', 'url' => '/boards/sharee', 'verb' => 'DELETE'],
|
['name' => 'board#updateAcl', 'url' => '/boards/acl', 'verb' => 'PUT'],
|
||||||
['name' => 'board#updateSharee', 'url' => '/boards/sharee', 'verb' => 'PUT'],
|
['name' => 'board#deleteAcl', 'url' => '/boards/acl/{id}', 'verb' => 'DELETE'],
|
||||||
|
|
||||||
// stacks
|
// stacks
|
||||||
['name' => 'stack#index', 'url' => '/stacks/{boardId}/', 'verb' => 'GET'],
|
['name' => 'stack#index', 'url' => '/stacks/{boardId}/', 'verb' => 'GET'],
|
||||||
|
|||||||
@@ -64,7 +64,14 @@ class BoardController extends Controller {
|
|||||||
return $this->boardService->labels($this->boardId);
|
return $this->boardService->labels($this->boardId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function addSharee($boardId, $type, $participant, $write, $invite, $manage) {
|
public function addAcl($boardId, $type, $participant, $write, $invite, $manage) {
|
||||||
return $this->boardService->addParticipant($boardId, $type, $participant, $write, $invite, $manage);
|
return $this->boardService->addAcl($boardId, $type, $participant, $write, $invite, $manage);
|
||||||
}
|
}
|
||||||
|
public function updateAcl($id, $permissionWrite, $permissionInvite, $permissionManage) {
|
||||||
|
return $this->boardService->updateAcl($id, $permissionWrite, $permissionInvite, $permissionManage);
|
||||||
|
}
|
||||||
|
public function deleteAcl($id) {
|
||||||
|
return $this->boardService->deleteAcl($id);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,7 @@ namespace OCA\Deck\Controller;
|
|||||||
use OCP\IRequest;
|
use OCP\IRequest;
|
||||||
use OCP\AppFramework\ApiController as BaseApiController;
|
use OCP\AppFramework\ApiController as BaseApiController;
|
||||||
|
|
||||||
class ApiController extends BaseApiController {
|
class StyleController extends Controller {
|
||||||
private $defaults;
|
private $defaults;
|
||||||
public function __construct($appName,
|
public function __construct($appName,
|
||||||
IRequest $request, OC_Defaults $defaults){
|
IRequest $request, OC_Defaults $defaults){
|
||||||
@@ -15,9 +15,11 @@ class ApiController extends BaseApiController {
|
|||||||
/**
|
/**
|
||||||
* @PublicPage
|
* @PublicPage
|
||||||
* @NoCSRFRequired
|
* @NoCSRFRequired
|
||||||
* @CORS
|
|
||||||
*/
|
*/
|
||||||
public function generateCss() {
|
public function generateCss() {
|
||||||
return
|
|
||||||
|
$color = $this->config->getAppValue($this->appName, 'color');
|
||||||
|
$responseCss .= '';
|
||||||
|
$response = new Http\DataDownloadResponse($responseCss, 'style', 'text/css');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -634,4 +634,22 @@ margin-bottom:2px; width:100%;
|
|||||||
#markdown pre {
|
#markdown pre {
|
||||||
background-color:#eeeeee;
|
background-color:#eeeeee;
|
||||||
padding:3px;
|
padding:3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.shareWithList .icon {
|
||||||
|
display: inline-block;
|
||||||
|
background-size: 16px 16px;
|
||||||
|
width:16px;
|
||||||
|
height:16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.shareWithList .fa {
|
||||||
|
font-size:12pt;
|
||||||
|
width:16px;
|
||||||
|
text-align:center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.shareOption {
|
||||||
|
margin-top:4px;
|
||||||
}
|
}
|
||||||
@@ -17,6 +17,9 @@ class Acl extends Entity implements JsonSerializable {
|
|||||||
public function __construct() {
|
public function __construct() {
|
||||||
$this->addType('id','integer');
|
$this->addType('id','integer');
|
||||||
$this->addType('boardId','integer');
|
$this->addType('boardId','integer');
|
||||||
|
$this->addType('permissionWrite', 'boolean');
|
||||||
|
$this->addType('permissionInvite', 'boolean');
|
||||||
|
$this->addType('permissionManage', 'boolean');
|
||||||
}
|
}
|
||||||
public function jsonSerialize() {
|
public function jsonSerialize() {
|
||||||
return [
|
return [
|
||||||
|
|||||||
14
db/board.php
14
db/board.php
@@ -11,8 +11,8 @@ class Board extends \OCA\Deck\Db\Entity implements JsonSerializable {
|
|||||||
protected $owner;
|
protected $owner;
|
||||||
protected $color;
|
protected $color;
|
||||||
protected $archived;
|
protected $archived;
|
||||||
public $acl = array();
|
|
||||||
protected $labels;
|
protected $labels;
|
||||||
|
protected $acl;
|
||||||
|
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
$this->addType('id','integer');
|
$this->addType('id','integer');
|
||||||
@@ -30,4 +30,16 @@ class Board extends \OCA\Deck\Db\Entity implements JsonSerializable {
|
|||||||
'acl' => $this->acl,
|
'acl' => $this->acl,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setLabels($labels) {
|
||||||
|
foreach ($labels as $l) {
|
||||||
|
$this->labels[$l->id] = $l;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setAcl($acl) {
|
||||||
|
foreach ($acl as $a) {
|
||||||
|
$this->acl[$a->id] = $a;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -30,12 +30,15 @@ class BoardMapper extends Mapper {
|
|||||||
$sql = 'SELECT * FROM `*PREFIX*deck_boards` ' .
|
$sql = 'SELECT * FROM `*PREFIX*deck_boards` ' .
|
||||||
'WHERE `id` = ?';
|
'WHERE `id` = ?';
|
||||||
$board = $this->findEntity($sql, [$id]);
|
$board = $this->findEntity($sql, [$id]);
|
||||||
|
|
||||||
// Add labels
|
// Add labels
|
||||||
$labels = $this->labelMapper->findAll($id);
|
$labels = $this->labelMapper->findAll($id);
|
||||||
$board->setLabels($labels);
|
$board->setLabels($labels);
|
||||||
// Add sharees
|
|
||||||
|
// Add acl
|
||||||
$acl = $this->aclMapper->findAll($id);
|
$acl = $this->aclMapper->findAll($id);
|
||||||
$board->setAcl($acl);
|
$board->setAcl($acl);
|
||||||
|
|
||||||
return $board;
|
return $board;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ class Card extends Entity implements JsonSerializable {
|
|||||||
protected $labels;
|
protected $labels;
|
||||||
protected $owner;
|
protected $owner;
|
||||||
protected $order;
|
protected $order;
|
||||||
|
protected $archived;
|
||||||
|
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
$this->addType('id','integer');
|
$this->addType('id','integer');
|
||||||
$this->addType('stackId','integer');
|
$this->addType('stackId','integer');
|
||||||
@@ -35,6 +37,7 @@ class Card extends Entity implements JsonSerializable {
|
|||||||
'order' => $this->order,
|
'order' => $this->order,
|
||||||
'stackId' => $this->stackId,
|
'stackId' => $this->stackId,
|
||||||
'labels' => $this->labels,
|
'labels' => $this->labels,
|
||||||
|
'archived' => $this->archived,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,16 @@ class CardMapper extends Mapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function findAll($stackId, $limit=null, $offset=null) {
|
public function findAll($stackId, $limit=null, $offset=null) {
|
||||||
$sql = 'SELECT * FROM `*PREFIX*deck_cards` WHERE `stack_id` = ? ORDER BY `order`';
|
$sql = 'SELECT * FROM `*PREFIX*deck_cards`
|
||||||
|
WHERE `stack_id` = ? AND NOT archived ORDER BY `order`';
|
||||||
|
$entities = $this->findEntities($sql, [$stackId], $limit, $offset);
|
||||||
|
return $entities;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: test
|
||||||
|
public function findAllArchived($boardId, $limit=null, $offset=null) {
|
||||||
|
$sql = 'SELECT * FROM `*PREFIX*deck_cards` as c, `*PREFIX*deck_stacks` as s
|
||||||
|
WHERE `s.board_id` = ? AND c.stack_id = s.id AND archived ORDER BY `last_modified`';
|
||||||
$entities = $this->findEntities($sql, [$stackId], $limit, $offset);
|
$entities = $this->findEntities($sql, [$stackId], $limit, $offset);
|
||||||
return $entities;
|
return $entities;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,4 +49,6 @@ app.config(function ($provide, $routeProvider, $interpolateProvider, $httpProvid
|
|||||||
.state('board.sharing', {
|
.state('board.sharing', {
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
@@ -86,14 +86,16 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
|
|||||||
LabelService.update(label);
|
LabelService.update(label);
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.addSharee = function(sharee) {
|
$scope.addAcl = function(sharee) {
|
||||||
sharee.boardId = $scope.id;
|
sharee.boardId = $scope.id;
|
||||||
BoardService.addSharee(sharee);
|
BoardService.addAcl(sharee);
|
||||||
$scope.status.addSharee = null;
|
$scope.status.addSharee = null;
|
||||||
}
|
}
|
||||||
$scope.deleteAcl = function(acl) {
|
$scope.deleteAcl = function(acl) {
|
||||||
acl.boardId = $scope.id;
|
BoardService.deleteAcl(acl.id);
|
||||||
BoardService.removeAcl(acl);
|
}
|
||||||
|
$scope.updateAcl = function(acl) {
|
||||||
|
BoardService.updateAcl(acl);
|
||||||
}
|
}
|
||||||
// TODO: move to filter?
|
// TODO: move to filter?
|
||||||
// Lighten Color of the board for background usage
|
// Lighten Color of the board for background usage
|
||||||
|
|||||||
@@ -8,7 +8,9 @@
|
|||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git@github.com:juliushaertl/deck.git"
|
"url": "git@github.com:juliushaertl/deck.git"
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {
|
||||||
|
"karma": "^1.1.1"
|
||||||
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"bower": "*",
|
"bower": "*",
|
||||||
"grunt": "*",
|
"grunt": "*",
|
||||||
|
|||||||
@@ -79,6 +79,8 @@ app.config(["$provide", "$routeProvider", "$interpolateProvider", "$httpProvider
|
|||||||
.state('board.sharing', {
|
.state('board.sharing', {
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
}]);
|
}]);
|
||||||
app.run(["$document", "$rootScope", "$transitions", function ($document, $rootScope, $transitions) {
|
app.run(["$document", "$rootScope", "$transitions", function ($document, $rootScope, $transitions) {
|
||||||
'use strict';
|
'use strict';
|
||||||
@@ -203,14 +205,16 @@ app.controller('BoardController', ["$rootScope", "$scope", "$stateParams", "Stat
|
|||||||
LabelService.update(label);
|
LabelService.update(label);
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.addSharee = function(sharee) {
|
$scope.addAcl = function(sharee) {
|
||||||
sharee.boardId = $scope.id;
|
sharee.boardId = $scope.id;
|
||||||
BoardService.addSharee(sharee);
|
BoardService.addAcl(sharee);
|
||||||
$scope.status.addSharee = null;
|
$scope.status.addSharee = null;
|
||||||
}
|
}
|
||||||
$scope.deleteAcl = function(acl) {
|
$scope.deleteAcl = function(acl) {
|
||||||
acl.boardId = $scope.id;
|
BoardService.deleteAcl(acl.id);
|
||||||
BoardService.removeAcl(acl);
|
}
|
||||||
|
$scope.updateAcl = function(acl) {
|
||||||
|
BoardService.updateAcl(acl);
|
||||||
}
|
}
|
||||||
// TODO: move to filter?
|
// TODO: move to filter?
|
||||||
// Lighten Color of the board for background usage
|
// Lighten Color of the board for background usage
|
||||||
@@ -675,28 +679,59 @@ app.factory('BoardService', ["ApiService", "$http", "$q", function(ApiService, $
|
|||||||
this.sharees = [];
|
this.sharees = [];
|
||||||
$http.get(url).then(function (response) {
|
$http.get(url).then(function (response) {
|
||||||
self.sharees = response.data;
|
self.sharees = response.data;
|
||||||
console.log(self.sharees);
|
|
||||||
deferred.resolve(response.data);
|
deferred.resolve(response.data);
|
||||||
}, function (error) {
|
}, function (error) {
|
||||||
deferred.reject('Error while update ' + self.endpoint);
|
deferred.reject('Error while update ' + self.endpoint);
|
||||||
});
|
});
|
||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
}
|
};
|
||||||
|
|
||||||
BoardService.prototype.addSharee = function(sharee) {
|
BoardService.prototype.addAcl = function(acl) {
|
||||||
var board = this.getCurrent();
|
var board = this.getCurrent();
|
||||||
board.acl.push(sharee);
|
|
||||||
var deferred = $q.defer();
|
var deferred = $q.defer();
|
||||||
var self = this;
|
var self = this;
|
||||||
$http.post(this.baseUrl + '/sharee', sharee).then(function (response) {
|
var _acl = acl;
|
||||||
console.log("Add sharee " + response);
|
$http.post(this.baseUrl + '/acl', _acl).then(function (response) {
|
||||||
|
if(!board.acl) {
|
||||||
|
board.acl = {};
|
||||||
|
}
|
||||||
|
board.acl[response.data.id] = response.data;
|
||||||
deferred.resolve(response.data);
|
deferred.resolve(response.data);
|
||||||
}, function (error) {
|
}, function (error) {
|
||||||
deferred.reject('Error while insert ' + self.endpoint);
|
deferred.reject('Error creating ACL ' + _acl);
|
||||||
});
|
});
|
||||||
sharee = null;
|
acl = null;
|
||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
}
|
};
|
||||||
|
|
||||||
|
BoardService.prototype.deleteAcl = function(id) {
|
||||||
|
var board = this.getCurrent();
|
||||||
|
var deferred = $q.defer();
|
||||||
|
var self = this;
|
||||||
|
$http.delete(this.baseUrl + '/acl/' + id).then(function (response) {
|
||||||
|
delete board.acl[response.data.id];
|
||||||
|
deferred.resolve(response.data);
|
||||||
|
}, function (error) {
|
||||||
|
deferred.reject('Error deleting ACL ' + id);
|
||||||
|
});
|
||||||
|
acl = null;
|
||||||
|
return deferred.promise;
|
||||||
|
};
|
||||||
|
|
||||||
|
BoardService.prototype.updateAcl = function(acl) {
|
||||||
|
var board = this.getCurrent();
|
||||||
|
var deferred = $q.defer();
|
||||||
|
var self = this;
|
||||||
|
var _acl = acl;
|
||||||
|
$http.put(this.baseUrl + '/acl', _acl).then(function (response) {
|
||||||
|
board.acl[_acl.id] = response.data;
|
||||||
|
deferred.resolve(response.data);
|
||||||
|
}, function (error) {
|
||||||
|
deferred.reject('Error updating ACL ' + _acl);
|
||||||
|
});
|
||||||
|
acl = null;
|
||||||
|
return deferred.promise;
|
||||||
|
};
|
||||||
|
|
||||||
service = new BoardService($http, 'boards', $q)
|
service = new BoardService($http, 'boards', $q)
|
||||||
return service;
|
return service;
|
||||||
|
|||||||
@@ -11,28 +11,59 @@ app.factory('BoardService', function(ApiService, $http, $q){
|
|||||||
this.sharees = [];
|
this.sharees = [];
|
||||||
$http.get(url).then(function (response) {
|
$http.get(url).then(function (response) {
|
||||||
self.sharees = response.data;
|
self.sharees = response.data;
|
||||||
console.log(self.sharees);
|
|
||||||
deferred.resolve(response.data);
|
deferred.resolve(response.data);
|
||||||
}, function (error) {
|
}, function (error) {
|
||||||
deferred.reject('Error while update ' + self.endpoint);
|
deferred.reject('Error while update ' + self.endpoint);
|
||||||
});
|
});
|
||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
}
|
};
|
||||||
|
|
||||||
BoardService.prototype.addSharee = function(sharee) {
|
BoardService.prototype.addAcl = function(acl) {
|
||||||
var board = this.getCurrent();
|
var board = this.getCurrent();
|
||||||
board.acl.push(sharee);
|
|
||||||
var deferred = $q.defer();
|
var deferred = $q.defer();
|
||||||
var self = this;
|
var self = this;
|
||||||
$http.post(this.baseUrl + '/sharee', sharee).then(function (response) {
|
var _acl = acl;
|
||||||
console.log("Add sharee " + response);
|
$http.post(this.baseUrl + '/acl', _acl).then(function (response) {
|
||||||
|
if(!board.acl) {
|
||||||
|
board.acl = {};
|
||||||
|
}
|
||||||
|
board.acl[response.data.id] = response.data;
|
||||||
deferred.resolve(response.data);
|
deferred.resolve(response.data);
|
||||||
}, function (error) {
|
}, function (error) {
|
||||||
deferred.reject('Error while insert ' + self.endpoint);
|
deferred.reject('Error creating ACL ' + _acl);
|
||||||
});
|
});
|
||||||
sharee = null;
|
acl = null;
|
||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
}
|
};
|
||||||
|
|
||||||
|
BoardService.prototype.deleteAcl = function(id) {
|
||||||
|
var board = this.getCurrent();
|
||||||
|
var deferred = $q.defer();
|
||||||
|
var self = this;
|
||||||
|
$http.delete(this.baseUrl + '/acl/' + id).then(function (response) {
|
||||||
|
delete board.acl[response.data.id];
|
||||||
|
deferred.resolve(response.data);
|
||||||
|
}, function (error) {
|
||||||
|
deferred.reject('Error deleting ACL ' + id);
|
||||||
|
});
|
||||||
|
acl = null;
|
||||||
|
return deferred.promise;
|
||||||
|
};
|
||||||
|
|
||||||
|
BoardService.prototype.updateAcl = function(acl) {
|
||||||
|
var board = this.getCurrent();
|
||||||
|
var deferred = $q.defer();
|
||||||
|
var self = this;
|
||||||
|
var _acl = acl;
|
||||||
|
$http.put(this.baseUrl + '/acl', _acl).then(function (response) {
|
||||||
|
board.acl[_acl.id] = response.data;
|
||||||
|
deferred.resolve(response.data);
|
||||||
|
}, function (error) {
|
||||||
|
deferred.reject('Error updating ACL ' + _acl);
|
||||||
|
});
|
||||||
|
acl = null;
|
||||||
|
return deferred.promise;
|
||||||
|
};
|
||||||
|
|
||||||
service = new BoardService($http, 'boards', $q)
|
service = new BoardService($http, 'boards', $q)
|
||||||
return service;
|
return service;
|
||||||
|
|||||||
19
js/tests/unit/boardcontrollerspec.js
Normal file
19
js/tests/unit/boardcontrollerspec.js
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
describe('BoardController', function() {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var $controller;
|
||||||
|
|
||||||
|
beforeEach(inject(function(_$controller_){
|
||||||
|
// The injector unwraps the underscores (_) from around the parameter names when matching
|
||||||
|
$controller = _$controller_;
|
||||||
|
}));
|
||||||
|
|
||||||
|
describe('$scope.rgblight', function() {
|
||||||
|
it('converts rbg color to a lighter color', function() {
|
||||||
|
var $scope = {};
|
||||||
|
var controller = $controller('BoardController', { $scope: $scope });
|
||||||
|
var hex = $scope.rgblight('red');
|
||||||
|
expect(hex).toEqual('#red');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -81,12 +81,9 @@ class BoardService {
|
|||||||
$board->setColor($color);
|
$board->setColor($color);
|
||||||
return $this->boardMapper->update($board);
|
return $this->boardMapper->update($board);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function labels($boardId) {
|
public function addAcl($boardId, $type, $participant, $write, $invite, $manage) {
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public function addParticipant($boardId, $type, $participant, $write, $invite, $manage) {
|
|
||||||
$acl = new Acl();
|
$acl = new Acl();
|
||||||
$acl->setBoardId($boardId);
|
$acl->setBoardId($boardId);
|
||||||
$acl->setType($type);
|
$acl->setType($type);
|
||||||
@@ -94,6 +91,19 @@ class BoardService {
|
|||||||
$acl->setPermissionWrite($write);
|
$acl->setPermissionWrite($write);
|
||||||
$acl->setPermissionInvite($invite);
|
$acl->setPermissionInvite($invite);
|
||||||
$acl->setPermissionManage($manage);
|
$acl->setPermissionManage($manage);
|
||||||
return $this-$this->aclMapper->insert($acl);
|
return $this->aclMapper->insert($acl);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateAcl($id, $write, $invite, $manage) {
|
||||||
|
$acl = $this->aclMapper->find($id);
|
||||||
|
$acl->setPermissionWrite($write);
|
||||||
|
$acl->setPermissionInvite($invite);
|
||||||
|
$acl->setPermissionManage($manage);
|
||||||
|
return $this->aclMapper->update($acl);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function deleteAcl($id) {
|
||||||
|
$acl = $this->aclMapper->find($id);
|
||||||
|
return $this->aclMapper->delete($acl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
<div class="tabsContainer">
|
<div class="tabsContainer">
|
||||||
<div id="commentsTabView" class="tab commentsTabView" ng-if="status.boardtab==0 || !status.boardtab">
|
<div id="commentsTabView" class="tab commentsTabView" ng-if="status.boardtab==0 || !status.boardtab">
|
||||||
|
|
||||||
<ui-select ng-model="status.addSharee" theme="bootstrap" style="width:100%;" title="Choose a user to assign" placeholder="Assign users ..." on-select="addSharee(status.addSharee)">
|
<ui-select ng-model="status.addSharee" theme="bootstrap" style="width:100%;" title="Choose a user to assign" placeholder="Assign users ..." on-select="addAcl(status.addSharee)">
|
||||||
<ui-select-match placeholder="Select users...">
|
<ui-select-match placeholder="Select users...">
|
||||||
<span><i class="fa fa-{{$item.type}}"></i> {{ $item.participant }}</span>
|
<span><i class="fa fa-{{$item.type}}"></i> {{ $item.participant }}</span>
|
||||||
</ui-select-match>
|
</ui-select-match>
|
||||||
@@ -32,25 +32,25 @@
|
|||||||
</ui-select>
|
</ui-select>
|
||||||
|
|
||||||
<ul id="shareWithList" class="shareWithList">
|
<ul id="shareWithList" class="shareWithList">
|
||||||
<li ng-repeat="sharee in boardservice.getCurrent().acl track by $index">
|
<li ng-repeat="acl in boardservice.getCurrent().acl track by $index">
|
||||||
<span class="icon-loading-small" style="display:none;"></span>
|
<span class="icon-loading-small" style="display:none;"></span>
|
||||||
<div class="avatar " data-username="directmenu" style="height: 32px; width: 32px; color: rgb(255, 255, 255); font-weight: normal; text-align: center; line-height: 32px; font-size: 17.6px; background-color: rgb(195, 222, 124);">D</div>
|
<div class="avatar " data-username="directmenu" style="height: 32px; width: 32px; color: rgb(255, 255, 255); font-weight: normal; text-align: center; line-height: 32px; font-size: 17.6px; background-color: rgb(195, 222, 124);">D</div>
|
||||||
<span class="has-tooltip username">
|
<span class="has-tooltip username">
|
||||||
<i class="fa fa-{{sharee.type}}"></i>
|
<i class="fa fa-{{acl.type}}"></i>
|
||||||
{{ sharee.participant }}</span>
|
{{ acl.participant }}</span>
|
||||||
<span class="shareOption">
|
<span class="shareOption">
|
||||||
<input type="checkbox" name="edit" class="permissions checkbox" checked="checked" id=checkbox-permission-{{ $index }}">
|
<input type="checkbox" class="permissions checkbox" id="checkbox-permission-{{ acl.id }}-share" ng-model="acl.permissionInvite" ng-change="updateAcl(acl)" />
|
||||||
<label for="checkbox-permission-{{ $index }}">teilen</label>
|
<label for="checkbox-permission-{{ acl.id }}-share">teilen</label>
|
||||||
</span>
|
</span>
|
||||||
<span class="shareOption">
|
<span class="shareOption">
|
||||||
<input type="checkbox" name="edit" class="permissions checkbox" checked="checked" id=checkbox-permission-{{ $index }}">
|
<input type="checkbox" class="permissions checkbox" id="checkbox-permission-{{ acl.id }}-edit" ng-model="acl.permissionWrite" ng-change="updateAcl(acl)" />
|
||||||
<label for="checkbox-permission-{{ $index }}">bearbeiten</label>
|
<label for="checkbox-permission-{{ acl.id }}-edit">bearbeiten</label>
|
||||||
</span>
|
</span>
|
||||||
<span class="shareOption">
|
<span class="shareOption">
|
||||||
<input type="checkbox" name="edit" class="permissions checkbox" checked="checked" id=checkbox-permission-{{ $index }}">
|
<input type="checkbox" class="permissions checkbox" id="checkbox-permission-{{ acl.id }}-manage" ng-model="acl.permissionManage" ng-change="updateAcl(acl)" />
|
||||||
<label for="checkbox-permission-{{ $index }}">verwalten</label>
|
<label for="checkbox-permission-{{ acl.id }}-manage">verwalten</label>
|
||||||
</span>
|
</span>
|
||||||
<a ng-click="removeAcl(sharee)"><span class="icon icon-delete"> </span></a>
|
<a class="unshare" ng-click="deleteAcl(acl)"><span class="icon-loading-small hidden"></span><span class="icon icon-delete"></span><span class="hidden-visually">Freigabe aufheben</span></a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user