danielebarchiesi@2: $arg) { danielebarchiesi@2: $path = str_replace("%$id", $arg, $path); danielebarchiesi@2: } danielebarchiesi@2: $path = preg_replace(',/?(%\d),', '', $path); danielebarchiesi@2: if (!empty($path)) { danielebarchiesi@2: $this->settings['ajax_path'] = rawurlencode($path); danielebarchiesi@2: } danielebarchiesi@2: else { danielebarchiesi@2: $this->settings['ajax_path'] = ''; danielebarchiesi@2: } danielebarchiesi@2: $this->settings['actual_path'] = $path; danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: public function optionsForm($delta, $qt) { danielebarchiesi@2: $tab = $this->settings; danielebarchiesi@2: $form = array(); danielebarchiesi@2: $form['callback']['path'] = array( danielebarchiesi@2: '#type' => 'textfield', danielebarchiesi@2: '#default_value' => isset($tab['path']) ? $tab['path'] : '', danielebarchiesi@2: '#title' => t('Path'), danielebarchiesi@2: '#element_validate' => array('quicktabs_callback_element_validate'), danielebarchiesi@2: ); danielebarchiesi@2: return $form; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: public function render($hide_empty = FALSE, $args = array()) { danielebarchiesi@2: if ($this->rendered_content) { danielebarchiesi@2: return $this->rendered_content; danielebarchiesi@2: } danielebarchiesi@2: $item = $this->settings; danielebarchiesi@2: if (!empty($args)) { danielebarchiesi@2: // The args have been passed in from an ajax request. danielebarchiesi@2: // The first element of the args array is the qt_name, which we don't need danielebarchiesi@2: // for this content type. danielebarchiesi@2: array_shift($args); danielebarchiesi@2: $item['actual_path'] = rawurldecode($args[0]); danielebarchiesi@2: $_GET['q'] = $item['actual_path']; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: $output = array(); danielebarchiesi@2: if (isset($item['actual_path'])) { danielebarchiesi@2: // Retain the current page title as we'll need to set it back after danielebarchiesi@2: // calling menu_execute_active_handler(). danielebarchiesi@2: $page_title = drupal_get_title(); danielebarchiesi@2: $response = menu_execute_active_handler($item['actual_path'], FALSE); danielebarchiesi@2: // Revert the page title. danielebarchiesi@2: drupal_set_title($page_title); danielebarchiesi@2: danielebarchiesi@2: if (!is_array($response)) { danielebarchiesi@2: if (is_int($response)) { danielebarchiesi@2: if (MENU_ACCESS_DENIED == $response && !$hide_empty) { danielebarchiesi@2: $output['#markup'] = theme('quicktabs_tab_access_denied', array('tab' => $item)); danielebarchiesi@2: } danielebarchiesi@2: // For any other integer response form the menu callback, we'll just danielebarchiesi@2: // return an empty array. danielebarchiesi@2: } danielebarchiesi@2: else { danielebarchiesi@2: $output = array('#markup' => $response); danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: else { danielebarchiesi@2: $output = $response; danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: $this->rendered_content = $output; danielebarchiesi@2: return $output; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: public function getAjaxKeys() { danielebarchiesi@2: return array('ajax_path'); danielebarchiesi@2: } danielebarchiesi@2: }