From 004bd05390bfa37e80de58c3f3f63ebb45a0a805 Mon Sep 17 00:00:00 2001 From: Ray Lee Date: Tue, 20 Mar 2012 19:06:29 -0700 Subject: [PATCH] CSPACE-4611: Initial pass at concept authority ui --- .../defaults/bundle/core-messages.properties | 4 + src/main/webapp/defaults/config/concept.json | 87 +++++++++++++ .../defaults/html/pages/ConceptTemplate.html | 47 +++++++ src/main/webapp/defaults/js/Demands.js | 117 ++++++++++++++++++ 4 files changed, 255 insertions(+) create mode 100644 src/main/webapp/defaults/config/concept.json create mode 100644 src/main/webapp/defaults/html/pages/ConceptTemplate.html diff --git a/src/main/webapp/defaults/bundle/core-messages.properties b/src/main/webapp/defaults/bundle/core-messages.properties index fca88633d..eec2612ee 100644 --- a/src/main/webapp/defaults/bundle/core-messages.properties +++ b/src/main/webapp/defaults/bundle/core-messages.properties @@ -400,6 +400,10 @@ location-updatedAtEndLabel: Latest location-editUsername: Record Modified By location-identificationNumberRequired: Please specify a Display Name +#concept +concept: Concept +concept-displayNameLabel: Display Name + #media media-fileInformationHeaderLabel: File Information media-mediaInformationLabel: Media Handling Information diff --git a/src/main/webapp/defaults/config/concept.json b/src/main/webapp/defaults/config/concept.json new file mode 100644 index 000000000..fc75c1499 --- /dev/null +++ b/src/main/webapp/defaults/config/concept.json @@ -0,0 +1,87 @@ +{ + "pageBuilder": { + "options": { + "pageType": "concept", + "selectors": { + "recordEditor": ".csc-concept-template" + }, + "components": { + "recordEditor": { + "type": "cspace.recordEditor", + "options": { + "applier": "{pageBuilder}.applier", + "uispec": "{pageBuilder}.options.uispec.recordEditor", + "model": "{pageBuilder}.model", + "fieldsToIgnore": ["csid", "fields.csid", "fields.shortIdentifier"], + "selectors": { + "hierarchy": ".csc-concept-hierarchy", + "identificationNumber": ".csc-concept-displayName" + }, + "selectorsToIgnore": ["recordTraverser", "requiredFields", "identificationNumber", "header", "togglable", "hierarchy"], + "components": { + "hierarchy": { + "type": "cspace.hierarchy", + "options": { + "uispec": "{pageBuilder}.options.uispec.hierarchy" + }, + "createOnEvent": "afterRender" + } + } + } + }, + "titleBar": { + "type": "cspace.titleBar", + "options": { + "fields": [ + "fields.displayName" + ] + } + }, + "header": { + "type": "cspace.header", + "options": { + "schema": "{pageBuilder}.schema", + "permissions": "{pageBuilder}.permissions" + } + }, + "tabs": { + "type": "cspace.tabs" + }, + "sidebar": { + "type": "cspace.sidebar" + } + } + } + }, + "pageBuilderIO": { + "options": { + "recordType": "concept", + "schema": [ + "recordlist", + "recordtypes", + "namespaces", + "concept" + ], + "pageSpec": { + "recordEditor": { + "href": "pages/ConceptTemplate.html", + "templateSelector": ".csc-concept-template", + "targetSelector": ".csc-record-edit-container" + } + }, + "components": { + "dataContext": { + "options": { + "baseUrl": { + "expander": { + "type": "fluid.deferredInvokeCall", + "func": "cspace.util.urlBuilder", + "args": "%tenant/%tname/vocabularies" + } + } + } + } + } + } + } +} diff --git a/src/main/webapp/defaults/html/pages/ConceptTemplate.html b/src/main/webapp/defaults/html/pages/ConceptTemplate.html new file mode 100644 index 000000000..9683b18fb --- /dev/null +++ b/src/main/webapp/defaults/html/pages/ConceptTemplate.html @@ -0,0 +1,47 @@ +
+
+
+
+ +
+ + + + + +
+
+
+
+ +
+ +
+
Concept Authority
+
+
+
+
+
*
+
+
+
+
+
+
+ +
+ + +
+
\ No newline at end of file diff --git a/src/main/webapp/defaults/js/Demands.js b/src/main/webapp/defaults/js/Demands.js index 9b298fbc7..c291500f2 100644 --- a/src/main/webapp/defaults/js/Demands.js +++ b/src/main/webapp/defaults/js/Demands.js @@ -94,6 +94,10 @@ https://source.collectionspace.org/collection-space/LICENSE.txt funcName: "cspace.recordList.selectNavigateVocab", args: ["{recordList}.model", "{recordList}.options", "{recordList}.options.urls.navigateLocal", "{permissionsResolver}", "{recordList}.dom"] }); + fluid.demands("select", ["cspace.recordList", "cspace.localData", "concept", "cspace.relatedRecordsList"], { + funcName: "cspace.recordList.selectNavigateVocab", + args: ["{recordList}.model", "{recordList}.options", "{recordList}.options.urls.navigateLocal", "{permissionsResolver}", "{recordList}.dom"] + }); // Report Producer fluid.demands("cspace.reportProducer.reportTypesSource", ["cspace.reportProducer", "cspace.localData"], { @@ -665,6 +669,26 @@ https://source.collectionspace.org/collection-space/LICENSE.txt } }, "{arguments}.1"] }); + fluid.demands("cspace.autocomplete", ["cspace.recordEditor", "concept", "cspace.hierarchy"], { + container: "{arguments}.0", + mergeAllOptions: [{ + invokers: { + handlePermissions: { + funcName: "cspace.autocomplete.handlePermissions", + args: ["{autocomplete}.applier", "{autocomplete}.model", "cspace.permissions.resolve", { + resolver: "{permissionsResolver}", + permission: "update" + }, "create", "{autocomplete}.autocompleteInput"] + } + }, + components: { + confirmation: "{confirmation}", + broaderDataSource: { + type: "cspace.autocomplete.broaderDataSource" + } + } + }, "{arguments}.1"] + }); fluid.demands("cspace.autocomplete", ["cspace.recordEditor", "person", "cspace.hierarchy"], { container: "{arguments}.0", mergeAllOptions: [{ @@ -1075,6 +1099,11 @@ https://source.collectionspace.org/collection-space/LICENSE.txt funcName: "cspace.recordEditor.removeWithCheck", args: "{recordEditor}" }); + + fluid.demands("remove", ["cspace.recordEditor", "concept"], { + funcName: "cspace.recordEditor.removeWithCheck", + args: "{recordEditor}" + }); fluid.demands("remove", "cspace.recordEditor", { funcName: "cspace.recordEditor.remove", @@ -1415,6 +1444,20 @@ https://source.collectionspace.org/collection-space/LICENSE.txt } } }); + fluid.demands("cspace.recordList", ["cspace.relatedRecordsList", "concept"], { + container: "{relatedRecordsList}.dom.recordListSelector", + options: { + columns: ["number", "summary", "sourceFieldName"], + strings: { + number: "{globalBundle}.messageBase.rl-rrl-number", + summary: "{globalBundle}.messageBase.rl-rrl-summary", + sourceFieldName: "{globalBundle}.messageBase.rl-rrl-sourceFieldName" + }, + model: { + items: "{relatedRecordsList}.model.refobjs" + } + } + }); fluid.demands("cspace.recordList", "cspace.relatedRecordsList", { container: "{relatedRecordsList}.dom.recordListSelector", options: { @@ -1470,6 +1513,10 @@ https://source.collectionspace.org/collection-space/LICENSE.txt funcName: "cspace.recordList.selectNavigateVocab", args: ["{recordList}.model", "{recordList}.options", "{recordList}.options.urls.navigate", "{permissionsResolver}", "{recordList}.dom"] }); + fluid.demands("select", ["cspace.recordList", "concept", "cspace.relatedRecordsList"], { + funcName: "cspace.recordList.selectNavigateVocab", + args: ["{recordList}.model", "{recordList}.options", "{recordList}.options.urls.navigate", "{permissionsResolver}", "{recordList}.dom"] + }); fluid.demands("cspace.recordList.thumbRenderer", "cspace.recordList", { container: "{arguments}.0", mergeAllOptions: [{ @@ -1666,6 +1713,16 @@ https://source.collectionspace.org/collection-space/LICENSE.txt } } }); + fluid.demands("relationManager", ["cspace.relatedRecordsList", "concept"], { + container: "{relatedRecordsList}.dom.relationManagerSelector", + options: { + components: { + showAddButton: { + type: "fluid.emptySubcomponent" + } + } + } + }); fluid.demands("relationManager", ["cspace.relatedRecordsList", "organization"], { container: "{relatedRecordsList}.dom.relationManagerSelector", options: { @@ -2211,6 +2268,53 @@ https://source.collectionspace.org/collection-space/LICENSE.txt } } }); + fluid.demands("sidebar", ["cspace.pageBuilder", "concept"], { + container: "{pageBuilder}.options.selectors.sidebar", + options: { + primaryRecordType: "{pageBuilder}.options.pageType", + recordApplier: "{pageBuilder}.applier", + recordModel: "{pageBuilder}.model", + relationsElPath: "refobjs", + components: { + cataloging: { + type: "fluid.emptySubcomponent" + }, + procedures: { + type: "fluid.emptySubcomponent" + }, + nonVocabularies: { + type: "cspace.relatedRecordsList", + createOnEvent: "afterRender", + options: { + primary: "{sidebar}.options.primaryRecordType", + related: "nonVocabularies", + applier: "{sidebar}.options.recordApplier", + model: "{sidebar}.options.recordModel", + relationsElPath: "{sidebar}.options.relationsElPath" + } + } + }, + selectors: { + relatedNonVocabularies: ".csc-related-nonVocabularies" + }, + selectorsToIgnore: ["report", "numOfTerms", "mediaSnapshot", "termsUsed", "relatedCataloging", "relatedProcedures", "header", "togglable", "relatedNonVocabularies"], + model: { + categories: [{ + expander: { + type: "fluid.deferredInvokeCall", + func: "cspace.util.modelBuilder", + args: { + callback: "cspace.sidebar.buildModel", + related: "nonVocabularies", + resolver: "{permissionsResolver}", + recordTypeManager: "{recordTypeManager}", + permission: "list" + } + } + }, undefined] + } + } + }); fluid.demands("cspace.sidebar.media", "cspace.sidebar", { container: "{arguments}.0", mergeAllOptions: [{ @@ -2300,6 +2404,19 @@ https://source.collectionspace.org/collection-space/LICENSE.txt } } }); + fluid.demands("tabsList", ["cspace.tabs", "concept"], { + container: "{tabs}.dom.tabsList", + options: { + model: { + tabs: { + primary: { + "name": "tablist-primary", + href: "#primaryTab" + } + } + } + } + }); fluid.demands("tabsList", ["cspace.tabs", "cspace.administration"], { container: "{tabs}.dom.tabsList", options: {