correction page
This commit is contained in:
parent
157b64d075
commit
0e053b77e0
8 changed files with 92 additions and 80 deletions
|
|
@ -1,58 +0,0 @@
|
||||||
package org.chtijbug.drools.console;
|
|
||||||
|
|
||||||
|
|
||||||
import com.vaadin.flow.component.Component;
|
|
||||||
import com.vaadin.flow.component.contextmenu.ContextMenu;
|
|
||||||
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
|
||||||
public class DroolsAdminConsoleMainView extends VerticalLayout {
|
|
||||||
|
|
||||||
|
|
||||||
private ContextMenu contextMenu;
|
|
||||||
|
|
||||||
private VerticalLayout actionView;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public DroolsAdminConsoleMainView() {
|
|
||||||
|
|
||||||
|
|
||||||
contextMenu = new ContextMenu();
|
|
||||||
this.add(contextMenu);
|
|
||||||
Component target = this;
|
|
||||||
contextMenu.setTarget(target);
|
|
||||||
|
|
||||||
contextMenu.addItem("Deployment",
|
|
||||||
e -> {
|
|
||||||
getUI().get().navigate("Deployment");
|
|
||||||
});
|
|
||||||
|
|
||||||
contextMenu.addItem("AssetUpdate",
|
|
||||||
e -> {
|
|
||||||
getUI().get().navigate("AssetUpdate");
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
actionView = new VerticalLayout();
|
|
||||||
|
|
||||||
//this.add(actionView);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ContextMenu getContextMenu() {
|
|
||||||
return contextMenu;
|
|
||||||
}
|
|
||||||
|
|
||||||
public VerticalLayout getActionView() {
|
|
||||||
return actionView;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setActionView(VerticalLayout actionView) {
|
|
||||||
this.add(actionView);
|
|
||||||
this.actionView = actionView;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -6,6 +6,7 @@ import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
||||||
import org.chtijbug.drools.console.vaadinComponent.leftMenu.LeftMenuGlobal;
|
import org.chtijbug.drools.console.vaadinComponent.leftMenu.LeftMenuGlobal;
|
||||||
import org.chtijbug.drools.console.vaadinComponent.menu.MenuPrincipal;
|
import org.chtijbug.drools.console.vaadinComponent.menu.MenuPrincipal;
|
||||||
import org.chtijbug.drools.console.vaadinComponent.menu.MenuScondaireDeployement;
|
import org.chtijbug.drools.console.vaadinComponent.menu.MenuScondaireDeployement;
|
||||||
|
import org.chtijbug.drools.console.vaadinComponent.menu.MenuSecondaireAssets;
|
||||||
import org.chtijbug.drools.console.vaadinComponent.menu.MenuSecondaireInfoUser;
|
import org.chtijbug.drools.console.vaadinComponent.menu.MenuSecondaireInfoUser;
|
||||||
|
|
||||||
@StyleSheet("css/accueil.css")
|
@StyleSheet("css/accueil.css")
|
||||||
|
|
@ -19,6 +20,8 @@ public class SqueletteComposant extends VerticalLayout {
|
||||||
|
|
||||||
private MenuSecondaireInfoUser menuSecondaireInfoUser;
|
private MenuSecondaireInfoUser menuSecondaireInfoUser;
|
||||||
|
|
||||||
|
private MenuSecondaireAssets menuSecondaireAssets;
|
||||||
|
|
||||||
private VerticalLayout content;
|
private VerticalLayout content;
|
||||||
|
|
||||||
private VerticalLayout infoPage;
|
private VerticalLayout infoPage;
|
||||||
|
|
@ -45,6 +48,9 @@ public class SqueletteComposant extends VerticalLayout {
|
||||||
menuSecondaireInfoUser=new MenuSecondaireInfoUser();
|
menuSecondaireInfoUser=new MenuSecondaireInfoUser();
|
||||||
content.add(menuSecondaireInfoUser);
|
content.add(menuSecondaireInfoUser);
|
||||||
|
|
||||||
|
menuSecondaireAssets=new MenuSecondaireAssets();
|
||||||
|
content.add(menuSecondaireAssets);
|
||||||
|
|
||||||
infoPage=new VerticalLayout();
|
infoPage=new VerticalLayout();
|
||||||
infoPage.setClassName("squelette-component-infoPage");
|
infoPage.setClassName("squelette-component-infoPage");
|
||||||
content.add(infoPage);
|
content.add(infoPage);
|
||||||
|
|
@ -67,6 +73,14 @@ public class SqueletteComposant extends VerticalLayout {
|
||||||
return leftMenuGlobal;
|
return leftMenuGlobal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MenuSecondaireAssets getMenuSecondaireAssets() {
|
||||||
|
return menuSecondaireAssets;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMenuSecondaireAssets(MenuSecondaireAssets menuSecondaireAssets) {
|
||||||
|
this.menuSecondaireAssets = menuSecondaireAssets;
|
||||||
|
}
|
||||||
|
|
||||||
public void setLeftMenuGlobal(LeftMenuGlobal leftMenuGlobal) {
|
public void setLeftMenuGlobal(LeftMenuGlobal leftMenuGlobal) {
|
||||||
this.leftMenuGlobal = leftMenuGlobal;
|
this.leftMenuGlobal = leftMenuGlobal;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,8 @@ public class MenuPrincipal extends HorizontalLayout {
|
||||||
|
|
||||||
private Button deployement;
|
private Button deployement;
|
||||||
|
|
||||||
|
private Button assets;
|
||||||
|
|
||||||
private Button infoUser;
|
private Button infoUser;
|
||||||
|
|
||||||
private Button hamburger;
|
private Button hamburger;
|
||||||
|
|
@ -77,10 +79,32 @@ public class MenuPrincipal extends HorizontalLayout {
|
||||||
active(deployement);
|
active(deployement);
|
||||||
squeletteComposant.getMenuScondaireDeployement().setVisible(true);
|
squeletteComposant.getMenuScondaireDeployement().setVisible(true);
|
||||||
squeletteComposant.getMenuSecondaireInfoUser().setVisible(false);
|
squeletteComposant.getMenuSecondaireInfoUser().setVisible(false);
|
||||||
|
squeletteComposant.getMenuSecondaireAssets().setVisible(false);
|
||||||
}else {
|
}else {
|
||||||
removeActive(deployement);
|
removeActive(deployement);
|
||||||
squeletteComposant.getMenuScondaireDeployement().setVisible(false);
|
squeletteComposant.getMenuScondaireDeployement().setVisible(false);
|
||||||
squeletteComposant.getMenuSecondaireInfoUser().setVisible(false);
|
squeletteComposant.getMenuSecondaireInfoUser().setVisible(false);
|
||||||
|
squeletteComposant.getMenuSecondaireAssets().setVisible(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
assets=new Button("Assets");
|
||||||
|
assets.setClassName("menu-principal-button");
|
||||||
|
add(assets);
|
||||||
|
assets.addClickListener(buttonClickEvent -> {
|
||||||
|
|
||||||
|
if(!isActive(assets)) {
|
||||||
|
active(assets);
|
||||||
|
squeletteComposant.getMenuScondaireDeployement().setVisible(false);
|
||||||
|
squeletteComposant.getMenuSecondaireInfoUser().setVisible(false);
|
||||||
|
squeletteComposant.getMenuSecondaireAssets().setVisible(true);
|
||||||
|
|
||||||
|
}else {
|
||||||
|
removeActive(assets);
|
||||||
|
squeletteComposant.getMenuScondaireDeployement().setVisible(false);
|
||||||
|
squeletteComposant.getMenuSecondaireInfoUser().setVisible(false);
|
||||||
|
squeletteComposant.getMenuSecondaireAssets().setVisible(false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -93,10 +117,14 @@ public class MenuPrincipal extends HorizontalLayout {
|
||||||
active(infoUser);
|
active(infoUser);
|
||||||
squeletteComposant.getMenuScondaireDeployement().setVisible(false);
|
squeletteComposant.getMenuScondaireDeployement().setVisible(false);
|
||||||
squeletteComposant.getMenuSecondaireInfoUser().setVisible(true);
|
squeletteComposant.getMenuSecondaireInfoUser().setVisible(true);
|
||||||
|
squeletteComposant.getMenuSecondaireAssets().setVisible(false);
|
||||||
|
|
||||||
}else {
|
}else {
|
||||||
removeActive(infoUser);
|
removeActive(infoUser);
|
||||||
squeletteComposant.getMenuScondaireDeployement().setVisible(false);
|
squeletteComposant.getMenuScondaireDeployement().setVisible(false);
|
||||||
squeletteComposant.getMenuSecondaireInfoUser().setVisible(false);
|
squeletteComposant.getMenuSecondaireInfoUser().setVisible(false);
|
||||||
|
squeletteComposant.getMenuSecondaireAssets().setVisible(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,10 +26,16 @@ public class MenuScondaireDeployement extends HorizontalLayout {
|
||||||
accueilDeployment=new Button("Accueil deployement",VaadinIcon.ARCHIVE.create());
|
accueilDeployment=new Button("Accueil deployement",VaadinIcon.ARCHIVE.create());
|
||||||
accueilDeployment.setClassName("menu-secondaire-button");
|
accueilDeployment.setClassName("menu-secondaire-button");
|
||||||
add(accueilDeployment);
|
add(accueilDeployment);
|
||||||
|
accueilDeployment.addClickListener(buttonClickEvent -> {
|
||||||
|
getUI().get().navigate("AssetUpdate");
|
||||||
|
});
|
||||||
|
|
||||||
projectDeploy=new Button("Deployable project",VaadinIcon.EJECT.create());
|
projectDeploy=new Button("Deployable project",VaadinIcon.EJECT.create());
|
||||||
projectDeploy.setClassName("menu-secondaire-button");
|
projectDeploy.setClassName("menu-secondaire-button");
|
||||||
add(projectDeploy);
|
add(projectDeploy);
|
||||||
|
projectDeploy.addClickListener(buttonClickEvent -> {
|
||||||
|
getUI().get().navigate("deployment");
|
||||||
|
});
|
||||||
|
|
||||||
addRuntime=new Button("add runtime", VaadinIcon.PLUS.create());
|
addRuntime=new Button("add runtime", VaadinIcon.PLUS.create());
|
||||||
addRuntime.setClassName("menu-secondaire-button");
|
addRuntime.setClassName("menu-secondaire-button");
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
package org.chtijbug.drools.console.vaadinComponent.menu;
|
||||||
|
|
||||||
|
import com.vaadin.flow.component.button.Button;
|
||||||
|
import com.vaadin.flow.component.dependency.StyleSheet;
|
||||||
|
import com.vaadin.flow.component.icon.VaadinIcon;
|
||||||
|
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
|
||||||
|
|
||||||
|
@StyleSheet("css/accueil.css")
|
||||||
|
public class MenuSecondaireAssets extends HorizontalLayout {
|
||||||
|
|
||||||
|
private Button details;
|
||||||
|
|
||||||
|
public MenuSecondaireAssets(){
|
||||||
|
setVisible(false);
|
||||||
|
|
||||||
|
setClassName("menu-secondaire-content");
|
||||||
|
|
||||||
|
details=new Button("Détails", VaadinIcon.INFO.create());
|
||||||
|
details.setClassName("menu-secondaire-button");
|
||||||
|
add(details);
|
||||||
|
details.addClickListener(buttonClickEvent -> {
|
||||||
|
getUI().get().navigate("AssetDetail");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public Button getDetails() {
|
||||||
|
return details;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDetails(Button details) {
|
||||||
|
this.details = details;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -10,12 +10,12 @@ import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
||||||
import com.vaadin.flow.component.textfield.TextField;
|
import com.vaadin.flow.component.textfield.TextField;
|
||||||
import com.vaadin.flow.data.binder.Binder;
|
import com.vaadin.flow.data.binder.Binder;
|
||||||
import com.vaadin.flow.router.Route;
|
import com.vaadin.flow.router.Route;
|
||||||
import org.chtijbug.drools.console.DroolsAdminConsoleMainView;
|
|
||||||
import org.chtijbug.drools.console.service.KieRepositoryService;
|
import org.chtijbug.drools.console.service.KieRepositoryService;
|
||||||
import org.chtijbug.drools.console.service.UserConnectedService;
|
import org.chtijbug.drools.console.service.UserConnectedService;
|
||||||
import org.chtijbug.drools.console.service.model.UserConnected;
|
import org.chtijbug.drools.console.service.model.UserConnected;
|
||||||
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
|
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
|
||||||
import org.chtijbug.drools.console.service.util.AppContext;
|
import org.chtijbug.drools.console.service.util.AppContext;
|
||||||
|
import org.chtijbug.drools.console.vaadinComponent.Squelette.SqueletteComposant;
|
||||||
import org.drools.workbench.models.datamodel.rule.InterpolationVariable;
|
import org.drools.workbench.models.datamodel.rule.InterpolationVariable;
|
||||||
import org.drools.workbench.models.guided.template.backend.RuleTemplateModelXMLPersistenceImpl;
|
import org.drools.workbench.models.guided.template.backend.RuleTemplateModelXMLPersistenceImpl;
|
||||||
import org.drools.workbench.models.guided.template.shared.TemplateModel;
|
import org.drools.workbench.models.guided.template.shared.TemplateModel;
|
||||||
|
|
@ -31,7 +31,7 @@ import java.util.*;
|
||||||
|
|
||||||
@Route("AssetDetail")
|
@Route("AssetDetail")
|
||||||
@StyleSheet("css/accueil.css")
|
@StyleSheet("css/accueil.css")
|
||||||
public class AssetEditView extends DroolsAdminConsoleMainView {
|
public class AssetEditView extends SqueletteComposant {
|
||||||
|
|
||||||
private KieRepositoryService kieRepositoryService;
|
private KieRepositoryService kieRepositoryService;
|
||||||
private KieConfigurationData config;
|
private KieConfigurationData config;
|
||||||
|
|
@ -48,11 +48,6 @@ public class AssetEditView extends DroolsAdminConsoleMainView {
|
||||||
private String projectName;
|
private String projectName;
|
||||||
|
|
||||||
public AssetEditView() {
|
public AssetEditView() {
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
public void buildUI() {
|
|
||||||
|
|
||||||
this.kieRepositoryService = AppContext.getApplicationContext().getBean(KieRepositoryService.class);
|
this.kieRepositoryService = AppContext.getApplicationContext().getBean(KieRepositoryService.class);
|
||||||
this.config = AppContext.getApplicationContext().getBean(KieConfigurationData.class);
|
this.config = AppContext.getApplicationContext().getBean(KieConfigurationData.class);
|
||||||
|
|
@ -132,7 +127,7 @@ public class AssetEditView extends DroolsAdminConsoleMainView {
|
||||||
binder.setBean(giveInitRow(model));
|
binder.setBean(giveInitRow(model));
|
||||||
fillTable(model);
|
fillTable(model);
|
||||||
gridAssetTable.setSizeFull();
|
gridAssetTable.setSizeFull();
|
||||||
setActionView(verticalLayout);
|
getInfoPage().add(verticalLayout);
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -8,13 +8,13 @@ import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
||||||
import com.vaadin.flow.component.textfield.TextField;
|
import com.vaadin.flow.component.textfield.TextField;
|
||||||
import com.vaadin.flow.router.Route;
|
import com.vaadin.flow.router.Route;
|
||||||
import org.chtijbug.drools.console.AddLog;
|
import org.chtijbug.drools.console.AddLog;
|
||||||
import org.chtijbug.drools.console.DroolsAdminConsoleMainView;
|
|
||||||
import org.chtijbug.drools.console.service.KieRepositoryService;
|
import org.chtijbug.drools.console.service.KieRepositoryService;
|
||||||
import org.chtijbug.drools.console.service.KieServerRepositoryService;
|
import org.chtijbug.drools.console.service.KieServerRepositoryService;
|
||||||
import org.chtijbug.drools.console.service.UserConnectedService;
|
import org.chtijbug.drools.console.service.UserConnectedService;
|
||||||
import org.chtijbug.drools.console.service.model.UserConnected;
|
import org.chtijbug.drools.console.service.model.UserConnected;
|
||||||
import org.chtijbug.drools.console.service.model.kie.*;
|
import org.chtijbug.drools.console.service.model.kie.*;
|
||||||
import org.chtijbug.drools.console.service.util.AppContext;
|
import org.chtijbug.drools.console.service.util.AppContext;
|
||||||
|
import org.chtijbug.drools.console.vaadinComponent.Squelette.SqueletteComposant;
|
||||||
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectResponse;
|
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectResponse;
|
||||||
import org.guvnor.rest.client.ProjectResponse;
|
import org.guvnor.rest.client.ProjectResponse;
|
||||||
import org.kie.server.api.model.KieContainerResource;
|
import org.kie.server.api.model.KieContainerResource;
|
||||||
|
|
@ -24,8 +24,8 @@ import javax.annotation.PostConstruct;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Route("Deployment")
|
@Route("deployment")
|
||||||
public class DeploymentView extends DroolsAdminConsoleMainView implements AddLog {
|
public class DeploymentView extends SqueletteComposant implements AddLog {
|
||||||
|
|
||||||
|
|
||||||
final private Grid<List<String>> gridLogging = new Grid();
|
final private Grid<List<String>> gridLogging = new Grid();
|
||||||
|
|
@ -46,11 +46,6 @@ public class DeploymentView extends DroolsAdminConsoleMainView implements AddLog
|
||||||
private List<String> logs = new ArrayList<>();
|
private List<String> logs = new ArrayList<>();
|
||||||
|
|
||||||
public DeploymentView() {
|
public DeploymentView() {
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
public void buildUI() {
|
|
||||||
|
|
||||||
this.kieRepositoryService = AppContext.getApplicationContext().getBean(KieRepositoryService.class);
|
this.kieRepositoryService = AppContext.getApplicationContext().getBean(KieRepositoryService.class);
|
||||||
this.userConnectedService = AppContext.getApplicationContext().getBean(UserConnectedService.class);
|
this.userConnectedService = AppContext.getApplicationContext().getBean(UserConnectedService.class);
|
||||||
|
|
@ -141,7 +136,7 @@ public class DeploymentView extends DroolsAdminConsoleMainView implements AddLog
|
||||||
|
|
||||||
|
|
||||||
verticalLayout.add(gridLogging);
|
verticalLayout.add(gridLogging);
|
||||||
setActionView(verticalLayout);
|
getInfoPage().add(verticalLayout);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,13 +7,13 @@ import com.vaadin.flow.component.grid.Grid;
|
||||||
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
|
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
|
||||||
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
||||||
import com.vaadin.flow.router.Route;
|
import com.vaadin.flow.router.Route;
|
||||||
import org.chtijbug.drools.console.DroolsAdminConsoleMainView;
|
|
||||||
import org.chtijbug.drools.console.service.KieRepositoryService;
|
import org.chtijbug.drools.console.service.KieRepositoryService;
|
||||||
import org.chtijbug.drools.console.service.KieServerRepositoryService;
|
import org.chtijbug.drools.console.service.KieServerRepositoryService;
|
||||||
import org.chtijbug.drools.console.service.UserConnectedService;
|
import org.chtijbug.drools.console.service.UserConnectedService;
|
||||||
import org.chtijbug.drools.console.service.model.UserConnected;
|
import org.chtijbug.drools.console.service.model.UserConnected;
|
||||||
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
|
import org.chtijbug.drools.console.service.model.kie.KieConfigurationData;
|
||||||
import org.chtijbug.drools.console.service.util.AppContext;
|
import org.chtijbug.drools.console.service.util.AppContext;
|
||||||
|
import org.chtijbug.drools.console.vaadinComponent.Squelette.SqueletteComposant;
|
||||||
import org.chtijbug.guvnor.server.jaxrs.jaxb.Asset;
|
import org.chtijbug.guvnor.server.jaxrs.jaxb.Asset;
|
||||||
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectResponse;
|
import org.chtijbug.guvnor.server.jaxrs.model.PlatformProjectResponse;
|
||||||
|
|
||||||
|
|
@ -22,7 +22,7 @@ import java.util.*;
|
||||||
|
|
||||||
@Route("AssetUpdate")
|
@Route("AssetUpdate")
|
||||||
@StyleSheet("css/accueil.css")
|
@StyleSheet("css/accueil.css")
|
||||||
public class TableLikeArtefactView extends DroolsAdminConsoleMainView {
|
public class TableLikeArtefactView extends SqueletteComposant {
|
||||||
|
|
||||||
private KieConfigurationData config;
|
private KieConfigurationData config;
|
||||||
|
|
||||||
|
|
@ -44,8 +44,7 @@ public class TableLikeArtefactView extends DroolsAdminConsoleMainView {
|
||||||
private Button duplicateRow;
|
private Button duplicateRow;
|
||||||
private UserConnectedService userConnectedService;
|
private UserConnectedService userConnectedService;
|
||||||
|
|
||||||
@PostConstruct
|
public TableLikeArtefactView() {
|
||||||
public void buildUI() {
|
|
||||||
|
|
||||||
this.kieRepositoryService = AppContext.getApplicationContext().getBean(KieRepositoryService.class);
|
this.kieRepositoryService = AppContext.getApplicationContext().getBean(KieRepositoryService.class);
|
||||||
this.userConnectedService = AppContext.getApplicationContext().getBean(UserConnectedService.class);
|
this.userConnectedService = AppContext.getApplicationContext().getBean(UserConnectedService.class);
|
||||||
|
|
@ -111,7 +110,7 @@ public class TableLikeArtefactView extends DroolsAdminConsoleMainView {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
setActionView(verticalLayout);
|
getInfoPage().add(verticalLayout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
editor.link_modal.header
Reference in a new issue