/** * Helper function for generating the CSS rules. * * @return string * String with the CSS rules. */ public static function generateLanguagesCssRules() { $output = ''; $geshi_library = libraries_load('geshi'); if ($geshi_library['loaded']) { $languages = GeshiFilter::getAvailableLanguages(); foreach ($languages as $langcode => $language_full_name) { // Create GeSHi object. $geshi = GeshiFilterProcess::geshiFactory('', $langcode); GeshiFilterProcess::overrideGeshiDefaults($geshi, $langcode); // Add CSS rules for current language. $output .= $geshi->get_stylesheet(FALSE) . "\n"; // Release GeSHi object. unset($geshi); } } else { drupal_set_message(t('Error while generating CSS rules: could not load GeSHi library.'), 'error'); } return $output; }
/** * Helper function for generating a GeSHi object. * * @param string $source_code * The source code to process. * @param string $language * The language to generate a GeSHi object for. * * @return \GeSHi * Return a Geshi class object. */ public static function geshiFactory($source_code, $language) { $available_languages = GeshiFilter::getAvailableLanguages(); $geshi = new \GeSHi($source_code, $language); $geshi->set_language_path($available_languages[$language]['language_path']); return $geshi; }
/** * Function for generating a form table for per language settings. * * @param string $view * - enabled Only show the enabled languages. * - disabled Only show the disabled languages. * - all Show all languages. * @param bool $add_checkbox * When add(TRUE) or not(FALSE) a checkbox to enable languages. * @param bool $add_tag_option * When add(TRUE) or not(FALSE) a textbox to set tags. * * @return array * Return elements to a table with languages. */ protected function perLanguageSettings($view, $add_checkbox, $add_tag_option) { $config = $this->config('geshifilter.settings'); $form = array(); $header = array(t('Language'), t('GeSHi language code')); if ($add_tag_option) { $header[] = t('Tag/language attribute value'); } $form['language'] = array('#type' => 'table', '#header' => $header, '#empty' => t('Nome language is available.')); // Table body. $languages = GeshiFilter::getAvailableLanguages(); foreach ($languages as $language => $language_data) { $enabled = $config->get("language.{$language}.enabled", FALSE); // Skip items to hide. if ($view == 'enabled' && !$enabled || $view == 'disabled' && $enabled) { continue; } // Build language row. $form['language'][$language] = array(); // Add enable/disable checkbox. if ($add_checkbox) { $form['language'][$language]['enabled'] = array('#type' => 'checkbox', '#default_value' => $enabled, '#title' => $language_data['fullname']); } else { $form['language'][$language]['fullname'] = array('#type' => 'markup', '#markup' => $language_data['fullname']); } // Language code. $form['language'][$language]['name'] = array('#type' => 'markup', '#markup' => $language); // Add a textfield for tags. if ($add_tag_option) { $form['language'][$language]['tags'] = array('#type' => 'textfield', '#default_value' => $config->get("language.{$language}.tags", ''), '#size' => 20); } } return $form; }