Skip to content

Commit

Permalink
Added defaultModel configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
kele23 committed Jan 23, 2025
1 parent be1b7ec commit d9adbb4
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 8 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@kele23/fe-aem-server",
"version": "0.7.2",
"version": "0.7.3",
"description": "FE AEM Server",
"main": "./src/index.js",
"type": "module",
Expand Down
23 changes: 20 additions & 3 deletions src/engine/htl/bindings-provider.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@ class BindingsProvider {
/**
* Construct a bindings provider
* @param {Object} bindings Custom bindings provided in plugin configuration
* @param {Object} compilationOptions Compilation options
* @param {Object} modelAlias The model name
* @param {Object} defaultModel Path to default model ( if provided )
* @param {Object} htlResourceResolver The resource resolver
*/
constructor(bindings, modelAlias, htlResourceResolver) {
constructor(bindings, modelAlias, defaultModel, htlResourceResolver) {
this.bindings = bindings;
this.modelAlias = modelAlias;
this.defaultModel = defaultModel;
this.htlResourceResolver = htlResourceResolver;
}

Expand All @@ -32,7 +35,7 @@ class BindingsProvider {
*/
provide(resource, currentGlobals) {
const result = {};
const res = this.htlResourceResolver.getResource(path.posix.join(resource.getResourceType(), '@model.js'));
const res = this._getModelResource(resource);
if (res) {
const absPath = this.htlResourceResolver.getSystemPath(res.getPath());
const model = new Model(absPath);
Expand All @@ -54,6 +57,20 @@ class BindingsProvider {
}
return result;
}

_getModelResource(resource) {
// check current resource type model
const res = this.htlResourceResolver.getResource(path.posix.join(resource.getResourceType(), '@model.js'));
if (res) return res;

// check default model if provided
if (this.defaultModel) {
const defModel = this.htlResourceResolver.getResource(this.defaultModel);
if (defModel) return defModel;
}

return null;
}
}

export default BindingsProvider;
4 changes: 2 additions & 2 deletions src/engine/htl/htl-render.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ class HTLRender {
* @param {BindingsProvider} bindings The BindingsPro
* @param {Object} options Compilation options
*/
constructor(repoReaders, { modelAlias, hotComponents }) {
constructor(repoReaders, { modelAlias, defaultModel, hotComponents }) {
this.htlResourceResolver = new ResourceResolver(repoReaders);
this.bindings = new BindingsProvider({}, modelAlias, this.htlResourceResolver);
this.bindings = new BindingsProvider({}, modelAlias, defaultModel, this.htlResourceResolver);
this.hotComponents = hotComponents;
}

Expand Down
1 change: 1 addition & 0 deletions src/server/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ class Server {
this.repoReadersObj = crReposObj;
this.render = new HTLRender(this.repoReadersObj, {
modelAlias: this.serverConfig.modelAlias || ['model'],
defaultModel: this.serverConfig.defaultModel,
hotComponents: serverConfig.hotComponents,
});
this.proxies = serverConfig.proxies;
Expand Down
7 changes: 7 additions & 0 deletions test-webpack/repository/apps/_models/@default.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/*global use*/
use(function () {
return {
uniqueId: Math.floor(Math.random() * 10000),
...this.properties,
};
});
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
<div class="container mx-auto px-4"
data-sly-use.text="com.adobe.cq.wcm.core.components.models.form.Text">
<div
class="container mx-auto px-4"
id="${model.uniqueId}"
data-sly-use.text="com.adobe.cq.wcm.core.components.models.form.Text"
>
<div class="prose">${text.text}</div>
</div>
1 change: 1 addition & 0 deletions test-webpack/server.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,5 @@ export default {
path: path.resolve(__dirname, 'dist'),
},
modelAlias: ['model'],
defaultModel: '/apps/_models/@default.js',
};

0 comments on commit d9adbb4

Please sign in to comment.