/********************************************************************************** * $URL: $ * $Id: $ *********************************************************************************** * * Author: Eric Jeney, jeney@rutgers.edu * * Copyright (c) 2010 Rutgers, the State University of New Jersey * * 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.lessonbuildertool.tool.producers; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.sakaiproject.component.cover.ServerConfigurationService; import org.sakaiproject.content.api.ContentHostingService; import org.sakaiproject.content.api.FilePickerHelper; import org.sakaiproject.lessonbuildertool.SimplePage; import org.sakaiproject.lessonbuildertool.tool.beans.SimplePageBean; import org.sakaiproject.lessonbuildertool.tool.view.FilePickerViewParameters; import org.sakaiproject.tool.api.SessionManager; import org.sakaiproject.tool.api.ToolManager; import org.sakaiproject.tool.api.ToolSession; import org.sakaiproject.site.api.Site; import org.sakaiproject.site.api.SiteService; import org.sakaiproject.authz.api.PermissionsHelper; import uk.org.ponder.messageutil.MessageLocator; import uk.org.ponder.localeutil.LocaleGetter; import uk.ac.cam.caret.sakai.rsf.helper.HelperViewParameters; 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.components.UIInput; import uk.org.ponder.rsf.components.decorators.UIFreeAttributeDecorator; 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; /** * Uses the ResourcePicker to permit adding resources to the page. * * This producer is used both for adding resources and for adding multimedia. * * @author Eric Jeney <jeney@rutgers.edu> * */ public class PermissionsHelperProducer implements ViewComponentProducer, ViewParamsReporter, NavigationCaseReporter { public static final String VIEW_ID = "PermissionsHelper"; public String getViewID() { return VIEW_ID; } private SimplePageBean simplePageBean; public void setSimplePageBean(SimplePageBean bean) { simplePageBean = bean; } // helper tool public static final String HELPER = "sakai.permissions.helper"; private static final String[] PERMISSIONS = new String[] { SimplePage.PERMISSION_LESSONBUILDER_UPDATE, SimplePage.PERMISSION_LESSONBUILDER_READ, SimplePage.PERMISSION_LESSONBUILDER_SEE_ALL}; private SessionManager sessionManager; public void setSessionManager(SessionManager sessionManager) { this.sessionManager = sessionManager; } private SiteService siteService; public void setSiteService(SiteService service) { siteService = service; } private ToolManager toolManager; public void setToolManager(ToolManager toolManager) { this.toolManager = toolManager; } private MessageLocator messageLocator; public void setMessageLocator(MessageLocator messageLocator) { this.messageLocator = messageLocator; } public LocaleGetter localeGetter; public void fillComponents(UIContainer tofill, ViewParameters viewparams, ComponentChecker checker) { if (!simplePageBean.canEditPage() && !simplePageBean.canEditSite()) return; UIOutput.make(tofill, "html").decorate(new UIFreeAttributeDecorator("lang", localeGetter.get().getLanguage())) .decorate(new UIFreeAttributeDecorator("xml:lang", localeGetter.get().getLanguage())); // this is purely a site config, so no permission other than caneditpage needed // parameters for helper ToolSession session = sessionManager.getCurrentToolSession(); Site site = null; try { site = siteService.getSite(toolManager.getCurrentPlacement().getContext()); } catch (Exception impossible) { impossible.printStackTrace(); return; } session.setAttribute(PermissionsHelper.TARGET_REF, site.getReference()); session.setAttribute(PermissionsHelper.DESCRIPTION, messageLocator.getMessage("simplepage.editpermissions") + " " + site.getTitle()); session.setAttribute(PermissionsHelper.PREFIX, "lessonbuilder."); HashMap<String, String> pRbValues = new HashMap<String, String>(); for (String perm : PERMISSIONS) { 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 List reportNavigationCases() { List l = new ArrayList(); l.add(new NavigationCase(null, new SimpleViewParameters(ShowPageProducer.VIEW_ID))); return l; } public ViewParameters getViewParameters() { return new HelperViewParameters(); } }