Plugin: Acalog (Basic)

Purpose

Use this plugin to index a set of programs/courses from the Modern Campus Acalog API.

This plugin uses the Acalog API to retrieve a list of programs/courses and generate a list of URLs that are added to a web data source’s start URLs.

Although the generated start URLs can be added to any web data source, we recommend using a separate dedicated web data source for indexing your Acalog content.

Generated URLs

This plugin generates URLs in the following format:

  • Acalog program URLs: <https://catalog.example.edu>/preview_program.php?catoid=<CatalogID>&poid=<ProgramID>

  • Acalog course URLs: <https://catalog.example.edu>/preview_course_nopop.php?catoid=<CatalogID>&coid=<CourseID>

Only the courses/program with ACTIVE-VISIBLE status in the published but NOT archived catalog will be added to the web data source start URLs.

When to use this plugin

Use this plugin if you have program and course content in Acalog, and you only have basic search requirements for discovering your Acalog content via your search.

  • This plugin indexes the HTML pages generated by the Acalog system and provides a similar result to crawling a website.

Usage

Enable the plugin

  1. Select Plugins from the side navigation pane and click on the Acalog (Basic) tile.

  2. From the Location section, select the data source to which you would like to enable this plugin from the Select a data source select list.

The plugin will take effect after setup steps and an advanced > full update of the data source has completed.

Configuration settings

The configuration settings section is where you do most of the configuration for your plugin. The settings enable you to control how the plugin behaves.

The configuration key names below are only used if you are configuring this plugin manually. The configuration keys are set in the data source configuration to configure the plugin. When setting the keys manually you need to type in (or copy and paste) the key name and value.

Acalog subdomain

Configuration key

plugin.acalog-basic.config.subdomain

Data type

string

Required

This setting is required

Your subdomain used to access the Acalog API, e.g. 'exampledomain'. This will result in API requests to https://exampledomain.apis.acalog.com

Acalog API Key

Configuration key

plugin.acalog-basic.encrypted.api-key

Data type

Encrypted string

Required

This setting is required

Your Acalog API key, used to access the Acalog API.

Acalog frontend URL prefix

Configuration key

plugin.acalog-basic.config.frontend-url

Data type

string

Value format

Allowed values must match the regular expression:

((http|https)://)(www.)?[a-zA-Z0-9@:%._\+~#?&/=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%._\+~#?&/=]*)

Required

This setting is optional

Set this to the URL that is used to access the Acalog pages. This should be a web domain that includes the protocol but omits a trailing slash. (e.g. https://catalog.example.edu)

This URL is prepended to the generated URLs to provide direct access to the Acalog generated HTML page for a program or course.

Crawl courses catalog

Configuration key

plugin.acalog-basic.config.crawl-courses

Data type

boolean

Default value

false

Required

This setting is required

Set this to true to index the list of courses.

Crawl programs catalog

Configuration key

plugin.acalog-basic.config.crawl-programs

Data type

boolean

Default value

false

Required

This setting is required

Set this to true to index the list of programs.

Map course meta?

Configuration key

plugin.acalog-basic.config.map-course-meta

Data type

boolean

Default value

false

Required

This setting is optional

Set this to true to get the extra course meta from https://<subdomain>.apis.acalog.com/v1/search/courses?format=xml&method=listing&catalog=<cid>

Course meta - Name

Configuration key

plugin.acalog-basic.config.course-meta-name

Data type

string

Required

This setting is optional

Set this to corresponding FB Meta class name to save <name> value in Acalog API, leave it as empty if no mapping is required.

Course meta - Alt name

Configuration key

plugin.acalog-basic.config.course-meta-altname

Data type

string

Required

This setting is optional

Set this to corresponding FB Meta class name to save <altname> value in Acalog API, leave it as empty if no mapping is required.

Course meta - Prefix

Configuration key

plugin.acalog-basic.config.course-meta-prefix

Data type

string

Required

This setting is optional

Set this to corresponding FB Meta class name to save <prefix> value in Acalog API, leave it as empty if no mapping is required.

Course meta - Code

Configuration key

plugin.acalog-basic.config.course-meta-code

Data type

string

Required

This setting is optional

Set this to corresponding FB Meta class name to save <code> value in Acalog API, leave it as empty if no mapping is required

Course meta - Department

Configuration key

plugin.acalog-basic.config.course-meta-department

Data type

string

Required

This setting is optional

Set this to corresponding FB Meta class name to save <type> value in Acalog API, leave it as empty if no mapping is required.

Map program meta?

Configuration key

plugin.acalog-basic.config.map-program-meta

Data type

boolean

Default value

false

Required

This setting is optional

Set this to true to get the extra program meta from https://<subdomain>.apis.acalog.com/v1/search/programs?format=xml&method=listing&catalog=<cid>

Program meta - Name

Configuration key

plugin.acalog-basic.config.program-meta-name

Data type

string

Required

This setting is optional

Set this to corresponding FB Meta class name to save <name> value in Acalog API, leave it as empty if no mapping is required.

Program meta - Alt name

Configuration key

plugin.acalog-basic.config.program-meta-altname

Data type

string

Required

This setting is optional

Set this to corresponding FB Meta class name to save <altname> value in Acalog API, leave it as empty if no mapping is required.

Program meta - Type

Configuration key

plugin.acalog-basic.config.program-meta-type

Data type

string

Required

This setting is optional

Set this to corresponding FB Meta class name to save <type> value in Acalog API, leave it as empty if no mapping is required.

Program meta - Degree type

Configuration key

plugin.acalog-basic.config.program-meta-degreetype

Data type

string

Required

This setting is optional

Set this to corresponding FB Meta class name to save <degreetype> value in Acalog API, leave it as empty if no mapping is required.

Program meta - Department

Configuration key

plugin.acalog-basic.config.program-meta-department

Data type

string

Required

This setting is optional

Set this to get the department from in Acalog Get Items API, leave it as empty if no mapping is required.

This will increase the crawl time as it will make an additional API call for each program. Do not use this unless you need it.

Need to set either plugin.acalog-basic.config.acalog-crawl-programs or plugin.acalog-basic.config.acalog-crawl-courses to true, or otherwise this plugin will not perform any operation.

Example of Course meta XML (https://<subdomain>.apis.acalog.com/v1/search/courses?format=xml&method=listing&catalog=<cid>)

<?xml version="1.0" encoding="UTF-8" ?>
<catalog>
    <search>
        <hits>2</hits>
        <time>0.03559374809265137</time>
        <results>
            <result>
                <id>30005</id>
                <name>Funnelback Introduction</name>
                <altname>FUNN 001 - Funnelback Introduction</altname>
                <state>
                    <code>1</code>
                    <name>Active-Visible</name>
                    <parent>
                        <code>1</code>
                        <name>Active-Visible</name>
                    </parent>
                </state>
                <prefix>FUNN</prefix>
                <code>001</code>
                <type id="1806">Squiz</type>
            </result>
            <result>
                <id>30002</id>
                <name>Funnelback Introduction (Part II)</name>
                <altname>FUNN 002 - Funnelback Introduction (Part II)</altname>
                <state>
                    <code>2</code>
                    <name>Active-Hidden</name>
                    <parent>
                        <code>1</code>
                        <name>Active-Visible</name>
                    </parent>
                </state>
                <prefix>FUNN</prefix>
                <code>002</code>
                <type id="1806">Squiz</type>
            </result>
        </results>
    </search>
    <status>success</status>
</catalog>
No additional setup is required in xml.cfg for the meta class name used in the plugin configuration.

Recommend configuration settings

  • Set up separate web data sources for courses and programs unless there is a strong use case.

  • Set up the data source with an empty start URL. The plugin will ensure that the Acalog generated URLs are added before your data source begins crawling.

  • Set up the crawler.max_link_distance to 0, otherwise the invisible course and other unrelated linked will be added by the Funnelback automatically.

    • If due to any other reasons you need to have crawler.max_link_distance larger than you, then set up your include patterns to https://<FRONTEND_URL>/preview_course_nopop.php?catoid=<active_year_oid> (Course) or/and https://<FRONTEND_URL>/preview_program.php?catoid=<active_year_oid> (Program).

  • Please do not map the program’s department to meta class if it is not in use for the search / display. The program’s department is not in the program meta XML. The plugin will need to crawl the context API one by one to get the department information, which will increase the overall crawl time.

  • When publishing / archiving an academic year (catalog in Acalog API), update changeover percent to 0, then run a full update of your data source to ensure the catalog is replaced. After a successful update, reset your changeover percent to an appropriate value (e.g. changeover percent: 75%).

Examples

Gather programs and corresponding metadata from the Acalog API

This example will gather only current course content from the Acalog API at https://exampledomain.api.acalog.com/ and add start URLs that look like https://catalog.funnelback.com/preview_program.php?catoid=15&poid=40098 for each program, and map the name, type, degree type and department, but not altname to meta class in meta.cfg.

Configuration key name Value

Acalog subdomain

exampledomain

Acalog frontend URL prefix

http://catalog.example.com

Acalog API key

****************

Crawl programs catalog

true

Crawl courses catalog

false

Map course meta?

false

Map program meta?

true

Program meta - Name

programTitle

Program meta - Alt name

(Empty)

Program meta - Type

programType

Program meta - Degree type

programDegreeType

Program meta - Department

programDepartment

Gather courses and corresponding meta from the Acalog API

This example will gather only current course content from the Acalog API at https://exampledomain.api.acalog.com/ and add start URLs that look like http://catalog.example.com/preview_course_nopop.php?catoid=15&coid=30005 for each course, and map the name, prefix, code and department, but not altname to meta class in meta.cfg.

Configuration key name Value

Acalog subdomain

exampledomain

Acalog frontend URL prefix

http://catalog.example.com

Acalog API key

****************

Crawl programs catalog

false

Crawl courses catalog

true

Map program meta?

false

Map course meta?

true

Course meta - Name

courseTitle

Course meta - Alt name

(Empty)

Course meta - Prefix

courseSubject

Course meta - Code

courseCode

Course meta - Department

department

Gather programs and courses from the Acalog API

This example will gather only current course content from the Acalog API at https://exampledomain.api.acalog.com/ and add start URLs that look like https://catalog.funnelback.com/preview_program.php?catoid=15&poid=40098 for each program, and http://catalog.example.com/preview_course_nopop.php?catoid=15&coid=30005 for each course.

Configuration key name Value

Acalog subdomain

exampledomain

Acalog frontend URL prefix

http://catalog.example.com

Acalog API key

****************

Crawl programs catalog

true

Crawl courses catalog

true

Map course meta?

false

Map program meta?

false

Change log

[1.3.0]

Fixed

  • Fixed a bug where the plugin did not add all the courses / programs due to the Java HTTP client double encode in the URL parameters.

Added

  • Added the support for the program meta extraction from the Acalog API.

Changed

  • Updated the recommended configuration settings for Funnelback datasource settings.

[1.2.0]

Fixed

  • Fixed a bug where the plugin fails to process the URLs containing special characters such as "|".

[1.1.0]

Added

  • Add the course meta extraction from Acalog API

Changed

  • Updated the wiremock to the latest version (3.9.0)

See also