Page tree

The Portal is an interface to search and display Registry Objects from the RDA Registry, with the ability to display links and relationships between registry objects and external resources. The Portal has many additional functionality to the RDA Registry that is independent and is designed to be decoupled with the RDA Registry, so that it can serve a different registry system, provided the interface is relatively the same

Module / Plugin architecture

The portal (like the registry counterpart) can be extended with portal-specific modules or apps. The portal modules are designed to be plug and play and enable contribution by third parties. For example, the profile module, released along with Release 15 enables Portal to use the registry's authentication system with additional social logins capability to enable a user profile section. This profile module comes with it's own controllers and model, so that it can be removed or extended easily without major changes to the Portal itself.

Some notable modules

  • The registry_object module that belongs to the portal, located at applications/portal/registry_object is a Portal module that viewing and searching reading registry objects from the RDA Registry and the SOLR index.
  • The group module enables Contributor Pages viewing and editing via a CMS
  • The theme_page module enables viewing and creating Theme Pages via a CMS
  • The profile module enables logins to the Portal and MyRDA functionality

Viewing a registry object

The portal will use all of the information available in the Registry Object API in order to display the registry object accordingly. For more information on how to write a new registry object handler, please refer to the guide.

The portal default display and search model is registry_object, this is defined in applications/portal/core/config/config.php. For more information on how to use a different display and search model (that is used to customise the Portal for different type of data), please refer to the guide.

The portal registry_object model has an internal registry object called _ro.php (applications/portal/registry_object/models/_ro.php) that is encapsulated by the registry_objects model (applications/portal/registry_object/models/registry_objects.php).

Everytime an object of _ro is initialised, portal requests the registry for all the information regarding this given registry object id and build an object of its own.

For eg

$ro = new_ro(12765); //this will instantiate a new object with all the available resource from the registry object API
echo $ro->core[’title’]; //this will return the title for the registry object
var_dump($ro->descriptions); //this will give us a list of all the descriptions and their type for this registry object

The process is simplified with the registry_objects model. We can simply instantiate a new object by

$this->load->model('registry_objects', 'ro');
$ro = $this->ro->getByID(12765); //returns the _ro object with ID 12765
$ro = $this->ro->getByKey(‘abc’); //returns the _ro object by key
$ro = $this->ro->getBySlug(‘fish’); //returns the _ro object by the URL friendly slug

Searching for registry objects

The portal make extensive use of the solr.php library located at engine/libraries/Solr.php for searching. The portal delivers a search page that is powered by AJAX and the AngularJS framework to interact with SOLR and deliver search results.

Example: a simple search

$this->load->library('solr'); # loading the SOLR library for use
$this->solr->setOpt('q', 'fish'); # setting the parameter of q to fish
$result = $this->solr->executeSearch(); # $result now contains the SOLR search result of fish
 

Example: a simple facet

$this->load->library('solr');
$this->solr->setOpt('q', 'fish');
$this->setFacetOpt('field', 'class'); # translates to facet.field=class in SOLR
$this->setFacetOpt('field', 'type'); # translates to facet.field=type in SOLR
$result = $this->solr->executeSearch(); # $result now contains the SOLR search result of fish
$facets = $this->solr->getFacet(); # $facets now contains the facet_counts return value of the SOLR search, this will contain both class facet and type facet
$class_facets = $this->solr->getFacetResult('class'); # $class_facets will only contain the facet counts for the class facet

Searching and Facetting functionality is made available via the SOLR indexed fields. The indexed fields are found at the our solr schema file, the latest is located at etc/misc/solrschema_r15.xml

Portal Templates

A Template is used to define the layout of portal pages and the global look and feel. Currently, ANDS offers 1 pre-made template dubbed omega which is available at applications/portal/templates.

Custom templates can be created and used by updating the template configuration option at applications/portal/core/config/config.php

$config['default_template'] = 'omega';

The omega template makes heavy use of the Blade Engine to render the page, however custom templates can utilise any rendering engine. For example, CodeIgniter's own view or template parser could be utilised to achieve a similar effect to the omega  template.

Interaction with the RDA Registry

The Portal viewing and displaying of registry object relies heavily on the use of an API exposed by the RDA registry. For more information on this interaction, refer to our Portal & Registry Concept page.

The Portal can be extended to not rely on this RDA Registry API and can display an entirely different metadata structure. For more information on how to do this, refer to our tutorial.