@Override public void buildItems(Fragment fragment, final Preference preference) { fragment.add(new TextField<String>("name", new PropertyModel<String>(preference, "name"))); RefreshingView<String> view = new RefreshingView<String>("values") { private static final long serialVersionUID = 1L; @Override protected Iterator<IModel<String>> getItemModels() { List<IModel<String>> preferenceValueModels = new LinkedList<IModel<String>>(); int preferenceCount = preference.getValues().size(); for (int i = 0; i < preferenceCount; i++) { preferenceValueModels.add(new PropertyModel<String>(preference, "values." + i)); } return preferenceValueModels.iterator(); } @Override protected void populateItem(Item<String> item) { item.add(new TextField<String>("value", item.getModel())); } }; fragment.add(view); }
protected Component headerPanel() { Fragment header = new Fragment(HEADER_PANEL, "header", this); // the add button header.add( new BookmarkablePageLink<NewDataAccessRulePage>("addNew", NewDataAccessRulePage.class)); // the removal button header.add(removal = new SelectionDataRuleRemovalLink("removeSelected", rules, dialog)); removal.setOutputMarkupId(true); removal.setEnabled(false); return header; }
protected Component headerPanel() { Fragment header = new Fragment(HEADER_PANEL, "header", this); // the add button header.add(new BookmarkablePageLink<WorkspaceNewPage>("addNew", WorkspaceNewPage.class)); // the removal button header.add(removal = new SelectionRemovalLink("removeSelected", table, dialog)); removal.setOutputMarkupId(true); removal.setEnabled(false); // check for full admin, we don't allow workspace admins to add new workspaces header.setEnabled(isAuthenticatedAsAdmin()); return header; }
protected void createDepartmentInput(Form<T> form) { Fragment f = new Fragment("dept", "department", this); DropDownChoice<UserDepartment> userDepartment = new DropDownChoice<UserDepartment>( "user.userDepartment", getUserDepartments(), new ChoiceRenderer<UserDepartment>("name")); userDepartment.setRequired(true); userDepartment.setLabel(new ResourceModel("admin.user.department")); userDepartment.add(new ValidatingFormComponentAjaxBehavior()); f.add(userDepartment); f.add(new AjaxFormComponentFeedbackIndicator("departmentValidationError", userDepartment)); form.add(f); }
private Fragment getLocationFragment(final TopologyNode node, final PageReference pageRef) { final Fragment fragment = new Fragment("actions", "locationActions", this); final AjaxLink<String> create = new IndicatingAjaxLink<String>("create") { private static final long serialVersionUID = 3776750333491622263L; @Override public void onClick(final AjaxRequestTarget target) { final ConnInstanceTO modelObject = new ConnInstanceTO(); modelObject.setLocation(node.getKey().toString()); final IModel<ConnInstanceTO> model = new CompoundPropertyModel<>(modelObject); resourceModal.setFormModel(model); target.add(resourceModal.setContent(new ConnectorModal(resourceModal, pageRef, model))); resourceModal.header( new Model<>(MessageFormat.format(getString("connector.new"), node.getKey()))); MetaDataRoleAuthorizationStrategy.authorize( resourceModal.addSumbitButton(), ENABLE, StandardEntitlement.CONNECTOR_CREATE); resourceModal.show(true); } }; fragment.add(create); MetaDataRoleAuthorizationStrategy.authorize( create, ENABLE, StandardEntitlement.CONNECTOR_CREATE); return fragment; }
@SuppressWarnings("serial") private Fragment getDepartmentListHolder(List<UserDepartment> departments) { Fragment fragment = new Fragment("itemListHolder", "itemListHolder", DepartmentAdminPage.this); deptListView = new EntrySelectorListView<UserDepartment>("itemList", departments) { @Override protected void onPopulate( ListItem<UserDepartment> item, IModel<UserDepartment> itemModel) { UserDepartment dept = item.getModelObject(); item.add(new Label("name", dept.getName())); item.add(new Label("code", dept.getCode())); item.add(new Label("users", dept.getUsers() == null ? 0 : dept.getUsers().size())); } @Override protected void onClick(ListItem<UserDepartment> item, AjaxRequestTarget target) throws ObjectNotFoundException { final Integer deptId = item.getModelObject().getDepartmentId(); getTabbedPanel() .setEditBackingBean( new DepartmentAdminBackingBean(userService.getUserDepartment(deptId))); getTabbedPanel().switchTabOnAjaxTarget(target, AddEditTabbedPanel.TABPOS_EDIT); } }; fragment.add(deptListView); return fragment; }
@SuppressWarnings("serial") private Component createParameterList(final String id, final Collection<Parameter<?>> params) { List<ParameterInfo> inputs = new ArrayList<ParameterInfo>(); for (Parameter<?> input : params) { inputs.add( new ParameterInfo( input.getName().toString(), input.getDescription().toString(), input.getType().getSimpleName(), input.getMinOccurs(), input.getMaxOccurs())); } Fragment table = new Fragment(id, "paramlist", OpenGeoProcessListPage.this); ListView<ParameterInfo> rows = new ListView<ParameterInfo>("param", inputs) { @Override protected void populateItem(ListItem<ParameterInfo> item) { item.add( new Label("title", new PropertyModel<String>(item.getModel(), "title")), new Label("name", new PropertyModel<String>(item.getModel(), "name")), new Label("type", new PropertyModel<String>(item.getModel(), "type")), new Label("minOccurs", new PropertyModel<Integer>(item.getModel(), "minOccurs")), new Label("maxOccurs", new PropertyModel<String>(item.getModel(), "maxOccurs")) .setEscapeModelStrings(false)); } }; table.add(rows); return table; }
private void addOrReplaceTabContentPanel() { Fragment fragment; switch (tabContentType.get(tabNumberModel.getObject())) { case LIST: // Create list representing the fragment = new Fragment("tabContentPanel", "events", this); eventsList = new AbstractListEventPanel<Event>("eventsPanel") { @Override protected SortableDataProvider<Event, String> getDataProvider() { return new SortableEventProvider(sessionFactory, filterModel); } }; eventsList.setOutputMarkupId(true); fragment.add(eventsList); break; default: throw new IllegalStateException("Invalid tab content type"); } tabContent.addOrReplace(fragment); }
@Override protected WebMarkupContainer newContent(String markupId) { Fragment fragment = new Fragment(markupId, "tooltip-fragment", markupProvider); fragment.add(new Label("content", Model.of(this.content))); return fragment; }
public ModalDialogWithStylePanel(final String id) { super(id); final ModalWindow modal = new ModalWindow("modal"); modal.setCssClassName("w_vegas"); modal.setTitle("Trivial Modal"); final AjaxLink<Void> modalLink = new AjaxLink<Void>("modalLink") { private static final long serialVersionUID = 1L; @Override public void onClick(final AjaxRequestTarget target) { target.appendJavaScript( "var originalStyle = $('.wicket-modal').attr('style');" + "$('.wicket-modal').attr('style', originalStyle + 'opacity: 0.5;');"); } }; final Fragment modalFragment = new Fragment(modal.getContentId(), "modalContent", this); modalFragment.add(modalLink); modal.setContent(modalFragment); add(modal); add( new AjaxLink<Void>("openModal") { private static final long serialVersionUID = 1L; @Override public void onClick(final AjaxRequestTarget target) { modal.show(target); } }); }
private void addSshKeys(final UserModel user) { Fragment keysTab = new Fragment("sshKeysTab", "sshKeysTabFragment", this); keysTab.add(new SshKeysPanel("sshKeysPanel", user)); // add the SSH keys tab add(new Fragment("sshKeysLink", "sshKeysLinkFragment", this).setRenderBodyOnly(true)); add(keysTab.setRenderBodyOnly(true)); }
// Factory // @Override protected Fragment newInputFragment(String id) { Fragment fragment; // no input TextField has been supplied in ctor // if (this.input == null) { this.input = new HiddenField<Integer>("input", this.getModel(), Integer.class); fragment = new Fragment(id, "input-fragment", this); fragment.add(this.input.setOutputMarkupPlaceholderTag(true)); } else { fragment = super.newInputFragment(id); // return empty fragment } return fragment; }
private Fragment getSyncopeFragment(final PageReference pageRef) { final Fragment fragment = new Fragment("actions", "syncopeActions", this); final AjaxLink<String> tasks = new IndicatingAjaxLink<String>("tasks") { private static final long serialVersionUID = 3776750333491622263L; @Override public void onClick(final AjaxRequestTarget target) { target.add(taskModal.setContent(new SchedTasks(pageRef))); taskModal.header(new ResourceModel("task.generic.list", "Scheduled tasks")); taskModal.show(true); } }; fragment.add(tasks); MetaDataRoleAuthorizationStrategy.authorize(tasks, ENABLE, StandardEntitlement.TASK_LIST); return fragment; }
private Fragment getUserListHolder(List<User> users) { Fragment fragment = new Fragment("itemListHolder", "itemListHolder", UserAdmin.this); userListView = new ListView<User>("itemList", users) { private static final long serialVersionUID = 5334338761736798802L; @Override protected void populateItem(ListItem<User> item) { final User user = item.getModelObject(); final Integer userId = user.getUserId(); AjaxLink<Void> link = new AjaxLink<Void>("itemLink") { private static final long serialVersionUID = -3898942767521616039L; @Override public void onClick(AjaxRequestTarget target) { try { getTabbedPanel() .setEditBackingBean( new UserBackingBean( userService.getUserAndCheckDeletability(userId), AdminAction.EDIT)); getTabbedPanel().switchTabOnAjaxTarget(target, 1); } catch (ObjectNotFoundException e) { LOGGER.error("User not found for id: " + userId); } } }; item.add(link); link.add(new Label("linkLabel", user.getFullName() + (user.isActive() ? "" : "*"))); } }; fragment.add(userListView); return fragment; }
// Factories // @Override protected Fragment newInputFragment(String id) { Fragment fragment = null; // lower & upper TextFields have not been specified in ctor // if (this.lower == null || this.upper == null) { this.lower = new HiddenField<Integer>( "lower", new PropertyModel<Integer>(this.getModelObject(), "lower"), Integer.class); this.upper = new HiddenField<Integer>( "upper", new PropertyModel<Integer>(this.getModelObject(), "upper"), Integer.class); fragment = new Fragment(id, "range-fragment", this); fragment.add(this.lower.setOutputMarkupPlaceholderTag(true)); fragment.add(this.upper.setOutputMarkupPlaceholderTag(true)); } else { fragment = super.newInputFragment(id); // return empty fragment } return fragment; }
private void doMainLayout() { Fragment mainContent = new Fragment("main-content", "normal", this); final ModalWindow popup = new ModalWindow("popup"); mainContent.add(popup); mainContent.add(new Label("style.name", new PropertyModel(style, "name"))); mainContent.add(new Label("layer.name", new PropertyModel(layer, "name"))); mainContent.add( new AjaxLink("change.style", new ParamResourceModel("CssDemoPage.changeStyle", this)) { public void onClick(AjaxRequestTarget target) { target.appendJavascript("Wicket.Window.unloadConfirmation = false;"); popup.setInitialHeight(400); popup.setInitialWidth(600); popup.setTitle(new Model("Choose style to edit")); popup.setContent(new StyleChooser(popup.getContentId(), CssDemoPage.this)); popup.show(target); } }); mainContent.add( new AjaxLink("change.layer", new ParamResourceModel("CssDemoPage.changeLayer", this)) { public void onClick(AjaxRequestTarget target) { target.appendJavascript("Wicket.Window.unloadConfirmation = false;"); popup.setInitialHeight(400); popup.setInitialWidth(600); popup.setTitle(new Model("Choose layer to edit")); popup.setContent(new LayerChooser(popup.getContentId(), CssDemoPage.this)); popup.show(target); } }); mainContent.add( new AjaxLink("create.style", new ParamResourceModel("CssDemoPage.createStyle", this)) { public void onClick(AjaxRequestTarget target) { target.appendJavascript("Wicket.Window.unloadConfirmation = false;"); popup.setInitialHeight(200); popup.setInitialWidth(300); popup.setTitle(new Model("Choose name for new style")); popup.setContent(new LayerNameInput(popup.getContentId(), CssDemoPage.this)); popup.show(target); } }); mainContent.add( new AjaxLink( "associate.styles", new ParamResourceModel("CssDemoPage.associateStyles", this)) { public void onClick(AjaxRequestTarget target) { target.appendJavascript("Wicket.Window.unloadConfirmation = false;"); popup.setInitialHeight(400); popup.setInitialWidth(600); popup.setTitle(new Model("Choose layers to associate")); popup.setContent(new MultipleLayerChooser(popup.getContentId(), CssDemoPage.this)); popup.show(target); } }); final IModel<String> sldModel = new AbstractReadOnlyModel<String>() { public String getObject() { File file = findStyleFile(style.getFilename()); if (file != null && file.isFile()) { BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(file)); StringBuilder builder = new StringBuilder(); char[] line = new char[4096]; int len = 0; while ((len = reader.read(line, 0, 4096)) >= 0) builder.append(line, 0, len); return builder.toString(); } catch (IOException e) { throw new WicketRuntimeException(e); } finally { try { if (reader != null) reader.close(); } catch (IOException e) { throw new WicketRuntimeException(e); } } } else { return "No SLD file found for this style. One will be generated automatically if you save the CSS."; } } }; final CompoundPropertyModel model = new CompoundPropertyModel<CssDemoPage>(CssDemoPage.this); List<ITab> tabs = new ArrayList<ITab>(); tabs.add( new PanelCachingTab( new AbstractTab(new Model("Generated SLD")) { public Panel getPanel(String id) { SLDPreviewPanel panel = new SLDPreviewPanel(id, sldModel); sldPreview = panel.getLabel(); return panel; } })); tabs.add( new PanelCachingTab( new AbstractTab(new Model("Map")) { public Panel getPanel(String id) { return map = new OpenLayersMapPanel(id, layer, style); } })); if (layer.getResource() instanceof FeatureTypeInfo) { tabs.add( new PanelCachingTab( new AbstractTab(new Model("Data")) { public Panel getPanel(String id) { try { return new DataPanel(id, model, (FeatureTypeInfo) layer.getResource()); } catch (IOException e) { throw new WicketRuntimeException(e); } }; })); } else if (layer.getResource() instanceof CoverageInfo) { tabs.add( new PanelCachingTab( new AbstractTab(new Model("Data")) { public Panel getPanel(String id) { return new BandsPanel(id, (CoverageInfo) layer.getResource()); }; })); } tabs.add( new AbstractTab(new Model("CSS Reference")) { public Panel getPanel(String id) { return new DocsPanel(id); } }); FeedbackPanel feedback2 = new FeedbackPanel("feedback-low"); feedback2.setOutputMarkupId(true); mainContent.add(feedback2); String cssSource = style.getFilename().replaceFirst("(\\.sld)?$", ".css"); mainContent.add( new StylePanel("style.editing", model, CssDemoPage.this, getFeedbackPanel(), cssSource)); mainContent.add(new AjaxTabbedPanel("context", tabs)); add(mainContent); }
@SuppressWarnings({"rawtypes", "unchecked"}) public GeoServerHomePage() { GeoServer gs = getGeoServer(); ContactInfo contact = gs.getGlobal().getSettings().getContact(); // add some contact info add( new ExternalLink("contactURL", contact.getOnlineResource()) .add(new Label("contactName", contact.getContactOrganization()))); { String version = String.valueOf(new ResourceModel("version").getObject()); String contactEmail = contact.getContactEmail(); HashMap<String, String> params = new HashMap<String, String>(); params.put("version", version); params.put("contactEmail", (contactEmail == null ? "*****@*****.**" : contactEmail)); Label label = new Label( "footerMessage", new StringResourceModel("GeoServerHomePage.footer", this, new Model(params))); label.setEscapeModelStrings(false); add(label); } Authentication auth = getSession().getAuthentication(); if (isAdmin(auth)) { Stopwatch sw = Stopwatch.createStarted(); Fragment f = new Fragment("catalogLinks", "catalogLinksFragment", this); Catalog catalog = getCatalog(); NumberFormat numberFormat = NumberFormat.getIntegerInstance(getLocale()); numberFormat.setGroupingUsed(true); final Filter allLayers = acceptAll(); final Filter allStores = acceptAll(); final Filter allWorkspaces = acceptAll(); final int layerCount = catalog.count(LayerInfo.class, allLayers); final int storesCount = catalog.count(StoreInfo.class, allStores); final int wsCount = catalog.count(WorkspaceInfo.class, allWorkspaces); f.add( new BookmarkablePageLink("layersLink", LayerPage.class) .add(new Label("nlayers", numberFormat.format(layerCount)))); f.add(new BookmarkablePageLink("addLayerLink", NewLayerPage.class)); f.add( new BookmarkablePageLink("storesLink", StorePage.class) .add(new Label("nstores", numberFormat.format(storesCount)))); f.add(new BookmarkablePageLink("addStoreLink", NewDataPage.class)); f.add( new BookmarkablePageLink("workspacesLink", WorkspacePage.class) .add(new Label("nworkspaces", numberFormat.format(wsCount)))); f.add(new BookmarkablePageLink("addWorkspaceLink", WorkspaceNewPage.class)); add(f); sw.stop(); } else { Label placeHolder = new Label("catalogLinks"); placeHolder.setVisible(false); add(placeHolder); } final IModel<List<GeoServerHomePageContentProvider>> contentProviders; contentProviders = getContentProviders(GeoServerHomePageContentProvider.class); ListView<GeoServerHomePageContentProvider> contentView = new ListView<GeoServerHomePageContentProvider>("contributedContent", contentProviders) { private static final long serialVersionUID = 1L; @Override protected void populateItem(ListItem<GeoServerHomePageContentProvider> item) { GeoServerHomePageContentProvider provider = item.getModelObject(); Component extraContent = provider.getPageBodyComponent("contentList"); if (null == extraContent) { Label placeHolder = new Label("contentList"); placeHolder.setVisible(false); extraContent = placeHolder; } item.add(extraContent); } }; add(contentView); final IModel<List<CapabilitiesHomePageLinkProvider>> capsProviders; capsProviders = getContentProviders(CapabilitiesHomePageLinkProvider.class); ListView<CapabilitiesHomePageLinkProvider> capsView = new ListView<CapabilitiesHomePageLinkProvider>("providedCaps", capsProviders) { private static final long serialVersionUID = 1L; @Override protected void populateItem(ListItem<CapabilitiesHomePageLinkProvider> item) { CapabilitiesHomePageLinkProvider provider = item.getModelObject(); Component capsList = provider.getCapabilitiesComponent("capsList"); item.add(capsList); } }; add(capsView); }
public SummaryPage(PageParameters params) { super(params); int numberCommits = GitBlit.getInteger(Keys.web.summaryCommitCount, 20); if (numberCommits <= 0) { numberCommits = 20; } int numberRefs = GitBlit.getInteger(Keys.web.summaryRefsCount, 5); Repository r = getRepository(); RepositoryModel model = getRepositoryModel(); List<Metric> metrics = null; Metric metricsTotal = null; if (!model.skipSummaryMetrics && GitBlit.getBoolean(Keys.web.generateActivityGraph, true)) { metrics = GitBlit.self().getRepositoryDefaultMetrics(model, r); metricsTotal = metrics.remove(0); } addSyndicationDiscoveryLink(); // repository description add(new Label("repositoryDescription", getRepositoryModel().description)); add(new Label("repositoryOwner", getRepositoryModel().owner)); add( WicketUtils.createTimestampLabel( "repositoryLastChange", JGitUtils.getLastChange(r), getTimeZone())); if (metricsTotal == null) { add(new Label("branchStats", "")); } else { add( new Label( "branchStats", MessageFormat.format( "{0} commits and {1} tags in {2}", metricsTotal.count, metricsTotal.tag, TimeUtils.duration(metricsTotal.duration)))); } add( new BookmarkablePageLink<Void>( "metrics", MetricsPage.class, WicketUtils.newRepositoryParameter(repositoryName))); List<String> repositoryUrls = new ArrayList<String>(); if (GitBlit.getBoolean(Keys.git.enableGitServlet, true)) { AccessRestrictionType accessRestriction = getRepositoryModel().accessRestriction; switch (accessRestriction) { case NONE: add(WicketUtils.newClearPixel("accessRestrictionIcon").setVisible(false)); break; case PUSH: add( WicketUtils.newImage( "accessRestrictionIcon", "lock_go_16x16.png", getAccessRestrictions().get(accessRestriction))); break; case CLONE: add( WicketUtils.newImage( "accessRestrictionIcon", "lock_pull_16x16.png", getAccessRestrictions().get(accessRestriction))); break; case VIEW: add( WicketUtils.newImage( "accessRestrictionIcon", "shield_16x16.png", getAccessRestrictions().get(accessRestriction))); break; default: add(WicketUtils.newClearPixel("accessRestrictionIcon").setVisible(false)); } // add the Gitblit repository url repositoryUrls.add(getRepositoryUrl(getRepositoryModel())); } else { add(WicketUtils.newClearPixel("accessRestrictionIcon").setVisible(false)); } repositoryUrls.addAll(GitBlit.self().getOtherCloneUrls(repositoryName)); String primaryUrl = ArrayUtils.isEmpty(repositoryUrls) ? "" : repositoryUrls.remove(0); add(new RepositoryUrlPanel("repositoryCloneUrl", primaryUrl)); add( new Label("otherUrls", StringUtils.flattenStrings(repositoryUrls, "<br/>")) .setEscapeModelStrings(false)); add( new LogPanel( "commitsPanel", repositoryName, getRepositoryModel().HEAD, r, numberCommits, 0)); add(new TagsPanel("tagsPanel", repositoryName, r, numberRefs).hideIfEmpty()); add(new BranchesPanel("branchesPanel", getRepositoryModel(), r, numberRefs).hideIfEmpty()); if (getRepositoryModel().showReadme) { String htmlText = null; String readme = null; try { RevCommit head = JGitUtils.getCommit(r, null); List<String> markdownExtensions = GitBlit.getStrings(Keys.web.markdownExtensions); List<PathModel> paths = JGitUtils.getFilesInPath(r, null, head); for (PathModel path : paths) { if (!path.isTree()) { String name = path.name.toLowerCase(); if (name.startsWith("readme")) { if (name.indexOf('.') > -1) { String ext = name.substring(name.lastIndexOf('.') + 1); if (markdownExtensions.contains(ext)) { readme = path.name; break; } } } } } if (!StringUtils.isEmpty(readme)) { String markdownText = JGitUtils.getStringContent(r, head.getTree(), readme); htmlText = MarkdownUtils.transformMarkdown(markdownText); } } catch (ParseException p) { error(p.getMessage()); } Fragment fragment = new Fragment("readme", "markdownPanel"); fragment.add(new Label("readmeFile", readme)); // Add the html to the page Component content = new Label("readmeContent", htmlText).setEscapeModelStrings(false); fragment.add(content.setVisible(!StringUtils.isEmpty(htmlText))); add(fragment); } else { add(new Label("readme").setVisible(false)); } // Display an activity line graph insertActivityGraph(metrics); }
private void addPreferences(UserModel user) { // add preferences Form<Void> prefs = new Form<Void>("prefsForm"); List<Language> languages = Arrays.asList( new Language("Deutsch", "de"), new Language("English", "en"), new Language("Español", "es"), new Language("Français", "fr"), new Language("Italiano", "it"), new Language("日本語", "ja"), new Language("한국말", "ko"), new Language("Nederlands", "nl"), new Language("Norsk", "no"), new Language("Język Polski", "pl"), new Language("Português", "pt_BR"), new Language("簡體中文", "zh_CN"), new Language("正體中文", "zh_TW")); Locale locale = user.getPreferences().getLocale(); if (locale == null) { // user has not specified language preference // try server default preference String lc = app().settings().getString(Keys.web.forceDefaultLocale, null); if (StringUtils.isEmpty(lc)) { // server default language is not configured // try browser preference Locale sessionLocale = GitBlitWebSession.get().getLocale(); if (sessionLocale != null) { locale = sessionLocale; } } else { } } Language preferredLanguage = null; if (locale != null) { String localeCode = locale.getLanguage(); if (!StringUtils.isEmpty(locale.getCountry())) { localeCode += "_" + locale.getCountry(); } for (Language language : languages) { if (language.code.equals(localeCode)) { // language_COUNTRY match preferredLanguage = language; } else if (preferredLanguage != null && language.code.startsWith(locale.getLanguage())) { // language match preferredLanguage = language; } } } final IModel<String> displayName = Model.of(user.getDisplayName()); final IModel<String> emailAddress = Model.of(user.emailAddress == null ? "" : user.emailAddress); final IModel<Language> language = Model.of(preferredLanguage); final IModel<Boolean> emailMeOnMyTicketChanges = Model.of(user.getPreferences().isEmailMeOnMyTicketChanges()); final IModel<Transport> transport = Model.of(user.getPreferences().getTransport()); prefs.add( new TextOption( "displayName", getString("gb.displayName"), getString("gb.displayNameDescription"), displayName) .setVisible(app().authentication().supportsDisplayNameChanges(user))); prefs.add( new TextOption( "emailAddress", getString("gb.emailAddress"), getString("gb.emailAddressDescription"), emailAddress) .setVisible(app().authentication().supportsEmailAddressChanges(user))); prefs.add( new ChoiceOption<Language>( "language", getString("gb.languagePreference"), getString("gb.languagePreferenceDescription"), language, languages)); prefs.add( new BooleanOption( "emailMeOnMyTicketChanges", getString("gb.emailMeOnMyTicketChanges"), getString("gb.emailMeOnMyTicketChangesDescription"), emailMeOnMyTicketChanges) .setVisible(app().notifier().isSendingMail())); List<Transport> availableTransports = new ArrayList<>(); if (app().services().isServingSSH()) { availableTransports.add(Transport.SSH); } if (app().services().isServingHTTP()) { availableTransports.add(Transport.HTTP); } if (app().services().isServingHTTPS()) { availableTransports.add(Transport.HTTPS); } if (app().services().isServingGIT()) { availableTransports.add(Transport.GIT); } prefs.add( new ChoiceOption<Transport>( "transport", getString("gb.transportPreference"), getString("gb.transportPreferenceDescription"), transport, availableTransports)); prefs.add( new AjaxButton("save") { private static final long serialVersionUID = 1L; @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { UserModel user = GitBlitWebSession.get().getUser(); user.displayName = displayName.getObject(); user.emailAddress = emailAddress.getObject(); Language lang = language.getObject(); if (lang != null) { user.getPreferences().setLocale(lang.code); } user.getPreferences().setEmailMeOnMyTicketChanges(emailMeOnMyTicketChanges.getObject()); user.getPreferences().setTransport(transport.getObject()); try { app().gitblit().reviseUser(user.username, user); setRedirect(true); setResponsePage(UserPage.class, WicketUtils.newUsernameParameter(user.username)); } catch (GitBlitException e) { // logger.error("Failed to update user " + user.username, e); // error(getString("gb.failedToUpdateUser"), false); } } }); // add the preferences tab add(new Fragment("preferencesLink", "preferencesLinkFragment", this).setRenderBodyOnly(true)); Fragment fragment = new Fragment("preferencesTab", "preferencesTabFragment", this); fragment.add(prefs); add(fragment.setRenderBodyOnly(true)); }
private Fragment getConnectorFragment(final TopologyNode node, final PageReference pageRef) { final Fragment fragment = new Fragment("actions", "connectorActions", this); final AjaxLink<String> delete = new IndicatingAjaxLink<String>("delete") { private static final long serialVersionUID = 3776750333491622263L; @Override public void onClick(final AjaxRequestTarget target) { try { connectorRestClient.delete(Long.class.cast(node.getKey())); target.appendJavaScript(String.format("jsPlumb.remove('%s');", node.getKey())); info(getString(Constants.OPERATION_SUCCEEDED)); } catch (SyncopeClientException e) { error(getString(Constants.ERROR) + ": " + e.getMessage()); LOG.error("While deleting resource {}", node.getKey(), e); } ((BasePage) getPage()).getNotificationPanel().refresh(target); } }; fragment.add(delete); delete.add(new ConfirmationModalBehavior()); MetaDataRoleAuthorizationStrategy.authorize( delete, ENABLE, StandardEntitlement.CONNECTOR_DELETE); final AjaxLink<String> create = new IndicatingAjaxLink<String>("create") { private static final long serialVersionUID = 3776750333491622263L; @Override public void onClick(final AjaxRequestTarget target) { final ResourceTO modelObject = new ResourceTO(); modelObject.setConnector(Long.class.cast(node.getKey())); modelObject.setConnectorDisplayName(node.getDisplayName()); final IModel<ResourceTO> model = new CompoundPropertyModel<>(modelObject); resourceModal.setFormModel(model); target.add( resourceModal.setContent(new ResourceModal<>(resourceModal, pageRef, model, true))); resourceModal.header( new Model<>(MessageFormat.format(getString("resource.new"), node.getKey()))); MetaDataRoleAuthorizationStrategy.authorize( resourceModal.addSumbitButton(), ENABLE, StandardEntitlement.RESOURCE_CREATE); resourceModal.show(true); } }; fragment.add(create); MetaDataRoleAuthorizationStrategy.authorize( create, ENABLE, StandardEntitlement.RESOURCE_CREATE); final AjaxLink<String> edit = new IndicatingAjaxLink<String>("edit") { private static final long serialVersionUID = 3776750333491622263L; @Override public void onClick(final AjaxRequestTarget target) { final ConnInstanceTO modelObject = connectorRestClient.read(Long.class.cast(node.getKey())); final IModel<ConnInstanceTO> model = new CompoundPropertyModel<>(modelObject); resourceModal.setFormModel(model); target.add(resourceModal.setContent(new ConnectorModal(resourceModal, pageRef, model))); resourceModal.header( new Model<>(MessageFormat.format(getString("connector.edit"), node.getKey()))); MetaDataRoleAuthorizationStrategy.authorize( resourceModal.addSumbitButton(), ENABLE, StandardEntitlement.CONNECTOR_UPDATE); resourceModal.show(true); } }; fragment.add(edit); MetaDataRoleAuthorizationStrategy.authorize(edit, ENABLE, StandardEntitlement.CONNECTOR_UPDATE); return fragment; }
@Override public void buildNew(Fragment fragment) { fragment.add(new TextField<String>("newName", new PropertyModel<String>(this, "newName"))); fragment.add(new TextField<String>("newValue", new PropertyModel<String>(this, "newValue"))); }
public UsersPanel(String wicketId, final boolean showAdmin) { super(wicketId); Fragment adminLinks = new Fragment("adminPanel", "adminLinks", this); adminLinks.add(new BookmarkablePageLink<Void>("newUser", EditUserPage.class)); add(adminLinks.setVisible(showAdmin)); final List<UserModel> users = app().users().getAllUsers(); DataView<UserModel> usersView = new DataView<UserModel>("userRow", new ListDataProvider<UserModel>(users)) { private static final long serialVersionUID = 1L; private int counter; @Override protected void onBeforeRender() { super.onBeforeRender(); counter = 0; } @Override public void populateItem(final Item<UserModel> item) { final UserModel entry = item.getModelObject(); LinkPanel editLink = new LinkPanel( "username", "list", entry.username, EditUserPage.class, WicketUtils.newUsernameParameter(entry.username)); WicketUtils.setHtmlTooltip( editLink, getString("gb.edit") + " " + entry.getDisplayName()); item.add(editLink); if (StringUtils.isEmpty(entry.displayName)) { item.add(new Label("displayName").setVisible(false)); } else { editLink = new LinkPanel( "displayName", "list", entry.getDisplayName(), EditUserPage.class, WicketUtils.newUsernameParameter(entry.username)); WicketUtils.setHtmlTooltip( editLink, getString("gb.edit") + " " + entry.getDisplayName()); item.add(editLink); } if (StringUtils.isEmpty(entry.emailAddress)) { item.add(new Label("emailAddress").setVisible(false)); } else { editLink = new LinkPanel( "emailAddress", "list", entry.emailAddress, EditUserPage.class, WicketUtils.newUsernameParameter(entry.username)); WicketUtils.setHtmlTooltip( editLink, getString("gb.edit") + " " + entry.getDisplayName()); item.add(editLink); } item.add( new Label( "accountType", entry.accountType.name() + (entry.canAdmin() ? ", admin" : ""))); item.add(new Label("teams", entry.teams.size() > 0 ? ("" + entry.teams.size()) : "")); item.add( new Label( "repositories", entry.permissions.size() > 0 ? ("" + entry.permissions.size()) : "")); Fragment userLinks = new Fragment("userLinks", "userAdminLinks", this); userLinks.add( new BookmarkablePageLink<Void>( "editUser", EditUserPage.class, WicketUtils.newUsernameParameter(entry.username))); Link<Void> deleteLink = new Link<Void>("deleteUser") { private static final long serialVersionUID = 1L; @Override public void onClick() { if (app().users().deleteUser(entry.username)) { users.remove(entry); info(MessageFormat.format(getString("gb.userDeleted"), entry.username)); } else { error(MessageFormat.format(getString("gb.deleteUserFailed"), entry.username)); } } }; deleteLink.add( new JavascriptEventConfirmation( "onclick", MessageFormat.format(getString("gb.deleteUser"), entry.username))); userLinks.add(deleteLink); item.add(userLinks); WicketUtils.setAlternatingBackground(item, counter); counter++; } }; add(usersView.setVisible(showAdmin)); }
private void setup(PageParameters params) { setupPage("", ""); // check to see if we should display a login message boolean authenticateView = GitBlit.getBoolean(Keys.web.authenticateViewPages, true); if (authenticateView && !GitBlitWebSession.get().isLoggedIn()) { String messageSource = GitBlit.getString(Keys.web.loginMessage, "gitblit"); String message = readMarkdown(messageSource, "login.mkd"); Component repositoriesMessage = new Label("repositoriesMessage", message); add(repositoriesMessage.setEscapeModelStrings(false)); add(new Label("activity").setVisible(false)); add(new Label("repositoryTabs").setVisible(false)); return; } // Load the markdown welcome message String messageSource = GitBlit.getString(Keys.web.repositoriesMessage, "gitblit"); String message = readMarkdown(messageSource, "welcome.mkd"); Component repositoriesMessage = new Label("repositoriesMessage", message) .setEscapeModelStrings(false) .setVisible(message.length() > 0); add(repositoriesMessage); UserModel user = GitBlitWebSession.get().getUser(); if (user == null) { user = UserModel.ANONYMOUS; } // parameters int daysBack = params == null ? 0 : WicketUtils.getDaysBack(params); if (daysBack < 1) { daysBack = GitBlit.getInteger(Keys.web.activityDuration, 7); } Calendar c = Calendar.getInstance(); c.add(Calendar.DATE, -1 * daysBack); Date minimumDate = c.getTime(); // build repo lists List<RepositoryModel> starred = new ArrayList<RepositoryModel>(); List<RepositoryModel> owned = new ArrayList<RepositoryModel>(); List<RepositoryModel> active = new ArrayList<RepositoryModel>(); for (RepositoryModel model : getRepositoryModels()) { if (model.isUsersPersonalRepository(user.username) || model.isOwner(user.username)) { owned.add(model); } if (user.getPreferences().isStarredRepository(model.name)) { starred.add(model); } if (model.isShowActivity() && model.lastChange.after(minimumDate)) { active.add(model); } } Comparator<RepositoryModel> lastUpdateSort = new Comparator<RepositoryModel>() { @Override public int compare(RepositoryModel o1, RepositoryModel o2) { return o2.lastChange.compareTo(o1.lastChange); } }; Collections.sort(owned, lastUpdateSort); Collections.sort(starred, lastUpdateSort); Collections.sort(active, lastUpdateSort); String activityTitle; Set<RepositoryModel> feed = new HashSet<RepositoryModel>(); feed.addAll(starred); feed.addAll(owned); if (feed.isEmpty()) { // no starred or owned, go with recent activity activityTitle = getString("gb.recentActivity"); feed.addAll(active); } else if (starred.isEmpty()) { // no starred, owned repos feed activityTitle = getString("gb.owned"); } else if (owned.isEmpty()) { // no owned, starred repos feed activityTitle = getString("gb.starred"); } else { // starred and owned repositories activityTitle = getString("gb.starredAndOwned"); } addActivity(user, feed, activityTitle, daysBack); Fragment repositoryTabs; if (UserModel.ANONYMOUS.equals(user)) { repositoryTabs = new Fragment("repositoryTabs", "anonymousTabsFragment", this); } else { repositoryTabs = new Fragment("repositoryTabs", "authenticatedTabsFragment", this); } add(repositoryTabs); // projects list List<ProjectModel> projects = GitBlit.self().getProjectModels(getRepositoryModels(), false); repositoryTabs.add(new FilterableProjectList("projects", projects)); // active repository list if (active.isEmpty()) { repositoryTabs.add(new Label("active").setVisible(false)); } else { FilterableRepositoryList repoList = new FilterableRepositoryList("active", active); repoList.setTitle(getString("gb.activeRepositories"), "icon-time"); repositoryTabs.add(repoList); } // starred repository list if (ArrayUtils.isEmpty(starred)) { repositoryTabs.add(new Label("starred").setVisible(false)); } else { FilterableRepositoryList repoList = new FilterableRepositoryList("starred", starred); repoList.setTitle(getString("gb.starredRepositories"), "icon-star"); repositoryTabs.add(repoList); } // owned repository list if (ArrayUtils.isEmpty(owned)) { repositoryTabs.add(new Label("owned").setVisible(false)); } else { FilterableRepositoryList repoList = new FilterableRepositoryList("owned", owned); repoList.setTitle(getString("gb.myRepositories"), "icon-user"); repoList.setAllowCreate(user.canCreate() || user.canAdmin()); repositoryTabs.add(repoList); } }
private Fragment createLinkFragment(String value) { Fragment fragment = new Fragment("info", "linkFragment", DownloadPage.this); fragment.add(createManufacturerLink(value)); return fragment; }
private Fragment createLabelFragment(String value) { Fragment fragment = new Fragment("info", "labelFragment", DownloadPage.this); fragment.add(new Label("label", value)); return fragment; }
/** * Construct a new YUIDateField. * * @param id the Wicket id for the editor. * @param model the model. * @param metaData the meta data for the property. * @param viewOnly true if the component should be view-only. */ public YUIDateField(String id, IModel<Date> model, ElementMetaData metaData, boolean viewOnly) { super(id, model, metaData, viewOnly); type = metaData.getPropertyType(); boolean displayTz = false; Component metaDataComponent = metaData.getBeanMetaData().getComponent(); Localizer localizer = metaDataComponent.getLocalizer(); if (Time.class.isAssignableFrom(type) || java.sql.Date.class.isAssignableFrom(type) || Date.class.isAssignableFrom(type) || Timestamp.class.isAssignableFrom(type)) { fmt = localizer.getString( DATE_TIME_FIELD_PREFIX + "date" + FORMAT_SUFFIX, metaDataComponent, DATE_FMT_STR); } else if (Calendar.class.isAssignableFrom(type)) { fmt = viewOnly ? localizer.getString( DATE_TIME_FIELD_PREFIX + "datetz" + FORMAT_SUFFIX, metaDataComponent, DATE_ZONE_FMT_STR) : localizer.getString( DATE_TIME_FIELD_PREFIX + "date" + FORMAT_SUFFIX, metaDataComponent, DATE_FMT_STR); displayTz = true; } else { throw new RuntimeException("YUIDateField does not handle " + type); } String customFmt = getFormat(); if (customFmt != null) { fmt = customFmt; } Fragment fragment; if (viewOnly) { fragment = new Fragment("frag", "viewer"); fragment.add(DateLabel.withConverter("date", model, new InternalDateConverter())); } else { fragment = new Fragment("frag", "editor"); FormComponent dateField = DateTextField.withConverter("dateTextField", model, new InternalDateConverter()); setFieldParameters(dateField); fragment.add(dateField); dateField.add( new DatePicker() { private static final long serialVersionUID = 1L; @Override protected boolean enableMonthYearSelection() { return false; } @Override protected CharSequence getIconUrl() { return RequestCycle.get() .urlFor(new ResourceReference(YUIDateField.class, "calendar.gif")); } }); if (displayTz) { DateLabel tzLabel = DateLabel.withConverter("timezone", model, new TimeZoneConverter()); fragment.add(tzLabel); } else { fragment.add(new Label("timezone", "").setVisible(false)); } } add(fragment); }
public ComparePage(PageParameters params) { super(params); Repository r = getRepository(); RepositoryModel repository = getRepositoryModel(); if (StringUtils.isEmpty(objectId)) { // seleciton form add(new Label("comparison").setVisible(false)); } else { // active comparison Fragment comparison = new Fragment("comparison", "comparisonFragment", this); add(comparison); RevCommit fromCommit; RevCommit toCommit; String[] parts = objectId.split("\\.\\."); if (parts[0].startsWith("refs/") && parts[1].startsWith("refs/")) { // set the ref models fromRefId.setObject(parts[0]); toRefId.setObject(parts[1]); fromCommit = getCommit(r, fromRefId.getObject()); toCommit = getCommit(r, toRefId.getObject()); } else { // set the id models fromCommitId.setObject(parts[0]); toCommitId.setObject(parts[1]); fromCommit = getCommit(r, fromCommitId.getObject()); toCommit = getCommit(r, toCommitId.getObject()); } // prepare submodules getSubmodules(toCommit); final String startId = fromCommit.getId().getName(); final String endId = toCommit.getId().getName(); // commit ids fromCommitId.setObject(startId); toCommitId.setObject(endId); final DiffOutput diff = DiffUtils.getDiff(r, fromCommit, toCommit, DiffOutputType.HTML); // add compare diffstat int insertions = 0; int deletions = 0; for (PathChangeModel pcm : diff.stat.paths) { insertions += pcm.insertions; deletions += pcm.deletions; } comparison.add(new DiffStatPanel("diffStat", insertions, deletions)); // compare page links // comparison.add(new BookmarkablePageLink<Void>("patchLink", PatchPage.class, // WicketUtils.newRangeParameter(repositoryName, fromCommitId.toString(), // toCommitId.getObject()))); // display list of commits comparison.add( new LogPanel( "commitList", repositoryName, objectId, r, 0, 0, repository.showRemoteBranches)); // changed paths list comparison.add(new CommitLegendPanel("commitLegend", diff.stat.paths)); ListDataProvider<PathChangeModel> pathsDp = new ListDataProvider<PathChangeModel>(diff.stat.paths); DataView<PathChangeModel> pathsView = new DataView<PathChangeModel>("changedPath", pathsDp) { private static final long serialVersionUID = 1L; int counter; @Override public void populateItem(final Item<PathChangeModel> item) { final PathChangeModel entry = item.getModelObject(); Label changeType = new Label("changeType", ""); WicketUtils.setChangeTypeCssClass(changeType, entry.changeType); setChangeTypeTooltip(changeType, entry.changeType); item.add(changeType); item.add(new DiffStatPanel("diffStat", entry.insertions, entry.deletions, true)); boolean hasSubmodule = false; String submodulePath = null; if (entry.isTree()) { // tree item.add( new LinkPanel( "pathName", null, entry.path, TreePage.class, WicketUtils.newPathParameter(repositoryName, endId, entry.path))); } else if (entry.isSubmodule()) { // submodule String submoduleId = entry.objectId; SubmoduleModel submodule = getSubmodule(entry.path); submodulePath = submodule.gitblitPath; hasSubmodule = submodule.hasSubmodule; // add relative link item.add( new LinkPanel( "pathName", "list", entry.path + " @ " + getShortObjectId(submoduleId), "#" + entry.path)); } else { // add relative link item.add(new LinkPanel("pathName", "list", entry.path, "#" + entry.path)); } // quick links if (entry.isSubmodule()) { // submodule item.add(new ExternalLink("patch", "").setEnabled(false)); item.add( new BookmarkablePageLink<Void>( "view", CommitPage.class, WicketUtils.newObjectParameter(submodulePath, entry.objectId)) .setEnabled(hasSubmodule)); item.add(new ExternalLink("blame", "").setEnabled(false)); item.add( new BookmarkablePageLink<Void>( "history", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, endId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.ADD))); } else { // tree or blob item.add( new BookmarkablePageLink<Void>( "patch", PatchPage.class, WicketUtils.newBlobDiffParameter( repositoryName, startId, endId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.DELETE))); item.add( new BookmarkablePageLink<Void>( "view", BlobPage.class, WicketUtils.newPathParameter(repositoryName, endId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.DELETE))); item.add( new BookmarkablePageLink<Void>( "raw", RawPage.class, WicketUtils.newPathParameter(repositoryName, endId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.DELETE))); item.add( new BookmarkablePageLink<Void>( "blame", BlamePage.class, WicketUtils.newPathParameter(repositoryName, endId, entry.path)) .setEnabled( !entry.changeType.equals(ChangeType.ADD) && !entry.changeType.equals(ChangeType.DELETE))); item.add( new BookmarkablePageLink<Void>( "history", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, endId, entry.path)) .setEnabled(!entry.changeType.equals(ChangeType.ADD))); } WicketUtils.setAlternatingBackground(item, counter); counter++; } }; comparison.add(pathsView); comparison.add(new Label("diffText", diff.content).setEscapeModelStrings(false)); } // // ref selection form // SessionlessForm<Void> refsForm = new SessionlessForm<Void>("compareRefsForm", getClass(), getPageParameters()) { private static final long serialVersionUID = 1L; @Override public void onSubmit() { String from = ComparePage.this.fromRefId.getObject(); String to = ComparePage.this.toRefId.getObject(); PageParameters params = WicketUtils.newRangeParameter(repositoryName, from, to); String relativeUrl = urlFor(ComparePage.class, params).toString(); String absoluteUrl = RequestUtils.toAbsolutePath(relativeUrl); getRequestCycle().setRequestTarget(new RedirectRequestTarget(absoluteUrl)); } }; List<String> refs = new ArrayList<String>(); for (RefModel ref : JGitUtils.getLocalBranches(r, true, -1)) { refs.add(ref.getName()); } if (repository.showRemoteBranches) { for (RefModel ref : JGitUtils.getRemoteBranches(r, true, -1)) { refs.add(ref.getName()); } } for (RefModel ref : JGitUtils.getTags(r, true, -1)) { refs.add(ref.getName()); } refsForm.add( new DropDownChoice<String>("fromRef", fromRefId, refs).setEnabled(refs.size() > 0)); refsForm.add(new DropDownChoice<String>("toRef", toRefId, refs).setEnabled(refs.size() > 0)); add(refsForm); // // manual ids form // SessionlessForm<Void> idsForm = new SessionlessForm<Void>("compareIdsForm", getClass(), getPageParameters()) { private static final long serialVersionUID = 1L; @Override public void onSubmit() { String from = ComparePage.this.fromCommitId.getObject(); String to = ComparePage.this.toCommitId.getObject(); PageParameters params = WicketUtils.newRangeParameter(repositoryName, from, to); String relativeUrl = urlFor(ComparePage.class, params).toString(); String absoluteUrl = RequestUtils.toAbsolutePath(relativeUrl); getRequestCycle().setRequestTarget(new RedirectRequestTarget(absoluteUrl)); } }; TextField<String> fromIdField = new TextField<String>("fromId", fromCommitId); WicketUtils.setInputPlaceholder(fromIdField, getString("gb.from") + "..."); idsForm.add(fromIdField); TextField<String> toIdField = new TextField<String>("toId", toCommitId); WicketUtils.setInputPlaceholder(toIdField, getString("gb.to") + "..."); idsForm.add(toIdField); add(idsForm); r.close(); }
private Fragment getResurceFragment(final TopologyNode node, final PageReference pageRef) { final Fragment fragment = new Fragment("actions", "resourceActions", this); final AjaxLink<String> delete = new IndicatingAjaxLink<String>("delete") { private static final long serialVersionUID = 3776750333491622263L; @Override public void onClick(final AjaxRequestTarget target) { try { resourceRestClient.delete(node.getKey().toString()); target.appendJavaScript(String.format("jsPlumb.remove('%s');", node.getKey())); info(getString(Constants.OPERATION_SUCCEEDED)); } catch (SyncopeClientException e) { error(getString(Constants.ERROR) + ": " + e.getMessage()); LOG.error("While deleting resource {}", node.getKey(), e); } ((BasePage) getPage()).getNotificationPanel().refresh(target); } }; fragment.add(delete); delete.add(new ConfirmationModalBehavior()); MetaDataRoleAuthorizationStrategy.authorize( delete, ENABLE, StandardEntitlement.RESOURCE_DELETE); final AjaxLink<String> edit = new IndicatingAjaxLink<String>("edit") { private static final long serialVersionUID = 3776750333491622263L; @Override public void onClick(final AjaxRequestTarget target) { final ResourceTO modelObject = resourceRestClient.read(node.getKey().toString()); final IModel<ResourceTO> model = new CompoundPropertyModel<>(modelObject); resourceModal.setFormModel(model); target.add( resourceModal.setContent( new ResourceModal<>(resourceModal, pageRef, model, false))); resourceModal.header( new Model<>(MessageFormat.format(getString("resource.edit"), node.getKey()))); MetaDataRoleAuthorizationStrategy.authorize( resourceModal.addSumbitButton(), ENABLE, StandardEntitlement.RESOURCE_UPDATE); resourceModal.show(true); } }; fragment.add(edit); MetaDataRoleAuthorizationStrategy.authorize(edit, ENABLE, StandardEntitlement.RESOURCE_UPDATE); final AjaxLink<String> propagation = new IndicatingAjaxLink<String>("propagation") { private static final long serialVersionUID = 3776750333491622263L; @Override @SuppressWarnings("unchecked") public void onClick(final AjaxRequestTarget target) { target.add( taskModal.setContent(new PropagationTasks(pageRef, node.getKey().toString()))); taskModal.header(new ResourceModel("task.propagation.list", "Propagation tasks")); taskModal.show(true); } }; fragment.add(propagation); MetaDataRoleAuthorizationStrategy.authorize(propagation, ENABLE, StandardEntitlement.TASK_LIST); final AjaxLink<String> synchronization = new IndicatingAjaxLink<String>("synchronization") { private static final long serialVersionUID = 3776750333491622263L; @Override public void onClick(final AjaxRequestTarget target) { target.add(taskModal.setContent(new SyncTasks(pageRef, node.getKey().toString()))); taskModal.header( new ResourceModel("task.synchronization.list", "Synchronization tasks")); taskModal.show(true); } }; fragment.add(synchronization); MetaDataRoleAuthorizationStrategy.authorize( synchronization, ENABLE, StandardEntitlement.TASK_LIST); final AjaxLink<String> push = new IndicatingAjaxLink<String>("push") { private static final long serialVersionUID = 3776750333491622263L; @Override public void onClick(final AjaxRequestTarget target) { target.add(taskModal.setContent(new PushTasks(pageRef, node.getKey().toString()))); taskModal.header(new ResourceModel("task.push.list", "Push tasks")); taskModal.show(true); } }; fragment.add(push); MetaDataRoleAuthorizationStrategy.authorize(push, ENABLE, StandardEntitlement.TASK_LIST); return fragment; }