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
6976b668
Commit
6976b668
authored
Jun 03, 2019
by
M. Chardon
Browse files
améliorations visu barre d'outil / taille fenêtre
parent
03bd1445
Changes
9
Hide whitespace changes
Inline
Side-by-side
classes/bdd/tool.php
View file @
6976b668
...
...
@@ -201,7 +201,7 @@ class tool {
}
$datatool
=
$this
->
typeObject
->
label
;
$iconparams
=
array
(
'data-tool'
=>
$datatool
,
'class'
=>
$this
->
typeObject
->
label
.
' costumtoolbarbutton btn btn-
secondary
'
,
'class'
=>
$this
->
typeObject
->
label
.
' costumtoolbarbutton btn btn-
light
'
,
'id'
=>
'ctbutton'
.
$this
->
id
,
'type'
=>
'button'
,
'style'
=>
$this
->
getStyleButton
());
...
...
classes/bdd/tool_generic.php
View file @
6976b668
...
...
@@ -54,7 +54,7 @@ class tool_generic extends tool {
$iconhtml
=
\
html_writer
::
tag
(
"i"
,
""
,
array
(
'class'
=>
self
::
DISPLAY_CLASS_BUTTON
[
$this
->
label
],
'aria-hidden'
=>
'true'
));
$iconparams
=
array
(
'data-tool'
=>
$this
->
label
,
'class'
=>
$this
->
label
.
'button generictoolbarbutton btn btn-
secondary
'
,
'class'
=>
$this
->
label
.
'button generictoolbarbutton btn btn-
light
'
,
'type'
=>
'button'
);
if
(
$this
->
id
)
{
...
...
classes/renderer.php
View file @
6976b668
...
...
@@ -114,7 +114,7 @@ class assignfeedback_editpdfplus_renderer extends plugin_renderer_base {
//Random id for plugin identification
$linkid
=
html_writer
::
random_id
();
$labelLaunchedEditor
=
(
$widget
->
readonly
)
?
get_string
(
'viewfeedbackonline'
,
self
::
PLUGIN_NAME
)
:
get_string
(
'launcheditor'
,
self
::
PLUGIN_NAME
);
$links
=
html_writer
::
tag
(
'a'
,
$labelLaunchedEditor
,
array
(
'id'
=>
$linkid
,
self
::
HTMLCLASS
=>
'btn btn-
secondary
'
,
'href'
=>
'#'
));
$links
=
html_writer
::
tag
(
'a'
,
$labelLaunchedEditor
,
array
(
'id'
=>
$linkid
,
self
::
HTMLCLASS
=>
'btn btn-
light
'
,
'href'
=>
'#'
));
$html
.
=
'<input type="hidden" name="assignfeedback_editpdfplus_haschanges" value="false"/>'
;
$html
.
=
html_writer
::
div
(
$links
,
'visibleifjs'
);
...
...
@@ -133,7 +133,7 @@ class assignfeedback_editpdfplus_renderer extends plugin_renderer_base {
$nav_prev
=
'nav_prev'
;
$nav_next
=
'nav_next'
;
}
$classNav
=
"btn btn-
secondary
"
;
$classNav
=
"btn btn-
light
"
;
$iconhtmlP
=
$this
->
render_toolbar_button_icon
(
"fa-caret-left fa-2x"
);
$navigation
.
=
$this
->
render_toolbar_button_html
(
$iconhtmlP
,
array
(
self
::
HTMLDISABLED
=>
'true'
,
self
::
HTMLCLASS
=>
$classNav
.
'navigate-previous-button'
));
...
...
@@ -143,7 +143,7 @@ class assignfeedback_editpdfplus_renderer extends plugin_renderer_base {
$navigation
.
=
$this
->
render_toolbar_button_html
(
$iconhtmlN
,
array
(
self
::
HTMLDISABLED
=>
'true'
,
self
::
HTMLCLASS
=>
$classNav
.
"navigate-next-button"
));
$navigationBlock
=
$this
->
render_toolbar
(
$navigation
,
"mr-
auto
"
);
$navigationBlock
=
$this
->
render_toolbar
(
$navigation
,
"mr-
3
"
);
$toolbarRotationBlock
=
''
;
$toolbarBaseBlock
=
''
;
...
...
@@ -219,20 +219,26 @@ class assignfeedback_editpdfplus_renderer extends plugin_renderer_base {
[
get_string
(
'question_select'
,
self
::
PLUGIN_NAME
),
get_string
(
'question_select_without'
,
self
::
PLUGIN_NAME
),
get_string
(
'question_select_with'
,
self
::
PLUGIN_NAME
)],
'questionselection'
,
0
,
FALSE
,
array
(
self
::
HTMLCLASS
=>
'form-control'
));
$statuschoice
=
html_writer
::
select
(
[
get_string
(
'statut_select'
,
self
::
PLUGIN_NAME
),
get_string
(
'statut_select_nc'
,
self
::
PLUGIN_NAME
),
get_string
(
'statut_select_ok'
,
self
::
PLUGIN_NAME
),
get_string
(
'statut_select_ko'
,
self
::
PLUGIN_NAME
)],
'statutselection'
,
0
,
FALSE
,
array
(
self
::
HTMLCLASS
=>
'form-control'
));
$validatebutton
=
$this
->
render_toolbar_button_html
(
get_string
(
'send_pdf_update'
,
self
::
PLUGIN_NAME
),
array
(
self
::
HTMLCLASS
=>
'btn btn-
secondary
'
,
'id'
=>
'student_valide_button'
));
$validatebutton
=
$this
->
render_toolbar_button_html
(
get_string
(
'send_pdf_update'
,
self
::
PLUGIN_NAME
),
array
(
self
::
HTMLCLASS
=>
'btn btn-
light
'
,
'id'
=>
'student_valide_button'
));
$toolbarAxis
.
=
$this
->
render_toolbar
(
$statuschoice
);
$toolbarAxis
.
=
$this
->
render_toolbar
(
$questionchoice
,
'mr-3'
);
$toolbarAxis
.
=
$this
->
render_toolbar
(
$validatebutton
,
'mr-0'
);
}
$pageheadercontent
=
$navigationBlock
$pageheadercontent
=
"<div class='d-flex align-content-center flex-nowrap align-items-center'>"
.
$navigationBlock
.
$toolbarAdminBlock
.
"<div class='d-fex flex-wrap align-content-center align-items-center'>"
.
$toolbarRotationBlock
.
$toolbarBaseBlock
.
"<div class='btn-group btn-group-sm p-1'>"
.
$toolbarAxis
.
$toolbarCostumdiv
.
$toolbarDrawBlock
;
$mainnavigation
=
html_writer
::
div
(
$pageheadercontent
,
"btn-toolbar btn-group-sm bg-light p-1"
,
array
(
'role'
=>
'toolbar'
));
.
'</div>'
.
$toolbarDrawBlock
.
'</div>'
.
'</div>'
;
$mainnavigation
=
html_writer
::
div
(
$pageheadercontent
,
"drawingtoolbar btn-toolbar btn-group-sm bg-light p-1"
,
array
(
'role'
=>
'toolbar'
));
$body
.
=
$mainnavigation
;
...
...
styles.css
View file @
6976b668
...
...
@@ -42,18 +42,10 @@
.assignfeedback_editpdfplus_widget
.drawingregion
{
border
:
1px
solid
#ccc
;
left
:
0.1em
;
right
:
1em
;
/*top: 52px;*/
bottom
:
0
;
position
:
absolute
;
overflow
:
auto
;
overflow
:
scroll
;
background-color
:
#ccc
;
touch-action
:
none
;
}
.assignfeedback_editpdfplus_widget
[
data-region
=
"review-panel-content"
]
.drawingregion
{
top
:
52px
;
max-height
:
600px
;
}
.assignfeedback_editpdfplus_widget
{
...
...
@@ -87,9 +79,7 @@
top
:
60px
;
}
.yui3-colourpicker-hidden
,
.yui3-commentsearch-hidden
,
.yui3-commentmenu-hidden
{
.yui3-colourpicker-hidden
{
display
:
none
;
}
...
...
@@ -247,7 +237,6 @@
}
ul
.assignfeedback_editpdfplus_menu
{
margin
:
0
;
min-width
:
200px
;
max-height
:
40vh
;
overflow-y
:
auto
;
overflow-x
:
hidden
;
...
...
yui/build/moodle-assignfeedback_editpdfplus-editor/moodle-assignfeedback_editpdfplus-editor-debug.js
View file @
6976b668
...
...
@@ -32,7 +32,9 @@ var AJAXBASE = M.cfg.wwwroot + '/mod/assign/feedback/editpdfplus/ajax.php',
LOADINGICON
:
'
.loading
'
,
PROGRESSBARCONTAINER
:
'
.progress-info.progress-striped
'
,
DRAWINGREGION
:
'
.drawingregion
'
,
DRAWINGREGIONCLASS
:
'
drawingregion
'
,
DRAWINGCANVAS
:
'
.drawingcanvas
'
,
DRAWINGTOOLBAR
:
'
drawingtoolbar
'
,
SAVE
:
'
.savebutton
'
,
ANNOTATIONCOLOURBUTTON
:
'
.annotationcolourbutton
'
,
DELETEANNOTATIONBUTTON
:
'
.deleteannotationbutton
'
,
...
...
@@ -5064,6 +5066,11 @@ EDITOR.prototype = {
drawingcanvas
.
on
(
'
gesturemoveend
'
,
this
.
edit_end
,
null
,
this
);
this
.
refresh_button_state
();
//trigger when window is resized
drawingcanvas
.
on
(
'
windowresize
'
,
this
.
resize
,
this
);
var
buttonChooseView
=
Y
.
one
(
'
.collapse-buttons
'
);
buttonChooseView
.
on
(
'
click
'
,
this
.
temporise
,
this
,
this
.
resize
,
500
);
}
this
.
start_generation
();
...
...
@@ -5971,14 +5978,23 @@ EDITOR.prototype = {
}
},
/**
* Temporise a function.
* @public
* @method resize
*/
temporise
:
function
(
e
,
fct
,
timeout
)
{
e
.
preventDefault
();
setTimeout
(
fct
,
timeout
);
},
/**
* Resize the dialogue window when the browser is resized.
* @public
* @method resize
*/
resize
:
function
()
{
var
drawingregion
,
drawregionheight
;
var
drawingregion
,
drawregionheight
,
drawregiontop
;
if
(
this
.
dialogue
)
{
if
(
!
this
.
dialogue
.
get
(
'
visible
'
))
{
return
;
...
...
@@ -5986,16 +6002,35 @@ EDITOR.prototype = {
this
.
dialogue
.
centerDialogue
();
}
//calculate top div
var
drawingregionheaderSelector
=
document
.
getElementsByClassName
(
SELECTOR
.
DRAWINGTOOLBAR
);
if
(
drawingregionheaderSelector
.
length
>
0
)
{
var
drawingregionheader
=
drawingregionheaderSelector
[
0
];
drawregiontop
=
drawingregionheader
.
getBoundingClientRect
().
height
;
}
else
{
drawregiontop
=
'
52
'
;
}
// Make sure the dialogue box is not bigger than the max height of the viewport.
drawregionheight
=
Y
.
one
(
'
body
'
).
get
(
'
winHeight
'
)
-
120
;
// Space for toolbar + titlebar.
if
(
drawregionheight
<
100
)
{
drawregionheight
=
100
;
}
drawingregion
=
this
.
get_dialogue_element
(
SELECTOR
.
DRAWINGREGION
);
if
(
this
.
dialogue
)
{
drawingregion
.
setStyle
(
'
maxHeight
'
,
drawregionheight
+
'
px
'
);
var
drawingregionSelector
=
document
.
getElementsByClassName
(
SELECTOR
.
DRAWINGREGIONCLASS
);
if
(
drawingregionSelector
.
length
>
0
)
{
drawingregion
=
drawingregionSelector
[
0
];
drawingregion
.
style
.
top
=
drawregiontop
+
'
px
'
;
drawingregion
.
style
.
maxHeight
=
drawregionheight
+
'
px
'
;
}
else
{
drawingregion
=
this
.
get_dialogue_element
(
SELECTOR
.
DRAWINGREGION
);
if
(
this
.
dialogue
)
{
drawingregion
.
setStyle
(
'
maxHeight
'
,
drawregionheight
+
'
px
'
);
}
}
this
.
redraw
();
try
{
this
.
redraw
();
}
catch
(
exception
)
{
}
return
true
;
},
...
...
yui/build/moodle-assignfeedback_editpdfplus-editor/moodle-assignfeedback_editpdfplus-editor-min.js
View file @
6976b668
YUI
.
add
(
"
moodle-assignfeedback_editpdfplus-editor
"
,
function
(
e
,
t
){
var
n
=
M
.
cfg
.
wwwroot
+
"
/mod/assign/feedback/editpdfplus/ajax.php
"
,
r
=
M
.
cfg
.
wwwroot
+
"
/mod/assign/feedback/editpdfplus/ajax_progress.php
"
,
i
=
{
DIALOGUE
:
"
assignfeedback_editpdfplus_widget
"
},
s
=
{
PREVIOUSBUTTON
:
"
.navigate-previous-button
"
,
NEXTBUTTON
:
"
.navigate-next-button
"
,
PAGESELECT
:
"
.navigate-page-select
"
,
LOADINGICON
:
"
.loading
"
,
PROGRESSBARCONTAINER
:
"
.progress-info.progress-striped
"
,
DRAWINGREGION
:
"
.drawingregion
"
,
DRAWING
CANVAS
:
"
.drawingcanvas
"
,
SAVE
:
"
.savebutton
"
,
ANNOTATIONCOLOURBUTTON
:
"
.annotationcolourbutton
"
,
DELETEANNOTATIONBUTTON
:
"
.deleteannotationbutton
"
,
WARNINGMESSAGECONTAINER
:
"
.warningmessages
"
,
ICONMESSAGECONTAINER
:
"
.infoicon
"
,
UNSAVEDCHANGESDIV
:
"
.assignfeedback_editpdf_warningmessages
"
,
UNSAVEDCHANGESINPUT
:
'
input[name="assignfeedback_editpdfplus_haschanges"]
'
,
UNSAVEDCHANGESDIVEDIT
:
"
.assignfeedback_editpdfplus_unsavedchanges_edit
"
,
HELPMESSAGETITLE
:
"
#afppHelpmessageTitle
"
,
HELPMESSAGE
:
"
#afppHelpmessageBody
"
,
USERINFOREGION
:
'
[data-region="user-info"]
'
,
ROTATELEFTBUTTON
:
"
.rotateleftbutton
"
,
ROTATERIGHTBUTTON
:
"
.rotaterightbutton
"
,
DIALOGUE
:
"
.
"
+
i
.
DIALOGUE
,
CUSTOMTOOLBARID
:
"
#toolbaraxis
"
,
CUSTOMTOOLBARS
:
"
.customtoolbar
"
,
AXISCUSTOMTOOLBAR
:
"
.menuaxisselection
"
,
CUSTOMTOOLBARBUTTONS
:
"
.costumtoolbarbutton
"
,
GENERICTOOLBARBUTTONS
:
"
.generictoolbarbutton
"
,
HELPBTNCLASS
:
"
.helpmessage
"
,
STATUTSELECTOR
:
"
#menustatutselection
"
,
QUESTIONSELECTOR
:
"
#menuquestionselection
"
,
STUDENTVALIDATION
:
"
#student_valide_button
"
},
o
=
"
rgba(200, 200, 255, 0.9)
"
,
u
=
"
rgba(200, 200, 255, 0.5)
"
,
a
=
{
white
:
"
rgb(255,255,255)
"
,
yellowlemon
:
"
rgb(255,255,0)
"
,
yellow
:
"
rgb(255,207,53)
"
,
red
:
"
rgb(239,69,64)
"
,
green
:
"
rgb(152,202,62)
"
,
blue
:
"
rgb(0,0,255)
"
,
black
:
"
rgb(51,51,51)
"
},
f
=
300
,
l
=
{
select
:
"
.selectbutton
"
,
drag
:
"
.dragbutton
"
},
c
=
{
HIGHLIGHTPLUS
:
1
,
LINEPLUS
:
2
,
STAMPPLUS
:
3
,
FRAME
:
4
,
VERTICALLINE
:
5
,
STAMPCOMMENT
:
6
,
COMMENTPLUS
:
7
,
PEN
:
8
,
LINE
:
9
,
RECTANGLE
:
10
,
OVAL
:
11
,
HIGHLIGHT
:
12
},
h
=
{
HIGHLIGHTPLUS
:
"
highlightplus
"
,
LINEPLUS
:
"
lineplus
"
,
STAMPPLUS
:
"
stampplus
"
,
FRAME
:
"
frame
"
,
VERTICALLINE
:
"
verticalline
"
,
STAMPCOMMENT
:
"
stampcomment
"
,
COMMENTPLUS
:
"
commentplus
"
,
PEN
:
"
pen
"
,
LINE
:
"
line
"
,
RECTANGLE
:
"
rectangle
"
,
OVAL
:
"
oval
"
,
HIGHLIGHT
:
"
highlight
"
},
p
=
2
,
d
=
function
(
e
,
t
){
this
.
x
=
parseInt
(
e
,
10
),
this
.
y
=
parseInt
(
t
,
10
),
this
.
clip
=
function
(
e
){
return
this
.
x
<
e
.
x
&&
(
this
.
x
=
e
.
x
),
this
.
x
>
e
.
x
+
e
.
width
&&
(
this
.
x
=
e
.
x
+
e
.
width
),
this
.
y
<
e
.
y
&&
(
this
.
y
=
e
.
y
),
this
.
y
>
e
.
y
+
e
.
height
&&
(
this
.
y
=
e
.
y
+
e
.
height
),
this
}};
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
point
=
d
;
var
v
=
function
(
e
,
t
,
n
,
r
){
this
.
x
=
e
,
this
.
y
=
t
,
this
.
width
=
n
,
this
.
height
=
r
,
this
.
bound
=
function
(
e
){
var
t
=
0
,
n
=
0
,
r
=
0
,
i
=
0
,
s
=
0
,
o
;
for
(
s
=
0
;
s
<
e
.
length
;
s
++
){
o
=
e
[
s
];
if
(
o
.
x
<
t
||
s
===
0
)
t
=
o
.
x
;
if
(
o
.
x
>
n
||
s
===
0
)
n
=
o
.
x
;
if
(
o
.
y
<
r
||
s
===
0
)
r
=
o
.
y
;
if
(
o
.
y
>
i
||
s
===
0
)
i
=
o
.
y
}
return
this
.
x
=
t
,
this
.
y
=
r
,
this
.
width
=
n
-
t
,
this
.
height
=
i
-
r
,
this
},
this
.
has_min_width
=
function
(){
return
this
.
width
>=
5
},
this
.
has_min_height
=
function
(){
return
this
.
height
>=
5
},
this
.
set_min_width
=
function
(){
this
.
width
=
5
},
this
.
set_min_height
=
function
(){
this
.
height
=
5
}};
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
rect
=
v
;
var
m
=
function
(){
this
.
start
=!
1
,
this
.
end
=!
1
,
this
.
starttime
=
0
,
this
.
annotationstart
=!
1
,
this
.
tool
=
"
drag
"
,
this
.
commentcolour
=
"
yellow
"
,
this
.
annotationcolour
=
"
red
"
,
this
.
path
=
[]};
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
edit
=
m
;
var
g
=
function
(
e
){
this
.
editor
=
e
,
this
.
shapes
=
[],
this
.
nodes
=
[],
this
.
erase
=
function
(){
if
(
this
.
shapes
)
while
(
this
.
shapes
.
length
>
0
)
this
.
editor
.
graphic
.
removeShape
(
this
.
shapes
.
pop
());
if
(
this
.
nodes
)
while
(
this
.
nodes
.
length
>
0
)
this
.
nodes
.
pop
().
remove
()},
this
.
scroll_update
=
function
(
e
,
t
){
var
n
,
r
,
i
;
for
(
n
=
0
;
n
<
this
.
nodes
.
length
;
n
++
)
r
=
this
.
nodes
[
n
].
getData
(
"
x
"
),
i
=
this
.
nodes
[
n
].
getData
(
"
y
"
),
r
!==
undefined
&&
i
!==
undefined
&&
(
this
.
nodes
[
n
].
setX
(
parseInt
(
r
,
10
)
-
e
),
this
.
nodes
[
n
].
setY
(
parseInt
(
i
,
10
)
-
t
))},
this
.
store_position
=
function
(
e
,
t
,
n
){
var
r
,
i
,
o
;
r
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGREGION
),
i
=
parseInt
(
r
.
get
(
"
scrollLeft
"
),
10
),
o
=
parseInt
(
r
.
get
(
"
scrollTop
"
),
10
),
e
.
setData
(
"
x
"
,
t
+
i
),
e
.
setData
(
"
y
"
,
n
+
o
)}};
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
drawable
=
g
;
var
y
=
function
(
e
){
y
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
y
.
NAME
=
"
annotation
"
,
y
.
ATTRS
=
{},
e
.
extend
(
y
,
e
.
Base
,{
editor
:
null
,
gradeid
:
0
,
pageno
:
0
,
x
:
0
,
y
:
0
,
endx
:
0
,
endy
:
0
,
path
:
""
,
toolid
:
0
,
colour
:
"
red
"
,
drawable
:
!
1
,
tooltype
:
null
,
tooltypefamille
:
null
,
divcartridge
:
""
,
textannot
:
""
,
displaylock
:
1
,
displayrotation
:
0
,
borderstyle
:
""
,
parent_annot
:
0
,
parent_annot_element
:
null
,
id
:
0
,
shape_id
:
""
,
cartridgex
:
0
,
cartridgey
:
0
,
answerrequested
:
0
,
studentstatus
:
0
,
studentanswer
:
""
,
pdfdisplay
:
"
footnote
"
,
initializer
:
function
(
e
){
e
.
parent_annot_element
?(
this
.
editor
=
e
.
parent_annot_element
.
editor
||
null
,
this
.
gradeid
=
parseInt
(
e
.
parent_annot_element
.
gradeid
,
10
)
||
0
,
this
.
pageno
=
parseInt
(
e
.
parent_annot_element
.
pageno
,
10
)
||
0
,
this
.
cartridgex
=
parseInt
(
e
.
parent_annot_element
.
cartridgex
,
10
)
||
0
,
this
.
cartridgey
=
parseInt
(
e
.
parent_annot_element
.
cartridgey
,
10
)
||
0
,
this
.
colour
=
e
.
parent_annot_element
.
colour
||
"
red
"
,
this
.
tooltype
=
e
.
tooltype
,
this
.
textannot
=
e
.
parent_annot_element
.
textannot
,
this
.
displaylock
=
parseInt
(
e
.
parent_annot_element
.
displaylock
,
10
),
this
.
displayrotation
=
e
.
parent_annot_element
.
displayrotation
,
this
.
borderstyle
=
e
.
parent_annot_element
.
borderstyle
||
"
solid
"
,
this
.
parent_annot
=
parseInt
(
e
.
parent_annot_element
.
id
,
10
),
this
.
answerrequested
=
parseInt
(
e
.
parent_annot_element
.
answerrequested
,
10
)
||
0
,
this
.
studentstatus
=
parseInt
(
e
.
parent_annot_element
.
studentstatus
,
10
)
||
0
,
this
.
parent_annot_element
=
e
.
parent_annot_element
):(
this
.
editor
=
e
.
editor
||
null
,
this
.
gradeid
=
parseInt
(
e
.
gradeid
,
10
)
||
0
,
this
.
pageno
=
parseInt
(
e
.
pageno
,
10
)
||
0
,
this
.
cartridgex
=
parseInt
(
e
.
cartridgex
,
10
)
||
0
,
this
.
cartridgey
=
parseInt
(
e
.
cartridgey
,
10
)
||
0
,
this
.
colour
=
e
.
colour
||
"
red
"
,
this
.
tooltype
=
e
.
tooltype
,
this
.
textannot
=
e
.
textannot
,
this
.
displaylock
=
parseInt
(
e
.
displaylock
,
10
),
this
.
displayrotation
=
e
.
displayrotation
,
this
.
borderstyle
=
e
.
borderstyle
||
"
solid
"
,
this
.
parent_annot
=
parseInt
(
e
.
parent_annot
,
10
),
this
.
answerrequested
=
parseInt
(
e
.
answerrequested
,
10
)
||
0
,
this
.
studentstatus
=
parseInt
(
e
.
studentstatus
,
10
)
||
0
,
this
.
studentanswer
=
e
.
studentanswer
),
this
.
id
=
e
.
id
,
this
.
x
=
parseInt
(
e
.
x
,
10
)
||
0
,
this
.
y
=
parseInt
(
e
.
y
,
10
)
||
0
,
this
.
endx
=
parseInt
(
e
.
endx
,
10
)
||
0
,
this
.
endy
=
parseInt
(
e
.
endy
,
10
)
||
0
,
this
.
path
=
e
.
path
||
""
,
this
.
toolid
=
e
.
toolid
||
this
.
editor
.
get_dialogue_element
(
c
.
RECTANGLE
),
this
.
drawable
=!
1
,
this
.
pdfdisplay
=
e
.
pdfdisplay
,
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
,
pdfdisplay
:
this
.
pdfdisplay
}:{
gradeid
:
this
.
gradeid
,
x
:
parseInt
(
this
.
x
,
10
),
y
:
parseInt
(
this
.
y
,
10
),
endx
:
parseInt
(
this
.
endx
,
10
),
endy
:
parseInt
(
this
.
endy
,
10
),
cartridgex
:
parseInt
(
this
.
cartridgex
,
10
),
cartridgey
:
parseInt
(
this
.
cartridgey
,
10
),
toolid
:
this
.
toolid
,
path
:
this
.
path
,
pageno
:
this
.
pageno
,
colour
:
this
.
colour
,
textannot
:
this
.
textannot
,
displaylock
:
parseInt
(
this
.
displaylock
,
10
),
displayrotation
:
parseInt
(
this
.
displayrotation
,
10
),
borderstyle
:
this
.
borderstyle
,
parent_annot
:
parseInt
(
this
.
parent_annot
,
10
),
divcartridge
:
this
.
divcartridge
,
parent_annot_div
:
""
,
answerrequested
:
parseInt
(
this
.
answerrequested
,
10
),
studentstatus
:
parseInt
(
this
.
studentstatus
,
10
),
pdfdisplay
:
this
.
pdfdisplay
}},
light_clean
:
function
(){
return
{
id
:
this
.
id
,
studentstatus
:
parseInt
(
this
.
studentstatus
,
10
),
studentanswer
:
this
.
studentanswer
}},
draw_highlight
:
function
(){
var
t
,
n
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGREGION
),
r
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
(),
i
;
if
(
this
.
editor
.
currentannotation
===
this
){
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
t
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
-
10
,
this
.
y
-
10
),
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
endx
+
10
,
this
.
endy
+
10
)]),
i
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Rect
,
width
:
t
.
width
,
height
:
t
.
height
,
stroke
:{
weight
:
p
,
color
:
o
},
fill
:{
color
:
u
},
x
:
t
.
x
,
y
:
t
.
y
}),
this
.
drawable
.
shapes
.
push
(
i
),
i
.
editor
=
this
.
editor
,
i
.
on
(
"
clickoutside
"
,
e
.
rbind
(
this
.
editor
.
redraw_annotation
,
this
.
editor
));
var
a
=
e
.
Node
.
create
(
'
<i class="fa fa-trash" aria-hidden="true"></i>
'
),
f
=
e
.
Node
.
create
(
'
<a href="#" role="button"></a>
'
);
a
.
setAttrs
({
alt
:
M
.
util
.
get_string
(
"
deleteannotation
"
,
"
assignfeedback_editpdfplus
"
)}),
a
.
setStyles
({
backgroundColor
:
"
white
"
}),
f
.
addClass
(
"
deleteannotationbutton
"
),
f
.
append
(
a
),
n
.
append
(
f
),
f
.
setData
(
"
annotation
"
,
this
),
f
.
setStyle
(
"
zIndex
"
,
"
200
"
),
f
.
on
(
"
click
"
,
this
.
remove
,
this
),
f
.
on
(
"
key
"
,
this
.
remove
,
"
space,enter
"
,
this
),
f
.
setX
(
r
[
0
]
+
t
.
x
+
t
.
width
-
18
),
f
.
setY
(
r
[
1
]
+
t
.
y
+
t
.
height
-
18
),
this
.
drawable
.
nodes
.
push
(
f
)}
return
this
.
drawable
},
draw
:
function
(){
return
this
.
draw_highlight
(),
this
.
drawable
},
get_color
:
function
(){
var
e
=
a
[
this
.
colour
];
return
e
?(
e
=
e
.
replace
(
"
rgb
"
,
"
rgba
"
),
e
=
e
.
replace
(
"
)
"
,
"
,0.5)
"
)):
e
=
this
.
colour
,
e
},
get_color_cartridge
:
function
(){
var
e
=
a
[
this
.
tooltype
.
cartridge_color
];
return
e
?(
e
=
e
.
replace
(
"
rgb
"
,
"
rgba
"
),
e
=
e
.
replace
(
"
)
"
,
"
,0.5)
"
)):
e
=
this
.
tooltype
.
cartridge_color
,
e
===
""
?
this
.
tooltypefamille
.
cartridge_color
:
e
},
init_div_cartridge_id
:
function
(){
var
e
=
(
new
Date
).
toJSON
().
replace
(
/:/g
,
""
).
replace
(
/
\.
/g
,
""
);
this
.
divcartridge
=
"
ct_
"
+
this
.
tooltype
.
id
+
"
_
"
+
e
},
get_div_cartridge
:
function
(
t
){
var
n
=
"
<div
"
;
n
+=
"
id='
"
+
this
.
divcartridge
+
"
'
"
,
n
+=
"
class='assignfeedback_editpdfplus_cartridge'
"
,
n
+=
"
style='border-color:
"
+
t
+
"
;'>
"
,
n
+=
"
</div>
"
;
var
r
=
e
.
Node
.
create
(
n
);
return
this
.
editor
.
get
(
"
readonly
"
)
&&
r
.
on
(
"
click
"
,
this
.
view_annot
,
this
),
r
},
get_div_cartridge_label
:
function
(
t
,
n
){
var
r
=
"
<div
"
;
r
+=
"
id='
"
+
this
.
divcartridge
+
"
_cartridge'
"
,
r
+=
"
class='assignfeedback_editpdfplus_
"
+
this
.
tooltypefamille
.
label
+
"
_cartridge'
"
,
this
.
editor
.
get
(
"
readonly
"
)
&&
this
.
get_valref
()
===
""
?
r
+=
"
style='border-right:none;padding-right:0px;color:
"
+
t
+
"
;'
"
:
r
+=
"
style='border-right-color:
"
+
t
+
"
;color:
"
+
t
+
"
;'
"
,
r
+=
"
>
"
,
r
+=
this
.
tooltype
.
cartridge
,
r
+=
"
</div>
"
;
var
i
=
e
.
Node
.
create
(
r
);
return
n
&&!
this
.
editor
.
get
(
"
readonly
"
)?(
i
.
on
(
"
mousedown
"
,
this
.
move_cartridge_begin
,
this
),
i
):
i
},
get_div_input
:
function
(
t
){
var
n
=
"
<div
"
;
n
+=
"
id='
"
+
this
.
divcartridge
+
"
_display'
"
,
n
+=
"
style='color:
"
+
t
+
"
;
"
,
this
.
editor
.
get
(
"
readonly
"
)
&&
this
.
get_valref
()
===
""
&&
(
n
+=
"
padding:0px;
"
),
n
+=
"
'></div>
"
;
var
r
=
e
.
Node
.
create
(
n
);
return
this
.
editor
.
get
(
"
readonly
"
)
||
r
.
on
(
"
click
"
,
this
.
edit_annot
,
this
),
r
},
get_div_edition
:
function
(){
var
t
=
"
<div
"
;
t
+=
"
id='
"
+
this
.
divcartridge
+
"
_edit'
"
,
t
+=
"
class='assignfeedback_editpdfplus_
"
+
this
.
tooltypefamille
.
label
+
"
_edition'
"
,
t
+=
"
style='display:none;'>
"
,
t
+=
"
<textarea id='
"
+
this
.
divcartridge
+
"
_editinput' type='text' value=
\"
"
+
this
.
get_valref
()
+
"
\"
class='form-control' style='margin-bottom:5px;' >
"
+
this
.
get_valref
()
+
"
</textarea>
"
,
t
+=
"
</div>
"
;
var
n
=
e
.
Node
.
create
(
t
),
r
=
this
.
tooltype
.
texts
;
if
(
r
&&
r
.
length
>
0
){
var
i
=
"
<div class='btn-group-vertical aepp-toolbar-vertical'></div>
"
,
s
=
e
.
Node
.
create
(
i
),
o
=
r
.
split
(
'
","
'
);
for
(
var
u
=
0
;
u
<
o
.
length
;
u
++
){
var
a
=
"
<button class='btn btn-outline-dark' type='button'>
"
+
o
[
u
].
replace
(
'
"
'
,
""
)
+
"
</button>
"
,
f
=
e
.
Node
.
create
(
a
);
f
.
on
(
"
click
"
,
this
.
fill_input_edition
,
this
,
o
[
u
].
replace
(
'
"
'
,
""
)),
s
.
append
(
f
),
s
.
append
(
"
<br/>
"
)}
n
.
append
(
s
)}
return
n
},
get_div_visu
:
function
(
t
){
var
n
=
"
<div
"
;
n
+=
"
id='
"
+
this
.
divcartridge
+
"
_visu'
"
,
n
+=
"
class='assignfeedback_editpdfplus_
"
+
this
.
tooltypefamille
.
label
+
"
_visu'
"
,
n
+=
"
style='display:none;color:
"
+
t
+
"
;'>
"
,
n
+=
this
.
get_valref
().
replace
(
/
\n
/g
,
"
<br/>
"
),
n
+=
"
</div>
"
;
var
r
=
e
.
Node
.
create
(
n
);
if
(
this
.
answerrequested
===
1
){
var
i
=
e
.
Node
.
create
(
"
<div></div>
"
),
s
=
e
.
Node
.
create
(
"
<hr style='margin-bottom:0px;'/>
"
),
o
=
e
.
Node
.
create
(
"
<label style='display:inline;'>
"
+
M
.
util
.
get_string
(
"
student_answer_lib
"
,
"
assignfeedback_editpdfplus
"
)
+
"
</label>
"
),
u
=
""
;
this
.
studentanswer
&&
this
.
studentanswer
!==
"
0
"
&&
this
.
studentanswer
!==
"
1
"
&&
(
u
=
this
.
studentanswer
);
var
a
=
e
.
Node
.
create
(
"
<br/><textarea id='
"
+
this
.
divcartridge
+
"
_studentanswer' type='text' value=
\"
"
+
u
+
"
\"
class='form-control'>
"
+
u
+
"
</textarea>
"
);
u
=
this
.
studentanswer
;
var
f
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonsavestudentanswer' style='margin-left:110px;' class='btn' type='button'>
"
+
"
<i class='fa fa-floppy-o' aria-hidden='true'></i>
"
+
"
</button>
"
,
l
=
e
.
Node
.
create
(
f
);
l
.
on
(
"
click
"
,
this
.
save_studentanswer
,
this
,
null
),
i
.
append
(
s
),
i
.
append
(
o
),
i
.
append
(
l
),
i
.
append
(
a
),
r
.
append
(
i
)}
return
r
},
get_div_container
:
function
(
t
){
var
n
=
"
<div
"
;
n
+=
"
class='assignfeedback_editpdfplus_
"
+
this
.
tooltypefamille
.
label
+
"
_conteneur' >
"
,
n
+=
"
</div>
"
;
var
r
=
e
.
Node
.
create
(
n
),
i
=
this
.
get_div_input
(
t
);
i
.
addClass
(
"
assignfeedback_editpdfplus_
"
+
this
.
tooltypefamille
.
label
+
"
_input
"
);
var
s
=
1
;
if
(
this
.
displaylock
||
this
.
displaylock
>=
0
)
s
=
this
.
displaylock
;
var
o
=
e
.
Node
.
create
(
"
<input type='hidden' id='
"
+
this
.
divcartridge
+
"
_onof' value=
"
+
s
+
"
/>
"
),
u
=
this
.
editor
.
get
(
"
readonly
"
);
return
u
||
i
.
on
(
"
click
"
,
this
.
edit_annot
,
this
),
r
.
append
(
i
),
r
.
append
(
o
),
r
.
append
(
this
.
get_input_question
()),
r
.
append
(
this
.
get_input_pdfdisplay
()),
r
},
get_toolbar
:
function
(){
var
t
=
"
<div id='
"
+
this
.
divcartridge
+
"
_toolbar' class='btn-group btn-group-sm aepp-toolbar'></div>
"
,
n
=
e
.
Node
.
create
(
t
),
r
=
this
.
editor
.
get
(
"
readonly
"
);
return
r
?
n
.
append
(
this
.
get_button_student_status
()):(
n
.
append
(
this
.
get_button_visibility_left
()),
n
.
append
(
this
.
get_button_visibility_right
()),
n
.
append
(
this
.
get_button_save
()),
n
.
append
(
this
.
get_button_cancel
()),
this
.
tooltype
.
reply
===
1
&&
n
.
append
(
this
.
get_button_question
()),
n
.
append
(
this
.
get_button_pdfdisplay
()),
n
.
append
(
this
.
get_button_remove
())),
n
},
get_button_student_status
:
function
(){
var
t
=
'
<label style="padding-left:20px;" class="radio-inline"><input type="radio" name="
'
+
this
.
divcartridge
+
'
_status" value=0 >
'
+
M
.
util
.
get_string
(
"
student_statut_nc
"
,
"
assignfeedback_editpdfplus
"
)
+
"
</label>
"
,
n
=
'
<label class="radio-inline"><input type="radio" name="
'
+
this
.
divcartridge
+
'
_status" value=1 >
'
+
'
<i style="color:green;" class="fa fa-check" aria-hidden="true"></i>
'
+
"
</label>
"
,
r
=
'
<label class="radio-inline"><input type="radio" name="
'
+
this
.
divcartridge
+
'
_status" value=2 >
'
+
'
<i style="color:red;" class="fa fa-times" aria-hidden="true"></i>
'
+
"
</label>
"
,
i
=
e
.
Node
.
create
(
t
),
s
=
e
.
Node
.
create
(
n
),
o
=
e
.
Node
.
create
(
r
);
i
.
on
(
"
click
"
,
this
.
change_status
,
this
,
0
),
s
.
on
(
"
click
"
,
this
.
change_status
,
this
,
1
),
o
.
on
(
"
click
"
,
this
.
change_status
,
this
,
2
);
var
u
=
e
.
Node
.
create
(
"
<div id='
"
+
this
.
divcartridge
+
"
_radioContainer' style='display:inline;'></div>
"
);
return
u
.
append
(
i
),
u
.
append
(
s
),
u
.
append
(
o
),
u
},
get_button_visibility_right
:
function
(){
var
t
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonedit_right' class='btn btn-sm btn-outline-dark' type='button'>
"
;
t
+=
"
<i class='fa fa-arrow-right' aria-hidden='true'></i>
"
,
t
+=
"
</button>
"
;
var
n
=
e
.
Node
.
create
(
t
);
return
n
.
on
(
"
click
"
,
this
.
change_visibility_annot
,
this
,
"
r
"
),
n
},
get_button_visibility_left
:
function
(){
var
t
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonedit_left' class='btn btn-sm btn-outline-dark' type='button'>
"
;
t
+=
"
<i class='fa fa-arrow-left' aria-hidden='true'></i>
"
,
t
+=
"
</button>
"
;
var
n
=
e
.
Node
.
create
(
t
);
return
n
.
on
(
"
click
"
,
this
.
change_visibility_annot
,
this
,
"
l
"
),
n
},
get_button_save
:
function
(){
var
t
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonsave' style='display:none;margin-left:110px;' class='btn btn-sm btn-outline-dark' type='button'>
"
+
"
<i class='fa fa-check' aria-hidden='true'></i>
"
+
"
</button>
"
,
n
=
e
.
Node
.
create
(
t
);
return
n
.
on
(
"
click
"
,
this
.
save_annot
,
this
,
null
),
n
},
get_button_cancel
:
function
(){
var
t
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttoncancel' style='display:none;' class='btn btn-sm btn-outline-dark' type='button'>
"
+
"
<i class='fa fa-undo' aria-hidden='true'></i>
"
+
"
</button>
"
,
n
=
e
.
Node
.
create
(
t
);
return
n
.
on
(
"
click
"
,
this
.
cancel_edit
,
this
),
n
},
get_button_question
:
function
(){
var
t
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonquestion' style='display:none;margin-left:10px;' class='btn btn-sm btn-outline-dark' type='button'>
"
+
'
<span class="fa-stack fa-lg" style="line-height: 1em;width: 1em;">
'
+
'
<i class="fa fa-question-circle-o fa-stack-1x"></i>
'
+
'
<i class="fa fa-ban fa-stack-1x text-danger"></i>
'
+
"
</span>
"
+
"
</button>
"
,
n
=
e
.
Node
.
create
(
t
);
return
n
.
on
(
"
click
"
,
this
.
change_question_status
,
this
),
n
},
get_button_remove
:
function
(){
var
t
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonremove' style='display:none;margin-left:10px;' class='btn btn-sm btn-outline-dark' type='button'>
"
+
"
<i class='fa fa-trash' aria-hidden='true'></i>
"
+
"
</button>
"
,
n
=
e
.
Node
.
create
(
t
);
return
n
.
on
(
"
click
"
,
this
.
remove_by_trash
,
this
),
n
},
get_button_pdfdisplay
:
function
(){
var
t
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonpdfdisplay' style='display:none;margin-left:10px;' class='btn btn-sm btn-outline-dark' type='button'>
"
+
"
<i class='fa fa-file-pdf-o' aria-hidden='true'></i>
"
+
"
<i class='fa fa-arrow-circle-o-down' aria-hidden='true'></i>
"
+
"
</button>
"
,
n
=
e
.
Node
.
create
(
t
);
return
n
.
on
(
"
click
"
,
this
.
change_pdf_display
,
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_input_pdfdisplay
:
function
(){
return
e
.
Node
.
create
(
"
<input type='hidden' id='
"
+
this
.
divcartridge
+
"
_pdfdisplay' value='
"
+
this
.
pdfdisplay
+
"
'/>
"
)},
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
(),
this
.
apply_pdfdisplay
()},
get_text_to_diplay_in_cartridge
:
function
(){
var
e
=
this
.
get_valref
(),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_onof
"
),
n
=
""
;
return
e
===
""
&&!
this
.
editor
.
get
(
"
readonly
"
)
&&
(
n
=
"
 
"
),
t
.
get
(
"
value
"
)
===
"
1
"
&&
e
!==
""
?
n
=
e
.
substr
(
0
,
20
):
t
.
get
(
"
value
"
)
===
"
0
"
&&
e
!==
""
?
n
=
"
...
"
:
e
!==
""
&&
(
n
=
e
),
this
.
answerrequested
===
1
&&
(
n
+=
'
<span style="color:red;">[?]</span>
'
),
n
},
change_visibility_annot
:
function
(
e
,
t
){
var
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_onof
"
),
r
=
parseInt
(
n
.
get
(
"
value
"
),
10
);
t
===
"
r
"
?
r
+=
1
:
r
-=
1
,
n
.
set
(
"
value
"
,
r
),
this
.
displaylock
=
r
,
this
.
apply_visibility_annot
(),
this
.
editor
.
save_current_page
()},
change_pdf_display
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_pdfdisplay
"
),
t
=
e
.
get
(
"
value
"
);
t
===
"
footnote
"
?(
e
.
set
(
"
value
"
,
"
inline
"
),
this
.
pdfdisplay
=
"
inline
"
):(
e
.
set
(
"
value
"
,
"
footnote
"
),
this
.
pdfdisplay
=
"
footnote
"
),
this
.
apply_pdfdisplay
(),
this
.
editor
.
save_current_page
()},
change_question_status
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_question
"
),
t
=
parseInt
(
e
.
get
(
"
value
"
),
10
),
n
=
0
;
t
===
0
&&
(
n
=
1
),
e
.
set
(
"
value
"
,
n
),
this
.
answerrequested
=
n
,
this
.
apply_question_status
(),
this
.
editor
.
save_current_page
()},
change_status
:
function
(
e
,
t
){
this
.
studentstatus
=
t
;
var
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_studentanswer
"
);
n
&&
(
this
.
studentanswer
=
n
.
get
(
"
value
"
));
var
r
=
this
.
editor
.
annotationsparent
[
this
.
id
];
if
(
r
)
for
(
var
i
=
0
;
i
<
r
.
length
;
i
++
)
r
[
i
].
studentstatus
=
t
;
this
.
editor
.
save_current_page_edited
(),
this
.
hide_edit
()},
apply_question_status
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonquestion
"
),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_question
"
),
n
=
0
;
t
&&
(
n
=
parseInt
(
t
.
get
(
"
value
"
),
10
)),
e
&&
(
n
===
1
?
e
.
setHTML
(
'
<i class="fa fa-question-circle-o"></i>
'
):
e
.
setHTML
(
'
<span class="fa-stack fa-lg" style="line-height: 1em;width: 1em;"><i class="fa fa-question-circle-o fa-stack-1x"></i><i class="fa fa-ban fa-stack-1x text-danger"></i></span>
'
));
return
},
apply_pdfdisplay
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonpdfdisplay
"
),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_pdfdisplay
"
),
n
=
t
.
get
(
"
value
"
);
e
&&
(
n
===
"
footnote
"
?
e
.
setHTML
(
"
<i class='fa fa-file-pdf-o' aria-hidden='true'></i> <i class='fa fa-arrow-circle-o-down' aria-hidden='true'></i>
"
):
e
.
setHTML
(
"
<i class='fa fa-file-pdf-o' aria-hidden='true'></i> <i class='fa fa-arrow-circle-o-right' aria-hidden='true'></i>
"
));
return
},
move_cartridge_begin
:
function
(
e
){
e
.
preventDefault
();
var
t
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
n
=
new
M
.
assignfeedback_editpdfplus
.
point
(
e
.
clientX
+
t
.
get
(
"
docScrollX
"
),
e
.
clientY
+
t
.
get
(
"
docScrollY
"
)),
r
=
this
.
editor
.
get_canvas_coordinates
(
n
);
this
.
oldx
=
r
.
x
,
this
.
oldy
=
r
.
y
,
t
.
on
(
"
mousemove
"
,
this
.
move_cartridge_continue
,
this
),
t
.
on
(
"
mouseup
"
,
this
.
move_cartridge_stop
,
this
)},
move_cartridge_continue
:
function
(
e
){
e
.
preventDefault
();
var
t
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
n
=
new
M
.
assignfeedback_editpdfplus
.
point
(
e
.
clientX
+
t
.
get
(
"
docScrollX
"
),
e
.
clientY
+
t
.
get
(
"
docScrollY
"
)),
r
=
this
.
editor
.
get_canvas_coordinates
(
n
),
i
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
(),
o
=
r
.
x
-
this
.
oldx
,
u
=
r
.
y
-
this
.
oldy
,
a
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
a
.
setX
(
i
[
0
]
+
this
.
x
+
this
.
cartridgex
+
o
),
a
.
setY
(
i
[
1
]
+
this
.
y
+
this
.
cartridgey
+
u
)},
move_cartridge_stop
:
function
(
e
){
e
.
preventDefault
();
var
t
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
);
t
.
detach
(
"
mousemove
"
,
this
.
move_cartridge_continue
,
this
),
t
.
detach
(
"
mouseup
"
,
this
.
move_cartridge_stop
,
this
);
var
n
=
new
M
.
assignfeedback_editpdfplus
.
point
(
e
.
clientX
+
t
.
get
(
"
docScrollX
"
),
e
.
clientY
+
t
.
get
(
"
docScrollY
"
)),
r
=
this
.
editor
.
get_canvas_coordinates
(
n
),
i
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
(),
o
=
r
.
x
-
this
.
oldx
,
u
=
r
.
y
-
this
.
oldy
;
this
.
cartridgex
+=
o
,
this
.
cartridgey
+=
u
;
var
a
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
a
.
setX
(
i
[
0
]
+
this
.
x
+
this
.
cartridgex
),
a
.
setY
(
i
[
1
]
+
this
.
y
+
this
.
cartridgey
),
this
.
editor
.
save_current_page
()},
draw_catridge
:
function
(){
return
!
0
},
view_annot
:
function
(
t
,
n
){
if
(
!
n
||
n
!==
"
click
"
||
this
.
editor
.
currentannotationreview
!==
this
){
this
.
editor
.
currentannotationreview
=
this
;
if
(
this
.
tooltype
.
type
<=
c
.
COMMENTPLUS
&&!
this
.
parent_annot_element
){
var
r
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
),
i
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_display
"
),
s
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_visu
"
),
o
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_radioContainer
"
),
u
=
e
.
all
(
"
[name=
"
+
this
.
divcartridge
+
"
_status]
"
);
i
.
hide
(),
s
.
show
();
if
(
this
.
answerrequested
===
1
){
var
a
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_studentanswer
"
);
a
&&
a
.
set
(
this
.
studentanswer
)}
for
(
var
f
=
0
;
f
<
u
.
size
();
f
++
){
var
l
=
u
.
item
(
f
);
parseInt
(
l
.
get
(
"
value
"
),
10
)
===
this
.
studentstatus
?
l
.
set
(
"
checked
"
,
!
0
):
l
.
set
(
"
checked
"
,
!
1
)}
o
.
show
(),
o
.
set
(
"
style
"
,
"
display:inline;color:
"
+
this
.
get_color_cartridge
()
+
"
;
"
),
r
.
setStyle
(
"
z-index
"
,
1
e3
),
this
.
disabled_canvas_event
(),
r
.
detach
(),
r
.
on
(
"
clickoutside
"
,
this
.
hide_edit
,
this
,
"
clickoutside
"
)}}
else
this
.
editor
.
currentannotationreview
=
null
},
edit_annot
:
function
(){
if
(
this
.
tooltype
.
type
<=
c
.
COMMENTPLUS
&&!
this
.
parent_annot_element
){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_display
"
);
if
(
!
t
)
return
;
var
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_edit
"
),
r
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_right
"
),
i
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_left
"
),
s
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonsave
"
),
o
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttoncancel
"
),
u
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonquestion
"
),
a
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonrotation
"
),
f
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonpdfdisplay
"
),
l
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonremove
"
),
h
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_editinput
"
);
t
.
hide
(),
r
&&
r
.
hide
(),
i
&&
i
.
hide
(),
a
&&
a
.
hide
(),
n
.
show
(),
s
.
show
(),
o
.
show
(),
u
&&
u
.
show
(),
f
.
show
(),
l
.
show
(),
e
.
setStyle
(
"
z-index
"
,
1
e3
),
h
&&
h
.
set
(
"
focus
"
,
"
on
"
),
this
.
disabled_canvas_event
(),
e
.
on
(
"
clickoutside
"
,
this
.
save_annot_clickout
,
this
,
"
clickoutside
"
)}},
fill_input_edition
:
function
(
e
,
t
){
var
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_editinput
"
);
n
&&
n
.
set
(
"
value
"
,
t
),
this
.
save_annot
(
t
)},
save_annot_clickout
:
function
(
e
,
t
){(
t
!==
"
clickoutside
"
||
this
.
editor
.
currentannotation
!==
this
)
&&
this
.
save_annot
(
null
);
return
},
save_annot
:
function
(
e
){
if
(
typeof
e
!=
"
string
"
){
var
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_editinput
"
);
t
&&
(
e
=
t
.
get
(
"
value
"
))}
this
.
textannot
=
e
,
this
.
editor
.
save_current_page
(),
e
.
length
===
0
&&
(
e
=
"
"
),
this
.
hide_edit
(),
this
.
apply_visibility_annot
()},
save_studentanswer
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_studentanswer
"
);
e
&&
(
this
.
studentanswer
=
e
.
get
(
"
value
"
),
this
.
editor
.
save_current_page_edited
()),
this
.
hide_edit
(),
this
.
apply_visibility_annot
()},
cancel_edit
:
function
(
e
,
t
){
if
(
t
!==
"
clickoutside
"
||
this
.
editor
.
currentannotation
!==
this
){
var
n
=
this
.
get_valref
(),
r
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_editinput
"
);
n
&&
r
&&
r
.
set
(
"
value
"
,
n
),
this
.
hide_edit
(),
this
.
apply_visibility_annot
();
var
i
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
i
&&
i
.
detach
()}
return
},
hide_edit
:
function
(
e
,
t
){
if
(
!
t
||
t
!==
"
clickoutside
"
||
this
.
editor
.
currentannotation
!==
this
){
var
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
),
r
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_display
"
),
i
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_edit
"
),
s
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_visu
"
),
o
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonsave
"
),
u
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttoncancel
"
),
a
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonquestion
"
),
f
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonrotation
"
),
l
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonpdfdisplay
"
),
c
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonremove
"
),
h
=
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
(),
c
&&
c
.
hide
(),
n
&&
(
n
.
setStyle
(
"
z-index
"
,
1
),
n
.
detach
(),
this
.
editor
.
get
(
"
readonly
"
)
&&
n
.
on
(
"
click
"
,
this
.
view_annot
,
this
,
"
click
"
)),
i
&&
this
.
enabled_canvas_event
(),
h
&&
h
.
hide
()}},
remove_by_trash
:
function
(
e
){
this
.
cancel_edit
(),
this
.
remove
(
e
)},
remove
:
function
(
e
){
var
t
,
n
;
e
.
preventDefault
(),
t
=
this
.
editor
.
pages
[
this
.
editor
.
currentpage
].
annotations
;
for
(
n
=
0
;
n
<
t
.
length
;
n
++
)
if
(
t
[
n
]
===
this
){
t
.
splice
(
n
,
1
),
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
currentannotation
=!
1
,
this
.
editor
.
save_current_page
();
return
}},
move
:
function
(
t
,
n
){
var
r
=
t
-
this
.
x
,
i
=
n
-
this
.
y
,
s
,
o
,
u
,
a
,
f
;
this
.
x
+=
r
,
this
.
y
+=
i
,
this
.
endx
+=
r
,
this
.
endy
+=
i
,
this
.
path
&&
(
s
=
[],
o
=
this
.
path
.
split
(
"
:
"
),
e
.
each
(
o
,
function
(
e
){
u
=
e
.
split
(
"
,
"
),
a
=
parseInt
(
u
[
0
],
10
),
f
=
parseInt
(
u
[
1
],
10
),
s
.
push
(
a
+
r
+
"
,
"
+
(
f
+
i
))}),
this
.
path
=
s
.
join
(
"
:
"
)),
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
drawables
.
push
(
this
.
draw
())},
draw_current_edit
:
function
(
e
){
var
t
=
e
&&!
1
;
return
t
},
init_from_edit
:
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
;
return
t
.
bound
([
e
.
start
,
e
.
end
]),
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
t
.
x
,
this
.
y
=
t
.
y
,
this
.
endx
=
t
.
x
+
t
.
width
,
this
.
endy
=
t
.
y
+
t
.
height
,
this
.
colour
=
e
.
annotationcolour
,
this
.
path
=
""
,
t
.
has_min_width
()
&&
t
.
has_min_height
()},
disabled_canvas_event
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
);
e
.
detach
()},
enabled_canvas_event
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
);
e
.
on
(
"
gesturemovestart
"
,
this
.
editor
.
edit_start
,
null
,
this
.
editor
),
e
.
on
(
"
gesturemove
"
,
this
.
editor
.
edit_move
,
null
,
this
.
editor
),
e
.
on
(
"
gesturemoveend
"
,
this
.
editor
.
edit_end
,
null
,
this
.
editor
)}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotation
=
y
;
var
b
=
function
(
e
){
b
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
b
.
NAME
=
"
annotationline
"
,
b
.
ATTRS
=
{},
e
.
extend
(
b
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
,
n
;
return
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
n
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Path
,
fill
:
!
1
,
stroke
:{
weight
:
p
,
color
:
a
[
this
.
colour
]}}),
n
.
moveTo
(
this
.
x
,
this
.
y
),
n
.
lineTo
(
this
.
endx
,
this
.
endy
),
n
.
end
(),
t
.
shapes
.
push
(
n
),
this
.
drawable
=
t
,
b
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
;
return
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Path
,
fill
:
!
1
,
stroke
:{
weight
:
p
,
color
:
a
[
t
.
annotationcolour
]}}),
r
.
moveTo
(
t
.
start
.
x
,
t
.
start
.
y
),
r
.
lineTo
(
t
.
end
.
x
,
t
.
end
.
y
),
r
.
end
(),
n
.
shapes
.
push
(
r
),
n
},
init_from_edit
:
function
(
e
){
return
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
e
.
start
.
x
,
this
.
y
=
e
.
start
.
y
,
this
.
endx
=
e
.
end
.
x
,
this
.
endy
=
e
.
end
.
y
,
this
.
colour
=
e
.
annotationcolour
,
this
.
path
=
""
,
this
.
endx
-
this
.
x
!==
0
||
this
.
endy
-
this
.
y
!==
0
}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationline
=
b
;
var
w
=
function
(
e
){
w
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
w
.
NAME
=
"
annotationrectangle
"
,
w
.
ATTRS
=
{},
e
.
extend
(
w
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
,
n
,
r
;
return
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
n
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
n
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
,
this
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
endx
,
this
.
endy
)]),
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Rect
,
width
:
n
.
width
,
height
:
n
.
height
,
stroke
:{
weight
:
p
,
color
:
a
[
this
.
colour
]},
x
:
n
.
x
,
y
:
n
.
y
}),
t
.
shapes
.
push
(
r
),
this
.
drawable
=
t
,
w
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
,
i
;
return
i
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
i
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
start
.
x
,
t
.
start
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
end
.
x
,
t
.
end
.
y
)]),
i
.
has_min_width
()
||
i
.
set_min_width
(),
i
.
has_min_height
()
||
i
.
set_min_height
(),
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Rect
,
width
:
i
.
width
,
height
:
i
.
height
,
stroke
:{
weight
:
p
,
color
:
a
[
t
.
annotationcolour
]},
x
:
i
.
x
,
y
:
i
.
y
}),
n
.
shapes
.
push
(
r
),
n
}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationrectangle
=
w
;
var
E
=
function
(
e
){
E
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
E
.
NAME
=
"
annotationoval
"
,
E
.
ATTRS
=
{},
e
.
extend
(
E
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
,
n
,
r
;
return
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
n
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
n
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
,
this
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
endx
,
this
.
endy
)]),
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Ellipse
,
width
:
n
.
width
,
height
:
n
.
height
,
stroke
:{
weight
:
p
,
color
:
a
[
this
.
colour
]},
x
:
n
.
x
,
y
:
n
.
y
}),
t
.
shapes
.
push
(
r
),
this
.
drawable
=
t
,
E
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
,
i
;
return
i
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
i
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
start
.
x
,
t
.
start
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
end
.
x
,
t
.
end
.
y
)]),
i
.
has_min_width
()
||
i
.
set_min_width
(),
i
.
has_min_height
()
||
i
.
set_min_height
(),
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Ellipse
,
width
:
i
.
width
,
height
:
i
.
height
,
stroke
:{
weight
:
p
,
color
:
a
[
t
.
annotationcolour
]},
x
:
i
.
x
,
y
:
i
.
y
}),
n
.
shapes
.
push
(
r
),
n
}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationoval
=
E
;
var
S
=
function
(
e
){
S
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
S
.
NAME
=
"
annotationpen
"
,
S
.
ATTRS
=
{},
e
.
extend
(
S
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
,
n
,
r
,
i
,
s
;
return
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
n
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Path
,
fill
:
!
1
,
stroke
:{
weight
:
p
,
color
:
a
[
this
.
colour
]}}),
r
=!
0
,
i
=
this
.
path
.
split
(
"
:
"
),
e
.
each
(
i
,
function
(
e
){
s
=
e
.
split
(
"
,
"
),
r
?(
n
.
moveTo
(
s
[
0
],
s
[
1
]),
r
=!
1
):
n
.
lineTo
(
s
[
0
],
s
[
1
])},
this
),
n
.
end
(),
t
.
shapes
.
push
(
n
),
this
.
drawable
=
t
,
S
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
,
i
;
return
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Path
,
fill
:
!
1
,
stroke
:{
weight
:
p
,
color
:
a
[
t
.
annotationcolour
]}}),
i
=!
0
,
e
.
each
(
t
.
path
,
function
(
e
){
i
?(
r
.
moveTo
(
e
.
x
,
e
.
y
),
i
=!
1
):
r
.
lineTo
(
e
.
x
,
e
.
y
)},
this
),
r
.
end
(),
n
.
shapes
.
push
(
r
),
n
},
init_from_edit
:
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
n
=
[],
r
=
0
;
t
.
bound
(
e
.
path
);
for
(
r
=
0
;
r
<
e
.
path
.
length
;
r
++
)
n
.
push
(
parseInt
(
e
.
path
[
r
].
x
,
10
)
+
"
,
"
+
parseInt
(
e
.
path
[
r
].
y
,
10
));
return
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
t
.
x
,
this
.
y
=
t
.
y
,
this
.
endx
=
t
.
x
+
t
.
width
,
this
.
endy
=
t
.
y
+
t
.
height
,
this
.
colour
=
e
.
annotationcolour
,
this
.
path
=
n
.
join
(
"
:
"
),
t
.
has_min_width
()
||
t
.
has_min_height
()}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationpen
=
S
;
var
x
=
function
(
e
){
x
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
x
.
NAME
=
"
annotationhighlight
"
,
x
.
ATTRS
=
{},
e
.
extend
(
x
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
,
n
,
r
,
i
;
return
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
r
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
,
this
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
endx
,
this
.
endy
)]),
i
=
a
[
this
.
colour
],
i
=
i
.
replace
(
"
rgb
"
,
"
rgba
"
),
i
=
i
.
replace
(
"
)
"
,
"
,0.5)
"
),
n
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Rect
,
width
:
r
.
width
,
height
:
r
.
height
,
stroke
:
!
1
,
fill
:{
color
:
i
},
x
:
r
.
x
,
y
:
r
.
y
}),
t
.
shapes
.
push
(
n
),
this
.
drawable
=
t
,
x
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
,
i
,
s
;
return
i
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
i
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
start
.
x
,
t
.
start
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
end
.
x
,
t
.
end
.
y
)]),
i
.
has_min_width
()
||
i
.
set_min_width
(),
s
=
a
[
t
.
annotationcolour
],
s
=
s
.
replace
(
"
rgb
"
,
"
rgba
"
),
s
=
s
.
replace
(
"
)
"
,
"
,0.5)
"
),
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Rect
,
width
:
i
.
width
,
height
:
20
,
stroke
:
!
1
,
fill
:{
color
:
s
},
x
:
i
.
x
,
y
:
t
.
start
.
y
-
10
}),
n
.
shapes
.
push
(
r
),
n
},
init_from_edit
:
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
;
return
t
.
bound
([
e
.
start
,
e
.
end
]),
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
t
.
x
,
this
.
y
=
e
.
start
.
y
,
this
.
endx
=
t
.
x
+
t
.
width
,
this
.
endy
=
e
.
start
.
y
+
16
,
this
.
colour
=
e
.
annotationcolour
,
this
.
page
=
""
,
t
.
has_min_width
()}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationhighlight
=
x
;
var
T
=
function
(
e
){
T
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
T
.
NAME
=
"
annotationhighlightplus
"
,
T
.
ATTRS
=
{},
e
.
extend
(
T
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
,
n
,
r
,
i
;
return
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
r
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
,
this
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
endx
,
this
.
endy
)]),
i
=
this
.
get_color
(),
n
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Rect
,
width
:
r
.
width
,
height
:
r
.
height
,
stroke
:
!
1
,
fill
:{
color
:
i
,
opacity
:.
5
},
x
:
r
.
x
,
y
:
r
.
y
}),
t
.
shapes
.
push
(
n
),
this
.
drawable
=
t
,
this
.
draw_catridge
(),
T
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
,
i
,
s
;
return
i
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
i
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
start
.
x
,
t
.
start
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
end
.
x
,
t
.
end
.
y
)]),
i
.
has_min_width
()
||
i
.
set_min_width
(),
s
=
this
.
get_color
(),
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Rect
,
width
:
i
.
width
,
height
:
16
,
stroke
:
!
1
,
fill
:{
color
:
s
,
opacity
:.
5
},
x
:
i
.
x
,
y
:
t
.
start
.
y
-
8
}),
n
.
shapes
.
push
(
r
),
n
},
init_from_edit
:
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
;
return
t
.
bound
([
e
.
start
,
e
.
end
]),
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
t
.
x
,
this
.
y
=
e
.
start
.
y
-
8
,
this
.
endx
=
t
.
x
+
t
.
width
,
this
.
endy
=
e
.
start
.
y
+
16
-
8
,
this
.
page
=
""
,
t
.
has_min_width
()},
draw_catridge
:
function
(){
var
e
,
t
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
();
if
(
this
.
divcartridge
===
""
){
this
.
init_div_cartridge_id
();
var
n
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
r
=
this
.
get_color_cartridge
();
e
=
this
.
get_div_cartridge
(
r
),
e
.
addClass
(
"
assignfeedback_editpdfplus_hightlightplus
"
);
var
i
=
this
.
get_div_cartridge_label
(
r
);
e
.
append
(
i
);
var
o
=
this
.
get_div_container
(
r
),
u
=
this
.
get_toolbar
();
o
.
append
(
u
),
e
.
append
(
o
);
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
a
=
this
.
get_div_edition
();
o
.
append
(
a
)}
else
{
var
f
=
this
.
get_div_visu
(
r
);
o
.
append
(
f
)}
if
(
!
this
.
cartridgex
||
this
.
cartridgex
===
0
)
this
.
cartridgex
=
parseInt
(
this
.
tooltypefamille
.
cartridge_x
,
10
);
if
(
!
this
.
cartridgey
||
this
.
cartridgey
===
0
)
this
.
cartridgey
=
parseInt
(
this
.
tooltypefamille
.
cartridge_y
,
10
);
e
.
setX
(
this
.
x
+
this
.
cartridgex
),
e
.
setY
(
this
.
y
+
this
.
cartridgey
),
n
.
append
(
e
),
this
.
apply_visibility_annot
()}
else
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
),
e
.
setX
(
t
[
0
]
+
this
.
x
+
this
.
cartridgex
),
e
.
setY
(
t
[
1
]
+
this
.
y
+
this
.
cartridgey
);
return
!
0
},
remove
:
function
(
e
){
var
t
,
n
;
e
.
preventDefault
(),
t
=
this
.
editor
.
pages
[
this
.
editor
.
currentpage
].
annotations
;
for
(
n
=
0
;
n
<
t
.
length
;
n
++
)
if
(
t
[
n
]
===
this
){
if
(
this
.
divcartridge
!==
""
){
var
r
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
r
.
remove
()}
t
.
splice
(
n
,
1
),
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
currentannotation
=!
1
,
this
.
editor
.
save_current_page
();
return
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationhighlightplus
=
T
;
var
N
=
function
(
e
){
N
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
N
.
NAME
=
"
annotationstampplus
"
,
N
.
ATTRS
=
{},
e
.
extend
(
N
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
n
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
r
,
i
;
return
i
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
,
this
.
y
)),
r
=
e
.
Node
.
create
(
"
<div>
"
+
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
,
N
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
r
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
i
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGREGION
),
o
,
u
;
return
n
.
bound
([
t
.
start
,
t
.
end
]),
u
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
n
.
x
,
n
.
y
)),
o
=
e
.
Node
.
create
(
"
<div>
"
+
this
.
tooltype
.
label
+
"
</div>
"
),
o
.
setStyles
({
position
:
"
absolute
"
,
display
:
"
inline-block
"
,
color
:
this
.
colour
,
border
:
"
2px solid
"
+
this
.
colour
,
padding
:
"
0 2px
"
}),
i
.
append
(
o
),
o
.
setX
(
u
.
x
),
o
.
setY
(
u
.
y
),
r
.
store_position
(
o
,
u
.
x
,
u
.
y
),
r
.
nodes
.
push
(
o
),
r
},
init_from_edit
:
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
;
return
t
.
bound
([
e
.
start
,
e
.
end
]),
t
.
width
<
40
&&
(
t
.
width
=
40
),
t
.
height
<
40
&&
(
t
.
height
=
40
),
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
t
.
x
-
5
,
this
.
y
=
t
.
y
-
10
,
this
.
endx
=
t
.
x
+
t
.
width
,
this
.
endy
=
t
.
y
+
t
.
height
,
!
0
},
edit_annot
:
function
(){
return
!
0
},
move
:
function
(
e
,
t
){
var
n
=
e
-
this
.
x
,
r
=
t
-
this
.
y
;
this
.
x
+=
n
,
this
.
y
+=
r
,
this
.
endx
+=
n
,
this
.
endy
+=
r
,
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
drawables
.
push
(
this
.
draw
())}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationstampplus
=
N
;
var
C
=
function
(
e
){
C
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
C
.
NAME
=
"
annotationstampcomment
"
,
C
.
ATTRS
=
{},
e
.
extend
(
C
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
n
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
r
,
i
;
this
.
shape_id
=
"
ct_stampcomment_
"
+
(
new
Date
).
toJSON
().
replace
(
/:/g
,
""
).
replace
(
/
\.
/g
,
""
),
i
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
,
this
.
y
));
var
o
=
this
.
get_color_cartridge
(),
u
=
'
<i id="
'
+
this
.
shape_id
+
'
_img"
'
+
'
class="fa fa-arrows-h fa-2x" aria-hidden="true" style="color:
'
+
o
+
'
;"></i>
'
;
return
this
.
displayrotation
>
0
&&
(
u
=
'
<i id="
'
+
this
.
shape_id
+
'
_img"
'
+
'
class="fa fa-arrows-v fa-2x" aria-hidden="true" style="color:
'
+
o
+
'
;"></i>
'
),
r
=
e
.
Node
.
create
(
'
<div id="
'
+
this
.
shape_id
+
'
">
'
+
u
+
"
</div>
"
),
r
.
setStyles
({
position
:
"
absolute
"
,
display
:
"
inline-block
"
}),
n
.
append
(
r
),
r
.
setY
(
i
.
y
),
r
.
setX
(
i
.
x
),
t
.
store_position
(
r
,
i
.
x
,
i
.
y
),
t
.
nodes
.
push
(
r
),
this
.
drawable
=
t
,
this
.
draw_catridge
(),
C
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
r
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
i
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGREGION
),
o
,
u
;
n
.
bound
([
t
.
start
,
t
.
end
]),
u
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
n
.
x
,
n
.
y
));
var
a
=
this
.
get_color_cartridge
(),
f
=
'
<div><i class="fa fa-arrows-v fa-2x" aria-hidden="true" style="color:
'
+
a
+
'
"></i></div>
'
;
return
o
=
e
.
Node
.
create
(
f
),
o
.
setStyles
({
position
:
"
absolute
"
,
display
:
"
inline-block
"
}),
i
.
append
(
o
),
o
.
setX
(
u
.
x
),
o
.
setY
(
u
.
y
),
r
.
store_position
(
o
,
u
.
x
,
u
.
y
),
r
.
nodes
.
push
(
o
),
r
},
init_from_edit
:
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
;
return
t
.
bound
([
e
.
start
,
e
.
end
]),
t
.
width
<
30
&&
(
t
.
width
=
30
),
t
.
height
<
30
&&
(
t
.
height
=
30
),
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
t
.
x
-
20
,
this
.
y
=
t
.
y
-
25
,
this
.
endx
=
t
.
x
+
t
.
width
-
20
,
this
.
endy
=
t
.
y
+
t
.
height
-
25
,
!
0
},
draw_catridge
:
function
(){
var
t
,
n
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
();
if
(
this
.
divcartridge
===
""
){
this
.
init_div_cartridge_id
();
var
r
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
i
=
this
.
get_color_cartridge
();
t
=
this
.
get_div_cartridge
(
i
),
t
.
addClass
(
"
assignfeedback_editpdfplus_stampcomment
"
);
var
o
=
this
.
get_div_cartridge_label
(
i
,
!
0
);
t
.
append
(
o
);
var
u
=
this
.
get_div_container
(
i
),
a
=
this
.
get_toolbar
();
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' class='btn btn-sm btn-outline-dark' type='button'>
"
+
'
<i class="fa fa-refresh" aria-hidden="true"></i>
'
+
"
</button>
"
,
h
=
e
.
Node
.
create
(
c
);
h
.
on
(
"
click
"
,
this
.
change_stamp
,
this
),
a
.
append
(
h
)}
u
.
append
(
a
),
t
.
append
(
u
);
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
p
=
this
.
get_div_edition
();
u
.
append
(
p
)}
else
{
var
d
=
this
.
get_div_visu
(
i
);
u
.
append
(
d
)}
if
(
!
this
.
cartridgex
||
this
.
cartridgex
===
0
)
this
.
cartridgex
=
parseInt
(
this
.
tooltypefamille
.
cartridge_x
,
10
);
if
(
!
this
.
cartridgey
||
this
.
cartridgey
===
0
)
this
.
cartridgey
=
parseInt
(
this
.
tooltypefamille
.
cartridge_y
,
10
);
t
.
setX
(
this
.
x
+
this
.
cartridgex
),
t
.
setY
(
this
.
y
+
this
.
cartridgey
),
r
.
append
(
t
),
this
.
apply_visibility_annot
()}
else
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
),
t
.
setX
(
n
[
0
]
+
this
.
x
+
this
.
cartridgex
),
t
.
setY
(
n
[
1
]
+
this
.
y
+
this
.
cartridgey
);
return
!
0
},
change_stamp
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_rotation
"
),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
shape_id
+
"
_img
"
);
e
.
get
(
"
value
"
)
===
"
0
"
?(
this
.
displayrotation
=
1
,
e
.
set
(
"
value
"
,
1
),
t
.
removeClass
(
"
fa-arrows-h
"
),
t
.
addClass
(
"
fa-arrows-v
"
)):(
e
.
set
(
"
value
"
,
0
),
t
.
removeClass
(
"
fa-arrows-v
"
),
t
.
addClass
(
"
fa-arrows-h
"
),
this
.
displayrotation
=
0
),
this
.
editor
.
save_current_page
()},
move
:
function
(
e
,
t
){
var
n
=
e
-
this
.
x
,
r
=
t
-
this
.
y
;
this
.
x
+=
n
,
this
.
y
+=
r
,
this
.
endx
+=
n
,
this
.
endy
+=
r
,
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
drawables
.
push
(
this
.
draw
())},
remove
:
function
(
e
){
var
t
,
n
;
e
.
preventDefault
(),
t
=
this
.
editor
.
pages
[
this
.
editor
.
currentpage
].
annotations
;
for
(
n
=
0
;
n
<
t
.
length
;
n
++
)
if
(
t
[
n
]
===
this
){
if
(
this
.
divcartridge
!==
""
){
var
r
=
"
#
"
+
this
.
divcartridge
,
i
=
this
.
editor
.
get_dialogue_element
(
r
);
i
.
remove
()}
t
.
splice
(
n
,
1
),
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
currentannotation
=!
1
,
this
.
editor
.
save_current_page
();
return
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationstampcomment
=
C
;
var
k
=
function
(
e
){
k
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
k
.
NAME
=
"
annotationframe
"
,
k
.
ATTRS
=
{},
e
.
extend
(
k
,
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
(),
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
:{
weight
:
2
,
color
:
this
.
get_color
()},
x
:
i
.
x
,
y
:
t
.
start
.
y
-
8
}),
this
.
parent_annot_element
&&
r
.
addClass
(
"
class_
"
+
this
.
parent_annot_element
.
divcartridge
),
this
.
borderstyle
===
"
dashed
"
?
r
.
set
(
"
stroke
"
,{
dashstyle
:[
5
,
3
]}):
this
.
borderstyle
===
"
dotted
"
&&
r
.
set
(
"
stroke
"
,{
dashstyle
:[
2
,
2
]}),
n
.
shapes
.
push
(
r
),
n
},
init_from_edit
:
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
;
return
t
.
bound
([
e
.
start
,
e
.
end
]),
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
t
.
x
,
this
.
y
=
e
.
start
.
y
-
8
,
this
.
endx
=
t
.
x
+
t
.
width
,
this
.
endy
=
e
.
start
.
y
+
16
-
8
,
this
.
page
=
""
,
t
.
has_min_width
()},
move
:
function
(
e
,
t
){
var
n
=
e
-
this
.
x
,
r
=
t
-
this
.
y
;
this
.
x
+=
n
,
this
.
y
+=
r
,
this
.
endx
+=
n
,
this
.
endy
+=
r
,
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
drawables
.
push
(
this
.
draw
())},
get_color
:
function
(){
return
this
.
colour
},
draw_catridge
:
function
(){
if
(
this
.
parent_annot_element
===
null
&&
this
.
parent_annot
===
0
){
var
t
,
n
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
();
if
(
this
.
divcartridge
===
""
){
this
.
init_div_cartridge_id
();
var
r
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
i
=
this
.
editor
.
graphic
.
getShapeById
(
this
.
shape_id
);
i
&&
i
.
addClass
(
"
class_
"
+
this
.
divcartridge
);
var
o
=
this
.
get_color
();
t
=
this
.
get_div_cartridge
(
o
),
t
.
addClass
(
"
assignfeedback_editpdfplus_frame
"
),
t
.
setStyles
({
"
border-style
"
:
this
.
borderstyle
});
var
u
=
this
.
get_div_cartridge_label
(
o
,
!
0
);
t
.
append
(
u
);
var
a
=
this
.
get_div_container
(
o
),
f
=
this
.
get_toolbar
();
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
l
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonpencil' class='btn btn-sm btn-outline-dark' type='button'>
"
;
l
+=
'
<i class="fa fa-eyedropper" aria-hidden="true"></i>
'
,
l
+=
"
</button>
"
;
var
c
=
e
.
Node
.
create
(
l
);
c
.
on
(
"
click
"
,
this
.
display_picker
,
this
);
var
h
=
"
<button id='
"
+
this
.
divcartridge
+
"
_buttonadd' class='btn btn-sm btn-outline-dark' type='button'>
"
;
h
+=
'
<i class="fa fa-plus" aria-hidden="true"></i>
'
,
h
+=
"
</button>
"
;
var
p
=
e
.
Node
.
create
(
h
);
p
.
on
(
"
click
"
,
this
.
add_annot
,
this
),
f
.
append
(
c
),
f
.
append
(
p
)}
a
.
append
(
f
),
t
.
append
(
a
);
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
d
=
this
.
get_div_edition
();
a
.
append
(
d
)}
else
{
var
v
=
this
.
get_div_visu
(
o
);
a
.
append
(
v
)}
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
m
=
"
margin:5px;border:2px #ccc
"
,
g
=
"
min-width:20px;min-height:20px;
"
,
y
=
"
<div
"
;
y
+=
"
id='
"
+
this
.
divcartridge
+
"
_picker'
"
,
y
+=
"
class='assignfeedback_editpdfplus_frame_picker'
"
,
y
+=
"
style='display:none;text-align:right;'>
"
,
y
+=
"
</div>
"
;
var
b
=
e
.
Node
.
create
(
y
);
a
.
append
(
b
);
var
w
=
e
.
Node
.
create
(
"
<div style='display:inline-block;vertical-align:top;'></div>
"
),
E
=
e
.
Node
.
create
(
"
<div style='display:inline-block;vertical-align:top;'></div>
"
);
b
.
append
(
w
),
b
.
append
(
E
);
var
S
=
e
.
Node
.
create
(
"
<div style='background-color:white;
"
+
m
+
"
solid;
"
+
g
+
"
'></div>
"
);
S
.
on
(
"
click
"
,
this
.
change_color
,
this
,
"
white
"
);
var
x
=
e
.
Node
.
create
(
"
<div style='background-color:#E69F00;
"
+
m
+
"
solid;
"
+
g
+
"
'></div>
"
);
x
.
on
(
"
click
"
,
this
.
change_color
,
this
,
"
#E69F00
"
);
var
T
=
e
.
Node
.
create
(
"
<div style='background-color:#D55E00;
"
+
m
+
"
solid;
"
+
g
+
"
'></div>
"
);
T
.
on
(
"
click
"
,
this
.
change_color
,
this
,
"
#D55E00
"
);
var
N
=
e
.
Node
.
create
(
"
<div style='background-color:#009E73;
"
+
m
+
"
solid;
"
+
g
+
"
'></div>
"
);
N
.
on
(
"
click
"
,
this
.
change_color
,
this
,
"
#009E73
"
);
var
C
=
e
.
Node
.
create
(
"
<div style='background-color:#0072B2;
"
+
m
+
"
solid;
"
+
g
+
"
'></div>
"
);
C
.
on
(
"
click
"
,
this
.
change_color
,
this
,
"
#0072B2
"
);
var
k
=
e
.
Node
.
create
(
"
<div style='background-color:black;
"
+
m
+
"
solid;
"
+
g
+
"
'></div>
"
);
k
.
on
(
"
click
"
,
this
.
change_color
,
this
,
"
black
"
),
w
.
append
(
S
),
w
.
append
(
x
),
w
.
append
(
T
),
w
.
append
(
N
),
w
.
append
(
C
),
w
.
append
(
k
);
var
L
=
e
.
Node
.
create
(
"
<div style='
"
+
m
+
"
solid;
"
+
g
+
"
'></div>
"
);
L
.
on
(
"
click
"
,
this
.
change_border
,
this
,
"
solid
"
);
var
A
=
e
.
Node
.
create
(
"
<div style='
"
+
m
+
"
dotted;
"
+
g
+
"
'></div>
"
);
A
.
on
(
"
click
"
,
this
.
change_border
,
this
,
"
dotted
"
);
var
O
=
"
<div style='
"
+
m
+
"
dashed;
"
+
g
+
"
'>
"
+
"
</div>
"
,
M
=
e
.
Node
.
create
(
O
);
M
.
on
(
"
click
"
,
this
.
change_border
,
this
,
"
dashed
"
),
E
.
append
(
L
),
E
.
append
(
A
),
E
.
append
(
M
)}
if
(
!
this
.
cartridgex
||
this
.
cartridgex
===
0
)
this
.
cartridgex
=
parseInt
(
this
.
tooltypefamille
.
cartridge_x
,
10
);
if
(
!
this
.
cartridgey
||
this
.
cartridgey
===
0
)
this
.
cartridgey
=
parseInt
(
this
.
tooltypefamille
.
cartridge_y
,
10
);
t
.
setX
(
this
.
cartridgex
),
t
.
setY
(
this
.
y
+
this
.
cartridgey
),
r
.
append
(
t
),
this
.
apply_visibility_annot
();
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
_
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_right
"
),
D
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_left
"
);
_
.
hide
(),
D
.
hide
()}}
else
{
var
P
=
"
#
"
+
this
.
divcartridge
;
t
=
this
.
editor
.
get_dialogue_element
(
P
),
t
.
setX
(
n
[
0
]
+
this
.
cartridgex
),
t
.
setY
(
n
[
1
]
+
this
.
y
+
this
.
cartridgey
)}}
return
!
0
},
move_cartridge_continue
:
function
(
e
){
e
.
preventDefault
();
var
t
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
n
=
new
M
.
assignfeedback_editpdfplus
.
point
(
e
.
clientX
+
t
.
get
(
"
docScrollX
"
),
e
.
clientY
+
t
.
get
(
"
docScrollY
"
)),
r
=
this
.
editor
.
get_canvas_coordinates
(
n
),
i
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
(),
o
=
r
.
x
-
this
.
oldx
,
u
=
r
.
y
-
this
.
oldy
,
a
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
a
.
setX
(
i
[
0
]
+
this
.
cartridgex
+
o
),
a
.
setY
(
i
[
1
]
+
this
.
y
+
this
.
cartridgey
+
u
)},
move_cartridge_stop
:
function
(
e
){
e
.
preventDefault
();
var
t
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
);
t
.
detach
(
"
mousemove
"
,
this
.
move_cartridge_continue
,
this
),
t
.
detach
(
"
mouseup
"
,
this
.
move_cartridge_stop
,
this
);
var
n
=
new
M
.
assignfeedback_editpdfplus
.
point
(
e
.
clientX
+
t
.
get
(
"
docScrollX
"
),
e
.
clientY
+
t
.
get
(
"
docScrollY
"
)),
r
=
this
.
editor
.
get_canvas_coordinates
(
n
),
i
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
(),
o
=
r
.
x
-
this
.
oldx
,
u
=
r
.
y
-
this
.
oldy
;
this
.
cartridgex
+=
o
,
this
.
cartridgey
+=
u
;
var
a
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
a
.
setX
(
i
[
0
]
+
this
.
cartridgex
),
a
.
setY
(
i
[
1
]
+
this
.
y
+
this
.
cartridgey
),
this
.
editor
.
save_current_page
()},
add_annot
:
function
(
e
){
this
.
editor
.
currentedit
.
parent_annot_element
=
this
,
this
.
editor
.
handle_tool_button
(
e
,
h
.
FRAME
,
"
ctbutton
"
+
this
.
toolid
,
1
)},
display_picker
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_picker
"
),
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonpencil
"
);
e
.
setStyle
(
"
z-index
"
,
1
e3
),
t
.
show
(),
n
.
on
(
"
click
"
,
this
.
hide_picker
,
this
)},
hide_picker
:
function
(){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_picker
"
),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonpencil
"
),
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
e
.
hide
(),
n
.
setStyle
(
"
z-index
"
,
0
),
t
.
on
(
"
click
"
,
this
.
display_picker
,
this
)},
change_color
:
function
(
e
,
t
){
this
.
colour
=
t
;
var
n
=
this
.
editor
.
graphic
.
getShapeById
(
this
.
shape_id
);
n
.
set
(
"
stroke
"
,{
color
:
this
.
colour
});
var
r
=
null
;
this
.
id
?
r
=
this
.
editor
.
annotationsparent
[
this
.
id
]:
r
=
this
.
editor
.
annotationsparent
[
this
.
divcartridge
];
if
(
r
)
for
(
var
i
=
0
;
i
<
r
.
length
;
i
++
){
r
[
i
].
colour
=
t
;
var
s
=
this
.
editor
.
graphic
.
getShapeById
(
r
[
i
].
shape_id
);
s
&&
s
.
set
(
"
stroke
"
,{
color
:
this
.
colour
})}
var
o
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
o
.
setStyles
({
"
border-color
"
:
this
.
colour
,
color
:
this
.
colour
});
var
u
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_cartridge
"
);
u
.
setStyles
({
"
border-color
"
:
this
.
colour
,
color
:
this
.
colour
});
var
a
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_display
"
);
a
.
setStyles
({
color
:
this
.
colour
}),
this
.
hide_picker
(),
this
.
editor
.
save_current_page
()},
change_border
:
function
(
e
,
t
){
this
.
borderstyle
=
t
;
var
n
=
this
.
editor
.
graphic
.
getShapeById
(
this
.
shape_id
);
this
.
borderstyle
===
"
solid
"
?
n
.
set
(
"
stroke
"
,{
dashstyle
:
"
none
"
}):
this
.
borderstyle
===
"
dashed
"
?
n
.
set
(
"
stroke
"
,{
dashstyle
:[
5
,
3
]}):
n
.
set
(
"
stroke
"
,{
dashstyle
:[
2
,
2
]});
var
r
=
[];
this
.
id
?
r
=
this
.
editor
.
annotationsparent
[
this
.
id
]:
r
=
this
.
editor
.
annotationsparent
[
this
.
divcartridge
];
if
(
r
)
for
(
var
i
=
0
;
i
<
r
.
length
;
i
++
){
r
[
i
].
borderstyle
=
t
;
var
s
=
this
.
editor
.
graphic
.
getShapeById
(
r
[
i
].
shape_id
);
s
&&
(
this
.
borderstyle
===
"
solid
"
?
s
.
set
(
"
stroke
"
,{
dashstyle
:
"
none
"
}):
this
.
borderstyle
===
"
dashed
"
?
s
.
set
(
"
stroke
"
,{
dashstyle
:[
5
,
3
]}):
s
.
set
(
"
stroke
"
,{
dashstyle
:[
2
,
2
]}))}
var
o
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
);
o
.
setStyles
({
"
border-style
"
:
this
.
borderstyle
});
var
u
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_picker
"
);
u
.
hide
(),
this
.
editor
.
save_current_page
()},
edit_annot
:
function
(){
if
(
!
this
.
parent_annot_element
){
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonpencil
"
),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonadd
"
);
this
.
hide_picker
(),
e
&&
(
e
.
hide
(),
t
.
hide
()),
k
.
superclass
.
edit_annot
.
call
(
this
)}},
hide_edit
:
function
(){
k
.
superclass
.
hide_edit
.
call
(
this
);
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_display
"
),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonpencil
"
),
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonadd
"
),
r
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_right
"
),
i
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_left
"
);
e
&&
(
e
.
set
(
"
style
"
,
"
display:inline;color:
"
+
this
.
get_color
()
+
"
;
"
),
t
&&
(
t
.
show
(),
n
.
show
()),
r
&&
r
.
hide
(),
i
&&
i
.
hide
())},
remove
:
function
(
e
){
var
t
;
e
.
preventDefault
(),
t
=
this
.
editor
.
pages
[
this
.
editor
.
currentpage
].
annotations
;
for
(
var
n
=
0
;
n
<
t
.
length
;
n
++
)
if
(
t
[
n
]
===
this
){
if
(
this
.
divcartridge
!==
""
){
var
r
=
"
#
"
+
this
.
divcartridge
,
i
=
this
.
editor
.
get_dialogue_element
(
r
);
i
.
remove
()}
t
.
splice
(
n
,
1
),
this
.
drawable
&&
this
.
drawable
.
erase
();
var
s
=
[];
this
.
id
?
s
=
this
.
editor
.
annotationsparent
[
this
.
id
]:
s
=
this
.
editor
.
annotationsparent
[
this
.
divcartridge
];
if
(
s
)
for
(
var
o
=
0
;
o
<
s
.
length
;
o
++
)
for
(
var
u
=
0
;
u
<
t
.
length
;
u
++
)
t
[
u
]
===
s
[
o
]
&&
(
t
.
splice
(
u
,
1
),
s
[
o
].
drawable
&&
s
[
o
].
drawable
.
erase
());
this
.
editor
.
currentannotation
=!
1
,
this
.
editor
.
save_current_page
();
return
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationframe
=
k
;
var
L
=
function
(
e
){
L
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
L
.
NAME
=
"
annotationverticalline
"
,
L
.
ATTRS
=
{},
e
.
extend
(
L
,
M
.
assignfeedback_editpdfplus
.
annotation
,{
draw
:
function
(){
var
t
,
n
,
r
;
return
t
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
=
this
.
get_color
(),
n
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Path
,
fill
:
!
1
,
stroke
:{
weight
:
p
,
color
:
r
}}),
n
.
moveTo
(
this
.
x
,
this
.
y
),
this
.
endy
-
this
.
y
<=
30
&&
(
this
.
endy
=
this
.
y
+
30
),
n
.
lineTo
(
this
.
x
,
this
.
endy
),
n
.
end
(),
t
.
shapes
.
push
(
n
),
this
.
drawable
=
t
,
this
.
draw_catridge
(),
L
.
superclass
.
draw
.
apply
(
this
)},
draw_current_edit
:
function
(
t
){
var
n
=
new
M
.
assignfeedback_editpdfplus
.
drawable
(
this
.
editor
),
r
,
i
,
s
;
return
i
=
new
M
.
assignfeedback_editpdfplus
.
rect
,
i
.
bound
([
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
start
.
x
,
t
.
start
.
y
),
new
M
.
assignfeedback_editpdfplus
.
point
(
t
.
end
.
x
,
t
.
end
.
y
)]),
i
.
has_min_width
()
||
i
.
set_min_width
(),
i
.
has_min_height
()
||
i
.
set_min_height
(),
s
=
this
.
get_color
(),
r
=
this
.
editor
.
graphic
.
addShape
({
type
:
e
.
Path
,
fill
:
!
1
,
stroke
:{
weight
:
p
,
color
:
s
}}),
r
.
moveTo
(
t
.
start
.
x
,
t
.
start
.
y
),
t
.
end
.
y
-
t
.
start
.
y
<=
30
?
r
.
lineTo
(
t
.
start
.
x
,
t
.
start
.
y
+
30
):
r
.
lineTo
(
t
.
start
.
x
,
t
.
end
.
y
),
r
.
end
(),
n
.
shapes
.
push
(
r
),
n
},
init_from_edit
:
function
(
e
){
return
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
e
.
start
.
x
,
this
.
y
=
e
.
start
.
y
,
this
.
endx
=
e
.
end
.
x
+
4
,
e
.
end
.
y
-
this
.
y
<=
30
?
this
.
endy
=
this
.
y
+
30
:
this
.
endy
=
e
.
end
.
y
,
this
.
page
=
""
,
this
.
endx
-
this
.
x
!==
0
||
this
.
endy
-
this
.
y
!==
0
},
draw_catridge
:
function
(){
var
e
,
t
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
();
if
(
this
.
divcartridge
===
""
){
this
.
init_div_cartridge_id
();
var
n
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
r
=
this
.
get_color_cartridge
();
e
=
this
.
get_div_cartridge
(
r
),
e
.
addClass
(
"
assignfeedback_editpdfplus_verticalline
"
);
var
i
=
this
.
get_div_cartridge_label
(
r
,
!
0
);
e
.
append
(
i
);
var
o
=
this
.
get_div_container
(
r
),
u
=
this
.
get_toolbar
();
o
.
append
(
u
),
e
.
append
(
o
);
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
a
=
this
.
get_div_edition
();
o
.
append
(
a
)}
else
{
var
f
=
this
.
get_div_visu
(
r
);
o
.
append
(
f
)}
if
(
!
this
.
cartridgex
||
this
.
cartridgex
===
0
)
this
.
cartridgex
=
parseInt
(
this
.
tooltypefamille
.
cartridge_x
,
10
);
if
(
!
this
.
cartridgey
||
this
.
cartridgey
===
0
)
this
.
cartridgey
=
parseInt
(
this
.
tooltypefamille
.
cartridge_y
,
10
);
e
.
setX
(
this
.
x
+
this
.
cartridgex
),
e
.
setY
(
this
.
y
+
this
.
cartridgey
),
n
.
append
(
e
),
this
.
apply_visibility_annot
()}
else
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
),
e
.
setX
(
t
[
0
]
+
this
.
x
+
this
.
cartridgex
),
e
.
setY
(
t
[
1
]
+
this
.
y
+
this
.
cartridgey
);
return
!
0
},
remove
:
function
(
e
){
var
t
,
n
;
e
.
preventDefault
(),
t
=
this
.
editor
.
pages
[
this
.
editor
.
currentpage
].
annotations
;
for
(
n
=
0
;
n
<
t
.
length
;
n
++
)
if
(
t
[
n
]
===
this
){
if
(
this
.
divcartridge
!==
""
){
var
r
=
"
#
"
+
this
.
divcartridge
,
i
=
this
.
editor
.
get_dialogue_element
(
r
);
i
.
remove
()}
t
.
splice
(
n
,
1
),
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
currentannotation
=!
1
,
this
.
editor
.
save_current_page
();
return
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationverticalline
=
L
;
var
A
=
function
(
e
){
A
.
superclass
.
constructor
.
apply
(
this
,[
e
])};
A
.
NAME
=
"
annotationcommentplus
"
,
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
(
s
.
DRAWINGCANVAS
),
r
,
i
;
i
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
this
.
x
,
this
.
y
));
var
o
=
this
.
get_color_cartridge
();
return
r
=
e
.
Node
.
create
(
'
<div><i class="fa fa-commenting" aria-hidden="true" style="color:
'
+
o
+
'
;"></i></div>
'
),
r
.
setStyles
({
position
:
"
absolute
"
,
display
:
"
inline-block
"
,
zIndex
:
50
,
color
:
this
.
colour
,
padding
:
"
0 2px
"
}),
n
.
append
(
r
),
r
.
setX
(
i
.
x
),
r
.
setY
(
i
.
y
),
t
.
store_position
(
r
,
i
.
x
,
i
.
y
),
t
.
nodes
.
push
(
r
),
this
.
drawable
=
t
,
this
.
draw_catridge
(),
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
(
s
.
DRAWINGREGION
),
o
,
u
;
return
n
.
bound
([
t
.
start
,
t
.
end
]),
u
=
this
.
editor
.
get_window_coordinates
(
new
M
.
assignfeedback_editpdfplus
.
point
(
n
.
x
,
n
.
y
)),
o
=
e
.
Node
.
create
(
"
<div>
"
+
this
.
tooltype
.
label
+
"
</div>
"
),
o
.
setStyles
({
position
:
"
absolute
"
,
display
:
"
inline-block
"
,
zIndex
:
50
,
color
:
this
.
colour
,
padding
:
"
0 2px
"
}),
i
.
append
(
o
),
o
.
setX
(
u
.
x
),
o
.
setY
(
u
.
y
),
r
.
store_position
(
o
,
u
.
x
,
u
.
y
),
r
.
nodes
.
push
(
o
),
r
},
init_from_edit
:
function
(
e
){
var
t
=
new
M
.
assignfeedback_editpdfplus
.
rect
;
return
t
.
bound
([
e
.
start
,
e
.
end
]),
t
.
width
<
20
&&
(
t
.
width
=
20
),
t
.
height
<
20
&&
(
t
.
height
=
20
),
this
.
gradeid
=
this
.
editor
.
get
(
"
gradeid
"
),
this
.
pageno
=
this
.
editor
.
currentpage
,
this
.
x
=
t
.
x
-
20
,
this
.
y
=
t
.
y
-
10
,
this
.
endx
=
t
.
x
+
t
.
width
,
this
.
endy
=
t
.
y
+
t
.
height
,
!
0
},
draw_catridge
:
function
(){
var
e
,
t
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
).
getXY
();
if
(
this
.
divcartridge
===
""
){
this
.
init_div_cartridge_id
();
var
n
=
this
.
editor
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
r
=
this
.
get_color_cartridge
();
e
=
this
.
get_div_cartridge
(
r
),
e
.
addClass
(
"
assignfeedback_editpdfplus_commentplus
"
);
var
i
=
this
.
get_div_cartridge_label
(
r
);
e
.
append
(
i
);
var
o
=
this
.
get_div_container
(
r
),
u
=
this
.
get_toolbar
();
o
.
append
(
u
),
e
.
append
(
o
);
if
(
!
this
.
editor
.
get
(
"
readonly
"
)){
var
a
=
this
.
get_div_edition
();
o
.
append
(
a
)}
else
{
var
f
=
this
.
get_div_visu
(
r
);
o
.
append
(
f
)}
e
.
setX
(
this
.
x
+
20
),
e
.
setY
(
this
.
y
),
n
.
append
(
e
),
this
.
apply_visibility_annot
()}
else
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
),
e
.
setX
(
t
[
0
]
+
this
.
x
+
20
),
e
.
setY
(
t
[
1
]
+
this
.
y
);
return
!
0
},
apply_visibility_annot
:
function
(){
A
.
superclass
.
apply_visibility_annot
.
apply
(
this
);
var
e
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_display
"
),
t
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_onof
"
),
n
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_right
"
),
r
=
this
.
editor
.
get_dialogue_element
(
"
#
"
+
this
.
divcartridge
+
"
_buttonedit_left
"
);
n
&&
(
n
.
setHTML
(
'
<i class="fa fa-arrow-down" aria-hidden="true"></i>
'
),
r
.
setHTML
(
'
<i class="fa fa-arrow-up" aria-hidden="true"></i>
'
),
t
.
get
(
"
value
"
)
===
"
2
"
?
e
.
setContent
(
"
<table><tr><td>
"
+
this
.
get_text_to_diplay_in_cartridge
().
replace
(
/
\n
/g
,
"
<br/>
"
)
+
"
</td></tr></table><br/>
"
):
t
.
get
(
"
value
"
)
===
"
1
"
?
r
.
setHTML
(
'
<i class="fa fa-arrow-left" aria-hidden="true"></i>
'
):
t
.
get
(
"
value
"
)
===
"
0
"
&&
n
.
setHTML
(
'
<i class="fa fa-arrow-right" aria-hidden="true"></i>
'
))},
move
:
function
(
e
,
t
){
var
n
=
e
-
this
.
x
,
r
=
t
-
this
.
y
;
this
.
x
+=
n
,
this
.
y
+=
r
,
this
.
endx
+=
n
,
this
.
endy
+=
r
,
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
drawables
.
push
(
this
.
draw
())},
remove
:
function
(
e
){
var
t
,
n
;
e
.
preventDefault
(),
t
=
this
.
editor
.
pages
[
this
.
editor
.
currentpage
].
annotations
;
for
(
n
=
0
;
n
<
t
.
length
;
n
++
)
if
(
t
[
n
]
===
this
){
if
(
this
.
divcartridge
!==
""
){
var
r
=
"
#
"
+
this
.
divcartridge
,
i
=
this
.
editor
.
get_dialogue_element
(
r
);
i
.
remove
()}
t
.
splice
(
n
,
1
),
this
.
drawable
&&
this
.
drawable
.
erase
(),
this
.
editor
.
currentannotation
=!
1
,
this
.
editor
.
save_current_page
();
return
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
annotationcommentplus
=
A
;
var
O
=
"
Dropdown menu
"
,
_
;
_
=
function
(
e
){
e
.
draggable
=!
1
,
e
.
centered
=!
1
,
e
.
width
=
"
auto
"
,
e
.
visible
=!
1
,
e
.
footerContent
=
""
,
_
.
superclass
.
constructor
.
apply
(
this
,[
e
])},
e
.
extend
(
_
,
M
.
core
.
dialogue
,{
initializer
:
function
(
t
){
var
n
,
r
,
i
,
s
;
_
.
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
=
_
.
superclass
.
show
.
call
(
this
);
return
this
.
align
(
t
,[
e
.
WidgetPositionAlign
.
TL
,
e
.
WidgetPositionAlign
.
BL
]),
n
}},{
NAME
:
O
,
ATTRS
:{
headerText
:{
value
:
""
},
buttonNode
:{
value
:
null
}}}),
e
.
Base
.
modifyAttrs
(
_
,{
modal
:{
getter
:
function
(){
return
!
1
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
dropdown
=
_
;
var
D
=
"
Colourpicker
"
,
P
;
P
=
function
(
e
){
P
.
superclass
.
constructor
.
apply
(
this
,[
e
])},
e
.
extend
(
P
,
M
.
assignfeedback_editpdfplus
.
dropdown
,{
initializer
:
function
(
t
){
var
n
=
e
.
Node
.
create
(
'
<ul role="menu" class="assignfeedback_editpdfplus_menu"/>
'
),
r
,
i
;
e
.
each
(
this
.
get
(
"
colours
"
),
function
(
t
,
r
){
var
s
,
o
,
u
;
u
=
M
.
util
.
get_string
(
r
,
"
assignfeedback_editpdfplus
"
),
r
===
"
white
"
||
r
===
"
yellowlemon
"
?
i
=
e
.
Node
.
create
(
'
<span class="fa-stack fa-lg"><i class="fa fa-square fa-stack-2x" style="color:#E3E3E3;"></i><i class="fa fa-tint fa-stack-1x fa-inverse" aria-hidden="true" style="color:
'
+
t
+
'
;">
'
+
"
</i>
"
+
"
</span>
"
):
i
=
e
.
Node
.
create
(
'
<span class="fa-stack fa-lg"><i class="fa fa-square-o fa-stack-2x" style="color:#E3E3E3;"></i><i class="fa fa-tint fa-stack-1x" aria-hidden="true" style="color:
'
+
t
+
'
;">
'
+
"
</i>
"
+
"
</span>
"
),
i
.
setAttribute
(
"
data-colour
"
,
r
),
s
=
e
.
Node
.
create
(
'
<button class="btn btn-sm" type="button"></button>
'
),
s
.
append
(
i
),
s
.
setAttribute
(
"
data-colour
"
,
r
),
s
.
setAttribute
(
"
data-rgb
"
,
t
),
s
.
setStyle
(
"
backgroundImage
"
,
"
none
"
),
o
=
e
.
Node
.
create
(
"
<li/>
"
),
o
.
append
(
s
),
n
.
append
(
o
)},
this
),
r
=
e
.
Node
.
create
(
'
<div style="max-width:50px;"></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
),
P
.
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
:
D
,
ATTRS
:{
colours
:{
value
:{}},
callback
:{
value
:
null
},
context
:{
value
:
null
},
iconprefix
:{
value
:
"
colour_
"
}}}),
M
.
assignfeedback_editpdfplus
=
M
.
assignfeedback_editpdfplus
||
{},
M
.
assignfeedback_editpdfplus
.
colourpicker
=
P
;
var
H
=
function
(){
H
.
superclass
.
constructor
.
apply
(
this
,
arguments
)};
H
.
prototype
=
{
oldannotationcoordinates
:
null
,
dialogue
:
null
,
panel
:
null
,
pagecount
:
0
,
currentpage
:
0
,
pages
:[],
documentstatus
:
0
,
loadingicon
:
null
,
pageimage
:
null
,
graphic
:
null
,
currentedit
:
new
M
.
assignfeedback_editpdfplus
.
edit
,
currentdrawable
:
!
1
,
drawables
:[],
drawablesannotations
:[],
currentannotation
:
null
,
lastannotation
:
null
,
lastannotationtool
:
null
,
annotationsparent
:[],
studentstatut
:
-
1
,
questionstatut
:
-
1
,
currentannotationreview
:
null
,
initializer
:
function
(){
var
t
;
t
=
e
.
one
(
"
#
"
+
this
.
get
(
"
linkid
"
)),
t
&&
(
t
.
on
(
"
click
"
,
this
.
link_handler
,
this
),
t
.
on
(
"
key
"
,
this
.
link_handler
,
"
down:13
"
,
this
),
require
([
"
mod_assign/grading_review_panel
"
],
function
(
n
){
var
r
=
new
n
,
i
=
r
.
getReviewPanel
(
"
assignfeedback_editpdfplus
"
);
i
&&
(
i
=
e
.
one
(
i
),
i
.
empty
(),
t
.
ancestor
(
"
.fitem
"
).
hide
(),
this
.
open_in_panel
(
i
)),
this
.
currentedit
.
start
=!
1
,
this
.
currentedit
.
end
=!
1
}.
bind
(
this
)))},
refresh_button_state
:
function
(){
var
e
,
t
,
n
;
this
.
refresh_button_color_state
(),
this
.
currentedit
.
id
?
e
=
this
.
get_dialogue_element
(
"
#
"
+
this
.
currentedit
.
id
):
e
=
this
.
get_dialogue_element
(
l
[
this
.
currentedit
.
tool
]),
e
&&
(
e
.
addClass
(
"
active
"
),
e
.
setAttribute
(
"
aria-pressed
"
,
"
true
"
)),
t
=
this
.
get_dialogue_element
(
s
.
DRAWINGREGION
),
t
.
setAttribute
(
"
data-currenttool
"
,
this
.
currentedit
.
tool
),
n
=
this
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
);
switch
(
this
.
currentedit
.
tool
){
case
"
drag
"
:
n
.
setStyle
(
"
cursor
"
,
"
move
"
);
break
;
case
"
highlight
"
:
n
.
setStyle
(
"
cursor
"
,
"
text
"
);
break
;
case
"
select
"
:
n
.
setStyle
(
"
cursor
"
,
"
default
"
);
break
;
default
:
n
.
setStyle
(
"
cursor
"
,
"
crosshair
"
)}},
refresh_button_color_state
:
function
(){
var
e
;
e
=
this
.
get_dialogue_element
(
s
.
ANNOTATIONCOLOURBUTTON
);
if
(
this
.
currentedit
.
annotationcolour
===
"
white
"
)
e
.
one
(
"
i
"
).
setStyle
(
"
color
"
,
this
.
currentedit
.
annotationcolour
),
e
.
setStyle
(
"
background-color
"
,
"
#EEEEEE
"
);
else
{
switch
(
this
.
currentedit
.
annotationcolour
){
case
"
yellowlemon
"
:
e
.
one
(
"
i
"
).
setStyle
(
"
color
"
,
"
#fff44f
"
);
break
;
case
"
yellow
"
:
e
.
one
(
"
i
"
).
setStyle
(
"
color
"
,
"
rgb(255,207,53)
"
);
break
;
default
:
e
.
one
(
"
i
"
).
setStyle
(
"
color
"
,
this
.
currentedit
.
annotationcolour
)}
e
.
setStyle
(
"
background-color
"
,
""
)}},
get_canvas_bounds
:
function
(){
var
e
=
this
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
t
=
e
.
getXY
(),
n
=
t
[
0
],
r
=
t
[
1
],
i
=
parseInt
(
e
.
getStyle
(
"
width
"
),
10
),
o
=
parseInt
(
e
.
getStyle
(
"
height
"
),
10
);
return
new
M
.
assignfeedback_editpdfplus
.
rect
(
n
,
r
,
i
,
o
)},
get_canvas_coordinates
:
function
(
e
){
var
t
=
this
.
get_canvas_bounds
(),
n
=
new
M
.
assignfeedback_editpdfplus
.
point
(
e
.
x
-
t
.
x
,
e
.
y
-
t
.
y
);
return
t
.
x
=
t
.
y
=
0
,
n
.
clip
(
t
),
n
},
get_window_coordinates
:
function
(
e
){
var
t
=
this
.
get_canvas_bounds
(),
n
=
new
M
.
assignfeedback_editpdfplus
.
point
(
e
.
x
+
t
.
x
,
e
.
y
+
t
.
y
);
return
n
},
open_in_panel
:
function
(
t
){
var
n
,
r
;
this
.
panel
=
t
,
t
.
append
(
this
.
get
(
"
body
"
)),
t
.
addClass
(
i
.
DIALOGUE
),
this
.
loadingicon
=
this
.
get_dialogue_element
(
s
.
LOADINGICON
),
n
=
this
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
this
.
graphic
=
new
e
.
Graphic
({
render
:
n
}),
r
=
this
.
get_dialogue_element
(
s
.
DRAWINGREGION
),
r
.
on
(
"
scroll
"
,
this
.
move_canvas
,
this
)
,
this
.
get
(
"
readonly
"
)
||
(
n
.
on
(
"
gesturemovestart
"
,
this
.
edit_start
,
null
,
this
),
n
.
on
(
"
gesturemove
"
,
this
.
edit_move
,
null
,
this
),
n
.
on
(
"
gesturemoveend
"
,
this
.
edit_end
,
null
,
this
),
this
.
refresh_button_state
()
)
,
this
.
start_generation
()},
link_handler
:
function
(
t
){
var
n
,
r
,
o
=!
0
;
t
.
preventDefault
(),
this
.
dialogue
||
(
this
.
dialogue
=
new
M
.
core
.
dialogue
({
headerContent
:
this
.
get
(
"
header
"
),
bodyContent
:
this
.
get
(
"
body
"
),
footerContent
:
this
.
get
(
"
footer
"
),
modal
:
!
0
,
width
:
"
840px
"
,
visible
:
!
1
,
draggable
:
!
0
}),
this
.
dialogue
.
get
(
"
boundingBox
"
).
addClass
(
i
.
DIALOGUE
),
this
.
loadingicon
=
this
.
get_dialogue_element
(
s
.
LOADINGICON
),
n
=
this
.
get_dialogue_element
(
s
.
DRAWINGCANVAS
),
this
.
graphic
=
new
e
.
Graphic
({
render
:
n
}),
r
=
this
.
get_dialogue_element
(
s
.
DRAWINGREGION
),
r
.
on
(
"
scroll
"
,
this
.
move_canvas
,
this
),
this
.
get
(
"
readonly
"
)
||
(
n
.
on
(
"
gesturemovestart
"
,
this
.
edit_start
,
null
,
this
),
n
.
on
(
"
gesturemove
"
,
this
.
edit_move
,
null
,
this
),
n
.
on
(
"
gesturemoveend
"
,
this
.
edit_end
,
null
,
this
),
this
.
refresh_button_state
()),
this
.
start_generation
(),
n
.
on
(
"
windowresize
"
,
this
.
resize
,
this
),
o
=!
1
),
this
.
dialogue
.
centerDialogue
(),
this
.
dialogue
.
show
(),
this
.
dialogue
.
dd
.
on
(
"
drag:end
"
,
this
.
redraw
,
this
),
o
&&
this
.
resize
()},
start_generation
:
function
(){
this
.
poll_document_conversion_status
()},
poll_document_conversion_status
:
function
(){
var
t
=
this
.
get
(
"
userid
"
);
e
.
io
(
n
,{
method
:
"
get
"
,
context
:
this
,
sync
:
!
1
,
data
:{
sesskey
:
M
.
cfg
.
sesskey
,
action
:
"
pollconversions
"
,
userid
:
this
.
get
(
"
userid
"
),
attemptnumber
:
this
.
get
(
"
attemptnumber
"
),
assignmentid
:
this
.
get
(
"
assignmentid
"
),
readonly
:
this
.
get
(
"
readonly
"
)?
1
:
0
},
on
:{
success
:
function
(
n
,
r
){
var
i
=
e
.
one
(
s
.
USERINFOREGION
);
if
(
i
){
var
o
=
i
.
getAttribute
(
"
data-userid
"
);
if
(
o
&&
o
!=
t
)
return
}
var
u
=
this
.
handle_response_data
(
r
),
a
=!
1
;
if
(
u
){
this
.
documentstatus
=
u
.
status
;
if
(
u
.
status
===
0
)
a
=!
0
;
else
if
(
u
.
status
===
1
||
u
.
status
===
3
)
a
=!
0
;
else
if
(
u
.
status
===
2
||
u
.
status
===-
1
)
this
.
pagecount
=
u
.
pagecount
,
u
.
pageready
===
u
.
pagecount
?
this
.
prepare_pages_for_display
(
u
):(
this
.
update_page_load_progress
(),
this
.
start_document_to_image_conversion
());
a
&&
e
.
later
(
1
e3
,
this
,
this
.
poll_document_conversion_status
)}},
failure
:
function
(
e
,
t
){
return
new
M
.
core
.
exception
(
t
.
responseText
)}}})},
start_document_to_image_conversion
:
function
(){
e
.
io
(
n
,{
method
:
"
get
"
,
context
:
this
,
sync
:
!
1
,
data
:{
sesskey
:
M
.
cfg
.
sesskey
,
action
:
"
pollconversions
"
,
userid
:
this
.
get
(
"
userid
"
),
attemptnumber
:
this
.
get
(
"
attemptnumber
"
),
assignmentid
:
this
.
get
(
"
assignmentid
"
),
readonly
:
this
.
get
(
"
readonly
"
)?
1
:
0
},
on
:{
success
:
function
(
e
,
t
){
var
n
=
this
.
handle_response_data
(
t
);
n
&&
(
this
.
documentstatus
=
n
.
status
,
n
.
status
===
2
&&
this
.
prepare_pages_for_display
(
n
))},
failure
:
function
(
e
,
t
){
return
new
M
.
core
.
exception
(
t
.
responseText
)}}})},
warning
:
function
(
t
,
n
){
var
r
=
this
.
get_dialogue_element
(
"
div.assignfeedback_editpdfplus_warningmessages
"
);
r
&&
r
.
remove
();
var
i
=
this
.
get_dialogue_element
(
s
.
ICONMESSAGECONTAINER
),
o
=
this
.
get_dialogue_element
(
s
.
WARNINGMESSAGECONTAINER
),
u
=
15
,
a
=
1
,
f
=
"
assignfeedback_editpdfplus_warningmessages label label-warning
"
;
n
&&
(
u
=
4
,
f
=
"
assignfeedback_editpdfplus_warningmessages label label-info
"
);
var
l
=
e
.
Node
.
create
(
'
<div class="
'
+
f
+
'
"></div>
'
);
l
.
append
(
i
.
one
(
"
*
"
).
cloneNode
()),
l
.
append
(
t
),
o
.
prepend
(
l
),
l
.
transition
({
duration
:
a
,
delay
:
u
,
opacity
:
0
},
function
(){
l
.
remove
()})},
prepare_pages_for_display
:
function
(
e
){
var
t
,
n
,
r
,
i
,
s
;
if
(
!
e
.
pagecount
){
this
.
dialogue
&&
this
.
dialogue
.
hide
(),
r
=
new
M
.
core
.
alert
({
message
:
M
.
util
.
get_string
(
"
cannotopenpdf
"
,
"
assignfeedback_editpdfplus
"
)}),
r
.
show
();
return
}
this
.
pagecount
=
e
.
pagecount
,
this
.
pages
=
e
.
pages
,
this
.
tools
=
[];
for
(
t
=
0
;
t
<
e
.
tools
.
length
;
t
++
){
var
o
=
e
.
tools
[
t
];
this
.
tools
[
o
.
id
]
=
o
}
this
.
typetools
=
[];
for
(
t
=
0
;
t
<
e
.
typetools
.
length
;
t
++
){
var
u
=
e
.
typetools
[
t
];
this
.
typetools
[
u
.
id
]
=
u
}
this
.
axis
=
[];
for
(
t
=
0
;
t
<
e
.
axis
.
length
;
t
++
){
var
a
=
e
.
axis
[
t
];
a
.
visibility
=!
0
,
this
.
axis
[
a
.
id
]
=
a
}
for
(
t
=
0
;
t
<
this
.
pages
.
length
;
t
++
){
var
f
=
[];
for
(
n
=
0
;
n
<
this
.
pages
[
t
].
annotations
.
length
;
n
++
){
i
=
this
.
pages
[
t
].
annotations
[
n
],
i
.
parent_annot
&&
parseInt
(
i
.
parent_annot
,
10
)
!==
0
&&
(
i
.
parent_annot_element
=
f
[
i
.
parent_annot
]);
var
l
=
i
.
toolid
,
c
=
this
.
create_annotation
(
this
.
typetools
[
this
.
tools
[
l
].
type
].
label
,
l
,
i
,
this
.
tools
[
l
]);
if
(
c
.
parent_annot_element
){
var
h
=
c
.
parent_annot_element
.
id
;
this
.
annotationsparent
[
h
]?
this
.
annotationsparent
[
h
][
this
.
annotationsparent
[
h
].
length
]
=
c
:
this
.
annotationsparent
[
h
]
=
[
c
]}
f
[
i
.
id
]
=
c
,
this
.
pages
[
t
].
annotations
[
n
]
=
c
}}
s
=
this
.
get
(
"
readonly
"
),
!
s
&&
e
.
partial
&&
this
.
warning
(
M
.
util
.
get_string
(
"
partialwarning
"
,
"
assignfeedback_editpdfplus
"
,
!
1
)),
this
.
setup_navigation
(),
this
.
setup_toolbar_advanced
(),
this
.
change_page
()},
update_page_load_progress
:
function
(){
var
t
,
n
=
0
,
i
=
this
.
get_dialogue_element
(
s
.
PROGRESSBARCONTAINER
+
"
.bar
"
);
if
(
!
i
)
return
;
t
=
{
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
(
i
,
o
){
n
=
0
;
var
u
=
0
,
a
=
this
.
get_dialogue_element
(
s
.
PROGRESSBARCONTAINER
+
"
.bar
"
);
a
&&
(
u
=
o
.
response
/
this
.
pagecount
*
100
,
a
.
setStyle
(
"
width
"
,
u
+
"
%
"
),
a
.
ancestor
(
s
.
PROGRESSBARCONTAINER
).
setAttribute
(
"
aria-valuenow
"
,
u
),
u
<
100
&&
(
M
.
util
.
js_pending
(
"
checkconversionstatus
"
),
e
.
later
(
1
e3
,
this
,
function
(){
M
.
util
.
js_complete
(
"
checkconversionstatus
"
),
e
.
io
(
r
,
t
)})))},
failure
:
function
(
i
,
s
){
return
n
+=
1
,
this
.
pagecount
===
0
&&
n
<
5
&&
(
M
.
util
.
js_pending
(
"
checkconversionstatus
"
),
e
.
later
(
1
e3
,
this
,
function
(){
M
.
util
.
js_complete
(
"
checkconversionstatus
"
),
e
.
io
(
r
,
t
)})),
new
M
.
core
.
exception
(
s
.
responseText
)}}},
M
.
util
.
js_pending
(
"
checkconversionstatus
"
),
e
.
later
(
1
e3
,
this
,
function
(){
n
=
0
,
M
.
util
.
js_complete
(
"
checkconversionstatus
"
),
e
.
io
(
r
,
t
)})},
handle_response_data
:
function
(
t
){
var
n
;
try
{
n
=
e
.
JSON
.
parse
(
t
.
responseText
);
if
(
!
n
.
error
)
return
n
;
this
.
dialogue
&&
this
.
dialogue
.
hide
(),
new
M
.
core
.
alert
({
message
:
M
.
util
.
get_string
(
"
cannotopenpdf
"
,
"
assignfeedback_editpdfplus
"
),
visible
:
!
0
})}
catch
(
r
){
this
.
dialogue
&&
this
.
dialogue
.
hide
(),
new
M
.
core
.
alert
({
title
:
M
.
util
.
get_string
(
"
cannotopenpdf
"
,
"
assignfeedback_editpdfplus