Using VariablesPlugin

Last modified: 4/23/2026

Using VariablesPlugin

The VariablesPlugin displays all system and contextual variables available on the platform — including application settings, user context, and registered plugins — useful for building diagnostic or information pages. See Plugins for a complete list of available plugins.

Syntax

[{VariablesPlugin}] renders as:

System Variables
Variables that don't require user or page context
Variable Name Current Value Description
[{$appname}] GeoHazardWatch Application name (alias)
[{$applicationname}] GeoHazardWatch Application name from configuration
[{$version}] 3.46.1 ngdpbase version number
[{$baseurl}] https://geohazardwatch.com Base URL for the wiki
[{$uptime}] 21h 39m 14s Server uptime
[{$totalpages}] 133 Total number of pages in wiki
Contextual Variables
Variables that require user or page context
Variable Name Your Current Value Description
[{$pagename}] Using VariablesPlugin Current page name
[{$username}] Anonymous Current user's name
[{$loginstatus}] Not logged in User authentication status
[{$userroles}] Anonymous, All User's assigned roles
[{$date}] 6/6/2026 Current date
[{$time}] 2:43:43 AM Current time
[{$timestamp}] 2026-06-06T02:43:43.413Z Current ISO timestamp
[{$year}] 2026 Current year
[{$month}] 6 Current month
[{$day}] 6 Current day
[{$displayname}] Anonymous User User's display name
[{$useragent}] Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected]) Browser user agent string
[{$browser}] Unknown Browser Browser name and version
[{$clientip}] ::ffff:10.42.0.147 Client IP address
[{$referer}] Direct HTTP referer
[{$sessionid}] Coo9nDl7polrMBZ8WZ1z3VYM6vuahcMD Session identifier
[{$acceptlanguage}] Unknown Accept-Language header
Available Plugins
Registered plugins that can be invoked in wiki pages
Plugin Name Description Version Author
[{AppHealthPlugin}] Deterministic app-health audit: orphan pages, broken links, stale pages 1.0.0 ngdpbase
[{ATTACH}] Renders wiki attachments inline. Images display as clickable thumbnails; other files display as download links. 1.0.0 Unknown
[{AttachmentsPlugin}] Shows total attachment count or a list of attachments 1.0.0 ngdpbase
[{CommentsPlugin}] Displays page comments and a submission form for authenticated users 1.0.0 ngdpbase
[{ConfigAccessorPlugin}] Access configuration values including roles, features, and system settings 2.9.0 ngdpbase
[{CounterPlugin}] Maintains page-specific counters for numbering and tracking 1.0.0 ngdpbase
[{CurrentTimePlugin}] Displays current date and time with user locale/timezone preferences 1.0.0 ngdpbase
[{EarthquakeList}] No description N/A Unknown
[{EarthquakeMap}] No description N/A Unknown
[{FootnotesPlugin}] Lists footnote definitions from sidecar storage with editor CRUD UI 2.0.0 ngdpbase
[{HansAlerts}] No description N/A Unknown
[{Image}] Renders an image with optional caption, alignment, and display mode control N/A Unknown
[{IndexPlugin}] Generates an alphabetical index of all wiki pages 1.0.0 ngdpbase
[{InsertPlugin}] Embed another wiki page (or one section of it) into the current page 1.0.0 ngdpbase
[{Location}] Display locations with map links and embedded previews 1.0.0 ngdpbase
[{MarqueePlugin}] CSS scrolling text banner (marquee replacement) 1.0.0 ngdpbase
[{MediaGallery}] Displays a gallery of media items (stub — MediaManager not yet available) 0.1.0 ngdpbase
[{MediaItem}] Embeds a single media item inline (stub — MediaManager not yet available) 0.1.0 ngdpbase
[{MediaPlugin}] Shows total media item count, a list, or a thumbnail album of indexed media items 1.2.0 ngdpbase
[{MediaSearch}] Displays media search results (stub — MediaManager not yet available) 0.1.0 ngdpbase
[{MyContributionsPlugin}] Renders the My Contributions card from /profile on any wiki page 1.0.0 ngdpbase
[{MyLinksPlugin}] Renders the current user's pinned My Links sidebar section 1.0.0 ngdpbase
[{PageSlideshowPlugin}] Bootstrap 5 carousel cycling through wiki page content 1.0.0 ngdpbase
[{RecentChangesPlugin}] Displays recent page changes in chronological order 2.0.0 ngdpbase
[{ReferringPagesPlugin}] Lists pages that refer to the current page 1.0.0 ngdpbase
[{SearchPlugin}] JSPWiki-style search plugin for embedding search results in pages 2.0.0 ngdpbase
[{SessionsPlugin}] Shows active session count or list of authenticated users 2.0.0 ngdpbase
[{SlideshowPlugin}] Bootstrap 5 image carousel / slideshow 1.0.0 ngdpbase
[{TablePlugin}] JSPWiki-compatible Table plugin — enables # auto-numbering in table rows 1.0.0 ngdpbase
[{TabPlugin}] Defines a tab within [{Tabs}]; rendering is handled by TabsPlugin 1.0.0 ngdpbase
[{TabsPlugin}] Renders Bootstrap nav-tabs from [{Tab name="..."}]content[{/Tab}] body blocks 1.0.0 ngdpbase
[{TotalPagesPlugin}] Shows the total number of pages 1.0.0 ngdpbase
[{UndefinedPagesPlugin}] Lists pages that are linked to (RED-LINKs) but do not exist 1.2.0 ngdpbase
[{UptimePlugin}] Shows the server uptime 1.0.0 ngdpbase
[{UserLookupPlugin}] Search and display users — permission-gated PII via API 1.0.0 ngdpbase
[{VariablesPlugin}] Displays system and contextual variables available in the wiki 1.0.0 ngdpbase
[{VolcanoInfobox}] No description N/A Unknown
[{VolcanoList}] No description N/A Unknown
[{VolcanoMap}] No description N/A Unknown
[{VolcanoSearch}] No description N/A Unknown
Configuration Values (439 matches) — ngdpbase.*
Key Value
ngdpbase.access-control.business-hours.days monday,tuesday,wednesday,thursday,friday
ngdpbase.access-control.business-hours.enabled false
ngdpbase.access-control.business-hours.end 17:00
ngdpbase.access-control.business-hours.start 09:00
ngdpbase.access-control.context-aware.enabled true
ngdpbase.access-control.context-aware.time-zone UTC
ngdpbase.access-control.custom-schedules.enabled false
ngdpbase.access-control.custom-schedules.schedules ./config/schedules.json
ngdpbase.access-control.holidays.calendar ./config/holidays.json
ngdpbase.access-control.holidays.enabled false
ngdpbase.access.policies [ { "id": "admin-full-access", "name": "Administrator Full Access", "description": "Full system access for administrators - all page and admin permissions", "priority": 100, "effect": "allow", "subjects": [ { "type": "role", "value": "admin" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read", "page-edit", "page-create", "page-delete", "page-rename", "page-export", "asset-read", "asset-upload", "asset-delete", "search-page", "search-user", "user-read", "user-edit", "user-create", "user-delete", "admin-roles", "admin-system" ] }, { "id": "user-admin-permissions", "name": "User Administrator Permissions", "description": "Can manage users — create, edit, deactivate, delete", "priority": 95, "effect": "allow", "subjects": [ { "type": "role", "value": "user-admin" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "user-read", "user-edit", "user-create", "user-delete", "search-user" ] }, { "id": "editor-permissions", "name": "Editor Permissions", "description": "Can create, edit, delete, and rename pages plus manage assets", "priority": 80, "effect": "allow", "subjects": [ { "type": "role", "value": "editor" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read", "page-edit", "page-create", "page-delete", "page-rename", "page-export", "asset-read", "asset-upload", "asset-delete", "search-page" ] }, { "id": "contributor-permissions", "name": "Contributor Permissions", "description": "Can create and edit pages, upload assets (no delete/rename)", "priority": 70, "effect": "allow", "subjects": [ { "type": "role", "value": "contributor" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read", "page-edit", "page-create", "page-export", "asset-read", "asset-upload", "search-page" ] }, { "id": "reader-permissions", "name": "Reader Permissions", "description": "Read-only access - can view pages and assets, search, and export", "priority": 60, "effect": "allow", "subjects": [ { "type": "role", "value": "reader" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read", "page-export", "asset-read", "search-page" ] }, { "id": "member-permissions", "name": "Member Permissions", "description": "Community member read-only access", "priority": 55, "effect": "allow", "subjects": [ { "type": "role", "value": "member" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read", "asset-read", "search-page" ] }, { "id": "anonymous-read-only", "name": "Anonymous Read Access", "description": "Anonymous users can only read pages", "priority": 50, "effect": "allow", "subjects": [ { "type": "role", "value": "anonymous" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read" ] }, { "id": "deny-anonymous-system-pages", "name": "Deny Anonymous System Pages", "description": "Block anonymous access to system and admin category pages", "priority": 90, "effect": "deny", "subjects": [ { "type": "role", "value": "anonymous" } ], "resources": [ { "type": "category", "value": "system" }, { "type": "category", "value": "admin" } ], "actions": [ "*" ] }, { "id": "default-view-for-all", "name": "Default View Access for All", "description": "Fallback - all authenticated users can at minimum view pages", "priority": 1, "effect": "allow", "subjects": [ { "type": "role", "value": "All" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read" ] } ]
ngdpbase.access.policies.default-policy deny
ngdpbase.access.policies.enabled true
ngdpbase.addons {}
ngdpbase.addons.forms.dataPath ${FAST_STORAGE}/forms
ngdpbase.addons.forms.enabled false
ngdpbase.addons.forms.notifyRole admin
ngdpbase.addons.geohazardwatch.dataPath
ngdpbase.addons.geohazardwatch.enabled true
ngdpbase.addons.geohazardwatch.eqIntervalMs 1200000
ngdpbase.addons.geohazardwatch.hansIntervalMs 600000
ngdpbase.application-name GeoHazardWatch
ngdpbase.application.base-url https://geohazardwatch.com
ngdpbase.application.category Digital Platform
ngdpbase.application.contact.enabled true
ngdpbase.application.contact.footer.enabled true
ngdpbase.application.contact.page
ngdpbase.application.contact.persist.enabled true
ngdpbase.application.contact.persist.path
ngdpbase.application.contact.recipient [email protected]
ngdpbase.application.organization.file geohazardwatch.json
ngdpbase.application.organization.provider fileorganizationprovider
ngdpbase.application.organization.provider.default fileorganizationprovider
ngdpbase.application.organization.storagedir ${FAST_STORAGE}/organizations
ngdpbase.application.persons.provider filepersonprovider
ngdpbase.application.persons.provider.default filepersonprovider
ngdpbase.application.persons.storagedir ${FAST_STORAGE}/persons
ngdpbase.application.registration false
ngdpbase.application.registration.redirect-page request-access
ngdpbase.application.roles.provider fileroleprovider
ngdpbase.application.roles.provider.default fileroleprovider
ngdpbase.application.roles.storagedir ${FAST_STORAGE}/roles
ngdpbase.approver.workflow.save-wiki-page Admin
ngdpbase.attachment.allowedtypes image/*,text/*,application/pdf
ngdpbase.attachment.enabled true
ngdpbase.attachment.enhanced.cachemetadata true
ngdpbase.attachment.enhanced.enabled true
ngdpbase.attachment.enhanced.generatethumbnails true
ngdpbase.attachment.enhanced.iconpath /icons/filetypes
ngdpbase.attachment.enhanced.metadata true
ngdpbase.attachment.enhanced.showfilesize true
ngdpbase.attachment.enhanced.showmetadata true
ngdpbase.attachment.enhanced.showmodified true
ngdpbase.attachment.enhanced.thumbnails true
ngdpbase.attachment.enhanced.thumbnailsizes 150x150,300x300
ngdpbase.attachment.forcedownload false
ngdpbase.attachment.maxsize 10485760
ngdpbase.attachment.metadatafile ${SLOW_STORAGE}/attachments/attachment-metadata.json
ngdpbase.attachment.provider basicattachmentprovider
ngdpbase.attachment.provider.basic.hashcontent true
ngdpbase.attachment.provider.basic.hashmethod sha256
ngdpbase.attachment.provider.basic.storagedir ${SLOW_STORAGE}/attachments
ngdpbase.attachment.provider.default basicattachmentprovider
ngdpbase.audit.enabled true
ngdpbase.audit.flushinterval 30000
ngdpbase.audit.loglevel info
ngdpbase.audit.maxqueuesize 1000
ngdpbase.audit.provider fileauditprovider
ngdpbase.audit.provider.cloud.loggroup /ngdpbase/audit
ngdpbase.audit.provider.cloud.logstream audit-events
ngdpbase.audit.provider.cloud.region us-east-1
ngdpbase.audit.provider.cloud.service cloudwatch
ngdpbase.audit.provider.database.connectionstring
ngdpbase.audit.provider.database.maxconnections 10
ngdpbase.audit.provider.database.tablename audit_logs
ngdpbase.audit.provider.database.type postgresql
ngdpbase.audit.provider.default fileauditprovider
ngdpbase.audit.provider.file.archivefilename audit-archive.log
ngdpbase.audit.provider.file.auditfilename audit.log
ngdpbase.audit.provider.file.logdirectory ${FAST_STORAGE}/logs
ngdpbase.audit.provider.file.maxfiles 10
ngdpbase.audit.provider.file.maxfilesize 10MB
ngdpbase.audit.retentiondays 90
ngdpbase.auth.cloudflare-access.application-aud
ngdpbase.auth.cloudflare-access.default-role occupant
ngdpbase.auth.cloudflare-access.enabled false
ngdpbase.auth.cloudflare-access.group-map {}
ngdpbase.auth.cloudflare-access.team-domain
ngdpbase.auth.google-oidc.auto-provision true
ngdpbase.auth.google-oidc.callback-url
ngdpbase.auth.google-oidc.client-id
ngdpbase.auth.google-oidc.client-secret
ngdpbase.auth.google-oidc.default-roles [ "occupant" ]
ngdpbase.auth.google-oidc.deny-redirect /login?error=Access+denied
ngdpbase.auth.google-oidc.enabled false
ngdpbase.auth.google-oidc.hd
ngdpbase.auth.magic-link.enabled false
ngdpbase.auth.magic-link.ttl-minutes 15
ngdpbase.auth.password.enabled true
ngdpbase.auth.required-factors [ "password" ]
ngdpbase.auth.user.default-external false
ngdpbase.authorizer DefaultAuthorizer
ngdpbase.backup.auto-backup false
ngdpbase.backup.auto-backup-days daily
ngdpbase.backup.auto-backup-interval 86400000
ngdpbase.backup.auto-backup-time 02:00
ngdpbase.backup.compress true
ngdpbase.backup.directory ${SLOW_STORAGE}/backups
ngdpbase.backup.max-backups 10
ngdpbase.backup.provider filebackupprovider
ngdpbase.breadcrumbs.maxpages 10
ngdpbase.cache.checkperiod 120
ngdpbase.cache.defaultttl 300
ngdpbase.cache.enabled true
ngdpbase.cache.maxkeys 1000
ngdpbase.cache.provider nodecacheprovider
ngdpbase.cache.provider.default nodecacheprovider
ngdpbase.cache.provider.nodecache.checkperiod 120
ngdpbase.cache.provider.nodecache.maxkeys 1000
ngdpbase.cache.provider.nodecache.stdttl 300
ngdpbase.cache.provider.nodecache.useclones true
ngdpbase.cache.provider.redis.connecttimeout 5000
ngdpbase.cache.provider.redis.enablecluster false
ngdpbase.cache.provider.redis.keyprefix ngdpbase:
ngdpbase.cache.provider.redis.url redis://localhost:6379
ngdpbase.catalog.ai.enabled false
ngdpbase.catalog.ai.provider null
ngdpbase.catalog.ai.threshold 0.7
ngdpbase.comments.allow true
ngdpbase.comments.storagedir ${SLOW_STORAGE}/comments
ngdpbase.default.system-category general
ngdpbase.default.template.dateformat dd-MMM-yyyy HH:mm
ngdpbase.default.timezone UTC
ngdpbase.diff-provider TraditionalDiffProvider
ngdpbase.directories.data ${FAST_STORAGE}
ngdpbase.directories.pages ${SLOW_STORAGE}/pages
ngdpbase.directories.required-pages ./required-pages
ngdpbase.directories.resources ./resources
ngdpbase.directories.schemas ${FAST_STORAGE}/schemas
ngdpbase.directories.templates ./templates
ngdpbase.directories.users ${FAST_STORAGE}/users
ngdpbase.directories.work ./
ngdpbase.encoding UTF-8
ngdpbase.favicon-path /favicon.svg
ngdpbase.features.export.html true
ngdpbase.features.export.odt false
ngdpbase.features.export.pdf false
ngdpbase.features.images.allowed-types image/jpeg,image/png,image/gif,image/webp
ngdpbase.features.images.default-alt Uploaded image
ngdpbase.features.images.default-class wiki-image
ngdpbase.features.images.enabled true
ngdpbase.features.images.max-size 5MB
ngdpbase.features.images.upload-dir ./public/images
ngdpbase.features.llm.enabled false
ngdpbase.features.llm.endpoint http://localhost:11434
ngdpbase.features.llm.model llama2
ngdpbase.features.maintenance.allow-admins true
ngdpbase.features.maintenance.enabled false
ngdpbase.features.maintenance.estimated-duration null
ngdpbase.features.maintenance.message System is currently under maintenance. Please try again later.
ngdpbase.fetch-timeout-ms 30000
ngdpbase.footnotes.enabled true
ngdpbase.footnotes.storagedir ${SLOW_STORAGE}/footnotes
ngdpbase.front-page volcanoes-and-earthquakes
ngdpbase.github.repo jwilleke/ngdpbase
ngdpbase.groupdatabase JSONGroupDatabase
ngdpbase.holidays.dates { "2025-01-01": { "name": "New Year's Day", "message": "Access restricted on New Year's Day", "enabled": true }, "2025-07-04": { "name": "Independence Day", "message": "Access restricted on Independence Day", "enabled": true }, "2025-12-25": { "name": "Christmas Day", "message": "Access restricted on Christmas Day", "enabled": true }, "2025-12-26": { "name": "Boxing Day", "message": "Access restricted on Boxing Day", "enabled": true } }
ngdpbase.holidays.enabled true
ngdpbase.holidays.recurring { "*-01-01": { "name": "New Year's Day", "message": "Access restricted on New Year's Day", "enabled": true }, "*-12-25": { "name": "Christmas Day", "message": "Access restricted on Christmas Day", "enabled": true } }
ngdpbase.interwiki.enabled true
ngdpbase.interwiki.options { "openInNewWindow": true, "addIconIndicator": true, "caseSensitive": false, "showTooltips": true, "cacheTTL": 3600, "maxCacheEntries": 1000 }
ngdpbase.interwiki.sites { "Wikipedia": { "url": "https://en.wikipedia.org/wiki/%s", "description": "Wikipedia, the free encyclopedia", "icon": "wikipedia.png", "enabled": true, "openInNewWindow": true }, "JSPWiki": { "url": "https://jspwiki-wiki.apache.org/Wiki.jsp?page=%s", "description": "Apache JSPWiki Documentation", "icon": "jspwiki.png", "enabled": true, "openInNewWindow": true }, "MeatBall": { "url": "http://www.usemod.com/cgi-bin/mb.pl?%s", "description": "MeatBall Wiki", "icon": "meatball.png", "enabled": true, "openInNewWindow": true }, "C2": { "url": "http://wiki.c2.com/?%s", "description": "C2 Wiki (Portland Pattern Repository)", "icon": "c2.png", "enabled": false, "openInNewWindow": true }, "GVP": { "url": "https://volcano.si.edu/volcano.cfm?vn=%s", "description": "GVP (Global Volcanism Program)", "icon": "gvp-icon.jpg", "enabled": true, "openInNewWindow": true }, "GVP-COUNTRY": { "url": "https://volcano.si.edu/volcanolist_countries.cfm?country=%s", "description": "GVP (Global Volcanism Program) — Volcanoes by Country", "icon": "gvp-icon.jpg", "enabled": true, "openInNewWindow": true } }
ngdpbase.jsonorganizationsdatabase users/organizations.json
ngdpbase.jsonpersonsdatabase .users/persons.json
ngdpbase.jsonuserdatabase .users/users.json
ngdpbase.knowledge-role { "source": { "label": "source", "description": "Authoritative primary content; body treated as immutable (step 2 of LLM-wiki build plan)", "default": false, "enabled": true, "page-badge": { "color": "bg-dark", "label": "Source", "title": "Source page — primary, immutable material" } }, "citation": { "label": "citation", "description": "Interpretive claim grounded in one or more sources", "default": false, "enabled": true, "page-badge": { "color": "bg-warning text-dark", "label": "Citation", "title": "Citation page — claims grounded in sources" } }, "concept": { "label": "concept", "description": "Synthesis drawing on multiple citations", "default": false, "enabled": true, "page-badge": { "color": "bg-danger", "label": "Concept", "title": "Concept page — synthesis across citations" } } }
ngdpbase.location.default-provider osm
ngdpbase.logging.debug.enabled false
ngdpbase.logging.debug.login false
ngdpbase.logging.debug.session false
ngdpbase.logging.dir ${FAST_STORAGE}/logs
ngdpbase.logging.level info
ngdpbase.logging.max-files 5
ngdpbase.logging.max-size 1MB
ngdpbase.logging.provider fileloggingprovider
ngdpbase.login-module.class CookieAuthenticationLoginModule
ngdpbase.lucene-search-provider.lucene-directory ./lucene
ngdpbase.mail.enabled true
ngdpbase.mail.from GeoHazardWatch Contact <[email protected]>
ngdpbase.mail.honeypot.enabled true
ngdpbase.mail.provider smtp
ngdpbase.mail.provider.smtp.from
ngdpbase.mail.provider.smtp.host smtp.gmail.com
ngdpbase.mail.provider.smtp.pass nqyiswddgaicffnq
ngdpbase.mail.provider.smtp.port 587
ngdpbase.mail.provider.smtp.secure false
ngdpbase.mail.provider.smtp.user [email protected]
ngdpbase.mail.rate-limit.enabled true
ngdpbase.mail.rate-limit.max-submissions 5
ngdpbase.mail.rate-limit.window-minutes 15
ngdpbase.managers.addons-manager.addons-path [ "/app/addons", "/opt/geohazardwatch/addons" ]
ngdpbase.managers.addons-manager.enabled true
ngdpbase.managers.cache-manager.enabled true
ngdpbase.managers.page-manager.enabled true
ngdpbase.managers.plugin-manager.enabled true
ngdpbase.managers.plugin-manager.search-paths [ "./dist/src/plugins" ]
ngdpbase.managers.rendering-manager.enabled true
ngdpbase.managers.search-manager.enabled true
ngdpbase.managers.template-manager.enabled true
ngdpbase.markdown.footnotes.enabled true
ngdpbase.markdown.ncm.image.ad-deny-list [ "doubleclick.net", "googlesyndication.com", "google-analytics.com", "facebook.com/tr", "scorecardresearch.com" ]
ngdpbase.markup.cache-ttl 300
ngdpbase.markup.cache.enable-warmup true
ngdpbase.markup.cache.handler-results.enabled true
ngdpbase.markup.cache.handler-results.max-size 2000
ngdpbase.markup.cache.handler-results.ttl 600
ngdpbase.markup.cache.metrics-enabled true
ngdpbase.markup.cache.parse-results.enabled true
ngdpbase.markup.cache.parse-results.max-size 1000
ngdpbase.markup.cache.parse-results.ttl 300
ngdpbase.markup.cache.patterns.enabled true
ngdpbase.markup.cache.patterns.max-size 100
ngdpbase.markup.cache.patterns.ttl 3600
ngdpbase.markup.cache.variables.enabled true
ngdpbase.markup.cache.variables.max-size 500
ngdpbase.markup.cache.variables.ttl 900
ngdpbase.markup.caching true
ngdpbase.markup.enabled true
ngdpbase.markup.fallback-to-legacy true
ngdpbase.markup.fenced-code-tags [ "text", "plain", "none", "javascript", "js", "typescript", "ts", "jsx", "tsx", "html", "xml", "svg", "css", "scss", "sass", "less", "json", "yaml", "yml", "toml", "bash", "sh", "shell", "zsh", "python", "py", "java", "kotlin", "c", "cpp", "csharp", "cs", "go", "rust", "ruby", "php", "sql", "markdown", "md", "diff", "patch", "mermaid" ]
ngdpbase.markup.filters.custom.auto-load true
ngdpbase.markup.filters.custom.cache-results true
ngdpbase.markup.filters.custom.enabled false
ngdpbase.markup.filters.custom.search-paths ./filters,./src/filters
ngdpbase.markup.filters.enabled true
ngdpbase.markup.filters.pipeline.enable-profiling true
ngdpbase.markup.filters.pipeline.fail-on-error false
ngdpbase.markup.filters.pipeline.max-filters 50
ngdpbase.markup.filters.pipeline.timeout 10000
ngdpbase.markup.filters.security.allowed-attributes class,id,href,src,alt,title
ngdpbase.markup.filters.security.allowed-tags p,div,span,strong,em,ul,ol,li,h1,h2,h3,h4,h5,h6,a,img
ngdpbase.markup.filters.security.enabled false
ngdpbase.markup.filters.security.prevent-csrf true
ngdpbase.markup.filters.security.prevent-xss true
ngdpbase.markup.filters.security.priority 110
ngdpbase.markup.filters.security.sanitize-html true
ngdpbase.markup.filters.security.strip-dangerous-content true
ngdpbase.markup.filters.spam.blacklist-words spam,casino,pharmacy,viagra
ngdpbase.markup.filters.spam.cache-blacklist true
ngdpbase.markup.filters.spam.enabled false
ngdpbase.markup.filters.spam.max-images 5
ngdpbase.markup.filters.spam.max-links 10
ngdpbase.markup.filters.spam.priority 100
ngdpbase.markup.filters.spam.whitelist-domains wikipedia.org,github.com,stackoverflow.com
ngdpbase.markup.filters.validation.enabled true
ngdpbase.markup.filters.validation.max-content-length 1048576
ngdpbase.markup.filters.validation.priority 90
ngdpbase.markup.filters.validation.report-errors true
ngdpbase.markup.filters.validation.validate-images true
ngdpbase.markup.filters.validation.validate-links true
ngdpbase.markup.filters.validation.validate-markup true
ngdpbase.markup.handler-registry.allow-duplicate-priorities true
ngdpbase.markup.handler-registry.default-timeout 5000
ngdpbase.markup.handler-registry.enable-conflict-detection true
ngdpbase.markup.handler-registry.enable-dependency-resolution true
ngdpbase.markup.handler-registry.max-handlers 100
ngdpbase.markup.handlers.attachment.enabled true
ngdpbase.markup.handlers.attachment.enhanced true
ngdpbase.markup.handlers.attachment.metadata true
ngdpbase.markup.handlers.attachment.priority 75
ngdpbase.markup.handlers.attachment.thumbnails true
ngdpbase.markup.handlers.form.enabled true
ngdpbase.markup.handlers.form.priority 85
ngdpbase.markup.handlers.interwiki.enabled true
ngdpbase.markup.handlers.interwiki.priority 80
ngdpbase.markup.handlers.plugin.enabled true
ngdpbase.markup.handlers.plugin.priority 90
ngdpbase.markup.handlers.rss.enabled true
ngdpbase.markup.handlers.rss.priority 60
ngdpbase.markup.handlers.search.enabled true
ngdpbase.markup.handlers.search.priority 65
ngdpbase.markup.handlers.style.enabled true
ngdpbase.markup.handlers.style.priority 70
ngdpbase.markup.handlers.wikitag.enabled true
ngdpbase.markup.handlers.wikitag.priority 95
ngdpbase.markup.integration.rendering-manager true
ngdpbase.markup.log-parsing-method true
ngdpbase.markup.use-advanced-parser true
ngdpbase.maximum.user-keywords 5
ngdpbase.media.enabled false
ngdpbase.media.extensions [ "jpg", "jpeg", "png", "gif", "heic", "heif", "tiff", "tif", "webp", "raw", "orf", "cr2", "nef", "arw", "dng", "bmp", "mp4", "mov", "avi", "mkv", "m4v", "wmv", "3gp" ]
ngdpbase.media.folders []
ngdpbase.media.ignoredirs [ ".dtrash", ".ts" ]
ngdpbase.media.maxdepth 5
ngdpbase.media.metadata.priority [ "EXIF", "IPTC", "XMP" ]
ngdpbase.media.readonly true
ngdpbase.media.scaninterval 3600000
ngdpbase.media.thumbnail.sizes 300x300,150x150
ngdpbase.notifications.auto-save-interval 300000
ngdpbase.notifications.dir ${FAST_STORAGE}/notifications
ngdpbase.notifications.escalation.enabled false
ngdpbase.notifications.escalation.levels [ "error" ]
ngdpbase.notifications.escalation.recipient-role admin
ngdpbase.notifications.file notifications.json
ngdpbase.page.enabled true
ngdpbase.page.nofooter [ "LeftMenu", "Footer", "Template:PageTabs" ]
ngdpbase.page.notabs [ "LeftMenu", "Footer", "Template:PageTabs" ]
ngdpbase.page.provider versioningfileprovider
ngdpbase.page.provider.default filesystemprovider
ngdpbase.page.provider.filesystem.autosave true
ngdpbase.page.provider.filesystem.encoding utf-8
ngdpbase.page.provider.filesystem.requiredpagesdir ./required-pages
ngdpbase.page.provider.filesystem.storagedir ${SLOW_STORAGE}/pages
ngdpbase.page.provider.versioning.indexfile ${FAST_STORAGE}/page-index.json
ngdpbase.pageFilters org.apache.wiki.filters.BasicPageFilter,org.apache.wiki.filters.ProfanityFilter
ngdpbase.permissions.definitions { "page-read": { "description": "View pages", "icon": "eye", "color": "#6c757d" }, "page-edit": { "description": "Edit pages", "icon": "edit", "color": "#007bff" }, "page-create": { "description": "Create new pages", "icon": "plus", "color": "#28a745" }, "page-delete": { "description": "Delete pages", "icon": "trash", "color": "#dc3545" }, "page-rename": { "description": "Rename pages", "icon": "i-cursor", "color": "#fd7e14" }, "page-export": { "description": "Export pages", "icon": "file-export", "color": "#6c757d" }, "asset-read": { "description": "View assets (attachments)", "icon": "paperclip", "color": "#6c757d" }, "asset-upload": { "description": "Upload assets", "icon": "upload", "color": "#28a745" }, "asset-delete": { "description": "Delete assets", "icon": "trash", "color": "#dc3545" }, "search-page": { "description": "Search pages", "icon": "search", "color": "#6c757d" }, "search-user": { "description": "Search users", "icon": "search", "color": "#6c757d" }, "user-read": { "description": "View user list and profiles", "icon": "users", "color": "#6c757d" }, "user-edit": { "description": "Edit user accounts", "icon": "user-edit", "color": "#007bff" }, "user-create": { "description": "Create user accounts", "icon": "user-plus", "color": "#28a745" }, "user-delete": { "description": "Delete user accounts", "icon": "user-minus", "color": "#dc3545" }, "admin-system": { "description": "System administration", "icon": "cog", "color": "#dc3545" }, "admin-roles": { "description": "Role management", "icon": "shield-alt", "color": "#dc3545" } }
ngdpbase.plugin.searchresult.maxItems 50
ngdpbase.plugin.searchresult.showScore true
ngdpbase.plugin.versioning.use true
ngdpbase.plugins.enabled true
ngdpbase.plugins.searchPath ./plugins
ngdpbase.referenceStyle relative
ngdpbase.roles.definitions { "admin": { "name": "admin", "displayname": "Administrator", "description": "Full system access to all features", "issystem": true, "icon": "shield-alt", "color": "#dc3545", "permissions": [ "page-read", "page-edit", "page-create", "page-delete", "page-rename", "page-export", "asset-read", "asset-upload", "asset-delete", "search-page", "search-user", "user-read", "user-edit", "user-create", "user-delete", "admin-system", "admin-roles" ] }, "user-admin": { "name": "user-admin", "displayname": "User Administrator", "description": "Can manage users — create, edit, deactivate, delete", "issystem": true, "icon": "user-cog", "color": "#6610f2", "permissions": [ "user-read", "user-edit", "user-create", "user-delete", "search-user" ] }, "editor": { "name": "editor", "displayname": "Editor", "description": "Can create, edit, delete, and rename pages", "issystem": true, "icon": "edit", "color": "#007bff", "permissions": [ "page-read", "page-edit", "page-create", "page-delete", "page-rename", "page-export", "asset-read", "asset-upload", "asset-delete", "search-page" ] }, "contributor": { "name": "contributor", "displayname": "Contributor", "description": "Can create and edit pages", "issystem": true, "icon": "user-edit", "color": "#28a745", "permissions": [ "page-read", "page-edit", "page-create", "page-export", "asset-read", "asset-upload", "search-page" ] }, "reader": { "name": "reader", "displayname": "Reader", "description": "Read-only access to content", "issystem": true, "icon": "book-reader", "color": "#6c757d", "permissions": [ "page-read", "page-export", "asset-read", "search-page" ] }, "member": { "name": "member", "displayname": "Member", "description": "Community member — same read access as reader, placeholder for community-specific permissions", "issystem": true, "icon": "id-card", "color": "#20c997", "permissions": [ "page-read", "asset-read", "search-page" ] }, "anonymous": { "name": "anonymous", "displayname": "Anonymous", "description": "Public access without authentication", "issystem": true, "icon": "user-secret", "color": "#adb5bd", "permissions": [ "page-read", "asset-read" ] } }
ngdpbase.rss.channel-description RSS feed for ngdpbase updates
ngdpbase.rss.channel-title ngdpbase RSS Feed
ngdpbase.rss.file-name rss.xml
ngdpbase.rss.generate true
ngdpbase.rss.interval 3600
ngdpbase.schedules { "business-hours": { "name": "Standard Business Hours", "description": "Monday-Friday, 9 AM - 5 PM", "timeZone": "America/New_York", "rules": [ { "days": [ "monday", "tuesday", "wednesday", "thursday", "friday" ], "startTime": "09:00", "endTime": "17:00", "type": "allow" }, { "days": [ "saturday", "sunday" ], "type": "deny" } ], "exceptions": [], "enabled": true }, "weekend-support": { "name": "Weekend Support", "description": "Limited weekend access for critical issues", "timeZone": "America/New_York", "rules": [ { "days": [ "monday", "tuesday", "wednesday", "thursday", "friday" ], "startTime": "09:00", "endTime": "17:00", "type": "allow" }, { "days": [ "saturday" ], "startTime": "10:00", "endTime": "14:00", "type": "allow" }, { "days": [ "sunday" ], "type": "deny" } ], "exceptions": [], "enabled": true }, "emergency-24-7": { "name": "24/7 Emergency Access", "description": "Full access for emergency situations", "timeZone": "UTC", "rules": [ { "type": "allow" } ], "exceptions": [], "enabled": true }, "role_admin": { "name": "Administrator Schedule", "description": "Extended hours for administrators", "timeZone": "America/New_York", "rules": [ { "days": [ "monday", "tuesday", "wednesday", "thursday", "friday" ], "startTime": "08:00", "endTime": "18:00", "type": "allow" }, { "days": [ "saturday" ], "startTime": "09:00", "endTime": "12:00", "type": "allow" } ], "exceptions": [], "enabled": true }, "category_System": { "name": "System Pages Schedule", "description": "Restricted access to system pages", "timeZone": "America/New_York", "rules": [ { "days": [ "monday", "tuesday", "wednesday", "thursday", "friday" ], "startTime": "09:00", "endTime": "17:00", "type": "allow" } ], "exceptions": [], "enabled": true }, "default": { "name": "Default Schedule", "description": "Fallback schedule for users without specific assignments", "timeZone": "UTC", "rules": [ { "days": [ "monday", "tuesday", "wednesday", "thursday", "friday" ], "startTime": "09:00", "endTime": "17:00", "type": "allow" } ], "exceptions": [], "enabled": true } }
ngdpbase.schedules.enabled true
ngdpbase.schema-types { "documentation": "TechArticle", "developer": "TechArticle", "journal": "BlogPosting" }
ngdpbase.search.autocomplete.enabled true
ngdpbase.search.autocomplete.minlength 2
ngdpbase.search.enabled true
ngdpbase.search.maxresults 50
ngdpbase.search.plugin.allowAdvanced true
ngdpbase.search.plugin.cacheResults true
ngdpbase.search.plugin.cacheTTL 300
ngdpbase.search.plugin.maxResults 50
ngdpbase.search.plugin.showScore true
ngdpbase.search.provider lunrsearchprovider
ngdpbase.search.provider.default lunrsearchprovider
ngdpbase.search.provider.elasticsearch.autotagging.enabled false
ngdpbase.search.provider.elasticsearch.connecttimeout 5000
ngdpbase.search.provider.elasticsearch.indexname ngdpbase-pages
ngdpbase.search.provider.elasticsearch.requesttimeout 30000
ngdpbase.search.provider.elasticsearch.url http://localhost:9200
ngdpbase.search.provider.lunr.boost.keywords 4
ngdpbase.search.provider.lunr.boost.systemcategory 8
ngdpbase.search.provider.lunr.boost.tags 5
ngdpbase.search.provider.lunr.boost.title 10
ngdpbase.search.provider.lunr.boost.userkeywords 6
ngdpbase.search.provider.lunr.indexdir ${FAST_STORAGE}/search-index
ngdpbase.search.provider.lunr.maxresults 50
ngdpbase.search.provider.lunr.snippetlength 200
ngdpbase.search.provider.lunr.stemming true
ngdpbase.search.suggestions.enabled true
ngdpbase.search.suggestions.maxitems 10
ngdpbase.server.host 0.0.0.0
ngdpbase.server.port 3000
ngdpbase.session.http-only true
ngdpbase.session.max-age 86400000
ngdpbase.session.sameSite lax
ngdpbase.session.secret ngdpbase-session-secret-change-in-production
ngdpbase.session.secure true
ngdpbase.session.storagedir ${FAST_STORAGE}/sessions
ngdpbase.session.store users/sessions.json
ngdpbase.specialpage.diff Diff.jsp
ngdpbase.specialpage.findpage FindPage.jsp
ngdpbase.specialpage.login Login.jsp
ngdpbase.specialpage.search Search.jsp
ngdpbase.specialpage.upload Upload.jsp
ngdpbase.specialpage.userpreferences UserPreferences.jsp
ngdpbase.specialpage.workflow Workflow.jsp
ngdpbase.storageLocation.aclBasedStorage true
ngdpbase.storageLocation.categoryBasedStorage.Admin required
ngdpbase.storageLocation.categoryBasedStorage.Documentation regular
ngdpbase.storageLocation.categoryBasedStorage.General regular
ngdpbase.storageLocation.categoryBasedStorage.Security required
ngdpbase.storageLocation.categoryBasedStorage.System required
ngdpbase.storageLocation.enabled true
ngdpbase.storageLocation.roleBasedStorage.admin required
ngdpbase.storageLocation.roleBasedStorage.editor regular
ngdpbase.storageLocation.roleBasedStorage.user regular
ngdpbase.style.bootstrap.integration true
ngdpbase.style.custom-classes.enabled true
ngdpbase.style.predefined.background bg-primary,bg-secondary,bg-light,bg-dark
ngdpbase.style.predefined.layout text-center,text-left,text-right,float-left,float-right
ngdpbase.style.predefined.text text-primary,text-secondary,text-success,text-danger,text-warning,text-info
ngdpbase.style.security.allow-inline-css false
ngdpbase.style.security.allowed-properties color,background-color,font-weight,font-style,text-align
ngdpbase.system-category { "general": { "label": "general", "description": "General User pages", "default": true, "storageLocation": "regular", "enabled": true }, "system": { "label": "system", "description": "System configuration and infrastructure pages", "default": false, "storageLocation": "required", "enabled": true, "page-badge": { "color": "bg-secondary", "label": "System", "title": "System page" } }, "documentation": { "label": "documentation", "description": "End-User documentation", "default": false, "storageLocation": "required", "enabled": true, "page-badge": { "color": "bg-info text-dark", "label": "Documentation", "title": "Documentation page" } }, "developer": { "label": "developer", "description": "Developer documentation and technical note Only in GitHub", "default": false, "storageLocation": "github", "enabled": true }, "addon": { "label": "addon", "description": "Pages seeded by an installed add-on", "default": false, "storageLocation": "regular", "enabled": true, "page-badge": { "color": "bg-primary", "label": "Addon", "title": "Add-on page" } }, "user-profile": { "label": "user-profile", "description": "User profile pages", "default": false, "storageLocation": "regular", "enabled": true, "page-badge": { "color": "bg-success", "label": "Profile", "title": "User profile page" } }, "journal": { "label": "journal", "description": "Personal journal entries — schema.org BlogPosting at JSON-LD render time (#791)", "default": false, "storageLocation": "regular", "enabled": true, "page-badge": { "color": "bg-info", "label": "Journal", "title": "Journal entry" } } }
ngdpbase.system-keywords { "general": { "label": "general", "description": "General-purpose keyword for standard wiki content", "default": true, "category": "content-type", "enabled": true }, "draft": { "label": "draft", "description": "Work in progress content", "category": "workflow-status", "enabled": true }, "review": { "label": "review", "description": "Content under review", "category": "workflow-status", "enabled": true }, "published": { "label": "published", "description": "Finalized and approved content", "category": "workflow-status", "enabled": true }, "medicine": { "label": "medicine", "description": "Medical and healthcare-related content", "category": "subject", "enabled": true }, "geology": { "label": "geology", "description": "Geological and earth science content", "category": "subject", "enabled": true }, "meteorology": { "label": "meteorology", "description": "Weather and atmospheric science content", "category": "subject", "enabled": true }, "oceanography": { "label": "oceanography", "description": "Ocean and marine science content", "category": "subject", "enabled": true }, "psychology": { "label": "psychology", "description": "Psychological and behavioral science content", "category": "subject", "enabled": true }, "sociology": { "label": "sociology", "description": "Social science and society-related content", "category": "subject", "enabled": true }, "anthropology": { "label": "anthropology", "description": "Human culture and society content", "category": "subject", "enabled": true }, "economics": { "label": "economics", "description": "Economic and financial content", "category": "subject", "enabled": true }, "political-science": { "label": "political-science", "description": "Political science and governance content", "category": "subject", "enabled": true } }
ngdpbase.tab.pagetabs true
ngdpbase.tab.pagetabs.template Template:PageTabs
ngdpbase.tab.persist true
ngdpbase.tab.style tabs
ngdpbase.telemetry.enabled false
ngdpbase.telemetry.metrics.host 0.0.0.0
ngdpbase.telemetry.metrics.interval 15000
ngdpbase.telemetry.metrics.path /metrics
ngdpbase.telemetry.metrics.port 9464
ngdpbase.telemetry.otlp.enabled false
ngdpbase.telemetry.otlp.endpoint
ngdpbase.telemetry.otlp.headers {}
ngdpbase.telemetry.otlp.interval 30000
ngdpbase.telemetry.otlp.timeout 30000
ngdpbase.telemetry.service-name
ngdpbase.templateDir default
ngdpbase.theme.active volcano
ngdpbase.theme.defaults.mode light
ngdpbase.theme.directory themes
ngdpbase.timezones [ { "value": "UTC", "label": "UTC (Coordinated Universal Time)", "category": "Universal" }, { "value": "America/New_York", "label": "Eastern Time (New York)", "category": "North America" }, { "value": "America/Chicago", "label": "Central Time (Chicago)", "category": "North America" }, { "value": "America/Denver", "label": "Mountain Time (Denver)", "category": "North America" }, { "value": "America/Los_Angeles", "label": "Pacific Time (Los Angeles)", "category": "North America" }, { "value": "America/Toronto", "label": "Eastern Time (Toronto)", "category": "North America" }, { "value": "America/Vancouver", "label": "Pacific Time (Vancouver)", "category": "North America" }, { "value": "Europe/London", "label": "GMT (London)", "category": "Europe" }, { "value": "Europe/Paris", "label": "CET (Paris)", "category": "Europe" }, { "value": "Europe/Berlin", "label": "CET (Berlin)", "category": "Europe" }, { "value": "Europe/Rome", "label": "CET (Rome)", "category": "Europe" }, { "value": "Europe/Madrid", "label": "CET (Madrid)", "category": "Europe" }, { "value": "Europe/Moscow", "label": "MSK (Moscow)", "category": "Europe" }, { "value": "Europe/Stockholm", "label": "CET (Stockholm)", "category": "Europe" }, { "value": "Asia/Tokyo", "label": "JST (Tokyo)", "category": "Asia" }, { "value": "Asia/Shanghai", "label": "CST (Shanghai)", "category": "Asia" }, { "value": "Asia/Seoul", "label": "KST (Seoul)", "category": "Asia" }, { "value": "Asia/Kolkata", "label": "IST (Kolkata)", "category": "Asia" }, { "value": "Asia/Dubai", "label": "GST (Dubai)", "category": "Asia" }, { "value": "Asia/Singapore", "label": "SGT (Singapore)", "category": "Asia" }, { "value": "Australia/Sydney", "label": "AEST (Sydney)", "category": "Oceania" }, { "value": "Australia/Melbourne", "label": "AEST (Melbourne)", "category": "Oceania" }, { "value": "Australia/Perth", "label": "AWST (Perth)", "category": "Oceania" }, { "value": "Pacific/Auckland", "label": "NZST (Auckland)", "category": "Oceania" }, { "value": "Africa/Cairo", "label": "EET (Cairo)", "category": "Africa" }, { "value": "Africa/Johannesburg", "label": "SAST (Johannesburg)", "category": "Africa" }, { "value": "America/Sao_Paulo", "label": "BRT (São Paulo)", "category": "South America" }, { "value": "America/Argentina/Buenos_Aires", "label": "ART (Buenos Aires)", "category": "South America" } ]
ngdpbase.translator-reader.allow-html false
ngdpbase.translator-reader.camel-case-links true
ngdpbase.translator-reader.inline-pattern.1 s/\{\{([^}]+)\}\}/\<tt\>$1\<\/tt\>/g
ngdpbase.translator-reader.match-english-plurals true
ngdpbase.translator-reader.plain-uris true
ngdpbase.url.generator DefaultURLGenerator
ngdpbase.user-keywords { "default": { "label": "default", "description": "Default keyword with no special restrictions", "category": "general", "enabled": true, "restrictEditing": false }, "draft": { "label": "draft", "description": "Work in progress content", "category": "status", "enabled": true, "restrictEditing": false }, "review": { "label": "review", "description": "Content under review", "category": "status", "enabled": true, "restrictEditing": false }, "published": { "label": "published", "description": "Finalized and approved content", "category": "status", "enabled": true, "restrictEditing": false }, "medicine": { "label": "medicine", "description": "Medical and healthcare-related content", "category": "subject", "enabled": true, "restrictEditing": false, "schemaOrg": "MedicalEntity" }, "geology": { "label": "geology", "description": "Geological and earth science content", "category": "subject", "enabled": true, "restrictEditing": false }, "meteorology": { "label": "meteorology", "description": "Weather and atmospheric science content", "category": "subject", "enabled": true, "restrictEditing": false }, "oceanography": { "label": "oceanography", "description": "Ocean and marine science content", "category": "subject", "enabled": true, "restrictEditing": false }, "psychology": { "label": "psychology", "description": "Psychological and behavioral science content", "category": "subject", "enabled": true, "restrictEditing": false }, "sociology": { "label": "sociology", "description": "Social science and society-related content", "category": "subject", "enabled": true, "restrictEditing": false }, "anthropology": { "label": "anthropology", "description": "Human culture and society content", "category": "subject", "enabled": true, "restrictEditing": false }, "economics": { "label": "economics", "description": "Economic and financial content", "category": "subject", "enabled": true, "restrictEditing": false }, "political-science": { "label": "political-science", "description": "Political science and governance content", "category": "subject", "enabled": true, "restrictEditing": false } }
ngdpbase.user.coreFields [ "username", "email", "displayName", "password", "roles", "isActive", "isExternal", "isSystem", "createdAt", "loginCount", "lastLogin", "preferences", "profilePage", "allowedAuthMethods", "avatar" ]
ngdpbase.user.defaults.locale en-us
ngdpbase.user.defaults.timezone utc
ngdpbase.user.enabled true
ngdpbase.user.provider jsonuserprovider
ngdpbase.user.provider.default jsonuserprovider
ngdpbase.user.provider.files.sessions sessions.json
ngdpbase.user.provider.files.users users.json
ngdpbase.user.provider.storagedir ${FAST_STORAGE}/users
ngdpbase.user.security.defaultpassword admin123
ngdpbase.user.security.passwordsalt amdwiki-salt
ngdpbase.user.security.sessionexpiration 86400000
ngdpbase.userdatabase JSONUserDatabase
ngdpbase.version 3.46.1
ngdpbase.workDir ./work
ngdpbase.workflow.approver Admin
ngdpbase.workflow.saveWikiPage false
ngdpbase.xmlGroupDatabase.file ./config/groupdatabase.xml
ngdpbase.xmlUserDatabase.file ./config/userdatabase.xml
Total Variables: 23 | System: 6 | Contextual: 17 | Plugins: 40

Parameters

ParameterTypeDefaultDescription
typestringallWhat to display: all, system, contextual, or plugins

Examples

All variables (default)

[{VariablesPlugin}] renders as:

System Variables
Variables that don't require user or page context
Variable Name Current Value Description
[{$appname}] GeoHazardWatch Application name (alias)
[{$applicationname}] GeoHazardWatch Application name from configuration
[{$version}] 3.46.1 ngdpbase version number
[{$baseurl}] https://geohazardwatch.com Base URL for the wiki
[{$uptime}] 21h 39m 14s Server uptime
[{$totalpages}] 133 Total number of pages in wiki
Contextual Variables
Variables that require user or page context
Variable Name Your Current Value Description
[{$pagename}] Using VariablesPlugin Current page name
[{$username}] Anonymous Current user's name
[{$loginstatus}] Not logged in User authentication status
[{$userroles}] Anonymous, All User's assigned roles
[{$date}] 6/6/2026 Current date
[{$time}] 2:43:43 AM Current time
[{$timestamp}] 2026-06-06T02:43:43.433Z Current ISO timestamp
[{$year}] 2026 Current year
[{$month}] 6 Current month
[{$day}] 6 Current day
[{$displayname}] Anonymous User User's display name
[{$useragent}] Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected]) Browser user agent string
[{$browser}] Unknown Browser Browser name and version
[{$clientip}] ::ffff:10.42.0.147 Client IP address
[{$referer}] Direct HTTP referer
[{$sessionid}] Coo9nDl7polrMBZ8WZ1z3VYM6vuahcMD Session identifier
[{$acceptlanguage}] Unknown Accept-Language header
Available Plugins
Registered plugins that can be invoked in wiki pages
Plugin Name Description Version Author
[{AppHealthPlugin}] Deterministic app-health audit: orphan pages, broken links, stale pages 1.0.0 ngdpbase
[{ATTACH}] Renders wiki attachments inline. Images display as clickable thumbnails; other files display as download links. 1.0.0 Unknown
[{AttachmentsPlugin}] Shows total attachment count or a list of attachments 1.0.0 ngdpbase
[{CommentsPlugin}] Displays page comments and a submission form for authenticated users 1.0.0 ngdpbase
[{ConfigAccessorPlugin}] Access configuration values including roles, features, and system settings 2.9.0 ngdpbase
[{CounterPlugin}] Maintains page-specific counters for numbering and tracking 1.0.0 ngdpbase
[{CurrentTimePlugin}] Displays current date and time with user locale/timezone preferences 1.0.0 ngdpbase
[{EarthquakeList}] No description N/A Unknown
[{EarthquakeMap}] No description N/A Unknown
[{FootnotesPlugin}] Lists footnote definitions from sidecar storage with editor CRUD UI 2.0.0 ngdpbase
[{HansAlerts}] No description N/A Unknown
[{Image}] Renders an image with optional caption, alignment, and display mode control N/A Unknown
[{IndexPlugin}] Generates an alphabetical index of all wiki pages 1.0.0 ngdpbase
[{InsertPlugin}] Embed another wiki page (or one section of it) into the current page 1.0.0 ngdpbase
[{Location}] Display locations with map links and embedded previews 1.0.0 ngdpbase
[{MarqueePlugin}] CSS scrolling text banner (marquee replacement) 1.0.0 ngdpbase
[{MediaGallery}] Displays a gallery of media items (stub — MediaManager not yet available) 0.1.0 ngdpbase
[{MediaItem}] Embeds a single media item inline (stub — MediaManager not yet available) 0.1.0 ngdpbase
[{MediaPlugin}] Shows total media item count, a list, or a thumbnail album of indexed media items 1.2.0 ngdpbase
[{MediaSearch}] Displays media search results (stub — MediaManager not yet available) 0.1.0 ngdpbase
[{MyContributionsPlugin}] Renders the My Contributions card from /profile on any wiki page 1.0.0 ngdpbase
[{MyLinksPlugin}] Renders the current user's pinned My Links sidebar section 1.0.0 ngdpbase
[{PageSlideshowPlugin}] Bootstrap 5 carousel cycling through wiki page content 1.0.0 ngdpbase
[{RecentChangesPlugin}] Displays recent page changes in chronological order 2.0.0 ngdpbase
[{ReferringPagesPlugin}] Lists pages that refer to the current page 1.0.0 ngdpbase
[{SearchPlugin}] JSPWiki-style search plugin for embedding search results in pages 2.0.0 ngdpbase
[{SessionsPlugin}] Shows active session count or list of authenticated users 2.0.0 ngdpbase
[{SlideshowPlugin}] Bootstrap 5 image carousel / slideshow 1.0.0 ngdpbase
[{TablePlugin}] JSPWiki-compatible Table plugin — enables # auto-numbering in table rows 1.0.0 ngdpbase
[{TabPlugin}] Defines a tab within [{Tabs}]; rendering is handled by TabsPlugin 1.0.0 ngdpbase
[{TabsPlugin}] Renders Bootstrap nav-tabs from [{Tab name="..."}]content[{/Tab}] body blocks 1.0.0 ngdpbase
[{TotalPagesPlugin}] Shows the total number of pages 1.0.0 ngdpbase
[{UndefinedPagesPlugin}] Lists pages that are linked to (RED-LINKs) but do not exist 1.2.0 ngdpbase
[{UptimePlugin}] Shows the server uptime 1.0.0 ngdpbase
[{UserLookupPlugin}] Search and display users — permission-gated PII via API 1.0.0 ngdpbase
[{VariablesPlugin}] Displays system and contextual variables available in the wiki 1.0.0 ngdpbase
[{VolcanoInfobox}] No description N/A Unknown
[{VolcanoList}] No description N/A Unknown
[{VolcanoMap}] No description N/A Unknown
[{VolcanoSearch}] No description N/A Unknown
Configuration Values (439 matches) — ngdpbase.*
Key Value
ngdpbase.access-control.business-hours.days monday,tuesday,wednesday,thursday,friday
ngdpbase.access-control.business-hours.enabled false
ngdpbase.access-control.business-hours.end 17:00
ngdpbase.access-control.business-hours.start 09:00
ngdpbase.access-control.context-aware.enabled true
ngdpbase.access-control.context-aware.time-zone UTC
ngdpbase.access-control.custom-schedules.enabled false
ngdpbase.access-control.custom-schedules.schedules ./config/schedules.json
ngdpbase.access-control.holidays.calendar ./config/holidays.json
ngdpbase.access-control.holidays.enabled false
ngdpbase.access.policies [ { "id": "admin-full-access", "name": "Administrator Full Access", "description": "Full system access for administrators - all page and admin permissions", "priority": 100, "effect": "allow", "subjects": [ { "type": "role", "value": "admin" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read", "page-edit", "page-create", "page-delete", "page-rename", "page-export", "asset-read", "asset-upload", "asset-delete", "search-page", "search-user", "user-read", "user-edit", "user-create", "user-delete", "admin-roles", "admin-system" ] }, { "id": "user-admin-permissions", "name": "User Administrator Permissions", "description": "Can manage users — create, edit, deactivate, delete", "priority": 95, "effect": "allow", "subjects": [ { "type": "role", "value": "user-admin" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "user-read", "user-edit", "user-create", "user-delete", "search-user" ] }, { "id": "editor-permissions", "name": "Editor Permissions", "description": "Can create, edit, delete, and rename pages plus manage assets", "priority": 80, "effect": "allow", "subjects": [ { "type": "role", "value": "editor" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read", "page-edit", "page-create", "page-delete", "page-rename", "page-export", "asset-read", "asset-upload", "asset-delete", "search-page" ] }, { "id": "contributor-permissions", "name": "Contributor Permissions", "description": "Can create and edit pages, upload assets (no delete/rename)", "priority": 70, "effect": "allow", "subjects": [ { "type": "role", "value": "contributor" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read", "page-edit", "page-create", "page-export", "asset-read", "asset-upload", "search-page" ] }, { "id": "reader-permissions", "name": "Reader Permissions", "description": "Read-only access - can view pages and assets, search, and export", "priority": 60, "effect": "allow", "subjects": [ { "type": "role", "value": "reader" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read", "page-export", "asset-read", "search-page" ] }, { "id": "member-permissions", "name": "Member Permissions", "description": "Community member read-only access", "priority": 55, "effect": "allow", "subjects": [ { "type": "role", "value": "member" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read", "asset-read", "search-page" ] }, { "id": "anonymous-read-only", "name": "Anonymous Read Access", "description": "Anonymous users can only read pages", "priority": 50, "effect": "allow", "subjects": [ { "type": "role", "value": "anonymous" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read" ] }, { "id": "deny-anonymous-system-pages", "name": "Deny Anonymous System Pages", "description": "Block anonymous access to system and admin category pages", "priority": 90, "effect": "deny", "subjects": [ { "type": "role", "value": "anonymous" } ], "resources": [ { "type": "category", "value": "system" }, { "type": "category", "value": "admin" } ], "actions": [ "*" ] }, { "id": "default-view-for-all", "name": "Default View Access for All", "description": "Fallback - all authenticated users can at minimum view pages", "priority": 1, "effect": "allow", "subjects": [ { "type": "role", "value": "All" } ], "resources": [ { "type": "page", "pattern": "*" } ], "actions": [ "page-read" ] } ]
ngdpbase.access.policies.default-policy deny
ngdpbase.access.policies.enabled true
ngdpbase.addons {}
ngdpbase.addons.forms.dataPath ${FAST_STORAGE}/forms
ngdpbase.addons.forms.enabled false
ngdpbase.addons.forms.notifyRole admin
ngdpbase.addons.geohazardwatch.dataPath
ngdpbase.addons.geohazardwatch.enabled true
ngdpbase.addons.geohazardwatch.eqIntervalMs 1200000
ngdpbase.addons.geohazardwatch.hansIntervalMs 600000
ngdpbase.application-name GeoHazardWatch
ngdpbase.application.base-url https://geohazardwatch.com
ngdpbase.application.category Digital Platform
ngdpbase.application.contact.enabled true
ngdpbase.application.contact.footer.enabled true
ngdpbase.application.contact.page
ngdpbase.application.contact.persist.enabled true
ngdpbase.application.contact.persist.path
ngdpbase.application.contact.recipient [email protected]
ngdpbase.application.organization.file geohazardwatch.json
ngdpbase.application.organization.provider fileorganizationprovider
ngdpbase.application.organization.provider.default fileorganizationprovider
ngdpbase.application.organization.storagedir ${FAST_STORAGE}/organizations
ngdpbase.application.persons.provider filepersonprovider
ngdpbase.application.persons.provider.default filepersonprovider
ngdpbase.application.persons.storagedir ${FAST_STORAGE}/persons
ngdpbase.application.registration false
ngdpbase.application.registration.redirect-page request-access
ngdpbase.application.roles.provider fileroleprovider
ngdpbase.application.roles.provider.default fileroleprovider
ngdpbase.application.roles.storagedir ${FAST_STORAGE}/roles
ngdpbase.approver.workflow.save-wiki-page Admin
ngdpbase.attachment.allowedtypes image/*,text/*,application/pdf
ngdpbase.attachment.enabled true
ngdpbase.attachment.enhanced.cachemetadata true
ngdpbase.attachment.enhanced.enabled true
ngdpbase.attachment.enhanced.generatethumbnails true
ngdpbase.attachment.enhanced.iconpath /icons/filetypes
ngdpbase.attachment.enhanced.metadata true
ngdpbase.attachment.enhanced.showfilesize true
ngdpbase.attachment.enhanced.showmetadata true
ngdpbase.attachment.enhanced.showmodified true
ngdpbase.attachment.enhanced.thumbnails true
ngdpbase.attachment.enhanced.thumbnailsizes 150x150,300x300
ngdpbase.attachment.forcedownload false
ngdpbase.attachment.maxsize 10485760
ngdpbase.attachment.metadatafile ${SLOW_STORAGE}/attachments/attachment-metadata.json
ngdpbase.attachment.provider basicattachmentprovider
ngdpbase.attachment.provider.basic.hashcontent true
ngdpbase.attachment.provider.basic.hashmethod sha256
ngdpbase.attachment.provider.basic.storagedir ${SLOW_STORAGE}/attachments
ngdpbase.attachment.provider.default basicattachmentprovider
ngdpbase.audit.enabled true
ngdpbase.audit.flushinterval 30000
ngdpbase.audit.loglevel info
ngdpbase.audit.maxqueuesize 1000
ngdpbase.audit.provider fileauditprovider
ngdpbase.audit.provider.cloud.loggroup /ngdpbase/audit
ngdpbase.audit.provider.cloud.logstream audit-events
ngdpbase.audit.provider.cloud.region us-east-1
ngdpbase.audit.provider.cloud.service cloudwatch
ngdpbase.audit.provider.database.connectionstring
ngdpbase.audit.provider.database.maxconnections 10
ngdpbase.audit.provider.database.tablename audit_logs
ngdpbase.audit.provider.database.type postgresql
ngdpbase.audit.provider.default fileauditprovider
ngdpbase.audit.provider.file.archivefilename audit-archive.log
ngdpbase.audit.provider.file.auditfilename audit.log
ngdpbase.audit.provider.file.logdirectory ${FAST_STORAGE}/logs
ngdpbase.audit.provider.file.maxfiles 10
ngdpbase.audit.provider.file.maxfilesize 10MB
ngdpbase.audit.retentiondays 90
ngdpbase.auth.cloudflare-access.application-aud
ngdpbase.auth.cloudflare-access.default-role occupant
ngdpbase.auth.cloudflare-access.enabled false
ngdpbase.auth.cloudflare-access.group-map {}
ngdpbase.auth.cloudflare-access.team-domain
ngdpbase.auth.google-oidc.auto-provision true
ngdpbase.auth.google-oidc.callback-url
ngdpbase.auth.google-oidc.client-id
ngdpbase.auth.google-oidc.client-secret
ngdpbase.auth.google-oidc.default-roles [ "occupant" ]
ngdpbase.auth.google-oidc.deny-redirect /login?error=Access+denied
ngdpbase.auth.google-oidc.enabled false
ngdpbase.auth.google-oidc.hd
ngdpbase.auth.magic-link.enabled false
ngdpbase.auth.magic-link.ttl-minutes 15
ngdpbase.auth.password.enabled true
ngdpbase.auth.required-factors [ "password" ]
ngdpbase.auth.user.default-external false
ngdpbase.authorizer DefaultAuthorizer
ngdpbase.backup.auto-backup false
ngdpbase.backup.auto-backup-days daily
ngdpbase.backup.auto-backup-interval 86400000
ngdpbase.backup.auto-backup-time 02:00
ngdpbase.backup.compress true
ngdpbase.backup.directory ${SLOW_STORAGE}/backups
ngdpbase.backup.max-backups 10
ngdpbase.backup.provider filebackupprovider
ngdpbase.breadcrumbs.maxpages 10
ngdpbase.cache.checkperiod 120
ngdpbase.cache.defaultttl 300
ngdpbase.cache.enabled true
ngdpbase.cache.maxkeys 1000
ngdpbase.cache.provider nodecacheprovider
ngdpbase.cache.provider.default nodecacheprovider
ngdpbase.cache.provider.nodecache.checkperiod 120
ngdpbase.cache.provider.nodecache.maxkeys 1000
ngdpbase.cache.provider.nodecache.stdttl 300
ngdpbase.cache.provider.nodecache.useclones true
ngdpbase.cache.provider.redis.connecttimeout 5000
ngdpbase.cache.provider.redis.enablecluster false
ngdpbase.cache.provider.redis.keyprefix ngdpbase:
ngdpbase.cache.provider.redis.url redis://localhost:6379
ngdpbase.catalog.ai.enabled false
ngdpbase.catalog.ai.provider null
ngdpbase.catalog.ai.threshold 0.7
ngdpbase.comments.allow true
ngdpbase.comments.storagedir ${SLOW_STORAGE}/comments
ngdpbase.default.system-category general
ngdpbase.default.template.dateformat dd-MMM-yyyy HH:mm
ngdpbase.default.timezone UTC
ngdpbase.diff-provider TraditionalDiffProvider
ngdpbase.directories.data ${FAST_STORAGE}
ngdpbase.directories.pages ${SLOW_STORAGE}/pages
ngdpbase.directories.required-pages ./required-pages
ngdpbase.directories.resources ./resources
ngdpbase.directories.schemas ${FAST_STORAGE}/schemas
ngdpbase.directories.templates ./templates
ngdpbase.directories.users ${FAST_STORAGE}/users
ngdpbase.directories.work ./
ngdpbase.encoding UTF-8
ngdpbase.favicon-path /favicon.svg
ngdpbase.features.export.html true
ngdpbase.features.export.odt false
ngdpbase.features.export.pdf false
ngdpbase.features.images.allowed-types image/jpeg,image/png,image/gif,image/webp
ngdpbase.features.images.default-alt Uploaded image
ngdpbase.features.images.default-class wiki-image
ngdpbase.features.images.enabled true
ngdpbase.features.images.max-size 5MB
ngdpbase.features.images.upload-dir ./public/images
ngdpbase.features.llm.enabled false
ngdpbase.features.llm.endpoint http://localhost:11434
ngdpbase.features.llm.model llama2
ngdpbase.features.maintenance.allow-admins true
ngdpbase.features.maintenance.enabled false
ngdpbase.features.maintenance.estimated-duration null
ngdpbase.features.maintenance.message System is currently under maintenance. Please try again later.
ngdpbase.fetch-timeout-ms 30000
ngdpbase.footnotes.enabled true
ngdpbase.footnotes.storagedir ${SLOW_STORAGE}/footnotes
ngdpbase.front-page volcanoes-and-earthquakes
ngdpbase.github.repo jwilleke/ngdpbase
ngdpbase.groupdatabase JSONGroupDatabase
ngdpbase.holidays.dates { "2025-01-01": { "name": "New Year's Day", "message": "Access restricted on New Year's Day", "enabled": true }, "2025-07-04": { "name": "Independence Day", "message": "Access restricted on Independence Day", "enabled": true }, "2025-12-25": { "name": "Christmas Day", "message": "Access restricted on Christmas Day", "enabled": true }, "2025-12-26": { "name": "Boxing Day", "message": "Access restricted on Boxing Day", "enabled": true } }
ngdpbase.holidays.enabled true
ngdpbase.holidays.recurring { "*-01-01": { "name": "New Year's Day", "message": "Access restricted on New Year's Day", "enabled": true }, "*-12-25": { "name": "Christmas Day", "message": "Access restricted on Christmas Day", "enabled": true } }
ngdpbase.interwiki.enabled true
ngdpbase.interwiki.options { "openInNewWindow": true, "addIconIndicator": true, "caseSensitive": false, "showTooltips": true, "cacheTTL": 3600, "maxCacheEntries": 1000 }
ngdpbase.interwiki.sites { "Wikipedia": { "url": "https://en.wikipedia.org/wiki/%s", "description": "Wikipedia, the free encyclopedia", "icon": "wikipedia.png", "enabled": true, "openInNewWindow": true }, "JSPWiki": { "url": "https://jspwiki-wiki.apache.org/Wiki.jsp?page=%s", "description": "Apache JSPWiki Documentation", "icon": "jspwiki.png", "enabled": true, "openInNewWindow": true }, "MeatBall": { "url": "http://www.usemod.com/cgi-bin/mb.pl?%s", "description": "MeatBall Wiki", "icon": "meatball.png", "enabled": true, "openInNewWindow": true }, "C2": { "url": "http://wiki.c2.com/?%s", "description": "C2 Wiki (Portland Pattern Repository)", "icon": "c2.png", "enabled": false, "openInNewWindow": true }, "GVP": { "url": "https://volcano.si.edu/volcano.cfm?vn=%s", "description": "GVP (Global Volcanism Program)", "icon": "gvp-icon.jpg", "enabled": true, "openInNewWindow": true }, "GVP-COUNTRY": { "url": "https://volcano.si.edu/volcanolist_countries.cfm?country=%s", "description": "GVP (Global Volcanism Program) — Volcanoes by Country", "icon": "gvp-icon.jpg", "enabled": true, "openInNewWindow": true } }
ngdpbase.jsonorganizationsdatabase users/organizations.json
ngdpbase.jsonpersonsdatabase .users/persons.json
ngdpbase.jsonuserdatabase .users/users.json
ngdpbase.knowledge-role { "source": { "label": "source", "description": "Authoritative primary content; body treated as immutable (step 2 of LLM-wiki build plan)", "default": false, "enabled": true, "page-badge": { "color": "bg-dark", "label": "Source", "title": "Source page — primary, immutable material" } }, "citation": { "label": "citation", "description": "Interpretive claim grounded in one or more sources", "default": false, "enabled": true, "page-badge": { "color": "bg-warning text-dark", "label": "Citation", "title": "Citation page — claims grounded in sources" } }, "concept": { "label": "concept", "description": "Synthesis drawing on multiple citations", "default": false, "enabled": true, "page-badge": { "color": "bg-danger", "label": "Concept", "title": "Concept page — synthesis across citations" } } }
ngdpbase.location.default-provider osm
ngdpbase.logging.debug.enabled false
ngdpbase.logging.debug.login false
ngdpbase.logging.debug.session false
ngdpbase.logging.dir ${FAST_STORAGE}/logs
ngdpbase.logging.level info
ngdpbase.logging.max-files 5
ngdpbase.logging.max-size 1MB
ngdpbase.logging.provider fileloggingprovider
ngdpbase.login-module.class CookieAuthenticationLoginModule
ngdpbase.lucene-search-provider.lucene-directory ./lucene
ngdpbase.mail.enabled true
ngdpbase.mail.from GeoHazardWatch Contact <[email protected]>
ngdpbase.mail.honeypot.enabled true
ngdpbase.mail.provider smtp
ngdpbase.mail.provider.smtp.from
ngdpbase.mail.provider.smtp.host smtp.gmail.com
ngdpbase.mail.provider.smtp.pass nqyiswddgaicffnq
ngdpbase.mail.provider.smtp.port 587
ngdpbase.mail.provider.smtp.secure false
ngdpbase.mail.provider.smtp.user [email protected]
ngdpbase.mail.rate-limit.enabled true
ngdpbase.mail.rate-limit.max-submissions 5
ngdpbase.mail.rate-limit.window-minutes 15
ngdpbase.managers.addons-manager.addons-path [ "/app/addons", "/opt/geohazardwatch/addons" ]
ngdpbase.managers.addons-manager.enabled true
ngdpbase.managers.cache-manager.enabled true
ngdpbase.managers.page-manager.enabled true
ngdpbase.managers.plugin-manager.enabled true
ngdpbase.managers.plugin-manager.search-paths [ "./dist/src/plugins" ]
ngdpbase.managers.rendering-manager.enabled true
ngdpbase.managers.search-manager.enabled true
ngdpbase.managers.template-manager.enabled true
ngdpbase.markdown.footnotes.enabled true
ngdpbase.markdown.ncm.image.ad-deny-list [ "doubleclick.net", "googlesyndication.com", "google-analytics.com", "facebook.com/tr", "scorecardresearch.com" ]
ngdpbase.markup.cache-ttl 300
ngdpbase.markup.cache.enable-warmup true
ngdpbase.markup.cache.handler-results.enabled true
ngdpbase.markup.cache.handler-results.max-size 2000
ngdpbase.markup.cache.handler-results.ttl 600
ngdpbase.markup.cache.metrics-enabled true
ngdpbase.markup.cache.parse-results.enabled true
ngdpbase.markup.cache.parse-results.max-size 1000
ngdpbase.markup.cache.parse-results.ttl 300
ngdpbase.markup.cache.patterns.enabled true
ngdpbase.markup.cache.patterns.max-size 100
ngdpbase.markup.cache.patterns.ttl 3600
ngdpbase.markup.cache.variables.enabled true
ngdpbase.markup.cache.variables.max-size 500
ngdpbase.markup.cache.variables.ttl 900
ngdpbase.markup.caching true
ngdpbase.markup.enabled true
ngdpbase.markup.fallback-to-legacy true
ngdpbase.markup.fenced-code-tags [ "text", "plain", "none", "javascript", "js", "typescript", "ts", "jsx", "tsx", "html", "xml", "svg", "css", "scss", "sass", "less", "json", "yaml", "yml", "toml", "bash", "sh", "shell", "zsh", "python", "py", "java", "kotlin", "c", "cpp", "csharp", "cs", "go", "rust", "ruby", "php", "sql", "markdown", "md", "diff", "patch", "mermaid" ]
ngdpbase.markup.filters.custom.auto-load true
ngdpbase.markup.filters.custom.cache-results true
ngdpbase.markup.filters.custom.enabled false
ngdpbase.markup.filters.custom.search-paths ./filters,./src/filters
ngdpbase.markup.filters.enabled true
ngdpbase.markup.filters.pipeline.enable-profiling true
ngdpbase.markup.filters.pipeline.fail-on-error false
ngdpbase.markup.filters.pipeline.max-filters 50
ngdpbase.markup.filters.pipeline.timeout 10000
ngdpbase.markup.filters.security.allowed-attributes class,id,href,src,alt,title
ngdpbase.markup.filters.security.allowed-tags p,div,span,strong,em,ul,ol,li,h1,h2,h3,h4,h5,h6,a,img
ngdpbase.markup.filters.security.enabled false
ngdpbase.markup.filters.security.prevent-csrf true
ngdpbase.markup.filters.security.prevent-xss true
ngdpbase.markup.filters.security.priority 110
ngdpbase.markup.filters.security.sanitize-html true
ngdpbase.markup.filters.security.strip-dangerous-content true
ngdpbase.markup.filters.spam.blacklist-words spam,casino,pharmacy,viagra
ngdpbase.markup.filters.spam.cache-blacklist true
ngdpbase.markup.filters.spam.enabled false
ngdpbase.markup.filters.spam.max-images 5
ngdpbase.markup.filters.spam.max-links 10
ngdpbase.markup.filters.spam.priority 100
ngdpbase.markup.filters.spam.whitelist-domains wikipedia.org,github.com,stackoverflow.com
ngdpbase.markup.filters.validation.enabled true
ngdpbase.markup.filters.validation.max-content-length 1048576
ngdpbase.markup.filters.validation.priority 90
ngdpbase.markup.filters.validation.report-errors true
ngdpbase.markup.filters.validation.validate-images true
ngdpbase.markup.filters.validation.validate-links true
ngdpbase.markup.filters.validation.validate-markup true
ngdpbase.markup.handler-registry.allow-duplicate-priorities true
ngdpbase.markup.handler-registry.default-timeout 5000
ngdpbase.markup.handler-registry.enable-conflict-detection true
ngdpbase.markup.handler-registry.enable-dependency-resolution true
ngdpbase.markup.handler-registry.max-handlers 100
ngdpbase.markup.handlers.attachment.enabled true
ngdpbase.markup.handlers.attachment.enhanced true
ngdpbase.markup.handlers.attachment.metadata true
ngdpbase.markup.handlers.attachment.priority 75
ngdpbase.markup.handlers.attachment.thumbnails true
ngdpbase.markup.handlers.form.enabled true
ngdpbase.markup.handlers.form.priority 85
ngdpbase.markup.handlers.interwiki.enabled true
ngdpbase.markup.handlers.interwiki.priority 80
ngdpbase.markup.handlers.plugin.enabled true
ngdpbase.markup.handlers.plugin.priority 90
ngdpbase.markup.handlers.rss.enabled true
ngdpbase.markup.handlers.rss.priority 60
ngdpbase.markup.handlers.search.enabled true
ngdpbase.markup.handlers.search.priority 65
ngdpbase.markup.handlers.style.enabled true
ngdpbase.markup.handlers.style.priority 70
ngdpbase.markup.handlers.wikitag.enabled true
ngdpbase.markup.handlers.wikitag.priority 95
ngdpbase.markup.integration.rendering-manager true
ngdpbase.markup.log-parsing-method true
ngdpbase.markup.use-advanced-parser true
ngdpbase.maximum.user-keywords 5
ngdpbase.media.enabled false
ngdpbase.media.extensions [ "jpg", "jpeg", "png", "gif", "heic", "heif", "tiff", "tif", "webp", "raw", "orf", "cr2", "nef", "arw", "dng", "bmp", "mp4", "mov", "avi", "mkv", "m4v", "wmv", "3gp" ]
ngdpbase.media.folders []
ngdpbase.media.ignoredirs [ ".dtrash", ".ts" ]
ngdpbase.media.maxdepth 5
ngdpbase.media.metadata.priority [ "EXIF", "IPTC", "XMP" ]
ngdpbase.media.readonly true
ngdpbase.media.scaninterval 3600000
ngdpbase.media.thumbnail.sizes 300x300,150x150
ngdpbase.notifications.auto-save-interval 300000
ngdpbase.notifications.dir ${FAST_STORAGE}/notifications
ngdpbase.notifications.escalation.enabled false
ngdpbase.notifications.escalation.levels [ "error" ]
ngdpbase.notifications.escalation.recipient-role admin
ngdpbase.notifications.file notifications.json
ngdpbase.page.enabled true
ngdpbase.page.nofooter [ "LeftMenu", "Footer", "Template:PageTabs" ]
ngdpbase.page.notabs [ "LeftMenu", "Footer", "Template:PageTabs" ]
ngdpbase.page.provider versioningfileprovider
ngdpbase.page.provider.default filesystemprovider
ngdpbase.page.provider.filesystem.autosave true
ngdpbase.page.provider.filesystem.encoding utf-8
ngdpbase.page.provider.filesystem.requiredpagesdir ./required-pages
ngdpbase.page.provider.filesystem.storagedir ${SLOW_STORAGE}/pages
ngdpbase.page.provider.versioning.indexfile ${FAST_STORAGE}/page-index.json
ngdpbase.pageFilters org.apache.wiki.filters.BasicPageFilter,org.apache.wiki.filters.ProfanityFilter
ngdpbase.permissions.definitions { "page-read": { "description": "View pages", "icon": "eye", "color": "#6c757d" }, "page-edit": { "description": "Edit pages", "icon": "edit", "color": "#007bff" }, "page-create": { "description": "Create new pages", "icon": "plus", "color": "#28a745" }, "page-delete": { "description": "Delete pages", "icon": "trash", "color": "#dc3545" }, "page-rename": { "description": "Rename pages", "icon": "i-cursor", "color": "#fd7e14" }, "page-export": { "description": "Export pages", "icon": "file-export", "color": "#6c757d" }, "asset-read": { "description": "View assets (attachments)", "icon": "paperclip", "color": "#6c757d" }, "asset-upload": { "description": "Upload assets", "icon": "upload", "color": "#28a745" }, "asset-delete": { "description": "Delete assets", "icon": "trash", "color": "#dc3545" }, "search-page": { "description": "Search pages", "icon": "search", "color": "#6c757d" }, "search-user": { "description": "Search users", "icon": "search", "color": "#6c757d" }, "user-read": { "description": "View user list and profiles", "icon": "users", "color": "#6c757d" }, "user-edit": { "description": "Edit user accounts", "icon": "user-edit", "color": "#007bff" }, "user-create": { "description": "Create user accounts", "icon": "user-plus", "color": "#28a745" }, "user-delete": { "description": "Delete user accounts", "icon": "user-minus", "color": "#dc3545" }, "admin-system": { "description": "System administration", "icon": "cog", "color": "#dc3545" }, "admin-roles": { "description": "Role management", "icon": "shield-alt", "color": "#dc3545" } }
ngdpbase.plugin.searchresult.maxItems 50
ngdpbase.plugin.searchresult.showScore true
ngdpbase.plugin.versioning.use true
ngdpbase.plugins.enabled true
ngdpbase.plugins.searchPath ./plugins
ngdpbase.referenceStyle relative
ngdpbase.roles.definitions { "admin": { "name": "admin", "displayname": "Administrator", "description": "Full system access to all features", "issystem": true, "icon": "shield-alt", "color": "#dc3545", "permissions": [ "page-read", "page-edit", "page-create", "page-delete", "page-rename", "page-export", "asset-read", "asset-upload", "asset-delete", "search-page", "search-user", "user-read", "user-edit", "user-create", "user-delete", "admin-system", "admin-roles" ] }, "user-admin": { "name": "user-admin", "displayname": "User Administrator", "description": "Can manage users — create, edit, deactivate, delete", "issystem": true, "icon": "user-cog", "color": "#6610f2", "permissions": [ "user-read", "user-edit", "user-create", "user-delete", "search-user" ] }, "editor": { "name": "editor", "displayname": "Editor", "description": "Can create, edit, delete, and rename pages", "issystem": true, "icon": "edit", "color": "#007bff", "permissions": [ "page-read", "page-edit", "page-create", "page-delete", "page-rename", "page-export", "asset-read", "asset-upload", "asset-delete", "search-page" ] }, "contributor": { "name": "contributor", "displayname": "Contributor", "description": "Can create and edit pages", "issystem": true, "icon": "user-edit", "color": "#28a745", "permissions": [ "page-read", "page-edit", "page-create", "page-export", "asset-read", "asset-upload", "search-page" ] }, "reader": { "name": "reader", "displayname": "Reader", "description": "Read-only access to content", "issystem": true, "icon": "book-reader", "color": "#6c757d", "permissions": [ "page-read", "page-export", "asset-read", "search-page" ] }, "member": { "name": "member", "displayname": "Member", "description": "Community member — same read access as reader, placeholder for community-specific permissions", "issystem": true, "icon": "id-card", "color": "#20c997", "permissions": [ "page-read", "asset-read", "search-page" ] }, "anonymous": { "name": "anonymous", "displayname": "Anonymous", "description": "Public access without authentication", "issystem": true, "icon": "user-secret", "color": "#adb5bd", "permissions": [ "page-read", "asset-read" ] } }
ngdpbase.rss.channel-description RSS feed for ngdpbase updates
ngdpbase.rss.channel-title ngdpbase RSS Feed
ngdpbase.rss.file-name rss.xml
ngdpbase.rss.generate true
ngdpbase.rss.interval 3600
ngdpbase.schedules { "business-hours": { "name": "Standard Business Hours", "description": "Monday-Friday, 9 AM - 5 PM", "timeZone": "America/New_York", "rules": [ { "days": [ "monday", "tuesday", "wednesday", "thursday", "friday" ], "startTime": "09:00", "endTime": "17:00", "type": "allow" }, { "days": [ "saturday", "sunday" ], "type": "deny" } ], "exceptions": [], "enabled": true }, "weekend-support": { "name": "Weekend Support", "description": "Limited weekend access for critical issues", "timeZone": "America/New_York", "rules": [ { "days": [ "monday", "tuesday", "wednesday", "thursday", "friday" ], "startTime": "09:00", "endTime": "17:00", "type": "allow" }, { "days": [ "saturday" ], "startTime": "10:00", "endTime": "14:00", "type": "allow" }, { "days": [ "sunday" ], "type": "deny" } ], "exceptions": [], "enabled": true }, "emergency-24-7": { "name": "24/7 Emergency Access", "description": "Full access for emergency situations", "timeZone": "UTC", "rules": [ { "type": "allow" } ], "exceptions": [], "enabled": true }, "role_admin": { "name": "Administrator Schedule", "description": "Extended hours for administrators", "timeZone": "America/New_York", "rules": [ { "days": [ "monday", "tuesday", "wednesday", "thursday", "friday" ], "startTime": "08:00", "endTime": "18:00", "type": "allow" }, { "days": [ "saturday" ], "startTime": "09:00", "endTime": "12:00", "type": "allow" } ], "exceptions": [], "enabled": true }, "category_System": { "name": "System Pages Schedule", "description": "Restricted access to system pages", "timeZone": "America/New_York", "rules": [ { "days": [ "monday", "tuesday", "wednesday", "thursday", "friday" ], "startTime": "09:00", "endTime": "17:00", "type": "allow" } ], "exceptions": [], "enabled": true }, "default": { "name": "Default Schedule", "description": "Fallback schedule for users without specific assignments", "timeZone": "UTC", "rules": [ { "days": [ "monday", "tuesday", "wednesday", "thursday", "friday" ], "startTime": "09:00", "endTime": "17:00", "type": "allow" } ], "exceptions": [], "enabled": true } }
ngdpbase.schedules.enabled true
ngdpbase.schema-types { "documentation": "TechArticle", "developer": "TechArticle", "journal": "BlogPosting" }
ngdpbase.search.autocomplete.enabled true
ngdpbase.search.autocomplete.minlength 2
ngdpbase.search.enabled true
ngdpbase.search.maxresults 50
ngdpbase.search.plugin.allowAdvanced true
ngdpbase.search.plugin.cacheResults true
ngdpbase.search.plugin.cacheTTL 300
ngdpbase.search.plugin.maxResults 50
ngdpbase.search.plugin.showScore true
ngdpbase.search.provider lunrsearchprovider
ngdpbase.search.provider.default lunrsearchprovider
ngdpbase.search.provider.elasticsearch.autotagging.enabled false
ngdpbase.search.provider.elasticsearch.connecttimeout 5000
ngdpbase.search.provider.elasticsearch.indexname ngdpbase-pages
ngdpbase.search.provider.elasticsearch.requesttimeout 30000
ngdpbase.search.provider.elasticsearch.url http://localhost:9200
ngdpbase.search.provider.lunr.boost.keywords 4
ngdpbase.search.provider.lunr.boost.systemcategory 8
ngdpbase.search.provider.lunr.boost.tags 5
ngdpbase.search.provider.lunr.boost.title 10
ngdpbase.search.provider.lunr.boost.userkeywords 6
ngdpbase.search.provider.lunr.indexdir ${FAST_STORAGE}/search-index
ngdpbase.search.provider.lunr.maxresults 50
ngdpbase.search.provider.lunr.snippetlength 200
ngdpbase.search.provider.lunr.stemming true
ngdpbase.search.suggestions.enabled true
ngdpbase.search.suggestions.maxitems 10
ngdpbase.server.host 0.0.0.0
ngdpbase.server.port 3000
ngdpbase.session.http-only true
ngdpbase.session.max-age 86400000
ngdpbase.session.sameSite lax
ngdpbase.session.secret ngdpbase-session-secret-change-in-production
ngdpbase.session.secure true
ngdpbase.session.storagedir ${FAST_STORAGE}/sessions
ngdpbase.session.store users/sessions.json
ngdpbase.specialpage.diff Diff.jsp
ngdpbase.specialpage.findpage FindPage.jsp
ngdpbase.specialpage.login Login.jsp
ngdpbase.specialpage.search Search.jsp
ngdpbase.specialpage.upload Upload.jsp
ngdpbase.specialpage.userpreferences UserPreferences.jsp
ngdpbase.specialpage.workflow Workflow.jsp
ngdpbase.storageLocation.aclBasedStorage true
ngdpbase.storageLocation.categoryBasedStorage.Admin required
ngdpbase.storageLocation.categoryBasedStorage.Documentation regular
ngdpbase.storageLocation.categoryBasedStorage.General regular
ngdpbase.storageLocation.categoryBasedStorage.Security required
ngdpbase.storageLocation.categoryBasedStorage.System required
ngdpbase.storageLocation.enabled true
ngdpbase.storageLocation.roleBasedStorage.admin required
ngdpbase.storageLocation.roleBasedStorage.editor regular
ngdpbase.storageLocation.roleBasedStorage.user regular
ngdpbase.style.bootstrap.integration true
ngdpbase.style.custom-classes.enabled true
ngdpbase.style.predefined.background bg-primary,bg-secondary,bg-light,bg-dark
ngdpbase.style.predefined.layout text-center,text-left,text-right,float-left,float-right
ngdpbase.style.predefined.text text-primary,text-secondary,text-success,text-danger,text-warning,text-info
ngdpbase.style.security.allow-inline-css false
ngdpbase.style.security.allowed-properties color,background-color,font-weight,font-style,text-align
ngdpbase.system-category { "general": { "label": "general", "description": "General User pages", "default": true, "storageLocation": "regular", "enabled": true }, "system": { "label": "system", "description": "System configuration and infrastructure pages", "default": false, "storageLocation": "required", "enabled": true, "page-badge": { "color": "bg-secondary", "label": "System", "title": "System page" } }, "documentation": { "label": "documentation", "description": "End-User documentation", "default": false, "storageLocation": "required", "enabled": true, "page-badge": { "color": "bg-info text-dark", "label": "Documentation", "title": "Documentation page" } }, "developer": { "label": "developer", "description": "Developer documentation and technical note Only in GitHub", "default": false, "storageLocation": "github", "enabled": true }, "addon": { "label": "addon", "description": "Pages seeded by an installed add-on", "default": false, "storageLocation": "regular", "enabled": true, "page-badge": { "color": "bg-primary", "label": "Addon", "title": "Add-on page" } }, "user-profile": { "label": "user-profile", "description": "User profile pages", "default": false, "storageLocation": "regular", "enabled": true, "page-badge": { "color": "bg-success", "label": "Profile", "title": "User profile page" } }, "journal": { "label": "journal", "description": "Personal journal entries — schema.org BlogPosting at JSON-LD render time (#791)", "default": false, "storageLocation": "regular", "enabled": true, "page-badge": { "color": "bg-info", "label": "Journal", "title": "Journal entry" } } }
ngdpbase.system-keywords { "general": { "label": "general", "description": "General-purpose keyword for standard wiki content", "default": true, "category": "content-type", "enabled": true }, "draft": { "label": "draft", "description": "Work in progress content", "category": "workflow-status", "enabled": true }, "review": { "label": "review", "description": "Content under review", "category": "workflow-status", "enabled": true }, "published": { "label": "published", "description": "Finalized and approved content", "category": "workflow-status", "enabled": true }, "medicine": { "label": "medicine", "description": "Medical and healthcare-related content", "category": "subject", "enabled": true }, "geology": { "label": "geology", "description": "Geological and earth science content", "category": "subject", "enabled": true }, "meteorology": { "label": "meteorology", "description": "Weather and atmospheric science content", "category": "subject", "enabled": true }, "oceanography": { "label": "oceanography", "description": "Ocean and marine science content", "category": "subject", "enabled": true }, "psychology": { "label": "psychology", "description": "Psychological and behavioral science content", "category": "subject", "enabled": true }, "sociology": { "label": "sociology", "description": "Social science and society-related content", "category": "subject", "enabled": true }, "anthropology": { "label": "anthropology", "description": "Human culture and society content", "category": "subject", "enabled": true }, "economics": { "label": "economics", "description": "Economic and financial content", "category": "subject", "enabled": true }, "political-science": { "label": "political-science", "description": "Political science and governance content", "category": "subject", "enabled": true } }
ngdpbase.tab.pagetabs true
ngdpbase.tab.pagetabs.template Template:PageTabs
ngdpbase.tab.persist true
ngdpbase.tab.style tabs
ngdpbase.telemetry.enabled false
ngdpbase.telemetry.metrics.host 0.0.0.0
ngdpbase.telemetry.metrics.interval 15000
ngdpbase.telemetry.metrics.path /metrics
ngdpbase.telemetry.metrics.port 9464
ngdpbase.telemetry.otlp.enabled false
ngdpbase.telemetry.otlp.endpoint
ngdpbase.telemetry.otlp.headers {}
ngdpbase.telemetry.otlp.interval 30000
ngdpbase.telemetry.otlp.timeout 30000
ngdpbase.telemetry.service-name
ngdpbase.templateDir default
ngdpbase.theme.active volcano
ngdpbase.theme.defaults.mode light
ngdpbase.theme.directory themes
ngdpbase.timezones [ { "value": "UTC", "label": "UTC (Coordinated Universal Time)", "category": "Universal" }, { "value": "America/New_York", "label": "Eastern Time (New York)", "category": "North America" }, { "value": "America/Chicago", "label": "Central Time (Chicago)", "category": "North America" }, { "value": "America/Denver", "label": "Mountain Time (Denver)", "category": "North America" }, { "value": "America/Los_Angeles", "label": "Pacific Time (Los Angeles)", "category": "North America" }, { "value": "America/Toronto", "label": "Eastern Time (Toronto)", "category": "North America" }, { "value": "America/Vancouver", "label": "Pacific Time (Vancouver)", "category": "North America" }, { "value": "Europe/London", "label": "GMT (London)", "category": "Europe" }, { "value": "Europe/Paris", "label": "CET (Paris)", "category": "Europe" }, { "value": "Europe/Berlin", "label": "CET (Berlin)", "category": "Europe" }, { "value": "Europe/Rome", "label": "CET (Rome)", "category": "Europe" }, { "value": "Europe/Madrid", "label": "CET (Madrid)", "category": "Europe" }, { "value": "Europe/Moscow", "label": "MSK (Moscow)", "category": "Europe" }, { "value": "Europe/Stockholm", "label": "CET (Stockholm)", "category": "Europe" }, { "value": "Asia/Tokyo", "label": "JST (Tokyo)", "category": "Asia" }, { "value": "Asia/Shanghai", "label": "CST (Shanghai)", "category": "Asia" }, { "value": "Asia/Seoul", "label": "KST (Seoul)", "category": "Asia" }, { "value": "Asia/Kolkata", "label": "IST (Kolkata)", "category": "Asia" }, { "value": "Asia/Dubai", "label": "GST (Dubai)", "category": "Asia" }, { "value": "Asia/Singapore", "label": "SGT (Singapore)", "category": "Asia" }, { "value": "Australia/Sydney", "label": "AEST (Sydney)", "category": "Oceania" }, { "value": "Australia/Melbourne", "label": "AEST (Melbourne)", "category": "Oceania" }, { "value": "Australia/Perth", "label": "AWST (Perth)", "category": "Oceania" }, { "value": "Pacific/Auckland", "label": "NZST (Auckland)", "category": "Oceania" }, { "value": "Africa/Cairo", "label": "EET (Cairo)", "category": "Africa" }, { "value": "Africa/Johannesburg", "label": "SAST (Johannesburg)", "category": "Africa" }, { "value": "America/Sao_Paulo", "label": "BRT (São Paulo)", "category": "South America" }, { "value": "America/Argentina/Buenos_Aires", "label": "ART (Buenos Aires)", "category": "South America" } ]
ngdpbase.translator-reader.allow-html false
ngdpbase.translator-reader.camel-case-links true
ngdpbase.translator-reader.inline-pattern.1 s/\{\{([^}]+)\}\}/\<tt\>$1\<\/tt\>/g
ngdpbase.translator-reader.match-english-plurals true
ngdpbase.translator-reader.plain-uris true
ngdpbase.url.generator DefaultURLGenerator
ngdpbase.user-keywords { "default": { "label": "default", "description": "Default keyword with no special restrictions", "category": "general", "enabled": true, "restrictEditing": false }, "draft": { "label": "draft", "description": "Work in progress content", "category": "status", "enabled": true, "restrictEditing": false }, "review": { "label": "review", "description": "Content under review", "category": "status", "enabled": true, "restrictEditing": false }, "published": { "label": "published", "description": "Finalized and approved content", "category": "status", "enabled": true, "restrictEditing": false }, "medicine": { "label": "medicine", "description": "Medical and healthcare-related content", "category": "subject", "enabled": true, "restrictEditing": false, "schemaOrg": "MedicalEntity" }, "geology": { "label": "geology", "description": "Geological and earth science content", "category": "subject", "enabled": true, "restrictEditing": false }, "meteorology": { "label": "meteorology", "description": "Weather and atmospheric science content", "category": "subject", "enabled": true, "restrictEditing": false }, "oceanography": { "label": "oceanography", "description": "Ocean and marine science content", "category": "subject", "enabled": true, "restrictEditing": false }, "psychology": { "label": "psychology", "description": "Psychological and behavioral science content", "category": "subject", "enabled": true, "restrictEditing": false }, "sociology": { "label": "sociology", "description": "Social science and society-related content", "category": "subject", "enabled": true, "restrictEditing": false }, "anthropology": { "label": "anthropology", "description": "Human culture and society content", "category": "subject", "enabled": true, "restrictEditing": false }, "economics": { "label": "economics", "description": "Economic and financial content", "category": "subject", "enabled": true, "restrictEditing": false }, "political-science": { "label": "political-science", "description": "Political science and governance content", "category": "subject", "enabled": true, "restrictEditing": false } }
ngdpbase.user.coreFields [ "username", "email", "displayName", "password", "roles", "isActive", "isExternal", "isSystem", "createdAt", "loginCount", "lastLogin", "preferences", "profilePage", "allowedAuthMethods", "avatar" ]
ngdpbase.user.defaults.locale en-us
ngdpbase.user.defaults.timezone utc
ngdpbase.user.enabled true
ngdpbase.user.provider jsonuserprovider
ngdpbase.user.provider.default jsonuserprovider
ngdpbase.user.provider.files.sessions sessions.json
ngdpbase.user.provider.files.users users.json
ngdpbase.user.provider.storagedir ${FAST_STORAGE}/users
ngdpbase.user.security.defaultpassword admin123
ngdpbase.user.security.passwordsalt amdwiki-salt
ngdpbase.user.security.sessionexpiration 86400000
ngdpbase.userdatabase JSONUserDatabase
ngdpbase.version 3.46.1
ngdpbase.workDir ./work
ngdpbase.workflow.approver Admin
ngdpbase.workflow.saveWikiPage false
ngdpbase.xmlGroupDatabase.file ./config/groupdatabase.xml
ngdpbase.xmlUserDatabase.file ./config/userdatabase.xml
Total Variables: 23 | System: 6 | Contextual: 17 | Plugins: 40

System variables only

[{VariablesPlugin type='system'}] renders as:

System Variables
Variables that don't require user or page context
Variable Name Current Value Description
[{$appname}] GeoHazardWatch Application name (alias)
[{$applicationname}] GeoHazardWatch Application name from configuration
[{$version}] 3.46.1 ngdpbase version number
[{$baseurl}] https://geohazardwatch.com Base URL for the wiki
[{$uptime}] 21h 39m 14s Server uptime
[{$totalpages}] 133 Total number of pages in wiki
Total Variables: 23 | System: 6 | Contextual: 17 | Plugins: 40

Contextual variables only

[{VariablesPlugin type='contextual'}] renders as:

Contextual Variables
Variables that require user or page context
Variable Name Your Current Value Description
[{$pagename}] Using VariablesPlugin Current page name
[{$username}] Anonymous Current user's name
[{$loginstatus}] Not logged in User authentication status
[{$userroles}] Anonymous, All User's assigned roles
[{$date}] 6/6/2026 Current date
[{$time}] 2:43:43 AM Current time
[{$timestamp}] 2026-06-06T02:43:43.448Z Current ISO timestamp
[{$year}] 2026 Current year
[{$month}] 6 Current month
[{$day}] 6 Current day
[{$displayname}] Anonymous User User's display name
[{$useragent}] Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected]) Browser user agent string
[{$browser}] Unknown Browser Browser name and version
[{$clientip}] ::ffff:10.42.0.147 Client IP address
[{$referer}] Direct HTTP referer
[{$sessionid}] Coo9nDl7polrMBZ8WZ1z3VYM6vuahcMD Session identifier
[{$acceptlanguage}] Unknown Accept-Language header
Total Variables: 23 | System: 6 | Contextual: 17 | Plugins: 40

Available plugins only

[{VariablesPlugin type='plugins'}] renders as:

Available Plugins
Registered plugins that can be invoked in wiki pages
Plugin Name Description Version Author
[{AppHealthPlugin}] Deterministic app-health audit: orphan pages, broken links, stale pages 1.0.0 ngdpbase
[{ATTACH}] Renders wiki attachments inline. Images display as clickable thumbnails; other files display as download links. 1.0.0 Unknown
[{AttachmentsPlugin}] Shows total attachment count or a list of attachments 1.0.0 ngdpbase
[{CommentsPlugin}] Displays page comments and a submission form for authenticated users 1.0.0 ngdpbase
[{ConfigAccessorPlugin}] Access configuration values including roles, features, and system settings 2.9.0 ngdpbase
[{CounterPlugin}] Maintains page-specific counters for numbering and tracking 1.0.0 ngdpbase
[{CurrentTimePlugin}] Displays current date and time with user locale/timezone preferences 1.0.0 ngdpbase
[{EarthquakeList}] No description N/A Unknown
[{EarthquakeMap}] No description N/A Unknown
[{FootnotesPlugin}] Lists footnote definitions from sidecar storage with editor CRUD UI 2.0.0 ngdpbase
[{HansAlerts}] No description N/A Unknown
[{Image}] Renders an image with optional caption, alignment, and display mode control N/A Unknown
[{IndexPlugin}] Generates an alphabetical index of all wiki pages 1.0.0 ngdpbase
[{InsertPlugin}] Embed another wiki page (or one section of it) into the current page 1.0.0 ngdpbase
[{Location}] Display locations with map links and embedded previews 1.0.0 ngdpbase
[{MarqueePlugin}] CSS scrolling text banner (marquee replacement) 1.0.0 ngdpbase
[{MediaGallery}] Displays a gallery of media items (stub — MediaManager not yet available) 0.1.0 ngdpbase
[{MediaItem}] Embeds a single media item inline (stub — MediaManager not yet available) 0.1.0 ngdpbase
[{MediaPlugin}] Shows total media item count, a list, or a thumbnail album of indexed media items 1.2.0 ngdpbase
[{MediaSearch}] Displays media search results (stub — MediaManager not yet available) 0.1.0 ngdpbase
[{MyContributionsPlugin}] Renders the My Contributions card from /profile on any wiki page 1.0.0 ngdpbase
[{MyLinksPlugin}] Renders the current user's pinned My Links sidebar section 1.0.0 ngdpbase
[{PageSlideshowPlugin}] Bootstrap 5 carousel cycling through wiki page content 1.0.0 ngdpbase
[{RecentChangesPlugin}] Displays recent page changes in chronological order 2.0.0 ngdpbase
[{ReferringPagesPlugin}] Lists pages that refer to the current page 1.0.0 ngdpbase
[{SearchPlugin}] JSPWiki-style search plugin for embedding search results in pages 2.0.0 ngdpbase
[{SessionsPlugin}] Shows active session count or list of authenticated users 2.0.0 ngdpbase
[{SlideshowPlugin}] Bootstrap 5 image carousel / slideshow 1.0.0 ngdpbase
[{TablePlugin}] JSPWiki-compatible Table plugin — enables # auto-numbering in table rows 1.0.0 ngdpbase
[{TabPlugin}] Defines a tab within [{Tabs}]; rendering is handled by TabsPlugin 1.0.0 ngdpbase
[{TabsPlugin}] Renders Bootstrap nav-tabs from [{Tab name="..."}]content[{/Tab}] body blocks 1.0.0 ngdpbase
[{TotalPagesPlugin}] Shows the total number of pages 1.0.0 ngdpbase
[{UndefinedPagesPlugin}] Lists pages that are linked to (RED-LINKs) but do not exist 1.2.0 ngdpbase
[{UptimePlugin}] Shows the server uptime 1.0.0 ngdpbase
[{UserLookupPlugin}] Search and display users — permission-gated PII via API 1.0.0 ngdpbase
[{VariablesPlugin}] Displays system and contextual variables available in the wiki 1.0.0 ngdpbase
[{VolcanoInfobox}] No description N/A Unknown
[{VolcanoList}] No description N/A Unknown
[{VolcanoMap}] No description N/A Unknown
[{VolcanoSearch}] No description N/A Unknown
Total Variables: 23 | System: 6 | Contextual: 17 | Plugins: 40

Variable Types

System Variables

System-level information available on every page:

Contextual Variables

User and request-specific information:

Using Variables in Pages

Use any variable directly in page content:

Welcome [{$username}]! This platform has [{$totalpages}] pages.

See ConfigAccessorPlugin to access configuration values, and CurrentTimePlugin to display formatted time.