diff --git a/dependency/html/public/js/bootstrap-tree/bootstrap-tree.js b/dependency/html/public/js/bootstrap-tree/bootstrap-tree.js index d6bf8d4973bff62a138a7d2a013b5d8680d86e25..abcfccd569977bb8b09ba1abd6d266a2fc7f9856 100644 --- a/dependency/html/public/js/bootstrap-tree/bootstrap-tree.js +++ b/dependency/html/public/js/bootstrap-tree/bootstrap-tree.js @@ -66,8 +66,13 @@ var BootstrapTree = { element.appendTo(ul); - if (openNode || openNode == undefined) { - this.openNode(parent); + if (parent.is("li")) { + console.log(openNode); + if (openNode || openNode == undefined) { + this.openNode(parent); + } else { + element.hide(); + } } }, @@ -146,7 +151,6 @@ var BootstrapTree = { if (elementUl.find('li').length == 0) { var icon = elementUl.closest('li').find('.fa:first'); - console.log(elementUl); elementUl.remove(); icon.removeClass(icon.data('opened-icon') + ' ' + icon.data('closed-icon')) diff --git a/src/bundle/recordsManagement/Controller/archiveFilePlanPosition.php b/src/bundle/recordsManagement/Controller/archiveFilePlanPosition.php index 965537e4f697f913aa11a5ea2add279f6420c849..e42825a812a85a2aa17d4d9b00a2136c7c625f59 100644 --- a/src/bundle/recordsManagement/Controller/archiveFilePlanPosition.php +++ b/src/bundle/recordsManagement/Controller/archiveFilePlanPosition.php @@ -90,4 +90,32 @@ class archiveFilePlanPosition return $this->sdoFactory->update($archive, "recordsManagement/archiveFilePlanPosition"); } + + /** + * List an archive resources and children archives + * @param mixed $archive the archive identifier or the archive + * + * @return object The archiveContent + */ + public function listArchiveContents($archive) { + + if (is_string($archive)) { + $archiveId = $archive; + + $archive = new \stdClass(); + $archive->archiveId = $archiveId; + } + + // Resources + $digitalResourceController = \laabs::newController("digitalResource/digitalResource"); + $archive->digitalResources = $digitalResourceController->getResourcesByArchiveId($archive->archiveId); + + // ChildrenArchives + $childrenArchives = $this->sdoFactory->find("recordsManagement/archiveFilePlanPosition", "parentArchiveId='".(string) $archive->archiveId."'"); + foreach ($childrenArchives as $childArchive) { + $archive->childrenArchives[] = $this->listArchiveContents($childArchive); + } + + return $archive; + } } diff --git a/src/bundle/recordsManagement/archivesInterface.php b/src/bundle/recordsManagement/archivesInterface.php index b8fccf69747ef77330e7a2d6751438e282df4c72..c64e893446c7b9c178ef1c1f9b72fe6e49bfe4da 100644 --- a/src/bundle/recordsManagement/archivesInterface.php +++ b/src/bundle/recordsManagement/archivesInterface.php @@ -226,4 +226,11 @@ interface archivesInterface * */ public function readFolder($orgRegNumber, $folderId=null); + + /** + * List an archive resources and children archives + * + * @action recordsManagement/archiveFilePlanPosition/listArchiveContents + */ + public function readArchivecontents_archive_(); } diff --git a/src/presentation/maarchRM/Presenter/recordsManagement/welcome.php b/src/presentation/maarchRM/Presenter/recordsManagement/welcome.php index d63c05716459c97d27c67b002060b62971055d5a..d3956be2d63f3db16ca98b84f2676a12cd6d8bc4 100644 --- a/src/presentation/maarchRM/Presenter/recordsManagement/welcome.php +++ b/src/presentation/maarchRM/Presenter/recordsManagement/welcome.php @@ -202,8 +202,13 @@ class welcome */ public function archiveContent($archive) { - $this->json->digitalResources = $archive->digitalResources; - $this->json->childrenArchives = $archive->childrenArchives; + if (isset($archive->digitalResources)) { + $this->json->digitalResources = $archive->digitalResources; + } + + if (isset($archive->childrenArchives)) { + $this->json->childrenArchives = $archive->childrenArchives; + } return $this->json->save(); } diff --git a/src/presentation/maarchRM/Resources/view/dashboard/mainScreen/folder.html b/src/presentation/maarchRM/Resources/view/dashboard/mainScreen/folder.html index aa0288fbfc6de5e37dc1aa56b3026da7755e5e97..6213559df02aadd2645608c2fb89309ebd6432a6 100644 --- a/src/presentation/maarchRM/Resources/view/dashboard/mainScreen/folder.html +++ b/src/presentation/maarchRM/Resources/view/dashboard/mainScreen/folder.html @@ -57,7 +57,11 @@ .archive .tree-l li, .archive .tree-l li>span>span { padding: 0px; } - #folderContentList .archiveSelection, #folderContentList .archiveContentButton, .archive .tree-l li>span>span { + #folderContentList .archiveSelection, + #folderContentList .archiveContentButton, + #folderContentList a, + #folderContentList .bg-success, + #folderContentList .archive .tree-l li>span>span { cursor: pointer; } @@ -187,7 +191,7 @@ dataType : 'json', success : function (response) { archive.find('.archiveContent').removeClass('hide').find('ul').html(''); - Archive.showArchiveContent(archive.find('.archiveContent'), response.digitalResources, response.childrenArchives); + Archive.showArchiveContent(archive.find('.archiveContent'), response.digitalResources, response.childrenArchives, false); }, error : function (response) { gritter.show(response.responseText, false); @@ -209,36 +213,42 @@ }) }, - showArchiveContent: function(parent, digitalResources, childrenArchives) { - for(i=0; i < childrenArchives.length; i++) { - template = this.archiveContentTemplate.clone(); - - template.children('span') - .children('i') - .addClass('fa fa-archive') - .siblings('span') - .addClass('childrenArchive') - .attr('id', childrenArchives[i].archiveId) - .html(childrenArchives[i].archiveName); - - BootstrapTree.addNode(parent, template); - - this.showArchiveContent(template, childrenArchives[i].digitalResources, childrenArchives[i].childrenArchives); + showArchiveContent: function(parent, digitalResources, childrenArchives, hidden) { + if (digitalResources) { + for(i=0; i < digitalResources.length; i++) { + template = this.archiveContentTemplate.clone(); + + template.children('span') + .children('i') + .addClass('fa fa-file-o') + .siblings('span') + .addClass('document') + .data('json', digitalResources[i]) + .attr('id', digitalResources[i].resId) + .html(digitalResources[i].fileName); + + BootstrapTree.addNode(parent, template, hidden); + } } - for(i=0; i < digitalResources.length; i++) { - template = this.archiveContentTemplate.clone(); + if (childrenArchives) { + for(i=0; i < childrenArchives.length; i++) { + template = this.archiveContentTemplate.clone(); + + template.children('span') + .children('i') + .addClass('fa') + .data('closed-icon', 'fa-caret-right') + .data('opened-icon', 'fa-caret-down') + .siblings('span') + .addClass('childrenArchive') + .attr('id', childrenArchives[i].archiveId) + .html(childrenArchives[i].archiveName); - template.children('span') - .children('i') - .addClass('fa fa-file-o') - .siblings('span') - .addClass('document') - .data('json', digitalResources[i]) - .attr('id', digitalResources[i].resId) - .html(digitalResources[i].fileName); + BootstrapTree.addNode(parent, template, hidden); - BootstrapTree.addNode(parent, template); + this.showArchiveContent(template, childrenArchives[i].digitalResources, childrenArchives[i].childrenArchives, false); + } } } } @@ -284,6 +294,13 @@ Archive.getInfo(archiveId); }) + $('#folderPanel').on('click', function(e) { + if ($(e.target).css('cursor') != "pointer") { + ArchiveList.unselect(); + } + }) + + $('#folderContents').on('click', '.childrenArchive', function() { var parentArchive = $(this).closest('.archive'); var archiveId = $(this).attr('id'); diff --git a/src/presentation/maarchRM/UserStory/archiveRetrieval/retrieveInterface.php b/src/presentation/maarchRM/UserStory/archiveRetrieval/retrieveInterface.php index 5dced4e9c5f27444cefa8062166485a0039c3d59..8e2f13267e9b412cbefe6e48493a58ef02a37a78 100644 --- a/src/presentation/maarchRM/UserStory/archiveRetrieval/retrieveInterface.php +++ b/src/presentation/maarchRM/UserStory/archiveRetrieval/retrieveInterface.php @@ -157,12 +157,12 @@ interface retrieveInterface public function readArchive_archiveId_(); /** - * Retrieve archive info + * Retrieve archive contents * * @return recordsManagement/welcome/archiveContent - * @uses recordsManagement/archiveDescription/read_archiveId_ + * @uses recordsManagement/archives/readArchivecontents_archive_ */ - public function readArchivecontents_archiveId_(); + public function readArchivecontents_archive_(); /** * Retrieve archive info