98 lines
3.7 KiB
CoffeeScript
98 lines
3.7 KiB
CoffeeScript
class StudentNotes
|
|
_debug: false
|
|
|
|
targets: [] # holds elements with annotator() instances
|
|
|
|
# Adds a listener for "notes" events that may bubble up from descendants.
|
|
constructor: ($, el) ->
|
|
console.log 'student notes init', arguments, this if @_debug
|
|
|
|
if not $(el).data('notes-instance')
|
|
events = 'notes:init': @onInitNotes
|
|
$(el).delegate('*', events)
|
|
$(el).data('notes-instance', @)
|
|
|
|
# Initializes annotations on a container element in response to an init event.
|
|
onInitNotes: (event, uri=null, storage_url=null, token=null) =>
|
|
event.stopPropagation()
|
|
|
|
found = @targets.some (target) -> target is event.target
|
|
|
|
# Get uri
|
|
unless uri.substring(0, 4) is "http"
|
|
uri_root = (window.location.href.split(/#|\?/).shift() or "")
|
|
uri = uri_root + uri.substring(1)
|
|
parts = window.location.href.split("/")
|
|
courseid = parts[4] + "/" + parts[5] + "/" + parts[6]
|
|
|
|
# Get id and name user
|
|
idUdiv = $(event.target).parent().find(".idU")[0]
|
|
idDUdiv = $(event.target).parent().find(".idDU")[0]
|
|
idUdiv = (if typeof idUdiv isnt "undefined" then idUdiv.innerHTML else "")
|
|
idDUdiv = (if typeof idDUdiv isnt "undefined" then idDUdiv.innerHTML else "")
|
|
|
|
options =
|
|
optionsAnnotator:
|
|
permissions:
|
|
user:
|
|
id: idUdiv
|
|
name: idDUdiv
|
|
|
|
userString: (user) ->
|
|
return user.name if user and user.name
|
|
user
|
|
|
|
userId: (user) ->
|
|
return user.id if user and user.id
|
|
user
|
|
auth:
|
|
token: token
|
|
|
|
store:
|
|
prefix: storage_url
|
|
|
|
annotationData: uri:uri
|
|
|
|
urls:
|
|
create: '/create',
|
|
read: '/read/:id',
|
|
update: '/update/:id',
|
|
destroy: '/delete/:id',
|
|
search: '/search'
|
|
|
|
loadFromSearch:
|
|
limit:10000
|
|
uri: uri
|
|
user:idUdiv
|
|
|
|
optionsVideoJS: techOrder: ["html5","flash","youtube"],customControlsOnMobile: true
|
|
optionsOVA:
|
|
posBigNew:'none'
|
|
NumAnnotations:20
|
|
optionsRichText:
|
|
tinymce:
|
|
selector: "li.annotator-item textarea"
|
|
plugins: "media image insertdatetime link code"
|
|
menubar: false
|
|
toolbar_items_size: 'small'
|
|
extended_valid_elements : "iframe[src|frameborder|style|scrolling|class|width|height|name|align|id]"
|
|
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image media rubric | code "
|
|
|
|
if found
|
|
$(event.target).annotator "destroy" unless Annotator._instances.length is 0
|
|
ova = new OpenVideoAnnotation.Annotator($(event.target), options)
|
|
else
|
|
if event.target.id is "annotator-viewer"
|
|
ova = new OpenVideoAnnotation.Annotator($(event.target), options)
|
|
else
|
|
@targets.push(event.target)
|
|
|
|
# Enable notes by default on the document root.
|
|
# To initialize annotations on a container element in the document:
|
|
#
|
|
# $('#myElement').trigger('notes:init');
|
|
#
|
|
# Comment this line to disable notes.
|
|
|
|
$(document).ready ($) -> new StudentNotes $, @
|