在 magnolia 中使用自定义命令 class 和对话框进行自定义操作

Custom action using custom command class and dialog in magnolia

我想在页面应用程序上有一个自定义操作,它打开一个对话框,其中包含一个用于评论的字段和两个操作,即 cancelcommit。提交操作调用自定义 ExportToGitCommand class。

我为 magnolia 中的页面应用程序定义了自定义操作定义和 class 操作:

public class ExportToGitCommandAction extends AbstractCommandAction<ExportToGitCommandActionDefinition>{

    public ExportToGitCommandAction(ExportToGitCommandActionDefinition definition, JcrItemAdapter item,
            CommandsManager commandsManager, UiContext uiContext, SimpleTranslator i18n) {
        super(definition, item, commandsManager, uiContext, i18n);
        // TODO Auto-generated constructor stub
    }

    public ExportToGitCommandAction(ExportToGitCommandActionDefinition definition, List<JcrItemAdapter> items,
            CommandsManager commandsManager, UiContext uiContext, SimpleTranslator i18n) {
        super(definition, items, commandsManager, uiContext, i18n);
        // TODO Auto-generated constructor stub
    }
}

在 Config 应用程序中我定义了 myAction:

MyAction
      class ->ch.xxx.module.versioning.ExportToGitCommandActionDefinition
      command -> /modules/xxx-module-versioning/commands/versioning/gitexport
      dialogName -> /modules/xxx-module-versioning/dialogs/saveversion

ExportToGitCommandAction 中的构造函数被调用,但 myAction 中的对话框和命令未被调用。我需要实施什么方法才能使 myAction:

  1. 打开一个对话框
  2. 执行自定义命令

自定义命令gitexport代码为:

public class ExportToGitCommand extends BaseRepositoryCommand {

  @Override
  public boolean execute(Context context) throws Exception {
  //custom code here
}
}

部分解决方案

在页面应用程序下,我使用以下配置创建了一个操作:

MyAction
     class ->i nfo.magnolia.ui.framework.action.OpenCreateDialogActionDefinition
     dialogName -> xxx-module-versioning:gitexport
     icon -> icon-i-beacon
     label -> MyAction

我在 xxx-module-versioning 应用程序下配置了对话框:

xxx-module-versioning
   commands
   dialogs
      gitexport 
         form
         actions

我认为您对操作的定义有误。您需要在目录中指定命令的 "name",而不是它的路径。如果目录名称与 "default".

不同,则需要指定目录名称

试试这个:

MyAction
  class ->ch.xxx.module.versioning.ExportToGitCommandActionDefinition
  command -> gitexport
  catalog -> versioning
  dialogName -> /modules/xxx-module-versioning/dialogs/saveversion

这是一个可行的解决方案。 在 magnolia 配置中的 magnolia pages 应用程序中配置自定义操作:

在 dialogName 下定义的相应模块中定义对话框:

自定义 class 扩展 CommandActionDefinition:

public class ExportToGitCommandActionDefinition extends CommandActionDefinition{

    public ExportToGitCommandActionDefinition() {
        this.setImplementationClass(ExportToGitCommandAction.class);    
    }