X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=functions%2Fpage_header.php;h=c9ee8fe4437bbb698e3991be1ed79ca86459c06c;hp=714d5af02abeec95f76cd17684488c7565fe04cf;hb=eaf1763433af8cad91c7d83818360ffeffde9628;hpb=6c84ba1ec45ab854c37b6f65c5b4d84ab1c7aad4 diff --git a/functions/page_header.php b/functions/page_header.php index 714d5af0..c9ee8fe4 100644 --- a/functions/page_header.php +++ b/functions/page_header.php @@ -43,25 +43,29 @@ function displayHtmlHeader( $title = 'SquirrelMail', $xtra = '', $do_hook = true } 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 + * 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/ + * 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) { @@ -104,11 +108,11 @@ function makeInternalLink($path, $text, $target='') { $target = " target=\"$target\""; } - // This is an inefficient hook and is only used by + // 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?) + // 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); @@ -160,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': @@ -259,6 +263,170 @@ 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 = '