diff --git a/protected_node.fork.inc b/protected_node.fork.inc
index 0792764..bf84d96 100644
--- a/protected_node.fork.inc
+++ b/protected_node.fork.inc
@@ -97,7 +97,10 @@ function protected_node_enter_any_password() {
   }
 
   // Enter the detailed description of the protected node password.
-  $description = variable_get('protected_node_description', '');
+  $description = variable_get('protected_node_description_' . $node->type, '');
+  if (!$description) {
+    $description = variable_get('protected_node_description', '');
+  }
   if (!$description) {
     if ($node->protected_node_show_title) {
       // Embellish the title with double quotes.
diff --git a/protected_node.info b/protected_node.info
index 27b854c..ffa9551 100644
--- a/protected_node.info
+++ b/protected_node.info
@@ -12,6 +12,7 @@ files[] = tests/protected_node.bulk.test
 files[] = tests/protected_node.fork.test
 files[] = tests/protected_node.global.test
 files[] = tests/protected_node.mail_test.test
+files[] = tests/protected_node.page_text.test
 files[] = tests/protected_node.per_node.test
 files[] = tests/protected_node.per_type.test
 files[] = tests/protected_node.private_file.test
diff --git a/protected_node.redirect.inc b/protected_node.redirect.inc
index 90196d3..4701c50 100644
--- a/protected_node.redirect.inc
+++ b/protected_node.redirect.inc
@@ -77,7 +77,10 @@ function protected_node_enterpassword() {
   }
 
   // Enter the detailed description of the protected node password.
-  $description = variable_get('protected_node_description', '');
+  $description = variable_get('protected_node_description_' . $node->type, '');
+  if (!$description) {
+    $description = variable_get('protected_node_description', '');
+  }
   if (!$description) {
     if ($node->protected_node_show_title) {
       // Embellish the title with double quotes.
diff --git a/protected_node.settings.inc b/protected_node.settings.inc
index 7f47d5f..ec50c9f 100644
--- a/protected_node.settings.inc
+++ b/protected_node.settings.inc
@@ -534,7 +534,7 @@ function protected_node_admin_settings() {
     '#type' => 'textarea',
     '#title' => t('Password page description (inside the field set with the password form)'),
     '#default_value' => variable_get('protected_node_description', ''),
-    '#description' => t('Enter specific description for the protected node page. This description is displayed inside the fieldset with the password form. HTML is accepted. You can use node type tokens from the token module when installed.'),
+    '#description' => t('Enter custom description for the protected node page. This description is displayed inside the fieldset with the password form. HTML is accepted. You can use node type tokens from the token module when installed.'),
   );
 
   $form['protected_node_form']['protected_node_password_label'] = array(
@@ -913,6 +913,13 @@ function protected_node_node_type_form_alter(&$form) {
     '#title' => t('A default (global) password for nodes of this type'),
   );
 
+  $form['protected_node']['protected_node_description'] = array(
+    '#type' => 'textarea',
+    '#title' => t('Password page description (inside the field set with the password form)'),
+    '#default_value' => variable_get('protected_node_description_' . $form['#node_type']->type, ''),
+    '#description' => t('Enter custom description for the protected node page of this content type to override the global setting. This description is displayed inside the fieldset with the password form. HTML is accepted. You can use node type tokens from the token module when installed.'),
+  );
+
   $options = array(
     PROTECTED_NODE_FIELDSET_OPEN => t('Always open'),
     PROTECTED_NODE_FIELDSET_SMART => t('Smart mode (Open when protected)'),
diff --git a/tests/protected_node.page_text.test b/tests/protected_node.page_text.test
new file mode 100644
index 0000000..50afef6
--- /dev/null
+++ b/tests/protected_node.page_text.test
@@ -0,0 +1,189 @@
+<?php
+
+/**
+ * @file
+ * Test protected node password page display options.
+ */
+
+/**
+ * Configure protected_node to use per node password.
+ */
+class ProtectedNodePageDisplay extends ProtectedNodeBaseTestCase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function getInfo() {
+    return array(
+      'name' => 'Protected node password page display options',
+      'description' => "This tests what is displayed on the enter password page",
+      'group' => 'Protected Node',
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function setUp() {
+    parent::setUp();
+
+    // Log in an Admin.
+    $this->drupalLogin($this->adminUser);
+    // Submit the configuration form.
+    $protected_node_settings = array(
+      'protected_node_use_global_password' => PROTECTED_NODE_PER_NODE_PASSWORD,
+    );
+    $this->drupalPost('admin/config/content/protected_node', $protected_node_settings, t('Save configuration'));
+  }
+
+  /**
+   * Test function.
+   *
+   * Test that default display text is displayed. (not showing title)
+   */
+  public function testDefaultHideTitle() {
+
+    $node = $this->createProtectedNode(FALSE);
+
+    // User sees the default text
+    $this->drupalLogin($this->normalAccessAllowedUser);
+    $this->drupalGet('node/' . $node->nid);
+
+    $text = t('The @node_type @node_title you are trying to view is password protected. Please enter the password below to proceed.',
+      array('@node_type' => node_type_get_name($node), '@node_title' => ''));
+    $this->assertText($text, "Default text displayed on the enter password page", $this->group);
+  }
+
+  /**
+   * Test function.
+   *
+   * Test that default display text is displayed. (Showing title)
+   */
+  public function testDefaultShowTitle() {
+
+    $node = $this->createProtectedNode(TRUE);
+
+    // User sees the default text including node title
+    $this->drupalLogin($this->normalAccessAllowedUser);
+    $this->drupalGet('node/' . $node->nid);
+
+    $text = t('The @node_type @node_title you are trying to view is password protected. Please enter the password below to proceed.',
+      array('@node_type' => node_type_get_name($node), '@node_title' => ' "' . $node->title . '"'));
+    $this->assertText($text, "Default text + node title displayed on the enter password page", $this->group);
+  }
+
+  /**
+   * Test function.
+   *
+   * Test that the password page description site config setting works.
+   */
+  public function testGlobalOnly() {
+
+    $text = "This is the global description that appears on every enter password page.";
+
+    $this->drupalLogin($this->adminUser);
+    $protected_node_settings = array(
+      'protected_node_use_global_password' => PROTECTED_NODE_PER_NODE_PASSWORD,
+      'protected_node_description' => $text,
+    );
+    $this->drupalPost('admin/config/content/protected_node', $protected_node_settings, t('Save configuration'));
+
+    // $showTitle parameter shouldn't matter
+    $node = $this->createProtectedNode(FALSE);
+
+    // User sees the set global text
+    $this->drupalLogin($this->normalAccessAllowedUser);
+    $this->drupalGet('node/' . $node->nid);
+    $this->assertText($text, "Custom global text displayed on the enter password page", $this->group);
+  }
+
+  /**
+   * Test function.
+   *
+   * Test that the password page description content type setting is displayed.
+   */
+  public function testContentTypeOnly() {
+
+    $text = "This is the description that appears only on this particular content type.";
+
+    // Set global text
+    $this->drupalLogin($this->adminUser);
+    $settings = array(
+      'protected_node_description' => $text,
+    );
+    $this->drupalPost('admin/structure/types/manage/page', $settings, t('Save content type'));
+
+    // $showTitle parameter shouldn't matter
+    $node = $this->createProtectedNode(TRUE);
+
+    // User sees the set global text
+    $this->drupalLogin($this->normalAccessAllowedUser);
+    $this->drupalGet('node/' . $node->nid);
+    $this->assertText($text, "Custom per content type text displayed on the enter password page", $this->group);
+  }
+
+  /**
+   * Test function.
+   *
+   * Test that the password page description content type setting is displayed instead instead of the global setting.
+   */
+  public function testContentTypeWithGlobalTextSet() {
+
+    $globalText = "This is the global description that appears on every enter password page.";
+    $contentTypeText = "This is the description that appears only on this particular content type.";
+
+    // Set global text
+    $this->drupalLogin($this->adminUser);
+    $protected_node_settings = array(
+      'protected_node_use_global_password' => PROTECTED_NODE_PER_NODE_PASSWORD,
+      'protected_node_description' => $globalText,
+    );
+    $this->drupalPost('admin/config/content/protected_node', $protected_node_settings, t('Save configuration'));
+
+    // AND set content type text
+    $settings = array(
+      'protected_node_description' => $contentTypeText,
+    );
+    $this->drupalPost('admin/structure/types/manage/page', $settings, t('Save content type'));
+
+    // $showTitle parameter shouldn't matter
+    $node = $this->createProtectedNode(FALSE);
+
+    // User sees the set content type text
+    $this->drupalLogin($this->normalAccessAllowedUser);
+    $this->drupalGet('node/' . $node->nid);
+    $this->assertText($contentTypeText, "Custom content type text displayed instead of the global text on the enter password page", $this->group);
+  }
+
+  /**
+   * Helper method to create a protected node.
+   *
+   * @param boolean $showTitle
+   *   Whether show title or not.
+   *
+   * @return object.
+   *   A node object.
+   */
+  public function createProtectedNode($showTitle) {
+    // Log in as Admin.
+    $this->drupalLogin($this->adminUser);
+    // Generate random password.
+    $password = $this->randomName(10);
+
+    $node_data = array(
+      'title' => $this->randomName(8),
+      'body[und][0][value]' => $this->randomName(32),
+      'protected_node_is_protected' => TRUE,
+      'protected_node_passwd[pass1]' => $password,
+      'protected_node_passwd[pass2]' => $password,
+      'protected_node_show_title' => $showTitle,
+    );
+    $this->drupalPost('node/add/page', $node_data, t('Save'));
+
+    // Once the node created logout the user.
+    $this->drupalLogout();
+
+    return $this->drupalGetNodeByTitle($node_data['title']);
+  }
+
+}
