Index: samigo-api/src/java/xml/xsl/dataTransform/import/v1p2/extractItem.xsl =================================================================== --- samigo-api/src/java/xml/xsl/dataTransform/import/v1p2/extractItem.xsl (revision 399) +++ samigo-api/src/java/xml/xsl/dataTransform/import/v1p2/extractItem.xsl (revision 400) @@ -127,7 +127,7 @@ - + Index: samigo-services/src/java/org/sakaiproject/tool/assessment/facade/AssessmentFacadeQueriesAPI.java =================================================================== --- samigo-services/src/java/org/sakaiproject/tool/assessment/facade/AssessmentFacadeQueriesAPI.java (revision 399) +++ samigo-services/src/java/org/sakaiproject/tool/assessment/facade/AssessmentFacadeQueriesAPI.java (revision 400) @@ -107,9 +107,15 @@ public AssessmentFacade createAssessmentWithoutDefaultSection(String title, String description, Long typeId, Long templateId) throws Exception; + public AssessmentFacade createAssessmentWithoutDefaultSection(String title, + String description, Long typeId, Long templateId, String siteId) throws Exception; + public AssessmentFacade createAssessment(String title, String description, Long typeId, Long templateId) throws Exception; + public AssessmentFacade createAssessment(String title, String description, + Long typeId, Long templateId, String siteId) throws Exception; + public ArrayList getAllAssessments(String orderBy); public ArrayList getAllActiveAssessments(String orderBy); Index: samigo-services/src/java/org/sakaiproject/tool/assessment/facade/AssessmentFacadeQueries.java =================================================================== --- samigo-services/src/java/org/sakaiproject/tool/assessment/facade/AssessmentFacadeQueries.java (revision 399) +++ samigo-services/src/java/org/sakaiproject/tool/assessment/facade/AssessmentFacadeQueries.java (revision 400) @@ -585,11 +585,17 @@ */ public AssessmentFacade createAssessmentWithoutDefaultSection(String title, String description, Long typeId, Long templateId) throws Exception { + return createAssessmentWithoutDefaultSection(title, description, typeId, templateId, null); + } + + + public AssessmentFacade createAssessmentWithoutDefaultSection(String title, + String description, Long typeId, Long templateId, String siteId) throws Exception { // this assessment came with one default section AssessmentData assessment = null; try { assessment = prepareAssessment(title, description, typeId, - templateId); + templateId, siteId); } catch (Exception e) { throw new Exception(e); } @@ -597,12 +603,17 @@ getHibernateTemplate().save(assessment); // register assessmnet with current site - registerWithCurrentSite(assessment.getAssessmentId().toString()); + registerWithSite(assessment.getAssessmentId().toString(), siteId); return new AssessmentFacade(assessment); } private AssessmentData prepareAssessment(String title, String description, Long typeId, Long templateId) throws Exception { + return prepareAssessment(title, description, typeId, templateId, null); + } + + private AssessmentData prepareAssessment(String title, String description, + Long typeId, Long templateId, String siteId) throws Exception { // #1 - get the template (a facade) and create Assessment based on it AssessmentTemplateFacade template = getAssessmentTemplate(templateId); AssessmentData assessment = cloneAssessmentFromTemplate((AssessmentTemplateData) template @@ -622,7 +633,11 @@ if (("ANONYMOUS_USERS").equals(defaultReleaseTo)) { control.setReleaseTo("Anonymous Users"); } else { - control.setReleaseTo(AgentFacade.getCurrentSiteName()); + if (siteId == null || siteId.length() == 0) { + control.setReleaseTo(AgentFacade.getCurrentSiteName()); + } else { + control.setReleaseTo(AgentFacade.getSiteName(siteId)); + } } /* @@ -647,7 +662,7 @@ GradebookServiceHelper gbsHelper = IntegrationContextFactory .getInstance().getGradebookServiceHelper(); if (!gbsHelper - .gradebookExists(GradebookFacade.getGradebookUId(), g)) + .gradebookExists(GradebookFacade.getGradebookUId(siteId), g)) evaluation .setToGradeBook(EvaluationModelIfc.GRADEBOOK_NOT_AVAILABLE .toString()); @@ -664,12 +679,17 @@ public AssessmentFacade createAssessment(String title, String description, Long typeId, Long templateId) throws Exception { + return createAssessment(title, description, typeId, templateId, null); + } + public AssessmentFacade createAssessment(String title, String description, + Long typeId, Long templateId, String siteId) throws Exception { + // this assessment comes with a default section AssessmentData assessment = null; try { assessment = prepareAssessment(title, description, typeId, - templateId); + templateId, siteId); } catch (Exception e) { throw new Exception(e); } @@ -687,15 +707,25 @@ } } // register assessmnet with current site - registerWithCurrentSite(assessment.getAssessmentId().toString()); + registerWithSite(assessment.getAssessmentId().toString(), siteId); return new AssessmentFacade(assessment); } - private void registerWithCurrentSite(String qualifierIdString) { + private void registerWithSite(String qualifierIdString, String siteId) { + if (siteId == null || siteId.length() == 0) { + PersistenceService.getInstance().getAuthzQueriesFacade() + .createAuthorization(AgentFacade.getCurrentSiteId(), + "EDIT_ASSESSMENT", qualifierIdString); + } else { PersistenceService.getInstance().getAuthzQueriesFacade() - .createAuthorization(AgentFacade.getCurrentSiteId(), + .createAuthorization(siteId, "EDIT_ASSESSMENT", qualifierIdString); + } } + + private void registerWithCurrentSite(String qualifierIdString) { + registerWithSite(qualifierIdString, null); + } public ArrayList getAllAssessments(String orderBy) { List list = getHibernateTemplate().find( Index: samigo-services/src/java/org/sakaiproject/tool/assessment/services/assessment/AssessmentService.java =================================================================== --- samigo-services/src/java/org/sakaiproject/tool/assessment/services/assessment/AssessmentService.java (revision 399) +++ samigo-services/src/java/org/sakaiproject/tool/assessment/services/assessment/AssessmentService.java (revision 400) @@ -221,6 +221,11 @@ public AssessmentFacade createAssessment(String title, String description, String typeId, String templateId) throws Exception { + return createAssessment(title, description, typeId, templateId, null); + } + + public AssessmentFacade createAssessment(String title, String description, + String typeId, String templateId, String siteId) throws Exception { AssessmentFacade assessment = null; try { AssessmentTemplateFacade assessmentTemplate = null; @@ -238,7 +243,7 @@ .getInstance().getAssessmentFacadeQueries(); log.debug("**** AssessmentFacadeQueries=" + queries); assessment = queries.createAssessment(title, description, - typeIdLong, templateIdLong); + typeIdLong, templateIdLong, siteId); } catch (Exception e) { log.error(e); throw new Exception(e); @@ -364,6 +369,13 @@ public AssessmentFacade createAssessmentWithoutDefaultSection(String title, String description, String typeId, String templateId) throws Exception { + return createAssessmentWithoutDefaultSection(title, description, typeId, templateId, null); + } + + + public AssessmentFacade createAssessmentWithoutDefaultSection(String title, + String description, String typeId, String templateId, String siteId) + throws Exception { AssessmentFacade assessment = null; try { AssessmentTemplateFacade assessmentTemplate = null; @@ -380,7 +392,7 @@ AssessmentFacadeQueriesAPI queries = PersistenceService .getInstance().getAssessmentFacadeQueries(); assessment = queries.createAssessmentWithoutDefaultSection(title, - description, typeIdLong, templateIdLong); + description, typeIdLong, templateIdLong, siteId); } catch (Exception e) { log.error(e); throw new Exception(e); Index: samigo-qti/src/java/org/sakaiproject/tool/assessment/services/qti/QTIService.java =================================================================== --- samigo-qti/src/java/org/sakaiproject/tool/assessment/services/qti/QTIService.java (revision 399) +++ samigo-qti/src/java/org/sakaiproject/tool/assessment/services/qti/QTIService.java (revision 400) @@ -67,13 +67,24 @@ throw new QTIServiceException(ex); } } - + public AssessmentFacade createImportedAssessment(Document document, int qtiVersion, String unzipLocation, String templateId) { + testQtiVersion(qtiVersion); + + try { + AuthoringHelper helper = new AuthoringHelper(qtiVersion); + return helper.createImportedAssessment(document, unzipLocation, templateId); + } catch (Exception ex) { + throw new QTIServiceException(ex); + } + } + + public AssessmentFacade createImportedAssessment(Document document, int qtiVersion, String unzipLocation, String templateId, String siteId) { testQtiVersion(qtiVersion); try { AuthoringHelper helper = new AuthoringHelper(qtiVersion); - return helper.createImportedAssessment(document, unzipLocation, templateId); + return helper.createImportedAssessment(document, unzipLocation, templateId, siteId); } catch (Exception ex) { throw new QTIServiceException(ex); } Index: samigo-qti/src/java/org/sakaiproject/tool/assessment/qti/helper/AuthoringHelper.java =================================================================== --- samigo-qti/src/java/org/sakaiproject/tool/assessment/qti/helper/AuthoringHelper.java (revision 399) +++ samigo-qti/src/java/org/sakaiproject/tool/assessment/qti/helper/AuthoringHelper.java (revision 400) @@ -473,6 +473,11 @@ */ public AssessmentFacade createImportedAssessment(Document document, String unzipLocation, String templateId) { + return createImportedAssessment(document, unzipLocation, templateId, null); + } + + public AssessmentFacade createImportedAssessment(Document document, String unzipLocation, String templateId, String siteId) + { AssessmentFacade assessment = null; AssessmentService assessmentService = new AssessmentService(); @@ -490,7 +495,7 @@ String description = XmlUtil.processFormattedText(log, (String) assessmentMap.get("description")); String title = XmlUtil.processFormattedText(log, (String) assessmentMap.get("title")); assessment = assessmentService.createAssessmentWithoutDefaultSection( - title, exHelper.makeFCKAttachment(description), null, templateId); + title, exHelper.makeFCKAttachment(description), null, templateId, siteId); // now make sure we have a unique name for the assessment String baseId = assessment.getAssessmentBaseId().toString();