View source
<?php
function node_class_perm() {
return array(
'administer nodes',
);
}
function node_class_attributes($node) {
$ret = db_fetch_object(db_query('SELECT nid, css_class FROM {node_class} WHERE nid = "%s"', $node->nid));
if ($ret !== FALSE) {
return $ret;
}
}
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,
);
if (isset($form['#node']->nid)) {
$attributes = node_class_attributes($form['#node']);
}
$old_classes = NULL;
if ($attributes && $attributes->nid) {
$old_classes = $attributes->css_class;
$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' => $old_classes,
'#description' => t('Separate classes with a space. IMPORTANT: You must add <?php print node_class($node); ?> to your theme\'s node.tpl.php file to make the classes appear.'),
);
$form['#submit'][] = 'node_class_form_submit';
}
}
function node_class_nodeapi(&$node, $op, $a3 = NUL, $a4 = NULL) {
switch ($op) {
case 'delete':
db_query("DELETE FROM {node_class} WHERE nid='%s'", $node->nid);
break;
case 'insert':
if (strlen($node->node_class['css_class']) >= 1) {
db_query("INSERT INTO {node_class} (nid, css_class) VALUES('%s','%s')", $node->nid, $node->node_class['css_class']);
}
break;
}
}
function node_class_form_submit($form, &$form_state) {
if ($form_state['values']['form_id'] == $form['#node']->type . '_node_form') {
$nid = $form_state['values']['nid'];
if (isset($form_state['values']['node_class']['css_class']) && user_access('administer nodes') && !is_null($nid)) {
$class = check_plain($form_state['values']['node_class']['css_class']);
if (isset($form_state['values']['node_class']['existing_css'])) {
if (strlen($form_state['values']['node_class']['css_class']) >= 1) {
db_query("UPDATE {node_class} SET css_class='%s' WHERE nid='%s'", $class, $nid);
}
else {
db_query("DELETE FROM {node_class} WHERE nid='%s'", $nid);
}
}
else {
if (strlen($form_state['values']['node_class']['css_class']) >= 1) {
db_query("INSERT INTO {node_class} (nid, css_class) VALUES('%s','%s')", $nid, $class);
}
}
}
}
}
function node_class($node) {
$attributes = node_class_attributes($node);
return $attributes->css_class;
}