original_string: public function view_mode_selector(array $modes, $currentmode, moodle_url $url = null, $param = 'view') {
          if ($url === null) {
              $url = $this->page->url;
          }
  
          $menu = new action_menu;
          $menu->attributes['class'] .= ' view-mode-selector vms ml-1';
  
          $selected = null;
          foreach ($modes as $mode => $modestr) {
              $attributes = array(
                  'class' => 'vms-mode',
                  'data-mode' => $mode
              );
              if ($currentmode === $mode) {
                  $attributes['class'] .= ' currentmode';
                  $selected = $modestr;
              }
              if ($selected === null) {
                  $selected = $modestr;
              }
              $modeurl = new moodle_url($url, array($param => $mode));
              if ($mode === 'default') {
                  $modeurl->remove_params($param);
              }
              $menu->add(new action_menu_link_secondary($modeurl, null, $modestr, $attributes));
          }
  
          $menu->set_menu_trigger($selected);
  
          $html = html_writer::start_div('view-mode-selector vms d-flex');
          $html .= get_string('viewing').' '.$this->render($menu);
          $html .= html_writer::end_div();
  
          return $html;
      }
code: public function view_mode_selector(array $modes, $currentmode, moodle_url $url = null, $param = 'view') {
          if ($url === null) {
              $url = $this->page->url;
          }
  
          $menu = new action_menu;
          $menu->attributes['class'] .= ' view-mode-selector vms ml-1';
  
          $selected = null;
          foreach ($modes as $mode => $modestr) {
              $attributes = array(
                  'class' => 'vms-mode',
                  'data-mode' => $mode
              );
              if ($currentmode === $mode) {
                  $attributes['class'] .= ' currentmode';
                  $selected = $modestr;
              }
              if ($selected === null) {
                  $selected = $modestr;
              }
              $modeurl = new moodle_url($url, array($param => $mode));
              if ($mode === 'default') {
                  $modeurl->remove_params($param);
              }
              $menu->add(new action_menu_link_secondary($modeurl, null, $modestr, $attributes));
          }
  
          $menu->set_menu_trigger($selected);
  
          $html = html_writer::start_div('view-mode-selector vms d-flex');
          $html .= get_string('viewing').' '.$this->render($menu);
          $html .= html_writer::end_div();
  
          return $html;
      }
code_tokens: public function view_mode_selector ( array $ modes , $ currentmode , moodle_url $ url = null , $ param = 'view' ) { if ( $ url === null ) { $ url = $ this -> page -> url ; } $ menu = new action_menu ; $ menu -> attributes [ 'class' ] .= ' view-mode-selector vms ml-1' ; $ selected = null ; foreach ( $ modes as $ mode => $ modestr ) { $ attributes = array ( 'class' => 'vms-mode' , 'data-mode' => $ mode ) ; if ( $ currentmode === $ mode ) { $ attributes [ 'class' ] .= ' currentmode' ; $ selected = $ modestr ; } if ( $ selected === null ) { $ selected = $ modestr ; } $ modeurl = new moodle_url ( $ url , array ( $ param => $ mode ) ) ; if ( $ mode === 'default' ) { $ modeurl -> remove_params ( $ param ) ; } $ menu -> add ( new action_menu_link_secondary ( $ modeurl , null , $ modestr , $ attributes ) ) ; } $ menu -> set_menu_trigger ( $ selected ) ; $ html = html_writer :: start_div ( 'view-mode-selector vms d-flex' ) ; $ html .= get_string ( 'viewing' ) . ' ' . $ this -> render ( $ menu ) ; $ html .= html_writer :: end_div ( ) ; return $ html ; }
docstring: Displays a view mode selector.
  
  @param array $modes An array of view modes.
  @param string $currentmode The current view mode.
  @param moodle_url $url The URL to use when changing actions. Defaults to the page URL.
  @param string $param The param name.
  @return string
docstring_tokens: Displays a view mode selector .