Home » Spotlight » PubFactory Updates

PubFactory versions 110-113 were released in Q4 2018. The following highlights the most interesting enhancements included in these releases. For more detailed information, see the release notes and platform documentation. I’ve added the version number indicating when each enhancement was added to the platform to make it easier to know whether your current LIVE version includes the enhancement or not.

Set default tab from Configurable Layout editor (v110)

Originally we were setting component priority via hardcoded logic in some configurable widgets. However, when you put configurable widgets into a container, they no longer have priority, so there is no way to control your default tab.

To address this, we added a way to set this priority explicitly in the layout engine.

Container Block Settings

Support for “intro” articles in JATSPipe (v110)

We added the ability for an article to be an “intro” article to a collection of other articles. These are loaded as ONLINE_ARTICLE documents, and do not have issues or volumes, nor do they appear on any journal or issue documents. To load an article as an intro, make sure it contains a custom-meta element with ifp:collection-intro = true.

Support for intro articles in JATSPipe

To associate this intro article with a group of articles, tag them all with the same content set.

TypeAhead Improvements (v110)

PubFactory’s TypeAhead now replaces most special characters (excluding apostrophes and hyphens) with white space to avoid situations where punctuation affects what suggestions are available.

PubFactory now allows custom limits to be set for the number of suggestions that should be returned. The default for this value is 5.

Additionally, PubFactory now contains a sort option to allow custom sort functions to be set for the suggestions. This defaults to the current database order. The only other sort currently available is sortByLastWord, which is useful in the case where all the suggestions are names of people.

Institutional Off-Site Access (PF v110, AMS 94)

The AMS 94 release has support for institutional off-site access. By default, this feature is completely disabled and will not appear in the UI.

If enabled, there will be a new menu option under “Settings > Institutional Off-Site Access”. In this screen, an administrator can enable or disable the system globally as well as set account defaults for:

  • whether off-site access is enabled by default
  • off-site access maximum duration
  • off-site access default duration

When enabled for an account, any user that is IP authenticated for that account will receive an off-site access token. This token will then be used to authenticate as that same account once the user leaves the IP range of the account.

The off-site token is an encrypted token containing the following:

  • principal ID for the account
  • creation date
  • expiration date
  • user agent

Front-end Messaging of Institutional Off-Site Access

A user coming to the site for the first time (no off-site access cookie present)
When a user is IP authenticated and off-site access is activated, the user will see a popup in the right-hand corner of the screen informing the user about the off-site access program. The popup contains a link to a static page which provides more information.

screenshot of message

This message will auto-dismiss after 10 seconds. All text in this popup is editable via the text message editor in the Management Portal.

The static page accessed via the link is automatically generated with publisher-provided text for each SiteGen site.

A user coming to the site and renewing their off-site access (off-site access cookie present or present but expired)
When a user who has already been granted off-site access returns to the site, they will receive a message that their off-site access has been granted and/or extended.

screenshot of message

This message will auto-dismiss after 10 seconds, and will appear no more than once a day. All text in this popup is editable via the text message editor in the Management Portal.

The static page accessed via the link is automatically generated with publisher-provided text for each SiteGen site.

Mobile Considerations

At the mobile breakpoint, the popup is replaced with a bottom banner. The text is simplified so that everything takes up less space.

mobile screenshot

Discount Code Submission Via WebShop (v111)

The PubFactory WebShop now has the ability to accept a single discount code, which is validated by the platform, and if active, applied in the Shopping Cart. The discount code submitted should equal a ‘value’ of a given Discount Token in the AMX, it should not be expired, and should be be applicable to at least one item in the user’s Shopping Cart.

Discount Codes are only available to clients who have the Shopping Cart enabled, which, at this moment, are only clients integrated with Klopotek. It is important to note that PubFactory does not currently do any of the actual discount calculations. Instead, the discount amount is sent to Klopotek which then returns back to PubFactory the calculated cost of the current order. Consequently, discount functionality needs to be properly set up in Klopotek for the functionality to work correctly in PubFactory.

When a discount code is successfully applied in the user’s Shopping Cart, each item will be marked with notification that X% discount can be applied upon checkout. It is only when the user arrives at the Order Review page that the total currency values are updated with the applied discount, and presented to the user for final confirmation. If the discount code expired between original application and final order placement, the user will be notified and they will need to remove the discount code.

To create Discount Tokens in the AMS, please see the PubFactory v103 release notes and AMS documentation.

NOTE: If shopping cart and/or discount code capabilities are of interest and you are not a Klopotek client, please consult with your Project Manager about enhancing the standard PubFactory PayPal support.

Updated PubMed Deposit & Linkout Pipelines (v111)

In this version of PubFactory, we have completely rewritten the deposit pipeline for PubMed.

This version has many features the original pipeline did not have, such as:

  1. The ability to query PubMed for the deposit rules for each accepted journal.
  2. The ability to replace content at PubMed when the content is reloaded in PubFactory. We check newly reloaded content and compare it to PubMed. If it is different or the despot that PubFactory builds is different from PubMed’s (which could happen if new capabilities are added to the pipeline), we redeposit the content with PubMed.
  3. The ability to add a PMID to content that does not already have this value provided.
  4. The ability to update LinkOut while also doing PubMed Deposits.
  5. A separate LinkOut only point-and-shoot pipeline.

This pipeline does not care what directory/items you choose when firing. It will figure out the articles to deposit by using a search, and self-populate its work queue.

In most cases, we will set this up as a recurring job that will run daily.

PubMed LinkOut pipeline

This pipeline is a point-and-shoot pipeline and will only deposit LinkOut data for the articles in the directory/selection you choose.

This should not be set up as a daily or automatic job because the PubMed Deposit pipe will handle doing the LinkOut for you in cases where new content is deposited to PubMed. It should be used to set up LinkOuts for articles that didn’t get the LinkOutsset up on the original deposit.

Unconsolidated Login options on login page (v111)

We have unconsolidated the login box and login form.

Both are still supported in PubFactory, and the login form now has the same SAML2 support that the login form has had.

The platform needs to support the following user paths:

  • Login via third party or separate page: this includes Athens, Shibboleth, SAML, oAuth, and token redemption.
  • Login directly on page: this includes AMS/Personalization login, library card, and SAMS.
  • Sign up / Forgot Password: switch to a related app feature in order to use a login.

Based on the configurations that have been set for the installation, the following interfaces are supported:

  • “Login via” is a set of buttons that display on the top of the login page.
  • Sign up is a label: “Don’t have an account?”, and a Sign Up button.
  • “Login direct” is a set of fields that display after “login via” buttons.
  • “Forgot your password” is link text following “login direct” form.

PubFactory has always had a full book download link for PDFs but the equivalent link has not existed for ePubs. Now the /ePub page handles the ePub downloads. The ePub page checks to determine if the ePub is available, based on the ePub ISBN, using the /{isbn}/{isbn}.epub naming convention.

The ePub ISBN lookup is disabled by default, but can be enabled as part of the site configuration.

User-Editable Disallows for robots.txt (v112)

It is now possible for Management Portal users to enter a series of “Disallow” directives which will be added to the global user agent section of the robots.txt file. This allows the explicit listing of pages that should not be indexed by bots.

This is located in the Management Portal under “Sites > [sitename] > URLs”:

robot disallows

For example, if the following is entered in the text area for a site:

enter text

The resulting robots.txt file for that site would look like:


Additional usage events being logged from configurable content (v112)

As part of the COUNTER 5 updates, we have updated the code so that configurable components within a page will now send the appropriate COUNTER 5 events. This means that now a single page can send multiple events at the same time.

Additionally, there are now a number of new REST end points at /rest/log. There are multiple ways to see events that are being logged.

For instance, components that have events to be sent now have a respective COUNTER data div:

components that have events to be sent now have a respective COUNTER data div

This event will only fire if the div is in a visible container. For example, if PDF and Full text tabs are on a page, when tabs are switched, a check is made to find all visible divs with the class “counterData”. The javascript will then use the datatype to work out which event to send to the respective COUNTER data REST end point.

The second way to view the events on a page is to add a query parameter of:

add a query parameter of showusagelogging=true

This existed before but has been extended to support the multiple events that can be fired on the page.

usage logging request attributes

There are now two additional sections, one of which shows the possible events that could be logged from the page. The other is a dynamic section which shows the events that have been sent and whether they have failed or not.

shows events

These should assist with debugging events that are being sent as well as those that are being withheld.

NOTE: This does NOT include all the events that may be sent from a page. One example: when PDFs are displayed/downloaded, the /downloadpdf URL is selected. This action sends a usage logging event from the server side when it is first displayed. The second time the user switches to the tab with a PDF, the front end event will be sent. A second example is that TITLE events are sent from the server side.

Content Licensing Mapping (v112)

A mechanism is needed to map content licenses to PubFactory’s the internal licensing scheme so that licenses can be applied correctly. In the past, this was done through configuration during platform setup. With the advent of COUNTER 5, we needed to be more flexible in how licenses are managed.

Therefore, we have now added an interface in the Management Portal where all of the licenses from the content can be viewed, and their mapping to PubFactory license types can be reviewed and updated as needed.

content licenses

The licensing interface is available under the Data Management tab.

licensing interface

The UI also summarizes how many of each license types exist within the repository.

More by Contributors Widget (v113)

A new configurable layout block for content pages, “More by Contributors”, was added to show the latest documents edited or authored by the current documents’ authors and/or editors.

It has two configurations:

  1. Document types: the values to be searched when fetching the list of documents edited or authored by someone.
  2. Maximum number of links per contributor. Max value: 10. Default value: 5.

This requires that contributors have an ID so that they can be disambiguated properly. ORCiD or another unique id scheme is fine.

Publisher Taxonomy (v113)

Support has been added for a hierarchical publisher taxonomy. Top level nodes are displayed. Children of top level nodes will be rolled up under the top level node by summing the results from the parent and all child codes when displaying in the search facet.

Publisher name and location are used in three main places on PubFactory:

  • Article/chapter metadata
  • Google Scholar metadata
  • Generated article/chapter citation

The rules for where PubFactory finds the publisher information are as follows:

  1. If there is a publisher taxonomy defined and the publisher id in the article/chapter references a node in the taxonomy, use the information from the taxonomy.
  2. If there is no taxonomy or the content does not reference it, use the publisher name as defined in the content.
  3. If the content does not specify publisher name, then use the appropriate text labels.

The rules for where PubFactory finds the publisher location information are as follows:

  1. If there is a publisher taxonomy defined and the publisher id in the article/chapter references a node in the taxonomy, and the taxonomy includes publisher location information, use the information from the taxonomy.
  2. Otherwise, use the appropriate text label cite.publisher-city-country.

“Lang” Param in URLs and alternate language tags for canonical URLs (v113)

This enhancement improves the way site pages and languages interact, and has value for sites that support multiple languages. The main impact of this feature is that pages with multiple language versions will now have different URLs for the different versions. This is an SEO improvement.

Adding the query param “lang=” to a URL will now?if the isoCode corresponds to a site language?update the session language. Using the language selector redirects to the language-specific version of the page, using the lang param. The canonical URL for a page includes a language param, based on the pre-existing priority of session, user, browser, default, English.

When you visit the canonical URL for a page (and language), there are now additional link tags under the canonical tag for each site language the page is meaningfully offered in (or the default site language, if no meaningful site languages are found for the page), and a default “x-default” language set to:

  1. the only available site language for the page
  2. the default language if no languages are meaningfully offered
  3. the default language where multiple languages including the default are offered
  4. not set if multiple languages, excluding the default, are offered (this allows us to defer to the user’s search engine for ideal page swap selection when none of their language preferences match our offered languages for the page)

Finer control of access icon display (v113)

The platform now gives much finer control for whether or not to display the various access states that are possible. The access icon widget now allows the user to control which states will display an icon:

access icon widget