Index: transliteration.module
===================================================================
--- transliteration.module	(revision 12)
+++ transliteration.module	(revision 46)
@@ -37,12 +37,82 @@
  *
  * Transliterate and clean the names of new uploaded files.
  */
-function transliteration_menu($may_cache) {
-  if (!$may_cache && !empty($_FILES['files'])) {
+function transliteration_menu($may_cache) {
+  $items = array();
+  
+  if ($may_cache) {
+    $items[] = array(
+      'title' => t('Transliteration'),
+      'path' => 'admin/settings/transliteration',
+      'callback' => 'drupal_get_form',
+      'callback arguments' => array('transliteration_settings_form'),
+      'access' => user_access('administer site configuration'),
+      'type' => MENU_NORMAL_ITEM,
+    );
+  }
+  elseif (!empty($_FILES['files']) && _transliteration_test_path()) {    
     require_once(drupal_get_path('module', 'transliteration') .'/transliteration.inc');
     foreach ($_FILES['files']['name'] as $field => $filename) {
       $_FILES['files']['name'][$field] = transliteration_clean_filename($filename);
     }
-  }
+  }
+  
+  return $items; 
 }
 
+function transliteration_settings_form() {
+  $form = array();
+  
+  $form['transliteration_enabled_settings'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Page specific enabled settings'),
+    '#collapsible' => TRUE,
+  );
+  
+  $form['transliteration_enabled_settings']['transliteration_enabled_mode'] = array(
+    '#type' => 'radios',
+    '#title' => t('Enable transliteration on specific pages'),
+    '#options' => array(t('Enable on every page except the listed pages.'),
+                        t('Enable on only the listed pages.'),
+                        t('Enable if the following PHP code returns <code>TRUE</code> (PHP-mode, experts only).')),
+    '#default_value' => variable_get('transliteration_enabled_mode', 0),
+  );
+  $form['transliteration_enabled_settings']['transliteration_enabled_pages'] = array(
+    '#type' => 'textarea',
+    '#title' => t('Pages'),
+    '#default_value' => variable_get('transliteration_enabled_pages', ''),
+    '#description' => t("Enter one page per line as Drupal paths. The '*' character is a wildcard. Example paths are %blog for the blog page and %blog-wildcard for every personal blog. %front is the front page.", array('%blog' => 'blog', '%blog-wildcard' => 'blog/*', '%front' => '<front>')).' '.
+                      t('If the PHP-mode is chosen, enter PHP code between %php. Note that executing incorrect PHP-code can break your Drupal site.', array('%php' => '<?php ?>')),
+  );
+  
+  return system_settings_form($form);
+}
+
+function _transliteration_test_path() {
+  $pages = variable_get('transliteration_enabled_pages', '');
+  $mode = variable_get('transliteration_enabled_mode', 0);
+  
+  if ($pages) {
+    if ($mode < 2) {
+      $path = drupal_get_path_alias($_GET['q']);
+      $regexp = '/^('. preg_replace(array('/(\r\n?|\n)/', '/\\\\\*/', '/(^|\|)\\\\<front\\\\>($|\|)/'), array('|', '.*', '\1'. preg_quote(variable_get('site_frontpage', 'node'), '/') .'\2'), preg_quote($pages, '/')) .')$/';
+      // Compare with the internal and path alias (if any).
+      $page_match = preg_match($regexp, $path);
+      if ($path != $_GET['q']) {
+        $page_match = $page_match || preg_match($regexp, $_GET['q']);
+      }
+      // When $mode has a value of 0, the transliteration is enabled on
+      // all pages except those listed in $pages. When set to 1, it
+      // is enabled only on those pages listed in $pages.
+      $page_match = !($mode xor $page_match);
+    }
+    else {
+      $page_match = drupal_eval($pages);
+    }
+  }
+  else {
+    $page_match = TRUE;
+  }  
+  
+  return $page_match;
+}
\ No newline at end of file
