Add ability to force message list refresh
[squirrelmail.git] / plugins / preview_pane / functions.php
index 4afe4716cac621f9f16192c9d8cf9f21b80e8365..acc02c72b47e64b55968f550497cf994cffd5d1f 100644 (file)
@@ -27,6 +27,7 @@ function preview_pane_show_options_do()
    $previewPane_vertical_split = getPref($data_dir, $username, 'previewPane_vertical_split', 0);
    $previewPane_size = getPref($data_dir, $username, 'previewPane_size', 300);
    $pp_refresh_message_list = getPref($data_dir, $username, 'pp_refresh_message_list', 1);
+   $previewPane_autohide = getPref($data_dir, $username, 'previewPane_autohide', 0);
 
 
    global $optpage_data;
@@ -57,6 +58,13 @@ function preview_pane_show_options_do()
       'caption'       => _("Always Refresh Message List<br />When Using Preview Pane"),
       'type'          => SMOPT_TYPE_BOOLEAN,
       'initial_value' => $pp_refresh_message_list,
+      'refresh'       => SMOPT_REFRESH_NONE,
+   );
+   $optpage_data['vals'][1][] = array(
+      'name'          => 'previewPane_autohide',
+      'caption'       => _("Automatically Hide Preview Pane<br />When Not Reading Messages"),
+      'type'          => SMOPT_TYPE_BOOLEAN,
+      'initial_value' => $previewPane_autohide,
       'refresh'       => SMOPT_REFRESH_ALL,
    );
 
@@ -88,17 +96,17 @@ function preview_pane_open_close_buttons_do()
 
    if (!show_preview_pane()) return;
 
-   global $data_dir, $username, $base_uri;
+   global $data_dir, $username, $base_uri, $oTemplate;
    $previewPane_vertical_split = getPref($data_dir, $username, 'previewPane_vertical_split', 0);
    if ($previewPane_vertical_split)
    {
-      $split = 'cols';
+      $orientation = 'cols';
       $up_arrow = '&larr;';
       $down_arrow = '&rarr;';
    }
    else
    {
-      $split = 'rows';
+      $orientation = 'rows';
       $up_arrow = '&uarr;';
       $down_arrow = '&darr;';
    }
@@ -106,26 +114,13 @@ function preview_pane_open_close_buttons_do()
 
    $previewPane_size = getPref($data_dir, $username, 'previewPane_size', 300);
 
+   $oTemplate->assign('previewPane_size', $previewPane_size);
+   $oTemplate->assign('base_uri', $base_uri);
+   $oTemplate->assign('orientation', $orientation);
+   $oTemplate->assign('down_arrow', $down_arrow);
+   $oTemplate->assign('up_arrow', $up_arrow);
 
-   $output = "\n<script type=\"text/javascript\">\n"
-      . "<!--\n"
-      . "   function set_preview_pane_size(new_size)\n"
-      . "   {\n"
-      . "      if (document.all)\n"
-      . "      {\n"
-      . "         parent.document.all[\"fs2\"].$split = \"*, \" + new_size;\n"
-      . "      }\n"
-      . "      else if (this.document.getElementById)\n"
-      . "      {\n"
-      . "         parent.document.getElementById(\"fs2\").$split = \"*, \" + new_size;\n"
-      . "      }\n"
-      . "   }\n"
-      . "// -->\n</script>\n"
-      . '<form style="margin:0">'
-      . '<input type="button" value="' . $down_arrow . '" onclick="set_preview_pane_size(0)" />'
-      . '<input type="button" value="X" onclick="parent.bottom.document.location=\'' . $base_uri . 'plugins/preview_pane/empty_frame.php\'" />'
-      . '<input type="button" value="' . $up_arrow . '" onclick="set_preview_pane_size(' . $previewPane_size . ')" />'
-      . '</form>';
+   $output = $oTemplate->fetch('plugins/preview_pane/collapse_buttons.tpl');
 
    return array('provider_link_before' => $output);
 
@@ -167,7 +162,7 @@ function preview_pane_message_list_do()
    {
 //      sqgetGlobalVar('REQUEST_URI', $request_uri, SQ_SERVER);
       $request_uri = $PHP_SELF;
-      $output .= "<script type=\"text/javascript\">\n<!--\n function pp_refresh() { document.location = '$request_uri'; }\n// -->\n</script>\n";
+      $output .= "<script type=\"text/javascript\" language=\"JavaScript\">\n<!--\n function pp_refresh() { document.location = '$request_uri'; }\n// -->\n</script>\n";
    }
 
 
@@ -184,7 +179,7 @@ function preview_pane_message_list_do()
 
       // don't let message list load into preview pane at all
       //
-         . "\n<script language='javascript' type='text/javascript'>\n"
+         . "\n<script language='JavaScript' type='text/javascript'>\n"
          . "<!--\n"
          . "\n"
          . "   if (self.name == 'bottom')\n"
@@ -223,7 +218,7 @@ function preview_pane_message_list_do()
   * (and possibly refresh message list as well)
   *
   */
-function preview_pane_change_message_target_do()
+function preview_pane_change_message_target_do($args)
 {
 
    if (!checkForJavascript()) return;
@@ -236,10 +231,17 @@ function preview_pane_change_message_target_do()
    if (getPref($data_dir, $username, 'use_previewPane', 0) == 1)
    {
       $pp_refresh_message_list = getPref($data_dir, $username, 'pp_refresh_message_list', 1);
+      $aMsg = $args[3];
 
       $target = 'bottom';
-      if ($pp_refresh_message_list)
-// introduce a delay so read messages actually refresh after they are read
+
+
+      // introduce a delay so read messages actually 
+      // refresh after they are read, but only if they
+      // have not already been seen
+      //
+      if ($pp_refresh_message_list && empty($aMsg['FLAGS']['\seen']))
+// old code without refresh delay 
 //         $onclick .= ' onclick="document.location=\'' . $request_uri . '\'; " ';
          $onclick .= ' setTimeout(\'pp_refresh()\', 500); ';
    }