Gitlab CSE Unil
Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
M. Chardon
moodle-assignfeedback_editpdfplus
Commits
c57b7021
Commit
c57b7021
authored
May 31, 2017
by
M. Chardon
Browse files
modif affichage global : utilisation boostrap et fa
modif css pour le centrage des fenêtres en mode étudiant
parent
9dafe8e4
Changes
11
Hide whitespace changes
Inline
Side-by-side
ajax.php
View file @
c57b7021
...
...
@@ -140,10 +140,6 @@ if ($action === 'pollconversions') {
$page
=
json_decode
(
$pagejson
);
$index
=
required_param
(
'index'
,
PARAM_INT
);
/* $added = page_editor::set_comments($grade->id, $index, $page->comments);
if ($added != count($page->comments)) {
array_push($response->errors, get_string('couldnotsavepage', 'assignfeedback_editpdfplus', $index + 1));
} */
$added
=
page_editor
::
set_annotations
(
$grade
->
id
,
$index
,
$page
->
annotations
);
if
(
$added
!=
count
(
$page
->
annotations
))
{
array_push
(
$response
->
errors
,
get_string
(
'couldnotsavepage'
,
'assignfeedback_editpdfplus'
,
$index
+
1
));
...
...
amd/src/editplus.js
0 → 100644
View file @
c57b7021
// Standard license block omitted.
/*
* @package assignfeedback_editpdfplus
* @copyright 2015 Someone cool
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
/**
* @module mod_assignfeedback_editpdfplus/editplus
*/
define
([
'
jquery
'
],
function
(
$
)
{
/**
* @constructor
* @alias module:mod_assignfeedback_editpdfplus/editplus
*/
var
greeting
=
function
()
{
/** @access private */
//var privateThoughts = 'I like the colour blue';
$
(
"
#id
"
).
val
();
/** @access public */
this
.
publicThoughts
=
'
I like the colour orange
'
;
};
/**
* A formal greeting.
* @access public
* @return {string}
*/
greeting
.
prototype
.
formal
=
function
()
{
return
'
How do you do?
'
;
};
/**
* An informal greeting.
* @access public
* @return {string}
*/
greeting
.
prototype
.
informal
=
function
()
{
return
'
Wassup!
'
;
};
return
{
init
:
function
()
{
alert
(
"
hello
"
);
}
};
});
\ No newline at end of file
classes/renderer.php
View file @
c57b7021
...
...
@@ -296,9 +296,13 @@ class assignfeedback_editpdfplus_renderer extends plugin_renderer_base {
$toolbaraxis
.
=
"</div><div style='display:inline;margin-left:5px;text-align:left;'>"
;
}
$toolbaraxis
.
=
"</div></div>"
;
$questionchoice
=
html_writer
::
select
([
get_string
(
'question_select'
,
'assignfeedback_editpdfplus'
),
get_string
(
'question_select_without'
,
'assignfeedback_editpdfplus'
),
get_string
(
'question_select_with'
,
'assignfeedback_editpdfplus'
)],
'questionselection'
,
0
,
FALSE
);
$axischoice
=
html_writer
::
select
([
get_string
(
'statut_select'
,
'assignfeedback_editpdfplus'
),
get_string
(
'statut_select_nc'
,
'assignfeedback_editpdfplus'
),
get_string
(
'statut_select_ok'
,
'assignfeedback_editpdfplus'
),
get_string
(
'statut_select_ko'
,
'assignfeedback_editpdfplus'
)],
'statutselection'
,
0
,
FALSE
);
$validatebutton
=
html_writer
::
tag
(
'button'
,
get_string
(
'send_pdf_update'
,
'assignfeedback_editpdfplus'
),
array
(
'class'
=>
'button'
,
'id'
=>
'student_valide_button'
));
$questionchoice
=
html_writer
::
select
(
[
get_string
(
'question_select'
,
'assignfeedback_editpdfplus'
),
get_string
(
'question_select_without'
,
'assignfeedback_editpdfplus'
),
get_string
(
'question_select_with'
,
'assignfeedback_editpdfplus'
)],
'questionselection'
,
0
,
FALSE
,
array
(
'class'
=>
'form-control'
));
$axischoice
=
html_writer
::
select
(
[
get_string
(
'statut_select'
,
'assignfeedback_editpdfplus'
),
get_string
(
'statut_select_nc'
,
'assignfeedback_editpdfplus'
),
get_string
(
'statut_select_ok'
,
'assignfeedback_editpdfplus'
),
get_string
(
'statut_select_ko'
,
'assignfeedback_editpdfplus'
)],
'statutselection'
,
0
,
FALSE
,
array
(
'class'
=>
'form-control'
));
$validatebutton
=
html_writer
::
tag
(
'button'
,
get_string
(
'send_pdf_update'
,
'assignfeedback_editpdfplus'
),
array
(
'class'
=>
'button btn btn-default'
,
'id'
=>
'student_valide_button'
));
$toolbaraxis
.
=
html_writer
::
div
(
$validatebutton
,
'toolbar '
,
array
(
'role'
=>
'toolbar'
));
$toolbaraxis
.
=
html_writer
::
div
(
$axischoice
,
'toolbar '
,
array
(
'role'
=>
'toolbar'
));
$toolbaraxis
.
=
html_writer
::
div
(
$questionchoice
,
'toolbar '
,
array
(
'role'
=>
'toolbar'
));
...
...
lib.php
View file @
c57b7021
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
...
...
@@ -21,7 +22,6 @@
* @copyright 2012 Davo Smith
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined
(
'MOODLE_INTERNAL'
)
||
die
();
/**
...
...
@@ -36,32 +36,26 @@ defined('MOODLE_INTERNAL') || die();
* @param array $options - List of options affecting file serving.
* @return bool false if file not found, does not return if found - just send the file
*/
function
assignfeedback_editpdfplus_pluginfile
(
$course
,
$cm
,
context
$context
,
$filearea
,
$args
,
$forcedownload
,
array
$options
=
array
())
{
function
assignfeedback_editpdfplus_pluginfile
(
$course
,
$cm
,
context
$context
,
$filearea
,
$args
,
$forcedownload
,
array
$options
=
array
())
{
global
$USER
,
$DB
,
$CFG
;
if
(
$context
->
contextlevel
==
CONTEXT_MODULE
)
{
require_login
(
$course
,
false
,
$cm
);
$itemid
=
(
int
)
array_shift
(
$args
);
$itemid
=
(
int
)
array_shift
(
$args
);
if
(
!
$assign
=
$DB
->
get_record
(
'assign'
,
array
(
'id'
=>
$cm
->
instance
)))
{
if
(
!
$assign
=
$DB
->
get_record
(
'assign'
,
array
(
'id'
=>
$cm
->
instance
)))
{
return
false
;
}
$record
=
$DB
->
get_record
(
'assign_grades'
,
array
(
'id'
=>
$itemid
),
'userid,assignment'
,
MUST_EXIST
);
$record
=
$DB
->
get_record
(
'assign_grades'
,
array
(
'id'
=>
$itemid
),
'userid,assignment'
,
MUST_EXIST
);
$userid
=
$record
->
userid
;
if
(
$assign
->
id
!=
$record
->
assignment
)
{
return
false
;
}
// Check is users feedback or has grading permission.
if
(
$USER
->
id
!=
$userid
and
!
has_capability
(
'mod/assign:grade'
,
$context
))
{
if
(
$USER
->
id
!=
$userid
and
!
has_capability
(
'mod/assign:grade'
,
$context
))
{
return
false
;
}
...
...
@@ -74,7 +68,30 @@ function assignfeedback_editpdfplus_pluginfile($course,
return
false
;
}
// Download MUST be forced - security!
send_stored_file
(
$file
,
0
,
0
,
true
,
$options
);
// Check if we want to retrieve the stamps.
send_stored_file
(
$file
,
0
,
0
,
true
,
$options
);
// Check if we want to retrieve the stamps.
}
}
/**
*
* @param navigation_node $navigation
* @param stdClass $course
* @param context_course $context
*/
function
assignfeedback_editpdfplus_extend_navigation_course
(
navigation_node
$navigation
,
stdClass
$course
,
context_course
$context
)
{
global
$PAGE
;
$url
=
new
moodle_url
(
'/admin/tool/devcourse/index.php'
);
$devcoursenode
=
navigation_node
::
create
(
'Development course'
,
$url
,
navigation_node
::
TYPE_CUSTOM
,
'Dev course'
,
'devcourse'
);
$navigation
->
add_node
(
$devcoursenode
);
/* $coursenode = $PAGE->navigation->find($courseid, navigation_node::TYPE_COURSE);
$thingnode = $coursenode->add(get_string('Name of thing'), new moodle_url('/a/link/if/you/want/one.php'));
$thingnode->make_active(); */
}
/*function assignfeedback_editpdfplus_extend_navigation_course(navigation_node $parentnode, $course, $context) {
$url = new moodle_url('/course/view.php', array('courseid' => $course->id));
$settingsnode = navigation_node::create('test ND navigation node', $url,
navigation_node::TYPE_SETTING, null, null, new pix_icon('i/settings', ''));
$parentnode->add_node($settingsnode);
}*/
locallib.php
View file @
c57b7021
...
...
@@ -246,6 +246,9 @@ class assign_feedback_editpdfplus extends assign_feedback_plugin {
*/
public
function
view
(
stdClass
$grade
)
{
global
$PAGE
;
//$PAGE->requires->js_call_amd('assignfeedback_editpdfplus/editplus', 'init');
$html
=
''
;
// Show a link to download the pdf.
if
(
page_editor
::
has_annotations_or_comments
(
$grade
->
id
,
false
))
{
...
...
styles.css
View file @
c57b7021
...
...
@@ -27,15 +27,19 @@
}
.assignfeedback_editpdfplus_widget
.drawingregion
{
border
:
1px
solid
#ccc
;
left
:
1em
;
left
:
0.
1em
;
right
:
1em
;
top
:
52px
;
/*
top: 52px;
*/
bottom
:
0
;
position
:
absolute
;
overflow
:
auto
;
background-color
:
#ccc
;
}
.assignfeedback_editpdfplus_widget
[
data-region
=
"review-panel-content"
]
.drawingregion
{
top
:
52px
;
}
.assignfeedback_editpdfplus_widget
{
user-select
:
none
;
-moz-user-select
:
none
;
...
...
version.php
View file @
c57b7021
...
...
@@ -24,7 +24,7 @@
defined
(
'MOODLE_INTERNAL'
)
||
die
();
$plugin
->
version
=
201705
16
00
;
$plugin
->
version
=
201705
29
00
;
$plugin
->
requires
=
2017050500
;
// Requires this Moodle version.
$plugin
->
dependencies
=
array
(
'assignfeedback_editpdf'
=>
2017050500
...
...
yui/build/moodle-assignfeedback_editpdfplus-editor/moodle-assignfeedback_editpdfplus-editor-debug.js
View file @
c57b7021
...
...
@@ -1105,7 +1105,7 @@ Y.extend(ANNOTATION, Y.Base, {
var
textarea
=
Y
.
Node
.
create
(
"
<br/><textarea id='
"
+
this
.
divcartridge
+
"
_studentanswer' type='text' value=
\"
"
+
rep
+
"
\"
>
"
+
rep
+
"
\"
class='form-control'
>
"
+
rep
+
"
</textarea>
"
);
rep
=
this
.
studentanswer
;
...
...
@@ -1180,14 +1180,16 @@ Y.extend(ANNOTATION, Y.Base, {
+
'
</label>
'
;
var
buttonstatus2
=
'
<label class="radio-inline"><input type="radio" name="
'
+
this
.
divcartridge
+
'
_status" value=1 ><img style="width:15px;" src=
\'
'
+
M
.
util
.
image_url
(
'
tick
'
,
'
assignfeedback_editpdfplus
'
)
+
'
\'
/></label>
'
;
+
'
_status" value=1 >
'
//+ M.util.image_url('tick', 'assignfeedback_editpdfplus')
+
'
<i style="color:green;" class="fa fa-check" aria-hidden="true"></i>
'
+
'
</label>
'
;
var
buttonstatus3
=
'
<label class="radio-inline"><input type="radio" name="
'
+
this
.
divcartridge
+
'
_status" value=2 ><img style="width:15px;" src=
\'
'
+
M
.
util
.
image_url
(
'
cross
'
,
'
assignfeedback_editpdfplus
'
)
+
'
\'
/></label>
'
;
+
'
_status" value=2 >
'
//+ M.util.image_url('cross', 'assignfeedback_editpdfplus')
+
'
<i style="color:red;" class="fa fa-times" aria-hidden="true"></i>
'
+
'
</label>
'
;
var
buttonstatus1display
=
Y
.
Node
.
create
(
buttonstatus1
);
var
buttonstatus2display
=
Y
.
Node
.
create
(
buttonstatus2
);
var
buttonstatus3display
=
Y
.
Node
.
create
(
buttonstatus3
);
...
...
yui/build/moodle-assignfeedback_editpdfplus-editor/moodle-assignfeedback_editpdfplus-editor-min.js
View file @
c57b7021
YUI
.
add
(
"
moodle-assignfeedback_editpdfplus-editor
"
,
function
(
e
,
t
){
var
n
=
M
.
cfg
.
wwwroot
+
"
/mod/assign/feedback/editpdfplus/ajax.php
"
,
r
=
M
.
cfg
.
wwwroot
+
"
/mod/assign/feedback/editpdfplus/ajax_progress.php
"
,
i
=
{
DIALOGUE
:
"
assignfeedback_editpdfplus_widget
"
},
s
=
{
PREVIOUSBUTTON
:
"
.navigate-previous-button
"
,
NEXTBUTTON
:
"
.navigate-next-button
"
,
PAGESELECT
:
"
.navigate-page-select
"
,
LOADINGICON
:
"
.loading
"
,
PROGRESSBARCONTAINER
:
"
.progress-info.progress-striped
"
,
DRAWINGREGION
:
"
.drawingregion
"
,
DRAWINGCANVAS
:
"
.drawingcanvas
"
,
SAVE
:
"
.savebutton
"
,
COMMENTCOLOURBUTTON
:
"
.commentcolourbutton
"
,
COMMENTMENU
:
"
.commentdrawable a
"
,
ANNOTATIONCOLOURBUTTON
:
"
.annotationcolourbutton
"
,
DELETEANNOTATIONBUTTON
:
"
.deleteannotationbutton
"
,
UNSAVEDCHANGESDIV
:
"
.assignfeedback_editpdfplus_unsavedchanges
"
,
UNSAVEDCHANGESINPUT
:
'
input[name="assignfeedback_editpdfplus_haschanges"]
'
,
UNSAVEDCHANGESDIVEDIT
:
"
.assignfeedback_editpdfplus_unsavedchanges_edit
"
,
STAMPSBUTTON
:
"
.currentstampbutton
"
,
DIALOGUE
:
"
.
"
+
i
.
DIALOGUE
,
CUSTOMTOOLBARID
:
"
#toolbaraxis
"
,
CUSTOMTOOLBARS
:
"
.customtoolbar
"
,
AXISCUSTOMTOOLBAR
:
"
.menuaxisselection
"
,
CUSTOMTOOLBARBUTTONS
:
"
.costumtoolbarbutton
"
,
STATUTSELECTOR
:
"
#menustatutselection
"
,
QUESTIONSELECTOR
:
"
#menuquestionselection
"
,
STUDENTVALIDATION
:
"
#student_valide_button
"
},
o
=
"
rgba(200, 200, 255, 0.9)
"
,
u
=
"
rgba(200, 200, 255, 0.5)
"
,
a
=
{
white
:
"
rgb(255,255,255)
"
,
yellowlemon
:
"
rgb(255,255,0)
"
,
yellow
:
"
rgb(255,207,53)
"
,
red
:
"
rgb(239,69,64)
"
,
green
:
"
rgb(152,202,62)
"
,
blue
:
"
rgb(0,0,255)
"
,
black
:
"
rgb(51,51,51)
"
},
f
=
300
,
l
=
{
pen
:
"
.penbutton
"
,
line
:
"
.linebutton
"
,
rectangle
:
"
.rectanglebutton
"
,
oval
:
"
.ovalbutton
"
,
select
:
"
.selectbutton
"
,
drag
:
"
.dragbutton
"
,
highlight
:
"
.highlightbutton
"
},
c
=
{
HIGHLIGHTPLUS
:
1
,
LINEPLUS
:
2
,
STAMPPLUS
:
3
,
FRAME
:
4
,
VERTICALLINE
:
5
,
STAMPCOMMENT
:
6
,
COMMENTPLUS
:
7
,
PEN
:
8
,
LINE
:
9
,
RECTANGLE
:
10
,
OVAL
:
11
,
HIGHLIGHT
:
12
},
h
=
{
HIGHLIGHTPLUS
:
"
highlightplus
"
,
LINEPLUS
:
"
lineplus
"
,
STAMPPLUS
:
"
stampplus
"
,
FRAME
:
"
frame
"
,
VERTICALLINE
:
"
verticalline
"
,
STAMPCOMMENT
:
"
stampcomment
"
,
COMMENTPLUS
:
"
commentplus
"
,
PEN
:
"
pen
"
,
LINE
:
"
line
"
,
RECTANGLE
:
"
rectangle
"
,
OVAL
:
"
oval
"
,
HIGHLIGHT
:
"
highlight
"
},
p
=
2
,
d
=
function
(
e
,
t
){
this
.
x
=
parseInt
(
e
,
10
),
this
.
y
=
parseInt
(
t
,
10
),
this
.
clip
=
function
(
e
){
return
this
.
x
<
e
.
x
&&
(
this
.
x
=
e
.
x
),
this
.
x
>
e
.
x
+
e
.
width
&&
(
this
.
x
=
e
.
x
+
e
.
width
),
this
.
y
<
e
.
y
&&
(
this
.
y
=
e
.
y
),
this
.
y
>
e
.
y
+
e
.
height
&&
(
this
.
y
=
e
.
y
+
e
.
height
),
this
}};
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
point
=
d
;
var
v
=
function
(
e
,
t
,
n
,
r
){
this
.
x
=
e
,
this
.
y
=
t
,
this
.
width
=
n
,
this
.
height
=
r
,
this
.
bound
=
function
(
e
){
var
t
=
0
,
n
=
0
,
r
=
0
,
i
=
0
,
s
=
0
,
o
;
for
(
s
=
0
;
s
<
e
.
length
;
s
++
){
o
=
e
[
s
];
if
(
o
.
x
<
t
||
s
===
0
)
t
=
o
.
x
;
if
(
o
.
x
>
n
||
s
===
0
)
n
=
o
.
x
;
if
(
o
.
y
<
r
||
s
===
0
)
r
=
o
.
y
;
if
(
o
.
y
>
i
||
s
===
0
)
i
=
o
.
y
}
return
this
.
x
=
t
,
this
.
y
=
r
,
this
.
width
=
n
-
t
,
this
.
height
=
i
-
r
,
this
},
this
.
has_min_width
=
function
(){
return
this
.
width
>=
5
},
this
.
has_min_height
=
function
(){
return
this
.
height
>=
5
},
this
.
set_min_width
=
function
(){
this
.
width
=
5
},
this
.
set_min_height
=
function
(){
this
.
height
=
5
}};
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
rect
=
v
;
var
m
=
function
(){
this
.
start
=!
1
,
this
.
end
=!
1
,
this
.
starttime
=
0
,
this
.
annotationstart
=!
1
,
this
.
tool
=
"
drag
"
,
this
.
commentcolour
=
"
yellow
"
,
this
.
annotationcolour
=
"
red
"
,
this
.
stamp
=
""
,
this
.
path
=
[]};
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
edit
=
m
;
var
g
=
function
(
e
){
this
.
editor
=
e
,
this
.
shapes
=
[],
this
.
nodes
=
[],
this
.
erase
=
function
(){
if
(
this
.
shapes
)
while
(
this
.
shapes
.
length
>
0
)
this
.
editor
.
graphic
.
removeShape
(
this
.
shapes
.
pop
());
if
(
this
.
nodes
)
while
(
this
.
nodes
.
length
>
0
)
this
.
nodes
.
pop
().
remove
()},
this
.
scroll_update
=
function
(
e
,
t
){
var
n
,
r
,
i
;
for
(
n
=
0
;
n
<
this
.
nodes
.
length
;
n
++
)
r
=
this
.
nodes
[
n
].
getData
(
"
x
"
),
i
=
this
.
nodes
[
n
].
getData
(
"
y
"
),
r
!==
undefined
&&
i
!==
undefined
&&
(
this
.
nodes
[
n
].
setX
(
parseInt
(
r
,
10
)
-
e
),
this
.
nodes
[
n
].
setY
(
parseInt
(
i
,
10
)
-
t
))},
this
.
store_position
=
function
(
e
,
t
,
n
){
var
r
,
i
,
o
;
r
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGREGION
),
i
=
parseInt
(
r
.
get
(
"
scrollLeft
"
),
10
),
o
=
parseInt
(
r
.
get
(
"
scrollTop
"
),
10
),
e
.
setData
(
"
x
"
,
t
+
i
),
e
.
setData
(
"
y
"
,
n
+
o
)}};
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
drawable
=
g
;
var
y
=
function
(
e
){
y
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
y
.
NAME
=
"
annotation
"
,
y
.
ATTRS
=
{},
e
.
extend
(
y
,
e
.
Base
,{
editor
:
null
,
gradeid
:
0
,
pageno
:
0
,
x
:
0
,
y
:
0
,
endx
:
0
,
endy
:
0
,
path
:
""
,
toolid
:
0
,
colour
:
"
red
"
,
drawable
:
!
1
,
tooltype
:
null
,
tooltypefamille
:
null
,
divcartridge
:
""
,
textannot
:
""
,
displaylock
:
1
,
displayrotation
:
0
,
borderstyle
:
""
,
parent_annot
:
0
,
parent_annot_element
:
null
,
id
:
0
,
shape_id
:
""
,
cartridgex
:
0
,
cartridgey
:
0
,
answerrequested
:
0
,
studentstatus
:
0
,
studentanswer
:
""
,
initializer
:
function
(
e
){
e
.
parent_annot_element
?(
this
.
editor
=
e
.
parent_annot_element
.
editor
||
null
,
this
.
gradeid
=
parseInt
(
e
.
parent_annot_element
.
gradeid
,
10
)
||
0
,
this
.
pageno
=
parseInt
(
e
.
parent_annot_element
.
pageno
,
10
)
||
0
,
this
.
cartridgex
=
parseInt
(
e
.
parent_annot_element
.
cartridgex
,
10
)
||
0
,
this
.
cartridgey
=
parseInt
(
e
.
parent_annot_element
.
cartridgey
,
10
)
||
0
,
this
.
colour
=
e
.
parent_annot_element
.
colour
||
"
red
"
,
this
.
tooltype
=
e
.
tooltype
,
this
.
textannot
=
e
.
parent_annot_element
.
textannot
,
this
.
displaylock
=
parseInt
(
e
.
parent_annot_element
.
displaylock
,
10
),
this
.
displayrotation
=
e
.
parent_annot_element
.
displayrotation
,
this
.
borderstyle
=
e
.
parent_annot_element
.
borderstyle
||
"
solid
"
,
this
.
parent_annot
=
parseInt
(
e
.
parent_annot_element
.
id
,
10
),
this
.
studentstatus
=
parseInt
(
e
.
parent_annot_element
.
studentstatus
,
10
)
||
0
,
this
.
parent_annot_element
=
e
.
parent_annot_element
):(
this
.
editor
=
e
.
editor
||
null
,
this
.
gradeid
=
parseInt
(
e
.
gradeid
,
10
)
||
0
,
this
.
pageno
=
parseInt
(
e
.
pageno
,
10
)
||
0
,
this
.
cartridgex
=
parseInt
(
e
.
cartridgex
,
10
)
||
0
,
this
.
cartridgey
=
parseInt
(
e
.
cartridgey
,
10
)
||
0
,
this
.
colour
=
e
.
colour
||
"
red
"
,
this
.
tooltype
=
e
.
tooltype
,
this
.
textannot
=
e
.
textannot
,
this
.
displaylock
=
parseInt
(
e
.
displaylock
,
10
),
this
.
displayrotation
=
e
.
displayrotation
,
this
.
borderstyle
=
e
.
borderstyle
||
"
solid
"
,
this
.
parent_annot
=
parseInt
(
e
.
parent_annot
,
10
),
this
.
answerrequested
=
parseInt
(
e
.
answerrequested
,
10
)
||
0
,
this
.
studentstatus
=
parseInt
(
e
.
studentstatus
,
10
)
||
0
,
this
.
studentanswer
=
e
.
studentanswer
),
this
.
id
=
e
.
id
,
this
.
x
=
parseInt
(
e
.
x
,
10
)
||
0
,
this
.
y
=
parseInt
(
e
.
y
,
10
)
||
0
,
this
.
endx
=
parseInt
(
e
.
endx
,
10
)
||
0
,
this
.
endy
=
parseInt
(
e
.
endy
,
10
)
||
0
,
this
.
path
=
e
.
path
||
""
,
this
.
toolid
=
e
.
toolid
||
this
.
editor
.
get_dialogue_element
(
c
.
RECTANGLE
),
this
.
drawable
=!
1
,
this
.
tooltypefamille
=
this
.
editor
.
typetools
[
this
.
tooltype
.
type
]},
clean
:
function
(){
return
this
.
parent_annot_element
?{
gradeid
:
this
.
gradeid
,
x
:
parseInt
(
this
.
x
,
10
),
y
:
parseInt
(
this
.
y
,
10
),
endx
:
parseInt
(
this
.
endx
,
10
),
endy
:
parseInt
(
this
.
endy
,
10
),
cartridgex
:
parseInt
(
this
.
cartridgex
,
10
),
cartridgey
:
parseInt
(
this
.
cartridgey
,
10
),
toolid
:
this
.
toolid
,
path
:
this
.
path
,
pageno
:
this
.
pageno
,
colour
:
this
.
colour
,
textannot
:
this
.
textannot
,
displaylock
:
parseInt
(
this
.
displaylock
,
10
),
displayrotation
:
parseInt
(
this
.
displayrotation
,
10
),
borderstyle
:
this
.
borderstyle
,
parent_annot
:
parseInt
(
this
.
parent_annot
,
10
),
divcartridge
:
this
.
divcartridge
,
parent_annot_div
:
this
.
parent_annot_element
.
divcartridge
}:{
gradeid
:
this
.
gradeid
,
x
:
parseInt
(
this
.
x
,
10
),
y
:
parseInt
(
this
.
y
,
10
),
endx
:
parseInt
(
this
.
endx
,
10
),
endy
:
parseInt
(
this
.
endy
,
10
),
cartridgex
:
parseInt
(
this
.
cartridgex
,
10
),
cartridgey
:
parseInt
(
this
.
cartridgey
,
10
),
toolid
:
this
.
toolid
,
path
:
this
.
path
,
pageno
:
this
.
pageno
,
colour
:
this
.
colour
,
textannot
:
this
.
textannot
,
displaylock
:
parseInt
(
this
.
displaylock
,
10
),
displayrotation
:
parseInt
(
this
.
displayrotation
,
10
),
borderstyle
:
this
.
borderstyle
,
parent_annot
:
parseInt
(
this
.
parent_annot
,
10
),
divcartridge
:
this
.
divcartridge
,
parent_annot_div
:
""
,
answerrequested
:
parseInt
(
this
.
answerrequested
,
10
),
studentstatus
:
parseInt
(
this
.
studentstatus
,
10
)}},
light_clean
:
function
(){
return
{
id
:
this
.
id
,
studentstatus
:
parseInt
(
this
.
studentstatus
,
10
),
studentanswer
:
this
.
studentanswer
}},
draw_highlight
:
function
(){
var
t
,
n
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGREGION
),
r
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
(),
i
;
if
(
this
.
editor
.
currentannotation
===
this
){
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
t
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
-
10
,
this
.
y
-
10
),
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
endx
+
10
,
this
.
endy
+
10
)]),
i
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Rect
,
width
:
t
.
width
,
height
:
t
.
height
,
stroke
:{
weight
:
p
,
color
:
o
},
fill
:{
color
:
u
},
x
:
t
.
x
,
y
:
t
.
y
}),
this
.
drawable
.
shapes
.
push
(
i
),
i
.
editor
=
this
.
editor
,
i
.
on
(
"
clickoutside
"
,
e
.
rbind
(
this
.
editor
.
redraw_annotation
,
this
.
editor
));
var
a
=
e
.
Node
.
create
(
'
<i class="fa fa-trash" aria-hidden="true"></i>
'
),
f
=
e
.
Node
.
create
(
'
<a href="#" role="button"></a>
'
);
a
.
setAttrs
({
alt
:
M
.
util
.
get_string
(
"
deleteannotation
"
,
"
assignfeedback_editpdfplus
"
)}),
a
.
setStyles
({
backgroundColor
:
"
white
"
}),
f
.
addClass
(
"
deleteannotationbutton
"
),
f
.
append
(
a
),
n
.
append
(
f
),
f
.
setData
(
"
annotation
"
,
this
),
f
.
setStyle
(
"
zIndex
"
,
"
200
"
),
f
.
on
(
"
click
"
,
this
.
remove
,
this
),
f
.
on
(
"
key
"
,
this
.
remove
,
"
space,enter
"
,
this
),
f
.
setX
(
r
[
0
]
+
t
.
x
+
t
.
width
-
18
),
f
.
setY
(
r
[
1
]
+
t
.
y
+
t
.
height
-
18
),
this
.
drawable
.
nodes
.
push
(
f
)}
return
this
.
drawable
},
draw
:
function
(){
return
this
.
draw_highlight
(),
this
.
drawable
},
get_color
:
function
(){
var
e
=
a
[
this
.
colour
];
return
e
?(
e
=
e
.
replace
(
"
rgb
"
,
"
rgba
"
),
e
=
e
.
replace
(
"
)
"
,
"
,0.5)
"
)):
e
=
this
.
colour
,
e
},
get_color_cartridge
:
function
(){
var
e
=
a
[
this
.
tooltype
.
cartridge_color
];
return
e
?(
e
=
e
.
replace
(
"
rgb
"
,
"
rgba
"
),
e
=
e
.
replace
(
"
)
"
,
"
,0.5)
"
)):
e
=
this
.
tooltype
.
cartridge_color
,
e
===
""
?
this
.
tooltypefamille
.
cartridge_color
:
e
},
init_div_cartridge_id
:
function
(){
var
e
=
(
new
Date
).
toJSON
().
replace
(
/:/g
,
""
).
replace
(
/
\.
/g
,
""
);
this
.
divcartridge
=
"
ct_
"
+
this
.
tooltype
.
id
+
"
_
"
+
e
},
get_div_cartridge
:
function
(
t
){
var
n
=
"
<div
"
;
n
+=
"
id='
"
+
this
.
divcartridge
+
"
'
"
,
n
+=
"
class='assignfeedback_editpdfplus_cartridge'
"
,
n
+=
"
style='border-color:
"
+
t
+
"
;'>
"
,
n
+=
"
</div>
"
;
var
r
=
e
.
Node
.
create
(
n
);
return
this
.
editor
.
get
(
"
readonly
"
)
&&
r
.
on
(
"
click
"
,
this
.
view_annot
,
this
),
r
},
get_div_cartridge_label
:
function
(
t
,
n
){
var
r
=
"
<div
"
;
r
+=
"
id='
"
+
this
.
divcartridge
+
"
_cartridge'
"
,
r
+=
"
class='assignfeedback_editpdfplus_
"
+
this
.
tooltypefamille
.
label
+
"
_cartridge'
"
,
this
.
editor
.
get
(
"
readonly
"
)
&&
this
.
get_valref
()
===
""
?
r
+=
"
style='border-right:none;padding-right:0px;color:
"
+
t
+
"
;'
"
:
r
+=
"
style='border-right-color:
"
+
t
+
"
;color:
"
+
t
+
"
;'
"
,
r
+=
"
>
"
,
r
+=
this
.
tooltype
.
cartridge
,
r
+=
"
</div>
"
;
var
i
=
e
.
Node
.
create
(
r
);
return
n
&&!
this
.
editor
.
get
(
"
readonly
"
)?(
i
.
on
(
"
mousedown
"
,
this
.
move_cartridge_begin
,
this
),
i
):
i
},
get_div_input
:
function
(
t
){
var
n
=
"
<div
"
;
n
+=
"
id='
"
+
this
.
divcartridge
+
"
_display'
"
,
n
+=
"
style='color:
"
+
t
+
"
;
"
,
this
.
editor
.
get
(
"
readonly
"
)
&&
this
.
get_valref
()
===
""
&&
(
n
+=
"
padding:0px;
"
),
n
+=
"
'></div>
"
;
var
r
=
e
.
Node
.
create
(
n
);
return
this
.
editor
.
get
(
"
readonly
"
)
||
r
.
on
(
"
click
"
,
this
.
edit_annot
,
this
),
r
},
get_div_edition
:
function
(){
var
t
=
"
<div
"
;
t
+=
"
id='
"
+
this
.
divcartridge
+
"
_edit'
"
,
t
+=
"
class='assignfeedback_editpdfplus_
"
+
this
.
tooltypefamille
.
label
+
"
_edition'
"
,
t
+=
"
style='display:none;'>
"
,
t
+=
"
<textarea id='
"
+
this
.
divcartridge
+
"
_editinput' type='text' value=
\"
"
+
this
.
get_valref
()
+
"
\"
class='form-control' style='margin-bottom:5px;' >
"
+
this
.
get_valref
()
+
"
</textarea>
"
,
t
+=
"
</div>
"
;
var
n
=
e
.
Node
.
create
(
t
),
r
=
this
.
tooltype
.
texts
;
if
(
r
&&
r
.
length
>
0
){
var
i
=
"
<div></div>
"
,
s
=
e
.
Node
.
create
(
i
),
o
=
r
.
split
(
'
","
'
);
for
(
var
u
=
0
;
u
<
o
.
length
;
u
++
){
var
a
=
"
<button class='btn btn-default' type='button' style='width:100%;font-size: x-small;'>
"
+
o
[
u
].
replace
(
'
"
'
,
""
)
+
"
</button>
"
,
f
=
e
.
Node
.
create
(
a
);
f
.
on
(
"
click
"
,
this
.
fill_input_edition
,
this
,
o
[
u
].
replace
(
'
"
'
,
""
)),
s
.
append
(
f
),
s
.
append
(
"
<br/>
"
)}
n
.
append
(
s
)}
return
n
},
get_div_visu
:
function
(
t
){
var
n
=
"
<div
"
;
n
+=
"
id='
"
+
this
.
divcartridge
+
"
_visu'
"
,
n
+=
"
class='assignfeedback_editpdfplus_
"
+
this
.
tooltypefamille
.
label
+
"
_visu'
"
,
n
+=
"
style='display:none;color:
"
+
t
+
"
;'>
"
,
n
+=
this
.
get_valref
().
replace
(
/
\n
/g
,
"
<br/>
"
),
n
+=
"
</div>
"
;
var
r
=
e
.
Node
.
create
(
n
);
if
(
this
.
answerrequested
===
1
){
var
i
=
e
.
Node
.
create
(
"
<div></div>
"
),
s
=
e
.
Node
.
create
(
"
<hr style='margin-bottom:0px;'/>
"
),
o
=
e
.
Node
.
create
(
"
<label style='display:inline;'>
"
+
M
.
util
.
get_string
(
"
student_answer_lib
"
,
"
assignfeedback_editpdfplus
"
)
+
"
</label>
"
),
u
=
""
;
this
.
studentanswer
&&
this
.
studentanswer
!==
"
0
"
&&
this
.
studentanswer
!==
"
1
"
&&
(
u
=
this
.
studentanswer
);
var
a
=
e
.
Node
.
create
(
"
<br/><textarea id='
"
+
this
.
divcartridge
+
"
_studentanswer' type='text' value=
\"
"
+
u
+
'
" >
'
+
u
+
"
</textarea>
"
);
u
=
this
.
studentanswer
;
var
f
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonsavestudentanswer' style='margin-left:110px;' class='btn btn-default' type='button'>
"
+
"
<i class='fa fa-floppy-o' aria-hidden='true'></i>
"
+
"
</button>
"
,
l
=
e
.
Node
.
create
(
f
);
l
.
on
(
"
click
"
,
this
.
save_studentanswer
,
this
,
null
),
i
.
append
(
s
),
i
.
append
(
o
),
i
.
append
(
l
),
i
.
append
(
a
),
r
.
append
(
i
)}
return
r
},
get_div_container
:
function
(
t
){
var
n
=
"
<div
"
;
n
+=
"
class='assignfeedback_editpdfplus_
"
+
this
.
tooltypefamille
.
label
+
"
_conteneur' >
"
,
n
+=
"
</div>
"
;
var
r
=
e
.
Node
.
create
(
n
),
i
=
this
.
get_div_input
(
t
);
i
.
addClass
(
"
assignfeedback_editpdfplus_
"
+
this
.
tooltypefamille
.
label
+
"
_input
"
);
var
s
=
1
;
if
(
this
.
displaylock
||
this
.
displaylock
>=
0
)
s
=
this
.
displaylock
;
var
o
=
e
.
Node
.
create
(
"
<input type='hidden' id='
"
+
this
.
divcartridge
+
"
_onof' value=
"
+
s
+
"
/>
"
),
u
=
this
.
editor
.
get
(
"
readonly
"
);
return
u
||
i
.
on
(
"
click
"
,
this
.
edit_annot
,
this
),
r
.
append
(
i
),
r
.
append
(
o
),
r
.
append
(
this
.
get_input_question
()),
u
=
this
.
editor
.
get
(
"
readonly
"
),
u
?
r
.
append
(
this
.
get_button_student_status
()):(
r
.
append
(
this
.
get_button_visibility_left
()),
r
.
append
(
this
.
get_button_visibility_right
()),
r
.
append
(
this
.
get_button_save
()),
r
.
append
(
this
.
get_button_cancel
()),
this
.
tooltype
.
reply
===
1
&&
r
.
append
(
this
.
get_button_question
()),
r
.
append
(
this
.
get_button_remove
())),
r
},
get_button_student_status
:
function
(){
var
t
=
'
<label style="padding-left:20px;" class="radio-inline"><input type="radio" name="
'
+
this
.
divcartridge
+
'
_status" value=0 >
'
+
M
.
util
.
get_string
(
"
student_statut_nc
"
,
"
assignfeedback_editpdfplus
"
)
+
"
</label>
"
,
n
=
'
<label class="radio-inline"><input type="radio" name="
'
+
this
.
divcartridge
+
'
_status" value=1 ><i
mg
style="
width:15px;" src=
\'
'
+
M
.
util
.
image_url
(
"
tick
"
,
"
assignfeedback_editpdfplus
"
)
+
"
' />
</label>
"
,
r
=
'
<label class="radio-inline"><input type="radio" name="
'
+
this
.
divcartridge
+
'
_status" value=2 ><i
mg
style="
width:15px;" src=
\'
'
+
M
.
util
.
image_url
(
"
cross
"
,
"
assignfeedback_editpdfplus
"
)
+
"
' />
</label>
"
,
i
=
e
.
Node
.
create
(
t
),
s
=
e
.
Node
.
create
(
n
),
o
=
e
.
Node
.
create
(
r
);
i
.
on
(
"
click
"
,
this
.
change_status
,
this
,
0
),
s
.
on
(
"
click
"
,
this
.
change_status
,
this
,
1
),
o
.
on
(
"
click
"
,
this
.
change_status
,
this
,
2
);
var
u
=
e
.
Node
.
create
(
"
<div id='
"
+
this
.
divcartridge
+
"
_radioContainer' style='display:inline;'></div>
"
);
return
u
.
append
(
i
),
u
.
append
(
s
),
u
.
append
(
o
),
u
},
get_button_visibility_right
:
function
(){
var
t
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonedit_right' class='btn btn-default' type='button'>
"
;
t
+=
"
<i class='fa fa-arrow-right' aria-hidden='true'></i>
"
,
t
+=
"
</button>
"
;
var
n
=
e
.
Node
.
create
(
t
);
return
n
.
on
(
"
click
"
,
this
.
change_visibility_annot
,
this
,
"
r
"
),
n
},
get_button_visibility_left
:
function
(){
var
t
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonedit_left' class='btn btn-default' type='button'>
"
;
t
+=
"
<i class='fa fa-arrow-left' aria-hidden='true'></i>
"
,
t
+=
"
</button>
"
;
var
n
=
e
.
Node
.
create
(
t
);
return
n
.
on
(
"
click
"
,
this
.
change_visibility_annot
,
this
,
"
l
"
),
n
},
get_button_save
:
function
(){
var
t
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonsave' style='display:none;margin-left:110px;' class='btn btn-default' type='button'>
"
+
"
<i class='fa fa-check' aria-hidden='true'></i>
"
+
"
</button>
"
,
n
=
e
.
Node
.
create
(
t
);
return
n
.
on
(
"
click
"
,
this
.
save_annot
,
this
,
null
),
n
},
get_button_cancel
:
function
(){
var
t
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttoncancel' style='display:none;' class='btn btn-default' type='button'>
"
+
"
<i class='fa fa-undo' aria-hidden='true'></i>
"
+
"
</button>
"
,
n
=
e
.
Node
.
create
(
t
);
return
n
.
on
(
"
click
"
,
this
.
cancel_edit
,
this
),
n
},
get_button_question
:
function
(){
var
t
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonquestion' style='display:none;margin-left:10px;' class='btn btn-default' type='button'>
"
+
'
<span class="fa-stack fa-lg" style="line-height: 1em;width: 1em;">
'
+
'
<i class="fa fa-question-circle-o fa-stack-1x"></i>
'
+
'
<i class="fa fa-ban fa-stack-1x text-danger"></i>
'
+
"
</span>
"
+
"
</button>
"
,
n
=
e
.
Node
.
create
(
t
);
return
n
.
on
(
"
click
"
,
this
.
change_question_status
,
this
),
n
},
get_button_remove
:
function
(){
var
t
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonremove' style='display:none;margin-left:10px;' class='btn btn-default' type='button'>
"
+
"
<i class='fa fa-trash' aria-hidden='true'></i>
"
+
"
</button>
"
,
n
=
e
.
Node
.
create
(
t
);
return
n
.
on
(
"
click
"
,
this
.
remove_by_trash
,
this
),
n
},
get_input_question
:
function
(){
var
t
=
0
;
return
this
.
answerrequested
&&
this
.
answerrequested
===
1
&&
(
t
=
1
),
e
.
Node
.
create
(
"
<input type='hidden' id='
"
+
this
.
divcartridge
+
"
_question' value='
"
+
t
+
"
'/>
"
)},
get_valref
:
function
(){
return
this
.
textannot
&&
this
.
textannot
.
length
>
0
&&
typeof
this
.
textannot
==
"
string
"
?
this
.
textannot
:
""
},
get_input_valref
:
function
(){
return
e
.
Node
.
create
(
"
<input type='hidden' id='
"
+
this
.
divcartridge
+
"
_valref' value=
\"
"
+
this
.
get_valref
()
+
'
"/>
'
)},
apply_visibility_annot
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_display
"
),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_onof
"
),
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_right
"
),
r
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_left
"
),
i
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_radioContainer
"
);
t
&&
(
t
.
get
(
"
value
"
)
===
"
1
"
?(
n
&&
n
.
show
(),
r
&&
r
.
show
()):
t
.
get
(
"
value
"
)
===
"
0
"
?(
n
&&
n
.
show
(),
r
&&
r
.
hide
()):(
n
&&
n
.
hide
(),
r
&&
r
.
show
())),
e
&&
e
.
setContent
(
this
.
get_text_to_diplay_in_cartridge
()),
this
.
tooltypefamille
.
label
===
"
frame
"
&&
n
&&
(
n
.
hide
(),
r
.
hide
()),
i
&&
i
.
hide
(),
this
.
apply_question_status
()},
get_text_to_diplay_in_cartridge
:
function
(){
var
e
=
this
.
get_valref
(),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_onof
"
),
n
=
""
;
return
e
===
""
&&!
this
.
editor
.
get
(
"
readonly
"
)
&&
(
n
=
"
 
"
),
t
.
get
(
"
value
"
)
===
"
1
"
&&
e
!==
""
?
n
=
e
.
substr
(
0
,
20
):
t
.
get
(
"
value
"
)
===
"
0
"
&&
e
!==
""
?
n
=
"
...
"
:
e
!==
""
&&
(
n
=
e
),
this
.
answerrequested
===
1
&&
(
n
+=
'
<span style="color:red;">[?]</span>
'
),
n
},
change_visibility_annot
:
function
(
e
,
t
){
var
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_onof
"
),
r
=
parseInt
(
n
.
get
(
"
value
"
),
10
);
t
===
"
r
"
?
r
+=
1
:
r
-=
1
,
n
.
set
(
"
value
"
,
r
),
this
.
displaylock
=
r
,
this
.
apply_visibility_annot
(),
this
.
editor
.
save_current_page
()},
change_question_status
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_question
"
),
t
=
parseInt
(
e
.
get
(
"
value
"
),
10
),
n
=
0
;
t
===
0
&&
(
n
=
1
),
e
.
set
(
"
value
"
,
n
),
this
.
answerrequested
=
n
,
this
.
apply_question_status
(),
this
.
editor
.
save_current_page
()},
change_status
:
function
(
e
,
t
){
this
.
studentstatus
=
t
;
var
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_studentanswer
"
);
n
&&
(
this
.
studentanswer
=
n
.
get
(
"
value
"
));
var
r
=
this
.
editor
.
annotationsparent
[
this
.
id
];
if
(
r
)
for
(
var
i
=
0
;
i
<
r
.
length
;
i
++
)
r
[
i
].
studentstatus
=
t
;
this
.
editor
.
save_current_page_edited
(),
this
.
hide_edit
()},
apply_question_status
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonquestion
"
),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_question
"
),
n
=
0
;
t
&&
(
n
=
parseInt
(
t
.
get
(
"
value
"
),
10
)),
e
&&
(
n
===
1
?
e
.
setHTML
(
'
<i class="fa fa-question-circle-o"></i>
'
):
e
.
setHTML
(
'
<span class="fa-stack fa-lg" style="line-height: 1em;width: 1em;"><i class="fa fa-question-circle-o fa-stack-1x"></i><i class="fa fa-ban fa-stack-1x text-danger"></i></span>
'
));
return
},
move_cartridge_begin
:
function
(
e
){
e
.
preventDefault
();
var
t
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
n
=
new
M
.
assignfeedback_editpdfplus
.
point
(
e
.
clientX
+
t
.
get
(
"
docScrollX
"
),
e
.
clientY
+
t
.
get
(
"
docScrollY
"
)),
r
=
this
.
editor
.
get_canvas_coordinates
(
n
);
this
.
oldx
=
r
.
x
,
this
.
oldy
=
r
.
y
,
t
.
on
(
"
mousemove
"
,
this
.
move_cartridge_continue
,
this
),
t
.
on
(
"
mouseup
"
,
this
.
move_cartridge_stop
,
this
)},
move_cartridge_continue
:
function
(
e
){
e
.
preventDefault
();
var
t
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
n
=
new
M
.
assignfeedback_editpdfplus
.
point
(
e
.
clientX
+
t
.
get
(
"
docScrollX
"
),
e
.
clientY
+
t
.
get
(
"
docScrollY
"
)),
r
=
this
.
editor
.
get_canvas_coordinates
(
n
),
i
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
(),
o
=
r
.
x
-
this
.
oldx
,
u
=
r
.
y
-
this
.
oldy
,
a
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
a
.
setX
(
i
[
0
]
+
this
.
x
+
this
.
cartridgex
+
o
),
a
.
setY
(
i
[
1
]
+
this
.
y
+
this
.
cartridgey
+
u
)},
move_cartridge_stop
:
function
(
e
){
e
.
preventDefault
();
var
t
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
);
t
.
detach
(
"
mousemove
"
,
this
.
move_cartridge_continue
,
this
),
t
.
detach
(
"
mouseup
"
,
this
.
move_cartridge_stop
,
this
);
var
n
=
new
M
.
assignfeedback_editpdfplus
.
point
(
e
.
clientX
+
t
.
get
(
"
docScrollX
"
),
e
.
clientY
+
t
.
get
(
"
docScrollY
"
)),
r
=
this
.
editor
.
get_canvas_coordinates
(
n
),
i
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
(),
o
=
r
.
x
-
this
.
oldx
,
u
=
r
.
y
-
this
.
oldy
;
this
.
cartridgex
+=
o
,
this
.
cartridgey
+=
u
;
var
a
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
a
.
setX
(
i
[
0
]
+
this
.
x
+
this
.
cartridgex
),
a
.
setY
(
i
[
1
]
+
this
.
y
+
this
.
cartridgey
),
this
.
editor
.
save_current_page
()},
draw_catridge
:
function
(){
return
!
0
},
view_annot
:
function
(
t
,
n
){
if
(
!
n
||
n
!==
"
click
"
||
this
.
editor
.
currentannotationreview
!==
this
){
this
.
editor
.
currentannotationreview
=
this
;
if
(
this
.
tooltype
.
type
<=
c
.
COMMENTPLUS
&&!
this
.
parent_annot_element
){
var
r
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
),
i
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_display
"
),
s
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_visu
"
),
o
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_radioContainer
"
),
u
=
e
.
all
(
"
[name=
"
+
this
.
divcartridge
+
"
_status]
"
);
i
.
hide
(),
s
.
show
();
if
(
this
.
answerrequested
===
1
){
var
a
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_studentanswer
"
);
a
&&
a
.
set
(
this
.
studentanswer
)}
for
(
var
f
=
0
;
f
<
u
.
size
();
f
++
){
var
l
=
u
.
item
(
f
);
parseInt
(
l
.
get
(
"
value
"
),
10
)
===
this
.
studentstatus
?
l
.
set
(
"
checked
"
,
!
0
):
l
.
set
(
"
checked
"
,
!
1
)}
o
.
show
(),
o
.
set
(
"
style
"
,
"
display:inline;color:
"
+
this
.
get_color_cartridge
()
+
"
;
"
),
r
.
setStyle
(
"
z-index
"
,
1
e3
),
this
.
disabled_canvas_event
(),
r
.
detach
(),
r
.
on
(
"
clickoutside
"
,
this
.
hide_edit
,
this
,
"
clickoutside
"
)}}
else
this
.
editor
.
currentannotationreview
=
null
},
edit_annot
:
function
(){
if
(
this
.
tooltype
.
type
<=
c
.
COMMENTPLUS
&&!
this
.
parent_annot_element
){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_display
"
),
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_edit
"
),
r
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_right
"
),
i
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_left
"
),
s
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonsave
"
),
o
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttoncancel
"
),
u
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonquestion
"
),
a
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonrotation
"
),
f
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonremove
"
),
l
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_editinput
"
);
t
.
hide
(),
r
&&
r
.
hide
(),
i
&&
i
.
hide
(),
a
&&
a
.
hide
(),
n
.
show
(),
s
.
show
(),
o
.
show
(),
u
&&
u
.
show
(),
f
.
show
(),
e
.
setStyle
(
"
z-index
"
,
1
e3
),
l
&&
l
.
set
(
"
focus
"
,
"
on
"
),
this
.
disabled_canvas_event
(),
e
.
on
(
"
clickoutside
"
,
this
.
save_annot_clickout
,
this
,
"
clickoutside
"
)}},
fill_input_edition
:
function
(
e
,
t
){
var
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_editinput
"
);
n
&&
n
.
set
(
"
value
"
,
t
),
this
.
save_annot
(
t
)},
save_annot_clickout
:
function
(
e
,
t
){(
t
!==
"
clickoutside
"
||
this
.
editor
.
currentannotation
!==
this
)
&&
this
.
save_annot
(
null
);
return
},
save_annot
:
function
(
e
){
if
(
typeof
e
!=
"
string
"
){
var
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_editinput
"
);
t
&&
(
e
=
t
.
get
(
"
value
"
))}
this
.
textannot
=
e
,
this
.
editor
.
save_current_page
(),
e
.
length
===
0
&&
(
e
=
"
"
),
this
.
hide_edit
(),
this
.
apply_visibility_annot
()},
save_studentanswer
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_studentanswer
"
);
e
&&
(
this
.
studentanswer
=
e
.
get
(
"
value
"
),
this
.
editor
.
save_current_page_edited
()),
this
.
hide_edit
(),
this
.
apply_visibility_annot
()},
cancel_edit
:
function
(
e
,
t
){
if
(
t
!==
"
clickoutside
"
||
this
.
editor
.
currentannotation
!==
this
){
var
n
=
this
.
get_valref
(),
r
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_editinput
"
);
n
&&
r
&&
r
.
set
(
"
value
"
,
n
),
this
.
hide_edit
(),
this
.
apply_visibility_annot
();
var
i
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
i
&&
i
.
detach
()}
return
},
hide_edit
:
function
(
e
,
t
){
if
(
!
t
||
t
!==
"
clickoutside
"
||
this
.
editor
.
currentannotation
!==
this
){
var
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
),
r
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_display
"
),
i
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_edit
"
),
s
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_visu
"
),
o
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonsave
"
),
u
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttoncancel
"
),
a
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonquestion
"
),
f
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonrotation
"
),
l
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonremove
"
),
c
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_radioContainer
"
);
r
&&
(
r
.
show
(),
r
.
set
(
"
style
"
,
"
display:inline;color:
"
+
this
.
get_color_cartridge
()
+
"
;
"
)),
f
&&
f
.
show
(),
i
&&
(
i
.
hide
(),
o
.
hide
(),
u
.
hide
()),
s
&&
s
.
hide
(),
a
&&
a
.
hide
(),
l
&&
l
.
hide
(),
n
&&
(
n
.
setStyle
(
"
z-index
"
,
1
),
n
.
detach
(),
this
.
editor
.
get
(
"
readonly
"
)
&&
n
.
on
(
"
click
"
,
this
.
view_annot
,
this
,
"
click
"
)),
i
&&
this
.
enabled_canvas_event
(),
c
&&
c
.
hide
()}},
remove_by_trash
:
function
(
e
){
this
.
cancel_edit
(),
this
.
remove
(
e
)},
remove
:
function
(
e
){
var
t
,
n
;
e
.
preventDefault
(),
t
=
this
.
editor
.
pages
[
this
.
editor
.
currentpage
].
annotations
;
for
(
n
=
0
;
n
<
t
.
length
;
n
++
)
if
(
t
[
n
]
===
this
){
t
.
splice
(
n
,
1
),
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
currentannotation
=!
1
,
this
.
editor
.
save_current_page
();
return
}},
move
:
function
(
t
,
n
){
var
r
=
t
-
this
.
x
,
i
=
n
-
this
.
y
,
s
,
o
,
u
,
a
,
f
;
this
.
x
+=
r
,
this
.
y
+=
i
,
this
.
endx
+=
r
,
this
.
endy
+=
i
,
this
.
path
&&
(
s
=
[],
o
=
this
.
path
.
split
(
"
:
"
),
e
.
each
(
o
,
function
(
e
){
u
=
e
.
split
(
"
,
"
),
a
=
parseInt
(
u
[
0
],
10
),
f
=
parseInt
(
u
[
1
],
10
),
s
.
push
(
a
+
r
+
"
,
"
+
(
f
+
i
))}),
this
.
path
=
s
.
join
(
"
:
"
)),
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
drawables
.
push
(
this
.
draw
())},
draw_current_edit
:
function
(
e
){
var
t
=
e
&&!
1
;
return
t
},
init_from_edit
:
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
;
return
t
.
bound
([
e
.
start
,
e
.
end
]),
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
t
.
x
,
this
.
y
=
t
.
y
,
this
.
endx
=
t
.
x
+
t
.
width
,
this
.
endy
=
t
.
y
+
t
.
height
,
this
.
colour
=
e
.
annotationcolour
,
this
.
path
=
""
,
t
.
has_min_width
()
&&
t
.
has_min_height
()},
disabled_canvas_event
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
);
e
.
detach
()},
enabled_canvas_event
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
);
e
.
on
(
"
gesturemovestart
"
,
this
.
editor
.
edit_start
,
null
,
this
.
editor
),
e
.
on
(
"
gesturemove
"
,
this
.
editor
.
edit_move
,
null
,
this
.
editor
),
e
.
on
(
"
gesturemoveend
"
,
this
.
editor
.
edit_end
,
null
,
this
.
editor
)}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotation
=
y
;
var
b
=
function
(
e
){
b
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
b
.
NAME
=
"
annotationline
"
,
b
.
ATTRS
=
{},
e
.
extend
(
b
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
,
n
;
return
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
n
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Path
,
fill
:
!
1
,
stroke
:{
weight
:
p
,
color
:
a
[
this
.
colour
]}}),
n
.
moveTo
(
this
.
x
,
this
.
y
),
n
.
lineTo
(
this
.
endx
,
this
.
endy
),
n
.
end
(),
t
.
shapes
.
push
(
n
),
this
.
drawable
=
t
,
b
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
;
return
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Path
,
fill
:
!
1
,
stroke
:{
weight
:
p
,
color
:
a
[
t
.
annotationcolour
]}}),
r
.
moveTo
(
t
.
start
.
x
,
t
.
start
.
y
),
r
.
lineTo
(
t
.
end
.
x
,
t
.
end
.
y
),
r
.
end
(),
n
.
shapes
.
push
(
r
),
n
},
init_from_edit
:
function
(
e
){
return
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
e
.
start
.
x
,
this
.
y
=
e
.
start
.
y
,
this
.
endx
=
e
.
end
.
x
,
this
.
endy
=
e
.
end
.
y
,
this
.
colour
=
e
.
annotationcolour
,
this
.
path
=
""
,
this
.
endx
-
this
.
x
!==
0
||
this
.
endy
-
this
.
y
!==
0
}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationline
=
b
;
var
w
=
function
(
e
){
w
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
w
.
NAME
=
"
annotationrectangle
"
,
w
.
ATTRS
=
{},
e
.
extend
(
w
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
,
n
,
r
;
return
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
n
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
n
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
,
this
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
endx
,
this
.
endy
)]),
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Rect
,
width
:
n
.
width
,
height
:
n
.
height
,
stroke
:{
weight
:
p
,
color
:
a
[
this
.
colour
]},
x
:
n
.
x
,
y
:
n
.
y
}),
t
.
shapes
.
push
(
r
),
this
.
drawable
=
t
,
w
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
,
i
;
return
i
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
i
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
start
.
x
,
t
.
start
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
end
.
x
,
t
.
end
.
y
)]),
i
.
has_min_width
()
||
i
.
set_min_width
(),
i
.
has_min_height
()
||
i
.
set_min_height
(),
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Rect
,
width
:
i
.
width
,
height
:
i
.
height
,
stroke
:{
weight
:
p
,
color
:
a
[
t
.
annotationcolour
]},
x
:
i
.
x
,
y
:
i
.
y
}),
n
.
shapes
.
push
(
r
),
n
}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationrectangle
=
w
;
var
E
=
function
(
e
){
E
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
E
.
NAME
=
"
annotationoval
"
,
E
.
ATTRS
=
{},
e
.
extend
(
E
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
,
n
,
r
;
return
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
n
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
n
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
,
this
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
endx
,
this
.
endy
)]),
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Ellipse
,
width
:
n
.
width
,
height
:
n
.
height
,
stroke
:{
weight
:
p
,
color
:
a
[
this
.
colour
]},
x
:
n
.
x
,
y
:
n
.
y
}),
t
.
shapes
.
push
(
r
),
this
.
drawable
=
t
,
E
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
,
i
;
return
i
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
i
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
start
.
x
,
t
.
start
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
end
.
x
,
t
.
end
.
y
)]),
i
.
has_min_width
()
||
i
.
set_min_width
(),
i
.
has_min_height
()
||
i
.
set_min_height
(),
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Ellipse
,
width
:
i
.
width
,
height
:
i
.
height
,
stroke
:{
weight
:
p
,
color
:
a
[
t
.
annotationcolour
]},
x
:
i
.
x
,
y
:
i
.
y
}),
n
.
shapes
.
push
(
r
),
n
}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationoval
=
E
;
var
S
=
function
(
e
){
S
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
S
.
NAME
=
"
annotationpen
"
,
S
.
ATTRS
=
{},
e
.
extend
(
S
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
,
n
,
r
,
i
,
s
;
return
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
n
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Path
,
fill
:
!
1
,
stroke
:{
weight
:
p
,
color
:
a
[
this
.
colour
]}}),
r
=!
0
,
i
=
this
.
path
.
split
(
"
:
"
),
e
.
each
(
i
,
function
(
e
){
s
=
e
.
split
(
"
,
"
),
r
?(
n
.
moveTo
(
s
[
0
],
s
[
1
]),
r
=!
1
):
n
.
lineTo
(
s
[
0
],
s
[
1
])},
this
),
n
.
end
(),
t
.
shapes
.
push
(
n
),
this
.
drawable
=
t
,
S
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
,
i
;
return
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Path
,
fill
:
!
1
,
stroke
:{
weight
:
p
,
color
:
a
[
t
.
annotationcolour
]}}),
i
=!
0
,
e
.
each
(
t
.
path
,
function
(
e
){
i
?(
r
.
moveTo
(
e
.
x
,
e
.
y
),
i
=!
1
):
r
.
lineTo
(
e
.
x
,
e
.
y
)},
this
),
r
.
end
(),
n
.
shapes
.
push
(
r
),
n
},
init_from_edit
:
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
n
=
[],
r
=
0
;
t
.
bound
(
e
.
path
);
for
(
r
=
0
;
r
<
e
.
path
.
length
;
r
++
)
n
.
push
(
parseInt
(
e
.
path
[
r
].
x
,
10
)
+
"
,
"
+
parseInt
(
e
.
path
[
r
].
y
,
10
));
return
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
t
.
x
,
this
.
y
=
t
.
y
,
this
.
endx
=
t
.
x
+
t
.
width
,
this
.
endy
=
t
.
y
+
t
.
height
,
this
.
colour
=
e
.
annotationcolour
,
this
.
path
=
n
.
join
(
"
:
"
),
t
.
has_min_width
()
||
t
.
has_min_height
()}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationpen
=
S
;
var
x
=
function
(
e
){
x
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
x
.
NAME
=
"
annotationhighlight
"
,
x
.
ATTRS
=
{},
e
.
extend
(
x
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
,
n
,
r
,
i
;
return
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
r
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
,
this
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
endx
,
this
.
endy
)]),
i
=
a
[
this
.
colour
],
i
=
i
.
replace
(
"
rgb
"
,
"
rgba
"
),
i
=
i
.
replace
(
"
)
"
,
"
,0.5)
"
),
n
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Rect
,
width
:
r
.
width
,
height
:
r
.
height
,
stroke
:
!
1
,
fill
:{
color
:
i
},
x
:
r
.
x
,
y
:
r
.
y
}),
t
.
shapes
.
push
(
n
),
this
.
drawable
=
t
,
x
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
,
i
,
s
;
return
i
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
i
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
start
.
x
,
t
.
start
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
end
.
x
,
t
.
end
.
y
)]),
i
.
has_min_width
()
||
i
.
set_min_width
(),
s
=
a
[
t
.
annotationcolour
],
s
=
s
.
replace
(
"
rgb
"
,
"
rgba
"
),
s
=
s
.
replace
(
"
)
"
,
"
,0.5)
"
),
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Rect
,
width
:
i
.
width
,
height
:
16
,
stroke
:
!
1
,
fill
:{
color
:
s
},
x
:
i
.
x
,
y
:
t
.
start
.
y
}),
n
.
shapes
.
push
(
r
),
n
},
init_from_edit
:
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
;
return
t
.
bound
([
e
.
start
,
e
.
end
]),
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
t
.
x
,
this
.
y
=
e
.
start
.
y
,
this
.
endx
=
t
.
x
+
t
.
width
,
this
.
endy
=
e
.
start
.
y
+
16
,
this
.
colour
=
e
.
annotationcolour
,
this
.
page
=
""
,
t
.
has_min_width
()}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationhighlight
=
x
;
var
T
=
function
(
e
){
T
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
T
.
NAME
=
"
annotationhighlightplus
"
,
T
.
ATTRS
=
{},
e
.
extend
(
T
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
,
n
,
r
,
i
;
return
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
r
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
,
this
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
endx
,
this
.
endy
)]),
i
=
this
.
get_color
(),
n
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Rect
,
width
:
r
.
width
,
height
:
r
.
height
,
stroke
:
!
1
,
fill
:{
color
:
i
,
opacity
:.
5
},
x
:
r
.
x
,
y
:
r
.
y
}),
t
.
shapes
.
push
(
n
),
this
.
drawable
=
t
,
this
.
draw_catridge
(),
T
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
,
i
,
s
;
return
i
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
i
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
start
.
x
,
t
.
start
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
end
.
x
,
t
.
end
.
y
)]),
i
.
has_min_width
()
||
i
.
set_min_width
(),
s
=
this
.
get_color
(),
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Rect
,
width
:
i
.
width
,
height
:
16
,
stroke
:
!
1
,
fill
:{
color
:
s
,
opacity
:.
5
},
x
:
i
.
x
,
y
:
t
.
start
.
y
-
8
}),
n
.
shapes
.
push
(
r
),
n
},
init_from_edit
:
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
;
return
t
.
bound
([
e
.
start
,
e
.
end
]),
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
t
.
x
,
this
.
y
=
e
.
start
.
y
-
8
,
this
.
endx
=
t
.
x
+
t
.
width
,
this
.
endy
=
e
.
start
.
y
+
16
-
8
,
this
.
page
=
""
,
t
.
has_min_width
()},
draw_catridge
:
function
(){
var
e
,
t
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
();
if
(
this
.
divcartridge
===
""
){
this
.
init_div_cartridge_id
();
var
n
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
r
=
this
.
get_color_cartridge
();
e
=
this
.
get_div_cartridge
(
r
),
e
.
addClass
(
"
assignfeedback_editpdfplus_hightlightplus
"
);
var
i
=
this
.
get_div_cartridge_label
(
r
);
e
.
append
(
i
);
var
o
=
this
.
get_div_container
(
r
);
e
.
append
(
o
);
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
u
=
this
.
get_div_edition
();
o
.
append
(
u
)}
else
{
var
a
=
this
.
get_div_visu
(
r
);
o
.
append
(
a
)}
if
(
!
this
.
cartridgex
||
this
.
cartridgex
===
0
)
this
.
cartridgex
=
parseInt
(
this
.
tooltypefamille
.
cartridge_x
,
10
);
if
(
!
this
.
cartridgey
||
this
.
cartridgey
===
0
)
this
.
cartridgey
=
parseInt
(
this
.
tooltypefamille
.
cartridge_y
,
10
);
e
.
setX
(
this
.
x
+
this
.
cartridgex
),
e
.
setY
(
this
.
y
+
this
.
cartridgey
),
n
.
append
(
e
),
this
.
apply_visibility_annot
()}
else
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
),
e
.
setX
(
t
[
0
]
+
this
.
x
+
this
.
cartridgex
),
e
.
setY
(
t
[
1
]
+
this
.
y
+
this
.
cartridgey
);
return
!
0
},
remove
:
function
(
e
){
var
t
,
n
;
e
.
preventDefault
(),
t
=
this
.
editor
.
pages
[
this
.
editor
.
currentpage
].
annotations
;
for
(
n
=
0
;
n
<
t
.
length
;
n
++
)
if
(
t
[
n
]
===
this
){
if
(
this
.
divcartridge
!==
""
){
var
r
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
r
.
remove
()}
t
.
splice
(
n
,
1
),
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
currentannotation
=!
1
,
this
.
editor
.
save_current_page
();
return
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationhighlightplus
=
T
;
var
N
=
function
(
e
){
N
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
N
.
NAME
=
"
annotationstamp
"
,
N
.
ATTRS
=
{},
e
.
extend
(
N
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
n
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
r
,
i
;
return
i
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
,
this
.
y
)),
r
=
e
.
Node
.
create
(
"
<div/>
"
),
r
.
setStyles
({
position
:
"
absolute
"
,
display
:
"
inline-block
"
,
backgroundImage
:
"
url(
"
+
this
.
editor
.
get_stamp_image_url
(
this
.
path
)
+
"
)
"
,
width
:
this
.
endx
-
this
.
x
,
height
:
this
.
endy
-
this
.
y
,
backgroundSize
:
"
100% 100%
"
,
zIndex
:
50
}),
n
.
append
(
r
),
r
.
setX
(
i
.
x
),
r
.
setY
(
i
.
y
),
t
.
store_position
(
r
,
i
.
x
,
i
.
y
),
t
.
nodes
.
push
(
r
),
this
.
drawable
=
t
,
N
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
r
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
i
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGREGION
),
o
,
u
;
return
n
.
bound
([
t
.
start
,
t
.
end
]),
u
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
n
.
x
,
n
.
y
)),
o
=
e
.
Node
.
create
(
"
<div/>
"
),
o
.
setStyles
({
position
:
"
absolute
"
,
display
:
"
inline-block
"
,
backgroundImage
:
"
url(
"
+
this
.
editor
.
get_stamp_image_url
(
t
.
stamp
)
+
"
)
"
,
width
:
n
.
width
,
height
:
n
.
height
,
backgroundSize
:
"
100% 100%
"
,
zIndex
:
50
}),
i
.
append
(
o
),
o
.
setX
(
u
.
x
),
o
.
setY
(
u
.
y
),
r
.
store_position
(
o
,
u
.
x
,
u
.
y
),
r
.
nodes
.
push
(
o
),
r
},
init_from_edit
:
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
;
return
t
.
bound
([
e
.
start
,
e
.
end
]),
t
.
width
<
40
&&
(
t
.
width
=
40
),
t
.
height
<
40
&&
(
t
.
height
=
40
),
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
t
.
x
,
this
.
y
=
t
.
y
,
this
.
endx
=
t
.
x
+
t
.
width
,
this
.
endy
=
t
.
y
+
t
.
height
,
this
.
colour
=
e
.
annotationcolour
,
this
.
path
=
e
.
stamp
,
!
0
},
move
:
function
(
e
,
t
){
var
n
=
e
-
this
.
x
,
r
=
t
-
this
.
y
;
this
.
x
+=
n
,
this
.
y
+=
r
,
this
.
endx
+=
n
,
this
.
endy
+=
r
,
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
drawables
.
push
(
this
.
draw
())}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationstamp
=
N
;
var
C
=
function
(
e
){
C
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
C
.
NAME
=
"
annotationstampplus
"
,
C
.
ATTRS
=
{},
e
.
extend
(
C
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
n
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
r
,
i
;
return
i
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
,
this
.
y
)),
r
=
e
.
Node
.
create
(
"
<div>
"
+
this
.
tooltype
.
label
+
"
</div>
"
),
r
.
setStyles
({
position
:
"
absolute
"
,
display
:
"
inline-block
"
,
color
:
this
.
colour
,
border
:
"
2px solid
"
+
this
.
colour
,
padding
:
"
0 2px
"
}),
n
.
append
(
r
),
r
.
setX
(
i
.
x
),
r
.
setY
(
i
.
y
),
t
.
store_position
(
r
,
i
.
x
,
i
.
y
),
t
.
nodes
.
push
(
r
),
this
.
drawable
=
t
,
C
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
r
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
i
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGREGION
),
o
,
u
;
return
n
.
bound
([
t
.
start
,
t
.
end
]),
u
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
n
.
x
,
n
.
y
)),
o
=
e
.
Node
.
create
(
"
<div>
"
+
this
.
tooltype
.
label
+
"
</div>
"
),
o
.
setStyles
({
position
:
"
absolute
"
,
display
:
"
inline-block
"
,
color
:
this
.
colour
,
border
:
"
2px solid
"
+
this
.
colour
,
padding
:
"
0 2px
"
}),
i
.
append
(
o
),
o
.
setX
(
u
.
x
),
o
.
setY
(
u
.
y
),
r
.
store_position
(
o
,
u
.
x
,
u
.
y
),
r
.
nodes
.
push
(
o
),
r
},
init_from_edit
:
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
;
return
t
.
bound
([
e
.
start
,
e
.
end
]),
t
.
width
<
40
&&
(
t
.
width
=
40
),
t
.
height
<
40
&&
(
t
.
height
=
40
),
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
t
.
x
-
5
,
this
.
y
=
t
.
y
-
10
,
this
.
endx
=
t
.
x
+
t
.
width
,
this
.
endy
=
t
.
y
+
t
.
height
,
!
0
},
edit_annot
:
function
(){
return
!
0
},
move
:
function
(
e
,
t
){
var
n
=
e
-
this
.
x
,
r
=
t
-
this
.
y
;
this
.
x
+=
n
,
this
.
y
+=
r
,
this
.
endx
+=
n
,
this
.
endy
+=
r
,
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
drawables
.
push
(
this
.
draw
())}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationstampplus
=
C
;
var
k
=
function
(
e
){
k
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
k
.
NAME
=
"
annotationstampcomment
"
,
k
.
ATTRS
=
{},
e
.
extend
(
k
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
n
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
r
,
i
;
this
.
shape_id
=
"
ct_stampcomment_
"
+
(
new
Date
).
toJSON
().
replace
(
/:/g
,
""
).
replace
(
/
\.
/g
,
""
),
i
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
,
this
.
y
));
var
o
=
'
<i id="
'
+
this
.
shape_id
+
'
_img"
'
+
'
class="fa fa-arrows-h fa-2x" aria-hidden="true"></i>
'
;
return
this
.
displayrotation
>
0
&&
(
o
=
'
<i id="
'
+
this
.
shape_id
+
'
_img"
'
+
'
class="fa fa-arrows-v fa-2x" aria-hidden="true"></i>
'
),
r
=
e
.
Node
.
create
(
'
<div id="
'
+
this
.
shape_id
+
'
">
'
+
o
+
"
</div>
"
),
r
.
setStyles
({
position
:
"
absolute
"
,
display
:
"
inline-block
"
}),
n
.
append
(
r
),
r
.
setY
(
i
.
y
),
r
.
setX
(
i
.
x
),
t
.
store_position
(
r
,
i
.
x
,
i
.
y
),
t
.
nodes
.
push
(
r
),
this
.
drawable
=
t
,
this
.
draw_catridge
(),
k
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
r
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
i
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGREGION
),
o
,
u
;
return
n
.
bound
([
t
.
start
,
t
.
end
]),
u
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
n
.
x
,
n
.
y
)),
o
=
e
.
Node
.
create
(
'
<div><i class="fa fa-arrows-v fa-2x" aria-hidden="true"></i>></div>
'
),
o
.
setStyles
({
position
:
"
absolute
"
,
display
:
"
inline-block
"
}),
i
.
append
(
o
),
o
.
setX
(
u
.
x
),
o
.
setY
(
u
.
y
),
r
.
store_position
(
o
,
u
.
x
,
u
.
y
),
r
.
nodes
.
push
(
o
),
r
},
init_from_edit
:
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
;
return
t
.
bound
([
e
.
start
,
e
.
end
]),
t
.
width
<
30
&&
(
t
.
width
=
30
),
t
.
height
<
30
&&
(
t
.
height
=
30
),
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
t
.
x
-
20
,
this
.
y
=
t
.
y
-
25
,
this
.
endx
=
t
.
x
+
t
.
width
-
20
,
this
.
endy
=
t
.
y
+
t
.
height
-
25
,
!
0
},
draw_catridge
:
function
(){
var
t
,
n
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
();
if
(
this
.
divcartridge
===
""
){
this
.
init_div_cartridge_id
();
var
r
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
i
=
this
.
get_color_cartridge
();
t
=
this
.
get_div_cartridge
(
i
),
t
.
addClass
(
"
assignfeedback_editpdfplus_stampcomment
"
);
var
o
=
this
.
get_div_cartridge_label
(
i
,
!
0
);
t
.
append
(
o
);
var
u
=
this
.
get_div_container
(
i
);
t
.
append
(
u
);
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
a
=
0
;
this
.
displayrotation
>
0
&&
(
a
=
1
);
var
f
=
e
.
Node
.
create
(
"
<input type='hidden' id='
"
+
this
.
divcartridge
+
"
_rotation' value=
"
+
a
+
"
/>
"
);
u
.
append
(
f
);
var
l
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonrotation' class='btn btn-default' type='button'>
"
+
'
<i class="fa fa-refresh" aria-hidden="true"></i>
'
+
"
</button>
"
,
c
=
e
.
Node
.
create
(
l
);
c
.
on
(
"
click
"
,
this
.
change_stamp
,
this
)
,
u
.
append
(
c
)}
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
h
=
this
.
get_div_edition
();
u
.
append
(
h
)}
else
{
var
p
=
this
.
get_div_visu
(
i
);
u
.
append
(
p
)}
if
(
!
this
.
cartridgex
||
this
.
cartridgex
===
0
)
this
.
cartridgex
=
parseInt
(
this
.
tooltypefamille
.
cartridge_x
,
10
);
if
(
!
this
.
cartridgey
||
this
.
cartridgey
===
0
)
this
.
cartridgey
=
parseInt
(
this
.
tooltypefamille
.
cartridge_y
,
10
);
t
.
setX
(
this
.
x
+
this
.
cartridgex
),
t
.
setY
(
this
.
y
+
this
.
cartridgey
),
r
.
append
(
t
),
this
.
apply_visibility_annot
()}
else
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
),
t
.
setX
(
n
[
0
]
+
this
.
x
+
this
.
cartridgex
),
t
.
setY
(
n
[
1
]
+
this
.
y
+
this
.
cartridgey
);
return
!
0
},
change_stamp
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_rotation
"
),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
shape_id
+
"
_img
"
);
e
.
get
(
"
value
"
)
===
"
0
"
?(
this
.
displayrotation
=
1
,
e
.
set
(
"
value
"
,
1
),
t
.
removeClass
(
"
fa-arrows-h
"
),
t
.
addClass
(
"
fa-arrows-v
"
)):(
e
.
set
(
"
value
"
,
0
),
t
.
removeClass
(
"
fa-arrows-v
"
),
t
.
addClass
(
"
fa-arrows-h
"
),
this
.
displayrotation
=
0
),
this
.
editor
.
save_current_page
()},
move
:
function
(
e
,
t
){
var
n
=
e
-
this
.
x
,
r
=
t
-
this
.
y
;
this
.
x
+=
n
,
this
.
y
+=
r
,
this
.
endx
+=
n
,
this
.
endy
+=
r
,
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
drawables
.
push
(
this
.
draw
())},
remove
:
function
(
e
){
var
t
,
n
;
e
.
preventDefault
(),
t
=
this
.
editor
.
pages
[
this
.
editor
.
currentpage
].
annotations
;
for
(
n
=
0
;
n
<
t
.
length
;
n
++
)
if
(
t
[
n
]
===
this
){
if
(
this
.
divcartridge
!==
""
){
var
r
=
"
#
"
+
this
.
divcartridge
,
i
=
this
.
editor
.
get_dialogue_element
(
r
);
i
.
remove
()}
t
.
splice
(
n
,
1
),
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
currentannotation
=!
1
,
this
.
editor
.
save_current_page
();
return
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationstampcomment
=
k
;
var
L
=
function
(
e
){
L
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
L
.
NAME
=
"
annotationframe
"
,
L
.
ATTRS
=
{},
e
.
extend
(
L
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
children
:[],
oldx
:
0
,
oldy
:
0
,
draw
:
function
(){
var
t
,
n
,
r
,
i
;
return
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
r
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
,
this
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
endx
,
this
.
endy
)]),
i
=
this
.
get_color
(),
this
.
shape_id
=
"
ct_frame_
"
+
(
new
Date
).
toJSON
().
replace
(
/:/g
,
""
).
replace
(
/
\.
/g
,
""
),
n
=
this
.
editor
.
graphic
.
addShape
({
id
:
this
.
shape_id
,
type
:
e
.
Rect
,
width
:
r
.
width
,
height
:
r
.
height
,
stroke
:{
weight
:
2
,
color
:
this
.
get_color
()},
x
:
r
.
x
,
y
:
r
.
y
}),
this
.
parent_annot_element
&&
n
.
addClass
(
"
class_
"
+
this
.
parent_annot_element
.
divcartridge
),
this
.
borderstyle
===
"
dashed
"
?
n
.
set
(
"
stroke
"
,{
dashstyle
:[
5
,
3
]}):
this
.
borderstyle
===
"
dotted
"
&&
n
.
set
(
"
stroke
"
,{
dashstyle
:[
2
,
2
]}),
t
.
shapes
.
push
(
n
),
this
.
drawable
=
t
,
this
.
draw_catridge
(),
L
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
,
i
,
s
;
return
i
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
i
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
start
.
x
,
t
.
start
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
end
.
x
,
t
.
end
.
y
)]),
i
.
has_min_width
()
||
i
.
set_min_width
(),
s
=
this
.
get_color
(),
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Rect
,
width
:
i
.
width
,
height
:
16
,
stroke
:{
weight
:
2
,
color
:
this
.
get_color
()},
x
:
i
.
x
,
y
:
t
.
start
.
y
-
8
}),
this
.
parent_annot_element
&&
r
.
addClass
(
"
class_
"
+
this
.
parent_annot_element
.
divcartridge
),
this
.
borderstyle
===
"
dashed
"
?
r
.
set
(
"
stroke
"
,{
dashstyle
:[
5
,
3
]}):
this
.
borderstyle
===
"
dotted
"
&&
r
.
set
(
"
stroke
"
,{
dashstyle
:[
2
,
2
]}),
n
.
shapes
.
push
(
r
),
n
},
init_from_edit
:
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
;
return
t
.
bound
([
e
.
start
,
e
.
end
]),
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
t
.
x
,
this
.
y
=
e
.
start
.
y
-
8
,
this
.
endx
=
t
.
x
+
t
.
width
,
this
.
endy
=
e
.
start
.
y
+
16
-
8
,
this
.
page
=
""
,
t
.
has_min_width
()},
move
:
function
(
e
,
t
){
var
n
=
e
-
this
.
x
,
r
=
t
-
this
.
y
;
this
.
x
+=
n
,
this
.
y
+=
r
,
this
.
endx
+=
n
,
this
.
endy
+=
r
,
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
drawables
.
push
(
this
.
draw
())},
get_color
:
function
(){
return
this
.
colour
},
draw_catridge
:
function
(){
if
(
this
.
parent_annot_element
===
null
&&
this
.
parent_annot
===
0
){
var
t
,
n
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
();
if
(
this
.
divcartridge
===
""
){
this
.
init_div_cartridge_id
();
var
r
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
i
=
this
.
editor
.
graphic
.
getShapeById
(
this
.
shape_id
);
i
&&
i
.
addClass
(
"
class_
"
+
this
.
divcartridge
);
var
o
=
this
.
get_color
();
t
=
this
.
get_div_cartridge
(
o
),
t
.
addClass
(
"
assignfeedback_editpdfplus_frame
"
),
t
.
setStyles
({
"
border-style
"
:
this
.
borderstyle
});
var
u
=
this
.
get_div_cartridge_label
(
o
,
!
0
);
t
.
append
(
u
);
var
a
=
this
.
get_div_container
(
o
);
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
f
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonpencil' class='btn btn-default' type='button'>
"
;
f
+=
'
<i class="fa fa-eyedropper" aria-hidden="true"></i>
'
,
f
+=
"
</button>
"
;
var
l
=
e
.
Node
.
create
(
f
);
l
.
on
(
"
click
"
,
this
.
display_picker
,
this
);
var
c
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonadd' class='btn btn-default' type='button'>
"
;
c
+=
'
<i class="fa fa-plus" aria-hidden="true"></i>
'
,
c
+=
"
</button>
"
;
var
h
=
e
.
Node
.
create
(
c
);
h
.
on
(
"
click
"
,
this
.
add_annot
,
this
),
a
.
append
(
l
),
a
.
append
(
h
)}
t
.
append
(
a
);
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
p
=
this
.
get_div_edition
();
a
.
append
(
p
)}
else
{
var
d
=
this
.
get_div_visu
(
o
);
a
.
append
(
d
)}
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
v
=
"
margin:5px;border:2px #ccc
"
,
m
=
"
min-width:20px;min-height:20px;
"
,
g
=
"
<div
"
;
g
+=
"
id='
"
+
this
.
divcartridge
+
"
_picker'
"
,
g
+=
"
class='assignfeedback_editpdfplus_frame_picker'
"
,
g
+=
"
style='display:none;text-align:right;'>
"
,
g
+=
"
</div>
"
;
var
y
=
e
.
Node
.
create
(
g
);
a
.
append
(
y
);
var
b
=
e
.
Node
.
create
(
"
<div style='display:inline-block;vertical-align:top;'></div>
"
),
w
=
e
.
Node
.
create
(
"
<div style='display:inline-block;vertical-align:top;'></div>
"
);
y
.
append
(
b
),
y
.
append
(
w
);
var
E
=
e
.
Node
.
create
(
"
<div style='background-color:white;
"
+
v
+
"
solid;
"
+
m
+
"
'></div>
"
);
E
.
on
(
"
click
"
,
this
.
change_color
,
this
,
"
white
"
);
var
S
=
e
.
Node
.
create
(
"
<div style='background-color:#E69F00;
"
+
v
+
"
solid;
"
+
m
+
"
'></div>
"
);
S
.
on
(
"
click
"
,
this
.
change_color
,
this
,
"
#E69F00
"
);
var
x
=
e
.
Node
.
create
(
"
<div style='background-color:#D55E00;
"
+
v
+
"
solid;
"
+
m
+
"
'></div>
"
);
x
.
on
(
"
click
"
,
this
.
change_color
,
this
,
"
#D55E00
"
);
var
T
=
e
.
Node
.
create
(
"
<div style='background-color:#009E73;
"
+
v
+
"
solid;
"
+
m
+
"
'></div>
"
);
T
.
on
(
"
click
"
,
this
.
change_color
,
this
,
"
#009E73
"
);
var
N
=
e
.
Node
.
create
(
"
<div style='background-color:#0072B2;
"
+
v
+
"
solid;
"
+
m
+
"
'></div>
"
);
N
.
on
(
"
click
"
,
this
.
change_color
,
this
,
"
#0072B2
"
);
var
C
=
e
.
Node
.
create
(
"
<div style='background-color:black;
"
+
v
+
"
solid;
"
+
m
+
"
'></div>
"
);
C
.
on
(
"
click
"
,
this
.
change_color
,
this
,
"
black
"
),
b
.
append
(
E
),
b
.
append
(
S
),
b
.
append
(
x
),
b
.
append
(
T
),
b
.
append
(
N
),
b
.
append
(
C
);
var
k
=
e
.
Node
.
create
(
"
<div style='
"
+
v
+
"
solid;
"
+
m
+
"
'></div>
"
);
k
.
on
(
"
click
"
,
this
.
change_border
,
this
,
"
solid
"
);
var
L
=
e
.
Node
.
create
(
"
<div style='
"
+
v
+
"
dotted;
"
+
m
+
"
'></div>
"
);
L
.
on
(
"
click
"
,
this
.
change_border
,
this
,
"
dotted
"
);
var
A
=
"
<div style='
"
+
v
+
"
dashed;
"
+
m
+
"
'>
"
+
"
</div>
"
,
O
=
e
.
Node
.
create
(
A
);
O
.
on
(
"
click
"
,
this
.
change_border
,
this
,
"
dashed
"
),
w
.
append
(
k
),
w
.
append
(
L
),
w
.
append
(
O
)}
if
(
!
this
.
cartridgex
||
this
.
cartridgex
===
0
)
this
.
cartridgex
=
parseInt
(
this
.
tooltypefamille
.
cartridge_x
,
10
);
if
(
!
this
.
cartridgey
||
this
.
cartridgey
===
0
)
this
.
cartridgey
=
parseInt
(
this
.
tooltypefamille
.
cartridge_y
,
10
);
t
.
setX
(
this
.
cartridgex
),
t
.
setY
(
this
.
y
+
this
.
cartridgey
),
r
.
append
(
t
),
this
.
apply_visibility_annot
();
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
M
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_right
"
),
_
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_left
"
);
M
.
hide
(),
_
.
hide
()}}
else
{
var
D
=
"
#
"
+
this
.
divcartridge
;
t
=
this
.
editor
.
get_dialogue_element
(
D
),
t
.
setX
(
n
[
0
]
+
this
.
cartridgex
),
t
.
setY
(
n
[
1
]
+
this
.
y
+
this
.
cartridgey
)}}
return
!
0
},
move_cartridge_continue
:
function
(
e
){
e
.
preventDefault
();
var
t
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
n
=
new
M
.
assignfeedback_editpdfplus
.
point
(
e
.
clientX
+
t
.
get
(
"
docScrollX
"
),
e
.
clientY
+
t
.
get
(
"
docScrollY
"
)),
r
=
this
.
editor
.
get_canvas_coordinates
(
n
),
i
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
(),
o
=
r
.
x
-
this
.
oldx
,
u
=
r
.
y
-
this
.
oldy
,
a
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
a
.
setX
(
i
[
0
]
+
this
.
cartridgex
+
o
),
a
.
setY
(
i
[
1
]
+
this
.
y
+
this
.
cartridgey
+
u
)},
move_cartridge_stop
:
function
(
e
){
e
.
preventDefault
();
var
t
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
);
t
.
detach
(
"
mousemove
"
,
this
.
move_cartridge_continue
,
this
),
t
.
detach
(
"
mouseup
"
,
this
.
move_cartridge_stop
,
this
);
var
n
=
new
M
.
assignfeedback_editpdfplus
.
point
(
e
.
clientX
+
t
.
get
(
"
docScrollX
"
),
e
.
clientY
+
t
.
get
(
"
docScrollY
"
)),
r
=
this
.
editor
.
get_canvas_coordinates
(
n
),
i
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
(),
o
=
r
.
x
-
this
.
oldx
,
u
=
r
.
y
-
this
.
oldy
;
this
.
cartridgex
+=
o
,
this
.
cartridgey
+=
u
;
var
a
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
a
.
setX
(
i
[
0
]
+
this
.
cartridgex
),
a
.
setY
(
i
[
1
]
+
this
.
y
+
this
.
cartridgey
),
this
.
editor
.
save_current_page
()},
add_annot
:
function
(
e
){
this
.
editor
.
currentedit
.
parent_annot_element
=
this
,
this
.
editor
.
handle_tool_button
(
e
,
h
.
FRAME
,
"
ctbutton
"
+
this
.
toolid
,
1
)},
display_picker
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_picker
"
),
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonpencil
"
);
e
.
setStyle
(
"
z-index
"
,
1
e3
),
t
.
show
(),
n
.
on
(
"
click
"
,
this
.
hide_picker
,
this
)},
hide_picker
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_picker
"
),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonpencil
"
),
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
e
.
hide
(),
n
.
setStyle
(
"
z-index
"
,
0
),
t
.
on
(
"
click
"
,
this
.
display_picker
,
this
)},
change_color
:
function
(
e
,
t
){
this
.
colour
=
t
;
var
n
=
this
.
editor
.
graphic
.
getShapeById
(
this
.
shape_id
);
n
.
set
(
"
stroke
"
,{
color
:
this
.
colour
});
var
r
=
null
;
this
.
id
?
r
=
this
.
editor
.
annotationsparent
[
this
.
id
]:
r
=
this
.
editor
.
annotationsparent
[
this
.
divcartridge
];
if
(
r
)
for
(
var
i
=
0
;
i
<
r
.
length
;
i
++
){
r
[
i
].
colour
=
t
;
var
s
=
this
.
editor
.
graphic
.
getShapeById
(
r
[
i
].
shape_id
);
s
&&
s
.
set
(
"
stroke
"
,{
color
:
this
.
colour
})}
var
o
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
o
.
setStyles
({
"
border-color
"
:
this
.
colour
,
color
:
this
.
colour
});
var
u
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_cartridge
"
);
u
.
setStyles
({
"
border-color
"
:
this
.
colour
,
color
:
this
.
colour
});
var
a
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_display
"
);
a
.
setStyles
({
color
:
this
.
colour
}),
this
.
hide_picker
(),
this
.
editor
.
save_current_page
()},
change_border
:
function
(
e
,
t
){
this
.
borderstyle
=
t
;
var
n
=
this
.
editor
.
graphic
.
getShapeById
(
this
.
shape_id
);
this
.
borderstyle
===
"
solid
"
?
n
.
set
(
"
stroke
"
,{
dashstyle
:
"
none
"
}):
this
.
borderstyle
===
"
dashed
"
?
n
.
set
(
"
stroke
"
,{
dashstyle
:[
5
,
3
]}):
n
.
set
(
"
stroke
"
,{
dashstyle
:[
2
,
2
]});
var
r
=
[];
this
.
id
?
r
=
this
.
editor
.
annotationsparent
[
this
.
id
]:
r
=
this
.
editor
.
annotationsparent
[
this
.
divcartridge
];
if
(
r
)
for
(
var
i
=
0
;
i
<
r
.
length
;
i
++
){
r
[
i
].
borderstyle
=
t
;
var
s
=
this
.
editor
.
graphic
.
getShapeById
(
r
[
i
].
shape_id
);
s
&&
(
this
.
borderstyle
===
"
solid
"
?
s
.
set
(
"
stroke
"
,{
dashstyle
:
"
none
"
}):
this
.
borderstyle
===
"
dashed
"
?
s
.
set
(
"
stroke
"
,{
dashstyle
:[
5
,
3
]}):
s
.
set
(
"
stroke
"
,{
dashstyle
:[
2
,
2
]}))}
var
o
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
o
.
setStyles
({
"
border-style
"
:
this
.
borderstyle
});
var
u
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_picker
"
);
u
.
hide
(),
this
.
editor
.
save_current_page
()},
edit_annot
:
function
(){
if
(
!
this
.
parent_annot_element
){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonpencil
"
),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonadd
"
);
this
.
hide_picker
(),
e
&&
(
e
.
hide
(),
t
.
hide
()),
L
.
superclass
.
edit_annot
.
call
(
this
)}},
hide_edit
:
function
(){
L
.
superclass
.
hide_edit
.
call
(
this
);
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_display
"
),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonpencil
"
),
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonadd
"
),
r
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_right
"
),
i
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_left
"
);
e
&&
(
e
.
set
(
"
style
"
,
"
display:inline;color:
"
+
this
.
get_color
()
+
"
;
"
),
t
&&
(
t
.
show
(),
n
.
show
()),
r
&&
r
.
hide
(),
i
&&
i
.
hide
())},
remove
:
function
(
e
){
var
t
;
e
.
preventDefault
(),
t
=
this
.
editor
.
pages
[
this
.
editor
.
currentpage
].
annotations
;
for
(
var
n
=
0
;
n
<
t
.
length
;
n
++
)
if
(
t
[
n
]
===
this
){
if
(
this
.
divcartridge
!==
""
){
var
r
=
"
#
"
+
this
.
divcartridge
,
i
=
this
.
editor
.
get_dialogue_element
(
r
);
i
.
remove
()}
t
.
splice
(
n
,
1
),
this
.
drawable
&&
this
.
drawable
.
erase
();
var
s
=
[];
this
.
id
?
s
=
this
.
editor
.
annotationsparent
[
this
.
id
]:
s
=
this
.
editor
.
annotationsparent
[
this
.
divcartridge
];
if
(
s
)
for
(
var
o
=
0
;
o
<
s
.
length
;
o
++
)
for
(
var
u
=
0
;
u
<
t
.
length
;
u
++
)
t
[
u
]
===
s
[
o
]
&&
(
t
.
splice
(
u
,
1
),
s
[
o
].
drawable
&&
s
[
o
].
drawable
.
erase
());
this
.
editor
.
currentannotation
=!
1
,
this
.
editor
.
save_current_page
();
return
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationframe
=
L
;
var
A
=
function
(
e
){
A
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
A
.
NAME
=
"
annotationverticalline
"
,
A
.
ATTRS
=
{},
e
.
extend
(
A
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
,
n
,
r
;
return
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
=
this
.
get_color
(),
n
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Path
,
fill
:
!
1
,
stroke
:{
weight
:
p
,
color
:
r
}}),
n
.
moveTo
(
this
.
x
,
this
.
y
),
this
.
endy
-
this
.
y
<=
30
&&
(
this
.
endy
=
this
.
y
+
30
),
n
.
lineTo
(
this
.
x
,
this
.
endy
),
n
.
end
(),
t
.
shapes
.
push
(
n
),
this
.
drawable
=
t
,
this
.
draw_catridge
(),
A
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
,
i
,
s
;
return
i
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
i
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
start
.
x
,
t
.
start
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
end
.
x
,
t
.
end
.
y
)]),
i
.
has_min_width
()
||
i
.
set_min_width
(),
i
.
has_min_height
()
||
i
.
set_min_height
(),
s
=
this
.
get_color
(),
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Path
,
fill
:
!
1
,
stroke
:{
weight
:
p
,
color
:
s
}}),
r
.
moveTo
(
t
.
start
.
x
,
t
.
start
.
y
),
t
.
end
.
y
-
t
.
start
.
y
<=
30
?
r
.
lineTo
(
t
.
start
.
x
,
t
.
start
.
y
+
30
):
r
.
lineTo
(
t
.
start
.
x
,
t
.
end
.
y
),
r
.
end
(),
n
.
shapes
.
push
(
r
),
n
},
init_from_edit
:
function
(
e
){
return
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
e
.
start
.
x
,
this
.
y
=
e
.
start
.
y
,
this
.
endx
=
e
.
end
.
x
+
4
,
e
.
end
.
y
-
this
.
y
<=
30
?
this
.
endy
=
this
.
y
+
30
:
this
.
endy
=
e
.
end
.
y
,
this
.
page
=
""
,
this
.
endx
-
this
.
x
!==
0
||
this
.
endy
-
this
.
y
!==
0
},
draw_catridge
:
function
(){
var
e
,
t
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
();
if
(
this
.
divcartridge
===
""
){
this
.
init_div_cartridge_id
();
var
n
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
r
=
this
.
get_color_cartridge
();
e
=
this
.
get_div_cartridge
(
r
),
e
.
addClass
(
"
assignfeedback_editpdfplus_verticalline
"
);
var
i
=
this
.
get_div_cartridge_label
(
r
,
!
0
);
e
.
append
(
i
);
var
o
=
this
.
get_div_container
(
r
);
e
.
append
(
o
);
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
u
=
this
.
get_div_edition
();
o
.
append
(
u
)}
else
{
var
a
=
this
.
get_div_visu
(
r
);
o
.
append
(
a
)}
if
(
!
this
.
cartridgex
||
this
.
cartridgex
===
0
)
this
.
cartridgex
=
parseInt
(
this
.
tooltypefamille
.
cartridge_x
,
10
);
if
(
!
this
.
cartridgey
||
this
.
cartridgey
===
0
)
this
.
cartridgey
=
parseInt
(
this
.
tooltypefamille
.
cartridge_y
,
10
);
e
.
setX
(
this
.
x
+
this
.
cartridgex
),
e
.
setY
(
this
.
y
+
this
.
cartridgey
),
n
.
append
(
e
),
this
.
apply_visibility_annot
()}
else
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
),
e
.
setX
(
t
[
0
]
+
this
.
x
+
this
.
cartridgex
),
e
.
setY
(
t
[
1
]
+
this
.
y
+
this
.
cartridgey
);
return
!
0
},
remove
:
function
(
e
){
var
t
,
n
;
e
.
preventDefault
(),
t
=
this
.
editor
.
pages
[
this
.
editor
.
currentpage
].
annotations
;
for
(
n
=
0
;
n
<
t
.
length
;
n
++
)
if
(
t
[
n
]
===
this
){
if
(
this
.
divcartridge
!==
""
){
var
r
=
"
#
"
+
this
.
divcartridge
,
i
=
this
.
editor
.
get_dialogue_element
(
r
);
i
.
remove
()}
t
.
splice
(
n
,
1
),
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
currentannotation
=!
1
,
this
.
editor
.
save_current_page
();
return
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationverticalline
=
A
;
var
O
=
function
(
e
){
O
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
O
.
NAME
=
"
annotationcommentplus
"
,
O
.
ATTRS
=
{},
e
.
extend
(
O
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
n
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
r
,
i
;
return
i
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
,
this
.
y
)),
r
=
e
.
Node
.
create
(
'
<div><i class="fa fa-commenting" aria-hidden="true" style="color:black;"></i></div>
'
),
r
.
setStyles
({
position
:
"
absolute
"
,
display
:
"
inline-block
"
,
zIndex
:
50
,
color
:
this
.
colour
,
padding
:
"
0 2px
"
}),
n
.
append
(
r
),
r
.
setX
(
i
.
x
),
r
.
setY
(
i
.
y
),
t
.
store_position
(
r
,
i
.
x
,
i
.
y
),
t
.
nodes
.
push
(
r
),
this
.
drawable
=
t
,
this
.
draw_catridge
(),
O
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
r
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
i
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGREGION
),
o
,
u
;
return
n
.
bound
([
t
.
start
,
t
.
end
]),
u
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
n
.
x
,
n
.
y
)),
o
=
e
.
Node
.
create
(
"
<div>
"
+
this
.
tooltype
.
label
+
"
</div>
"
),
o
.
setStyles
({
position
:
"
absolute
"
,
display
:
"
inline-block
"
,
zIndex
:
50
,
color
:
this
.
colour
,
padding
:
"
0 2px
"
}),
i
.
append
(
o
),
o
.
setX
(
u
.
x
),
o
.
setY
(
u
.
y
),
r
.
store_position
(
o
,
u
.
x
,
u
.
y
),
r
.
nodes
.
push
(
o
),
r
},
init_from_edit
:
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
;
return
t
.
bound
([
e
.
start
,
e
.
end
]),
t
.
width
<
20
&&
(
t
.
width
=
20
),
t
.
height
<
20
&&
(
t
.
height
=
20
),
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
t
.
x
-
20
,
this
.
y
=
t
.
y
-
10
,
this
.
endx
=
t
.
x
+
t
.
width
,
this
.
endy
=
t
.
y
+
t
.
height
,
!
0
},
draw_catridge
:
function
(){
var
e
,
t
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
();
if
(
this
.
divcartridge
===
""
){
this
.
init_div_cartridge_id
();
var
n
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
r
=
this
.
get_color_cartridge
();
e
=
this
.
get_div_cartridge
(
r
),
e
.
addClass
(
"
assignfeedback_editpdfplus_commentplus
"
);
var
i
=
this
.
get_div_cartridge_label
(
r
);
e
.
append
(
i
);
var
o
=
this
.
get_div_container
(
r
);
e
.
append
(
o
);
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
u
=
this
.
get_div_edition
();
o
.
append
(
u
)}
else
{
var
a
=
this
.
get_div_visu
(
r
);
o
.
append
(
a
)}
e
.
setX
(
this
.
x
+
20
),
e
.
setY
(
this
.
y
),
n
.
append
(
e
),
this
.
apply_visibility_annot
()}
else
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
),
e
.
setX
(
t
[
0
]
+
this
.
x
+
20
),
e
.
setY
(
t
[
1
]
+
this
.
y
);
return
!
0
},
apply_visibility_annot
:
function
(){
O
.
superclass
.
apply_visibility_annot
.
apply
(
this
);
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_display
"
),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_onof
"
),
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_right
"
),
r
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_left
"
);
n
&&
(
n
.
setHTML
(
'
<i class="fa fa-arrow-down" aria-hidden="true"></i>
'
),
r
.
setHTML
(
'
<i class="fa fa-arrow-up" aria-hidden="true"></i>
'
),
t
.
get
(
"
value
"
)
===
"
2
"
?
e
.
setContent
(
"
<table><tr><td>
"
+
this
.
get_text_to_diplay_in_cartridge
().
replace
(
/
\n
/g
,
"
<br/>
"
)
+
"
</td></tr></table><br/>
"
):
t
.
get
(
"
value
"
)
===
"
1
"
?
r
.
setHTML
(
'
<i class="fa fa-arrow-left" aria-hidden="true"></i>
'
):
t
.
get
(
"
value
"
)
===
"
0
"
&&
n
.
setHTML
(
'
<i class="fa fa-arrow-right" aria-hidden="true"></i>
'
))},
move
:
function
(
e
,
t
){
var
n
=
e
-
this
.
x
,
r
=
t
-
this
.
y
;
this
.
x
+=
n
,
this
.
y
+=
r
,
this
.
endx
+=
n
,
this
.
endy
+=
r
,
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
drawables
.
push
(
this
.
draw
())},
remove
:
function
(
e
){
var
t
,
n
;
e
.
preventDefault
(),
t
=
this
.
editor
.
pages
[
this
.
editor
.
currentpage
].
annotations
;
for
(
n
=
0
;
n
<
t
.
length
;
n
++
)
if
(
t
[
n
]
===
this
){
if
(
this
.
divcartridge
!==
""
){
var
r
=
"
#
"
+
this
.
divcartridge
,
i
=
this
.
editor
.
get_dialogue_element
(
r
);
i
.
remove
()}
t
.
splice
(
n
,
1
),
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
currentannotation
=!
1
,
this
.
editor
.
save_current_page
();
return
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationcommentplus
=
O
;
var
_
=
"
Dropdown menu
"
,
D
;
D
=
function
(
e
){
e
.
draggable
=!
1
,
e
.
centered
=!
1
,
e
.
width
=
"
auto
"
,
e
.
visible
=!
1
,
e
.
footerContent
=
""
,
D
.
superclass
.
constructor
.
apply
(
this
,[
e
])},
e
.
extend
(
D
,
M
.
core
.
dialogue
,{
initializer
:
function
(
t
){
var
n
,
r
,
i
,
s
;
D
.
superclass
.
initializer
.
call
(
this
,
t
),
s
=
this
.
get
(
"
boundingBox
"
),
s
.
addClass
(
"
assignfeedback_editpdfplus_dropdown
"
),
n
=
this
.
get
(
"
buttonNode
"
),
r
=
this
.
bodyNode
,
i
=
e
.
Node
.
create
(
"
<h3/>
"
),
i
.
addClass
(
"
accesshide
"
),
i
.
setHTML
(
this
.
get
(
"
headerText
"
)),
r
.
prepend
(
i
),
r
.
on
(
"
clickoutside
"
,
function
(
e
){
this
.
get
(
"
visible
"
)
&&
e
.
target
.
get
(
"
id
"
)
!==
n
.
get
(
"
id
"
)
&&
e
.
target
.
ancestor
().
get
(
"
id
"
)
!==
n
.
get
(
"
id
"
)
&&
(
e
.
preventDefault
(),
this
.
hide
())},
this
),
n
.
on
(
"
click
"
,
function
(
e
){
e
.
preventDefault
(),
this
.
show
()},
this
),
n
.
on
(
"
key
"
,
this
.
show
,
"
enter,space
"
,
this
)},
show
:
function
(){
var
t
=
this
.
get
(
"
buttonNode
"
),
n
=
D
.
superclass
.
show
.
call
(
this
);
return
this
.
align
(
t
,[
e
.
WidgetPositionAlign
.
TL
,
e
.
WidgetPositionAlign
.
BL
]),
n
}},{
NAME
:
_
,
ATTRS
:{
headerText
:{
value
:
""
},
buttonNode
:{
value
:
null
}}}),
e
.
Base
.
modifyAttrs
(
D
,{
modal
:{
getter
:
function
(){
return
!
1
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
dropdown
=
D
;
var
P
=
"
Colourpicker
"
,
H
;
H
=
function
(
e
){
H
.
superclass
.
constructor
.
apply
(
this
,[
e
])},
e
.
extend
(
H
,
M
.
assignfeedback_editpdfplus
.
dropdown
,{
initializer
:
function
(
t
){
var
n
=
e
.
Node
.
create
(
'
<ul role="menu" class="assignfeedback_editpdfplus_menu"/>
'
),
r
,
i
;
e
.
each
(
this
.
get
(
"
colours
"
),
function
(
t
,
r
){
var
s
,
o
,
u
;
u
=
M
.
util
.
get_string
(
r
,
"
assignfeedback_editpdfplus
"
),
r
===
"
white
"
||
r
===
"
yellowlemon
"
?
i
=
e
.
Node
.
create
(
'
<span class="fa-stack fa-lg"><i class="fa fa-square fa-stack-2x" style="color:#E3E3E3;"></i><i class="fa fa-tint fa-stack-1x fa-inverse" aria-hidden="true" style="color:
'
+
t
+
'
;">
'
+
"
</i>
"
+
"
</span>
"
):
i
=
e
.
Node
.
create
(
'
<span class="fa-stack fa-lg"><i class="fa fa-square-o fa-stack-2x" style="color:#E3E3E3;"></i><i class="fa fa-tint fa-stack-1x" aria-hidden="true" style="color:
'
+
t
+
'
;">
'
+
"
</i>
"
+
"
</span>
"
),
s
=
e
.
Node
.
create
(
'
<button class="btn btn-default btn-sm" type="button"></button>
'
),
s
.
append
(
i
),
s
.
setAttribute
(
"
data-colour
"
,
r
),
s
.
setAttribute
(
"
data-rgb
"
,
t
),
s
.
setStyle
(
"
backgroundImage
"
,
"
none
"
),
o
=
e
.
Node
.
create
(
"
<li/>
"
),
o
.
append
(
s
),
n
.
append
(
o
)},
this
),
r
=
e
.
Node
.
create
(
"
<div/>
"
),
n
.
delegate
(
"
click
"
,
this
.
callback_handler
,
"
button
"
,
this
),
n
.
delegate
(
"
key
"
,
this
.
callback_handler
,
"
down:13
"
,
"
button
"
,
this
),
this
.
set
(
"
headerText
"
,
M
.
util
.
get_string
(
"
colourpicker
"
,
"
assignfeedback_editpdfplus
"
)),
r
.
append
(
n
),
this
.
set
(
"
bodyContent
"
,
r
),
H
.
superclass
.
initializer
.
call
(
this
,
t
)},
callback_handler
:
function
(
t
){
t
.
preventDefault
();
var
n
=
this
.
get
(
"
callback
"
),
r
=
this
.
get
(
"
context
"
),
i
;
this
.
hide
(),
i
=
e
.
bind
(
n
,
r
,
t
),
i
()}},{
NAME
:
P
,
ATTRS
:{
colours
:{
value
:{}},
callback
:{
value
:
null
},
context
:{
value
:
null
},
iconprefix
:{
value
:
"
colour_
"
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
colourpicker
=
H
;
var
B
=
function
(){
B
.
superclass
.
constructor
.
apply
(
this
,
arguments
)};
B
.
prototype
=
{
dialogue
:
null
,
panel
:
null
,
pagecount
:
0
,
currentpage
:
0
,
pages
:[],
documentstatus
:
0
,
loadingicon
:
null
,
pageimage
:
null
,
graphic
:
null
,
currentedit
:
new
M
.
assignfeedback_editpdfplus
.
edit
,
currentdrawable
:
!
1
,
drawables
:[],
drawablesannotations
:[],
currentannotation
:
null
,
lastanntationtool
:
"
pen
"
,
currentstamp
:
null
,
stamps
:[],
annotationsparent
:[],
studentstatut
:
-
1
,
questionstatut
:
-
1
,
currentannotationreview
:
null
,
initializer
:
function
(){
var
t
;
t
=
e
.
one
(
"
#
"
+
this
.
get
(
"
linkid
"
)),
t
&&
(
t
.
on
(
"
click
"
,
this
.
link_handler
,
this
),
t
.
on
(
"
key
"
,
this
.
link_handler
,
"
down:13
"
,
this
),
require
([
"
mod_assign/grading_review_panel
"
],
function
(
n
){
var
r
=
new
n
,
i
=
r
.
getReviewPanel
(
"
assignfeedback_editpdfplus
"
);
i
&&
(
i
=
e
.
one
(
i
),
i
.
empty
(),
t
.
ancestor
(
"
.fitem
"
).
hide
(),
this
.
open_in_panel
(
i
)),
this
.
currentedit
.
start
=!
1
,
this
.
currentedit
.
end
=!
1
}.
bind
(
this
)))},
refresh_button_state
:
function
(){
var
e
,
t
;
this
.
refresh_button_color_state
(),
this
.
currentedit
.
id
?
e
=
this
.
get_dialogue_element
(
"
#
"
+
this
.
currentedit
.
id
):
e
=
this
.
get_dialogue_element
(
l
[
this
.
currentedit
.
tool
]),
e
&&
(
e
.
addClass
(
"
assignfeedback_editpdfplus_selectedbutton
"
),
e
.
setAttribute
(
"
aria-pressed
"
,
"
true
"
)),
t
=
this
.
get_dialogue_element
(
s
.
DRAWINGREGION
),
t
.
setAttribute
(
"
data-currenttool
"
,
this
.
currentedit
.
tool
)},
refresh_button_color_state
:
function
(){
var
e
;
e
=
this
.
get_dialogue_element
(
s
.
ANNOTATIONCOLOURBUTTON
);
if
(
this
.
currentedit
.
annotationcolour
===
"
white
"
)
e
.
one
(
"
i
"
).
setStyle
(
"
color
"
,
this
.
currentedit
.
annotationcolour
),
e
.
setStyle
(
"
background-color
"
,
"
#EEEEEE
"
);
else
{
switch
(
this
.
currentedit
.
annotationcolour
){
case
"
yellowlemon
"
:
e
.
one
(
"
i
"
).
setStyle
(
"
color
"
,
"
#fff44f
"
);
break
;
case
"
yellow
"
:
e
.
one
(
"
i
"
).
setStyle
(
"
color
"
,
"
rgb(255,207,53)
"
);
break
;
default
:
e
.
one
(
"
i
"
).
setStyle
(
"
color
"
,
this
.
currentedit
.
annotationcolour
)}
e
.
setStyle
(
"
background-color
"
,
"
transparent
"
)}},
get_canvas_bounds
:
function
(){
var
e
=
this
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
t
=
e
.
getXY
(),
n
=
t
[
0
],
r
=
t
[
1
],
i
=
parseInt
(
e
.
getStyle
(
"
width
"
),
10
),
o
=
parseInt
(
e
.
getStyle
(
"
height
"
),
10
);
return
new
M
.
assignfeedback_editpdfplus
.
rect
(
n
,
r
,
i
,
o
)},
get_canvas_coordinates
:
function
(
e
){
var
t
=
this
.
get_canvas_bounds
(),
n
=
new
M
.
assignfeedback_editpdfplus
.
point
(
e
.
x
-
t
.
x
,
e
.
y
-
t
.
y
);
return
t
.
x
=
t
.
y
=
0
,
n
.
clip
(
t
),
n
},
get_window_coordinates
:
function
(
e
){
var
t
=
this
.
get_canvas_bounds
(),
n
=
new
M
.
assignfeedback_editpdfplus
.
point
(
e
.
x
+
t
.
x
,
e
.
y
+
t
.
y
);
return
n
},
open_in_panel
:
function
(
t
){
var
n
,
r
;
this
.
panel
=
t
,
t
.
append
(
this
.
get
(
"
body
"
)),
t
.
addClass
(
i
.
DIALOGUE
),
this
.
loadingicon
=
this
.
get_dialogue_element
(
s
.
LOADINGICON
),
n
=
this
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
this
.
graphic
=
new
e
.
Graphic
({
render
:
n
}),
r
=
this
.
get_dialogue_element
(
s
.
DRAWINGREGION
),
r
.
on
(
"
scroll
"
,
this
.
move_canvas
,
this
),
this
.
get
(
"
readonly
"
)
||
(
n
.
on
(
"
gesturemovestart
"
,
this
.
edit_start
,
null
,
this
),
n
.
on
(
"
gesturemove
"
,
this
.
edit_move
,
null
,
this
),
n
.
on
(
"
gesturemoveend
"
,
this
.
edit_end
,
null
,
this
),
this
.
refresh_button_state
()),
this
.
start_generation
()},
link_handler
:
function
(
t
){
var
n
,
r
,
o
=!
0
;
t
.
preventDefault
(),
this
.
dialogue
||
(
this
.
dialogue
=
new
M
.
core
.
dialogue
({
headerContent
:
this
.
get
(
"
header
"
),
bodyContent
:
this
.
get
(
"
body
"
),
footerContent
:
this
.
get
(
"
footer
"
),
modal
:
!
0
,
width
:
"
840px
"
,
visible
:
!
1
,
draggable
:
!
0
}),
this
.
dialogue
.
get
(
"
boundingBox
"
).
addClass
(
i
.
DIALOGUE
),
this
.
loadingicon
=
this
.
get_dialogue_element
(
s
.
LOADINGICON
),
n
=
this
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
this
.
graphic
=
new
e
.
Graphic
({
render
:
n
}),
r
=
this
.
get_dialogue_element
(
s
.
DRAWINGREGION
),
r
.
on
(
"
scroll
"
,
this
.
move_canvas
,
this
),
this
.
get
(
"
readonly
"
)
||
(
n
.
on
(
"
gesturemovestart
"
,
this
.
edit_start
,
null
,
this
),
n
.
on
(
"
gesturemove
"
,
this
.
edit_move
,
null
,
this
),
n
.
on
(
"
gesturemoveend
"
,
this
.
edit_end
,
null
,
this
),
this
.
refresh_button_state
()),
this
.
start_generation
(),
n
.
on
(
"
windowresize
"
,
this
.
resize
,
this
),
o
=!
1
),
this
.
dialogue
.
centerDialogue
(),
this
.
dialogue
.
show
(),
this
.
dialogue
.
dd
.
on
(
"
drag:end
"
,
this
.
redraw
,
this
),
o
&&
this
.
resize
()},
start_generation
:
function
(){
this
.
poll_document_conversion_status
()},
poll_document_conversion_status
:
function
(){
if
(
this
.
get
(
"
destroyed
"
))
return
;
e
.
io
(
n
,{
method
:
"
get
"
,
context
:
this
,
sync
:
!
1
,
data
:{
sesskey
:
M
.
cfg
.
sesskey
,
action
:
"
pollconversions
"
,
userid
:
this
.
get
(
"
userid
"
),
attemptnumber
:
this
.
get
(
"
attemptnumber
"
),
assignmentid
:
this
.
get
(
"
assignmentid
"
),
readonly
:
this
.
get
(
"
readonly
"
)?
1
:
0
},
on
:{
success
:
function
(
t
,
n
){
var
r
=
this
.
handle_response_data
(
n
),
i
=!
1
;
if
(
r
){
this
.
documentstatus
=
r
.
status
;
if
(
r
.
status
===
0
)
i
=!
0
;
else
if
(
r
.
status
===
1
)
i
=!
0
;
else
if
(
r
.
status
===
2
||
r
.
status
===-
1
)
this
.
pagecount
=
r
.
pagecount
,
r
.
pageready
===
r
.
pagecount
?
this
.
prepare_pages_for_display
(
r
):(