/[drupal]/contributions/modules/freelinking/freelinking_casetracker/freelinking_casetracker.module
ViewVC logotype

Diff of /contributions/modules/freelinking/freelinking_casetracker/freelinking_casetracker.module

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

revision 1.1 by grayside, Tue Nov 24 08:10:34 2009 UTC revision 1.1.2.1 by grayside, Tue Nov 24 08:10:34 2009 UTC
# Line 0  Line 1 
1    <?php
2    // $Id$
3    /**
4     * Freelinking for Casetracker
5     *
6     * @file
7     * Provides a Freelinking support for Casetracker issues.
8     * Provides Drupal issue-tracker style link text and issue fields
9     * Also provides CSS classes for styling the link based on issue information
10     *
11     * [[case:<nid>]] => #<nid>: <title>
12     */
13    
14    /**
15     * Implementation of hook_freelinking().
16     */
17    function freelinking_casetracker_freelinking() {
18      $freelinking = array();
19      $freelinking['casetracker'] = array(
20        'indicator' => '/case(tracker)??/',
21        'callback' => 'freelinking_casetracker_callback',
22        'settings' => 'freelinking_casetracker_settings',
23        'tip' => t('Create a styled link by case number.'),
24      );
25      return $freelinking;
26    }
27    
28    /**
29     * Callback for freelinking_casetracker_freelinking()
30     */
31    function freelinking_casetracker_callback($target) { // resolve $target into a link to the node or display failure
32      if ($target['dest'][0] == '#') {
33        $target['dest'] = drupal_substr($target['dest'], 1);
34      }
35    
36      if (!is_numeric($target['dest'])) {
37        return array('error' => t('Invalid Case Identifier'));
38      }
39    
40      $sql = 'SELECT casetracker_case.case_status_id AS status, casetracker_case.case_priority_id AS priority, '
41        . 'casetracker_case.case_type_id AS type, node.title AS title, casetracker_case.pid AS pid FROM node node '
42        . 'LEFT JOIN casetracker_case casetracker_case ON node.vid = casetracker_case.vid WHERE node.nid = "%s" AND node.type = "%s"';
43      $result = db_query($sql, $target['dest'], 'casetracker_basic_case');
44    
45      // get the relevant case data
46      $node = db_fetch_object($result);
47      if (!$node) {
48        return array('error' =>
49          t('Invalid Case #!nid', array('!nid' => $target['dest'])));
50      }
51    
52      $status = drupal_strtolower(str_replace(' ', '-', casetracker_case_state_load($node->status, 'status')));
53      $type = drupal_strtolower(str_replace(' ', '-', casetracker_case_state_load($node->type, 'type')));
54      $priority = drupal_strtolower(str_replace(' ', '-', casetracker_case_state_load($node->priority, 'priority')));
55    
56      if ($target['text']) {
57        $title = $target['text'];
58      }
59      else {
60        $title = '#' . $target['dest'] . ' ' . $node->title;
61      }
62      $tooltip = '#' . $target['dest']
63        . ": Status ($status) - Type ($type) - Priority ($priority)";
64      if ($target['tooltip']) {
65        $tooltip .= '. ' . $target['tooltip'];
66      }
67    
68      // build out the link, 'extra' contains a reference to the project nid
69      $retn =  array($title, 'node/' . $target['dest'], array(
70        'attributes' => array(
71          'class' => 'casetracker-project-' . $node->pid . ' casetracker-status-'
72            . $status . ' casetracker-type-' . $type . ' casetracker-priority-' . $priority,
73          'title' => $tooltip,
74        ),
75        'extra' => array(
76          'pid' => $node->pid,
77          'status' => $status,
78          'type' => $type,
79          'priority' => $priority,
80        ),
81      ));
82    
83      return $retn;
84    }
85    
86    /**
87     * Plugin settings callback
88     */
89    function freelinking_casetracker_settings() {
90      $form['casetracker']['freelinking_casetracker_theme_override'] = array(
91        '#type' => 'checkbox',
92        '#title' => t('Ignore Casetracker Link Theming'),
93        '#default_value' => variable_get('freelinking_casetracker_theme_override', FALSE),
94        '#description' => t('Do not use the styling provided by Freelinking for your Casetracker links.'),
95      );
96      return $form;
97    }
98    
99    /**
100     * Implementation of hook_init().
101     */
102    function freelinking_casetracker_init() {
103      if (!variable_get('freelinking_casetracker_theme_override', FALSE)) {
104        drupal_add_css(drupal_get_path('module', 'freelinking_casetracker')
105          . '/freelinking_casetracker.style.css');
106      }
107    }
108    
109    /**
110     * Implementation of hook_freelink_alter().
111    
112    function freelinking_casetracker_freelink_alter($link, $target, $plugin_name, $plugin) {
113      switch($plugin_name) {
114        case 'nodetitle': case 'create node':
115          $link[1] = str_replace('casetracker_basic_case', 'casetracker-basic-case', $link[1]);
116          $link[1] = str_replace('casetracker_basic_project', 'casetracker-basic-project', $link[1]);
117          break;
118      }
119    }
120    
121    
122    function freelinking_casetracker_form_casetracker_basic_case_node_form_alter(&$form, &$form_state) {
123      dpm($form);
124    }
125     */
126    // vim:tw=300 nowrap syn=php
127    

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

  ViewVC Help
Powered by ViewVC 1.1.3