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
7ddd2d25
Commit
7ddd2d25
authored
Oct 05, 2016
by
M. Chardon
Browse files
buf affichage visu étudiant sur click sucessif d'un item
parent
c3ad9fef
Changes
5
Hide whitespace changes
Inline
Side-by-side
yui/build/moodle-assignfeedback_editpdfplus-editor/moodle-assignfeedback_editpdfplus-editor-debug.js
View file @
7ddd2d25
...
...
@@ -1221,7 +1221,8 @@ Y.extend(ANNOTATION, Y.Base, {
return
true
;
},
view_annot
:
function
(
e
,
clickType
)
{
if
(
!
clickType
||
!
(
clickType
===
'
click
'
))
{
if
(
!
clickType
||
!
(
clickType
===
'
click
'
&&
this
.
editor
.
currentannotationreview
===
this
))
{
this
.
editor
.
currentannotationreview
=
this
;
if
(
this
.
tooltype
.
type
<=
TOOLTYPE
.
COMMENTPLUS
&&
!
this
.
parent_annot_element
)
{
var
divprincipale
=
this
.
editor
.
get_dialogue_element
(
'
#
'
+
this
.
divcartridge
);
var
divdisplay
=
this
.
editor
.
get_dialogue_element
(
'
#
'
+
this
.
divcartridge
+
"
_display
"
);
...
...
@@ -1249,6 +1250,8 @@ Y.extend(ANNOTATION, Y.Base, {
divprincipale
.
detach
();
divprincipale
.
on
(
'
clickoutside
'
,
this
.
hide_edit
,
this
,
'
clickoutside
'
);
}
}
else
{
this
.
editor
.
currentannotationreview
=
null
;
}
},
edit_annot
:
function
(
e
)
{
...
...
@@ -5613,6 +5616,7 @@ EDITOR.prototype = {
editingcomment
:
false
,
annotationsparent
:
[],
studentstatut
:
-
1
,
currentannotationreview
:
null
,
/**
* Called during the initialisation process of the object.
* @method initializer
...
...
@@ -5962,7 +5966,7 @@ EDITOR.prototype = {
var
parentannot
=
[];
for
(
j
=
0
;
j
<
this
.
pages
[
i
].
annotations
.
length
;
j
++
)
{
data
=
this
.
pages
[
i
].
annotations
[
j
];
Y
.
log
(
'
all_pages_loaded :
'
+
data
.
id
+
"
-
"
+
data
.
parent_annot
);
Y
.
log
(
'
all_pages_loaded :
'
+
data
.
id
+
"
-
"
+
data
.
parent_annot
);
if
(
data
.
parent_annot
&&
parseInt
(
data
.
parent_annot
)
!==
0
)
{
data
.
parent_annot_element
=
parentannot
[
data
.
parent_annot
];
}
...
...
@@ -6078,7 +6082,7 @@ EDITOR.prototype = {
context
:
this
});
},
update_student_feedback
:
function
(){
update_student_feedback
:
function
()
{
this
.
refresh_pdf
();
},
update_visu_annotation
:
function
()
{
...
...
@@ -6567,14 +6571,14 @@ EDITOR.prototype = {
return
new
M
.
core
.
ajaxException
(
jsondata
);
}
Y
.
one
(
SELECTOR
.
UNSAVEDCHANGESINPUT
).
set
(
'
value
'
,
'
true
'
);
Y
.
one
(
SELECTOR
.
UNSAVEDCHANGESDIV
).
setStyle
(
'
opacity
'
,
1
);
Y
.
one
(
SELECTOR
.
UNSAVEDCHANGESDIV
).
setStyle
(
'
display
'
,
'
inline-block
'
);
Y
.
one
(
SELECTOR
.
UNSAVEDCHANGESDIV
).
transition
({
Y
.
one
(
SELECTOR
.
UNSAVEDCHANGESDIV
EDIT
).
setStyle
(
'
opacity
'
,
1
);
Y
.
one
(
SELECTOR
.
UNSAVEDCHANGESDIV
EDIT
).
setStyle
(
'
display
'
,
'
inline-block
'
);
Y
.
one
(
SELECTOR
.
UNSAVEDCHANGESDIV
EDIT
).
transition
({
duration
:
1
,
delay
:
2
,
opacity
:
0
},
function
()
{
Y
.
one
(
SELECTOR
.
UNSAVEDCHANGESDIV
).
setStyle
(
'
display
'
,
'
none
'
);
Y
.
one
(
SELECTOR
.
UNSAVEDCHANGESDIV
EDIT
).
setStyle
(
'
display
'
,
'
none
'
);
});
}
catch
(
e
)
{
return
new
M
.
core
.
exception
(
e
);
...
...
yui/build/moodle-assignfeedback_editpdfplus-editor/moodle-assignfeedback_editpdfplus-editor-min.js
View file @
7ddd2d25
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
"
,
s
=
{
DIALOGUE
:
"
assignfeedback_editpdfplus_widget
"
},
o
=
{
PREVIOUSBUTTON
:
"
.navigate-previous-button
"
,
NEXTBUTTON
:
"
.navigate-next-button
"
,
SEARCHCOMMENTSBUTTON
:
"
.searchcommentsbutton
"
,
SEARCHFILTER
:
"
.assignfeedback_editpdfplus_commentsearch input
"
,
SEARCHCOMMENTSLIST
:
"
.assignfeedback_editpdfplus_commentsearch ul
"
,
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
:
"
.
"
+
s
.
DIALOGUE
,
CUSTOMTOOLBARID
:
"
#toolbaraxis
"
,
CUSTOMTOOLBARS
:
"
.customtoolbar
"
,
AXISCUSTOMTOOLBAR
:
"
.menuaxisselection
"
,
CUSTOMTOOLBARBUTTONS
:
"
.costumtoolbarbutton
"
,
STATUTSELECTOR
:
"
#menustatutselection
"
,
STUDENTVALIDATION
:
"
#student_valide_button
"
},
u
=
"
rgba(200, 200, 255, 0.9)
"
,
a
=
"
rgba(200, 200, 255, 0.5)
"
,
f
=
"
rgb(51, 51, 51)
"
,
l
=
{
white
:
"
rgb(255,255,255)
"
,
yellowlemon
:
"
rgb(255,255,0)
"
,
yellow
:
"
rgb(255,236,174)
"
,
red
:
"
rgb(249,181,179)
"
,
green
:
"
rgb(214,234,178)
"
,
blue
:
"
rgb(203,217,237)
"
,
clear
:
"
rgba(255,255,255, 0)
"
},
c
=
{
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(125,159,211)
"
,
black
:
"
rgb(51,51,51)
"
},
h
=
300
,
p
=
{
pen
:
"
.penbutton
"
,
line
:
"
.linebutton
"
,
rectangle
:
"
.rectanglebutton
"
,
oval
:
"
.ovalbutton
"
,
select
:
"
.selectbutton
"
,
drag
:
"
.dragbutton
"
,
highlight
:
"
.highlightbutton
"
},
d
=
{
HIGHLIGHTPLUS
:
1
,
LINEPLUS
:
2
,
STAMPPLUS
:
3
,
FRAME
:
4
,
VERTICALLINE
:
5
,
STAMPCOMMENT
:
6
,
COMMENTPLUS
:
7
,
PEN
:
8
,
LINE
:
9
,
RECTANGLE
:
10
,
OVAL
:
11
,
HIGHLIGHT
:
12
},
v
=
{
HIGHLIGHTPLUS
:
"
highlightplus
"
,
LINEPLUS
:
"
lineplus
"
,
STAMPPLUS
:
"
stampplus
"
,
FRAME
:
"
frame
"
,
VERTICALLINE
:
"
verticalline
"
,
STAMPCOMMENT
:
"
stampcomment
"
,
COMMENTPLUS
:
"
commentplus
"
,
PEN
:
"
pen
"
,
LINE
:
"
line
"
,
RECTANGLE
:
"
rectangle
"
,
OVAL
:
"
oval
"
,
HIGHLIGHT
:
"
highlight
"
},
m
=
2
,
g
=
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
=
g
;
var
y
=
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
=
y
;
var
b
=
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
=
b
;
var
w
=
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
,
s
;
r
=
this
.
editor
.
get_dialogue_element
(
o
.
DRAWINGREGION
),
i
=
parseInt
(
r
.
get
(
"
scrollLeft
"
),
10
),
s
=
parseInt
(
r
.
get
(
"
scrollTop
"
),
10
),
e
.
setData
(
"
x
"
,
t
+
i
),
e
.
setData
(
"
y
"
,
n
+
s
)}};
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
drawable
=
w
;
var
E
=
function
(
e
){
E
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
E
.
NAME
=
"
annotation
"
,
E
.
ATTRS
=
{},
e
.
extend
(
E
,
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
),
this
.
displayrotation
=
e
.
parent_annot_element
.
displayrotation
,
this
.
borderstyle
=
e
.
parent_annot_element
.
borderstyle
||
"
solid
"
,
this
.
parent_annot
=
parseInt
(
e
.
parent_annot_element
.
id
),
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
),
this
.
displayrotation
=
e
.
displayrotation
,
this
.
borderstyle
=
e
.
borderstyle
||
"
solid
"
,
this
.
parent_annot
=
parseInt
(
e
.
parent_annot
),
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
(
d
.
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
),
studentstatus
:
parseInt
(
this
.
studentstatus
)}},
light_clean
:
function
(){
return
{
id
:
this
.
id
,
studentstatus
:
parseInt
(
this
.
studentstatus
),
studentanswer
:
this
.
studentanswer
}},
draw_highlight
:
function
(){
var
t
,
n
=
this
.
editor
.
get_dialogue_element
(
o
.
DRAWINGREGION
),
r
=
this
.
editor
.
get_dialogue_element
(
o
.
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
:
m
,
color
:
u
},
fill
:{
color
:
a
},
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
s
=
e
.
Node
.
create
(
'
<img src="
'
+
M
.
util
.
image_url
(
"
trash
"
,
"
assignfeedback_editpdfplus
"
)
+
'
"/>
'
),
f
=
e
.
Node
.
create
(
'
<a href="#" role="button"></a>
'
);
s
.
setAttrs
({
alt
:
M
.
util
.
get_string
(
"
deleteannotation
"
,
"
assignfeedback_editpdfplus
"
)}),
s
.
setStyles
({
backgroundColor
:
"
white
"
}),
f
.
addClass
(
"
deleteannotationbutton
"
),
f
.
append
(
s
),
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
=
c
[
this
.
colour
];
return
e
?(
e
=
e
.
replace
(
"
rgb
"
,
"
rgba
"
),
e
=
e
.
replace
(
"
)
"
,
"
,0.5)
"
)):
e
=
this
.
colour
,
e
},
get_color_cartridge
:
function
(){
var
e
=
c
[
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
()
+
'
" >
'
+
this
.
get_valref
()
+
"
</textarea>
"
,
t
+=
"
</div>
"
;
var
n
=
e
.
Node
.
create
(
t
),
r
=
this
.
tooltype
.
texts
;
if
(
r
&&
r
.
length
>
0
){
var
s
=
"
<div></div>
"
,
o
=
e
.
Node
.
create
(
s
),
u
=
r
.
split
(
'
","
'
);
for
(
i
=
0
;
i
<
u
.
length
;
i
++
){
var
a
=
"
<p class='btn btn-default'>
"
+
u
[
i
].
replace
(
'
"
'
,
""
)
+
"
</p>
"
,
f
=
e
.
Node
.
create
(
a
);
f
.
on
(
"
click
"
,
this
.
fill_input_edition
,
this
,
u
[
i
].
replace
(
'
"
'
,
""
)),
o
.
append
(
f
)}
n
.
append
(
o
)}
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;'>R
\
u00e9ponse</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;'><img src='
"
+
M
.
util
.
image_url
(
"
e/save
"
,
"
core
"
)
+
"
' /></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
=
this
.
get_input_valref
(),
o
=
1
;
this
.
displaylock
&&
(
o
=
this
.
displaylock
);
var
u
=
e
.
Node
.
create
(
"
<input type='hidden' id='
"
+
this
.
divcartridge
+
"
_onof' value=
"
+
o
+
"
/>
"
),
a
=
this
.
editor
.
get
(
"
readonly
"
);
a
||
i
.
on
(
"
click
"
,
this
.
edit_annot
,
this
),
r
.
append
(
i
),
r
.
append
(
s
),
r
.
append
(
u
),
r
.
append
(
this
.
get_input_question
());
var
a
=
this
.
editor
.
get
(
"
readonly
"
);
return
a
?
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 >non trait
\
u00e9</label>
'
,
n
=
'
<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>
"
,
r
=
'
<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>
"
,
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'
"
;
t
+=
"
><img src='
"
,
t
+=
M
.
util
.
image_url
(
"
t/right
"
,
"
core
"
),
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'
"
;
t
+=
"
><img src='
"
,
t
+=
M
.
util
.
image_url
(
"
t/left
"
,
"
core
"
),
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;'><img src='
"
+
M
.
util
.
image_url
(
"
t/check
"
,
"
core
"
)
+
"
' /></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;'><img src='
"
+
M
.
util
.
image_url
(
"
t/reset
"
,
"
core
"
)
+
"
' /></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;'><img src='
"
+
M
.
util
.
image_url
(
"
help_no
"
,
"
assignfeedback_editpdfplus
"
)
+
"
' /></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;'><img src='
"
+
M
.
util
.
image_url
(
"
trash
"
,
"
assignfeedback_editpdfplus
"
)
+
"
' /></button>
"
,
n
=
e
.
Node
.
create
(
t
);
return
n
.
on
(
"
click
"
,
this
.
remove
,
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
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_valref
"
).
get
(
"
value
"
),
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
"
));
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
"
)),
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
.
annotationsparent
[
this
.
id
];
if
(
n
)
for
(
var
r
=
0
;
r
<
n
.
length
;
r
++
)
n
[
r
].
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
"
))),
e
&&
(
n
===
1
?
e
.
one
(
"
img
"
).
setAttribute
(
"
src
"
,
M
.
util
.
image_url
(
"
help
"
,
"
core
"
)):
e
.
one
(
"
img
"
).
setAttribute
(
"
src
"
,
M
.
util
.
image_url
(
"
help_no
"
,
"
assignfeedback_editpdfplus
"
)));
return
},
move_cartridge_begin
:
function
(
e
){
e
.
preventDefault
();
var
t
=
this
.
editor
.
get_dialogue_element
(
o
.
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
;
var
i
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_cartridge
"
);
i
.
on
(
"
mousemove
"
,
this
.
move_cartridge_continue
,
this
),
i
.
on
(
"
mouseup
"
,
this
.
move_cartridge_stop
,
this
)},
draw_catridge
:
function
(
e
){
return
!
0
},
view_annot
:
function
(
t
,
n
){
if
(
!
n
||
n
!==
"
click
"
)
if
(
this
.
tooltype
.
type
<=
d
.
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
.
set
(
this
.
studentanswer
)}
for
(
var
f
=
0
;
f
<
u
.
size
();
f
++
){
var
l
=
u
.
item
(
f
);
parseInt
(
l
.
get
(
"
value
"
))
===
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
"
)}},
edit_annot
:
function
(
e
){
if
(
this
.
tooltype
.
type
<=
d
.
COMMENTPLUS
&&!
this
.
parent_annot_element
){
var
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
),
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_display
"
),
r
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_edit
"
),
i
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_right
"
),
s
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_left
"
),
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
+
"
_editinput
"
);
n
.
hide
(),
i
&&
i
.
hide
(),
s
&&
s
.
hide
(),
f
&&
f
.
hide
(),
r
.
show
(),
o
.
show
(),
u
.
show
(),
a
&&
a
.
show
(),
l
.
show
(),
t
.
setStyle
(
"
z-index
"
,
1
e3
),
c
.
set
(
"
focus
"
,
"
on
"
),
this
.
disabled_canvas_event
(),
t
.
on
(
"
clickoutside
"
,
this
.
cancel_edit
,
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
:
function
(
e
){
if
(
typeof
e
!=
"
string
"
){
var
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_editinput
"
);
e
=
t
.
get
(
"
value
"
)}
this
.
textannot
=
e
,
this
.
editor
.
save_current_page
(),
e
.
length
===
0
&&
(
e
=
"
"
);
var
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_valref
"
);
n
.
set
(
"
value
"
,
e
),
this
.
hide_edit
(),
this
.
apply_visibility_annot
()},
save_studentanswer
:
function
(
e
){
var
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_studentanswer
"
);
this
.
studentanswer
=
t
.
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
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_valref
"
),
r
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_editinput
"
);
if
(
n
){
var
i
=
n
.
get
(
"
value
"
);
r
.
set
(
"
value
"
,
i
)}
this
.
hide_edit
(),
this
.
apply_visibility_annot
();
var
s
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
s
&&
s
.
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
),
this
.
editor
.
get
(
"
readonly
"
)
&&
(
n
.
detach
(),
n
.
on
(
"
click
"
,
this
.
view_annot
,
this
,
"
click
"
))),
i
&&
this
.
enabled_canvas_event
(),
c
&&
c
.
hide
()}},
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
(
o
.
DRAWINGCANVAS
);
e
.
detach
()},
enabled_canvas_event
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
o
.
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
=
E
;
var
S
=
function
(
e
){
S
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
S
.
NAME
=
"
annotationline
"
,
S
.
ATTRS
=
{},
e
.
extend
(
S
,
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
:
m
,
color
:
c
[
this
.
colour
]}}),
n
.
moveTo
(
this
.
x
,
this
.
y
),
n
.
lineTo
(
this
.
endx
,
this
.
endy
),
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
;
return
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Path
,
fill
:
!
1
,
stroke
:{
weight
:
m
,
color
:
c
[
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
=
S
;
var
x
=
function
(
e
){
x
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
x
.
NAME
=
"
annotationrectangle
"
,
x
.
ATTRS
=
{},
e
.
extend
(
x
,
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
:
m
,
color
:
c
[
this
.
colour
]},
x
:
n
.
x
,
y
:
n
.
y
}),
t
.
shapes
.
push
(
r
),
this
.
drawable
=
t
,
x
.
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
:
m
,
color
:
c
[
t
.
annotationcolour
]},
x
:
i
.
x
,
y
:
i
.
y
}),
n
.
shapes
.
push
(
r
),
n
}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationrectangle
=
x
;
var
T
=
function
(
e
){
T
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
T
.
NAME
=
"
annotationoval
"
,
T
.
ATTRS
=
{},
e
.
extend
(
T
,
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
:
m
,
color
:
c
[
this
.
colour
]},
x
:
n
.
x
,
y
:
n
.
y
}),
t
.
shapes
.
push
(
r
),
this
.
drawable
=
t
,
T
.
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
:
m
,
color
:
c
[
t
.
annotationcolour
]},
x
:
i
.
x
,
y
:
i
.
y
}),
n
.
shapes
.
push
(
r
),
n
}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationoval
=
T
;
var
N
=
function
(
e
){
N
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
N
.
NAME
=
"
annotationpen
"
,
N
.
ATTRS
=
{},
e
.
extend
(
N
,
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
:
m
,
color
:
c
[
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
,
N
.
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
:
m
,
color
:
c
[
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
=
N
;
var
C
=
function
(
e
){
C
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
C
.
NAME
=
"
annotationhighlight
"
,
C
.
ATTRS
=
{},
e
.
extend
(
C
,
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
=
c
[
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
,
C
.
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
=
c
[
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
=
C
;
var
k
=
function
(
e
){
k
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
k
.
NAME
=
"
annotationhighlightplus
"
,
k
.
ATTRS
=
{},
e
.
extend
(
k
,
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
(),
k
.
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
(
e
){
var
t
=
this
.
editor
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
).
getXY
();
if
(
this
.
divcartridge
===
""
){
this
.
init_div_cartridge_id
();
var
n
=
this
.
editor
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
),
r
=
this
.
get_color_cartridge
(),
i
=
this
.
get_div_cartridge
(
r
);
i
.
addClass
(
"
assignfeedback_editpdfplus_hightlightplus
"
);
var
s
=
this
.
get_div_cartridge_label
(
r
);
i
.
append
(
s
);
var
u
=
this
.
get_div_container
(
r
);
i
.
append
(
u
);
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
a
=
this
.
get_div_edition
();
u
.
append
(
a
)}
else
{
var
f
=
this
.
get_div_visu
(
r
);
u
.
append
(
f
)}
if
(
!
this
.
cartridgex
||
this
.
cartridgex
===
0
)
this
.
cartridgex
=
parseInt
(
this
.
tooltypefamille
.
cartridge_x
);
if
(
!
this
.
cartridgey
||
this
.
cartridgey
===
0
)
this
.
cartridgey
=
parseInt
(
this
.
tooltypefamille
.
cartridge_y
);
i
.
setX
(
this
.
x
+
this
.
cartridgex
),
i
.
setY
(
this
.
y
+
this
.
cartridgey
),
n
.
append
(
i
),
this
.
apply_visibility_annot
()}
else
{
var
i
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
i
.
setX
(
t
[
0
]
+
this
.
x
+
this
.
cartridgex
),
i
.
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
=
k
;
var
L
=
function
(
e
){
L
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
L
.
NAME
=
"
annotationstamp
"
,
L
.
ATTRS
=
{},
e
.
extend
(
L
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
n
=
this
.
editor
.
get_dialogue_element
(
o
.
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
,
L
.
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
(
o
.
DRAWINGREGION
),
s
,
u
;
return
n
.
bound
([
t
.
start
,
t
.
end
]),
u
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
n
.
x
,
n
.
y
)),
s
=
e
.
Node
.
create
(
"
<div/>
"
),
s
.
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
(
s
),
s
.
setX
(
u
.
x
),
s
.
setY
(
u
.
y
),
r
.
store_position
(
s
,
u
.
x
,
u
.
y
),
r
.
nodes
.
push
(
s
),
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
=
L
;
var
A
=
function
(
e
){
A
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
A
.
NAME
=
"
annotationstampplus
"
,
A
.
ATTRS
=
{},
e
.
extend
(
A
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
n
=
this
.
editor
.
get_dialogue_element
(
o
.
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
,
A
.
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
(
o
.
DRAWINGREGION
),
s
,
u
;
return
n
.
bound
([
t
.
start
,
t
.
end
]),
u
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
n
.
x
,
n
.
y
)),
s
=
e
.
Node
.
create
(
"
<div>
"
+
this
.
tooltype
.
label
+
"
</div>
"
),
s
.
setStyles
({
position
:
"
absolute
"
,
display
:
"
inline-block
"
,
color
:
this
.
colour
,
border
:
"
2px solid
"
+
this
.
colour
,
padding
:
"
0 2px
"
}),
i
.
append
(
s
),
s
.
setX
(
u
.
x
),
s
.
setY
(
u
.
y
),
r
.
store_position
(
s
,
u
.
x
,
u
.
y
),
r
.
nodes
.
push
(
s
),
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
-
20
,
this
.
y
=
t
.
y
-
10
,
this
.
endx
=
t
.
x
+
t
.
width
,
this
.
endy
=
t
.
y
+
t
.
height
,
!
0
},
edit_annot
:
function
(
e
){
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
=
A
;
var
O
=
function
(
e
){
O
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
O
.
NAME
=
"
annotationstampcomment
"
,
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
(
o
.
DRAWINGCANVAS
),
r
,
i
;
return
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
)),
r
=
e
.
Node
.
create
(
'
<div id="
'
+
this
.
shape_id
+
'
"/>
'
),
r
.
setStyles
({
position
:
"
absolute
"
,
display
:
"
inline-block
"
,
backgroundImage
:
"
url(
"
+
M
.
util
.
image_url
(
"
twoway_h
"
,
"
assignfeedback_editpdfplus
"
)
+
"
)
"
,
width
:
this
.
endx
-
this
.
x
,
height
:
this
.
endy
-
this
.
y
,
backgroundSize
:
"
100% 100%
"
}),
this
.
displayrotation
>
0
&&
r
.
setStyles
({
backgroundImage
:
"
url(
"
+
M
.
util
.
image_url
(
"
twoway_v
"
,
"
assignfeedback_editpdfplus
"
)
+
"
)
"
}),
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
(
o
.
DRAWINGREGION
),
s
,
u
;
return
n
.
bound
([
t
.
start
,
t
.
end
]),
u
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
n
.
x
,
n
.
y
)),
s
=
e
.
Node
.
create
(
"
<div/>
"
),
s
.
setStyles
({
position
:
"
absolute
"
,
display
:
"
inline-block
"
,
backgroundImage
:
"
url(
"
+
M
.
util
.
image_url
(
"
twoway_h
"
,
"
assignfeedback_editpdfplus
"
)
+
"
)
"
,
width
:
n
.
width
,
height
:
n
.
height
,
backgroundSize
:
"
100% 100%
"
}),
i
.
append
(
s
),
s
.
setX
(
u
.
x
),
s
.
setY
(
u
.
y
),
r
.
store_position
(
s
,
u
.
x
,
u
.
y
),
r
.
nodes
.
push
(
s
),
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
,
this
.
colour
=
e
.
annotationcolour
,
this
.
path
=
e
.
stampcomment
,
!
0
},
draw_catridge
:
function
(
t
){
var
n
=
this
.
editor
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
).
getXY
();
if
(
this
.
divcartridge
===
""
){
this
.
init_div_cartridge_id
();
var
r
=
this
.
editor
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
),
i
=
this
.
get_color_cartridge
(),
s
=
this
.
get_div_cartridge
(
i
);
s
.
addClass
(
"
assignfeedback_editpdfplus_stampcomment
"
);
var
u
=
this
.
get_div_cartridge_label
(
i
);
s
.
append
(
u
);
var
a
=
this
.
get_div_container
(
i
);
s
.
append
(
a
);
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
f
=
0
;
this
.
displayrotation
>
0
&&
(
f
=
1
);
var
l
=
e
.
Node
.
create
(
"
<input type='hidden' id='
"
+
this
.
divcartridge
+
"
_rotation' value=
"
+
f
+
"
/>
"
);
a
.
append
(
l
);
var
c
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonrotation'><img src='
"
+
M
.
util
.
image_url
(
"
e/restore_draft
"
,
"
core
"
)
+
"
' /></button>
"
,
h
=
e
.
Node
.
create
(
c
);
h
.
on
(
"
click
"
,
this
.
change_stamp
,
this
),
a
.
append
(
h
)}
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
p
=
this
.
get_div_edition
();
a
.
append
(
p
)}
else
{
var
d
=
this
.
get_div_visu
(
i
);
a
.
append
(
d
)}
if
(
!
this
.
cartridgex
||
this
.
cartridgex
===
0
)
this
.
cartridgex
=
parseInt
(
this
.
tooltypefamille
.
cartridge_x
);
if
(
!
this
.
cartridgey
||
this
.
cartridgey
===
0
)
this
.
cartridgey
=
parseInt
(
this
.
tooltypefamille
.
cartridge_y
);
s
.
setX
(
this
.
x
+
this
.
cartridgex
),
s
.
setY
(
this
.
y
+
this
.
cartridgey
),
r
.
append
(
s
),
this
.
apply_visibility_annot
()}
else
{
var
s
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
s
.
setX
(
n
[
0
]
+
this
.
x
+
this
.
cartridgex
),
s
.
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
);
e
.
get
(
"
value
"
)
===
"
0
"
?(
this
.
displayrotation
=
1
,
e
.
set
(
"
value
"
,
1
),
t
.
setStyles
({
backgroundImage
:
"
url(
"
+
M
.
util
.
image_url
(
"
twoway_v
"
,
"
assignfeedback_editpdfplus
"
)
+
"
)
"
})):(
e
.
set
(
"
value
"
,
0
),
t
.
setStyles
({
backgroundImage
:
"
url(
"
+
M
.
util
.
image_url
(
"
twoway_h
"
,
"
assignfeedback_editpdfplus
"
)
+
"
)
"
}),
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
=
O
;
var
_
=
function
(
e
){
_
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
_
.
NAME
=
"
annotationframe
"
,
_
.
ATTRS
=
{},
e
.
extend
(
_
,
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
(),
_
.
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
(
t
){
if
(
this
.
parent_annot_element
===
null
&&
this
.
parent_annot
===
0
){
var
n
=
this
.
editor
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
).
getXY
();
if
(
this
.
divcartridge
===
""
){
this
.
init_div_cartridge_id
();
var
r
=
this
.
editor
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
),
i
=
this
.
editor
.
graphic
.
getShapeById
(
this
.
shape_id
);
i
&&
i
.
addClass
(
"
class_
"
+
this
.
divcartridge
);
var
s
=
this
.
get_color
(),
u
=
this
.
get_div_cartridge
(
s
);
u
.
addClass
(
"
assignfeedback_editpdfplus_frame
"
),
u
.
setStyles
({
"
border-style
"
:
this
.
borderstyle
});
var
a
=
this
.
get_div_cartridge_label
(
s
,
!
0
);
u
.
append
(
a
);
var
f
=
this
.
get_div_container
(
s
);
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
l
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonpencil'><img src='
"
;
l
+=
M
.
util
.
image_url
(
"
e/text_highlight_picker
"
,
"
core
"
),
l
+=
"
' /></button>
"
;
var
c
=
e
.
Node
.
create
(
l
);
c
.
on
(
"
click
"
,
this
.
display_picker
,
this
);
var
h
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonadd'><img src='
"
;
h
+=
M
.
util
.
image_url
(
"
t/add
"
,
"
core
"
),
h
+=
"
' /></button>
"
;
var
p
=
e
.
Node
.
create
(
h
);
p
.
on
(
"
click
"
,
this
.
add_annot
,
this
),
f
.
append
(
c
),
f
.
append
(
p
)}
u
.
append
(
f
);
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
d
=
this
.
get_div_edition
();
f
.
append
(
d
)}
else
{
var
v
=
this
.
get_div_visu
(
s
);
f
.
append
(
v
)}
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
m
=
"
<div
"
;
m
+=
"
id='
"
+
this
.
divcartridge
+
"
_picker'
"
,
m
+=
"
class='assignfeedback_editpdfplus_frame_picker'
"
,
m
+=
"
style='display:none;text-align:right;'>
"
,
m
+=
"
</div>
"
;
var
g
=
e
.
Node
.
create
(
m
);
f
.
append
(
g
);
var
y
=
e
.
Node
.
create
(
"
<div style='display:inline-block;vertical-align:top;'></div>
"
),
b
=
e
.
Node
.
create
(
"
<div style='display:inline-block;vertical-align:top;'></div>
"
);
g
.
append
(
y
),
g
.
append
(
b
);
var
w
=
e
.
Node
.
create
(
"
<div style='margin:5px;background-color:white;border:2px solid #ccc;min-width:20px;min-height:20px;'></div>
"
);
w
.
on
(
"
click
"
,
this
.
change_color
,
this
,
"
white
"
);
var
E
=
e
.
Node
.
create
(
"
<div style='margin:5px;background-color:orange;border:2px solid #ccc;min-width:20px;min-height:20px;'></div>
"
);
E
.
on
(
"
click
"
,
this
.
change_color
,
this
,
"
orange
"
);
var
S
=
e
.
Node
.
create
(
"
<div style='margin:5px;background-color:red;border:2px solid #ccc;min-width:20px;min-height:20px;'></div>
"
);
S
.
on
(
"
click
"
,
this
.
change_color
,
this
,
"
red
"
);
var
x
=
e
.
Node
.
create
(
"
<div style='margin:5px;background-color:green;border:2px solid #ccc;min-width:20px;min-height:20px;'></div>
"
);
x
.
on
(
"
click
"
,
this
.
change_color
,
this
,
"
green
"
);
var
T
=
e
.
Node
.
create
(
"
<div style='margin:5px;background-color:blue;border:2px solid #ccc;min-width:20px;min-height:20px;'></div>
"
);
T
.
on
(
"
click
"
,
this
.
change_color
,
this
,
"
blue
"
);
var
N
=
e
.
Node
.
create
(
"
<div style='margin:5px;background-color:black;border:2px solid #ccc;min-width:20px;min-height:20px;'></div>
"
);
N
.
on
(
"
click
"
,
this
.
change_color
,
this
,
"
black
"
),
y
.
append
(
w
),
y
.
append
(
E
),
y
.
append
(
S
),
y
.
append
(
x
),
y
.
append
(
T
),
y
.
append
(
N
);
var
C
=
e
.
Node
.
create
(
"
<div style='margin:5px;border:2px solid #ccc;min-width:20px;min-height:20px;'></div>
"
);
C
.
on
(
"
click
"
,
this
.
change_border
,
this
,
"
solid
"
);
var
k
=
e
.
Node
.
create
(
"
<div style='margin:5px;border:2px dotted #ccc;min-width:20px;min-height:20px;'></div>
"
);
k
.
on
(
"
click
"
,
this
.
change_border
,
this
,
"
dotted
"
);
var
L
=
e
.
Node
.
create
(
"
<div style='margin:5px;border:2px dashed #ccc;min-width:20px;min-height:20px;'></div>
"
);
L
.
on
(
"
click
"
,
this
.
change_border
,
this
,
"
dashed
"
),
b
.
append
(
C
),
b
.
append
(
k
),
b
.
append
(
L
)}
if
(
!
this
.
cartridgex
||
this
.
cartridgex
===
0
)
this
.
cartridgex
=
parseInt
(
this
.
tooltypefamille
.
cartridge_x
);
if
(
!
this
.
cartridgey
||
this
.
cartridgey
===
0
)
this
.
cartridgey
=
parseInt
(
this
.
tooltypefamille
.
cartridge_y
);
u
.
setX
(
this
.
cartridgex
),
u
.
setY
(
this
.
y
+
this
.
cartridgey
),
r
.
append
(
u
),
this
.
apply_visibility_annot
();
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
A
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_right
"
),
O
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_left
"
);
A
.
hide
(),
O
.
hide
()}}
else
{
var
_
=
"
#
"
+
this
.
divcartridge
,
u
=
this
.
editor
.
get_dialogue_element
(
_
);
u
.
setX
(
n
[
0
]
+
this
.
cartridgex
),
u
.
setY
(
n
[
1
]
+
this
.
y
+
this
.
cartridgey
)}}
return
!
0
},
move_cartridge_continue
:
function
(
e
){
e
.
preventDefault
();
var
t
=
this
.
editor
.
get_dialogue_element
(
o
.
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
(
o
.
DRAWINGCANVAS
).
getXY
(),
s
=
r
.
x
-
this
.
oldx
,
u
=
r
.
y
-
this
.
oldy
,
a
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
a
.
setX
(
i
[
0
]
+
this
.
cartridgex
+
s
),
a
.
setY
(
i
[
1
]
+
this
.
y
+
this
.
cartridgey
+
u
)},
move_cartridge_stop
:
function
(
e
){
e
.
preventDefault
();
var
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_cartridge
"
);
t
.
detach
(
"
mousemove
"
,
this
.
move_cartridge_continue
,
this
),
t
.
detach
(
"
mouseup
"
,
this
.
move_cartridge_stop
,
this
);
var
n
=
this
.
editor
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
),
r
=
new
M
.
assignfeedback_editpdfplus
.
point
(
e
.
clientX
+
n
.
get
(
"
docScrollX
"
),
e
.
clientY
+
n
.
get
(
"
docScrollY
"
)),
i
=
this
.
editor
.
get_canvas_coordinates
(
r
),
s
=
this
.
editor
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
).
getXY
(),
u
=
i
.
x
-
this
.
oldx
,
a
=
i
.
y
-
this
.
oldy
;
this
.
cartridgex
+=
u
,
this
.
cartridgey
+=
a
;
var
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
t
.
setX
(
s
[
0
]
+
this
.
cartridgex
),
t
.
setY
(
s
[
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
,
v
.
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
(
e
){
if
(
!
this
.
parent_annot_element
){
var
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonpencil
"
),
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonadd
"
);
this
.
hide_picker
(),
t
&&
(
t
.
hide
(),
n
.
hide
()),
_
.
superclass
.
edit_annot
.
call
(
this
)}},
hide_edit
:
function
(){
_
.
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
,
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
();
var
s
=
[];
this
.
id
?
s
=
this
.
editor
.
annotationsparent
[
this
.
id
]:
s
=
this
.
editor
.
annotationsparent
[
this
.
divcartridge
];
if
(
s
)
for
(
var
n
=
0
;
n
<
s
.
length
;
n
++
)
for
(
var
o
=
0
;
o
<
t
.
length
;
o
++
)
t
[
o
]
===
s
[
n
]
&&
(
t
.
splice
(
o
,
1
),
s
[
n
].
drawable
&&
s
[
n
].
drawable
.
erase
());
this
.
editor
.
currentannotation
=!
1
,
this
.
editor
.
save_current_page
();
return
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationframe
=
_
;
var
D
=
function
(
e
){
D
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
D
.
NAME
=
"
annotationverticalline
"
,
D
.
ATTRS
=
{},
e
.
extend
(
D
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
,
n
,
r
,
i
;
return
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
i
=
this
.
get_color
(),
n
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Path
,
fill
:
!
1
,
stroke
:{
weight
:
m
,
color
:
i
}}),
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
(),
D
.
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
:
m
,
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
(
e
){
var
t
=
this
.
editor
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
).
getXY
();
if
(
this
.
divcartridge
===
""
){
this
.
init_div_cartridge_id
();
var
n
=
this
.
editor
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
),
r
=
this
.
get_color_cartridge
(),
i
=
this
.
get_div_cartridge
(
r
);
i
.
addClass
(
"
assignfeedback_editpdfplus_verticalline
"
);
var
s
=
this
.
get_div_cartridge_label
(
r
,
!
0
);
i
.
append
(
s
);
var
u
=
this
.
get_div_container
(
r
);
i
.
append
(
u
);
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
a
=
this
.
get_div_edition
();
u
.
append
(
a
)}
else
{
var
f
=
this
.
get_div_visu
(
r
);
u
.
append
(
f
)}
if
(
!
this
.
cartridgex
||
this
.
cartridgex
===
0
)
this
.
cartridgex
=
parseInt
(
this
.
tooltypefamille
.
cartridge_x
);
if
(
!
this
.
cartridgey
||
this
.
cartridgey
===
0
)
this
.
cartridgey
=
parseInt
(
this
.
tooltypefamille
.
cartridge_y
);
i
.
setX
(
this
.
x
+
this
.
cartridgex
),
i
.
setY
(
this
.
y
+
this
.
cartridgey
),
n
.
append
(
i
),
this
.
apply_visibility_annot
()}
else
{
var
i
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
i
.
setX
(
t
[
0
]
+
this
.
x
+
this
.
cartridgex
),
i
.
setY
(
t
[
1
]
+
this
.
y
+
this
.
cartridgey
)}
return
!
0
},
move_cartridge_continue
:
function
(
e
){
e
.
preventDefault
();
var
t
=
this
.
editor
.
get_dialogue_element
(
o
.
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
(
o
.
DRAWINGCANVAS
).
getXY
(),
s
=
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
+
s
),
a
.
setY
(
i
[
1
]
+
this
.
y
+
this
.
cartridgey
+
u
)},
move_cartridge_stop
:
function
(
e
){
e
.
preventDefault
();
var
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_cartridge
"
);
t
.
detach
(
"
mousemove
"
,
this
.
move_cartridge_continue
,
this
),
t
.
detach
(
"
mouseup
"
,
this
.
move_cartridge_stop
,
this
);
var
n
=
this
.
editor
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
),
r
=
new
M
.
assignfeedback_editpdfplus
.
point
(
e
.
clientX
+
n
.
get
(
"
docScrollX
"
),
e
.
clientY
+
n
.
get
(
"
docScrollY
"
)),
i
=
this
.
editor
.
get_canvas_coordinates
(
r
),
s
=
this
.
editor
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
).
getXY
(),
u
=
i
.
x
-
this
.
oldx
,
a
=
i
.
y
-
this
.
oldy
;
this
.
cartridgex
+=
u
,
this
.
cartridgey
+=
a
;
var
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
t
.
setX
(
s
[
0
]
+
this
.
x
+
this
.
cartridgex
),
t
.
setY
(
s
[
1
]
+
this
.
y
+
this
.
cartridgey
),
this
.
editor
.
save_current_page
()},
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
=
D
;
var
P
=
function
(
e
){
P
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
P
.
NAME
=
"
annotationcommentplus
"
,
P
.
ATTRS
=
{},
e
.
extend
(
P
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
n
=
this
.
editor
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
),
r
,
i
;
return
i
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
,
this
.
y
)),
r
=
e
.
Node
.
create
(
"
<div><img src='
"
+
M
.
util
.
image_url
(
"
comment
"
,
"
assignfeedback_editpdfplus
"
)
+
"
' /></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
(),
P
.
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
(
o
.
DRAWINGREGION
),
s
,
u
;
return
n
.
bound
([
t
.
start
,
t
.
end
]),
u
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
n
.
x
,
n
.
y
)),
s
=
e
.
Node
.
create
(
"
<div>
"
+
this
.
tooltype
.
label
+
"
</div>
"
),
s
.
setStyles
({
position
:
"
absolute
"
,
display
:
"
inline-block
"
,
zIndex
:
50
,
color
:
this
.
colour
,
padding
:
"
0 2px
"
}),
i
.
append
(
s
),
s
.
setX
(
u
.
x
),
s
.
setY
(
u
.
y
),
r
.
store_position
(
s
,
u
.
x
,
u
.
y
),
r
.
nodes
.
push
(
s
),
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
(
e
){
var
t
=
this
.
editor
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
).
getXY
();
if
(
this
.
divcartridge
===
""
){
this
.
init_div_cartridge_id
();
var
n
=
this
.
editor
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
),
r
=
this
.
get_color_cartridge
(),
i
=
this
.
get_div_cartridge
(
r
);
i
.
addClass
(
"
assignfeedback_editpdfplus_commentplus
"
);
var
s
=
this
.
get_div_cartridge_label
(
r
);
i
.
append
(
s
);
var
u
=
this
.
get_div_container
(
r
);
i
.
append
(
u
);
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
a
=
this
.
get_div_edition
();
u
.
append
(
a
)}
else
{
var
f
=
this
.
get_div_visu
(
r
);
u
.
append
(
f
)}
i
.
setX
(
this
.
x
+
20
),
i
.
setY
(
this
.
y
),
n
.
append
(
i
),
this
.
apply_visibility_annot
()}
else
{
var
i
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
i
.
setX
(
t
[
0
]
+
this
.
x
+
20
),
i
.
setY
(
t
[
1
]
+
this
.
y
)}
return
!
0
},
apply_visibility_annot
:
function
(){
P
.
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
.
one
(
"
img
"
).
setAttribute
(
"
src
"
,
M
.
util
.
image_url
(
"
t/down
"
,
"
core
"
)),
r
.
one
(
"
img
"
).
setAttribute
(
"
src
"
,
M
.
util
.
image_url
(
"
t/up
"
,
"
core
"
)),
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
.
one
(
"
img
"
).
setAttribute
(
"
src
"
,
M
.
util
.
image_url
(
"
t/left
"
,
"
core
"
)):
t
.
get
(
"
value
"
)
===
"
0
"
&&
n
.
one
(
"
img
"
).
setAttribute
(
"
src
"
,
M
.
util
.
image_url
(
"
t/right
"
,
"
core
"
)))},
save_annot
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_editinput
"
),
t
=
e
.
get
(
"
value
"
);
this
.
textannot
=
t
,
this
.
editor
.
save_current_page
(),
t
.
length
===
0
&&
(
t
=
"
"
);
var
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_valref
"
);
n
.
set
(
"
value
"
,
t
),
this
.
apply_visibility_annot
(),
this
.
hide_edit
();
return
},
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
=
P
;
var
H
=
"
Dropdown menu
"
,
B
;
B
=
function
(
e
){
e
.
draggable
=!
1
,
e
.
centered
=!
1
,
e
.
width
=
"
auto
"
,
e
.
visible
=!
1
,
e
.
footerContent
=
""
,
B
.
superclass
.
constructor
.
apply
(
this
,[
e
])},
e
.
extend
(
B
,
M
.
core
.
dialogue
,{
initializer
:
function
(
t
){
var
n
,
r
,
i
,
s
;
B
.
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
=
B
.
superclass
.
show
.
call
(
this
);
return
this
.
align
(
t
,[
e
.
WidgetPositionAlign
.
TL
,
e
.
WidgetPositionAlign
.
BL
]),
n
}},{
NAME
:
H
,
ATTRS
:{
headerText
:{
value
:
""
},
buttonNode
:{
value
:
null
}}}),
e
.
Base
.
modifyAttrs
(
B
,{
modal
:{
getter
:
function
(){
return
!
1
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
dropdown
=
B
;
var
j
=
"
Colourpicker
"
,
F
;
F
=
function
(
e
){
F
.
superclass
.
constructor
.
apply
(
this
,[
e
])},
e
.
extend
(
F
,
M
.
assignfeedback_editpdfplus
.
dropdown
,{
initializer
:
function
(
t
){
var
n
=
e
.
Node
.
create
(
'
<ul role="menu" class="assignfeedback_editpdfplus_menu"/>
'
),
r
;
e
.
each
(
this
.
get
(
"
colours
"
),
function
(
t
,
r
){
var
i
,
s
,
o
,
u
,
a
;
o
=
M
.
util
.
get_string
(
r
,
"
assignfeedback_editpdfplus
"
),
a
=
this
.
get
(
"
iconprefix
"
)
+
r
,
u
=
M
.
util
.
image_url
(
a
,
"
assignfeedback_editpdfplus
"
),
i
=
e
.
Node
.
create
(
'
<button><img alt="
'
+
o
+
'
" src="
'
+
u
+
'
"/></button>
'
),
i
.
setAttribute
(
"
data-colour
"
,
r
),
i
.
setAttribute
(
"
data-rgb
"
,
t
),
i
.
setStyle
(
"
backgroundImage
"
,
"
none
"
),
s
=
e
.
Node
.
create
(
"
<li/>
"
),
s
.
append
(
i
),
n
.
append
(
s
)},
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
),
F
.
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
:
j
,
ATTRS
:{
colours
:{
value
:{}},
callback
:{
value
:
null
},
context
:{
value
:
null
},
iconprefix
:{
value
:
"
colour_
"
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
colourpicker
=
F
;
var
I
=
"
Colourpicker
"
,
q
;
q
=
function
(
e
){
q
.
superclass
.
constructor
.
apply
(
this
,[
e
])},
e
.
extend
(
q
,
M
.
assignfeedback_editpdfplus
.
dropdown
,{
initializer
:
function
(
t
){
var
n
=
e
.
Node
.
create
(
'
<ul role="menu" class="assignfeedback_editpdfplus_menu"/>
'
);
e
.
each
(
this
.
get
(
"
stamps
"
),
function
(
t
){
var
r
,
i
,
s
;
s
=
M
.
util
.
get_string
(
"
stamp
"
,
"
assignfeedback_editpdfplus
"
),
r
=
e
.
Node
.
create
(
'
<button><img height="16" width="16" alt="
'
+
s
+
'
" src="
'
+
t
+
'
"/></button>
'
),
r
.
setAttribute
(
"
data-stamp
"
,
t
),
r
.
setStyle
(
"
backgroundImage
"
,
"
none
"
),
i
=
e
.
Node
.
create
(
"
<li/>
"
),
i
.
append
(
r
),
n
.
append
(
i
)},
this
),
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
(
"
stamppicker
"
,
"
assignfeedback_editpdfplus
"
)),
this
.
set
(
"
bodyContent
"
,
n
),
q
.
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
:
I
,
ATTRS
:{
stamps
:{
value
:[]},
callback
:{
value
:
null
},
context
:{
value
:
null
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
stamppicker
=
q
;
var
R
=
"
Commentmenu
"
,
U
;
U
=
function
(
e
){
U
.
superclass
.
constructor
.
apply
(
this
,[
e
])},
e
.
extend
(
U
,
M
.
assignfeedback_editpdfplus
.
dropdown
,{
initializer
:
function
(
t
){
var
n
,
r
,
i
,
s
;
s
=
this
.
get
(
"
comment
"
),
n
=
e
.
Node
.
create
(
'
<ul role="menu" class="assignfeedback_editpdfplus_menu"/>
'
),
r
=
e
.
Node
.
create
(
'
<li><a tabindex="-1" href="#">
'
+
M
.
util
.
get_string
(
"
addtoquicklist
"
,
"
assignfeedback_editpdfplus
"
)
+
"
</a></li>
"
),
r
.
on
(
"
click
"
,
s
.
add_to_quicklist
,
s
),
r
.
on
(
"
key
"
,
s
.
add_to_quicklist
,
"
enter,space
"
,
s
),
n
.
append
(
r
),
r
=
e
.
Node
.
create
(
'
<li><a tabindex="-1" href="#">
'
+
M
.
util
.
get_string
(
"
deletecomment
"
,
"
assignfeedback_editpdfplus
"
)
+
"
</a></li>
"
),
r
.
on
(
"
click
"
,
function
(
e
){
e
.
preventDefault
(),
this
.
menu
.
hide
(),
this
.
remove
()},
s
),
r
.
on
(
"
key
"
,
function
(){
s
.
menu
.
hide
(),
s
.
remove
()},
"
enter,space
"
,
s
),
n
.
append
(
r
),
r
=
e
.
Node
.
create
(
"
<li><hr/></li>
"
),
n
.
append
(
r
),
this
.
set
(
"
headerText
"
,
M
.
util
.
get_string
(
"
commentcontextmenu
"
,
"
assignfeedback_editpdfplus
"
)),
i
=
e
.
Node
.
create
(
"
<div/>
"
),
i
.
append
(
n
),
this
.
set
(
"
bodyContent
"
,
i
),
U
.
superclass
.
initializer
.
call
(
this
,
t
)},
show
:
function
(){
var
t
=
this
.
get
(
"
boundingBox
"
).
one
(
"
ul
"
);
t
.
all
(
"
.quicklist_comment
"
).
remove
(
!
0
);
var
n
=
this
.
get
(
"
comment
"
);
n
.
deleteme
=!
1
,
e
.
each
(
n
.
editor
.
quicklist
.
comments
,
function
(
r
){
var
i
=
e
.
Node
.
create
(
'
<li class="quicklist_comment"></li>
'
),
s
=
e
.
Node
.
create
(
'
<a href="#" tabindex="-1">
'
+
r
.
rawtext
+
"
</a>
"
),
o
=
e
.
Node
.
create
(
'
<a href="#" tabindex="-1" class="delete_quicklist_comment"><img src="
'
+
M
.
util
.
image_url
(
"
t/delete
"
,
"
core
"
)
+
'
"
'
+
'
alt="
'
+
M
.
util
.
get_string
(
"
deletecomment
"
,
"
assignfeedback_editpdfplus
"
)
+
'
"/>
'
+
"
</a>
"
);
i
.
append
(
s
),
i
.
append
(
o
),
t
.
append
(
i
),
s
.
on
(
"
click
"
,
n
.
set_from_quick_comment
,
n
,
r
),
s
.
on
(
"
key
"
,
n
.
set_from_quick_comment
,
"
space,enter
"
,
n
,
r
),
o
.
on
(
"
click
"
,
n
.
remove_from_quicklist
,
n
,
r
),
o
.
on
(
"
key
"
,
n
.
remove_from_quicklist
,
"
space,enter
"
,
n
,
r
)},
this
),
U
.
superclass
.
show
.
call
(
this
)}},{
NAME
:
R
,
ATTRS
:{
comment
:{
value
:
null
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
commentmenu
=
U
;
var
z
=
"
commentsearch
"
,
W
;
W
=
function
(
e
){
e
.
draggable
=!
1
,
e
.
centered
=!
0
,
e
.
width
=
"
400px
"
,
e
.
visible
=!
1
,
e
.
headerContent
=
M
.
util
.
get_string
(
"
searchcomments
"
,
"
assignfeedback_editpdfplus
"
),
e
.
footerContent
=
""
,
W
.
superclass
.
constructor
.
apply
(
this
,[
e
])},
e
.
extend
(
W
,
M
.
core
.
dialogue
,{
initializer
:
function
(
t
){
var
n
,
r
,
i
,
s
,
o
,
u
;
u
=
this
.
get
(
"
boundingBox
"
),
u
.
addClass
(
"
assignfeedback_editpdfplus_commentsearch
"
),
n
=
this
.
get
(
"
editor
"
),
r
=
e
.
Node
.
create
(
"
<div/>
"
),
i
=
M
.
util
.
get_string
(
"
filter
"
,
"
assignfeedback_editpdfplus
"
),
s
=
e
.
Node
.
create
(
'
<input type="text" size="20" placeholder="
'
+
i
+
'
"/>
'
),
r
.
append
(
s
),
o
=
e
.
Node
.
create
(
'
<ul role="menu" class="assignfeedback_editpdfplus_menu"/>
'
),
r
.
append
(
o
),
s
.
on
(
"
keyup
"
,
this
.
filter_search_comments
,
this
),
o
.
delegate
(
"
click
"
,
this
.
focus_on_comment
,
"
a
"
,
this
),
o
.
delegate
(
"
key
"
,
this
.
focus_on_comment
,
"
enter,space
"
,
"
a
"
,
this
),
this
.
set
(
"
bodyContent
"
,
r
),
W
.
superclass
.
initializer
.
call
(
this
,
t
)},
filter_search_comments
:
function
(){
var
t
,
n
,
r
,
i
;
i
=
this
.
get
(
"
id
"
),
t
=
e
.
one
(
"
#
"
+
i
+
o
.
SEARCHFILTER
),
n
=
e
.
one
(
"
#
"
+
i
+
o
.
SEARCHCOMMENTSLIST
),
r
=
t
.
get
(
"
value
"
),
n
.
all
(
"
li
"
).
each
(
function
(
e
){
e
.
get
(
"
text
"
).
indexOf
(
r
)
!==-
1
?
e
.
show
():
e
.
hide
()})},
focus_on_comment
:
function
(
e
){
e
.
preventDefault
();
var
t
=
e
.
target
.
ancestor
(
"
li
"
),
n
=
t
.
getData
(
"
comment
"
),
r
=
this
.
get
(
"
editor
"
);
this
.
hide
(),
n
.
pageno
===
r
.
currentpage
?
n
.
drawable
.
nodes
[
0
].
one
(
"
textarea
"
).
focus
():(
r
.
currentpage
=
n
.
pageno
,
r
.
change_page
(),
n
.
drawable
.
nodes
[
0
].
one
(
"
textarea
"
).
focus
())},
show
:
function
(){
var
t
=
this
.
get
(
"
boundingBox
"
).
one
(
"
ul
"
),
n
=
this
.
get
(
"
editor
"
);
t
.
all
(
"
li
"
).
remove
(
!
0
),
e
.
each
(
n
.
pages
,
function
(
n
){
e
.
each
(
n
.
comments
,
function
(
n
){
var
r
=
e
.
Node
.
create
(
'
<li><a href="#" tabindex="-1"><pre>
'
+
n
.
rawtext
+
"
</pre></a></li>
"
);
t
.
append
(
r
),
r
.
setData
(
"
comment
"
,
n
)},
this
)},
this
),
this
.
centerDialogue
(),
W
.
superclass
.
show
.
call
(
this
)}},{
NAME
:
z
,
ATTRS
:{
editor
:{
value
:
null
}}}),
e
.
Base
.
modifyAttrs
(
W
,{
modal
:{
getter
:
function
(){
return
!
0
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
commentsearch
=
W
;
var
X
=
function
(
t
,
n
,
r
,
i
,
s
,
u
,
a
,
c
){
this
.
editor
=
t
,
this
.
gradeid
=
n
||
0
,
this
.
x
=
parseInt
(
i
,
10
)
||
0
,
this
.
y
=
parseInt
(
s
,
10
)
||
0
,
this
.
width
=
parseInt
(
u
,
10
)
||
0
,
this
.
rawtext
=
c
||
""
,
this
.
pageno
=
r
||
0
,
this
.
colour
=
a
||
"
yellow
"
,
this
.
drawable
=!
1
,
this
.
deleteme
=!
1
,
this
.
menulink
=
null
,
this
.
menu
=
null
,
this
.
clean
=
function
(){
return
{
gradeid
:
this
.
gradeid
,
x
:
parseInt
(
this
.
x
,
10
),
y
:
parseInt
(
this
.
y
,
10
),
width
:
parseInt
(
this
.
width
,
10
),
rawtext
:
this
.
rawtext
,
pageno
:
this
.
currentpage
,
colour
:
this
.
colour
}},
this
.
draw
=
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
,
i
=
this
.
editor
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
),
s
,
u
,
a
,
c
;
return
r
=
e
.
Node
.
create
(
"
<textarea/>
"
),
s
=
e
.
Node
.
create
(
'
<div class="commentdrawable"/>
'
),
u
=
e
.
Node
.
create
(
'
<a href="#"><img src="
'
+
M
.
util
.
image_url
(
"
t/contextmenu
"
,
"
core
"
)
+
'
"/></a>
'
),
this
.
menulink
=
u
,
s
.
append
(
r
),
this
.
editor
.
get
(
"
readonly
"
)?
r
.
setAttribute
(
"
readonly
"
,
"
readonly
"
):
s
.
append
(
u
),
this
.
width
<
100
&&
(
this
.
width
=
100
),
a
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
,
this
.
y
)),
r
.
setStyles
({
width
:
this
.
width
+
"
px
"
,
backgroundColor
:
l
[
this
.
colour
],
color
:
f
}),
i
.
append
(
s
),
s
.
setStyle
(
"
position
"
,
"
absolute
"
),
s
.
setX
(
a
.
x
),
s
.
setY
(
a
.
y
),
n
.
store_position
(
s
,
a
.
x
,
a
.
y
),
n
.
nodes
.
push
(
s
),
r
.
set
(
"
value
"
,
this
.
rawtext
),
c
=
r
.
get
(
"
scrollHeight
"
),
r
.
setStyles
({
height
:
c
+
"
px
"
,
overflow
:
"
hidden
"
}),
this
.
editor
.
get
(
"
readonly
"
)
||
this
.
attach_events
(
r
,
u
),
t
&&
r
.
focus
(),
this
.
drawable
=
n
,
n
},
this
.
delete_comment_later
=
function
(){
this
.
deleteme
&&
this
.
remove
()},
this
.
attach_events
=
function
(
t
,
n
){
t
.
on
(
"
blur
"
,
function
(){
this
.
rawtext
=
t
.
get
(
"
value
"
),
this
.
width
=
parseInt
(
t
.
getStyle
(
"
width
"
),
10
),
this
.
rawtext
.
replace
(
/^
\s
+|
\s
+$/g
,
""
)
===
""
&&
(
this
.
deleteme
=!
0
,
e
.
later
(
400
,
this
,
this
.
delete_comment_later
)),
this
.
editor
.
save_current_page
(),
this
.
editor
.
editingcomment
=!
1
},
this
),
n
.
setData
(
"
comment
"
,
this
),
t
.
on
(
"
keyup
"
,
function
(){
var
e
=
t
.
get
(
"
scrollHeight
"
),
n
=
parseInt
(
t
.
getStyle
(
"
height
"
),
10
);
e
===
n
+
8
&&
(
e
-=
8
),
t
.
setStyle
(
"
height
"
,
e
+
"
px
"
)}),
t
.
on
(
"
gesturemovestart
"
,
function
(
e
){
t
.
setData
(
"
dragging
"
,
!
0
),
t
.
setData
(
"
offsetx
"
,
e
.
clientX
-
t
.
getX
()),
t
.
setData
(
"
offsety
"
,
e
.
clientY
-
t
.
getY
())}),
t
.
on
(
"
gesturemoveend
"
,
function
(){
t
.
setData
(
"
dragging
"
,
!
1
),
this
.
editor
.
save_current_page
()},
null
,
this
),
t
.
on
(
"
gesturemove
"
,
function
(
e
){
var
n
=
e
.
clientX
-
t
.
getData
(
"
offsetx
"
),
r
=
e
.
clientY
-
t
.
getData
(
"
offsety
"
),
i
,
s
,
o
,
u
,
a
;
i
=
parseInt
(
t
.
getStyle
(
"
width
"
),
10
),
s
=
parseInt
(
t
.
getStyle
(
"
height
"
),
10
),
o
=
this
.
editor
.
get_canvas_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
n
,
r
)),
a
=
this
.
editor
.
get_canvas_bounds
(
!
0
),
a
.
x
=
0
,
a
.
y
=
0
,
a
.
width
-=
i
+
42
,
a
.
height
-=
s
+
8
,
o
.
clip
(
a
),
this
.
x
=
o
.
x
,
this
.
y
=
o
.
y
,
u
=
this
.
editor
.
get_window_coordinates
(
o
),
t
.
ancestor
().
setX
(
u
.
x
),
t
.
ancestor
().
setY
(
u
.
y
),
this
.
drawable
.
store_position
(
t
.
ancestor
(),
u
.
x
,
u
.
y
)},
null
,
this
),
this
.
menu
=
new
M
.
assignfeedback_editpdfplus
.
commentmenu
({
buttonNode
:
this
.
menulink
,
comment
:
this
})},
this
.
remove
=
function
(){
var
e
=
0
,
t
;
t
=
this
.
editor
.
pages
[
this
.
editor
.
currentpage
].
comments
;
for
(
e
=
0
;
e
<
t
.
length
;
e
++
)
if
(
t
[
e
]
===
this
){
t
.
splice
(
e
,
1
),
this
.
drawable
.
erase
(),
this
.
editor
.
save_current_page
();
return
}},
this
.
remove_from_quicklist
=
function
(
e
,
t
){
e
.
preventDefault
(),
this
.
menu
.
hide
(),
this
.
editor
.
quicklist
.
remove
(
t
)},
this
.
set_from_quick_comment
=
function
(
e
,
t
){
e
.
preventDefault
(),
this
.
menu
.
hide
(),
this
.
rawtext
=
t
.
rawtext
,
this
.
width
=
t
.
width
,
this
.
colour
=
t
.
colour
,
this
.
editor
.
save_current_page
(),
this
.
editor
.
redraw
()},
this
.
add_to_quicklist
=
function
(
e
){
e
.
preventDefault
(),
this
.
menu
.
hide
(),
this
.
editor
.
quicklist
.
add
(
this
)},
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
([
t
.
start
,
t
.
end
]),
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Rect
,
width
:
i
.
width
,
height
:
i
.
height
,
fill
:{
color
:
l
[
t
.
commentcolour
]},
x
:
i
.
x
,
y
:
i
.
y
}),
n
.
shapes
.
push
(
r
),
n
},
this
.
init_from_edit
=
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
;
return
t
.
bound
([
e
.
start
,
e
.
end
]),
t
.
width
<
100
&&
(
t
.
width
=
100
),
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
t
.
x
,
this
.
y
=
t
.
y
,
this
.
width
=
t
.
width
,
this
.
colour
=
e
.
commentcolour
,
this
.
rawtext
=
""
,
t
.
has_min_width
()
&&
t
.
has_min_height
()}};
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
comment
=
X
;
var
V
=
function
(
e
,
t
,
n
,
r
){
this
.
rawtext
=
t
||
""
,
this
.
id
=
e
||
0
,
this
.
width
=
n
||
100
,
this
.
colour
=
r
||
"
yellow
"
};
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
quickcomment
=
V
;
var
$
=
function
(
t
){
this
.
editor
=
t
,
this
.
comments
=
[],
this
.
add
=
function
(
t
){
var
r
=
n
,
i
;
if
(
t
.
rawtext
===
""
)
return
;
i
=
{
method
:
"
post
"
,
context
:
this
,
sync
:
!
1
,
data
:{
sesskey
:
M
.
cfg
.
sesskey
,
action
:
"
addtoquicklist
"
,
userid
:
this
.
editor
.
get
(
"
userid
"
),
commenttext
:
t
.
rawtext
,
width
:
t
.
width
,
colour
:
t
.
colour
,
attemptnumber
:
this
.
editor
.
get
(
"
attemptnumber
"
),
assignmentid
:
this
.
editor
.
get
(
"
assignmentid
"
)},
on
:{
success
:
function
(
t
,
n
){
var
r
,
i
;
try
{
r
=
e
.
JSON
.
parse
(
n
.
responseText
);
if
(
r
.
error
)
return
new
M
.
core
.
ajaxException
(
r
);
i
=
new
M
.
assignfeedback_editpdfplus
.
quickcomment
(
r
.
id
,
r
.
rawtext
,
r
.
width
,
r
.
colour
),
this
.
comments
.
push
(
i
)}
catch
(
s
){
return
new
M
.
core
.
exception
(
s
)}},
failure
:
function
(
e
,
t
){
return
M
.
core
.
exception
(
t
.
responseText
)}}},
e
.
io
(
r
,
i
)},
this
.
remove
=
function
(
t
){
var
r
=
n
,
i
;
if
(
!
t
)
return
;
i
=
{
method
:
"
post
"
,
context
:
this
,
sync
:
!
1
,
data
:{
sesskey
:
M
.
cfg
.
sesskey
,
action
:
"
removefromquicklist
"
,
userid
:
this
.
editor
.
get
(
"
userid
"
),
commentid
:
t
.
id
,
attemptnumber
:
this
.
editor
.
get
(
"
attemptnumber
"
),
assignmentid
:
this
.
editor
.
get
(
"
assignmentid
"
)},
on
:{
success
:
function
(){
var
e
;
e
=
this
.
comments
.
indexOf
(
t
),
e
>=
0
&&
this
.
comments
.
splice
(
e
,
1
)},
failure
:
function
(
e
,
t
){
return
M
.
core
.
exception
(
t
.
responseText
)}}},
e
.
io
(
r
,
i
)},
this
.
load
=
function
(){
var
t
=
n
,
r
;
r
=
{
method
:
"
get
"
,
context
:
this
,
sync
:
!
1
,
data
:{
sesskey
:
M
.
cfg
.
sesskey
,
action
:
"
loadquicklist
"
,
userid
:
this
.
editor
.
get
(
"
userid
"
),
attemptnumber
:
this
.
editor
.
get
(
"
attemptnumber
"
),
assignmentid
:
this
.
editor
.
get
(
"
assignmentid
"
)},
on
:{
success
:
function
(
t
,
n
){
var
r
;
try
{
r
=
e
.
JSON
.
parse
(
n
.
responseText
);
if
(
r
.
error
)
return
new
M
.
core
.
ajaxException
(
r
);
e
.
each
(
r
,
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
quickcomment
(
e
.
id
,
e
.
rawtext
,
e
.
width
,
e
.
colour
);
this
.
comments
.
push
(
t
)},
this
)}
catch
(
i
){
return
new
M
.
core
.
exception
(
i
)}},
failure
:
function
(
e
,
t
){
return
M
.
core
.
exception
(
t
.
responseText
)}}},
e
.
io
(
t
,
r
)}};
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
quickcommentlist
=
$
;
var
J
=
function
(){
J
.
superclass
.
constructor
.
apply
(
this
,
arguments
)};
J
.
prototype
=
{
dialogue
:
null
,
panel
:
null
,
pagecount
:
0
,
currentpage
:
0
,
pages
:[],
loadingicon
:
null
,
pageimage
:
null
,
graphic
:
null
,
currentedit
:
new
M
.
assignfeedback_editpdfplus
.
edit
,
currentdrawable
:
!
1
,
drawables
:[],
drawablesannotations
:[],
currentcomment
:
null
,
currentannotation
:
null
,
lastanntationtool
:
"
pen
"
,
quicklist
:
null
,
searchcommentswindow
:
null
,
currentstamp
:
null
,
stamps
:[],
editingcomment
:
!
1
,
annotationsparent
:[],
studentstatut
:
-
1
,
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
,
this
.
get
(
"
readonly
"
)
||
(
this
.
quicklist
=
new
M
.
assignfeedback_editpdfplus
.
quickcommentlist
(
this
))}.
bind
(
this
)))},
refresh_button_state
:
function
(){
var
e
,
t
,
n
,
r
;
e
=
this
.
get_dialogue_element
(
o
.
ANNOTATIONCOLOURBUTTON
),
n
=
M
.
util
.
image_url
(
"
colour_
"
+
this
.
currentedit
.
annotationcolour
,
"
assignfeedback_editpdfplus
"
),
e
.
one
(
"
img
"
).
setAttribute
(
"
src
"
,
n
),
this
.
currentedit
.
id
?
t
=
this
.
get_dialogue_element
(
"
#
"
+
this
.
currentedit
.
id
):
t
=
this
.
get_dialogue_element
(
p
[
this
.
currentedit
.
tool
]),
t
.
addClass
(
"
assignfeedback_editpdfplus_selectedbutton
"
),
t
.
setAttribute
(
"
aria-pressed
"
,
"
true
"
),
r
=
this
.
get_dialogue_element
(
o
.
DRAWINGREGION
),
r
.
setAttribute
(
"
data-currenttool
"
,
this
.
currentedit
.
tool
)},
get_canvas_bounds
:
function
(){
var
e
=
this
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
),
t
=
e
.
getXY
(),
n
=
t
[
0
],
r
=
t
[
1
],
i
=
parseInt
(
e
.
getStyle
(
"
width
"
),
10
),
s
=
parseInt
(
e
.
getStyle
(
"
height
"
),
10
);
return
new
M
.
assignfeedback_editpdfplus
.
rect
(
n
,
r
,
i
,
s
)},
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
(
s
.
DIALOGUE
),
this
.
loadingicon
=
this
.
get_dialogue_element
(
o
.
LOADINGICON
),
n
=
this
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
),
this
.
graphic
=
new
e
.
Graphic
({
render
:
n
}),
r
=
this
.
get_dialogue_element
(
o
.
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
.
load_all_pages
()},
link_handler
:
function
(
t
){
var
n
,
r
,
i
=!
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
(
s
.
DIALOGUE
),
this
.
loadingicon
=
this
.
get_dialogue_element
(
o
.
LOADINGICON
),
n
=
this
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
),
this
.
graphic
=
new
e
.
Graphic
({
render
:
n
}),
r
=
this
.
get_dialogue_element
(
o
.
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
.
load_all_pages
(),
n
.
on
(
"
windowresize
"
,
this
.
resize
,
this
),
i
=!
1
),
this
.
dialogue
.
centerDialogue
(),
this
.
dialogue
.
show
(),
this
.
dialogue
.
dd
.
on
(
"
drag:end
"
,
this
.
redraw
,
this
),
i
&&
this
.
resize
()},
load_all_pages
:
function
(){
var
t
=
n
,
i
,
s
,
u
;
i
=
{
method
:
"
get
"
,
context
:
this
,
sync
:
!
1
,
data
:{
sesskey
:
M
.
cfg
.
sesskey
,
action
:
"
loadallpages
"
,
userid
:
this
.
get
(
"
userid
"
),
attemptnumber
:
this
.
get
(
"
attemptnumber
"
),
assignmentid
:
this
.
get
(
"
assignmentid
"
),
readonly
:
this
.
get
(
"
readonly
"
)?
1
:
0
},
on
:{
success
:
function
(
e
,
t
){
this
.
all_pages_loaded
(
t
.
responseText
)},
failure
:
function
(
e
,
t
){
return
new
M
.
core
.
exception
(
t
.
responseText
)}}},
e
.
io
(
t
,
i
),
this
.
pagecount
<=
0
&&
(
s
=
{
method
:
"
get
"
,
context
:
this
,
sync
:
!
1
,
data
:{
sesskey
:
M
.
cfg
.
sesskey
,
action
:
"
conversionstatus
"
,
userid
:
this
.
get
(
"
userid
"
),
attemptnumber
:
this
.
get
(
"
attemptnumber
"
),
assignmentid
:
this
.
get
(
"
assignmentid
"
)},
on
:{
success
:
function
(
t
,
n
){
u
=
0
;
if
(
this
.
pagecount
===
0
){
var
i
=
this
.
get
(
"
pagetotal
"
),
a
=
this
.
get_dialogue_element
(
o
.
PROGRESSBARCONTAINER
),
f
=
a
.
one
(
"
.bar
"
);
if
(
f
){
var
l
=
n
.
response
/
i
*
100
;
f
.
setStyle
(
"
width
"
,
l
+
"
%
"
),
a
.
setAttribute
(
"
aria-valuenow
"
,
l
)}
e
.
later
(
1
e3
,
this
,
function
(){
e
.
io
(
r
,
s
)})}},
failure
:
function
(
t
,
n
){
return
u
+=
1
,
this
.
pagecount
===
0
&&
u
<
5
&&
e
.
later
(
1
e3
,
this
,
function
(){
e
.
io
(
r
,
s
)}),
new
M
.
core
.
exception
(
n
.
responseText
)}}},
e
.
later
(
1
e3
,
this
,
function
(){
u
=
0
,
e
.
io
(
r
,
s
)}))},
all_pages_loaded
:
function
(
t
){
var
n
,
r
,
i
,
s
,
o
;
try
{
n
=
e
.
JSON
.
parse
(
t
);
if
(
n
.
error
||!
n
.
pagecount
){
this
.
dialogue
&&
this
.
dialogue
.
hide
(),
o
=
new
M
.
core
.
alert
({
message
:
M
.
util
.
get_string
(
"
cannotopenpdf
"
,
"
assignfeedback_editpdfplus
"
)}),
o
.
show
();
return
}}
catch
(
u
){
this
.
dialogue
&&
this
.
dialogue
.
hide
(),
o
=
new
M
.
core
.
alert
({
title
:
M
.
util
.
get_string
(
"
cannotopenpdf
"
,
"
assignfeedback_editpdfplus
"
)}),
o
.
show
();
return
}
this
.
pagecount
=
n
.
pagecount
,
this
.
pages
=
n
.
pages
,
this
.
tools
=
[];
for
(
r
=
0
;
r
<
n
.
tools
.
length
;
r
++
){
var
a
=
n
.
tools
[
r
];
this
.
tools
[
a
.
id
]
=
a
}
this
.
typetools
=
[];
for
(
r
=
0
;
r
<
n
.
typetools
.
length
;
r
++
){
var
f
=
n
.
typetools
[
r
];
this
.
typetools
[
f
.
id
]
=
f
}
this
.
axis
=
[];
for
(
r
=
0
;
r
<
n
.
axis
.
length
;
r
++
){
var
l
=
n
.
axis
[
r
];
l
.
visibility
=!
0
,
this
.
axis
[
l
.
id
]
=
l
}
for
(
r
=
0
;
r
<
this
.
pages
.
length
;
r
++
){
for
(
i
=
0
;
i
<
this
.
pages
[
r
].
comments
.
length
;
i
++
)
s
=
this
.
pages
[
r
].
comments
[
i
],
this
.
pages
[
r
].
comments
[
i
]
=
new
M
.
assignfeedback_editpdfplus
.
comment
(
this
,
s
.
gradeid
,
s
.
pageno
,
s
.
x
,
s
.
y
,
s
.
width
,
s
.
colour
,
s
.
rawtext
);
var
c
=
[];
for
(
i
=
0
;
i
<
this
.
pages
[
r
].
annotations
.
length
;
i
++
){
n
=
this
.
pages
[
r
].
annotations
[
i
],
n
.
parent_annot
&&
parseInt
(
n
.
parent_annot
)
!==
0
&&
(
n
.
parent_annot_element
=
c
[
n
.
parent_annot
]);
var
h
=
this
.
create_annotation
(
this
.
typetools
[
this
.
tools
[
n
.
toolid
].
type
].
label
,
n
.
toolid
,
n
,
this
.
tools
[
n
.
toolid
]);
h
.
parent_annot_element
&&
(
this
.
annotationsparent
[
h
.
parent_annot_element
.
id
]?
this
.
annotationsparent
[
h
.
parent_annot_element
.
id
][
this
.
annotationsparent
[
h
.
parent_annot_element
.
id
].
length
]
=
h
:
this
.
annotationsparent
[
h
.
parent_annot_element
.
id
]
=
[
h
]),
c
[
n
.
id
]
=
h
,
this
.
pages
[
r
].
annotations
[
i
]
=
h
}}
this
.
quicklist
&&
this
.
quicklist
.
load
(),
this
.
setup_navigation
(),
this
.
setup_toolbar
(),
this
.
change_page
()},
get_stamp_image_url
:
function
(
t
){
var
n
=
this
.
get
(
"
stampfiles
"
),
r
=
""
;
return
e
.
Array
.
each
(
n
,
function
(
e
){
e
.
indexOf
(
t
)
>
0
&&
(
r
=
e
)},
this
),
r
},
handle_axis_button
:
function
(
e
,
t
,
n
){
t
.
visibility
=
n
.
get
(
"
checked
"
),
this
.
redraw
()},
setup_toolbar
:
function
(){
var
t
,
n
,
r
;
if
(
this
.
get
(
"
readonly
"
)){
for
(
var
i
=
1
;
i
<
this
.
axis
.
length
;
i
++
){
var
s
=
this
.
axis
[
i
],
u
=
this
.
get_dialogue_element
(
"
#ctaxis
"
+
s
.
id
);
u
.
set
(
"
checked
"
,
"
true
"
),
u
.
on
(
"
click
"
,
this
.
handle_axis_button
,
this
,
s
,
u
)}
var
a
=
this
.
get_dialogue_element
(
o
.
STATUTSELECTOR
);
a
.
on
(
"
change
"
,
this
.
update_visu_annotation
,
this
);
var
f
=
this
.
get_dialogue_element
(
o
.
STUDENTVALIDATION
);
f
.
on
(
"
click
"
,
this
.
update_student_feedback
,
this
);
return
}
var
l
=
this
.
get_dialogue_element
(
o
.
CUSTOMTOOLBARID
+
"
1
"
);
l
.
show
();
var
h
=
this
.
get_dialogue_element
(
o
.
AXISCUSTOMTOOLBAR
);
h
.
on
(
"
change
"
,
this
.
update_custom_toolbars
,
this
),
e
.
all
(
o
.
CUSTOMTOOLBARBUTTONS
).
each
(
function
(
e
){
var
t
=
e
.
get
(
"
id
"
),
n
=
e
.
getAttribute
(
"
data-tool
"
);
e
.
on
(
"
click
"
,
this
.
handle_tool_button
,
this
,
n
,
t
),
e
.
on
(
"
key
"
,
this
.
handle_tool_button
,
"
down:13
"
,
this
,
n
,
t
),
e
.
setAttribute
(
"
aria-pressed
"
,
"
false
"
)},
this
),
e
.
each
(
p
,
function
(
e
,
n
){
t
=
this
.
get_dialogue_element
(
e
),
t
.
on
(
"
click
"
,
this
.
handle_tool_button
,
this
,
n
),
t
.
on
(
"
key
"
,
this
.
handle_tool_button
,
"
down:13
"
,
this
,
n
),
t
.
setAttribute
(
"
aria-pressed
"
,
"
false
"
)},
this
),
n
=
this
.
get_dialogue_element
(
o
.
ANNOTATIONCOLOURBUTTON
),
r
=
new
M
.
assignfeedback_editpdfplus
.
colourpicker
({
buttonNode
:
n
,
iconprefix
:
"
colour_
"
,
colours
:
c
,
callback
:
function
(
e
){
var
t
=
e
.
target
.
getAttribute
(
"
data-colour
"
);
t
||
(
t
=
e
.
target
.
ancestor
().
getAttribute
(
"
data-colour
"
)),
this
.
currentedit
.
annotationcolour
=
t
,
this
.
lastannotationtool
?
this
.
handle_tool_button
(
e
,
this
.
lastannotationtool
):
this
.
handle_tool_button
(
e
,
"
pen
"
)},
context
:
this
})},
update_student_feedback
:
function
(){
this
.
refresh_pdf
()},
update_visu_annotation
:
function
(){
var
e
=
this
.
get_dialogue_element
(
o
.
STATUTSELECTOR
+
"
option:checked
"
),
t
=
parseInt
(
e
.
get
(
"
value
"
))
-
1
;
this
.
studentstatut
=
t
,
this
.
redraw
()},
update_custom_toolbars
:
function
(){
e
.
all
(
o
.
CUSTOMTOOLBARS
).
each
(
function
(
e
){
e
.
hide
()},
this
);
var
t
=
this
.
get_dialogue_element
(
o
.
AXISCUSTOMTOOLBAR
+
"
option:checked
"
),
n
=
parseInt
(
t
.
get
(
"
value
"
))
+
1
,
r
=
this
.
get_dialogue_element
(
o
.
CUSTOMTOOLBARID
+
""
+
n
);
r
.
show
()},
handle_tool_button
:
function
(
e
,
t
,
n
,
r
){
e
.
preventDefault
(),
this
.
handle_tool_button_action
(
t
,
n
,
r
)},
handle_tool_button_action
:
function
(
e
,
t
,
n
){
var
r
;
this
.
currentedit
.
id
?
r
=
this
.
get_dialogue_element
(
"
#
"
+
this
.
currentedit
.
id
):
r
=
this
.
get_dialogue_element
(
p
[
this
.
currentedit
.
tool
]),
r
.
removeClass
(
"
assignfeedback_editpdfplus_selectedbutton
"
),
r
.
setAttribute
(
"
aria-pressed
"
,
"
false
"
),
this
.
currentedit
.
tool
=
e
,
this
.
currentedit
.
id
=
t
,
e
!==
"
comment
"
&&
e
!==
"
select
"
&&
e
!==
"
drag
"
&&
e
!==
"
stamp
"
&&
(
this
.
lastannotationtool
=
e
),
e
!==
"
select
"
&&
this
.
redraw_annotation
(),
n
||
(
this
.
currentedit
.
parent_annot_element
=
null
),
this
.
refresh_button_state
()},
redraw_annotation
:
function
(
t
){
this
.
currentannotation
=
null
;
var
n
=
this
.
pages
[
this
.
currentpage
].
annotations
;
e
.
each
(
n
,
function
(
e
){
e
&&
e
.
drawable
&&
(
e
.
drawable
.
erase
(),
e
.
draw
())})},
stringify_current_page
:
function
(){
var
t
=
[],
n
=
[],
r
,
i
=
0
;
for
(
i
=
0
;
i
<
this
.
pages
[
this
.
currentpage
].
comments
.
length
;
i
++
)
t
[
i
]
=
this
.
pages
[
this
.
currentpage
].
comments
[
i
].
clean
();
for
(
i
=
0
;
i
<
this
.
pages
[
this
.
currentpage
].
annotations
.
length
;
i
++
)
n
[
i
]
=
this
.
pages
[
this
.
currentpage
].
annotations
[
i
].
clean
();
return
r
=
{
comments
:
t
,
annotations
:
n
},
e
.
JSON
.
stringify
(
r
)},
stringify_current_page_edited
:
function
(){
var
t
=
[],
n
,
r
=
0
;
for
(
r
=
0
;
r
<
this
.
pages
[
this
.
currentpage
].
annotations
.
length
;
r
++
)
t
[
r
]
=
this
.
pages
[
this
.
currentpage
].
annotations
[
r
].
light_clean
();
return
n
=
{
annotations
:
t
},
e
.
JSON
.
stringify
(
n
)},
get_current_drawable
:
function
(){
var
e
,
t
,
n
=!
1
;
if
(
!
this
.
currentedit
.
start
||!
this
.
currentedit
.
end
)
return
!
1
;
if
(
this
.
currentedit
.
tool
===
"
comment
"
)
e
=
new
M
.
assignfeedback_editpdfplus
.
comment
(
this
),
n
=
e
.
draw_current_edit
(
this
.
currentedit
);
else
{
var
r
=
this
.
currentedit
.
id
;
this
.
currentedit
.
id
&&
this
.
currentedit
.
id
[
0
]
===
"
c
"
&&
(
r
=
this
.
currentedit
.
id
.
substr
(
8
)),
t
=
this
.
create_annotation
(
this
.
currentedit
.
tool
,
this
.
currentedit
.
id
,{},
this
.
tools
[
r
]),
t
&&
(
n
=
t
.
draw_current_edit
(
this
.
currentedit
))}
return
n
},
get_dialogue_element
:
function
(
e
){
return
this
.
panel
?
this
.
panel
.
one
(
e
):
this
.
dialogue
.
get
(
"
boundingBox
"
).
one
(
e
)},
redraw_current_edit
:
function
(){
this
.
currentdrawable
&&
this
.
currentdrawable
.
erase
(),
this
.
currentdrawable
=
this
.
get_current_drawable
()},
edit_start
:
function
(
t
){
t
.
preventDefault
();
var
n
=
this
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
),
r
=
n
.
getXY
(),
i
=
n
.
get
(
"
docScrollY
"
),
s
=
n
.
get
(
"
docScrollX
"
),
u
=
{
x
:
t
.
clientX
-
r
[
0
]
+
s
,
y
:
t
.
clientY
-
r
[
1
]
+
i
},
a
=!
1
,
f
;
if
(
t
.
button
===
3
)
return
;
if
(
this
.
currentedit
.
starttime
)
return
;
if
(
this
.
editingcomment
)
return
;
this
.
currentedit
.
starttime
=
(
new
Date
).
getTime
(),
this
.
currentedit
.
start
=
u
,
this
.
currentedit
.
end
=
{
x
:
u
.
x
,
y
:
u
.
y
};
if
(
this
.
currentedit
.
tool
===
"
select
"
){
var
l
=
this
.
currentedit
.
end
.
x
,
c
=
this
.
currentedit
.
end
.
y
,
h
=
this
.
pages
[
this
.
currentpage
].
annotations
;
e
.
each
(
h
,
function
(
e
){(
l
-
e
.
x
)
*
(
l
-
e
.
endx
)
<=
0
&&
(
c
-
e
.
y
)
*
(
c
-
e
.
endy
)
<=
0
&&
(
a
=
e
)}),
a
&&
(
f
=
this
.
currentannotation
,
this
.
currentannotation
=
a
,
f
&&
f
!==
a
&&
f
.
drawable
&&
(
f
.
drawable
.
erase
(),
this
.
drawables
.
push
(
f
.
draw
()),
this
.
drawablesannotations
.
push
(
f
)),
this
.
currentannotation
.
drawable
&&
this
.
currentannotation
.
drawable
.
erase
(),
this
.
drawables
.
push
(
this
.
currentannotation
.
draw
()),
this
.
drawablesannotations
.
push
(
this
.
currentannotation
))}
this
.
currentannotation
&&
(
this
.
currentedit
.
annotationstart
=
{
x
:
this
.
currentannotation
.
x
,
y
:
this
.
currentannotation
.
y
})},
edit_move
:
function
(
e
){
e
.
preventDefault
();
var
t
=
this
.
get_canvas_bounds
(),
n
=
this
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
),
r
=
this
.
get_dialogue_element
(
o
.
DRAWINGREGION
),
i
=
new
M
.
assignfeedback_editpdfplus
.
point
(
e
.
clientX
+
n
.
get
(
"
docScrollX
"
),
e
.
clientY
+
n
.
get
(
"
docScrollY
"
)),
s
=
this
.
get_canvas_coordinates
(
i
),
u
,
a
;
if
(
s
.
x
<
0
||
s
.
x
>
t
.
width
||
s
.
y
<
0
||
s
.
y
>
t
.
height
)
return
;
this
.
currentedit
.
tool
===
"
pen
"
&&
this
.
currentedit
.
path
.
push
(
s
),
this
.
currentedit
.
tool
===
"
select
"
?
this
.
currentannotation
&&
this
.
currentedit
&&
this
.
currentannotation
.
move
(
this
.
currentedit
.
annotationstart
.
x
+
s
.
x
-
this
.
currentedit
.
start
.
x
,
this
.
currentedit
.
annotationstart
.
y
+
s
.
y
-
this
.
currentedit
.
start
.
y
):
this
.
currentedit
.
tool
===
"
drag
"
?(
u
=
s
.
x
-
this
.
currentedit
.
start
.
x
,
a
=
s
.
y
-
this
.
currentedit
.
start
.
y
,
r
.
getDOMNode
().
scrollLeft
-=
u
,
r
.
getDOMNode
().
scrollTop
-=
a
):
this
.
currentedit
.
start
&&
(
this
.
currentedit
.
end
=
s
,
this
.
redraw_current_edit
())},
edit_end
:
function
(){
var
e
,
t
,
n
;
e
=
(
new
Date
).
getTime
()
-
this
.
currentedit
.
start
;
if
(
e
<
h
||
this
.
currentedit
.
start
===!
1
)
return
;
if
(
this
.
currentedit
.
tool
===
"
comment
"
)
this
.
currentdrawable
&&
this
.
currentdrawable
.
erase
(),
this
.
currentdrawable
=!
1
,
t
=
new
M
.
assignfeedback_editpdfplus
.
comment
(
this
),
t
.
init_from_edit
(
this
.
currentedit
)
&&
(
this
.
pages
[
this
.
currentpage
].
comments
.
push
(
t
),
this
.
drawables
.
push
(
t
.
draw
(
!
0
)),
this
.
editingcomment
=!
0
);
else
{
var
r
=
this
.
currentedit
.
id
;
this
.
currentedit
.
id
&&
this
.
currentedit
.
id
[
0
]
===
"
c
"
&&
(
r
=
this
.
currentedit
.
id
.
substr
(
8
)),
n
=
this
.
create_annotation
(
this
.
currentedit
.
tool
,
this
.
currentedit
.
id
,{},
this
.
tools
[
r
]);
if
(
n
){
this
.
currentdrawable
&&
this
.
currentdrawable
.
erase
(),
this
.
currentdrawable
=!
1
;
if
(
n
.
init_from_edit
(
this
.
currentedit
)){
this
.
currentannotation
=
n
,
n
.
draw_catridge
(
this
.
currentedit
),
n
.
edit_annot
();
if
(
n
.
parent_annot_element
){
var
i
=
0
;
n
.
parent_annot_element
.
id
?
i
=
n
.
parent_annot_element
.
id
:
i
=
n
.
parent_annot_element
.
divcartridge
,
this
.
annotationsparent
[
i
]?
this
.
annotationsparent
[
i
][
this
.
annotationsparent
[
i
].
length
]
=
n
:
this
.
annotationsparent
[
i
]
=
[
n
]}
this
.
pages
[
this
.
currentpage
].
annotations
.
push
(
n
),
this
.
drawables
.
push
(
n
.
draw
()),
this
.
drawablesannotations
.
push
(
n
)}}}
this
.
save_current_page
(),
this
.
currentedit
.
starttime
=
0
,
this
.
currentedit
.
start
=!
1
,
this
.
currentedit
.
end
=!
1
,
this
.
currentedit
.
path
=
[],
this
.
currentedit
.
tool
!==
"
drag
"
&&
this
.
handle_tool_button_action
(
"
select
"
)},
resize
:
function
(){
var
t
,
n
;
if
(
this
.
dialogue
){
if
(
!
this
.
dialogue
.
get
(
"
visible
"
))
return
;
this
.
dialogue
.
centerDialogue
()}
return
n
=
e
.
one
(
"
body
"
).
get
(
"
winHeight
"
)
-
120
,
n
<
100
&&
(
n
=
100
),
t
=
this
.
get_dialogue_element
(
o
.
DRAWINGREGION
),
this
.
dialogue
&&
t
.
setStyle
(
"
maxHeight
"
,
n
+
"
px
"
),
this
.
redraw
(),
!
0
},
create_annotation
:
function
(
e
,
t
,
n
,
r
){
!
e
||
typeof
e
==
"
undefined
"
||
typeof
t
!=
"
undefined
"
&&
t
!==
null
?
t
!==
null
&&
t
[
0
]
===
"
c
"
&&
(
n
.
toolid
=
t
.
substr
(
8
)):(
e
===
"
line
"
?
n
.
toolid
=
d
.
LINE
:
e
===
"
rectangle
"
?
n
.
toolid
=
d
.
RECTANGLE
:
e
===
"
oval
"
?
n
.
toolid
=
d
.
OVAL
:
e
===
"
pen
"
?
n
.
toolid
=
d
.
PEN
:
e
===
"
highlight
"
&&
(
n
.
toolid
=
d
.
HIGHLIGHT
),
n
.
tooltype
=
this
.
tools
[
n
.
toolid
]);
if
(
!
n
.
tooltype
||
n
.
tooltype
===
""
)
n
.
tooltype
=
r
;
return
n
.
tool
=
e
,
n
.
editor
=
this
,
n
.
tool
===
d
.
LINE
+
""
||
n
.
tool
===
v
.
LINE
?
new
M
.
assignfeedback_editpdfplus
.
annotationline
(
n
):
n
.
tool
===
d
.
RECTANGLE
+
""
||
n
.
tool
===
v
.
RECTANGLE
?
new
M
.
assignfeedback_editpdfplus
.
annotationrectangle
(
n
):
n
.
tool
===
d
.
OVAL
+
""
||
n
.
tool
===
v
.
OVAL
?
new
M
.
assignfeedback_editpdfplus
.
annotationoval
(
n
):
n
.
tool
===
d
.
PEN
+
""
||
n
.
tool
===
v
.
PEN
?
new
M
.
assignfeedback_editpdfplus
.
annotationpen
(
n
):
n
.
tool
===
d
.
HIGHLIGHT
+
""
||
n
.
tool
===
v
.
HIGHLIGHT
?
new
M
.
assignfeedback_editpdfplus
.
annotationhighlight
(
n
):
n
.
tool
===
d
.
FRAME
+
""
||
n
.
tool
===
v
.
FRAME
?(
r
&&
n
.
colour
===
""
&&
(
n
.
colour
=
this
.
typetools
[
r
.
type
].
color
),
!
n
.
parent_annot
&&!
n
.
parent_annot_element
&&
(
this
.
currentedit
.
parent_annot_element
?
n
.
parent_annot_element
=
this
.
currentedit
.
parent_annot_element
:(
n
.
parent_annot_element
=
null
,
n
.
parent_annot
=
0
)),
new
M
.
assignfeedback_editpdfplus
.
annotationframe
(
n
)):(
r
&&
(
r
.
colors
&&
r
.
colors
.
indexOf
(
"
,
"
)
!==-
1
?
n
.
colour
=
r
.
colors
.
substr
(
0
,
r
.
colors
.
indexOf
(
"
,
"
)):
n
.
colour
=
r
.
colors
,
n
.
colour
===
""
&&
(
n
.
colour
=
this
.
typetools
[
r
.
type
].
color
)),
n
.
tool
===
d
.
HIGHLIGHTPLUS
+
""
||
n
.
tool
===
v
.
HIGHLIGHTPLUS
?
new
M
.
assignfeedback_editpdfplus
.
annotationhighlightplus
(
n
):
n
.
tool
===
d
.
STAMPPLUS
+
""
||
n
.
tool
===
v
.
STAMPPLUS
?
new
M
.
assignfeedback_editpdfplus
.
annotationstampplus
(
n
):
n
.
tool
===
d
.
VERTICALLINE
+
""
||
n
.
tool
===
v
.
VERTICALLINE
?
new
M
.
assignfeedback_editpdfplus
.
annotationverticalline
(
n
):
n
.
tool
===
d
.
STAMPCOMMENT
+
""
||
n
.
tool
===
v
.
STAMPCOMMENT
?
new
M
.
assignfeedback_editpdfplus
.
annotationstampcomment
(
n
):
n
.
tool
===
d
.
COMMENTPLUS
+
""
||
n
.
tool
===
v
.
COMMENTPLUS
?
new
M
.
assignfeedback_editpdfplus
.
annotationcommentplus
(
n
):
!
1
)},
refresh_pdf
:
function
(){
var
t
=
n
,
r
;
r
=
{
method
:
"
post
"
,
context
:
this
,
sync
:
!
1
,
data
:{
sesskey
:
M
.
cfg
.
sesskey
,
action
:
"
generatepdf
"
,
userid
:
this
.
get
(
"
userid
"
),
attemptnumber
:
this
.
get
(
"
attemptnumber
"
),
assignmentid
:
this
.
get
(
"
assignmentid
"
),
refresh
:
!
0
},
on
:{
success
:
function
(
t
,
n
){
var
r
;
try
{
r
=
e
.
JSON
.
parse
(
n
.
responseText
);
if
(
r
.
error
)
return
new
M
.
core
.
ajaxException
(
r
);
e
.
one
(
o
.
UNSAVEDCHANGESINPUT
).
set
(
"
value
"
,
"
true
"
),
e
.
one
(
o
.
UNSAVEDCHANGESDIV
).
setStyle
(
"
opacity
"
,
1
),
e
.
one
(
o
.
UNSAVEDCHANGESDIV
).
setStyle
(
"
display
"
,
"
inline-block
"
),
e
.
one
(
o
.
UNSAVEDCHANGESDIV
).
transition
({
duration
:
1
,
delay
:
2
,
opacity
:
0
},
function
(){
e
.
one
(
o
.
UNSAVEDCHANGESDIV
).
setStyle
(
"
display
"
,
"
none
"
)})}
catch
(
i
){
return
new
M
.
core
.
exception
(
i
)}},
failure
:
function
(
e
,
t
){
return
new
M
.
core
.
exception
(
t
.
responseText
)}}},
e
.
io
(
t
,
r
)},
save_current_page
:
function
(){
var
t
=
n
,
r
;
r
=
{
method
:
"
post
"
,
context
:
this
,
sync
:
!
1
,
data
:{
sesskey
:
M
.
cfg
.
sesskey
,
action
:
"
savepage
"
,
index
:
this
.
currentpage
,
userid
:
this
.
get
(
"
userid
"
),
attemptnumber
:
this
.
get
(
"
attemptnumber
"
),
assignmentid
:
this
.
get
(
"
assignmentid
"
),
page
:
this
.
stringify_current_page
()},
on
:{
success
:
function
(
t
,
n
){
var
r
;
try
{
r
=
e
.
JSON
.
parse
(
n
.
responseText
);
if
(
r
.
error
)
return
new
M
.
core
.
ajaxException
(
r
);
e
.
one
(
o
.
UNSAVEDCHANGESINPUT
).
set
(
"
value
"
,
"
true
"
),
e
.
one
(
o
.
UNSAVEDCHANGESDIV
).
setStyle
(
"
opacity
"
,
1
),
e
.
one
(
o
.
UNSAVEDCHANGESDIV
).
setStyle
(
"
display
"
,
"
inline-block
"
),
e
.
one
(
o
.
UNSAVEDCHANGESDIV
).
transition
({
duration
:
1
,
delay
:
2
,
opacity
:
0
},
function
(){
e
.
one
(
o
.
UNSAVEDCHANGESDIV
).
setStyle
(
"
display
"
,
"
none
"
)})}
catch
(
i
){
return
new
M
.
core
.
exception
(
i
)}},
failure
:
function
(
e
,
t
){
return
new
M
.
core
.
exception
(
t
.
responseText
)}}},
e
.
io
(
t
,
r
)},
save_current_page_edited
:
function
(
t
){
var
r
=
n
,
i
;
i
=
{
method
:
"
post
"
,
context
:
this
,
sync
:
!
1
,
data
:{
sesskey
:
M
.
cfg
.
sesskey
,
action
:
"
updatestudentview
"
,
index
:
this
.
currentpage
,
userid
:
this
.
get
(
"
userid
"
),
attemptnumber
:
this
.
get
(
"
attemptnumber
"
),
assignmentid
:
this
.
get
(
"
assignmentid
"
),
page
:
this
.
stringify_current_page_edited
()},
on
:{
success
:
function
(
t
,
n
){
var
r
;
try
{
r
=
e
.
JSON
.
parse
(
n
.
responseText
);
if
(
r
.
error
)
return
new
M
.
core
.
ajaxException
(
r
);
e
.
one
(
o
.
UNSAVEDCHANGESINPUT
).
set
(
"
value
"
,
"
true
"
),
e
.
one
(
o
.
UNSAVEDCHANGESDIVEDIT
).
setStyle
(
"
opacity
"
,
1
),
e
.
one
(
o
.
UNSAVEDCHANGESDIVEDIT
).
setStyle
(
"
display
"
,
"
inline-block
"
),
e
.
one
(
o
.
UNSAVEDCHANGESDIVEDIT
).
transition
({
duration
:
1
,
delay
:
2
,
opacity
:
0
},
function
(){
e
.
one
(
o
.
UNSAVEDCHANGESDIVEDIT
).
setStyle
(
"
display
"
,
"
none
"
)})}
catch
(
i
){
return
new
M
.
core
.
exception
(
i
)}},
failure
:
function
(
e
,
t
){
return
new
M
.
core
.
exception
(
t
.
responseText
)}}},
e
.
io
(
r
,
i
)},
open_search_comments
:
function
(
e
){
this
.
searchcommentswindow
||
(
this
.
searchcommentswindow
=
new
M
.
assignfeedback_editpdfplus
.
commentsearch
({
editor
:
this
})),
this
.
searchcommentswindow
.
show
(),
e
.
preventDefault
()},
redraw
:
function
(){
var
t
,
n
;
n
=
this
.
pages
[
this
.
currentpage
];
if
(
n
===
undefined
)
return
;
while
(
this
.
drawables
.
length
>
0
)
this
.
drawables
.
pop
().
erase
();
while
(
this
.
drawablesannotations
.
length
>
0
){
var
r
=
this
.
drawablesannotations
.
pop
();
if
(
r
.
divcartridge
){
var
i
=
e
.
one
(
"
#
"
+
r
.
divcartridge
);
i
&&
i
.
remove
(),
r
.
divcartridge
=
""
}
r
.
drawable
&&
r
.
drawable
.
erase
()}
for
(
t
=
0
;
t
<
n
.
annotations
.
length
;
t
++
){
var
r
=
n
.
annotations
[
t
],
s
=
r
.
tooltype
;
if
(
this
.
get
(
"
readonly
"
)
&&
s
.
axis
&&
this
.
axis
[
s
.
axis
]
&&
this
.
axis
[
s
.
axis
].
visibility
&&
(
this
.
studentstatut
<
0
||
this
.
studentstatut
==
r
.
studentstatus
)
||!
this
.
get
(
"
readonly
"
))
this
.
drawables
.
push
(
r
.
draw
()),
this
.
drawablesannotations
.
push
(
r
)}
for
(
t
=
0
;
t
<
n
.
comments
.
length
;
t
++
)
this
.
drawables
.
push
(
n
.
comments
[
t
].
draw
(
!
1
))},
change_page
:
function
(){
var
e
=
this
.
get_dialogue_element
(
o
.
DRAWINGCANVAS
),
t
,
n
,
r
;
n
=
this
.
get_dialogue_element
(
o
.
PREVIOUSBUTTON
),
r
=
this
.
get_dialogue_element
(
o
.
NEXTBUTTON
),
this
.
currentpage
>
0
?
n
.
removeAttribute
(
"
disabled
"
):
n
.
setAttribute
(
"
disabled
"
,
"
true
"
),
this
.
currentpage
<
this
.
pagecount
-
1
?
r
.
removeAttribute
(
"
disabled
"
):
r
.
setAttribute
(
"
disabled
"
,
"
true
"
),
t
=
this
.
pages
[
this
.
currentpage
],
this
.
loadingicon
.
hide
(),
e
.
setStyle
(
"
backgroundImage
"
,
'
url("
'
+
t
.
url
+
'
")
'
),
e
.
setStyle
(
"
width
"
,
t
.
width
+
"
px
"
),
e
.
setStyle
(
"
height
"
,
t
.
height
+
"
px
"
),
this
.
get_dialogue_element
(
o
.
PAGESELECT
).
set
(
"
selectedIndex
"
,
this
.
currentpage
),
this
.
resize
()},
setup_navigation
:
function
(){
var
t
,
n
,
r
,
i
,
s
,
u
;
t
=
this
.
get_dialogue_element
(
o
.
PAGESELECT
);
var
a
=
t
.
all
(
"
option
"
);
if
(
a
.
size
()
<=
1
)
for
(
n
=