? pathauto-live-844944-2.patch
? pathauto-live-844944-3.patch
? pathauto-live-844944-4.patch
? pathauto-live-844944.patch
Index: pathauto.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pathauto/pathauto.js,v
retrieving revision 1.5.2.1
diff -u -p -r1.5.2.1 pathauto.js
--- pathauto.js	10 Feb 2010 21:47:40 -0000	1.5.2.1
+++ pathauto.js	20 Jul 2010 15:58:04 -0000
@@ -1,20 +1,41 @@
 // $Id: pathauto.js,v 1.5.2.1 2010/02/10 21:47:40 greggles Exp $
 if (Drupal.jsEnabled) {
+  
+  var path;
+  
   $(document).ready(function() {
     if ($("#edit-pathauto-perform-alias").size() && $("#edit-pathauto-perform-alias").attr("checked")) {
       // Disable input and hide its description.
-      $("#edit-path").attr("disabled","disabled");
+      $("#edit-path").hide(0);
       $("#edit-path-wrapper > div.description").hide(0);
+      var protocol = $(location).attr('protocol');
+      var hostname = $(location).attr('hostname');
+      $('#edit-path-wrapper').prepend('<div id="path-preview">'+protocol+'//'+hostname+'/</div>');
+      get_path();
+      
+      $('#edit-title').keyup(function() {
+        get_path();
+      });
+      
+      $('#edit-path').keyup(function() {
+        path = $(this).val();
+        $('#path-preview #path').remove();
+        $('#path-preview').append('<span id="path">'+path+'</span>');
+      });
+      
     }
     $("#edit-pathauto-perform-alias").bind("click", function() {
       if ($("#edit-pathauto-perform-alias").attr("checked")) {
         // Auto-alias checked; disable input.
-        $("#edit-path").attr("disabled","disabled");
+        $("#edit-path").val('');
+        $("#edit-path").slideUp('fast');
         $("#edit-path-wrapper > div[class=description]").slideUp('fast');
+        get_path();
       }
       else {
         // Auto-alias unchecked; enable input.
-        $("#edit-path").removeAttr("disabled");
+        $("#edit-path").val(path);
+        $("#edit-path").slideDown('fast');
         $("#edit-path")[0].focus();
         $("#edit-path-wrapper > div[class=description]").slideDown('fast');
       }
@@ -37,4 +58,16 @@ if (Drupal.jsEnabled) {
       return Drupal.t('No alias');
     }
   }
+  
+  function get_path(){
+    var nodeTitle = $('#edit-title').val();
+    var nodeType = Drupal.settings.pathauto.nodeType;
+    $.getJSON(Drupal.settings.pathauto.basePath + '/get_url_callback', {node_title: nodeTitle, node_type: nodeType}, function(data) {
+      path = data.path;
+      $('#path-preview #path').remove();
+      $('#path-preview').append('<span id="path">'+path+'</span>');
+    });
+  }
 }
+
+
Index: pathauto.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/pathauto/pathauto.module,v
retrieving revision 1.126.2.25
diff -u -p -r1.126.2.25 pathauto.module
--- pathauto.module	28 Jun 2010 19:05:24 -0000	1.126.2.25
+++ pathauto.module	20 Jul 2010 15:58:05 -0000
@@ -84,11 +84,42 @@ function pathauto_menu() {
     'weight' => 30,
     'file' => 'pathauto.admin.inc',
   );
+  $items['pathauto/get_url_callback'] = array(
+    'title' => 'Get url callback',
+    'page callback' => '_pathauto_get_url_callback',
+    'access arguments' => array('create url aliases'),
+    'type' => MENU_CALLBACK,
+  );
 
   return $items;
 }
 
 /**
+ * AJAX callback to return URL for given node title.
+ */
+function _pathauto_get_url_callback(){
+  global $user;
+  $node_title = filter_input(INPUT_GET,'node_title');
+  $node_type = filter_input(INPUT_GET,'node_type');
+  $node_type = str_replace("_node_form", "", $node_type);
+  $node = node_load(array('title'=>$node_title));
+  if(empty($node) && !empty($node_title) && !empty($node_type)){
+    $node = array('uid' => $user->uid, 'name' => (isset($user->name) ? $user->name : ''), 'title' => $node_title, 'type' => $node_type, 'language' => '');
+    $node = (object)$node;
+  
+    _pathauto_include();
+    $placeholders = pathauto_get_placeholders('node', $node);
+    $alias = pathauto_create_alias('node','return',$placeholders,NULL,0);
+    
+    drupal_json(array('path' => $alias));
+  }
+  elseif($node){
+    drupal_json(array('path' => $node->path));
+  }
+  exit;
+}
+
+/**
  * Include all Pathauto include files.
  */
 function _pathauto_include() {
@@ -253,6 +284,12 @@ function pathauto_form_alter(&$form, $fo
           $node->pathauto_perform_alias = TRUE;
         }
       }
+      
+      // Add the node type as a JS setting.
+      drupal_add_js(array('pathauto' => array('nodeType' => $node->type)), 'setting');
+      
+      // Add the basepath as a JS setting.
+      drupal_add_js(array('pathauto' => array('basePath' => url('pathauto'))), 'setting');
 
       // Add JavaScript that will disable the path textfield when the automatic
       // alias checkbox is checked.
