123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <?php
- /**
- * @file
- * Provide views data.
- */
- /**
- * Implements hook_views_data().
- */
- function rules_link_views_data() {
- $data = array();
- foreach (rules_link_get_links() as $name => $rules_link) {
- $entity = entity_get_info($rules_link->entity_type);
- $data[$entity['base table']][$name]['field']['moved to'] = array('views_entity_' . $rules_link->entity_type, $name, 'field');
- $data['views_entity_' . $rules_link->entity_type][$name]['field'] = array(
- 'title' => $rules_link->label,
- 'help' => t('Execute the selected rules link.'),
- 'handler' => 'views_handler_field_rules_link',
- 'rules link name' => $name,
- );
- }
- return $data;
- }
- /**
- * Renders the links for views.
- */
- class views_handler_field_rules_link extends views_handler_field_entity {
- function render($value) {
- $replacements = filter_xss_admin($this->options['rules_link']['rules_link_parameters']);
- $token = $this->get_render_tokens('');
- $parameters = array_filter(explode(',', strtr($replacements, $token)));
- // Trim the spaces from the
- array_walk($parameters, 'rules_link_trim_parameters');
- $rules_link = rules_link_load($this->definition['rules link name']);
- $entity = $this->get_value($value);
- list($id, $rev, $bundle) = entity_extract_ids($rules_link->entity_type, $entity);
- // If there are multiple bundle types, we only have to display the links to
- // the entities which have the correct bundle.
- if (empty($rules_link->settings['bundles']) || in_array($bundle, $rules_link->settings['bundles'])) {
- $output = rules_link_render_link($rules_link, $id, drupal_get_destination(), $parameters);
- if (isset($this->options['rules_link']['rules_link_rewrite']) && !empty($this->options['rules_link']['rules_link_rewrite'])) {
- $output['#options']['html'] = TRUE;
- $output['#title'] = strtr($this->options['rules_link']['rules_link_rewrite'], $this->get_render_tokens(''));
- }
- return $output;
- }
- }
- /**
- * Override option_definition.
- */
- function option_definition() {
- $options = parent::option_definition();
- $options['rules_link']['rules_link_parameters'] = array('default' => '');
- $options['rules_link']['rules_link_rewrite'] = array('default' => '');
- return $options;
- }
- /**
- * Override options_form.
- */
- function options_form(&$form, &$form_state) {
- parent::options_form($form, $form_state);
- $form['rules_link'] = array(
- '#type' => 'fieldset',
- '#title' => t('Rules Link settings'),
- '#collapsible' => TRUE,
- '#collapsed' => TRUE,
- );
- $form['rules_link']['rules_link_parameters'] = array(
- '#type' => 'textfield',
- '#title' => t('Additional parameters for the rules link'),
- '#description' => t('Enter additional parameter using replacement patterns, use comma to enter multiple items. Whitespaces at the beginning and end of token will be trimmed.'),
- '#default_value' => $this->options['rules_link']['rules_link_parameters'],
- );
- $form['rules_link']['rules_link_rewrite'] = array(
- '#type' => 'textarea',
- '#title' => t('Rewrite the link text'),
- '#description' => t('Enter a custom link title or HTML that you want to place inside of the rules link. You may use the replacement patterns below.'),
- '#default_value' => $this->options['rules_link']['rules_link_rewrite'],
- );
- $form['rules_link']['rules_link_patterns'] = array(
- '#type' => 'fieldset',
- '#title' => t('Replacement patterns'),
- '#collapsible' => TRUE,
- '#collapsed' => TRUE,
- '#value' => $form['alter']['help']['#value'],
- );
- }
- }
|