123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- /*
- * Copyright 2011 gitblit.com.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package com.gitblit.wicket.pages;
-
- import java.util.ArrayList;
- import java.util.List;
-
- import org.apache.wicket.PageParameters;
- import org.apache.wicket.Session;
- import org.apache.wicket.markup.html.basic.Label;
-
- import com.gitblit.Constants.AccessRestrictionType;
- import com.gitblit.Constants.AuthorizationControl;
- import com.gitblit.GitBlit;
- import com.gitblit.models.RepositoryModel;
- import com.gitblit.models.UserModel;
- import com.gitblit.utils.ModelUtils;
- import com.gitblit.utils.StringUtils;
-
- /**
- * RootSubPage is a non-topbar navigable RootPage. It also has a page header.
- *
- * @author James Moger
- *
- */
- public abstract class RootSubPage extends RootPage {
-
- public RootSubPage() {
- super();
- createPageMapIfNeeded();
- }
-
- public RootSubPage(PageParameters params) {
- super(params);
- createPageMapIfNeeded();
- }
-
- protected boolean requiresPageMap() {
- return false;
- }
-
- protected void createPageMapIfNeeded() {
- if (requiresPageMap()) {
- // because Gitblit strives for page-statelessness
- // Wicket seems to get confused as to when it really should
- // generate a page map for complex pages. Conditionally ensure we
- // have a page map for complex AJAX pages like the EditNNN pages.
- Session.get().pageMapForName(null, true);
- setVersioned(true);
- }
- }
-
- @Override
- protected void setupPage(String pageName, String subName) {
- add(new Label("pageName", pageName));
- if (!StringUtils.isEmpty(subName)) {
- subName = "/ " + subName;
- }
- add(new Label("pageSubName", subName));
- super.setupPage("", pageName);
- }
-
- protected List<String> getAccessRestrictedRepositoryList(boolean includeWildcards, UserModel user) {
- // build list of access-restricted projects
- String lastProject = null;
- List<String> repos = new ArrayList<String>();
- if (includeWildcards) {
- // all repositories
- repos.add(".*");
- // all repositories excluding personal repositories
- if (ModelUtils.getUserRepoPrefix().length() == 1) {
- repos.add("[^" + ModelUtils.getUserRepoPrefix() + "].*");
- }
- }
-
- for (String repo : GitBlit.self().getRepositoryList()) {
- RepositoryModel repositoryModel = GitBlit.self().getRepositoryModel(repo);
- if (repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE)
- && repositoryModel.authorizationControl.equals(AuthorizationControl.NAMED)) {
- if (user != null &&
- (repositoryModel.isOwner(user.username) || repositoryModel.isUsersPersonalRepository(user.username))) {
- // exclude Owner or personal repositories
- continue;
- }
- if (includeWildcards) {
- if (lastProject == null || !lastProject.equalsIgnoreCase(repositoryModel.projectPath)) {
- lastProject = repositoryModel.projectPath.toLowerCase();
- if (!StringUtils.isEmpty(repositoryModel.projectPath)) {
- // regex for all repositories within a project
- repos.add(repositoryModel.projectPath + "/.*");
- }
- }
- }
- repos.add(repo.toLowerCase());
- }
- }
- return repos;
- }
- }
|