{"id":41165550,"url":"https://github.com/oxygenxml/web-author-sample-plugins","last_synced_at":"2026-01-22T19:32:48.254Z","repository":{"id":43174326,"uuid":"217282510","full_name":"oxygenxml/web-author-sample-plugins","owner":"oxygenxml","description":"Sample plugins for Oxygen XML Web Author","archived":false,"fork":false,"pushed_at":"2026-01-14T14:50:39.000Z","size":4296,"stargazers_count":6,"open_issues_count":3,"forks_count":4,"subscribers_count":26,"default_branch":"master","last_synced_at":"2026-01-14T18:14:21.681Z","etag":null,"topics":["oxygen-web-author-plugin"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oxygenxml.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-10-24T11:27:13.000Z","updated_at":"2026-01-14T14:50:43.000Z","dependencies_parsed_at":"2024-03-18T19:41:15.073Z","dependency_job_id":"2d2355cc-c468-45ab-ba38-4dfb39ea6601","html_url":"https://github.com/oxygenxml/web-author-sample-plugins","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/oxygenxml/web-author-sample-plugins","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxygenxml%2Fweb-author-sample-plugins","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxygenxml%2Fweb-author-sample-plugins/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxygenxml%2Fweb-author-sample-plugins/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxygenxml%2Fweb-author-sample-plugins/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oxygenxml","download_url":"https://codeload.github.com/oxygenxml/web-author-sample-plugins/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxygenxml%2Fweb-author-sample-plugins/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28669176,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T17:07:18.858Z","status":"ssl_error","status_checked_at":"2026-01-22T17:05:02.040Z","response_time":144,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["oxygen-web-author-plugin"],"created_at":"2026-01-22T19:32:47.619Z","updated_at":"2026-01-22T19:32:48.245Z","avatar_url":"https://github.com/oxygenxml.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# web-author-sample-plugins\r\nSample plugins for Oxygen XML Web Author\r\n\r\n## Installation\r\n\r\nEach folder contains one plugin. To install such a plugin you should:\r\n 1. Download the entire repository \r\n 1. If applicable, follow the instructions included in the `README.md` file of the desired plugin.\r\n 1. Create an archive with just the folder that contains the desired plugin\r\n 1. Go to the Web Author **Administration Page**\r\n 1. In the **Plugins** section, click **Upload Plugin** and choose the archive made at step 2.\r\n 1. Restart the Web Author server.\r\n\r\n## Plugins\r\n\r\n### [always-enable-accept-change](always-enable-accept-change)\r\nThis plugin enables the \"Accept Chage\" action, even when change tracking is forced.\r\n\r\n### [content-fusion-full-map-approvals](content-fusion-full-map-approvals)\r\nThis plugin can be installed in the Web Author editing component deployed in Content Fusion.\r\n\r\nThe plugin activates when a task contains the \"[APPROVAL]\" token in the title and forces users to review topics in the context of the DITA Map with expanded topics.\r\n\r\n### [oxygen-dita-extensions-bundle-extension](oxygen-dita-extensions-bundle-extension)\r\nSample plugin that contributes a framework that extends the built-in DITA framework. The use case is to set a custom ExtensionsBundle implementation that extends the built-in implementation.\r\n\r\n**_NOTE:_** if you don't need to specifically provide the framework via a plugin, it's simpler to add the framework directly.\r\nHere you can find the similar, standalone framework: [https://github.com/oxygenxml-incubator/oxygen-sample-frameworks/tree/main/dita-extension-custom-proposed-attribute-values](https://github.com/oxygenxml-incubator/oxygen-sample-frameworks/tree/main/dita-extension-custom-proposed-attribute-values)\r\n\r\n### [remove-prefix-uri-resolver](remove-prefix-uri-resolver)\r\nThis plugin resolves absolute references after removing a prefix of them to make them relative.\r\n\r\nFor example, assume that all content is stored in a folder called `Content` in the root of a web server, in a DITA topic there is an image reference as below:\r\n```xml\r\n\u003cimage href=\"/Content/image.png\"/\u003e\r\n```\r\n\r\nIf the folder `/Content/` is moved to, say, `/project1/Content`, all the references will be broken. This plugin installs an `URIResolver` that removes the `/Content/` prefix of the references, making them relative references.\r\n\r\n### [user-name-insert-operation-plugin](user-name-insert-operation-plugin)\r\nThis plugin contributes an equivalent of InsertFragmentOperation, but which support an ${user.name} editor variable that expands to the name of the current user.\r\n\r\n### [web-author-CALS-table-plugin](web-author-CALS-table-plugin)\r\nSample plugin that adds the following CALS Table support for any XML document:\r\n - table rendering\r\n - specific actions are added before each table to insert or delete rows and columns and to join or split cells\r\n - multiple rows and columns can be selected (by mouse drag or click on column header markers) to easily copy or move table data by using copy/paste\r\n\r\n### [web-author-add-non-persistent-highlights](web-author-add-non-persistent-highlights)\r\nSample plugin that add non persistent highlights on each paragraph when the document is opened and edited.\r\n\r\n### [web-author-autospellcheck-on-off](web-author-autospellcheck-on-off)\r\nThis sample plugin adds a button to the toolbar to allow users to easily enable or disable the autospellcheck.\r\n\r\n### [web-author-block-deleting-comments](web-author-block-deleting-comments)\r\nPlugin that blocks a user from deleting review comments added by another user.\r\n\r\n### [web-author-block-deleting-suggestions](web-author-block-deleting-suggestions)\r\nPlugin that blocks a user from deleting tracked changes made by another user.\r\n\r\n### [web-author-block-save-if-invalid](web-author-block-save-if-invalid)\r\nPlugin that blocks saving invalid documents.\r\n\r\n### [web-author-comment-eol-fixup](web-author-comment-eol-fixup)\r\nPlugin that fixes the line separator in review comments to Linux-style. This plugin registers an AuthorDocumentFilter to modify review comments before they are inserted. It does not fix the exisiting comments.\r\n\r\n### [web-author-document-preview-dialog-plugin](web-author-document-preview-dialog-plugin)\r\nThis sample plugin uses the editor.previewAuthorDocument to let the user preview another XML document inside a dialog. The user has to browse for a file, then the file will be displayed inside a dialog.\r\n\r\n### [web-author-elements-view](web-author-elements-view)\r\nA plugin that contributes an 'Elements' view that displays elements that can be inserted at the caret position\r\n\r\n### [web-author-file-open-action](web-author-file-open-action)\r\nOxygen XML Web Author plugin that contributes an \"Open...\" action to the \"More...\" (triple dots) menu that lets the user browse for a file and open it in the current editor.\r\n\r\n### [web-author-filter-extension](web-author-filter-extension)\r\nThis plugin implements a custom servlet filter plugin extension.\r\n\r\nAs an use-case it blocks requests to the dashboard page by redirecting to an external URL defined by com.oxygenxml.ServletFilterExtension.REDIRECT_URL (https://www.oxygenxml.com/ as an example).\r\n\r\n### [web-author-react-form-control](web-author-react-form-control)\r\nA plugin that implements a Form Control using React.\r\n\r\n### [web-author-set-attribute-on-new-paragraphs](web-author-set-attribute-on-new-paragraphs)\r\nPlugin that adds \"normal\" outputclass attribute to paragraph elements that have no outputclass set, when inserted in the document.\r\n\r\n### [web-author-static-page](web-author-static-page)\r\nThis plugin hosts a static Web Page on the Web Author server. The page is accessible at:\r\n\r\nhttp://example.org:8443/oxygen-xml-web-author/plugin-resources/web-root/index.html\r\n\r\nWhere the Web Author's Dashboard is located at:\r\n\r\nhttp://example.org:8443/oxygen-xml-web-author/app/oxygen.html\r\n\r\n### [web-author-table-cell-computed-values](web-author-table-cell-computed-values) \r\nPlugin that allows you to add automatically-computed values in a table cell.\r\n\r\n### [web-author-validation-problems-filter](web-author-validation-problems-filter)\r\nSample plugin that removes all the warnings from the validation result list.\r\n\r\n### [web-author-view-file-as-text](web-author-view-file-as-text)\r\nPlugin contributes an action to choose a file and view it as text.\r\n\r\nIt performs the following steps:\r\n- Show a file browser so that the user can choose the file\r\n- Invoke a server-side operation to retrieve the content of the file\r\n- The server-side operation connects to the CMS to read the content of the file and sends it back to the browser. The authentication context of the main document (the one opened in the editor) is used when loading this file.\r\n- The file content is displayed in an alert in the browser.\r\n\r\n### [web-author-rooms-manager-plugin](web-author-rooms-manager-plugin)\r\nSample plugin that manages rooms*:\r\n- assign each opened document to an already existing room or create a new one\r\n- rooms are created with a custom save strategy to save changes made by peers on behalf of the committer (the one requests to save). See GroupChangesSaveStrategy\r\n- if two users open the same document, they will concurrently edit the document\r\n- close rooms that become empty \r\n\r\n*A room is an abstraction for a set of document models created for the same document.\r\nSuch models belong to different users and are edited concurrently and synchronized in real-time.\r\n\r\n### [web-author-side-by-side-editors](web-author-side-by-side-editors)\r\nIs a plugin that presents two side by side Web Author editors in preview mode.\r\n\r\nBefore each element that has the _id_ attribute a button it is presented. When the button is clicked the other editor scrolls to the element having the same value for the _id_ attribute.\r\n\r\n### [web-author-change-ui-with-css](web-author-change-ui-with-css)\r\nPlugin that loads a custom CSS to affect the user interface.\r\n\r\n### [web-author-loading-options-setter](web-author-loading-options-setter)\r\nSample plugin that imposes some loading options depending on the file extension:\r\n - Files ending in `.dita` open with the \"no tags\" mode.\r\n - Files ending in `.ditamap` or `.bookmap` are opened with the **Show topic titles** alternate style activated.\r\n\r\n### [web-author-impose-options](web-author-impose-options)\r\nOxygen XML Web Author stores its options in an options.xml file, located in the options folder of the Oxygen Data Directory.\r\n\r\nThis is a sample plugin for imposing specific options. The `tagless.editor.tags.display.mode` option value is set to 1,\r\nmeaning that all the documents are opened with `No tags` mode activated.\r\n\r\n### [web-author-impose-ditamap](web-author-impose-ditamap)\r\nSample plugin that imposes a DITA Map for all files opened in Web Author. It assumes a common\r\nproject folder layout in which:\r\n - the DITA Map is called `UserManual.ditamap`\r\n - all topics are located under a `topics/` folder\r\n\r\n### [web-author-block-safe-if-invalid](web-author-block-safe-if-invalid)\r\nPlugin that blocks saving invalid documents.\r\n\r\n### [web-author-hide-app-bar](web-author-hide-app-bar)\r\nPlugins that hides the Web Author app bar, usefull when integrating the Web Author in an iframe.\r\n\r\nThis plugin only contributes a single client-side javascript file.\r\n\r\n### [web-author-filter-content](web-author-filter-content)\r\nPlugin that hides the content based on a CSS selector. For demonstration purposes it hides the DITA elements that have the \"processing-role\" attribute set to \"resource-only\".\r\n\r\n### [web-author-paste-actions](web-author-paste-actions)\r\nPlugin that replaces the \"Paste Special\" action with two individual actions: `Paste as Text` (Ctrl+Alt+T) and `Paste as XML` (Ctrl+Alt+X).\r\n\r\n### [web-author-comment-only](web-author-comment-only)\r\nPlugin that switches Web Author to a comments-only mode.\r\n\r\n### [web-author-custom-author-style](web-author-custom-author-style)\r\nPlugin that enforces a custom stylesheet for all XML documents loaded in Web Author.\r\n\r\n### [web-author-filter-id-attribute](web-author-filter-id-attribute)\r\nSample plugin that uses the ro.sync.ecss.extensions.api.attributes.AuthorAttributesDisplayFilter API to filter the \"id\" attribute on any element.\r\n\r\n### [web-author-filter-styles](web-author-filter-styles)\r\nPlugin that adds a Styles Filter that can be used to replace the CSS styles associated to an element or a pseudo element.\r\n\r\n### [web-author-insert-all-elements](web-author-insert-all-elements)\r\nSample plugin that allows inserting elements that are not valid at caret position, by using the `Insert Element...` action from the contextual menu.\r\n\r\n### [web-author-xslt-report](web-author-xslt-report)\r\nSample plugin to run an XSLT script over the current document and return the result to the client as string.\r\n\r\n### [web-author-view-final-track-changes](web-author-view-final-track-changes)\r\nOxygen XML Web Author plugin that defaults the track changes view mode to `View Final`.\r\n\r\n### [web-author-custom-attribute-editing-action-plugin](web-author-custom-attribute-editing-action-plugin)\r\nExample plugin for Oxygen XML Web Author that defines a custom action for attributes editing.\r\nIt implements the [sync.actions.AttributeEditingActionsProvider](https://www.oxygenxml.com/maven/com/oxygenxml/oxygen-webapp/25.1.0.0/jsdoc/sync.actions.AttributeEditingActionsProvider.html) JS API.\r\nThe sync.actions.AttributeEditingActionsProvider JS API extension should be used when you need to implement a custom UI (or dialog) for choosing attribute values. Another use-case would be if the attribute values are dynamic, either computed client-side or fetched from other servers.\r\n\r\n### [web-author-load-in-text-mode-plugin](web-author-load-in-text-mode-plugin)\r\nThe plugin automatically shows the text page when the editor loads.\r\n\r\n### [web-author-preview-xml-fragment](web-author-preview-xml-fragment)\r\nThis plugin uses the `loadPreview` API to create a preview dialog in which a DITA fragment is inserted.\r\n\r\n### [web-author-change-tracking-styles-with-css](web-author-change-tracking-styles-with-css)\r\nSample plugin that shows how to customize the styles of change tracking markers (inserted and deleted content) in Web Author using CSS.\r\n\r\n## Copyright and License\r\nCopyright (C) 2020 Syncro Soft SRL. All rights reserved.\r\n\r\n\r\nThis project is licensed under Apache License 2.0.\r\n\r\n\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxygenxml%2Fweb-author-sample-plugins","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foxygenxml%2Fweb-author-sample-plugins","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxygenxml%2Fweb-author-sample-plugins/lists"}