/** * $URL: https://source.sakaiproject.org/svn/sitestats/trunk/sitestats-tool/src/java/org/sakaiproject/sitestats/tool/wicket/pages/AdminPage.java $ * $Id: AdminPage.java 105078 2012-02-24 23:00:38Z ottenhoff@longsight.com $ * * Copyright (c) 2006-2009 The Sakai Foundation * * Licensed under the Educational Community 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.opensource.org/licenses/ECL-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 org.sakaiproject.sitestats.tool.wicket.pages; import java.util.ArrayList; import java.util.List; import org.apache.wicket.PageParameters; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn; import org.apache.wicket.markup.html.IHeaderResponse; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.markup.html.form.IChoiceRenderer; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.IModel; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.ResourceModel; import org.sakaiproject.site.api.Site; import org.sakaiproject.sitestats.api.StatsManager; import org.sakaiproject.sitestats.tool.facade.Locator; import org.sakaiproject.sitestats.tool.wicket.components.AdminMenu; import org.sakaiproject.sitestats.tool.wicket.components.SakaiDataTable; import org.sakaiproject.sitestats.tool.wicket.components.SakaiNavigatorSearch; import org.sakaiproject.sitestats.tool.wicket.components.SiteLinkPanel; import org.sakaiproject.sitestats.tool.wicket.providers.StatisticableSitesDataProvider; /** * @author Nuno Fernandes */ public class AdminPage extends BasePage { private static final long serialVersionUID = 1L; public AdminPage() { this(null); } public AdminPage(PageParameters params) { String siteId = Locator.getFacade().getToolManager().getCurrentPlacement().getContext(); boolean allowed = Locator.getFacade().getStatsAuthz().isUserAbleToViewSiteStatsAdmin(siteId); if(allowed){ renderBody(); Locator.getFacade().getStatsManager().logEvent("admin", StatsManager.LOG_ACTION_VIEW, siteId, true); }else{ redirectToInterceptPage(new NotAuthorizedPage()); } } @Override public void renderHead(IHeaderResponse response) { super.renderHead(response); } @SuppressWarnings("serial") private void renderBody() { final StatisticableSitesDataProvider dataProvider = new StatisticableSitesDataProvider(); add(new AdminMenu("menu")); // Search add(new SakaiNavigatorSearch("search", dataProvider)); // Site types List<String> choices = new ArrayList<String>(); choices.add(StatisticableSitesDataProvider.SITE_TYPE_ALL); List<String> types = Locator.getFacade().getSiteService().getSiteTypes(); for(String t : types) { choices.add(t); } DropDownChoice siteTypes = new DropDownChoice("siteTypes", choices, new IChoiceRenderer() { public Object getDisplayValue(Object object) { String value = (String) object; if(value != null && value.equals(StatisticableSitesDataProvider.SITE_TYPE_ALL)) { return new ResourceModel("all").getObject(); }else{ return object; } } public String getIdValue(Object object, int index) { return (String) object; } }) { @Override protected boolean wantOnSelectionChangedNotifications() { return true; } @Override protected void onSelectionChanged(Object newSelection) { setRedirect(true); setResponsePage(getPage()); super.onSelectionChanged(newSelection); } }; siteTypes.setModel(new PropertyModel(dataProvider, "siteType")); add(siteTypes); // Table columns List<IColumn> columns = new ArrayList<IColumn>(); columns.add(new PropertyColumn(new ResourceModel("th_title"), StatisticableSitesDataProvider.COL_TITLE, StatisticableSitesDataProvider.COL_TITLE) { @Override public void populateItem(Item item, String componentId, IModel model) { item.add(new SiteLinkPanel(componentId, model)); } }); columns.add(new PropertyColumn(new ResourceModel("th_type"), StatisticableSitesDataProvider.COL_TYPE, StatisticableSitesDataProvider.COL_TYPE)); columns.add(new PropertyColumn(new ResourceModel("th_status"), StatisticableSitesDataProvider.COL_STATUS, StatisticableSitesDataProvider.COL_STATUS) { @Override public void populateItem(Item item, String componentId, IModel model) { final boolean isPublished = ((Site) model.getObject()).isPublished(); ResourceModel modelStr = null; if(isPublished) { modelStr = new ResourceModel("site_published"); }else{ modelStr = new ResourceModel("site_unpublished"); } item.add(new Label(componentId, modelStr)); } }); // Table add(new SakaiDataTable("table", columns, dataProvider, true)); } }