@@ -28,19 +28,19 @@ $(function () {
28
28
position : 'relative' ,
29
29
} ) ;
30
30
31
- const upload_overlay = $ ( '<div>' )
31
+ const uploadOverlay = $ ( '<div>' )
32
32
. css ( {
33
33
display : 'none' ,
34
34
position : 'absolute' ,
35
35
top : 0 ,
36
36
left : 0 ,
37
- width : '92 %' ,
37
+ width : '97 %' ,
38
38
height : '100%' ,
39
39
'background-color' : 'rgba(0, 0, 0, 0.2)' ,
40
40
'z-index' : 1000 ,
41
41
'text-align' : 'center' ,
42
42
border : '10px dashed #000' ,
43
- padding : '100px 20px 0px 20px' ,
43
+ padding : '30px 20px 0px 20px' ,
44
44
'font-size' : '250%' ,
45
45
'box-sizing' : 'border-box' ,
46
46
} )
@@ -57,7 +57,7 @@ $(function () {
57
57
if ( markdownToggle . prop ( 'checked' ) ) {
58
58
const dt = e . originalEvent . dataTransfer ;
59
59
if ( dt . types . includes ( 'Files' ) ) {
60
- upload_overlay . stop ( ) . fadeIn ( 150 ) ;
60
+ uploadOverlay . stop ( ) . fadeIn ( 150 ) ;
61
61
}
62
62
}
63
63
} ,
@@ -87,13 +87,76 @@ $(function () {
87
87
insertAtCursor ( description [ 0 ] , `` ) ;
88
88
} ) ;
89
89
}
90
- upload_overlay . stop ( ) . fadeOut ( 150 ) ;
90
+ uploadOverlay . stop ( ) . fadeOut ( 150 ) ;
91
91
}
92
92
} ,
93
93
} ) ;
94
94
95
- upload_overlay . on ( 'dragleave' , function ( ) {
96
- upload_overlay . stop ( ) . fadeOut ( 150 ) ;
95
+ uploadOverlay . on ( 'dragleave' , function ( ) {
96
+ uploadOverlay . stop ( ) . fadeOut ( 150 ) ;
97
+ } ) ;
98
+
99
+ // This is basically a copy-paste of the above code, but for the quiz description
100
+ // I'm not sure how to refactor this to completely avoid code duplication, but I've made an attempt
101
+ const quizMarkdownToggle = $ ( '#id_quiz_description_markdown' ) ;
102
+ const quizDescription = $ ( '#id_quiz_description' ) ;
103
+ const quizDescriptionParent = quizDescription . parent ( ) ;
104
+
105
+ quizDescriptionParent . css ( {
106
+ position : 'relative' ,
107
+ } ) ;
108
+
109
+ const quizUploadOverlay = uploadOverlay
110
+ . clone ( )
111
+ . appendTo ( quizDescriptionParent ) ;
112
+
113
+ quizDescriptionParent . on ( {
114
+ dragover : function ( e ) {
115
+ if ( quizMarkdownToggle . prop ( 'checked' ) ) {
116
+ e . preventDefault ( ) ;
117
+ }
118
+ } ,
119
+ dragenter : function ( e ) {
120
+ if ( quizMarkdownToggle . prop ( 'checked' ) ) {
121
+ const dt = e . originalEvent . dataTransfer ;
122
+ if ( dt . types . includes ( 'Files' ) ) {
123
+ quizUploadOverlay . stop ( ) . fadeIn ( 150 ) ;
124
+ }
125
+ }
126
+ } ,
127
+ drop : function ( e ) {
128
+ if ( quizMarkdownToggle . prop ( 'checked' ) ) {
129
+ const dt = e . originalEvent . dataTransfer ;
130
+ e . preventDefault ( ) ;
131
+ if ( dt && dt . files . length ) {
132
+ if ( dt . files . length != 1 ) {
133
+ alert ( 'Please only upload one file at a time.' ) ;
134
+ return ;
135
+ }
136
+
137
+ let data = new FormData ( ) ;
138
+ data . append ( 'key' , IMGBB_API_KEY ) ;
139
+ data . append ( 'image' , dt . files [ 0 ] ) ;
140
+
141
+ $ . ajax ( {
142
+ url : 'https://api.imgbb.com/1/upload' ,
143
+ method : 'POST' ,
144
+ data : data ,
145
+ processData : false ,
146
+ contentType : false ,
147
+ } ) . done ( function ( data ) {
148
+ const name = data . data . title ;
149
+ const url = data . data . url ;
150
+ insertAtCursor ( quizDescription [ 0 ] , `` ) ;
151
+ } ) ;
152
+ }
153
+ quizUploadOverlay . stop ( ) . fadeOut ( 150 ) ;
154
+ }
155
+ } ,
156
+ } ) ;
157
+
158
+ quizUploadOverlay . on ( 'dragleave' , function ( ) {
159
+ quizUploadOverlay . stop ( ) . fadeOut ( 150 ) ;
97
160
} ) ;
98
161
}
99
162
} ) ;
0 commit comments