forked from ESDet/esdportal_str
-
Notifications
You must be signed in to change notification settings - Fork 0
/
esdportal_str.module
148 lines (130 loc) · 3.73 KB
/
esdportal_str.module
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
136
137
138
139
140
141
142
143
144
145
146
147
<?php
/**
* @file
* Code for the esdportal_str feature.
*/
include_once 'esdportal_str.features.inc';
/**
* Implements hook_entity_info_alter().
*
* Add some view modes
*/
function esdportal_str_entity_info_alter(&$entity_info) {
$entity_info['taxonomy_term']['view modes']['aside'] = array(
'label' => t('Aside'),
'custom settings' => FALSE,
);
}
/**
* Implements hook_preprocess_taxonomy_term().
*
* Add template hints for the added view modes
*/
function esdportal_str_preprocess_taxonomy_term(&$vars) {
if($vars['view_mode'] == 'aside') {
$vars['theme_hook_suggestions'][] = 'taxonomy_term__' . $vars['type'] . '__aside';
}
}
/**
* Implements hook_permission().
*
* Define permission to allow editing field_school term ref.
*/
function esdportal_str_permission() {
return array(
'view own field_school' => array('title' => t('View own field_school')),
'edit own field_school' => array('title' => t('Edit own field_school')),
'view any field_school' => array('title' => t('View any field_school')),
'edit any field_school' => array('title' => t('Edit any field_school')),
);
}
/**
* Implements hook_field_access().
*
* Only allow users with administrator or logistics coordinator roles to update
* field_school taxnonomy reference.
*
* (follows field_permission_example module)
*/
function esdportal_str_field_access($op, $field, $entity_type, $entity, $account) {
if ($field['field_name'] == 'field_school') {
// allow superusers no matter whoziewhatsit
if (user_access('bypass node access') || user_access('administer content types')) {
return TRUE;
}
$context = 'any';
if ($entity_type == 'node' && $entity && $entity->uid == $account->uid) {
$context = 'own';
}
$perm = $op . ' ' . $context . ' field_school';
$access = user_access($perm, $account);
return $access;
}
return TRUE;
}
/**
* Feedback form, for use in footer.
*/
function esdportal_str_form() {
$form['intro'] = array(
'#markup' => t('Please provide feedback on this website.'),
);
$form['comments'] = array(
'#type' => 'textarea',
'#rows' => 4,
'#required' => TRUE,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
return $form;
}
/**
* Implements hook_form_submit().
*/
function esdportal_str_form_submit($form, &$form_state) {
global $user;
$vals = $form_state['values'];
$module = 'esdportal_str';
$key = 'feedback';
$from = variable_get('site_mail', '[email protected]');
$message = drupal_mail($module, $key, $to, language_default(), $vals, $from, FALSE);
$message['subject'] = t('Portal feedback from user @username', array('@username' => $user->name));
$message['body'] = t('@name wrote:', array('@name' => $user->name)) . "\n\n" . $vals['comments'];
$message['body'] .= "\n\n--\n" . t('Submitted by user @user from @url', array('@user' => $user->name, '@url' => $_SERVER['REQUEST_URI']));
$system = drupal_mail_system($module, $key);
$message['result'] = $system->mail($message);
if ($message['result'] == TRUE) {
drupal_set_message(t('Thank you for providing feedback.'));
}
else {
drupal_set_message(t('There was a problem sending your feedback.'), 'error');
}
}
/**
* Implements hook_block_info().
*/
function esdportal_str_block_info() {
return array(
'feedback' => array(
'info' => 'Feedback form',
'cache' => DRUPAL_CACHE_PER_ROLE,
),
);
}
/**
* Implements hook_block_view().
*
* Feedback form block
*/
function esdportal_str_block_view($delta = '') {
switch ($delta) {
case 'feedback':
default:
$block['subject'] = t('Feedback');
$block['content'] = drupal_get_form('esdportal_str_form');
break;
}
return $block;
}