diff --git example/dialog_example.module example/dialog_example.module
index 1e44ce5..ec31537 100644
--- example/dialog_example.module
+++ example/dialog_example.module
@@ -38,8 +38,9 @@ function dialog_example_page() {
   dialog_add_js();
   $links = array();
   $links[] = l('Simple test', 'dialog/nojs/example', array('attributes' => array('class' => 'ctools-use-dialog')));
-  $links[] = l('User login', 'user/login/nojs', array('attributes' => array('class' => 'ctools-use-dialog')));
-  $links[] = l('User registration', 'user/register/nojs', array('attributes' => array('class' => 'ctools-use-dialog')));
+  $links[] = user_is_anonymous() ? l(t('User login'), 'user/login/nojs', array('attributes' => array('class' => 'ctools-use-dialog'))) : t('<a href="@logout-url">Logout</a> to see "User login" example.', array('@logout-url' => 'logout'));
+  $links[] = user_is_anonymous() ? l(t('User registration'), 'user/register/nojs', array('attributes' => array('class' => 'ctools-use-dialog'))) : t('<a href="@logout-url">Logout</a> to see "User register" example.', array('@logout-url' => 'logout'));
+  $links[] = module_exists('dialog_node') && user_access('create Story content') ? l(t('Node add'), 'dialog/node-add/nojs/story', array('attributes' => array('class' => 'ctools-use-dialog'))) : t('Enable "Dialog node" module and assign user "create story content" permissions to see "Node add".');
   return theme('item_list', $links);
 }
 
@@ -51,7 +52,7 @@ function dialog_example_ajax_callback($ajax = FALSE) {
       'position' => 'center',
     );
     dialog_ajax_render('test', dialog_example_page(), $options);
-    return;    
+    return;
   }
 
   return 'hello world';
@@ -90,7 +91,7 @@ function dialog_login_callback($type, $js) {
         if ($command['command'] == 'dialog_display') {
           $output[$i]['options']['height'] = 'auto';
           $output[$i]['options']['width'] = 600;
-          
+
           $output[$i]['options']['position'] = 'center';
           $output[$i]['options']['resizable'] = FALSE;
         }
@@ -110,5 +111,5 @@ function dialog_example_form_alter(&$form, $form_state, $form_id) {
   elseif ($form_id == 'user_register' && !empty($form_state['ajax'])) {
     $form['submit']['#attributes']['class'] = 'ctools-dialog-button';
   }
-  
+
 }
\ No newline at end of file
diff --git modules/dialog_node/dialog_node.info modules/dialog_node/dialog_node.info
new file mode 100644
index 0000000..1b3b6dc
--- /dev/null
+++ modules/dialog_node/dialog_node.info
@@ -0,0 +1,5 @@
+; $Id$
+name = Dialog ndoe
+description = Provides Dialog integration for the core node module.
+core = 6.x
+dependencies[] = dialog
diff --git modules/dialog_node/dialog_node.module modules/dialog_node/dialog_node.module
new file mode 100644
index 0000000..b73d1f9
--- /dev/null
+++ modules/dialog_node/dialog_node.module
@@ -0,0 +1,88 @@
+<?php
+// $Id: dialog_user.module,v 1.2.2.2 2010/01/13 02:59:08 rz Exp $
+
+/**
+ * Implementation of hook_menu().
+ */
+function dialog_node_menu() {
+  $items['dialog/node-add/%ctools_js/%'] = array(
+    'title' => 'Node add',
+    'page callback' => 'dialog_node_add',
+    'page arguments' => array(2, 3),
+    'access callback' => 'dialog_node_add_access',
+  	'access arguments' => array(3),
+    'type' => MENU_CALLBACK,
+  );
+
+  return $items;
+}
+
+/**
+ * Access callback;
+ *
+ * @param $type
+ *   The machine readable name of the node type.
+ */
+function dialog_node_add_access($type) {
+  return user_access("create $type node");
+}
+
+/**
+ * Add node using Dialog.
+ *
+ * Enter description here ...
+ * @param unknown_type $js
+ * @param unknown_type $type
+ */
+function dialog_node_add($js, $type) {
+  if ($js) {
+    global $user;
+    ctools_include('ajax');
+    $commands = array();
+
+    $types = node_get_types();
+    $type = isset($type) ? str_replace('-', '_', $type) : NULL;
+
+    // If a node type has been specified, validate its existence.
+    if (isset($types[$type]) && node_access('create', $type)) {
+      module_load_include('inc', 'node', 'node.pages');
+      $node = array('uid' => $user->uid, 'name' => (isset($user->name) ? $user->name : ''), 'type' => $type, 'language' => '');
+
+      $form_state = array(
+        'ajax' => TRUE,
+        'title' => t('Create @name', array('@name' => $types[$type]->name)),
+        'args' => array('node' => $node),
+      );
+
+      $commands = dialog_form_wrapper($type . '_node_form', $form_state);
+      if (empty($commands)) {
+        // Node is submitted. We can get the node ID and values from the
+        // $form_state.
+        $commands[] = dialog_command_display(t('@name submitted', array('@name' => $types[$type]->name)), t('View <a href="@node-url">@title</a> @node-type.', array('@node-url' => url('node/' . $form_state['nid']), '@title' => $form_state['node']['title'], '@node-type' => $types[$type]->name)));
+      }
+    }
+    else {
+      $commands[] = dialog_command_display(t('Access denied'), t('Reloading...'));
+    }
+
+    ctools_ajax_render($commands);
+  }
+  else {
+    // No Javascript.
+    drupal_goto('node/add/' . $type);
+  }
+}
+
+/**
+ * Implementation of hook_form_alter().
+ */
+function dialog_node_form_alter(&$form, $form_state, $form_id) {
+  // Specify the submit buttons to be used as the dialog buttons.
+  if (strpos($form_id, '_node_form') && !empty($form_state['ajax'])) {
+    $form['buttons']['submit']['#attributes']['class'] = 'ctools-dialog-button';
+    // Preview buttons seems to submit the form, so unset it.
+    unset($form['buttons']['preview']);
+
+    unset($form['#action']);
+  }
+}
\ No newline at end of file
