-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnode_class.module
More file actions
executable file
·135 lines (110 loc) · 3.04 KB
/
node_class.module
File metadata and controls
executable file
·135 lines (110 loc) · 3.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?php
/*
*
*/
function node_class_preprocess_node(&$vars) {
}
/*
* implementation of hook_permission()
*/
function node_class_permission() {
return array(
'administer node class' => array(
'title' => t("Administer Node Class")
),
);
}
/*
* getting css class for a given node
*/
function node_class_attributes($node) {
$ret = array();
$ret = db_query('SELECT nid , css_class FROM {node_class} WHERE nid = :nid', array(':nid' => $node->nid))->fetchAssoc();
//die(print_r($ret));
return $ret ? $ret : '';
}
/*
* implementation of hook_form_alter
*/
function node_class_form_alter(&$form, &$form_state, $form_id) {
// check form type && user_access ok
if (isset($form['#node']) && ($form_id == $form['#node']->type . '_node_form') && user_access('administer node class')) {
$form['node_class'] = array(
'#type' => 'fieldset',
'#title' => t('Node Class Settings'),
'#collapsible' => TRUE,
'#weight' => -1,
'#tree' => TRUE
);
//get css attributes information
$attributes = node_class_attributes($form['#node']);
//die(print_r($form['#node']));
//check CSS exists in DB to prepare SQL update
if (!empty($attributes)) {
$form['node_class']['existing_css'] = array(
'#value' => 1,
'#type' => 'hidden'
);
}
else {
$form['node_class']['existing_css'] = array(
'#value' => false,
);
}
$form['node_class']['css_class'] = array(
'#type' => 'textfield',
'#title' => t('CSS class(es)'),
'#default_value' => $attributes ? $attributes['css_class'] : '',
'#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.'),
);
// adding submit handler for node_class module
$form['#submit'][] = 'node_class_form_submit';
}
}
/*
*
*/
function node_class_node_delete($node) {
db_delete('node_class')
->condition('nid', $node->nid)
->execute();
}
/*
* submit handler
*/
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']);
// CRUD test
if (!isset($form_state['values']['node_class']['existing_class'])) {
if ($class) {
db_insert('node_class')
->fields(array(
'nid' => $nid,
'css_class' => $class
))
->execute();
}
}
elseif (isset($form_state['values']['node_class']['existing_class'])) {
db_update('node_class')
->fields(array(
'css_class' => $class,
))
->condition('nid', $node->nid)
->execute();
}
}
}
}
/*
* Accessor for css_class information
*/
function node_class($node) {
$attributes = node_class_attributes($node);
if ($attributes) {
return $attributes['css_class'];
}
}