You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

BasePage.java 4.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. /*
  2. * Copyright 2011 gitblit.com.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package com.gitblit.wicket;
  17. import java.util.LinkedHashMap;
  18. import java.util.Map;
  19. import java.util.TimeZone;
  20. import javax.servlet.http.HttpServletRequest;
  21. import org.apache.wicket.PageParameters;
  22. import org.apache.wicket.RestartResponseAtInterceptPageException;
  23. import org.apache.wicket.markup.html.WebPage;
  24. import org.apache.wicket.markup.html.basic.Label;
  25. import org.apache.wicket.markup.html.panel.FeedbackPanel;
  26. import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
  27. import org.slf4j.Logger;
  28. import org.slf4j.LoggerFactory;
  29. import com.gitblit.Constants;
  30. import com.gitblit.Constants.AccessRestrictionType;
  31. import com.gitblit.GitBlit;
  32. import com.gitblit.Keys;
  33. import com.gitblit.wicket.pages.SummaryPage;
  34. public abstract class BasePage extends WebPage {
  35. private final Logger logger;
  36. public BasePage() {
  37. super();
  38. logger = LoggerFactory.getLogger(getClass());
  39. }
  40. public BasePage(PageParameters params) {
  41. super(params);
  42. logger = LoggerFactory.getLogger(getClass());
  43. }
  44. protected void setupPage(String repositoryName, String pageName) {
  45. if (repositoryName != null && repositoryName.trim().length() > 0) {
  46. add(new Label("title", getServerName() + " - " + repositoryName));
  47. } else {
  48. add(new Label("title", getServerName()));
  49. }
  50. // header
  51. String siteName = GitBlit.self().settings().getString(Keys.web.siteName, Constants.NAME);
  52. if (siteName == null || siteName.trim().length() == 0) {
  53. siteName = Constants.NAME;
  54. }
  55. add(new Label("siteName", siteName));
  56. add(new LinkPanel("repositoryName", null, repositoryName, SummaryPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
  57. add(new Label("pageName", pageName));
  58. // Feedback panel for info, warning, and non-fatal error messages
  59. add(new FeedbackPanel("feedback"));
  60. // footer
  61. if (GitBlit.self().settings().getBoolean(Keys.web.authenticateViewPages, true) || GitBlit.self().settings().getBoolean(Keys.web.authenticateAdminPages, true)) {
  62. if (GitBlitWebSession.get().isLoggedIn()) {
  63. // logout
  64. add(new LinkPanel("userPanel", null, getString("gb.logout") + " " + GitBlitWebSession.get().getUser().toString(), LogoutPage.class));
  65. } else {
  66. // login
  67. add(new LinkPanel("userPanel", null, getString("gb.login"), LoginPage.class));
  68. }
  69. } else {
  70. add(new Label("userPanel", ""));
  71. }
  72. add(new Label("gbVersion", "v" + Constants.VERSION));
  73. if (GitBlit.self().settings().getBoolean(Keys.web.aggressiveHeapManagement, false)) {
  74. System.gc();
  75. }
  76. }
  77. protected Map<AccessRestrictionType, String> getAccessRestrictions() {
  78. Map<AccessRestrictionType, String> map = new LinkedHashMap<AccessRestrictionType, String>();
  79. for (AccessRestrictionType type : AccessRestrictionType.values()) {
  80. switch (type) {
  81. case NONE:
  82. map.put(type, getString("gb.notRestricted"));
  83. break;
  84. case PUSH:
  85. map.put(type, getString("gb.pushRestricted"));
  86. break;
  87. case CLONE:
  88. map.put(type, getString("gb.cloneRestricted"));
  89. break;
  90. case VIEW:
  91. map.put(type, getString("gb.viewRestricted"));
  92. break;
  93. }
  94. }
  95. return map;
  96. }
  97. protected TimeZone getTimeZone() {
  98. return GitBlit.self().settings().getBoolean(Keys.web.useClientTimezone, false) ? GitBlitWebSession.get().getTimezone() : TimeZone.getDefault();
  99. }
  100. protected String getServerName() {
  101. ServletWebRequest servletWebRequest = (ServletWebRequest) getRequest();
  102. HttpServletRequest req = servletWebRequest.getHttpServletRequest();
  103. return req.getServerName();
  104. }
  105. public void error(String message, boolean redirect) {
  106. logger.error(message);
  107. if (redirect) {
  108. GitBlitWebSession.get().cacheErrorMessage(message);
  109. throw new RestartResponseAtInterceptPageException(getApplication().getHomePage());
  110. } else {
  111. super.error(message);
  112. }
  113. }
  114. public void error(String message, Throwable t, boolean redirect) {
  115. logger.error(message, t);
  116. if (redirect) {
  117. GitBlitWebSession.get().cacheErrorMessage(message);
  118. throw new RestartResponseAtInterceptPageException(getApplication().getHomePage());
  119. } else {
  120. super.error(message);
  121. }
  122. }
  123. }