From 287e7ef2216809e73c2f7320d91345f3a2a0127f Mon Sep 17 00:00:00 2001
From: Dickson Law <dickson.law@utoronto.ca>
Date: Mon, 20 Nov 2017 10:31:46 -0500
Subject: [PATCH] Add back 1-level collection support for collectionUri on the
 classic manifests panel

---
 js/src/viewer/manifestsPanel.js    | 11 ++++++++++
 spec/viewer/manifestsPanel.test.js | 33 ++++++++++++++++++++++++++++++
 2 files changed, 44 insertions(+)

diff --git a/js/src/viewer/manifestsPanel.js b/js/src/viewer/manifestsPanel.js
index 8fa07eddd..4c7455108 100644
--- a/js/src/viewer/manifestsPanel.js
+++ b/js/src/viewer/manifestsPanel.js
@@ -55,6 +55,10 @@
           _this.eventEmitter.subscribe('manifestReceived', function(event, newManifest) {
             _this.onManifestReceived(event, newManifest);
           });
+          
+          _this.eventEmitter.subscribe('collectionReceived', function(event, newCollection) {
+            _this.onCollectionReceived(event, newCollection);
+          });
         },
 
         bindEvents: function() {
@@ -139,6 +143,13 @@
             appendTo: _this.manifestListElement }));
           _this.element.find('#manifest-search').keyup();
         },
+        
+        onCollectionReceived: function(event, newCollection) {
+          var _this = this;
+          jQuery.each(newCollection.getManifestUris(), function(_, v) {
+            _this.eventEmitter.publish('ADD_MANIFEST_FROM_URL', [v, newCollection.location]);
+          });
+        },
 
         template: $.Handlebars.compile([
           '<div id="manifest-select-menu">',
diff --git a/spec/viewer/manifestsPanel.test.js b/spec/viewer/manifestsPanel.test.js
index ecf507197..cee51338b 100644
--- a/spec/viewer/manifestsPanel.test.js
+++ b/spec/viewer/manifestsPanel.test.js
@@ -17,12 +17,21 @@ describe('ManifestsPanel', function() {
 
   it('should listen for actions', function() {
     var manifest = new Mirador.Manifest(null, 'Dummy Location', this.dummyManifestContent);
+    var collection = new Mirador.Collection(null, 'Dummy Location', {
+      "@context": "http://iiif.io/api/presentation/2/context.json",
+      "@id": "http://example.org/iiif/collection/top",
+      "@type": "sc:Collection",
+      "label": "Top Level Collection for Example Organization"
+    });
     spyOn(this.panel, 'onPanelVisible');
     spyOn(this.panel, 'onManifestReceived');
+    spyOn(this.panel, 'onCollectionReceived');
     this.eventEmitter.publish('manifestsPanelVisible.set');
     this.eventEmitter.publish('manifestReceived', manifest);
+    this.eventEmitter.publish('collectionReceived', collection, "http://example.org/iiif/collection/top")
     expect(this.panel.onPanelVisible).toHaveBeenCalled();
     expect(this.panel.onManifestReceived).toHaveBeenCalled();
+    expect(this.panel.onCollectionReceived).toHaveBeenCalled();
   });
   
   it('should bind events', function() {
@@ -121,4 +130,28 @@ describe('ManifestsPanel', function() {
     expect(this.panel.manifestListItems.length).toBe(1);
   });
 
+  it('should receive a collection and grab its manifests', function() {
+    spyOn(this.eventEmitter, 'publish');
+    var collection = new Mirador.Collection(null, 'Digital Library @ Villanova', {
+      "@context": "http://iiif.io/api/presentation/2/context.json",
+      "@id": "http://example.org/iiif/collection/top",
+      "@type": "sc:Collection",
+      "label": "Top Level Collection for Example Organization",
+      "manifests": [
+        {
+          "label": "The 'Adventurer's Oaths' from the Cardboard Drama of Esmeralda Grande",
+          "@id": "https://digital.library.villanova.edu/Item/vudl:2176/Manifest",
+          "@type": "sc:Manifest"
+        },
+        {
+          "label": "The Adventures of Seumas Beg The Visit From Abroad",
+          "@id": "https://digital.library.villanova.edu/Item/vudl:2112/Manifest",
+          "@type": "sc:Manifest"
+        }
+      ]
+    });
+    this.panel.onCollectionReceived(null, collection);
+    expect(this.eventEmitter.publish).toHaveBeenCalledWith('ADD_MANIFEST_FROM_URL', ["https://digital.library.villanova.edu/Item/vudl:2176/Manifest", "Digital Library @ Villanova"]);
+    expect(this.eventEmitter.publish).toHaveBeenCalledWith('ADD_MANIFEST_FROM_URL', ["https://digital.library.villanova.edu/Item/vudl:2112/Manifest", "Digital Library @ Villanova"]);
+  })
 });
\ No newline at end of file
-- 
GitLab