Расширение функционала ηCMS¶
ηCMS инсталлируется в форме создания проекта веб приложения на java платформе. Тем самым, пользователь ηCMS с самого начала работы с этой системой имеет самые широкие возможности расширения функционала веб сайтов, построенных на этой системе.
Структура нового ηCMS проекта в случае, если имя проекта myncms:
myncms
│
├── qx/
│ ├── src/...
| | main/qooxdoo/classes/myncms/Application.js
│ └── pom.xml
├── tomcat/
│ ├── context.xml
│ └── server.xml
├── web/
│ ├── src/...
| | main/java/com/myncms/AppModule.java
| | main/java/com/myncms/AppHttlMethods.java
| | main/java/com/myncms/AppBoot.java
│ └── pom.xml
├── pom.xml
└── README.md
После создания нового проекта создается Guice модуль, в контексте которого можно регистрировать кастомные модули, специфичные для вашего проекта:
package com.myncms;
import com.google.inject.AbstractModule;
import com.google.inject.Singleton;
import com.softmotions.weboot.WBConfiguration;
/**
* Custom application Guice module
*/
public class AppModule extends AbstractModule {
private final WBConfiguration cfg;
public AppModule(WBConfiguration cfg) {
this.cfg = cfg;
}
@Override
protected void configure() {
// Register your modules here
}
}
При генерации нового проекта создается заготовка кастомного HTTL модуля, статические методы которого доступны в шаблонах ваших веб сайтов:
package com.myncms;
public class AppHttlMethods {
private AppHttlMethods() {
}
public static String helloFromHttl(String name) {
return "Hello " + name;
}
}
Использование helloFromHttl в HTTL шаблонах:
<!-- Вывод строки: Hello Andy -->
${helloFromHttl('Andy')}
Клиентская часть административной зоны ηCMS реализована на базе javascript фреймворка Qooxdoo http://qooxdoo.org.
Стартовый класс qooxdoo приложения административной зоны ηCMS определен в подпроекте qx в файле src/main/qooxdoo/classes/myncms/Application.js. В случае, если ваш проект назван myncms:
/**
* App site application.
*/
qx.Class.define("myncms.Application", {
extend: ncms.Application,
members: {
main: function () {
this.base(arguments);
},
createActions: function () {
return new myncms.Actions();
}
}
});
В данной стартовой точке административного GUI вашего приложения (myncms.Application) вы можете создавать и регистрировать кастомные qooxdoo элементы, расширяя и настраивая функционал административной зоны ηCMS.