This commit is contained in:
Michele Artini 2022-11-24 14:17:50 +01:00
parent d5fb85d933
commit 9e05516295
4 changed files with 69 additions and 30 deletions

View File

@ -38,11 +38,10 @@ public class ResourcesRestController {
public SimpleResource newResource(@RequestParam final String name,
@RequestParam final String type,
@RequestParam(required = false, defaultValue = "") final String description,
@RequestParam(required = false, defaultValue = MediaType.APPLICATION_XML_VALUE) final String ctype,
@RequestParam final String content)
throws InformationServiceException {
return service.saveNewResource(name, type, description, ctype, content);
return service.saveNewResource(name, type, description, content);
}
@DeleteMapping("/{id}")

View File

@ -54,7 +54,6 @@ public class SimpleResourceService {
public SimpleResource saveNewResource(final String name,
final String type,
final String description,
final String ctype,
final String content) {
final Date now = new Date();

View File

@ -14,32 +14,43 @@ app.controller('resourcesController', function($scope, $http) {
});
};
$scope.prepareNewRes = function() {
$scope.prepareNewResource = function() {
$scope.tmpRes = {
'id' : '',
'name' : '',
'description' : ''
'description' : '',
'content' : ''
};
}
$scope.prepareEditMetadata = function(res) {
$scope.tmpRes = angular.copy(res);
$scope.prepareEditMetadata = function(r) {
$scope.tmpRes = angular.copy(r);
}
$scope.prepareEditContent = function(res) {
$scope.tmpRes = angular.copy(res);
$scope.prepareEditContent = function(r) {
$scope.tmpRes = angular.copy(r);
$scope.tmpContent = "loading...";
$http.get('./api/resources/' + res.id + '/content?' + $.now()).then(function successCallback(res) {
$scope.tmpContent = res.data;
}, function errorCallback(res) {
$http.get('./api/resources/' + r.id + '/content?' + $.now()).then(function successCallback(res) {
$scope.tmpContent = res.data;
}, function errorCallback(res) {
alert('ERROR: ' + res.data.message);
});
}
$scope.prepareUploadContent = function(res) {
$scope.tmpRes = angular.copy(res);
$scope.createNewResource = function(r) {
$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded; charset=UTF-8";
$http.post('./api/resources/?' + $.now(), $.param({
'name' : r.name,
'type' : $scope.type,
'description' : r.description,
'content' : r.content
})).then(function successCallback(res) {
alert("Resource saved");
$scope.reload();
}, function errorCallback(res) {
alert('ERROR: ' + res.data.message);
});
}
$scope.saveMetadata = function(id, md) {
$http.defaults.headers.post["Content-Type"] = "application/json;charset=UTF-8";
$http.post('./api/resources/' + id + '/metadata?' + $.now(), md).then(function successCallback(res) {
@ -61,12 +72,6 @@ app.controller('resourcesController', function($scope, $http) {
});
};
$scope.uploadContent = function(id, content) {
// TODO
};
$scope.deleteResource = function(r) {
if (confirm("Are you sure ?")) {
$http.delete('./api/resources/' + encodeURIComponent(r.id) + '?' + $.now()).then(function successCallback(res) {

View File

@ -14,8 +14,11 @@
<nav th:replace="fragments/mainParts.html :: mainMenu(${type.name})"></nav>
<div class="container-fluid">
<div class="row">
<div class="row">
<div class="col">
<p>
<button class="btn btn-sm btn-primary" data-toggle="modal" data-target="#newResourceModal" ng-click="prepareNewResource()">create a new resource</button>
</p>
<p ng-show="resources.length > 0">
<input type="text" class="form-control form-control-sm" ng-model="resFilter" placeholder="Filter..."/>
</p>
@ -35,7 +38,7 @@
</p>
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#editMetadataModal" ng-click="prepareEditMetadata(r)">edit metadata</button>
<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#editContentModal" ng-click="prepareEditContent(r)">edit content</button>
<a href="./api/resources/{{r.id}}/content" class="btn btn-sm btn-primary" target="_blank">raw content</a>
<a href="./api/resources/{{r.id}}/content" class="btn btn-sm btn-success" target="_blank">raw content</a>
<button type="button" class="btn btn-sm btn-danger" ng-click="deleteResource(r)">delete</button>
</div>
</div>
@ -50,8 +53,7 @@
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" ng-if="mode == 'new'">New resource</h4>
<h4 class="modal-title" ng-if="mode == 'edit'">Edit resource</h4>
<h4 class="modal-title">Edit metadata</h4>
<button type="button" class="close" data-dismiss="modal">&times;</button>
</div>
<form>
@ -70,7 +72,7 @@
</div>
<div class="form-group">
<label>Description</label>
<textarea class="form-control" ng-model="tmpRes.description"></textarea>
<textarea class="form-control" ng-model="tmpRes.description" rows="3"></textarea>
</div>
</div>
<div class="modal-footer">
@ -82,6 +84,37 @@
</div>
</div>
<div class="modal fade" tabindex="-1" id="newResourceModal">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">New resource: <span th:text="${type.id}"></span></h4>
<button type="button" class="close" data-dismiss="modal">&times;</button>
</div>
<form>
<div class="modal-body">
<div class="form-group">
<label>Name</label>
<input type="text" class="form-control" ng-model="tmpRes.name" />
</div>
<div class="form-group">
<label>Description</label>
<textarea class="form-control" ng-model="tmpRes.description"></textarea>
</div>
<div class="form-group">
<label>Content (<span th:text="${type.contentType}"></span>)</label>
<textarea class="form-control" ng-model="tmpRes.content" rows="25"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-sm btn-primary" data-dismiss="modal" ng-click="createNewResource(tmpRes)" ng-disabled="!tmpRes.name || !tmpRes.content">Submit</button>
</div>
</form>
</div>
</div>
</div>
<div class="modal fade" tabindex="-1" id="editContentModal">
<div class="modal-dialog modal-lg">
<div class="modal-content">
@ -91,7 +124,10 @@
</div>
<form>
<div class="modal-body">
<textarea class="form-control small" ng-model="tmpContent" rows="25"></textarea>
<div class="form-group">
<label th:text="${type.contentType}"></label>
<textarea class="form-control small" ng-model="tmpContent" rows="25"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal">Close</button>