Настраиваемое действие с использованием настраиваемого класса команд и диалога в магнолии - PullRequest
0 голосов
/ 03 февраля 2020

Я хотел бы иметь настраиваемое действие в приложении страниц, которое открывает диалог с одним полем для комментария и двумя действиями, а именно cancel и commit. Действие фиксации вызывает пользовательский класс ExportToGitCommand.

Я определил определение пользовательского действия и действие класса для приложения страниц в Магнолии:

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

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Это возможное решение, которое сработало. В приложении «Страницы магнолии» в конфигурации «Магнолия» настройте пользовательское действие: enter image description here

В соответствующем модуле, указанном в dialogName, определите диалоговое окно: enter image description here

Пользовательский класс расширяет CommandActionDefinition:

public class ExportToGitCommandActionDefinition extends CommandActionDefinition{

    public ExportToGitCommandActionDefinition() {
        this.setImplementationClass(ExportToGitCommandAction.class);    
    }
0 голосов
/ 04 февраля 2020

Я думаю, что вы допустили ошибку в определении вашего действия. Вам необходимо указать «имя» команды в вашем каталоге, а не путь к ней. И вам нужно указать имя каталога, если оно отличается от «default».

Попробуйте это:

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