A reference implementation of the ContentReview Service exists that submits the content to Turnitin. The implementation makes use of a queue strategy. Submitted items are appended to a queue, and a separate process submits the content to Turnitin and retrieves the report scores.
The implementation can be found here: https://source.sakaiproject.org/contrib/turnitin/
What it does
The Turnitin implementation of the content-review service is exposed in the Assignments tool in the Add/Revise Assignment page, Assignment submissions list page, and student assignment submission view page. Where Turnitin is selected for the Assignment, student submissions are automatically sent to Turnitin, and result scores retrieved. A link is displayed for each submission for instructors to view the corresponding Turnitin report. See Screenshots of Turnitin in Sakai.
Bugs, Feature Requests and Support
Please file bugs or feature requests in the Turnitin category in JIRA: http://jira.sakaiproject.org/jira/browse/TII
The Turnitin integration for Sakai is currently supported by UCT. If you have questions about how to deploy or use it, contact David Horwitz or Stephen Marquard, or join the sakai-dev site on http://collab.sakaiproject.org and email the sakai-dev@collab.sakaiproject.org mailing list.
Building the Implementation
Sakai trunk:
- Checkout either a tag or the trunk code of the TII implementation into the content-review folder in your source tree. Build using maven as usual.
Sakai 2.4.0 or 2-4-x branch:
- Replace the assignments project with this branch: https://source.sakaiproject.org/svn/assignment/branches/post-2-4/
- Checkout either a tag or the 2-4-x branch code of the TII implementation into the content-review folder in your source tree. Build using maven as usual. If you are using externals for your source tree, you can use:
assignment https://source.sakaiproject.org/svn/assignment/branches/post-2-4/ turnitin https://source.sakaiproject.org/contrib/turnitin/branches/sakai_2-4-x
Sakai 2-3-x branch:
NOTE: If you are using 2.5 code building with Maven2 you should skip this section.
- Replace the assignments project with this 2-3-x assignments branch: http://source.cet.uct.ac.za/svn/sakai/assignment-mod/
- Checkout either a tag or the 2-4-x branch code of the TII implementation into the content-review folder in your source tree. Build using maven as usual.
Configuration
3. Setting up the queue jobs
- The implementation requires the configuration of 2 jobs in the jobsheduler. In Sakai 2.5 and later this is done for you.
- Copy the 2 java files (ContentReviewQueue.java and ContentReviewReports.java) in the jobs folder to jobscheduler/scheduler-component-shared/src/java/org/sakaiproject/component/app/scheduler/jobs/
- Add the following code to jobscheduler/scheduler-component/src/webapp/WEB-INF/components.xml:
<!-- Content review Queue Process --> <bean id="TiiContentReviewQueue" class="org.sakaiproject.component.app.scheduler.jobs.ContentReviewQueue"> <property name="contentReviewService"> <ref bean="org.sakaiproject.contentreview.service.ContentReviewService"/> </property> </bean> <bean id="org.sakaiproject.api.app.scheduler.JobBeanWrapper.schedulerContentReviewQueue" class="org.sakaiproject.component.app.scheduler.jobs.SpringJobBeanWrapper" singleton="true" init-method="init"> <property name="beanId"> <value>TiiContentReviewQueue</value> </property> <property name="jobName"> <value>Process Content Review Queue</value> </property> <property name="schedulerManager"> <ref bean="org.sakaiproject.api.app.scheduler.SchedulerManager" /> </property> </bean> <bean id="TiiContentReviewReports" class="org.sakaiproject.component.app.scheduler.jobs.ContentReviewReports"> <property name="contentReviewService"> <ref bean="org.sakaiproject.contentreview.service.ContentReviewService"/> </property> </bean> <bean id="org.sakaiproject.api.app.scheduler.JobBeanWrapper.schedulerContentReviewReports" class="org.sakaiproject.component.app.scheduler.jobs.SpringJobBeanWrapper" singleton="true" init-method="init"> <property name="beanId"> <value>TiiContentReviewReports</value> </property> <property name="jobName"> <value>Process Content Review Reports</value> </property> <property name="schedulerManager"> <ref bean="org.sakaiproject.api.app.scheduler.SchedulerManager" /> </property> </bean>
- Add the following dependency to jobscheduler/scheduler-component-shared/project.xml
<dependency> <groupId>sakaiproject</groupId> <artifactId>sakai-contentreview-service-api</artifactId> <version>${sakai.version}</version> </dependency>
- rebuild and deploy the jobscheduler project and restart your sakai
- You may need to add the jobscheduler tool to your admin workspace
- in the jobscheduler tool click on "new job"
- Select "Process Content Review Queue" from the dropdown list
- Give it a name in the text box (can be anything)
- click post
- select the triggers link next to the job you just created
- Create a new trigger. We sugest you set the job to run at five minute intervals which can be done with the following definition
0 0/5 * * * ?
- repeat these steps to create a job and triggere for the reports proccess "Process Content Review Reports"
Setting up the Turnitin API
You need to set up your Turnitin account to make use of the API.
- Contact your Turnitin representative to set your shared secret key - you will need to specify what the key is set to. This is needed for the turnitin.secretKey cofiguration paramater
- Login to Turnitin as your primary Administrator
- Next to your institution's name make a note of your account Id (this should be a number). You will need this for the turnitin.aid configuration variable
- click the green update button next to your institution name
- at the bottom of the modify screen click "add/modify API Integration information"
- You will need to specify an IP address or range of IP addresses that can connect. Set this to a value that includes your Sakai servers
- The callback URL is not used so can be set to any value.
- once you have saved your settings you need to create a new sub account - this will be used by Sakai and will prevent collisions with other users from your institution. Once you have set up the sub account, make a note of its numeric id. You will need this for the turnitin.said configuration variable.
A number of sakai.properties settings are necessary to configure the service. These are mostly specific to your institution's Turnitin account.
turnitin.aid
The account ID of your institutions primary TurnitIn account
turnitin.said
The sub account ID to which Sakai will submit content
turnitin.secretKey
The TurnitIn API password for your Insititution. If you don't have one speak to your TurnitIn rep to have one set
turnitin.apiURL (Optional)
Set this if you wish to override the default API URL. Institutions in the UK may have to set this to "https://submit.ac.uk/api.asp?"
turnitin.defaultInstructorEmail
The email of a default instructoir for the API to use
turnitin.defaultInstructorFName
A name for that instructor
turnitin.defaultInstructorLName
A last name for the instructor
turnitin.defaultInstructorPassword
A password for that instructor
turnitin.defaultClassPassword
The default join password set for classes the implementation sets up
turnitin.defaultInstructorId
the Sakai userId of the default instructor
turnitin.keystore_name (Deprecated)
The location of the Keystore containing the Turnitin certificates. As this is set as a system property it should be the same as any other keystores set in sakai.properties. We do not suggest you use this as it will overide the sytem keystore setting.
turnitin.keystore_password (Deprecated)
The keystore password. As this is set as a system property it should be the same as any other keystores set in sakai.properties. We do not suggest you use this as it will overide the sytem keystore setting.
turnitin.defaultAssignmentName
A default assignment name to use if none is specified
turnitin.defaultAssignId
The default Assignment Id