original_string: public function summary_page_controls($attemptobj) {
          $output = '';
  
          // Return to place button.
          if ($attemptobj->get_state() == quiz_attempt::IN_PROGRESS) {
              $button = new single_button(
                      new moodle_url($attemptobj->attempt_url(null, $attemptobj->get_currentpage())),
                      get_string('returnattempt', 'quiz'));
              $output .= $this->container($this->container($this->render($button),
                      'controls'), 'submitbtns mdl-align');
          }
  
          // Finish attempt button.
          $options = array(
              'attempt' => $attemptobj->get_attemptid(),
              'finishattempt' => 1,
              'timeup' => 0,
              'slots' => '',
              'cmid' => $attemptobj->get_cmid(),
              'sesskey' => sesskey(),
          );
  
          $button = new single_button(
                  new moodle_url($attemptobj->processattempt_url(), $options),
                  get_string('submitallandfinish', 'quiz'));
          $button->id = 'responseform';
          if ($attemptobj->get_state() == quiz_attempt::IN_PROGRESS) {
              $button->add_action(new confirm_action(get_string('confirmclose', 'quiz'), null,
                      get_string('submitallandfinish', 'quiz')));
          }
  
          $duedate = $attemptobj->get_due_date();
          $message = '';
          if ($attemptobj->get_state() == quiz_attempt::OVERDUE) {
              $message = get_string('overduemustbesubmittedby', 'quiz', userdate($duedate));
  
          } else if ($duedate) {
              $message = get_string('mustbesubmittedby', 'quiz', userdate($duedate));
          }
  
          $output .= $this->countdown_timer($attemptobj, time());
          $output .= $this->container($message . $this->container(
                  $this->render($button), 'controls'), 'submitbtns mdl-align');
  
          return $output;
      }
code: public function summary_page_controls($attemptobj) {
          $output = '';
  
          // Return to place button.
          if ($attemptobj->get_state() == quiz_attempt::IN_PROGRESS) {
              $button = new single_button(
                      new moodle_url($attemptobj->attempt_url(null, $attemptobj->get_currentpage())),
                      get_string('returnattempt', 'quiz'));
              $output .= $this->container($this->container($this->render($button),
                      'controls'), 'submitbtns mdl-align');
          }
  
          // Finish attempt button.
          $options = array(
              'attempt' => $attemptobj->get_attemptid(),
              'finishattempt' => 1,
              'timeup' => 0,
              'slots' => '',
              'cmid' => $attemptobj->get_cmid(),
              'sesskey' => sesskey(),
          );
  
          $button = new single_button(
                  new moodle_url($attemptobj->processattempt_url(), $options),
                  get_string('submitallandfinish', 'quiz'));
          $button->id = 'responseform';
          if ($attemptobj->get_state() == quiz_attempt::IN_PROGRESS) {
              $button->add_action(new confirm_action(get_string('confirmclose', 'quiz'), null,
                      get_string('submitallandfinish', 'quiz')));
          }
  
          $duedate = $attemptobj->get_due_date();
          $message = '';
          if ($attemptobj->get_state() == quiz_attempt::OVERDUE) {
              $message = get_string('overduemustbesubmittedby', 'quiz', userdate($duedate));
  
          } else if ($duedate) {
              $message = get_string('mustbesubmittedby', 'quiz', userdate($duedate));
          }
  
          $output .= $this->countdown_timer($attemptobj, time());
          $output .= $this->container($message . $this->container(
                  $this->render($button), 'controls'), 'submitbtns mdl-align');
  
          return $output;
      }
code_tokens: public function summary_page_controls ( $ attemptobj ) { $ output = '' ; // Return to place button. if ( $ attemptobj -> get_state ( ) == quiz_attempt :: IN_PROGRESS ) { $ button = new single_button ( new moodle_url ( $ attemptobj -> attempt_url ( null , $ attemptobj -> get_currentpage ( ) ) ) , get_string ( 'returnattempt' , 'quiz' ) ) ; $ output .= $ this -> container ( $ this -> container ( $ this -> render ( $ button ) , 'controls' ) , 'submitbtns mdl-align' ) ; } // Finish attempt button. $ options = array ( 'attempt' => $ attemptobj -> get_attemptid ( ) , 'finishattempt' => 1 , 'timeup' => 0 , 'slots' => '' , 'cmid' => $ attemptobj -> get_cmid ( ) , 'sesskey' => sesskey ( ) , ) ; $ button = new single_button ( new moodle_url ( $ attemptobj -> processattempt_url ( ) , $ options ) , get_string ( 'submitallandfinish' , 'quiz' ) ) ; $ button -> id = 'responseform' ; if ( $ attemptobj -> get_state ( ) == quiz_attempt :: IN_PROGRESS ) { $ button -> add_action ( new confirm_action ( get_string ( 'confirmclose' , 'quiz' ) , null , get_string ( 'submitallandfinish' , 'quiz' ) ) ) ; } $ duedate = $ attemptobj -> get_due_date ( ) ; $ message = '' ; if ( $ attemptobj -> get_state ( ) == quiz_attempt :: OVERDUE ) { $ message = get_string ( 'overduemustbesubmittedby' , 'quiz' , userdate ( $ duedate ) ) ; } else if ( $ duedate ) { $ message = get_string ( 'mustbesubmittedby' , 'quiz' , userdate ( $ duedate ) ) ; } $ output .= $ this -> countdown_timer ( $ attemptobj , time ( ) ) ; $ output .= $ this -> container ( $ message . $ this -> container ( $ this -> render ( $ button ) , 'controls' ) , 'submitbtns mdl-align' ) ; return $ output ; }
docstring: Creates any controls a the page should have.
  
  @param quiz_attempt $attemptobj
docstring_tokens: Creates any controls a the page should have .