Skip to content

Commit a8be77b

Browse files
committed
Progress commit for #3455
1 parent 0cab471 commit a8be77b

File tree

3 files changed

+82
-27
lines changed

3 files changed

+82
-27
lines changed

grails-app/assets/javascripts/admin.js

+38-1
Original file line numberDiff line numberDiff line change
@@ -284,4 +284,41 @@ var ProjectImportViewModel = function (config) {
284284
});
285285
setTimeout(self.showProgress, 2000);
286286
}
287-
};
287+
};
288+
289+
EditHelpDocumentsViewModel = function(hubId, categories, documents) {
290+
let self = this;
291+
var options = {
292+
roles: ['helpDocument'],
293+
owner: {
294+
hubId:hubId
295+
},
296+
documentDefaults: {
297+
role: 'helpDocument',
298+
public: true
299+
},
300+
modalSelector: '#attachDocument',
301+
documentUpdateUrl: fcConfig.documentUpdateUrl,
302+
documentDeleteUrl: fcConfig.documentDeleteUrl,
303+
imageLocation: fcConfig.imageLocation
304+
};
305+
self.selectedCategory = ko.observable();
306+
self.documentCategories = ko.observableArray(categories);
307+
self.newCategoryName = ko.observable();
308+
309+
self.newCategory = function() {
310+
let category = self.newCategoryName();
311+
self.documentCategories.push(category);
312+
self.selectedCategory(category);
313+
self.newCategoryName(null);
314+
}
315+
self.selectedCategory.subscribe(function (category) {
316+
options.documentDefaults.labels = [category];
317+
});
318+
319+
_.extend(self, new EditableDocumentsViewModel(options));
320+
321+
documentRoles = [{id:'helpDocument', name:'Help Document', isPublicRole:true}];
322+
self.loadDocuments(documents);
323+
324+
}

grails-app/controllers/au/org/ala/merit/HomeController.groovy

+2-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ class HomeController {
5050
@PreAuthorise(accessLevel = 'siteAdmin')
5151
def editHelpDocuments(String category) {
5252
List documents = documentService.findAllHelpDocuments(category)
53-
[documents:documents, category:category, hubId:SettingService.hubConfig.hubId]
53+
List categories = documents?.collect{it.labels}.flatten()?.findAll()?.unique()
54+
[documents:documents, category:category, hubId:SettingService.hubConfig.hubId, categories:categories]
5455
}
5556

5657
/**

grails-app/views/home/editHelpDocuments.gsp

+42-25
Original file line numberDiff line numberDiff line change
@@ -18,39 +18,56 @@
1818
</head>
1919
<body>
2020
<div id="wrapper" class="${containerType}">
21-
<g:render template="/admin/editDocuments" model="${[excludeReport:true, documents:documents, containerId:'help-documents', useExistingModel:false, filterBy:'all']}"/>
21+
<section aria-label="breadcrumb">
22+
<ol class="breadcrumb">
23+
<li class="breadcrumb-item"><g:link controller="home">Home</g:link></li>
24+
<li class="breadcrumb-item"><g:link controller="admin">Admin</g:link></li>
25+
<li class="breadcrumb-item">Edit help documents</li>
26+
</ol>
27+
</section>
28+
<h3>Edit Help Documents</h3>
29+
<p>Create a new category of help documents by entering the category name and pressing Add new category below</p>
30+
<form class="form form-inline">
31+
<input type="text" data-bind="value: newCategoryName" class="form-control col-8" placeholder="Name of new category"/>
32+
<button class="btn btn-success" data-bind="enable: newCategoryName, click:newCategory">Add new category</button>
33+
</form>
34+
35+
<br/>
36+
<p>Add a new help document in the selected category by selecting the category then pressing New help document in category below</p>
37+
<form class="form form-inline">
38+
39+
<select class="form-control col-8" id="document-category" name="documentCategory" data-bind="options: documentCategories, value: selectedCategory, optionsCaption: 'Select a category'"></select>
40+
<button class="btn btn-info" id="doAttach" data-bind="enable:selectedCategory, click:attachDocument">New help document in category</button>
41+
</form>
42+
43+
44+
<hr/>
45+
<p>Help documents</p>
46+
<div id="edit-documents" class="pill-pane tab-pane">
47+
<div class="row">
48+
<div class="col-sm-12 ml-3 ">
49+
<g:render template="/shared/editDocuments"
50+
model="[useExistingModel: true,editable:true, filterBy: 'all', ignore: '', imageUrl:assetPath(src:'filetypes'),containerId:'adminDocumentList']"/>
51+
</div>
52+
</div>
53+
%{--The modal view containing the contents for a modal dialog used to attach a document--}%
54+
<g:render template="/shared/attachDocument"/>
55+
56+
</div>
2257
</div>
2358
<asset:javascript src="common-bs4.js"/>
2459
<asset:javascript src="document.js"/>
2560
<asset:javascript src="file-upload-manifest.js"/>
61+
<asset:javascript src="admin.js"/>
2662

2763
<asset:script>
2864

29-
var documents = <fc:modelAsJavascript model="${documents}"/>;
65+
const documents = <fc:modelAsJavascript model="${documents}"/>;
66+
const categories = <fc:modelAsJavascript model="${categories}"/>;
67+
const hubId = '${hubId}';
3068
$(function () {
31-
32-
33-
var owner = {hubId:'${hubId}'};
34-
var category = '${category}';
35-
documentRoles = [{id:'helpDocument', name:'Help Document', isPublicRole:true}];
36-
var options = {
37-
roles: ['helpDocument'],
38-
owner: owner,
39-
documentDefaults: {
40-
role: 'helpDocument',
41-
public: true,
42-
labels:[category]
43-
},
44-
modalSelector: '#attachDocument',
45-
documentUpdateUrl: fcConfig.documentUpdateUrl,
46-
documentDeleteUrl: fcConfig.documentDeleteUrl,
47-
imageLocation: fcConfig.imageLocation
48-
};
49-
var documentsViewModel = new EditableDocumentsViewModel(options);
50-
documentsViewModel.loadDocuments(documents);
51-
ko.applyBindings(documentsViewModel, document.getElementById('edit-documents'));
52-
53-
69+
let viewModel = new EditHelpDocumentsViewModel(hubId, categories, documents);
70+
ko.applyBindings(viewModel, document.getElementById('wrapper'));
5471
});
5572

5673
</asset:script>

0 commit comments

Comments
 (0)