@jahia/agentic 0.3.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/claude/.claude/rules/jahia.md +13 -40
- package/dist/claude/.claude/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/claude/.claude/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/claude/.claude/skills/jahia-dev-build-component/SKILL.md +15 -7
- package/dist/claude/.claude/skills/jahia-dev-create-page-template/SKILL.md +59 -21
- package/dist/claude/.claude/skills/jahia-dev-create-template-set/SKILL.md +20 -47
- package/dist/claude/.claude/skills/jahia-dev-create-view/SKILL.md +3 -3
- package/dist/claude/.claude/skills/jahia-dev-review-cnd/SKILL.md +79 -0
- package/dist/claude/.claude/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
- package/dist/claude/.claude/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
- package/dist/claude/.claude/skills/jahia-dev-site-review/SKILL.md +70 -0
- package/dist/claude/.claude/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
- package/dist/claude/.claude/skills/jahia-dev-start-local/SKILL.md +18 -26
- package/dist/claude/CLAUDE.md +14 -41
- package/dist/codex/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/codex/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/codex/.agents/skills/jahia-dev-build-component/SKILL.md +15 -7
- package/dist/codex/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
- package/dist/codex/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
- package/dist/codex/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
- package/dist/codex/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
- package/dist/codex/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
- package/dist/codex/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
- package/dist/codex/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
- package/dist/codex/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
- package/dist/codex/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
- package/dist/codex/AGENTS.md +15 -42
- package/dist/copilot/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/copilot/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/copilot/.agents/skills/jahia-dev-build-component/SKILL.md +15 -7
- package/dist/copilot/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
- package/dist/copilot/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
- package/dist/copilot/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
- package/dist/copilot/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
- package/dist/copilot/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
- package/dist/copilot/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
- package/dist/copilot/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
- package/dist/copilot/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
- package/dist/copilot/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
- package/dist/copilot/AGENTS.md +15 -42
- package/dist/cursor/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/cursor/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/cursor/.agents/skills/jahia-dev-build-component/SKILL.md +15 -7
- package/dist/cursor/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
- package/dist/cursor/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
- package/dist/cursor/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
- package/dist/cursor/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
- package/dist/cursor/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
- package/dist/cursor/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
- package/dist/cursor/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
- package/dist/cursor/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
- package/dist/cursor/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
- package/dist/cursor/.cursor/rules/jahia.mdc +13 -40
- package/dist/gemini/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/gemini/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/gemini/.agents/skills/jahia-dev-build-component/SKILL.md +15 -7
- package/dist/gemini/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
- package/dist/gemini/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
- package/dist/gemini/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
- package/dist/gemini/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
- package/dist/gemini/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
- package/dist/gemini/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
- package/dist/gemini/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
- package/dist/gemini/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
- package/dist/gemini/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
- package/dist/gemini/AGENTS.md +15 -42
- package/dist/gemini/GEMINI.md +2 -2
- package/dist/index.js +13 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/opencode/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/opencode/.agents/skills/jahia-dev-build-component/SKILL.md +15 -7
- package/dist/opencode/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
- package/dist/opencode/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
- package/dist/opencode/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
- package/dist/opencode/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
- package/dist/opencode/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
- package/dist/opencode/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
- package/dist/opencode/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
- package/dist/opencode/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
- package/dist/opencode/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
- package/dist/opencode/AGENTS.md +15 -42
- package/dist/windsurf/.windsurf/rules/jahia.md +13 -40
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/windsurf/.windsurf/skills/jahia-dev-build-component/SKILL.md +15 -7
- package/dist/windsurf/.windsurf/skills/jahia-dev-create-page-template/SKILL.md +59 -21
- package/dist/windsurf/.windsurf/skills/jahia-dev-create-template-set/SKILL.md +20 -47
- package/dist/windsurf/.windsurf/skills/jahia-dev-create-view/SKILL.md +3 -3
- package/dist/windsurf/.windsurf/skills/jahia-dev-review-cnd/SKILL.md +79 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-site-review/SKILL.md +70 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-start-local/SKILL.md +18 -26
- package/dist/windsurf/AGENTS.md +15 -42
- package/package.json +1 -1
- package/dist/claude/.claude/skills/jahia/SKILL.md +0 -144
- package/dist/claude/.claude/skills/jahia-content/SKILL.md +0 -157
- package/dist/claude/.claude/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/claude/.claude/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/claude/.claude/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/claude/.claude/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/claude/.claude/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/claude/.claude/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/claude/.claude/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/claude/.claude/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/claude/.claude/skills/jahia-dev/SKILL.md +0 -124
- package/dist/claude/.claude/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/claude/.claude/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/claude/.claude/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/claude/.claude/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/claude/.claude/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/claude/.claude/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/claude/.claude/skills/jahia-dev-define-content-type/SKILL.md +0 -536
- package/dist/claude/.claude/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/claude/.claude/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/claude/.claude/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/claude/.claude/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/claude/.claude/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/claude/.claude/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/claude/.claude/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/claude/.claude/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/claude/.claude/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/claude/.claude/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/claude/.claude/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/claude/.claude/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/claude/.claude/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/claude/.claude/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/claude/.claude/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/claude/.claude/skills/jahia-review-java/references/code-review-output.md +0 -121
- package/dist/codex/.agents/skills/jahia/SKILL.md +0 -144
- package/dist/codex/.agents/skills/jahia-content/SKILL.md +0 -157
- package/dist/codex/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/codex/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/codex/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/codex/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/codex/.agents/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/codex/.agents/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/codex/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/codex/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/codex/.agents/skills/jahia-dev/SKILL.md +0 -124
- package/dist/codex/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/codex/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/codex/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/codex/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/codex/.agents/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/codex/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/codex/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -536
- package/dist/codex/.agents/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/codex/.agents/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/codex/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/codex/.agents/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/codex/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/codex/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/codex/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/codex/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/codex/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/codex/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/codex/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/codex/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/codex/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/codex/.agents/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/codex/.agents/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/codex/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
- package/dist/copilot/.agents/skills/jahia/SKILL.md +0 -144
- package/dist/copilot/.agents/skills/jahia-content/SKILL.md +0 -157
- package/dist/copilot/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/copilot/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/copilot/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/copilot/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/copilot/.agents/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/copilot/.agents/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/copilot/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/copilot/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/copilot/.agents/skills/jahia-dev/SKILL.md +0 -124
- package/dist/copilot/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/copilot/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/copilot/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -536
- package/dist/copilot/.agents/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/copilot/.agents/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/copilot/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/copilot/.agents/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/copilot/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/copilot/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/copilot/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/copilot/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/copilot/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/copilot/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/copilot/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/copilot/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/copilot/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/copilot/.agents/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/copilot/.agents/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/copilot/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
- package/dist/cursor/.agents/skills/jahia/SKILL.md +0 -144
- package/dist/cursor/.agents/skills/jahia-content/SKILL.md +0 -157
- package/dist/cursor/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/cursor/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/cursor/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/cursor/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/cursor/.agents/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/cursor/.agents/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/cursor/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/cursor/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/cursor/.agents/skills/jahia-dev/SKILL.md +0 -124
- package/dist/cursor/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/cursor/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/cursor/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -536
- package/dist/cursor/.agents/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/cursor/.agents/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/cursor/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/cursor/.agents/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/cursor/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/cursor/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/cursor/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/cursor/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/cursor/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/cursor/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/cursor/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/cursor/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/cursor/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/cursor/.agents/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/cursor/.agents/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/cursor/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
- package/dist/gemini/.agents/skills/jahia/SKILL.md +0 -144
- package/dist/gemini/.agents/skills/jahia-content/SKILL.md +0 -157
- package/dist/gemini/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/gemini/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/gemini/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/gemini/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/gemini/.agents/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/gemini/.agents/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/gemini/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/gemini/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/gemini/.agents/skills/jahia-dev/SKILL.md +0 -124
- package/dist/gemini/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/gemini/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/gemini/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -536
- package/dist/gemini/.agents/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/gemini/.agents/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/gemini/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/gemini/.agents/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/gemini/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/gemini/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/gemini/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/gemini/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/gemini/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/gemini/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/gemini/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/gemini/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/gemini/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/gemini/.agents/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/gemini/.agents/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/gemini/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
- package/dist/opencode/.agents/skills/jahia/SKILL.md +0 -144
- package/dist/opencode/.agents/skills/jahia-content/SKILL.md +0 -157
- package/dist/opencode/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/opencode/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/opencode/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/opencode/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/opencode/.agents/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/opencode/.agents/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/opencode/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/opencode/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/opencode/.agents/skills/jahia-dev/SKILL.md +0 -124
- package/dist/opencode/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/opencode/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/opencode/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -536
- package/dist/opencode/.agents/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/opencode/.agents/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/opencode/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/opencode/.agents/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/opencode/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/opencode/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/opencode/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/opencode/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/opencode/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/opencode/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/opencode/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/opencode/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/opencode/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/opencode/.agents/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/opencode/.agents/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/opencode/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
- package/dist/windsurf/.windsurf/skills/jahia/SKILL.md +0 -144
- package/dist/windsurf/.windsurf/skills/jahia-content/SKILL.md +0 -157
- package/dist/windsurf/.windsurf/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/windsurf/.windsurf/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/windsurf/.windsurf/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/windsurf/.windsurf/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/windsurf/.windsurf/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/windsurf/.windsurf/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/windsurf/.windsurf/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/windsurf/.windsurf/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/windsurf/.windsurf/skills/jahia-dev/SKILL.md +0 -124
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/windsurf/.windsurf/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/windsurf/.windsurf/skills/jahia-dev-define-content-type/SKILL.md +0 -536
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/windsurf/.windsurf/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/windsurf/.windsurf/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/windsurf/.windsurf/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/windsurf/.windsurf/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/windsurf/.windsurf/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/windsurf/.windsurf/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/windsurf/.windsurf/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/windsurf/.windsurf/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/windsurf/.windsurf/skills/jahia-review-java/references/code-review-output.md +0 -121
|
@@ -1,344 +0,0 @@
|
|
|
1
|
-
# Jahia UI Extensions Reference
|
|
2
|
-
|
|
3
|
-
## Table of Contents
|
|
4
|
-
1. [Overview: two extension layers](#1-overview-two-extension-layers)
|
|
5
|
-
2. [Component registry](#2-component-registry)
|
|
6
|
-
3. [Content Editor JSON overrides](#3-content-editor-json-overrides)
|
|
7
|
-
4. [jContent UI extension points](#4-jcontent-ui-extension-points)
|
|
8
|
-
5. [Adding UI actions](#5-adding-ui-actions)
|
|
9
|
-
6. [Adding settings pages (admin routes)](#6-adding-settings-pages-admin-routes)
|
|
10
|
-
7. [Custom selector types](#7-custom-selector-types)
|
|
11
|
-
8. [Custom picker configuration](#8-custom-picker-configuration)
|
|
12
|
-
9. [Dynamic forms in Content Editor](#9-dynamic-forms-in-content-editor)
|
|
13
|
-
10. [CKEditor customization](#10-ckeditor-customization)
|
|
14
|
-
11. [Debugging JSON overrides and registry](#11-debugging-json-overrides-and-registry)
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## 1. Overview: two extension layers
|
|
19
|
-
|
|
20
|
-
| Mechanism | What it controls | Format |
|
|
21
|
-
|-----------|-----------------|--------|
|
|
22
|
-
| **Content Editor JSON overrides** | Form layout, field visibility, labels, sections, field order | JSON files in module JAR |
|
|
23
|
-
| **Component registry** | Actions, accordions, nav items, selectors, routes, settings pages | JavaScript (React/JSX) |
|
|
24
|
-
|
|
25
|
-
The component registry lives in the JavaScript layer. JSON overrides live in the Java module under `META-INF/jahia-content-editor-forms/`.
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## 2. Component registry
|
|
30
|
-
|
|
31
|
-
```javascript
|
|
32
|
-
import { registry } from '@jahia/ui-extender';
|
|
33
|
-
|
|
34
|
-
registry.add('action', 'myAction', myActionObj, {
|
|
35
|
-
targets: ['contentActions:5'],
|
|
36
|
-
label: 'myModule:myAction.label'
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
registry.addOrReplace('adminRoute', 'mySettings', {
|
|
40
|
-
targets: ['administration-sites:10'],
|
|
41
|
-
label: 'myModule:settings.label',
|
|
42
|
-
isSelectable: true,
|
|
43
|
-
iframeUrl: window.contextJsParameters.contextPath + '/cms/adminframe/default/en/settings.myPage.html'
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
const existing = registry.get('action', 'createContent');
|
|
47
|
-
const allActions = registry.find({ target: 'contentActions' });
|
|
48
|
-
registry.remove('action', 'myAction');
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### Registration timing
|
|
52
|
-
|
|
53
|
-
```javascript
|
|
54
|
-
import { registry } from '@jahia/ui-extender';
|
|
55
|
-
import register from './myModule.register';
|
|
56
|
-
|
|
57
|
-
export default function () {
|
|
58
|
-
registry.add('callback', 'myModule', {
|
|
59
|
-
targets: ['jahiaApp-init:50'],
|
|
60
|
-
callback: register
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Common registry types
|
|
66
|
-
|
|
67
|
-
| Type | Purpose |
|
|
68
|
-
|------|---------|
|
|
69
|
-
| `action` | UI action in menus, headers, or toolbars |
|
|
70
|
-
| `selectorType` | Custom field input in Content Editor |
|
|
71
|
-
| `adminRoute` | Admin panel page |
|
|
72
|
-
| `route` | Custom top-level route |
|
|
73
|
-
| `primary-nav-item` | Top-level navigation entry |
|
|
74
|
-
| `accordionItem` | Secondary navigation accordion in jContent |
|
|
75
|
-
| `callback` | Initialization callback |
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## 3. Content Editor JSON overrides
|
|
80
|
-
|
|
81
|
-
### File location
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
src/main/resources/META-INF/jahia-content-editor-forms/
|
|
85
|
-
forms/ # Form-level overrides (by nodetype)
|
|
86
|
-
fieldsets/ # Fieldset-level overrides (by mixin or type)
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
Naming convention: replace `:` with `_` — `jnt:article` → `jnt_article.json`
|
|
90
|
-
|
|
91
|
-
### Form override structure
|
|
92
|
-
|
|
93
|
-
```json
|
|
94
|
-
{
|
|
95
|
-
"nodeType": "myns:myContent",
|
|
96
|
-
"priority": 2.0,
|
|
97
|
-
"hasPreview": true,
|
|
98
|
-
"sections": [
|
|
99
|
-
{
|
|
100
|
-
"name": "content",
|
|
101
|
-
"fieldSets": [
|
|
102
|
-
{
|
|
103
|
-
"name": "<main>",
|
|
104
|
-
"rank": 1.0,
|
|
105
|
-
"fields": [
|
|
106
|
-
{
|
|
107
|
-
"name": "jcr:title",
|
|
108
|
-
"declaringNodeType": "mix:title",
|
|
109
|
-
"rank": 1.0,
|
|
110
|
-
"labelKey": "myModule:label.title"
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
"name": "myProp",
|
|
114
|
-
"hide": false,
|
|
115
|
-
"mandatory": true
|
|
116
|
-
}
|
|
117
|
-
]
|
|
118
|
-
}
|
|
119
|
-
]
|
|
120
|
-
},
|
|
121
|
-
{ "name": "classification", "hide": true },
|
|
122
|
-
{ "name": "layout", "hide": true }
|
|
123
|
-
]
|
|
124
|
-
}
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### Key override actions
|
|
128
|
-
|
|
129
|
-
| Goal | JSON |
|
|
130
|
-
|------|------|
|
|
131
|
-
| Hide a section | `{"name": "layout", "hide": true}` |
|
|
132
|
-
| Hide a field | In field: `"hide": true` |
|
|
133
|
-
| Make a field mandatory | In field: `"mandatory": true` |
|
|
134
|
-
| Reorder a field | In field: `"rank": 3.0` |
|
|
135
|
-
| Change a field label | In field: `"labelKey": "basename:myKey"` |
|
|
136
|
-
|
|
137
|
-
### `declaringNodeType` requirement
|
|
138
|
-
|
|
139
|
-
Use when the field comes from a mixin or parent type:
|
|
140
|
-
|
|
141
|
-
```json
|
|
142
|
-
{
|
|
143
|
-
"name": "j:invalidLanguages",
|
|
144
|
-
"declaringNodeType": "jmix:i18n",
|
|
145
|
-
"hide": false
|
|
146
|
-
}
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
### Known limitations
|
|
150
|
-
|
|
151
|
-
- `multiple` and `i18n` properties CANNOT be overridden by JSON
|
|
152
|
-
- `valueConstraints` for choicelists can only remove existing items, not add new ones
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
## 4. jContent UI extension points
|
|
157
|
-
|
|
158
|
-
### Adding an accordion
|
|
159
|
-
|
|
160
|
-
```javascript
|
|
161
|
-
const baseAccordion = registry.get('accordionItem', 'pages');
|
|
162
|
-
registry.add('accordionItem', 'myCustomAccordion', baseAccordion, {
|
|
163
|
-
targets: ['jcontent:99'],
|
|
164
|
-
label: 'myModule:accordion.label',
|
|
165
|
-
rootPath: '/sites/{site}/contents/my-section',
|
|
166
|
-
requiredSitePermission: 'myCustomPermission',
|
|
167
|
-
isEnabled: (siteKey) => siteKey !== 'systemsite',
|
|
168
|
-
treeConfig: Object.assign({}, baseAccordion.treeConfig, { hideRoot: false })
|
|
169
|
-
});
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
**Important:** Always use `Object.assign({}, base.nestedObj, {...})` when overriding nested config objects.
|
|
173
|
-
|
|
174
|
-
---
|
|
175
|
-
|
|
176
|
-
## 5. Adding UI actions
|
|
177
|
-
|
|
178
|
-
### Available action targets
|
|
179
|
-
|
|
180
|
-
| Target | Location |
|
|
181
|
-
|--------|----------|
|
|
182
|
-
| `contentItemContextActions` | Right-click menu on content items |
|
|
183
|
-
| `contentItemActions` | Three-dot menu on content items |
|
|
184
|
-
| `browseControlBar` | Three-dot menu in header |
|
|
185
|
-
| `headerPrimaryActions` | Header primary action buttons |
|
|
186
|
-
| `selectedContentActions` | Actions for selected content |
|
|
187
|
-
| `publishMenu` | Publish dropdown menu items |
|
|
188
|
-
|
|
189
|
-
### Registering an action
|
|
190
|
-
|
|
191
|
-
```javascript
|
|
192
|
-
registry.add('action', 'myCustomAction', {
|
|
193
|
-
buttonLabel: 'myModule:actions.myAction.label',
|
|
194
|
-
targets: ['contentItemActions:5', 'contentItemContextActions:5'],
|
|
195
|
-
showOnNodeTypes: ['jnt:article', 'jnt:page'],
|
|
196
|
-
requiredPermission: ['jcr:modifyProperties'],
|
|
197
|
-
onClick: ({ path, paths, client, notificationContext }) => {
|
|
198
|
-
console.log('Action on:', path);
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
---
|
|
204
|
-
|
|
205
|
-
## 6. Adding settings pages (admin routes)
|
|
206
|
-
|
|
207
|
-
```javascript
|
|
208
|
-
registry.add('adminRoute', 'mySettings', {
|
|
209
|
-
targets: ['administration-sites:50'],
|
|
210
|
-
requiredPermission: 'adminTemplates',
|
|
211
|
-
label: 'myModule:settings.label',
|
|
212
|
-
isSelectable: true,
|
|
213
|
-
render: () => <MySettingsPage/>
|
|
214
|
-
});
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
### iFrame-based admin route
|
|
218
|
-
|
|
219
|
-
```javascript
|
|
220
|
-
registry.add('adminRoute', 'myLegacySettings', {
|
|
221
|
-
targets: ['administration-server-systemComponents:10'],
|
|
222
|
-
requiredPermission: 'adminTemplates',
|
|
223
|
-
label: 'myModule:legacy.label',
|
|
224
|
-
isSelectable: true,
|
|
225
|
-
iframeUrl: window.contextJsParameters.contextPath +
|
|
226
|
-
'/cms/adminframe/default/$lang/settings.myLegacyPage.html?redirect=false'
|
|
227
|
-
});
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
### Administration target groups
|
|
231
|
-
|
|
232
|
-
| Target group | Description |
|
|
233
|
-
|-------------|-------------|
|
|
234
|
-
| `administration-server-usersAndRoles` | Server > Users and Roles |
|
|
235
|
-
| `administration-server-systemComponents` | Server > System Components |
|
|
236
|
-
| `administration-sites` | Sites section |
|
|
237
|
-
|
|
238
|
-
---
|
|
239
|
-
|
|
240
|
-
## 7. Custom selector types
|
|
241
|
-
|
|
242
|
-
```javascript
|
|
243
|
-
registry.add('selectorType', 'MyColorPicker', {
|
|
244
|
-
targets: ['BuiltInTypes:10'],
|
|
245
|
-
cmp: MyColorPickerComponent,
|
|
246
|
-
supportedTypes: ['String'],
|
|
247
|
-
});
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
Reference in CND:
|
|
251
|
-
```cnd
|
|
252
|
-
- myColor (string, MyColorPicker)
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
---
|
|
256
|
-
|
|
257
|
-
## 8. Custom picker configuration
|
|
258
|
-
|
|
259
|
-
```javascript
|
|
260
|
-
registry.add('pickerConfig', 'myPicker', {
|
|
261
|
-
accordionItem: 'pages',
|
|
262
|
-
searchSelectorType: ['jnt:article', 'jnt:page'],
|
|
263
|
-
selectableTypes: ['jnt:article'],
|
|
264
|
-
openableTypes: ['jnt:page', 'jnt:contentFolder']
|
|
265
|
-
});
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
Reference in CND:
|
|
269
|
-
```cnd
|
|
270
|
-
- relatedArticle (weakreference, picker[type='myPicker'])
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
|
|
275
|
-
## 9. Dynamic forms in Content Editor
|
|
276
|
-
|
|
277
|
-
Implement `DynamicFieldSetExtractor` for server-side dynamic forms:
|
|
278
|
-
|
|
279
|
-
```java
|
|
280
|
-
@Component(service = DynamicFieldSetExtractor.class)
|
|
281
|
-
public class MyDynamicExtractor implements DynamicFieldSetExtractor {
|
|
282
|
-
|
|
283
|
-
@Override
|
|
284
|
-
public Set<String> getExtendedNodeTypesToFill(JCRNodeWrapper node,
|
|
285
|
-
ExtendedNodeType primaryNodeType, Locale locale, RenderContext ctx) {
|
|
286
|
-
String category = node.getPropertyAsString("myCategory");
|
|
287
|
-
if ("premium".equals(category)) {
|
|
288
|
-
return Collections.singleton("myns:premiumFields");
|
|
289
|
-
}
|
|
290
|
-
return Collections.emptySet();
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
---
|
|
296
|
-
|
|
297
|
-
## 10. CKEditor customization
|
|
298
|
-
|
|
299
|
-
### CKEditor 5 (Jahia 8.2+)
|
|
300
|
-
|
|
301
|
-
```javascript
|
|
302
|
-
registry.add('ckeditor5Plugin', 'myPlugin', {
|
|
303
|
-
plugin: MyCKEditorPlugin,
|
|
304
|
-
config: { toolbar: { items: ['myButton'] } }
|
|
305
|
-
});
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
### CKEditor 4 (legacy)
|
|
309
|
-
|
|
310
|
-
Place custom configuration in `src/main/resources/javascript/ckeditor/config.js`.
|
|
311
|
-
|
|
312
|
-
---
|
|
313
|
-
|
|
314
|
-
## 11. Debugging JSON overrides and registry
|
|
315
|
-
|
|
316
|
-
### Checking JSON override registration
|
|
317
|
-
|
|
318
|
-
Look in Jahia startup logs for `StaticDefinitionsRegistry` entries:
|
|
319
|
-
```
|
|
320
|
-
INFO [StaticDefinitionsRegistry] - Successfully loaded static form for name myns:myContent
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
### Querying the generated form via GraphQL
|
|
324
|
-
|
|
325
|
-
```graphql
|
|
326
|
-
{
|
|
327
|
-
forms {
|
|
328
|
-
editForm(uiLocale: "en", locale: "en", uuidOrPath: "/sites/mySite/home/myContent") {
|
|
329
|
-
sections {
|
|
330
|
-
name
|
|
331
|
-
fieldSets { name fields { name selectorType mandatory hide } }
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
### Inspecting the component registry in browser console
|
|
339
|
-
|
|
340
|
-
```javascript
|
|
341
|
-
window.jahia.uiExtender.registry.find({ type: 'action' });
|
|
342
|
-
window.jahia.uiExtender.registry.get('accordionItem', 'pages');
|
|
343
|
-
window.jahia.uiExtender.registry.find({ target: 'contentItemActions' });
|
|
344
|
-
```
|
|
@@ -1,297 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: jahia-dev-osgi-module
|
|
3
|
-
description: Conventions and invariants for building any Jahia OSGi/Java bundle module (Jahia 8.2). Use when working on Maven bundle structure, OSGi Declarative Services, JCR integration, or Java package design.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# SKILL — Jahia OSGi Module Development (8.2)
|
|
7
|
-
|
|
8
|
-
## When this skill applies
|
|
9
|
-
|
|
10
|
-
You are working on anything that touches the OSGi bundle structure, Maven build, JCR node-type definitions, or Jahia service integration. That is, almost every Java change in a Jahia module.
|
|
11
|
-
|
|
12
|
-
## Scaffold a new module
|
|
13
|
-
|
|
14
|
-
Use the official Maven archetype. Always pick archetype **2** (`jahia-module-archetype`) and the latest version.
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
mvn archetype:generate -Dfilter=org.jahia.archetypes:
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
At the interactive prompts:
|
|
21
|
-
1. Enter `2` → `jahia-module-archetype` (Jahia DXP >=8)
|
|
22
|
-
2. Enter the latest version number (currently `4.8`)
|
|
23
|
-
3. Fill in the properties below, then confirm with `Y`
|
|
24
|
-
|
|
25
|
-
| Property | Example | Notes |
|
|
26
|
-
|---|---|---|
|
|
27
|
-
| `artifactId` | `my-module` | Maven artifact ID and folder name |
|
|
28
|
-
| `moduleName` | `My Module` | Human-readable name shown in Jahia UI |
|
|
29
|
-
| `groupId` | `org.example.modules` | Java package root |
|
|
30
|
-
| `jahiaVersion` | `8.2.0.0` | Target Jahia version — use `8.2.0.0`, not the archetype default |
|
|
31
|
-
| `version` | `1.0.0-SNAPSHOT` | Module version |
|
|
32
|
-
| `package` | `org.example.modules` | Java package (usually matches `groupId`) |
|
|
33
|
-
|
|
34
|
-
> ⚠️ **Always set `jahiaVersion` to `8.2.0.0`** — the archetype default (`8.0.0.0`) is outdated. The parent POM version in the generated `pom.xml` should be `org.jahia.modules:jahia-modules:8.2.0.0`. If the archetype sets a different version, update it before your first build.
|
|
35
|
-
|
|
36
|
-
After generation, the scaffolded structure contains:
|
|
37
|
-
```
|
|
38
|
-
<artifactId>/
|
|
39
|
-
├── pom.xml
|
|
40
|
-
└── src/
|
|
41
|
-
├── main/
|
|
42
|
-
│ ├── java/<package>/ # Java sources
|
|
43
|
-
│ └── resources/
|
|
44
|
-
│ └── META-INF/
|
|
45
|
-
│ └── definitions.cnd # Empty — add your node types here
|
|
46
|
-
└── test/
|
|
47
|
-
└── java/<package>/
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Build immediately to verify the scaffold compiles:
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
cd <artifactId>
|
|
54
|
-
mvn clean install
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## Hard invariants
|
|
60
|
-
|
|
61
|
-
1. **Parent POM is `org.jahia.modules:jahia-modules:8.2.0.0`.** Do not bump without a documented decision. This version constrains the Java baseline (Java 17 max), the OSGi spec level (R6 / `osgi.cmpn` 6.0.0), and the available platform APIs.
|
|
62
|
-
|
|
63
|
-
2. **Packaging is `bundle`.** The manifest is generated by `maven-bundle-plugin` (BND) configured in the parent. The parent already sets `Jahia-Module-Type`, `Bundle-Category`, signature, SCM headers, and default JDK target — **do not redeclare them**. Use `<jahia-depends>` and `<jahia-module-signature>` properties to drive the inherited config.
|
|
64
|
-
|
|
65
|
-
3. **Dependencies on Jahia APIs go through `org.jahia.server:jahia-impl` and `jahia-api`** (both `provided`). On `jahia-impl`, exclude transitives:
|
|
66
|
-
```xml
|
|
67
|
-
<exclusions>
|
|
68
|
-
<exclusion><groupId>*</groupId><artifactId>*</artifactId></exclusion>
|
|
69
|
-
</exclusions>
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
4. **OSGi services use Declarative Services (DS) annotations** (`@Component`, `@Reference`, `@Activate`). Enable BND processing with `<_dsannotations>*</_dsannotations>` (already set in the parent pom). Never use Blueprint; never use the `BundleActivator` pattern for new code.
|
|
73
|
-
|
|
74
|
-
5. **`@Component` services that are part of the public SPI must declare a `service` attribute** (e.g. `@Component(service = MyInterface.class)`) so the registry can look them up by interface.
|
|
75
|
-
|
|
76
|
-
6. **Public packages must be declared in `Export-Package`.** Internal implementation lives in `*.internal.*` packages and is *not* exported.
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## Directory conventions
|
|
81
|
-
|
|
82
|
-
| Path | Purpose |
|
|
83
|
-
|---|---|
|
|
84
|
-
| `src/main/java/org/jahia/modules/<name>/` | Java sources |
|
|
85
|
-
| `src/main/resources/META-INF/definitions.cnd` | JCR node type definitions |
|
|
86
|
-
| `src/main/resources/javascript/apps/` | jContent UI extension entry point |
|
|
87
|
-
| `src/main/resources/resources/` | i18n bundles (`.properties` files) |
|
|
88
|
-
| `src/main/import/repository.xml` | Initial JCR content imported on first install |
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
## Java baseline
|
|
93
|
-
|
|
94
|
-
- Java 17. Records, sealed types, pattern matching, `var`, `switch` expressions are all fine.
|
|
95
|
-
- Do **not** use Java 21-only features (virtual threads at the API surface, primitive pattern matching, etc.).
|
|
96
|
-
- Prefer `java.util.Optional`, `java.time.*`, `java.util.concurrent.*` over Guava/Apache Commons unless an existing dependency already provides them.
|
|
97
|
-
|
|
98
|
-
---
|
|
99
|
-
|
|
100
|
-
## JCR access patterns
|
|
101
|
-
|
|
102
|
-
- Always run JCR mutations as the calling Jahia user:
|
|
103
|
-
```java
|
|
104
|
-
JCRTemplate.getInstance().doExecuteWithUserSession(username, workspace, locale, callback)
|
|
105
|
-
```
|
|
106
|
-
Never escalate to a system session for content the user authored or requested.
|
|
107
|
-
- For reads where the user has implicit access, prefer receiving the `JCRSessionWrapper` from the controller layer rather than obtaining one yourself — this keeps the audit trail clean.
|
|
108
|
-
- Save changes explicitly (`session.save()`); do not rely on auto-commit.
|
|
109
|
-
- `JCRSessionWrapper` is per-user, per-workspace, per-locale, **and not thread-safe**. Never hold a reference across threads.
|
|
110
|
-
- Wrap user-visible errors in domain-specific exceptions; let infrastructure exceptions (`RepositoryException`) bubble up to the caller, which converts them to the appropriate response format.
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
## OSGi service pattern
|
|
115
|
-
|
|
116
|
-
```java
|
|
117
|
-
@Component(service = MyService.class, immediate = true)
|
|
118
|
-
public class MyServiceImpl implements MyService {
|
|
119
|
-
|
|
120
|
-
@Reference
|
|
121
|
-
private JahiaSitesService sitesService;
|
|
122
|
-
|
|
123
|
-
@Activate
|
|
124
|
-
protected void activate(Map<String, Object> config) {
|
|
125
|
-
// initialization logic
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
- `immediate = true` is needed for services that must activate on bundle start (e.g. servlet registrations, JCR event listeners).
|
|
131
|
-
- Use `@Reference(cardinality = ReferenceCardinality.OPTIONAL)` for optional dependencies.
|
|
132
|
-
- Constructor injection is preferred over field injection for testability.
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## OSGi configuration (CFG files) — avoids redeployment
|
|
137
|
-
|
|
138
|
-
**Always use a `.cfg` file for any runtime-configurable property** (API keys, URLs, feature flags, timeouts, rate limits). OSGi Config Admin reloads the file at runtime without requiring a module redeploy — changes take effect immediately via the `@Modified` callback.
|
|
139
|
-
|
|
140
|
-
### File location and naming
|
|
141
|
-
|
|
142
|
-
```
|
|
143
|
-
src/main/resources/META-INF/configurations/<service.pid>.cfg
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
The filename **must match the `service.pid`** declared on the `@Component`. Convention:
|
|
147
|
-
|
|
148
|
-
```
|
|
149
|
-
org.<org>.<module-name>.cfg # main service config
|
|
150
|
-
org.jahia.modules.jahiacsrfguard-<module>.cfg # CSRF whitelist (one per module with Actions)
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
### Main config pattern — DS `@Activate` + `@Modified` (preferred)
|
|
154
|
-
|
|
155
|
-
Use the **snapshot pattern** with Declarative Services annotations. This is cleaner than implementing `ManagedService` — no need for the extra service declaration, and `@Modified` fires automatically on `.cfg` changes without a full component restart.
|
|
156
|
-
|
|
157
|
-
```java
|
|
158
|
-
@Component(
|
|
159
|
-
service = MyService.class,
|
|
160
|
-
configurationPid = "org.example.mymodule", // links to the .cfg filename
|
|
161
|
-
immediate = true
|
|
162
|
-
)
|
|
163
|
-
public class MyServiceImpl implements MyService {
|
|
164
|
-
|
|
165
|
-
private volatile Snapshot config = Snapshot.empty();
|
|
166
|
-
|
|
167
|
-
@Activate
|
|
168
|
-
@Modified // ← same method handles both initial activation and runtime config changes
|
|
169
|
-
protected void activate(Map<String, Object> properties) {
|
|
170
|
-
this.config = Snapshot.from(properties);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
@Override
|
|
174
|
-
public String process(String input) {
|
|
175
|
-
Snapshot cfg = this.config; // single volatile read — consistent snapshot
|
|
176
|
-
if (!cfg.isConfigured()) throw new IllegalStateException("Service not configured");
|
|
177
|
-
// use cfg.apiKey, cfg.baseUrl, cfg.timeoutMs ...
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
// Immutable snapshot — readers always see a complete, consistent config
|
|
181
|
-
private static final class Snapshot {
|
|
182
|
-
final String apiKey;
|
|
183
|
-
final String baseUrl;
|
|
184
|
-
final int timeoutMs;
|
|
185
|
-
|
|
186
|
-
private Snapshot(String apiKey, String baseUrl, int timeoutMs) {
|
|
187
|
-
this.apiKey = apiKey;
|
|
188
|
-
this.baseUrl = baseUrl;
|
|
189
|
-
this.timeoutMs = timeoutMs;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
static Snapshot empty() { return new Snapshot("", "https://api.example.com", 30_000); }
|
|
193
|
-
|
|
194
|
-
static Snapshot from(Map<String, Object> p) {
|
|
195
|
-
return new Snapshot(
|
|
196
|
-
str(p, "API_KEY", ""),
|
|
197
|
-
str(p, "API_BASE_URL", "https://api.example.com"),
|
|
198
|
-
intVal(p, "TIMEOUT_MS", 30_000)
|
|
199
|
-
);
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
boolean isConfigured() { return !apiKey.isBlank() && !baseUrl.isBlank(); }
|
|
203
|
-
|
|
204
|
-
private static String str(Map<String, Object> m, String k, String def) {
|
|
205
|
-
Object v = m.get(k);
|
|
206
|
-
return (v instanceof String s && !s.isBlank()) ? s.trim() : def;
|
|
207
|
-
}
|
|
208
|
-
private static int intVal(Map<String, Object> m, String k, int def) {
|
|
209
|
-
try { return Integer.parseInt(String.valueOf(m.get(k))); }
|
|
210
|
-
catch (Exception e) { return def; }
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
> **Why snapshot?** The `volatile Snapshot` field is replaced atomically. Callers that read `this.config` in a method always see a fully-initialized, internally consistent configuration — never a mix of old key + new URL. This is thread-safe without synchronization.
|
|
217
|
-
|
|
218
|
-
> **Why `@Activate` + `@Modified` together?** OSGi DS calls `@Activate` on first start and `@Modified` when the `.cfg` file changes without stopping the component. Pointing both to the same method means a single code path handles both cases. If only `@Activate` is annotated, a config change triggers a full stop/start cycle instead of a lightweight update.
|
|
219
|
-
|
|
220
|
-
### The `.cfg` file
|
|
221
|
-
|
|
222
|
-
```properties
|
|
223
|
-
# src/main/resources/META-INF/configurations/org.example.mymodule.cfg
|
|
224
|
-
#
|
|
225
|
-
# Deployed to: digital-factory-data/karaf/etc/
|
|
226
|
-
# Edit that file at runtime — changes take effect without redeployment.
|
|
227
|
-
#
|
|
228
|
-
API_KEY=
|
|
229
|
-
API_BASE_URL=https://api.example.com
|
|
230
|
-
TIMEOUT_MS=30000
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
> The `.cfg` file ships with safe defaults. Operators override it in `digital-factory-data/karaf/etc/` on each environment (dev / staging / prod) — secrets never live in the source repository.
|
|
234
|
-
|
|
235
|
-
### CSRF guard config (required for every module with Java Actions)
|
|
236
|
-
|
|
237
|
-
```properties
|
|
238
|
-
# src/main/resources/META-INF/configurations/org.jahia.modules.jahiacsrfguard-mymodule.cfg
|
|
239
|
-
whitelist = *.myFirstAction.do, *.mySecondAction.do
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
One entry per Action name. Missing this file means every POST to those endpoints is rejected with 403.
|
|
243
|
-
|
|
244
|
-
---
|
|
245
|
-
|
|
246
|
-
## GraphQL extensions
|
|
247
|
-
|
|
248
|
-
- Provided by the `graphql-dxm-provider` module (declare as `<jahia-depends>`).
|
|
249
|
-
- Extend by registering classes annotated with `@GraphQLTypeExtension`, `@GraphQLField`, etc.
|
|
250
|
-
- Authentication is inherited from the HTTP request; resolvers run as the authenticated user.
|
|
251
|
-
- Register as a `@Component(service = DXGraphQLExtensionsProvider.class)`.
|
|
252
|
-
|
|
253
|
-
---
|
|
254
|
-
|
|
255
|
-
## Adding a dependency
|
|
256
|
-
|
|
257
|
-
1. Check if Jahia already provides it via `jahia-impl` exports before adding.
|
|
258
|
-
2. If available at runtime: `<scope>provided</scope>`.
|
|
259
|
-
3. If it must be bundled: `Embed-Dependency` in the BND config (last resort — adds to bundle size and risks classpath conflicts).
|
|
260
|
-
|
|
261
|
-
---
|
|
262
|
-
|
|
263
|
-
## Testing
|
|
264
|
-
|
|
265
|
-
- **Unit tests:** JUnit 5 + Mockito. Place under `src/test/java`.
|
|
266
|
-
- **Integration tests:** Use the `jahia-test-utils` framework against a running Jahia instance. Tag with `@Tag("integration")` and isolate from the unit test run.
|
|
267
|
-
- Do not mock core Jahia services in integration tests — load them from the real OSGi registry. The registry is the contract.
|
|
268
|
-
|
|
269
|
-
---
|
|
270
|
-
|
|
271
|
-
## Common pitfalls
|
|
272
|
-
|
|
273
|
-
- ❌ Adding a dependency without checking if Jahia already provides it → check `jahia-impl` exports first.
|
|
274
|
-
- ❌ `LoggerFactory.getLogger(getClass())` in a `static` context → use `LoggerFactory.getLogger(MyClass.class)`.
|
|
275
|
-
- ❌ Holding `JCRSessionWrapper` references across threads → sessions are not thread-safe.
|
|
276
|
-
- ❌ Forgetting to export public packages → consumers won't see the service.
|
|
277
|
-
- ❌ Using `jmix:studioOnly` in CND definitions → it can silently break area rendering. Use `jmix:hiddenType`.
|
|
278
|
-
- ❌ Declaring `j:linknode` or `j:url` in a CND alongside `choicelist[linkTypeInitializer]` → they are injected automatically by Jahia's mixins at runtime.
|
|
279
|
-
|
|
280
|
-
---
|
|
281
|
-
|
|
282
|
-
## Useful Jahia service entry points
|
|
283
|
-
|
|
284
|
-
```java
|
|
285
|
-
JCRTemplate.getInstance().doExecuteWithUserSession(...) // primary JCR access pattern
|
|
286
|
-
JahiaSitesService.getInstance().getSiteByKey(siteKey) // resolve a site
|
|
287
|
-
JCRSessionFactory.getInstance().getCurrentUser() // current Jahia user
|
|
288
|
-
NodeTypeRegistry.getInstance().getNodeType(name) // node type metadata
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
---
|
|
292
|
-
|
|
293
|
-
## References
|
|
294
|
-
|
|
295
|
-
- Jahia 8 developer documentation: https://academy.jahia.com
|
|
296
|
-
- Native Jahia node types (CND source): https://github.com/Jahia/jahia/tree/master/war/src/main/webapp/WEB-INF/etc/repository/nodetypes
|
|
297
|
-
- Jahia GraphQL API: https://academy.jahia.com/documentation/developer/jahia/8/api-documentation/graphql-api
|