danielebarchiesi@0
|
1 <?php
|
danielebarchiesi@0
|
2
|
danielebarchiesi@0
|
3
|
danielebarchiesi@0
|
4 /**
|
danielebarchiesi@0
|
5 * @file
|
danielebarchiesi@0
|
6 * Sample ctools context type plugin that shows how to create a context from an arg.
|
danielebarchiesi@0
|
7 *
|
danielebarchiesi@0
|
8 */
|
danielebarchiesi@0
|
9
|
danielebarchiesi@0
|
10 /**
|
danielebarchiesi@0
|
11 * Plugins are described by creating a $plugin array which will be used
|
danielebarchiesi@0
|
12 * by the system that includes this file.
|
danielebarchiesi@0
|
13 */
|
danielebarchiesi@0
|
14 $plugin = array(
|
danielebarchiesi@0
|
15 'title' => t("Simplecontext"),
|
danielebarchiesi@0
|
16 'description' => t('A single "simplecontext" context, or data element.'),
|
danielebarchiesi@0
|
17 'context' => 'ctools_plugin_example_context_create_simplecontext', // func to create context
|
danielebarchiesi@0
|
18 'context name' => 'simplecontext',
|
danielebarchiesi@0
|
19 'settings form' => 'simplecontext_settings_form',
|
danielebarchiesi@0
|
20 'keyword' => 'simplecontext',
|
danielebarchiesi@0
|
21
|
danielebarchiesi@0
|
22 // Provides a list of items which are exposed as keywords.
|
danielebarchiesi@0
|
23 'convert list' => 'simplecontext_convert_list',
|
danielebarchiesi@0
|
24 // Convert keywords into data.
|
danielebarchiesi@0
|
25 'convert' => 'simplecontext_convert',
|
danielebarchiesi@0
|
26
|
danielebarchiesi@0
|
27 'placeholder form' => array(
|
danielebarchiesi@0
|
28 '#type' => 'textfield',
|
danielebarchiesi@0
|
29 '#description' => t('Enter some data to represent this "simplecontext".'),
|
danielebarchiesi@0
|
30 ),
|
danielebarchiesi@0
|
31 );
|
danielebarchiesi@0
|
32
|
danielebarchiesi@0
|
33 /**
|
danielebarchiesi@0
|
34 * Create a context, either from manual configuration or from an argument on the URL.
|
danielebarchiesi@0
|
35 *
|
danielebarchiesi@0
|
36 * @param $empty
|
danielebarchiesi@0
|
37 * If true, just return an empty context.
|
danielebarchiesi@0
|
38 * @param $data
|
danielebarchiesi@0
|
39 * If from settings form, an array as from a form. If from argument, a string.
|
danielebarchiesi@0
|
40 * @param $conf
|
danielebarchiesi@0
|
41 * TRUE if the $data is coming from admin configuration, FALSE if it's from a URL arg.
|
danielebarchiesi@0
|
42 *
|
danielebarchiesi@0
|
43 * @return
|
danielebarchiesi@0
|
44 * a Context object/
|
danielebarchiesi@0
|
45 */
|
danielebarchiesi@0
|
46 function ctools_plugin_example_context_create_simplecontext($empty, $data = NULL, $conf = FALSE) {
|
danielebarchiesi@0
|
47 $context = new ctools_context('simplecontext');
|
danielebarchiesi@0
|
48 $context->plugin = 'simplecontext';
|
danielebarchiesi@0
|
49
|
danielebarchiesi@0
|
50 if ($empty) {
|
danielebarchiesi@0
|
51 return $context;
|
danielebarchiesi@0
|
52 }
|
danielebarchiesi@0
|
53
|
danielebarchiesi@0
|
54 if ($conf) {
|
danielebarchiesi@0
|
55 if (!empty($data)) {
|
danielebarchiesi@0
|
56 $context->data = new stdClass();
|
danielebarchiesi@0
|
57 // For this simple item we'll just create our data by stripping non-alpha and
|
danielebarchiesi@0
|
58 // adding '_from_configuration_item_1' to it.
|
danielebarchiesi@0
|
59 $context->data->item1 = t("Item1");
|
danielebarchiesi@0
|
60 $context->data->item2 = t("Item2");
|
danielebarchiesi@0
|
61 $context->data->description = preg_replace('/[^a-z]/i', '', $data['sample_simplecontext_setting']);
|
danielebarchiesi@0
|
62 $context->data->description .= '_from_configuration_sample_simplecontext_setting';
|
danielebarchiesi@0
|
63 $context->title = t("Simplecontext context from config");
|
danielebarchiesi@0
|
64 return $context;
|
danielebarchiesi@0
|
65 }
|
danielebarchiesi@0
|
66 }
|
danielebarchiesi@0
|
67 else {
|
danielebarchiesi@0
|
68 // $data is coming from an arg - it's just a string.
|
danielebarchiesi@0
|
69 // This is used for keyword.
|
danielebarchiesi@0
|
70 $context->title = $data;
|
danielebarchiesi@0
|
71 $context->argument = $data;
|
danielebarchiesi@0
|
72 // Make up a bogus context
|
danielebarchiesi@0
|
73 $context->data = new stdClass();
|
danielebarchiesi@0
|
74 $context->data->item1 = t("Item1");
|
danielebarchiesi@0
|
75 $context->data->item2 = t("Item2");
|
danielebarchiesi@0
|
76
|
danielebarchiesi@0
|
77 // For this simple item we'll just create our data by stripping non-alpha and
|
danielebarchiesi@0
|
78 // adding '_from_simplecontext_argument' to it.
|
danielebarchiesi@0
|
79 $context->data->description = preg_replace('/[^a-z]/i', '', $data);
|
danielebarchiesi@0
|
80 $context->data->description .= '_from_simplecontext_argument';
|
danielebarchiesi@0
|
81 $context->arg_length = strlen($context->argument);
|
danielebarchiesi@0
|
82 return $context;
|
danielebarchiesi@0
|
83 }
|
danielebarchiesi@0
|
84 }
|
danielebarchiesi@0
|
85
|
danielebarchiesi@0
|
86 function simplecontext_settings_form($conf, $external = FALSE) {
|
danielebarchiesi@0
|
87 if (empty($conf)) {
|
danielebarchiesi@0
|
88 $conf = array(
|
danielebarchiesi@0
|
89 'sample_simplecontext_setting' => 'default simplecontext setting',
|
danielebarchiesi@0
|
90 );
|
danielebarchiesi@0
|
91 }
|
danielebarchiesi@0
|
92 $form = array();
|
danielebarchiesi@0
|
93 $form['sample_simplecontext_setting'] = array(
|
danielebarchiesi@0
|
94 '#type' => 'textfield',
|
danielebarchiesi@0
|
95 '#title' => t('Setting for simplecontext'),
|
danielebarchiesi@0
|
96 '#size' => 50,
|
danielebarchiesi@0
|
97 '#description' => t('An example setting that could be used to configure a context'),
|
danielebarchiesi@0
|
98 '#default_value' => $conf['sample_simplecontext_setting'],
|
danielebarchiesi@0
|
99 '#prefix' => '<div class="clear-block no-float">',
|
danielebarchiesi@0
|
100 '#suffix' => '</div>',
|
danielebarchiesi@0
|
101 );
|
danielebarchiesi@0
|
102 return $form;
|
danielebarchiesi@0
|
103 }
|
danielebarchiesi@0
|
104
|
danielebarchiesi@0
|
105
|
danielebarchiesi@0
|
106
|
danielebarchiesi@0
|
107 /**
|
danielebarchiesi@0
|
108 * Provide a list of sub-keywords.
|
danielebarchiesi@0
|
109 *
|
danielebarchiesi@0
|
110 * This is used to provide keywords from the context for use in a content type,
|
danielebarchiesi@0
|
111 * pane, etc.
|
danielebarchiesi@0
|
112 */
|
danielebarchiesi@0
|
113 function simplecontext_convert_list() {
|
danielebarchiesi@0
|
114 return array(
|
danielebarchiesi@0
|
115 'item1' => t('Item1'),
|
danielebarchiesi@0
|
116 'item2' => t('Item2'),
|
danielebarchiesi@0
|
117 'description' => t('Description'),
|
danielebarchiesi@0
|
118 );
|
danielebarchiesi@0
|
119 }
|
danielebarchiesi@0
|
120
|
danielebarchiesi@0
|
121 /**
|
danielebarchiesi@0
|
122 * Convert a context into a string to be used as a keyword by content types, etc.
|
danielebarchiesi@0
|
123 */
|
danielebarchiesi@0
|
124 function simplecontext_convert($context, $type) {
|
danielebarchiesi@0
|
125 switch ($type) {
|
danielebarchiesi@0
|
126 case 'item1':
|
danielebarchiesi@0
|
127 return $context->data->item1;
|
danielebarchiesi@0
|
128 case 'item2':
|
danielebarchiesi@0
|
129 return $context->data->item2;
|
danielebarchiesi@0
|
130 case 'description':
|
danielebarchiesi@0
|
131 return $context->data->description;
|
danielebarchiesi@0
|
132 }
|
danielebarchiesi@0
|
133 }
|
danielebarchiesi@0
|
134
|