diff options
Diffstat (limited to 'sites/all/modules/ctools/ctools_plugin_example/plugins/contexts/simplecontext.inc')
-rw-r--r-- | sites/all/modules/ctools/ctools_plugin_example/plugins/contexts/simplecontext.inc | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/sites/all/modules/ctools/ctools_plugin_example/plugins/contexts/simplecontext.inc b/sites/all/modules/ctools/ctools_plugin_example/plugins/contexts/simplecontext.inc new file mode 100644 index 000000000..e19a84229 --- /dev/null +++ b/sites/all/modules/ctools/ctools_plugin_example/plugins/contexts/simplecontext.inc @@ -0,0 +1,134 @@ +<?php + + +/** + * @file + * Sample ctools context type plugin that shows how to create a context from an arg. + * + */ + +/** + * Plugins are described by creating a $plugin array which will be used + * by the system that includes this file. + */ +$plugin = array( + 'title' => t("Simplecontext"), + 'description' => t('A single "simplecontext" context, or data element.'), + 'context' => 'ctools_plugin_example_context_create_simplecontext', // func to create context + 'context name' => 'simplecontext', + 'settings form' => 'simplecontext_settings_form', + 'keyword' => 'simplecontext', + + // Provides a list of items which are exposed as keywords. + 'convert list' => 'simplecontext_convert_list', + // Convert keywords into data. + 'convert' => 'simplecontext_convert', + + 'placeholder form' => array( + '#type' => 'textfield', + '#description' => t('Enter some data to represent this "simplecontext".'), + ), +); + +/** + * Create a context, either from manual configuration or from an argument on the URL. + * + * @param $empty + * If true, just return an empty context. + * @param $data + * If from settings form, an array as from a form. If from argument, a string. + * @param $conf + * TRUE if the $data is coming from admin configuration, FALSE if it's from a URL arg. + * + * @return + * a Context object/ + */ +function ctools_plugin_example_context_create_simplecontext($empty, $data = NULL, $conf = FALSE) { + $context = new ctools_context('simplecontext'); + $context->plugin = 'simplecontext'; + + if ($empty) { + return $context; + } + + if ($conf) { + if (!empty($data)) { + $context->data = new stdClass(); + // For this simple item we'll just create our data by stripping non-alpha and + // adding '_from_configuration_item_1' to it. + $context->data->item1 = t("Item1"); + $context->data->item2 = t("Item2"); + $context->data->description = preg_replace('/[^a-z]/i', '', $data['sample_simplecontext_setting']); + $context->data->description .= '_from_configuration_sample_simplecontext_setting'; + $context->title = t("Simplecontext context from config"); + return $context; + } + } + else { + // $data is coming from an arg - it's just a string. + // This is used for keyword. + $context->title = $data; + $context->argument = $data; + // Make up a bogus context + $context->data = new stdClass(); + $context->data->item1 = t("Item1"); + $context->data->item2 = t("Item2"); + + // For this simple item we'll just create our data by stripping non-alpha and + // adding '_from_simplecontext_argument' to it. + $context->data->description = preg_replace('/[^a-z]/i', '', $data); + $context->data->description .= '_from_simplecontext_argument'; + $context->arg_length = strlen($context->argument); + return $context; + } +} + +function simplecontext_settings_form($conf, $external = FALSE) { + if (empty($conf)) { + $conf = array( + 'sample_simplecontext_setting' => 'default simplecontext setting', + ); + } + $form = array(); + $form['sample_simplecontext_setting'] = array( + '#type' => 'textfield', + '#title' => t('Setting for simplecontext'), + '#size' => 50, + '#description' => t('An example setting that could be used to configure a context'), + '#default_value' => $conf['sample_simplecontext_setting'], + '#prefix' => '<div class="clear-block no-float">', + '#suffix' => '</div>', + ); + return $form; +} + + + +/** + * Provide a list of sub-keywords. + * + * This is used to provide keywords from the context for use in a content type, + * pane, etc. + */ +function simplecontext_convert_list() { + return array( + 'item1' => t('Item1'), + 'item2' => t('Item2'), + 'description' => t('Description'), + ); +} + +/** + * Convert a context into a string to be used as a keyword by content types, etc. + */ +function simplecontext_convert($context, $type) { + switch ($type) { + case 'item1': + return $context->data->item1; + case 'item2': + return $context->data->item2; + case 'description': + return $context->data->description; + } +} + |