X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fpage_header.php;h=424d420a7f563a3c23ab8e740118363fae10ac86;hb=f8a4ef2dc5fef964738d410ecef9fa4b06ba9650;hp=b193b73f9021123261e4d731d3f826bdb11ea92e;hpb=ce68b76bfdef63cbc85d7bc46f7f1d538db9b4a4;p=squirrelmail.git diff --git a/functions/page_header.php b/functions/page_header.php index b193b73f..424d420a 100644 --- a/functions/page_header.php +++ b/functions/page_header.php @@ -3,7 +3,7 @@ /** * page_header.php * - * Copyright (c) 1999-2004 The SquirrelMail Project Team + * Copyright (c) 1999-2005 The SquirrelMail Project Team * Licensed under the GNU GPL. For full terms see the file COPYING. * * Prints the page header (duh) @@ -38,23 +38,34 @@ function displayHtmlHeader( $title = 'SquirrelMail', $xtra = '', $do_hook = true if ($frames) { echo ''; - } else { + } else { echo ''; } echo "\n\n" . html_tag( 'html' ,'' , '', '', 'lang="'.$squirrelmail_language.'"' ) . "\n\n"; + /* + * Add closing / to link and meta elements only after switching to xhtml 1.0 Transitional. + * It is not compatible with html 4.01 Transitional + */ if ( !isset( $custom_css ) || $custom_css == 'none' ) { if ($theme_css != '') { - echo ""; + echo ""; } } else { echo ''; + $base_uri . 'themes/css/'.$custom_css.'">'; } if ($squirrelmail_language == 'ja_JP') { + /* + * force correct detection of charset, when browser does not follow + * http content-type and tries to detect charset from page content. + * Shooting of browser's creator can't be implemented in php. + * We might get rid of it, if we follow http://www.w3.org/TR/japanese-xml/ + * recommendations and switch to unicode. + */ echo "\n"; - echo '' . "\n"; + echo '' . "\n"; } if ($do_hook) { @@ -96,9 +107,18 @@ function makeInternalLink($path, $text, $target='') { if ($target != '') { $target = " target=\"$target\""; } - $hooktext = do_hook_function('internal_link',$text); - if ($hooktext != '') - $text = $hooktext; + + // This is an inefficient hook and is only used by + // one plugin that still needs to patch this code, + // plus if we are templat-izing SM, visual hooks + // are not needed. However, I am leaving the code + // here just in case we find a good (non-visual?) + // use for the internal_link hook. + // + //$hooktext = do_hook_function('internal_link',$text); + //if ($hooktext != '') + // $text = $hooktext; + return ''.$text.''; } @@ -144,7 +164,7 @@ function displayPageHeader($color, $mailbox, $xtra='', $session=false) { $session = 0; } - if($javascript_on) { + if( $javascript_on || strpos($xtra, 'new_js_autodetect_results.value') ) { switch ( $module ) { case 'src/read_body.php': @@ -243,6 +263,185 @@ function displayPageHeader($color, $mailbox, $xtra='', $session=false) { displayHtmlHeader ('SquirrelMail', $js); break; + case 'src/right_main.php': +// following code graciously stolen from phpMyAdmin project at: +// http://www.phpmyadmin.net + $js = << exits + if ((thePointerColor == '' && theMarkColor == '') + || typeof(theRow.style) == 'undefined') { + return false; + } + + // 2. Gets the current row and exits if the browser can't get it + if (typeof(document.getElementsByTagName) != 'undefined') { + theCells = theRow.getElementsByTagName('td'); + } + else if (typeof(theRow.cells) != 'undefined') { + theCells = theRow.cells; + } + else { + return false; + } + + // 3. Gets the current color... + var rowCellsCnt = theCells.length; + var domDetect = null; + var currentColor = null; + var newColor = null; + // 3.1 ... with DOM compatible browsers except Opera that does not return + // valid values with "getAttribute" + if (typeof(window.opera) == 'undefined' + && typeof(theCells[0].getAttribute) != 'undefined') { + currentColor = theCells[0].getAttribute('bgcolor'); + domDetect = true; + } + // 3.2 ... with other browsers + else { + currentColor = theCells[0].style.backgroundColor; + domDetect = false; + } // end 3 + + // 3.3 ... Opera changes colors set via HTML to rgb(r,g,b) format so fix it + if (currentColor.indexOf("rgb") >= 0) + { + var rgbStr = currentColor.slice(currentColor.indexOf('(') + 1, + currentColor.indexOf(')')); + var rgbValues = rgbStr.split(","); + currentColor = "#"; + var hexChars = "0123456789ABCDEF"; + for (var i = 0; i < 3; i++) + { + var v = rgbValues[i].valueOf(); + currentColor += hexChars.charAt(v/16) + hexChars.charAt(v%16); + } + } + + // 4. Defines the new color + // 4.1 Current color is the default one + if (currentColor == '' + || currentColor.toLowerCase() == theDefaultColor.toLowerCase()) { + if (theAction == 'over' && thePointerColor != '') { + newColor = thePointerColor; + } + else if (theAction == 'click' && theMarkColor != '') { + newColor = theMarkColor; + marked_row[theRowNum] = true; + // deactivated onclick marking of the checkbox because it's also executed + // when an action (clicking on the checkbox itself) on a single item is + // performed. Then the checkbox would get deactived, even though we need + // it activated. Maybe there is a way to detect if the row was clicked, + // and not an item therein... + //document.getElementById('msg[' + theRowNum + ']').checked = true; + } + } + // 4.1.2 Current color is the pointer one + else if (currentColor.toLowerCase() == thePointerColor.toLowerCase() + && (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])) { + if (theAction == 'out') { + newColor = theDefaultColor; + } + else if (theAction == 'click' && theMarkColor != '') { + newColor = theMarkColor; + marked_row[theRowNum] = true; + //document.getElementById('msg[' + theRowNum + ']').checked = true; + } + } + // 4.1.3 Current color is the marker one + else if (currentColor.toLowerCase() == theMarkColor.toLowerCase()) { + if (theAction == 'click') { + newColor = (thePointerColor != '') + ? thePointerColor + : theDefaultColor; + marked_row[theRowNum] = (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum]) + ? true + : null; + //document.getElementById('msg[' + theRowNum + ']').checked = false; + } + } // end 4 + + // 5. Sets the new color... + if (newColor) { + var c = null; + // 5.1 ... with DOM compatible browsers except Opera + if (domDetect) { + for (c = 0; c < rowCellsCnt; c++) { + theCells[c].setAttribute('bgcolor', newColor, 0); + } // end for + } + // 5.2 ... with other browsers + else { + for (c = 0; c < rowCellsCnt; c++) { + theCells[c].style.backgroundColor = newColor; + } + } + } // end 5 + + return true; +} // end of the 'setPointer()' function +EOS; + $js = "\n".'\n"; + $onload = ''; + displayHtmlHeader ('SquirrelMail', $js); + break; + default: $js = '