public ActionForward presentation(
      ActionMapping mapping,
      ActionForm actionForm,
      HttpServletRequest request,
      HttpServletResponse response) {
    Unit unit = getUnit(request);
    UnitSite site = unit.getSite();

    AnnouncementBoard announcementsBoard = null;
    AnnouncementBoard eventsBoard = null;

    for (AnnouncementBoard unitBoard : unit.getBoards()) {
      if (unitBoard.isPublicToRead()
          && unitBoard.getName().equalInAnyLanguage(ANNOUNCEMENTS_NAME)) {
        announcementsBoard = unitBoard;
      }

      if (unitBoard.isPublicToRead() && unitBoard.getName().equalInAnyLanguage(EVENTS_NAME)) {
        eventsBoard = unitBoard;
      }
    }

    if (announcementsBoard != null) {
      List<Announcement> announcements = announcementsBoard.getActiveAnnouncements();
      announcements =
          announcements.subList(0, Math.min(announcements.size(), ANNOUNCEMENTS_NUMBER));
      request.setAttribute("announcements", announcements);
    }

    if (eventsBoard != null) {
      request.setAttribute("announcementBoard", eventsBoard);

      YearMonthDay currentDay = new YearMonthDay();
      List<Announcement> currentDayAnnouncements =
          eventsBoard.getActiveAnnouncementsFor(currentDay);
      List<Announcement> futureAnnouncements = eventsBoard.getActiveAnnouncementsAfter(currentDay);

      Collections.sort(futureAnnouncements, Announcement.SUBJECT_BEGIN_DATE);
      request.setAttribute("today-events", currentDayAnnouncements);
      request.setAttribute("future-events", futureAnnouncements);

      int eventCount = currentDayAnnouncements.size() + futureAnnouncements.size();
      if (eventCount < ANNOUNCEMENTS_NUMBER) {
        List<Announcement> announcements = eventsBoard.getActiveAnnouncementsBefore(currentDay);
        announcements =
            announcements.subList(
                0, Math.min(announcements.size(), ANNOUNCEMENTS_NUMBER - eventCount));
        request.setAttribute("eventAnnouncements", announcements);
      }
    }

    return mapping.findForward("frontPage-" + site.getLayout());
  }
  protected Unit getUnit(HttpServletRequest request) {
    Unit unit = (Unit) request.getAttribute("unit");

    if (unit == null) {
      FilterFunctionalityContext context =
          (FilterFunctionalityContext) AbstractFunctionalityContext.getCurrentContext(request);
      UnitSite site = (UnitSite) context.getSelectedContainer();
      unit = site.getUnit();
    }

    return unit;
  }
  public Unit getUnit(HttpServletRequest request) {
    String parameter = request.getParameter(getContextParamName());

    if (parameter == null) {
      UnitSite site = SiteMapper.getSite(request);
      if (site != null) {
        return site.getUnit();
      }
      UnitAnnouncementBoard board = getDomainObject(request, "announcementBoardId");
      if (board != null) {
        return board.getUnit();
      }
      Announcement announcement = getDomainObject(request, "announcementId");
      if (announcement != null) {
        return ((UnitAnnouncementBoard) announcement.getAnnouncementBoard()).getUnit();
      }
    }

    try {
      return (Unit) FenixFramework.getDomainObject(parameter);
    } catch (NumberFormatException e) {
      return null;
    }
  }
 protected void run(UnitSite site, Person person) {
   site.removeManagers(person);
 }