/[drupal]/contributions/modules/tribune/tribune.admin.filters.inc
ViewVC logotype

Contents of /contributions/modules/tribune/tribune.admin.filters.inc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.9 - (show annotations) (download) (as text)
Fri Nov 28 13:43:52 2008 UTC (11 months, 3 weeks ago) by seeschloss
Branch: MAIN
CVS Tags: HEAD
Changes since 1.8: +4 -1 lines
File MIME type: text/x-php
updating filters
1 <?php
2 // vim:filetype=php expandtab tabstop=2 softtabstop=2 shiftwidth=2 autoindent smartindent
3 // $Id: tribune.admin.filters.inc,v 1.8 2008/11/28 10:22:53 seeschloss Exp $
4
5 function tribune_admin_filters($node = NULL) {
6 if (!$node) {
7 drupal_set_message(t('These settings are only used for tribunes owned by
8 users who do not have the permission to configure filters, and are not
9 used at all for tribunes owned by users who do have this permission.'));
10 }
11
12 $output .= drupal_get_form("tribune_admin_filters_form", $node, "before");
13 $output .= drupal_get_form("tribune_admin_filters_form", $node, "after");
14 $output .= drupal_get_form("tribune_admin_filters_reparse_form", $node);
15 return $output;
16 }
17
18 function theme_tribune_admin_filters_form($form) {
19 $headers = array(
20 array('data' => t('Enabled'), 'class' => "checkbox"),
21 t('Name'),
22 t('Settings'),
23 t('Description'),
24 );
25
26 $rows = array();
27 foreach (element_children($form['filters']) as $filter_name) {
28 if (isset($form['filters'][$filter_name]['status'])) {
29 $element = &$form['filters'][$filter_name];
30 $row = array();
31 $row[] = array('data' => drupal_render($element['status']), 'class' => "checkbox");
32 $row[] = array('data' => drupal_render($element['name']));
33 $row[] = array('data' => drupal_render($element['settings']));
34 $row[] = array('data' => drupal_render($element['description']), 'class' => "description");
35
36 $rows[] = $row;
37 }
38 }
39
40 $output = "";
41 if ($rows) {
42 $output .= theme("table", $headers, $rows);
43 }
44
45 $output .= drupal_render($form);
46
47 $fieldset = array(
48 '#type' => "fieldset",
49 '#title' => $form['title']['#value'],
50 '#description' => $form['description']['#value'],
51 );
52 $fieldset['contents'] = array(
53 '#value' => $output,
54 );
55
56 return drupal_render($fieldset);
57 }
58
59 function tribune_admin_filters_form($form, $node, $execution_time = "before") {
60 $filters = _tribune_filters_info();
61 $all_filters = array();
62
63 if (isset($node) and is_array($node->tribune_settings['enabled_filters'])) {
64 $enabled_filters = $node->tribune_settings['enabled_filters'];
65 } else {
66 $enabled_filters = variable_get('tribune_enabled_filters', array('totoz' => "totoz", "url" => "url"));
67 }
68
69 $form = array('#tree' => TRUE);
70
71 foreach ($filters as $filter_name => $attributes) {
72 if (($execution_time == "before" and $attributes['before_slip'])
73 or ($execution_time == "after" and $attributes['after_slip'])) {
74 $enabled = (isset($enabled_filters[$filter_name]) and $enabled_filters[$filter_name]);
75
76 $all_filters[] = $filter_name;
77
78 $row = array();
79 $row['status'] = array(
80 '#type' => 'checkbox',
81 '#return_value' => TRUE,
82 '#default_value' => $enabled,
83 );
84 $row['name'] = array(
85 '#value' => $filter_name,
86 );
87 if ($node) {
88 $settings_path = 'node/'. $node->nid .'/filters/settings/'. $filter_name;
89 } else {
90 $settings_path = 'admin/settings/tribune/filters/settings/'. $filter_name;
91 }
92 $row['settings'] = array(
93 '#value' => $enabled ? $filters[$filter_name]['settings'] ? l(t('Settings'), $settings_path) : t('None') : "",
94 );
95 $row['description'] = array(
96 '#value' => $filters[$filter_name]['description'],
97 );
98
99 $form['filters'][$filter_name] = $row;
100 }
101 }
102 $form['title'] = array(
103 '#type' => "value",
104 '#value' => $execution_time == "before" ? t("Filters run before the <em>slip</em>") : t("Filters run after the <em>slip</em>"),
105 );
106 $form['description'] = array(
107 '#type' => "value",
108 '#value' => $execution_time == "before" ? t("These filters can only use limited HTML, and can post new messages.") : t("These filters can use full HTML, but can not post new messages."),
109 );
110
111 $form['filters-list'] = array(
112 '#type' => 'hidden',
113 '#value' => serialize($all_filters),
114 );
115
116 if ($node) {
117 $form['tribune_id'] = array(
118 '#type' => 'value',
119 '#value' => $node->nid,
120 );
121 }
122
123 $form['submit'] = array(
124 '#type' => "submit",
125 '#value' => t("Save"),
126 '#submit' => array("tribune_admin_filters_enable_disable"),
127 );
128
129 return $form;
130 }
131
132 function tribune_admin_filters_enable_disable($form, $f) {
133 $node = NULL;
134 if (isset($form['tribune_id'])) {
135 $node = node_load($form['tribune_id']['#value']);
136 $enabled_filters = $node->tribune_settings['enabled_filters'] ? $node->tribune_settings['enabled_filters'] : array('totoz' => "totoz", "url" => "url");
137 } else {
138 $enabled_filters = variable_get('tribune_enabled_filters', array('totoz' => "totoz", "url" => "url"));
139 }
140
141 $all_filters = unserialize($form['#post']['filters-list']);
142
143 if (is_array($form['#post']['filters'])) foreach ($form['#post']['filters'] as $filter_name => $filter) {
144 if (isset($filter['status']) and $filter['status']) {
145 if (!isset($enabled_filters[$filter_name]) or !$enabled_filters[$filter_name]) {
146 $enabled_filters[$filter_name] = $filter_name;
147 drupal_set_message(t("The '@filter_name' filter has been enabled.", array('@filter_name' => $filter_name)), "status");
148 }
149 }
150 }
151
152 if (is_array($all_filters)) foreach ($all_filters as $filter_name) {
153 if (!isset($form['#post']['filters'][$filter_name]) and isset($enabled_filters[$filter_name])) {
154 unset($enabled_filters[$filter_name]);
155 drupal_set_message(t("The '@filter_name' filter has been disabled.", array('@filter_name' => $filter_name)), "status");
156 }
157 }
158
159 if ($node) {
160 $node->tribune_settings['enabled_filters'] = $enabled_filters;
161 node_save($node);
162 } else {
163 variable_set('tribune_enabled_filters', $enabled_filters);
164 }
165 }
166
167 function tribune_admin_filters_reparse_form($form, $node) {
168 $form = array();
169
170 $form['tribune_reparse_messages'] = array(
171 '#type' => 'submit',
172 '#value' => t('Parse visible messages again'),
173 '#submit' => array('tribune_parse_last_messages'),
174 );
175
176 return $form;
177 }
178
179 function tribune_filter_settings($node, $filter_name) {
180 global $tribune;
181 $tribune = $node;
182
183 $filters = _tribune_filters_info();
184
185 if (isset($node) and is_array($node->tribune_settings['enabled_filters'])) {
186 $enabled_filters = $node->tribune_settings['enabled_filters'];
187 } else {
188 $enabled_filters = variable_get('tribune_enabled_filters', array('totoz' => "totoz", "url" => "url"));
189 }
190
191 if (isset($enabled_filters[$filter_name]) and isset($filters[$filter_name]['settings'])) {
192 if (!$node) {
193 drupal_set_title(t("Filter settings &mdash; ". $filter_name));
194 $breadcrumb = drupal_get_breadcrumb();
195 $breadcrumb[] = l(t("Filter settings"), "admin/settings/tribune/filters");
196 $breadcrumb[] = l($filter_name, "admin/settings/tribune/filters/". $filter_name);
197 drupal_set_breadcrumb($breadcrumb);
198 }
199
200 $function = $filters[$filter_name]['settings'];
201
202 return drupal_get_form($function, $node);
203 }
204
205 drupal_not_found();
206 }
207

  ViewVC Help
Powered by ViewVC 1.1.2