/[drupal]/contributions/modules/google_keyhaviour/google_keyhaviour.admin.inc
ViewVC logotype

Diff of /contributions/modules/google_keyhaviour/google_keyhaviour.admin.inc

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

revision 1.1, Fri Apr 10 04:28:03 2009 UTC revision 1.1.2.1, Fri Apr 10 04:28:03 2009 UTC
# Line 0  Line 1 
1    <?php
2    // $Id$
3    
4    /**
5     * @file
6     * The google_keyhaviour admin screens.
7     */
8    
9    
10    /**
11     * Admin google_keyhaviour list page.
12     */
13    function google_keyhaviour_admin_list() {
14      $output = '';
15      $google_keyhaviours = google_keyhaviour_load_multiple();
16      if (!$google_keyhaviours) {
17        $output .= t('There are currently no google keyhaviour rules configured.');
18      }
19      else {
20        $output .= drupal_get_form('google_keyhaviour_admin_list_form', $google_keyhaviours);
21      }
22      $output .= drupal_get_form('google_keyhaviour_admin_add_form');
23      return $output;
24    }
25    
26    /**
27     * Admin google_keyhaviour list form.
28     */
29    function google_keyhaviour_admin_list_form($form_state, $google_keyhaviours) {
30      $form = array();
31      $form['#tree'] = TRUE;
32      $form['rules'] = array(
33        '#title' => t('Google keyhaviour rules'),
34        '#heading' => t('Rule'),
35        '#weight' => 200,
36        '#theme' => 'google_keyhaviour_admin_edit_table',
37        '#description' => t('These actions let you manipulate template variables'),
38      );
39      foreach ((array)$google_keyhaviours as $google_keyhaviour) {
40        $rule_output = "<div class='google_keyhaviour-rule'>";
41        $rule_output .= check_plain($google_keyhaviour->settings['title']);
42        $rule_output .= "</div>";
43        $form['rules'][$google_keyhaviour->google_keyhaviour_id]['value']['#value'] = $rule_output;
44        $form['rules'][$google_keyhaviour->google_keyhaviour_id]['ops']['#value'] =
45          l('Edit', 'admin/build/google_keyhaviour/'. $google_keyhaviour->google_keyhaviour_id .'/edit')
46                . t(" | ") . l('Delete', 'admin/build/google_keyhaviour/'. $google_keyhaviour->google_keyhaviour_id .'/delete');
47        $form['rules'][$google_keyhaviour->google_keyhaviour_id]['weight'] = array(
48          '#type' => 'weight',
49          '#delta' => count($google_keyhaviours),
50          '#default_value' => $google_keyhaviour->weight,
51        );
52      }
53      $form['submit'] = array(
54        '#type' => 'submit',
55        '#value' => t('Save google keyhaviour rules order'),
56        '#weight' => 10010,
57      );
58      return $form;
59    }
60    
61    /**
62     * Submit function for admin google_keyhaviour list form.
63     */
64    function google_keyhaviour_admin_list_form_submit($form, &$form_state) {
65      $values = &$form_state['values'];
66      dsm($values);
67      if (is_array($values['rules'])) {
68        foreach ($values['rules'] as $google_keyhaviour_id => $value) {
69          $google_keyhaviour = (object)array(
70            'google_keyhaviour_id' => $google_keyhaviour_id,
71            'weight' => $value['weight'],
72          );
73          $google_keyhaviour = google_keyhaviour_save($google_keyhaviour);
74        }
75      }
76    }
77    
78    /**
79     * Admin google_keyhaviour add form.
80     */
81    function google_keyhaviour_admin_add_form($form_state) {
82      $form = array();
83      $form['submit'] = array(
84        '#type' => 'submit',
85        '#value' => t('Add google keyhaviour rule'),
86        '#weight' => 22,
87      );
88      return $form;
89    }
90    
91    /**
92     * Submit function for admin google_keyhaviour add form.
93     */
94    function google_keyhaviour_admin_add_form_submit($form, &$form_state) {
95      $values = &$form_state['values'];
96      $google_keyhaviour = (object)array('settings' => array());
97      $google_keyhaviour = google_keyhaviour_save($google_keyhaviour);
98      $google_keyhaviour->settings = array(
99        'title' => t('Rule !id', array('!id' => $google_keyhaviour->google_keyhaviour_id)),
100      );
101      $google_keyhaviour = google_keyhaviour_save($google_keyhaviour);
102      drupal_set_message('A google keyhaviour rule was added.  Configure the google keyhaviour rule below.');
103      drupal_goto('admin/build/google_keyhaviour/'. $google_keyhaviour->google_keyhaviour_id .'/edit');
104    }
105    
106    /**
107     * Admin google_keyhaviour edit page.
108     */
109    function google_keyhaviour_admin_edit($form_state, $google_keyhaviour) {
110      global $custom_theme;
111    
112      // If non-default theme configuration has been selected, set the custom theme.
113      $custom_theme = isset($theme) ? $theme : variable_get('theme_default', 'garland');
114    
115      // Fetch and sort blocks
116      module_load_include('inc', 'block', 'block.admin');
117      $blocks = _block_rehash();
118      usort($blocks, '_block_compare');
119    
120    
121      $form_state['storage']['google_keyhaviour'] = $google_keyhaviour;
122      $settings = &$google_keyhaviour->settings;
123    
124      // build the form
125      $form = array();
126      $form['#tree'] = TRUE;
127      $form['google_keyhaviour_id'] = array(
128        '#type' => 'value',
129        '#value' => $google_keyhaviour->google_keyhaviour_id ? $google_keyhaviour->google_keyhaviour_id : 'add',
130        '#weight' => 0,
131      );
132      $form['settings'] = array(
133        '#weight' => 60,
134      );
135    
136      $form['settings']['title'] = array(
137        '#type' => 'textfield',
138        '#title' => t('Title'),
139        '#default_value' => $settings['title'],
140        '#size' => 40,
141        '#maxlength' => 255,
142        '#required' => TRUE,
143        '#weight' => 20,
144      );
145    
146    
147      $form['settings']['conditions'] = array(
148        '#weight' => 60,
149        '#title' => t('Conditions'),
150        '#type' => 'fieldset',
151        '#description' => t('Save this page to add more conditions.'),
152      );
153    
154      $form['settings']['conditions']['operator'] = array(
155        '#type' => 'radios',
156        '#title' => t('Conditions operator'),
157        '#default_value' => $settings['conditions']['operator'] ? $settings['conditions']['operator'] : '&&',
158        '#options' => array(
159          '&&' => t('<b>and</b> - all conditions must be met'),
160          '||' => t('<b>or</b> - any condition can be met'),
161        ),
162        '#weight' => 0,
163      );
164      unset($settings['conditions']['operator']);
165    
166      $settings['conditions'][] = array(
167        'match' => '',
168        'phrase' => '',
169      );
170    
171      foreach ($settings['conditions'] as $key => $condition) {
172        $form['settings']['conditions'][$key] = array(
173          '#type' => 'fieldset',
174        );
175        $form['settings']['conditions'][$key]['match'] = array(
176          '#type' => 'select',
177          '#prefix' => '<span class="prefix">'. t('The google keywords') .'</span>',
178          '#default_value' => $condition['match'],
179          '#options' => array(
180            '' => '',
181            'contain' => t('contain the following phrase:'),
182            'do not contain' => t('do not contain the following phrase:'),
183            'are exactly' => t('are exactly the following phrase:'),
184            'exist' => t('exist (no need to add a phrase)'),
185          ),
186        );
187        $form['settings']['conditions'][$key]['phrase'] = array(
188          '#type' => 'textfield',
189          '#default_value' => $condition['phrase'],
190        );
191      }
192    
193      $form['settings']['blocks'] = array(
194        '#weight' => 70,
195        '#title' => t('Block visibility'),
196        '#type' => 'fieldset',
197        '#collapsible' => TRUE,
198        '#collapsed' => $block_collapse,
199      );
200    
201      $form['settings']['blocks']['visibility'] = array(
202        '#type' => 'radios',
203        '#weight' => 0,
204        '#default_value' => $settings['blocks']['visibility'] ? $settings['blocks']['visibility'] : 'show',
205        '#options' => array (
206          'show' => t('Show all blocks'),
207          'hide' => t('Hide all blocks'),
208        ),
209      );
210    
211      $block_options = array();
212      foreach ($blocks as $i => $block) {
213        if ($block['region'] != -1) { // hide disabled blocks
214          $block_options[$block['bid']] = $block['info'] .' ('. google_keyhaviour_to_display($block['region']) .')';
215        }
216      }
217    
218      $form['settings']['blocks']['exceptions'] = array(
219        '#type' => 'checkboxes',
220        '#title' => t('Except for these'),
221        '#weight' => 2,
222        '#default_value' => $settings['blocks']['exceptions'] ? $settings['blocks']['exceptions'] : array(),
223        '#options' => $block_options,
224      );
225    
226      if (!empty($google_keyhaviour->actions)) {
227        $form['actions'] = array(
228          '#title' => t('Actions'),
229          '#heading' => t('Action'),
230          '#weight' => 200,
231          '#theme' => 'google_keyhaviour_admin_edit_table',
232          '#description' => t('These actions let you manipulate template variables'),
233        );
234        foreach ($google_keyhaviour->actions as $key => $value) {
235          $action_output = "<div class='google_keyhaviour-action'>";
236          $action_output .= "<span class='google_keyhaviour-action-verb'>". google_keyhaviour_to_display($value->settings['verb']) ."</span><span class='space'> </span>";
237          $action_output .= "<span class='google_keyhaviour-action-var'>". google_keyhaviour_admin_list_variables($value->settings['var']) ."</span>";
238          $action_output .= "<span class='google_keyhaviour-action-with'><span class='with-prefix'> with </span>". $value->settings['with'] ."</span>";
239          $action_output .= "</div>";
240          $form['actions'][$value->google_keyhaviour_action_id]['value']['#value'] = $action_output;
241          $form['actions'][$value->google_keyhaviour_action_id]['ops']['#value'] =
242            l('Edit', 'admin/build/google_keyhaviour/'. $google_keyhaviour->google_keyhaviour_id .'/edit/'. $value->google_keyhaviour_action_id .'/edit')
243              . t(" | ") . l('Delete', 'admin/build/google_keyhaviour/'. $google_keyhaviour->google_keyhaviour_id .'/edit/'. $value->google_keyhaviour_action_id .'/delete');
244          $form['actions'][$value->google_keyhaviour_action_id]['weight'] = array(
245            '#type' => 'weight',
246            '#delta' => count($google_keyhaviour->actions),
247            '#default_value' => $key,
248          );
249        }
250      }
251      else {
252        $form['no_actions'] = array(
253          '#value' => t('
254            <div id="edit-no-actions-wrapper" class="form-item">
255            <label for="edit-path">Actions:</label>
256            There are currently no actions configured for this google keyhaviour rule.
257            </div>
258          '),
259          '#weight' => 100,
260        );
261      }
262    
263      $form['addaction'] = array(
264        '#type' => 'submit',
265        '#value' => t('Add google keyhaviour action'),
266        '#weight' => 10001,
267        '#prefix' => '<div>',
268        '#suffix' => '</div>',
269      );
270    
271      $form['submit'] = array(
272        '#type' => 'submit',
273        '#value' => t('Save google keyhaviour rule'),
274        '#weight' => 10010,
275      );
276      $form['delete'] = array(
277        '#type' => 'submit',
278        '#value' => t('Delete google keyhaviour rule'),
279        '#weight' => 10020,
280      );
281      return $form;
282    }
283    
284    /**
285     * Submit function for admin google_keyhaviour add/edit page.
286     */
287    function google_keyhaviour_admin_edit_submit($form, &$form_state) {
288      $values = &$form_state['values'];
289      if ($form_state['clicked_button']['#id'] == 'edit-delete') {
290        drupal_goto('admin/build/google_keyhaviour/'. $values['google_keyhaviour_id'] .'/delete');
291      }
292      else {
293        // remove blank conditions
294        foreach ($values['settings']['conditions'] as $key => $value) {
295          if (is_numeric($key)) {
296            if ($value['match'] != 'exist' && !$value['phrase']) {
297              unset($values['settings']['conditions'][$key]);
298            }
299          }
300        }
301        $google_keyhaviour = (object)array(
302          'google_keyhaviour_id' => $values['google_keyhaviour_id'],
303          'settings' => $values['settings'],
304        );
305        $google_keyhaviour = google_keyhaviour_save($google_keyhaviour);
306        if (is_array($values['action'])) {
307          foreach ($values['action'] as $google_keyhaviour_action_id => $value) {
308            $google_keyhaviour_action = (object)array(
309              'google_keyhaviour_action_id' => $google_keyhaviour_action_id,
310              'weight' => $value['weight'],
311            );
312            $google_keyhaviour_action = google_keyhaviour_action_save($google_keyhaviour_action);
313          }
314        }
315        drupal_set_message('The google keyhaviour rule was saved.');
316    
317        if ($form_state['clicked_button']['#id'] == 'edit-addaction') {
318          $google_keyhaviour_action = (object)array(
319            'google_keyhaviour_id' => $values['google_keyhaviour_id'],
320          );
321          $google_keyhaviour_action = google_keyhaviour_action_save($google_keyhaviour_action);
322          $google_keyhaviour_action->title = t('Google keyhaviour action !1', array('!1' => $google_keyhaviour_action->google_keyhaviour_action_id));
323          $google_keyhaviour_action = google_keyhaviour_action_save($google_keyhaviour_action);
324          drupal_set_message('A google keyhaviour action was added.  Configure the action below.');
325          drupal_goto('admin/build/google_keyhaviour/'. $values['google_keyhaviour_id'] .'/edit/'. $google_keyhaviour_action->google_keyhaviour_action_id .'/edit/');
326        }
327        else {
328          drupal_goto('admin/build/google_keyhaviour/'. $values['google_keyhaviour_id'] .'/edit/');
329        }
330      }
331    }
332    
333    /**
334     * Admin google_keyhaviour delete page.
335     */
336    function google_keyhaviour_admin_delete($form_state, $google_keyhaviour) {
337      $form_state['storage']['google_keyhaviour'] = $google_keyhaviour;
338      // build the form
339      $form = array();
340      $form['#tree'] = TRUE;
341      $form['google_keyhaviour_id'] = array(
342        '#type' => 'value',
343        '#value' => $google_keyhaviour->google_keyhaviour_id,
344      );
345      return confirm_form($form,
346        t('Are you sure you want to delete the %gkt google keyhaviour?', array('%gkt' => $google_keyhaviour->settings['title'])),
347        $_GET['destination'] ? $_GET['destination'] : 'admin/build/google_keyhaviour',
348        t('This action cannot be undone.'),
349        t('Delete'), t('Cancel'));
350    }
351    
352    /**
353     * Submit function for admin google_keyhaviour delete page.
354     */
355    function google_keyhaviour_admin_delete_submit($form, &$form_state) {
356      $google_keyhaviour_id = &$form_state['values']['google_keyhaviour_id'];
357      google_keyhaviour_delete($google_keyhaviour_id);
358      menu_rebuild();
359      drupal_goto('admin/build/google_keyhaviour');
360    }
361    
362    /**
363     * Admin google_keyhaviour action add/edit page.
364     * Must have a google_keyhaviour object at this point.
365     */
366    function google_keyhaviour_admin_action_edit($form_state, $google_keyhaviour, $google_keyhaviour_action_id) {
367      $action = google_keyhaviour_admin_get_action_defaults($google_keyhaviour, $google_keyhaviour_action_id);
368      $form_state['storage']['google_keyhaviour'] = $google_keyhaviour;
369      $form_state['storage']['google_keyhaviour_action_id'] = $google_keyhaviour_action_id;
370      $form_state['storage']['google_keyhaviour_action_defaults'] = $action;
371      $settings = &$action->settings;
372    
373      $form = array();
374    
375      $form['#tree'] = TRUE;
376    
377      $form['google_keyhaviour_id'] = array(
378        '#type' => 'value',
379        '#value' => $google_keyhaviour->google_keyhaviour_id,
380        '#weight' => 0,
381      );
382    
383      $form['google_keyhaviour_action_id'] = array(
384        '#type' => 'value',
385        '#value' => $google_keyhaviour_action_id,
386        '#weight' => 2,
387      );
388    
389      $form['settings'] = array(
390        '#weight' => 30,
391      );
392    
393      $form['settings']['verb'] = array(
394        '#type' => 'select',
395        '#default_value' => $settings['verb'],
396        '#options' => array(
397          '' => '',
398          'append' => t('Append'),
399          'prepend' => t('Prepend'),
400          'replace' => t('Replace'),
401        ),
402        '#weight' => '4',
403        '#required' => TRUE,
404      );
405    
406      $form['settings']['var'] = array(
407        '#type' => 'select',
408        '#default_value' => $settings['var'],
409        '#options' => array('' => '') + google_keyhaviour_admin_list_variables(),
410        '#weight' => '6',
411        '#required' => TRUE,
412      );
413    
414      $form['settings']['with'] = array(
415        '#type' => 'textarea',
416        '#title' => t('with'),
417        '#default_value' => $settings['with'],
418        '#required' => FALSE,
419        '#rows' => 12,
420        '#weight' => '8',
421        '#description' => t('Use <i>&lt;keywords&gt;</i> to display the user\'s Google Keywords.'),
422      );
423    
424      $form['submit'] = array(
425        '#type' => 'submit',
426        '#value' => t('Save google keyhaviour action'),
427        '#weight' => 10000,
428      );
429    
430      $form['delete'] = array(
431        '#type' => 'submit',
432        '#value' => t('Delete google keyhaviour action'),
433        '#weight' => 10020,
434      );
435    
436      return $form;
437    }
438    
439    /**
440     * Submit function for admin google_keyhaviour add/edit page.
441     */
442    function google_keyhaviour_admin_action_edit_submit($form, &$form_state) {
443      $values = &$form_state['values'];
444      if ($form_state['clicked_button']['#id'] == 'edit-delete') {
445        drupal_goto('admin/build/google_keyhaviour/'. $values['google_keyhaviour_id'] .'/edit/'. $values['google_keyhaviour_action_id'] .'/delete');
446      }
447      else {
448        $google_keyhaviour_action = (object)array(
449          'google_keyhaviour_action_id' => $values['google_keyhaviour_action_id'],
450          'google_keyhaviour_id' => $values['google_keyhaviour_id'],
451          'settings' => $values['settings'],
452        );
453        $google_keyhaviour_action = google_keyhaviour_action_save($google_keyhaviour_action);
454    
455        drupal_set_message('The google keyhaviour action was saved.');
456        drupal_goto('admin/build/google_keyhaviour/'. $values['google_keyhaviour_id'] .'/edit');
457      }
458    }
459    
460    /**
461     * Admin google_keyhaviour delete page
462     */
463    function google_keyhaviour_admin_action_delete($form_state, $google_keyhaviour, $google_keyhaviour_action_id) {
464      $action = google_keyhaviour_admin_get_action_defaults($google_keyhaviour, $google_keyhaviour_action_id);
465    
466      $form = array();
467      $form['#tree'] = TRUE;
468      $form['google_keyhaviour_action_id'] = array(
469        '#type' => 'value',
470        '#value' => $google_keyhaviour_action_id,
471      );
472      $form['google_keyhaviour_id'] = array(
473        '#type' => 'value',
474        '#value' => $google_keyhaviour->google_keyhaviour_id,
475      );
476      return confirm_form($form,
477        t('Are you sure you want to delete the google keyhaviour action?'),
478        $_GET['destination'] ? $_GET['destination'] : 'admin/build/google_keyhaviour/'. $google_keyhaviour->google_keyhaviour_id .'/edit',
479        t('This action cannot be undone.'),
480        t('Delete'), t('Cancel'));
481    }
482    
483    /**
484     * Submit function for admin google_keyhaviour delete page.
485     */
486    function google_keyhaviour_admin_action_delete_submit($form, &$form_state) {
487      $google_keyhaviour_action_id = &$form_state['values']['google_keyhaviour_action_id'];
488      $google_keyhaviour_id = &$form_state['values']['google_keyhaviour_id'];
489      google_keyhaviour_action_delete($google_keyhaviour_action_id);
490      drupal_goto('admin/build/google_keyhaviour/'. $google_keyhaviour_id .'/edit');
491    }
492    
493    /**
494     * Default settings for an action.
495     */
496    function google_keyhaviour_admin_get_action_defaults($google_keyhaviour, $google_keyhaviour_action_id) {
497      // because we are not keying by $google_keyhaviour_action_id, we have to find the correct action like this.
498      $key = $google_keyhaviour->actions_index[$google_keyhaviour_action_id];
499      return $google_keyhaviour->actions[$key];
500    }
501    
502    /**
503     * Get a list of variables for admin selection.
504     */
505    function google_keyhaviour_admin_list_variables($variable = NULL) {
506      static $list = array();
507      if (empty($list)) {
508        $variables = array(
509          'base_path',
510          'body_classes',
511          'breadcrumb',
512          'closure',
513          'content',
514          'db_is_active',
515          'directory',
516          'feed_icons',
517          'footer',
518          'footer_message',
519          'front_page',
520          'head',
521          'head_title',
522          'header',
523          'help',
524          'id',
525          'is_admin',
526          'is_front',
527          'layout',
528          'left',
529          'logged_in',
530          'logo',
531          'messages',
532          'mission',
533          'right',
534          'scripts',
535          'search_box',
536          'show_blocks',
537          'show_messages',
538          'site_name',
539          'site_slogan',
540          'styles',
541          'tabs',
542          'title',
543          'zebra',
544        );
545        foreach ($variables as $var) {
546          $list[$var] = '$'. $var;
547        }
548      }
549      if ($variable) {
550        return $list[$variable];
551      }
552      return $list;
553      /*
554      To do;
555      shall we handle these objects and arrays?
556        * template_files
557        * user
558        * language
559        * primary_links
560        * secondary_links
561        * css
562      */
563    }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.1.2.1

  ViewVC Help
Powered by ViewVC 1.1.2