/**********************************************************************************
* Copyright 2008-2009 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.mailsender.tool.producers;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.sakaiproject.authz.api.PermissionsHelper;
import org.sakaiproject.mailsender.logic.ExternalLogic;
import org.sakaiproject.tool.api.SessionManager;
import org.sakaiproject.tool.api.ToolSession;
import uk.ac.cam.caret.sakai.rsf.helper.HelperViewParameters;
import uk.org.ponder.messageutil.MessageLocator;
import uk.org.ponder.rsf.components.UICommand;
import uk.org.ponder.rsf.components.UIContainer;
import uk.org.ponder.rsf.components.UIOutput;
import uk.org.ponder.rsf.flow.jsfnav.NavigationCase;
import uk.org.ponder.rsf.flow.jsfnav.NavigationCaseReporter;
import uk.org.ponder.rsf.view.ComponentChecker;
import uk.org.ponder.rsf.view.ViewComponentProducer;
import uk.org.ponder.rsf.viewstate.SimpleViewParameters;
import uk.org.ponder.rsf.viewstate.ViewParameters;
import uk.org.ponder.rsf.viewstate.ViewParamsReporter;
public class PermissionsProducer implements ViewComponentProducer, ViewParamsReporter,
NavigationCaseReporter
{
public static final String VIEW_ID = "permissions";
public String getViewID()
{
return VIEW_ID;
}
// Injection
private SessionManager sessionManager;
private ExternalLogic externalLogic;
private MessageLocator messageLocator;
private static final String HELPER = "sakai.permissions.helper";
public void fillComponents(UIContainer tofill, ViewParameters viewparams,
ComponentChecker checker)
{
String locationId = externalLogic.getCurrentLocationId();
ToolSession session = sessionManager.getCurrentToolSession();
session.setAttribute(PermissionsHelper.TARGET_REF, locationId);
session.setAttribute(PermissionsHelper.DESCRIPTION, messageLocator.getMessage(
"mailsender.permissions.header", externalLogic.getCurrentSiteTitle()));
session.setAttribute(PermissionsHelper.PREFIX, "mailtool.");
List<String> perms = externalLogic.getPermissionKeys();
HashMap<String, String> pRbValues = new HashMap<String, String>();
for (int i = 0; i < perms.size(); i++)
{
String perm = perms.get(i);
String descr = messageLocator.getMessage("desc-" + perm);
pRbValues.put("desc-" + perm, descr);
}
session.setAttribute("permissionDescriptions", pRbValues);
UIOutput.make(tofill, HelperViewParameters.HELPER_ID, HELPER);
UICommand.make(tofill, HelperViewParameters.POST_HELPER_BINDING, "", null);
}
public ViewParameters getViewParameters()
{
return new HelperViewParameters();
}
public List<NavigationCase> reportNavigationCases()
{
List<NavigationCase> l = new ArrayList<NavigationCase>();
// default navigation case
l.add(new NavigationCase(null, new SimpleViewParameters(ComposeProducer.VIEW_ID)));
return l;
}
public void setMessageLocator(MessageLocator messageLocator)
{
this.messageLocator = messageLocator;
}
public void setSessionManager(SessionManager sessionManager)
{
this.sessionManager = sessionManager;
}
public void setExternalLogic(ExternalLogic externalLogic)
{
this.externalLogic = externalLogic;
}
}