1 views.module _views_tokenized_clean_css_identifier($class, $plugin, $row_index)

Cleans a CSS identifier, taking into account views tokenization.

Parameters

string $class: A single CSS class, as entered into the Views user interface.

object $plugin: The complete view plugin object for tokenization.

string $row_index: The index indicating the row of the view.

Return value

string $class: A sanitized clean css identifier with tokens replaced.

File

core/modules/views/views.module, line 2270
Primarily Backdrop hooks and global API functions to manipulate views.

Code

function _views_tokenized_clean_css_identifier($class, $plugin, $row_index) {
  if (!empty($class)) {
    // To support a class that is part hand-typed and part token, split out tokens.
    $substrings = preg_split('/(\[[^\]]*])/i', $class, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
    foreach ($substrings as &$substring) {
      $tokenized = $plugin->tokenize_value($substring, $row_index);
      if ($tokenized == $substring) {
        // No token replacement, keep entered string as it is.
        $substring = $tokenized;
      }
      else {
        // Tokens that are replaced should be additionally sanitized, such
        // as replacing underscores with hyphens.
        // To avoid unexpected replacement at the start of this substring, we
        // prefix two hyphens and remove them again.
        $substring = substr(backdrop_clean_css_identifier('--' . $tokenized), 2);
      }
    }
    // Merge strings into class identifier.
    $class = implode('', $substrings);
    // Return cleaned identifier, all valid CSS characters allowed.
    return backdrop_clean_css_identifier($class, array());
  }
}