Project

General

Profile

Paste
Download (3.46 KB) Statistics
| Branch: | Revision:

root / drupal7 / sites / all / modules / ctools / ctools_plugin_example / ctools_plugin_example.module @ 6e3ce7c2

1
<?php
2

    
3
/**
4
 * @file
5
 * Working sample module to demonstrate CTools 3 plugins.
6
 *
7
 * This sample module is only intended to demonstrate how external modules can
8
 * provide ctools plugins. There is no useful functionality, and it's only
9
 * intended for developers or for educational use.
10
 *
11
 * As far as possible, everything is kept very simple, not exercising all of
12
 * the capabilities of CTools or Panels.
13
 *
14
 * Although the ctools documentation suggests that strict naming conventions
15
 * be followed, this code attempts to follow only the conventions which are
16
 * required (the hooks), in order to demonstrate the difference. You can
17
 * certainly use the conventions, but it's important to know the difference
18
 * between a convention and a requirement.
19
 *
20
 * The advanced_help module is required, because both CTools and this module
21
 * provide help that way.
22
 *
23
 * There is a demonstration panel provided at /ctools_plugin_example/123
24
 */
25

    
26
/**
27
 * Implements hook_menu.
28
 */
29
function ctools_plugin_example_menu() {
30
  $items = array();
31

    
32
  $items["admin/settings/ctools_plugin_example"] = array(
33
    'title' => 'CTools plugin example',
34
    'description' => t("Demonstration code, advanced help, and a demo panel to show how to build ctools plugins."),
35
    'page callback' => 'ctools_plugin_example_explanation_page',
36
    'access arguments' => array('administer site configuration'),
37
    'type' => MENU_NORMAL_ITEM,
38
  );
39

    
40
  return $items;
41
}
42

    
43
/**
44
 * Implements hook_ctools_plugin_directory().
45
 *
46
 * It simply tells panels where to find the .inc files that define various
47
 * args, contexts, content_types. In this case the subdirectories of
48
 * ctools_plugin_example/panels are used.
49
 */
50
function ctools_plugin_example_ctools_plugin_directory($module, $plugin) {
51
  if ($module == 'ctools' && !empty($plugin)) {
52
    return "plugins/$plugin";
53
  }
54
}
55

    
56
/**
57
 * Implement hook_ctools_plugin_api().
58
 *
59
 * If you do this, CTools will pick up default panels pages in
60
 * <modulename>.pages_default.inc.
61
 */
62
function ctools_plugin_example_ctools_plugin_api($module, $api) {
63
  // @todo -- this example should explain how to put it in a different file.
64
  if ($module == 'panels_mini' && $api == 'panels_default') {
65
    return array('version' => 1);
66
  }
67
  if ($module == 'page_manager' && $api == 'pages_default') {
68
    return array('version' => 1);
69
  }
70
}
71

    
72
/**
73
 * Just provide an explanation page for the admin section.
74
 *
75
 * @return unknown_type
76
 */
77
function ctools_plugin_example_explanation_page() {
78
  $content = '<p>' . t("The CTools Plugin Example is simply a developer's demo of how to create plugins for CTools. It provides no useful functionality for an ordinary user.") . '</p>';
79

    
80
  $content .= '<p>' . t(
81
    'There is a demo panel demonstrating much of the functionality provided at
82
    <a href="@demo_url">CTools demo panel</a>, and you can find documentation on the examples at
83
    !ctools_plugin_example_help.
84
    CTools itself provides documentation at !ctools_help. Mostly, though, the code itself is intended to be the teacher.
85
    You can find it in %path.',
86
    array(
87
      '@demo_url' => url('ctools_plugin_example/xxxxx'),
88
      '!ctools_plugin_example_help' => theme('advanced_help_topic', array('module' => 'ctools_plugin_example', 'topic' => 'Chaos-Tools--CTools--Plugin-Examples', 'type' => 'title')),
89
      '!ctools_help' => theme('advanced_help_topic', array('module' => 'ctools', 'topic' => 'plugins', 'type' => 'title')),
90
      '%path' => drupal_get_path('module', 'ctools_plugin_example'),
91
    )) . '</p>';
92

    
93
  return $content;
94
}