Sep

6

If you have been using Joomla! 1.5 and tested it on IE7, you might find the PDF problem where any PDF file fails to display correctly in IE7. The usual symptom is that the pop-up window is empty.


There are 2 steps:

1. Creata a new file called browser_detection.php and upload it to your Joomla! site.
2. Edit icon.php in 2 places and upload it to your Joomla! site.

STEP 1
Create a php file called browser_detection.php. You can do this in any text editor or Dreamweaver. Copy, paste and save the following in to your new file:


<?php

/*
Script Name: Simple 'if' PHP Browser detection
Author: Harald Hope, Website: http://TechPatterns.com/
Script Source URI: http://TechPatterns.com/downloads/php_browser_detection.php
Version 2.0.2
Copyright (C) 29 June 2007

Modified 22 April 2008 by Jon Czerwinski
Added IE 7 version detection

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Get the full text of the GPL here: http://www.gnu.org/licenses/gpl.txt

Coding conventions:
http://cvs.sourceforge.net/viewcvs.py/phpbb/phpBB2/docs/codingstandards.htm?rev=1.3
*/

/*
the order is important, because opera must be tested first, and ie4 tested for before ie general
same for konqueror, then safari, then gecko, since safari navigator user agent id's with 'gecko' in string.
note that $dom_browser is set for all  modern dom browsers, this gives you a default to use, unfortunately we
haven't figured out a way to do this with actual method testing, which would be much better and reliable.

Please note: you have to call the function in order to get access to the variables, you call it by this:

browser_detection('browser');

then put you code that you want to use the variables with after that.

*/

function browser_detection( $which_test ) {

	// initialize the variables
	$browser = '';
	$dom_browser = '';

	// set to lower case to avoid errors, check to see if http_user_agent is set
	$navigator_user_agent = ( isset( $_SERVER['HTTP_USER_AGENT'] ) ) ? strtolower( $_SERVER['HTTP_USER_AGENT'] ) : '';

	// run through the main browser possibilities, assign them to the main $browser variable
	if (stristr($navigator_user_agent, "opera"))
	{
		$browser = 'opera';
		$dom_browser = true;
	}

/*
Test for IE 7 added
April 22, 2008
Jon Czerwinski
*/
	elseif (stristr($navigator_user_agent, "msie 7"))
	{
		$browser = 'msie7';
		$dom_browser = false;
	}

	elseif (stristr($navigator_user_agent, "msie 4"))
	{
		$browser = 'msie4';
		$dom_browser = false;
	}

	elseif (stristr($navigator_user_agent, "msie"))
	{
		$browser = 'msie';
		$dom_browser = true;
	}

	elseif ((stristr($navigator_user_agent, "konqueror")) || (stristr($navigator_user_agent, "safari")))
	{
		$browser = 'safari';
		$dom_browser = true;
	}

	elseif (stristr($navigator_user_agent, "gecko"))
	{
		$browser = 'mozilla';
		$dom_browser = true;
	}

	elseif (stristr($navigator_user_agent, "mozilla/4"))
	{
		$browser = 'ns4';
		$dom_browser = false;
	}

	else
	{
		$dom_browser = false;
		$browser = false;
	}

	// return the test result you want
	if ( $which_test == 'browser' )
	{
		return $browser;
	}
	elseif ( $which_test == 'dom' )
	{
		return $dom_browser;
		//  note: $dom_browser is a boolean value, true/false, so you can just test if
		// it's true or not.
	}
}

/*
you would call it like this:

$user_browser = browser_detection('browser');

if ( $user_browser == 'opera' )
{
	do something;
}

or like this:

if ( browser_detection('dom') )
{
	execute the code for dom browsers
}
else
{
	execute the code for non DOM browsers
}

and so on.......

*/
?>

Upload browser_detection.php to the folder libraries/joomla/utilities/ on your site.

STEP 2
Find the file icon.php in the folder components/com_content/helpers/. Note: Make a copy of this file so you can restore it if needed.

Under the

require_once("libraries/joomla/utilities/browser_detection.php");

Replace this line of code on line 58
[sourcecode lanuage="php"]$attribs['onclick'] = “window.open(this.href,’win2′,’”.$status.”‘); return false;”;[/sourcecode]

with the following code:

$user_browser = browser_detection('browser');
          if ($user_browser == 'msie7') {
             $attribs['target'] = '_blank';
          } else {
             $attribs['onclick'] =
    "window.open(this.href,'win2','".$status."'); return
    false;";
          }

Save and upload the file to components/com_content/helpers/.

Note: Your browser’s cache may need to be cleaned before you can see the PDF working.



Similar Posts

Comments

Name (required)

Email (required)

Website

Speak your mind

4 Comments so far

  1. Rudy Pandu on September 8, 2008 3:13 am

    Thanks a lot for it. I hope it solved my problem. Need a time to try it.

  2. Rob Fallows on September 30, 2008 7:25 am

    I got it working, but had a couple of issues:

    1. I had to put the browser_detection function within icon.php - it did not automatically find the uploaded file.

    2. The code snippet which replaces the “window.open” line in icon.php tests for a browser type of “msie7″. This value is never set by the browser_detection function. Changed “msie7″ to “msie” and it all worked.

    Thanks for a great fix.

  3. admin on September 30, 2008 9:33 am

    Thanks! Rob. for your great contribution. :)

  4. Desmond on October 22, 2008 12:56 am

    Can anyone help me to get this to work for a component? I need a PDF button on my component I have written. I am quite new at developing in Joomla. Its quite urgent. I am writing a Portal for a local airline integrating it to a Oracle based scheduling system.

Sponsors




Links