View source
<?php
function node_class_preprocess_node(&$vars) {
$node = $vars['node'];
$classes = node_class($node);
$vars['classes_array'] = array_merge($vars['classes_array'], explode(' ', $classes));
}
function node_class($node) {
$attributes = node_class_attributes($node);
return $attributes;
}
function node_class_attributes($node) {
if (!isset($node->nid)) {
return "";
}
return db_query('SELECT css_class FROM {node_class} WHERE nid = :nid', array(
':nid' => $node->nid,
))
->fetchField();
}
function node_class_form_alter(&$form, &$form_state, $form_id) {
if (isset($form['#node']) && $form_id == $form['#node']->type . '_node_form' && user_access('administer nodes')) {
$form['node_class'] = array(
'#type' => 'fieldset',
'#title' => t('Node Class settings'),
'#collapsible' => TRUE,
'#weight' => -1,
'#tree' => TRUE,
);
$attributes = node_class_attributes($form['#node']);
if ($attributes) {
$form['node_class']['existing_css'] = array(
'#type' => 'hidden',
'#value' => '1',
);
}
$form['node_class']['css_class'] = array(
'#type' => 'textfield',
'#title' => t('CSS class(es)'),
'#default_value' => $attributes,
'#description' => t('Separate classes with a space.'),
);
$form['#submit'][] = 'node_class_form_submit';
}
}
function node_class_form_submit($form, &$form_state) {
if ($form_state['values']['form_id'] == $form['#node']->type . '_node_form') {
if (isset($form_state['values']['node_class']['css_class']) && user_access('administer nodes')) {
$nid = $form_state['values']['nid'];
$class = check_plain($form_state['values']['node_class']['css_class']);
if (isset($form_state['values']['node_class']['existing_css']) && !is_null($nid)) {
db_update('node_class')
->fields(array(
'css_class' => $class,
))
->condition('nid', $nid)
->execute();
}
if (!isset($form_state['values']['node_class']['existing_css']) && !is_null($nid) && !is_null($form_state['values']['node_class']['css_class'])) {
db_merge('node_class')
->key(array(
'nid' => $nid,
))
->fields(array(
'css_class' => $class,
))
->execute();
}
}
}
}
function node_class_node_delete($node) {
db_delete('node_class')
->condition('nid', $node->nid)
->execute();
}
function node_class_node_insert($node) {
if (isset($node->node_class['css_class']) && $node->node_class['css_class'] != '') {
$id = db_insert('node_class')
->fields(array(
'nid' => $node->nid,
'css_class' => $node->node_class['css_class'],
))
->execute();
}
}