/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/sam/trunk/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/author/EditPublishedSettingsListener.java $
* $Id: EditPublishedSettingsListener.java 106463 2012-04-02 12:20:09Z david.horwitz@uct.ac.za $
***********************************************************************************
*
* Copyright (c) 2004, 2005, 2006, 2007, 2008 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.tool.assessment.ui.listener.author;
import java.util.Date;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.sakaiproject.tool.assessment.data.ifc.assessment.AssessmentBaseIfc;
import org.sakaiproject.tool.assessment.data.ifc.assessment.AssessmentMetaDataIfc;
import org.sakaiproject.tool.assessment.data.ifc.assessment.AssessmentIfc;
import org.sakaiproject.tool.assessment.facade.AgentFacade;
import org.sakaiproject.tool.assessment.facade.PublishedAssessmentFacade;
import org.sakaiproject.tool.assessment.services.assessment.PublishedAssessmentService;
import org.sakaiproject.tool.assessment.ui.bean.author.AssessmentBean;
import org.sakaiproject.tool.assessment.ui.bean.author.AuthorBean;
import org.sakaiproject.tool.assessment.ui.bean.author.PublishedAssessmentSettingsBean;
import org.sakaiproject.tool.assessment.ui.bean.authz.AuthorizationBean;
import org.sakaiproject.tool.assessment.ui.listener.util.ContextUtil;
import org.sakaiproject.util.FormattedText;
import org.sakaiproject.component.cover.ServerConfigurationService;
/**
* <p>Title: Samigo</p>
* <p>Description: Sakai Assessment Manager</p>
* @author Ed Smiley
* @version $Id: EditPublishedSettingsListener.java 106463 2012-04-02 12:20:09Z david.horwitz@uct.ac.za $
*/
public class EditPublishedSettingsListener
implements ActionListener
{
private static Log log = LogFactory.getLog(EditPublishedSettingsListener.class);
public EditPublishedSettingsListener()
{
}
public void processAction(ActionEvent ae) throws AbortProcessingException
{
FacesContext context = FacesContext.getCurrentInstance();
//log.info("**debugging ActionEvent: " + ae);
//log.info("**debug requestParams: " + requestParams);
//log.info("**debug reqMap: " + reqMap);
PublishedAssessmentSettingsBean assessmentSettings = (PublishedAssessmentSettingsBean) ContextUtil.lookupBean(
"publishedSettings");
AuthorBean author = (AuthorBean) ContextUtil.lookupBean("author");
// #1a - load the assessment
String assessmentId = (String) FacesContext.getCurrentInstance().
getExternalContext().getRequestParameterMap().get("publishedAssessmentId");
PublishedAssessmentService assessmentService = new PublishedAssessmentService();
PublishedAssessmentFacade assessment = assessmentService.getSettingsOfPublishedAssessment(
assessmentId);
//## - permission checking before proceeding - daisyf
if (!passAuthz(context, assessment.getCreatedBy())){
author.setOutcome("author");
return;
}
author.setOutcome("editPublishedAssessmentSettings");
author.setIsEditPendingAssessmentFlow(false);
assessmentSettings.setAssessment(assessment);
assessmentSettings.setAttachmentList(((AssessmentIfc)assessment.getData()).getAssessmentAttachmentList());
// To convertFormattedTextToPlaintext for the fields that have been through convertPlaintextToFormattedTextNoHighUnicode
assessmentSettings.setTitle(FormattedText.convertFormattedTextToPlaintext(assessment.getTitle()));
assessmentSettings.setAuthors(FormattedText.convertFormattedTextToPlaintext(assessment.getAssessmentMetaDataByLabel(AssessmentMetaDataIfc.AUTHORS)));
assessmentSettings.setFinalPageUrl(FormattedText.convertFormattedTextToPlaintext(assessment.getAssessmentAccessControl().getFinalPageUrl()));
assessmentSettings.setBgColor(FormattedText.convertFormattedTextToPlaintext(assessment.getAssessmentMetaDataByLabel(AssessmentMetaDataIfc.BGCOLOR)));
assessmentSettings.setBgImage(FormattedText.convertFormattedTextToPlaintext(assessment.getAssessmentMetaDataByLabel(AssessmentMetaDataIfc.BGIMAGE)));
assessmentSettings.setKeywords(FormattedText.convertFormattedTextToPlaintext(assessment.getAssessmentMetaDataByLabel(AssessmentMetaDataIfc.KEYWORDS)));
assessmentSettings.setObjectives(FormattedText.convertFormattedTextToPlaintext(assessment.getAssessmentMetaDataByLabel(AssessmentMetaDataIfc.OBJECTIVES)));
assessmentSettings.setRubrics(FormattedText.convertFormattedTextToPlaintext(assessment.getAssessmentMetaDataByLabel(AssessmentMetaDataIfc.RUBRICS)));
assessmentSettings.setUsername(FormattedText.convertFormattedTextToPlaintext(assessment.getAssessmentAccessControl().getUsername()));
assessmentSettings.setPassword(FormattedText.convertFormattedTextToPlaintext(assessment.getAssessmentAccessControl().getPassword()));
assessmentSettings.setBlockDivs("");
AssessmentBean assessmentBean = (AssessmentBean) ContextUtil.lookupBean("assessmentBean");
assessmentBean.setAssessmentId(assessmentId);
if (ae == null) {
// From authorIndex
author.setFromPage("author");
}
else {
String actionCommand = ae.getComponent().getId();
if ("editPublishedAssessmentSettings_editAssessment".equals(actionCommand)) {
log.debug("editPublishedAssessmentSettings_editAssessment");
author.setFromPage("editAssessment");
}
else if ("editPublishedAssessmentSettings_saveSettingsAndConfirmPublish".equals(actionCommand)) {
log.debug("editPublishedAssessmentSettings_saveSettingsAndConfirmPublish");
author.setFromPage("saveSettingsAndConfirmPublish");
}
}
boolean isRetractedForEdit = isRetractedForEdit(assessment);
log.debug("isRetractedForEdit = " + isRetractedForEdit);
author.setIsRetractedForEdit(isRetractedForEdit);
String editPubAnonyGradingRestricted = ServerConfigurationService.getString("samigo.editPubAnonyGrading.restricted");
if (editPubAnonyGradingRestricted != null && editPubAnonyGradingRestricted.equals("true")) {
assessmentSettings.setEditPubAnonyGradingRestricted(true);
}
else {
assessmentSettings.setEditPubAnonyGradingRestricted(false);
}
}
public boolean passAuthz(FacesContext context, String ownerId){
AuthorizationBean authzBean = (AuthorizationBean) ContextUtil.lookupBean("authorization");
boolean hasPrivilege_any = authzBean.getPublishAnyAssessment();
boolean hasPrivilege_own0 = authzBean.getPublishOwnAssessment();
boolean hasPrivilege_own = (hasPrivilege_own0 && isOwner(ownerId));
boolean hasPrivilege = (hasPrivilege_any || hasPrivilege_own);
if (!hasPrivilege){
String err=(String)ContextUtil.getLocalizedString("org.sakaiproject.tool.assessment.bundle.AuthorMessages",
"denied_edit_publish_assessment_settings_error");
context.addMessage(null,new FacesMessage(err));
}
return hasPrivilege;
}
public boolean isOwner(String ownerId){
boolean isOwner = false;
String agentId = AgentFacade.getAgentString();
isOwner = agentId.equals(ownerId);
return isOwner;
}
private boolean isRetractedForEdit(PublishedAssessmentFacade publishedAssessmentFacade) {
if (AssessmentBaseIfc.RETRACT_FOR_EDIT_STATUS.equals(publishedAssessmentFacade.getStatus())) {
return true;
}
return false;
}
}