private void isUserMemberOfVo() { // CHECK USER IF PRESENT if (session.getUser() != null) { GetMemberByUser req = new GetMemberByUser( vo.getId(), session.getUser().getId(), new JsonCallbackEvents() { @Override public void onFinished(JavaScriptObject jso) { Member member = jso.cast(); if (member.getVoId() == vo.getId()) { // USER IS MEMBER OF VO if (groupName != null && !groupName.isEmpty()) { GetMemberGroups call = new GetMemberGroups( member.getId(), new JsonCallbackEvents() { @Override public void onFinished(JavaScriptObject jso) { ArrayList<Group> groups = JsonUtils.jsoAsList(jso); for (Group g : groups) { if (g.getId() == group.getId()) { // USER IS MEMBER OF GROUP prepareGui(PerunEntity.GROUP, "EXTENSION"); return; } } // USER IS NOT MEMBER OF GROUP prepareGui(PerunEntity.GROUP, "INITIAL"); } @Override public void onError(PerunError error) { RootLayoutPanel panel = RootLayoutPanel.get(); panel.clear(); panel.add(getErrorWidget(error)); } }); call.retrieveData(); } else { // only VO application prepareGui(PerunEntity.VIRTUAL_ORGANIZATION, "EXTENSION"); } } else { // TODO display error ? - retrieved member is not member of VO ?? } } public void onError(PerunError error) { // not member of VO - load initial if (error.getName().equalsIgnoreCase("MemberNotExistsException")) { if (groupName != null && !groupName.isEmpty()) { // load application to group for NOT vo members prepareGui(PerunEntity.GROUP, "INITIAL"); // Do NOT display application to Group if not member of VO // RootLayoutPanel panel = RootLayoutPanel.get(); // panel.clear(); // panel.add(getCustomErrorWidget(error, // ApplicationMessages.INSTANCE.mustBeVoMemberFirst())); } else { prepareGui(PerunEntity.VIRTUAL_ORGANIZATION, "INITIAL"); } } else { RootLayoutPanel panel = RootLayoutPanel.get(); panel.clear(); panel.add(getErrorWidget(error)); } } }); req.setHidden(true); req.retrieveData(); return; } // UNKNOWN USER - LOAD INITIAL if (groupName != null && !groupName.isEmpty()) { prepareGui(PerunEntity.GROUP, "INITIAL"); } else { prepareGui(PerunEntity.VIRTUAL_ORGANIZATION, "INITIAL"); } return; }
/** * Prepares the GUI * * @param entity PerunEntity GROUP or VO * @param applicationType INITIAL | EXTENSION */ protected void prepareGui(PerunEntity entity, String applicationType) { // trigger email verification as first if present in URL if (Location.getParameterMap().keySet().contains("m") && Location.getParameterMap().keySet().contains("i")) { String verifyI = Location.getParameter("i"); String verifyM = Location.getParameter("m"); if (verifyI != null && !verifyI.isEmpty() && verifyM != null && !verifyM.isEmpty()) { final SimplePanel verifContent = new SimplePanel(); leftMenu.addItem( ApplicationMessages.INSTANCE.emailValidationMenuItem(), SmallIcons.INSTANCE.documentSignatureIcon(), verifContent); ValidateEmail request = new ValidateEmail( verifyI, verifyM, new JsonCallbackEvents() { @Override public void onLoadingStart() { verifContent.clear(); verifContent.add(new AjaxLoaderImage()); } @Override public void onFinished(JavaScriptObject jso) { BasicOverlayType obj = jso.cast(); if (obj.getBoolean() == true) { verifContent.clear(); FlexTable ft = new FlexTable(); ft.setSize("100%", "300px"); ft.setHTML( 0, 0, new Image(LargeIcons.INSTANCE.acceptIcon()) + "<h2>" + ApplicationMessages.INSTANCE.emailValidationSuccess() + "</h2>"); ft.getFlexCellFormatter() .setHorizontalAlignment(0, 0, HasHorizontalAlignment.ALIGN_CENTER); ft.getFlexCellFormatter() .setVerticalAlignment(0, 0, HasVerticalAlignment.ALIGN_MIDDLE); verifContent.add(ft); } else { verifContent.clear(); FlexTable ft = new FlexTable(); ft.setSize("100%", "300px"); ft.setHTML( 0, 0, new Image(LargeIcons.INSTANCE.deleteIcon()) + "<h2>" + ApplicationMessages.INSTANCE.emailValidationFail() + "</h2>"); ft.getFlexCellFormatter() .setHorizontalAlignment(0, 0, HasHorizontalAlignment.ALIGN_CENTER); ft.getFlexCellFormatter() .setVerticalAlignment(0, 0, HasVerticalAlignment.ALIGN_MIDDLE); verifContent.add(ft); } } @Override public void onError(PerunError error) { ((AjaxLoaderImage) verifContent.getWidget()).loadingError(error); } }); request.retrieveData(); leftMenu.addLogoutItem(); return; } } // group and extension is not allowed if (group != null && applicationType.equalsIgnoreCase("EXTENSION")) { RootLayoutPanel panel = RootLayoutPanel.get(); panel.clear(); FlexTable ft = new FlexTable(); ft.setSize("100%", "300px"); ft.setHTML( 0, 0, new Image(LargeIcons.INSTANCE.errorIcon()) + "<h2>Error: " + ApplicationMessages.INSTANCE.groupMembershipCantBeExtended( group.getName(), vo.getName()) + "</h2>"); ft.getFlexCellFormatter().setHorizontalAlignment(0, 0, HasHorizontalAlignment.ALIGN_CENTER); ft.getFlexCellFormatter().setVerticalAlignment(0, 0, HasVerticalAlignment.ALIGN_MIDDLE); panel.add(ft); return; } // application form page ApplicationFormPage formPage = new ApplicationFormPage(vo, group, applicationType); // even user "not yet in perun" can have some applications sent (therefore display by session // info) UsersApplicationsPage appsPage = new UsersApplicationsPage(); // if rt test if ("true".equals(Location.getParameter("rttest"))) { TestRtReportingTabItem tabItem = new TestRtReportingTabItem(); Widget rtTab = tabItem.draw(); leftMenu.addItem("RT test", SmallIcons.INSTANCE.settingToolsIcon(), rtTab); } // proper menu text String appMenuText = ApplicationMessages.INSTANCE.applicationFormForVo(vo.getName()); if (group != null) { appMenuText = ApplicationMessages.INSTANCE.applicationFormForGroup(group.getName()); } if (applicationType.equalsIgnoreCase("EXTENSION")) { appMenuText = ApplicationMessages.INSTANCE.membershipExtensionForVo(vo.getName()); if (group != null) { appMenuText = ApplicationMessages.INSTANCE.membershipExtensionForGroup(group.getName()); } } // load list of applications first if param in session if ("apps".equals(Location.getParameter("page"))) { Anchor a = leftMenu.addItem( ApplicationMessages.INSTANCE.applications(), SmallIcons.INSTANCE.applicationFromStorageIcon(), appsPage); leftMenu.addItem(appMenuText, SmallIcons.INSTANCE.applicationFormIcon(), formPage); a.fireEvent(new ClickEvent() {}); // appsPage.menuClick(); // load list of apps } else { Anchor a = leftMenu.addItem(appMenuText, SmallIcons.INSTANCE.applicationFormIcon(), formPage); leftMenu.addItem( ApplicationMessages.INSTANCE.applications(), SmallIcons.INSTANCE.applicationFromStorageIcon(), appsPage); a.fireEvent(new ClickEvent() {}); // formPage.menuClick(); // load application form } leftMenu.addLogoutItem(); }
/** * Creates a tab instance * * @param vo VO to add admin into */ public AddVoManagerTabItem(VirtualOrganization vo) { this.voId = vo.getId(); this.vo = vo; }