@@ -107,77 +107,78 @@ private function get_quit_button(): string {
107107 */
108108 public static function add_settings_form_fields (mod_quiz_mod_form $ quizform , MoodleQuickForm $ mform ) {
109109 global $ DB ;
110- $ quizid = $ ineditmode = $ quizform ->get_instance ();
111- $ displaydwnloadbutton = [];
112- if ($ ineditmode ) {
113- $ readonly = 'readonly ' ;
114- // Check if quiz has Seb Server enabled for.
115- $ sebserver = $ DB ->get_record ('quizaccess_sebserver ' , ['sebserverquizid ' => $ quizid ]);
116- if (!empty ($ sebserver ) && $ sebserver ->sebserverenabled == 1 ) {
117- $ displaydwnloadbutton = ['style="pointer-events: none!important;background-color: #ededed;" ' ];
118- if (!quiz_has_attempts ($ quizid )) {
119- $ mform ->addElement ('html ' ,
120- '<script>var sebsection = document.getElementById("fitem_id_seb_requiresafeexambrowser"); ' .
121- 'sebsection.insertAdjacentHTML( "beforebegin", "<div class=\"alert alert-warning alert-block fade in\"> ' .
122- get_string ('managedbysebserver ' , 'quizaccess_sebserver ' ) . '</div>"); </script> ' );
110+ global $ COURSE ;
111+ $ context = context_course::instance ($ COURSE ->id );
112+ if (has_capability ('quizaccess/sebserver:canusesebserver ' , $ context )) {
113+ $ quizid = $ ineditmode = $ quizform ->get_instance ();
114+ $ displaydwnloadbutton = [];
115+ if ($ ineditmode ) {
116+ $ readonly = 'readonly ' ;
117+ // Check if quiz has Seb Server enabled for.
118+ $ sebserver = $ DB ->get_record ('quizaccess_sebserver ' , ['sebserverquizid ' => $ quizid ]);
119+ if (!empty ($ sebserver ) && $ sebserver ->sebserverenabled == 1 ) {
120+ $ displaydwnloadbutton = ['style="pointer-events: none!important;background-color: #ededed;" ' ];
121+ if (!quiz_has_attempts ($ quizid )) {
122+ $ mform ->addElement ('html ' ,
123+ '<script>var sebsection = document.getElementById("fitem_id_seb_requiresafeexambrowser"); ' .
124+ 'sebsection.insertAdjacentHTML( "beforebegin", "<div class=\"alert alert-warning alert-block fade in\"> ' .
125+ get_string ('managedbysebserver ' , 'quizaccess_sebserver ' ) . '</div>"); </script> ' );
126+ }
123127 }
128+ } else {
129+ $ readonly = '' ;
130+ $ displaydwnloadbutton = [];
124131 }
125- } else {
126- $ readonly = '' ;
127- $ displaydwnloadbutton = [];
128- }
129- $ mform ->addElement ('header ' , 'sebserverheader ' , get_string ('pluginname ' , 'quizaccess_sebserver ' ));
132+ $ mform ->addElement ('header ' , 'sebserverheader ' , get_string ('pluginname ' , 'quizaccess_sebserver ' ));
130133
131- $ enableselectchange = ['style="pointer-events: none!important;background-color: #ededed;" ' ];
134+ $ enableselectchange = ['style="pointer-events: none!important;background-color: #ededed;" ' ];
132135
133- $ connection = self ::sebserverconnectiondetails (1 );
134- $ readonlymanageddevices = '' ;
135- if (empty ($ connection )) {
136- $ mform ->addElement ('html ' ,
136+ $ connection = self ::sebserverconnectiondetails (1 );
137+ $ readonlymanageddevices = '' ;
138+ if (empty ($ connection )) {
139+ $ mform ->addElement ('html ' ,
137140 '<div class="alert alert-warning alert-block fade in"> ' .
138141 get_string ('connectionnotsetupyet ' , 'quizaccess_sebserver ' ) . '</div> ' );
139- } else {
140- $ templates = [-1 => get_string ('selectemplate ' , 'quizaccess_sebserver ' )];
141- // Sometimes Sebserver set quiz with no template.
142- if ($ ineditmode && $ sebserver && $ sebserver ->sebservertemplateid == 0 ) {
143- $ templates += [0 => get_string ('notemplate ' , 'quizaccess_sebserver ' )];
144- }
145- foreach ($ connection [3 ] as $ templatedetails ) {
146- $ templates += [$ templatedetails ->{'template_id ' } => $ templatedetails ->{'template_name ' }];
147- }
148- // What if Template was imported direct via sebserver?.
149- if ($ ineditmode && $ sebserver ) {
150- if (!array_key_exists ($ sebserver ->sebservertemplateid , $ templates )) {
151- $ templates += [$ sebserver ->sebservertemplateid =>
152- get_string ('manageddevicetemplate ' , 'quizaccess_sebserver ' ) . ' ' . $ sebserver ->sebservertemplateid ];
142+ } else {
143+ $ templates = [-1 => get_string ('selectemplate ' , 'quizaccess_sebserver ' )];
144+ // Sometimes Sebserver set quiz with no template.
145+ if ($ ineditmode && $ sebserver && $ sebserver ->sebservertemplateid == 0 ) {
146+ $ templates += [0 => get_string ('notemplate ' , 'quizaccess_sebserver ' )];
147+ }
148+ foreach ($ connection [3 ] as $ templatedetails ) {
149+ $ templates += [$ templatedetails ->{'template_id ' } => $ templatedetails ->{'template_name ' }];
150+ }
151+ // What if Template was imported direct via sebserver?.
152+ if ($ ineditmode && $ sebserver ) {
153+ if (!array_key_exists ($ sebserver ->sebservertemplateid , $ templates )) {
154+ $ templates += [$ sebserver ->sebservertemplateid =>
155+ get_string ('manageddevicetemplate ' , 'quizaccess_sebserver ' ) . ' ' . $ sebserver ->sebservertemplateid ];
156+ $ readonlymanageddevices =
157+ 'sebserverenabled.setAttribute("style","pointer-events: none!important;background-color: #ededed;"); ' ;
158+ }
159+ }
160+ // Now prevent anyone from modifying if there are attempts.
161+ if ($ ineditmode && quiz_has_attempts ($ quizid )) {
153162 $ readonlymanageddevices =
154163 'sebserverenabled.setAttribute("style","pointer-events: none!important;background-color: #ededed;"); ' ;
155164 }
156165 }
157- // Now prevent anyone from modifying if there are attempts.
158- if ($ ineditmode && quiz_has_attempts ($ quizid )) {
159- $ readonlymanageddevices =
160- 'sebserverenabled.setAttribute("style","pointer-events: none!important;background-color: #ededed;"); ' ;
161- }
162- }
163- global $ COURSE ;
164- $ context = context_course::instance ($ COURSE ->id );
165- $ canusesebserver = has_capability ('quizaccess/sebserver:canusesebserver ' , $ context );
166- $ candeletesebserver = has_capability ('quizaccess/sebserver:candeletesebserver ' , $ context );
166+ $ canusesebserver = has_capability ('quizaccess/sebserver:canusesebserver ' , $ context );
167+ $ candeletesebserver = has_capability ('quizaccess/sebserver:candeletesebserver ' , $ context );
167168
168- if (!$ ineditmode && $ canusesebserver && $ connection ) { // Create Mode.
169- $ enableselectchange = [];
170- }
171- if ($ ineditmode && $ candeletesebserver && $ connection ) { // Edit Mode.
172- $ enableselectchange = [];
173- }
169+ if (!$ ineditmode && $ canusesebserver && $ connection ) { // Create Mode.
170+ $ enableselectchange = [];
171+ }
172+ if ($ ineditmode && $ candeletesebserver && $ connection ) { // Edit Mode.
173+ $ enableselectchange = [];
174+ }
174175
175- $ sebserverformchange = $ enableselectchange + ['onChange ' => 'sebserevrselectionchange(this) ' ];
176- $ mform ->addElement ('selectyesno ' , 'sebserverenabled ' , get_string ('enablesebserver ' , 'quizaccess_sebserver ' ),
177- $ sebserverformchange );
178- $ mform ->setType ('sebserverenabled ' , PARAM_INT );
176+ $ sebserverformchange = $ enableselectchange + ['onChange ' => 'sebserevrselectionchange(this) ' ];
177+ $ mform ->addElement ('selectyesno ' , 'sebserverenabled ' , get_string ('enablesebserver ' , 'quizaccess_sebserver ' ),
178+ $ sebserverformchange );
179+ $ mform ->setType ('sebserverenabled ' , PARAM_INT );
179180
180- $ embedjsscript = '<script>
181+ $ embedjsscript = '<script>
181182
182183 coresebplugin = document.querySelector("#id_seb_requiresafeexambrowser");
183184 initialselectedseboption = coresebplugin.value;
@@ -209,47 +210,47 @@ function sebserevrselectionchange(sel) {
209210
210211 }
211212 </script> ' ;
212- $ mform ->addElement ('html ' , $ embedjsscript );
213- if (is_array ($ templates ) && $ connection ) {
214- if (!$ ineditmode ) {
215- $ allowtemplatechange = [];
216- } else {
217- $ allowtemplatechange = ['style="pointer-events: none!important;background-color: #ededed;" ' ];
218- }
219- // Address previous quizes that were created before sebserver.
220- if ($ ineditmode && empty ($ enableselectchange ) && (!$ sebserver || $ sebserver ->sebserverenabled == 0 ) ) {
221- $ allowtemplatechange = [];
222- $ readonly = '' ; // Quit secret needs to be enabled too.
213+ $ mform ->addElement ('html ' , $ embedjsscript );
214+ if (isset ($ templates ) && is_array ($ templates ) && $ connection ) {
215+ if (!$ ineditmode ) {
216+ $ allowtemplatechange = [];
217+ } else {
218+ $ allowtemplatechange = ['style="pointer-events: none!important;background-color: #ededed;" ' ];
219+ }
220+ // Address previous quizes that were created before sebserver.
221+ if ($ ineditmode && empty ($ enableselectchange ) && (!$ sebserver || $ sebserver ->sebserverenabled == 0 ) ) {
222+ $ allowtemplatechange = [];
223+ $ readonly = '' ; // Quit secret needs to be enabled too.
224+ }
225+ $ mform ->addElement ('select ' , 'sebservertemplateid ' , get_string ('sebserverexamtemplate ' , 'quizaccess_sebserver ' ),
226+ $ templates , $ allowtemplatechange );
227+ $ mform ->setType ('sebservertemplateid ' , PARAM_INT );
228+ $ mform ->disabledif ('sebservertemplateid ' , 'sebserverenabled ' , 'neq ' , 1 );
229+ $ mform ->addHelpButton ('sebservertemplateid ' , 'sebservertemplateid ' , 'quizaccess_sebserver ' );
223230 }
224- $ mform ->addElement ('select ' , 'sebservertemplateid ' , get_string ('sebserverexamtemplate ' , 'quizaccess_sebserver ' ),
225- $ templates , $ allowtemplatechange );
226- $ mform ->setType ('sebservertemplateid ' , PARAM_INT );
227- $ mform ->disabledif ('sebservertemplateid ' , 'sebserverenabled ' , 'neq ' , 1 );
228- $ mform ->addHelpButton ('sebservertemplateid ' , 'sebservertemplateid ' , 'quizaccess_sebserver ' );
229- }
230- $ mform ->addElement ('selectyesno ' , 'sebservershowquitbtn ' , get_string ('showquitbtn ' , 'quizaccess_sebserver ' ),
231- $ displaydwnloadbutton );
232- $ mform ->setType ('sebservershowquitbtn ' , PARAM_INT );
233- $ mform ->setDefault ('sebservershowquitbtn ' , 1 );
234- $ mform ->disabledif ('sebservershowquitbtn ' , 'sebserverenabled ' , 'neq ' , 1 );
235- $ mform ->addElement ('text ' , 'sebserverquitsecret ' ,
236- get_string ('sebserverquitsecret ' , 'quizaccess_sebserver ' ), $ readonly . ' size="70" ' );
237- $ mform ->setType ('sebserverquitsecret ' , PARAM_RAW );
238- $ mform ->setDefault ('sebserverquitsecret ' , '' );
239- $ mform ->disabledif ('sebserverquitsecret ' , 'sebserverenabled ' , 'neq ' , 1 );
240- $ mform ->addHelpButton ('sebserverquitsecret ' , 'sebserverquitsecret ' , 'quizaccess_sebserver ' );
241-
242- if ($ ineditmode ) {
243- $ mform ->addElement ('html ' ,
231+ $ mform ->addElement ('selectyesno ' , 'sebservershowquitbtn ' , get_string ('showquitbtn ' , 'quizaccess_sebserver ' ),
232+ $ displaydwnloadbutton );
233+ $ mform ->setType ('sebservershowquitbtn ' , PARAM_INT );
234+ $ mform ->setDefault ('sebservershowquitbtn ' , 1 );
235+ $ mform ->disabledif ('sebservershowquitbtn ' , 'sebserverenabled ' , 'neq ' , 1 );
236+ $ mform ->addElement ('text ' , 'sebserverquitsecret ' ,
237+ get_string ('sebserverquitsecret ' , 'quizaccess_sebserver ' ), $ readonly . ' size="70" ' );
238+ $ mform ->setType ('sebserverquitsecret ' , PARAM_RAW );
239+ $ mform ->setDefault ('sebserverquitsecret ' , '' );
240+ $ mform ->disabledif ('sebserverquitsecret ' , 'sebserverenabled ' , 'neq ' , 1 );
241+ $ mform ->addHelpButton ('sebserverquitsecret ' , 'sebserverquitsecret ' , 'quizaccess_sebserver ' );
242+
243+ if ($ ineditmode ) {
244+ $ mform ->addElement ('html ' ,
244245 '<div class="alert alert-warning alert-block fade in"> ' .
245246 get_string ('modificationinstruction ' , 'quizaccess_sebserver ' ) . '</div> ' );
246- if (is_siteadmin () && $ sebserver ) {
247- $ mform ->addElement ('checkbox ' , 'resetseb ' , get_string ('adminsonly ' , 'quizaccess_sebserver ' ),
248- get_string ('resetseb ' , 'quizaccess_sebserver ' ));
249- $ mform ->addHelpButton ('resetseb ' , 'resetseb ' , 'quizaccess_sebserver ' );
247+ if (is_siteadmin () && $ sebserver ) {
248+ $ mform ->addElement ('checkbox ' , 'resetseb ' , get_string ('adminsonly ' , 'quizaccess_sebserver ' ),
249+ get_string ('resetseb ' , 'quizaccess_sebserver ' ));
250+ $ mform ->addHelpButton ('resetseb ' , 'resetseb ' , 'quizaccess_sebserver ' );
251+ }
250252 }
251253 }
252-
253254 }
254255
255256 /**
0 commit comments