* @license http://opensource.org/licenses/gpl-license.php GNU Public License * @version $Id$ * @package plugins * @subpackage preview_pane */ /** * Build user options for display on "Display Preferences" page */ function preview_pane_show_options_do() { if (!checkForJavascript()) return; global $data_dir, $username; $use_previewPane = getPref($data_dir, $username, 'use_previewPane', 0); $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; $optpage_data['vals'][1][] = array( 'name' => 'use_previewPane', 'caption' => _("Show Message Preview Pane"), 'type' => SMOPT_TYPE_BOOLEAN, 'initial_value' => $use_previewPane, 'refresh' => SMOPT_REFRESH_ALL, ); $optpage_data['vals'][1][] = array( 'name' => 'previewPane_vertical_split', 'caption' => _("Split Preview Pane Vertically"), 'type' => SMOPT_TYPE_BOOLEAN, 'initial_value' => $previewPane_vertical_split, 'refresh' => SMOPT_REFRESH_ALL, ); $optpage_data['vals'][1][] = array( 'name' => 'previewPane_size', 'caption' => _("Message Preview Pane Size"), 'type' => SMOPT_TYPE_INTEGER, 'initial_value' => $previewPane_size, 'refresh' => SMOPT_REFRESH_ALL, 'size' => SMOPT_SIZE_TINY, ); $optpage_data['vals'][1][] = array( 'name' => 'pp_refresh_message_list', 'caption' => _("Always Refresh Message List
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
When Not Reading Messages"), 'type' => SMOPT_TYPE_BOOLEAN, 'initial_value' => $previewPane_autohide, 'refresh' => SMOPT_REFRESH_ALL, ); } /** * This function determines if the preview pane is in use * (and JavaScript is available) * * @return boolean TRUE if the preview pane should be showing currently. */ function show_preview_pane() { global $data_dir, $username; $use_previewPane = getPref($data_dir, $username, 'use_previewPane', 0); return (checkForJavascript() && $use_previewPane); } /** * Adds preview pane open/close (and clear) buttons next to * "provider link" */ function preview_pane_open_close_buttons_do() { if (!show_preview_pane()) return; global $data_dir, $username, $base_uri, $oTemplate; $previewPane_vertical_split = getPref($data_dir, $username, 'previewPane_vertical_split', 0); if ($previewPane_vertical_split) { $orientation = 'cols'; $up_arrow = '←'; $down_arrow = '→'; } else { $orientation = 'rows'; $up_arrow = '↑'; $down_arrow = '↓'; } $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, FALSE); $oTemplate->assign('up_arrow', $up_arrow, FALSE); $output = $oTemplate->fetch('plugins/preview_pane/collapse_buttons.tpl'); return array('provider_link_before' => $output); } /** * Construct button that clears out any preview pane * contents and inserts JavaScript function used by * message subject link onclick handler. Also disallows * the message list to be loaded into the bottom frame. */ function preview_pane_message_list_do() { if (!checkForJavascript()) return; // globalize $pp_refresh_top, $pp_forceTopURL and $pp_noPageHeader to synch // with other plugins (sent_confirmation, for example) // global $plugins, $archive_mail_button_has_been_printed, $username, $data_dir, $PHP_SELF, $base_uri, $pp_refresh_top, $pp_forceTopURL, $pp_noPageHeader; sqgetGlobalVar('pp_refresh_top', $pp_refresh_top, SQ_GET); $output = ''; $use_previewPane = getPref($data_dir, $username, 'use_previewPane', 0); // add refresh function called from code built in function // preview_pane_change_message_target_do() // if ($use_previewPane == 1) // Bah, let's put this in anyway (even when the "always refresh thing is off), // in case someone else wants to use it // && getPref($data_dir, $username, 'pp_refresh_message_list', 1) == 1) { // sqgetGlobalVar('REQUEST_URI', $request_uri, SQ_SERVER); $request_uri = $PHP_SELF; $output .= "\n"; } if ($use_previewPane == 1) { // why isn't this already available? include_once(SM_PATH . 'functions/forms.php'); $output .= addButton(_("Clear Preview"), 'clear_preview', array('onclick' => 'parent.bottom.document.location=\'' . $base_uri . 'plugins/preview_pane/empty_frame.php\'; ')) // don't let message list load into preview pane at all // . "\n\n"; } return array('mailbox_index_after' => $output); } /** * Points message targets to open in the preview pane * (and possibly refresh message list as well) */ function preview_pane_change_message_target_do($args) { if (!checkForJavascript()) return; global $data_dir, $username, $target, $onclick, $PHP_SELF; // sqgetGlobalVar('REQUEST_URI', $request_uri, SQ_SERVER); $request_uri = $PHP_SELF; 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'; // 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); '; } }