diff --git a/handlers/views_handler_field.inc b/handlers/views_handler_field.inc index 65210d9..dba1f29 100644 --- a/handlers/views_handler_field.inc +++ b/handlers/views_handler_field.inc @@ -287,18 +287,6 @@ class views_handler_field extends views_handler { } /** - * Return the class of the field. - */ - function element_classes($row_index = NULL) { - $classes = explode(' ', $this->options['element_class']); - foreach ($classes as &$class) { - $class = $this->tokenize_value($class, $row_index); - $class = views_clean_css_identifier($class); - } - return implode(' ', $classes); - } - - /** * Replace a value with tokens from the last field. * * This function actually figures out which field was last and uses its @@ -337,25 +325,16 @@ class views_handler_field extends views_handler { } /** - * Return the class of the field's label. + * Return an array of clean and valid classes. */ - function element_label_classes($row_index = NULL) { - $classes = explode(' ', $this->options['element_label_class']); + function element_clean_options_classes($type = NULL, $row_index = NULL) { + $classes = explode(' ', $this->options[$type]); foreach ($classes as &$class) { $class = $this->tokenize_value($class, $row_index); - $class = views_clean_css_identifier($class); + $class = drupal_html_class(views_clean_css_identifier($class)); } - return implode(' ', $classes); - } - - /** - * Return the class of the field's wrapper. - */ - function element_wrapper_classes($row_index = NULL) { - $classes = explode(' ', $this->options['element_wrapper_class']); - foreach ($classes as &$class) { - $class = $this->tokenize_value($class, $row_index); - $class = views_clean_css_identifier($class); + if(module_exists('transliteration')){ + $classes = array_map('transliteration_get', $classes); } return implode(' ', $classes); } diff --git a/plugins/views_plugin_style.inc b/plugins/views_plugin_style.inc index d355e1b..91c89cb 100644 --- a/plugins/views_plugin_style.inc +++ b/plugins/views_plugin_style.inc @@ -122,16 +122,24 @@ class views_plugin_style extends views_plugin { */ function get_row_class($row_index) { if ($this->uses_row_class()) { - $class = $this->options['row_class']; - if ($this->uses_fields() && $this->view->field) { - $class = strip_tags($this->tokenize_value($class, $row_index)); - } - - $classes = explode(' ', $class); - foreach ($classes as &$class) { - $class = drupal_clean_css_identifier($class); + if ($values = explode(' ', $this->options['row_class'])){ + $classes = array(); + if ($this->uses_fields() && $this->view->field) { + foreach ($values as $value) { + if ($class = strip_tags($this->tokenize_value($value, $row_index))) { + $classes[] = drupal_html_class(trim($class)); + } + } + }else{ + foreach ($values as $class) { + $classes[] = drupal_html_class(trim($class)); + } + } + if(module_exists('transliteration')){ + $classes = array_map('transliteration_get', $classes); + } + return implode(' ', $classes); } - return implode(' ', $classes); } } diff --git a/tests/styles/views_plugin_style.test b/tests/styles/views_plugin_style.test index dfc5413..0cc6fc3 100644 --- a/tests/styles/views_plugin_style.test +++ b/tests/styles/views_plugin_style.test @@ -252,11 +252,11 @@ class ViewsPluginStyleTestCase extends ViewsPluginStyleTestBase { foreach ($rows as $row) { $attributes = $row->attributes(); $class = (string) $attributes['class'][0]; - $this->assertTrue(strpos($class, $random_name) !== FALSE, 'Take sure that a custom css class is added to the output.'); + $this->assertTrue(strpos($class, drupal_html_class($random_name)) !== FALSE, 'Take sure that a custom css class is added to the output.'); // Check token replacement. $name = $view->field['name']->get_value($view->result[$count]); - $this->assertTrue(strpos($class, "test-token-$name") !== FALSE, 'Take sure that a token in custom css class is replaced.'); + $this->assertTrue(strpos($class, drupal_html_class("test-token-$name")) !== FALSE, 'Take sure that a token in custom css class is replaced.'); $count++; } diff --git a/theme/theme.inc b/theme/theme.inc index e7f7a15..cde8ae7 100644 --- a/theme/theme.inc +++ b/theme/theme.inc @@ -199,7 +199,7 @@ function template_preprocess_views_view_fields(&$vars) { $class = 'field-content'; } - if ($classes = $object->handler->element_classes($view->row_index)) { + if ($classes = $object->handler->element_clean_options_classes('element_class', $view->row_index)) { if ($class) { $class .= ' '; } @@ -249,7 +249,7 @@ function template_preprocess_views_view_fields(&$vars) { $class = "views-field views-field-" . $object->class; } - if ($classes = $object->handler->element_wrapper_classes($view->row_index)) { + if ($classes = $object->handler->element_clean_options_classes('element_wrapper_class', $view->row_index)) { if ($class) { $class .= ' '; } @@ -281,7 +281,7 @@ function template_preprocess_views_view_fields(&$vars) { $class = 'views-label views-label-' . $object->class; } - $element_label_class = $object->handler->element_label_classes($view->row_index); + $element_label_class = $object->handler->element_clean_options_classes('element_label_class', $view->row_index); if ($element_label_class) { if ($class) { $class .= ' ';