PDA

نسخه کامل مشاهده نسخه کامل : نمایش یک پلاگین در یک مرورگر خاص برای کاربر



mojifree
14-09-2012, 09:59
سلام دوستان
من پلاگینی روی سایتم دارم که حالت پاپ آپ به کاربر یک عکس بصورت اتوماتیک نمایش داده میشه، ولی چون موضوعش استفاده از گوگل کروم برای مشاهده سایت هست ، نمی خوام اگه کاربر مرورگرش کروم بود باز بشه ، دوستان کسی می دونه چطور میتونم تو کدها اونو اختصاصی برای اینترنت اکسپلورر یا فایر فاکسش کنم


defined( '_JEXEC' ) or die( 'Restricted access' );


jimport( 'joomla.plugin.plugin' );


class plgSystemPopup_Anywhere extends JPlugin{


function plgSystemPopup_Anywhere(& $subject, $config){
parent::__construct($subject, $config);
}




function onAfterDispatch(){
$mainframe = JFactory::getApplication();

if($mainframe->isAdmin()) {
return;
}


$popupWidth = intval($this->params->get('popupwidth',0));
$popupHeight = intval($this->params->get('popupheight',0));

$x = '';
if (trim($popupWidth)!=''){
$x = "x: ".intval($popupWidth).' ';
}

$y = '';
if (trim($popupHeight)!=''){
$y = "y: ".intval($popupHeight);
}

$modaltype = intval($this->params->get('modaltype',0));
if ($modaltype==0){
$modaltype='iframe';
}else if ($modaltype==1){
$modaltype='url';
}else{
$modaltype='image';
}

$image = $this->params->get('image','');
if (trim($image!='')){
$link = $image;
$modaltype = 'image';
}else{
$link = $this->params->get('link','');
if (trim($link=='')){
return;
}
/*CHECK POPUP IN IFRAME*/
if( strpos($link,"?") && !strpos($link,"popupiniframe") ){
$link =$link."&popupiniframe=true";
}else{
if( !strpos($link,"popupiniframe") ){
$link =$link."?popupiniframe=true";
}
}
$popupiniframe = JRequest::getVar("popupiniframe","0");
if( $popupiniframe ){
return;
}
/*CHECK POPUP IN IFRAME*/
}

$addUrl = $this->params->get('addurl',1);
if ($addUrl==1&&strtolower(substr($link,0,7))!='[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]'){
$link=JURI::base().$link;
}

$type = intval($this->params->get('type',0));
$cookietime = intval($this->params->get('cookietime',0));

$session =&JFactory::getSession();

//check endless

$par = array();

$preview = JRequest::getVar('popup_anywhere_preview',false);
$session =&JFactory::getSession();

if ($preview=='true'){
$preview = true;
$session->set('modaldone','true','plg_popup_anywhere');
setcookie('modaldone', 'true',time() + 300*8000,'/');
}else{
$preview = false;
}


$time = $cookietime;
if ($cookietime>0){
$time = time()+($cookietime*3600);
}
if (!$preview){
if ($type==0){
$value = $session->get('modaldone',null,'plg_popup_anywhere');
$session->set('modaldone','true','plg_popup_anywhere');
setcookie('modaldone', 'false',$time,'/');
if ($value=='true'){
return;
}
}else if ($type==1){
if (isset($_COOKIE['modaldone'])){
$value = $_COOKIE['modaldone'];
}else{
$value = 'false';
}
setcookie('modaldone', 'true',$time,'/');
if ($value=='true'){
return;
}
}else{

}
}

//add pop up Javascript to document

JHTML::_('behavior.mootools');
jHTML::_('behavior.modal');


$sizeStr = '';
if ($popupWidth>0&&$popupHeight==0){
$sizeStr = ", size: {".$x."}";
}elseif ($popupWidth==0&&$popupHeight>0){
$sizeStr = ", size: {".$y."}";
}elseif ($popupWidth>0&&$popupHeight>0){
$sizeStr = ", size: {".$x.", ".$y."}";
}

$linkofimage = $this->params->get('linkofimage','');

$noconflict = intval($this->params->get('enableNoConflict',0));

$nc = '$';
if ($noconflict==1){
$nc = 'document.id';
}


$closeafter = intval($this->params->get('closeafterseconds',0));
$jsCloseString = '';
if ($closeafter>0){
$jsCloseString = 'setTimeout(\'popupAnywherecloseWindow();\','.($cl oseafter*1000).');';
}

$jsimagelink = '';

$document =& JFactory::getDocument();

if (trim($linkofimage)!=''){
$linktarget = intval($this->params->get('linktarget',0));
$locationJs = '';
switch($linktarget){
case 0:
$locationJs = "parent.window.location.href='".$linkofimage."'";
break;
case 1:
$locationJs = "document.forms['popupAnywhereForm'].submit();";
break;
case 2:
$locationJs = "location.href='".$linkofimage."'";
break;
}

if ($modaltype=='iframe'){
$jsimagelink = "$$('.sbox-content-iframe iframe').setProperty('id','popupanywhereIframeId') ;IframeOnClick.track(".$nc."('popupanywhereIframeId'), function() { ".$locationJs.";});";
$document->addScript( JURI::base().'plugins/system/popup_anywhere/js/iframetracker.js' );
}else{
$jsimagelink = $nc."('sbox-content').addEvent('click', function(){".$locationJs.";});";
}
}
// if mootool < 1.2 , use $$ => noproblem , but use $ problem with jQuery
// if mootool >=1.2 , use $$ => noproblem , but use $ problem with jQuery , and have to use document.id(only support mootool 1.2)

$noscroll = '';
if (intval($this->params->get('scrollbar',1))==0&&$modaltype!='image'){
if ($modaltype=='iframe'){
$noscroll = '$$(\'.sbox-content-iframe iframe\').setProperty(\'scrolling\',\'no\');';
}elseif($modaltype=='url'){
$noscroll = $nc.'(\'sbox-content\').setStyle(\'overflow\',\'hidden\');';
}
}
$nobutton = '';
if (intval($this->params->get('closebutton',1))==0){
$nobutton = $nc.'(\'sbox-btn-close\').setStyle(\'display\',\'none\');';
}
$onUpdate = '';
if ($jsCloseString!=''||$jsimagelink!=''||$noscroll!= ''||$nobutton!=''){
$onloadwrapper = '{placeholder}';
if ($modaltype=='iframe'){
$onloadwrapper = "$$('.sbox-content-iframe iframe').addEvent('load', function(){{placeholder};});";
}
/*if ($modaltype=='url'){
$onloadwrapper = $nc."('page').addEvent('domready', function(){{placeholder};});";
}
if ($modaltype=='image'){
$onloadwrapper = "$$('#sbox-content img').setProperty('onload', 'alert(\\\'yes\\\')');";
}*/
$addOnLoad = str_replace('{placeholder}',$jsCloseString.$jsimag elink,$onloadwrapper);
$onUpdate = ", onUpdate:function(){".$noscroll.$nobutton.$addOnLoad."}";
}

$globals = '';

if ($jsCloseString!=''){
$globals = 'function popupAnywherecloseWindow(){
SqueezeBox.close();
}
';
}
$options = "handler: '".$modaltype."'".$sizeStr.$onUpdate;


$js = "
SqueezeBox.open('".$link."',{".$options."});";


$document->addScriptDeclaration($this->_wrapJS($js,true,$globals));


$cursor = $this->params->get('cursor','');
if (trim($cursor)!=''){
if ($modaltype!='iframe'){
$document->addStyleDeclaration('#sbox-window{cursor:'.$cursor.' !important}', 'text/css');
}
}

$template = $this->params->get('template','');

if ($preview){
$session->set('modaldone','true','plg_popup_anywhere');
setcookie('modaldone', 'true', time() + (100 * 60 * 60),JURI::base(),'/');
}

if (trim($template)==''||$template==null||intval($tem plate)==-1){
return;
}
$document->addStyleSheet( JURI::root().'plugins/system/popup_anywhere/css/'.$template, 'text/css', null, array() );
}

/**
* Wraps Javascript
*
* @param string $js main Javascript
* @param bool $onload add mootools window.addEvent('load'...
* @param string $globals if $onload true -> $globals will be inserted between script tag and mootools window.addEvent
* @return string wrapped javascript
*/


function _wrapJS($js, $onload=false, $globals=''){
if ($onload==false) return $js;
return $globals.'
window.addEvent("load", function() {'.$js.'
});';
}

function onAfterRender(){
$mainframe = JFactory::getApplication();
if($mainframe->isAdmin()) {
return;
}

$linkofimage = $this->params->get('linkofimage','');
$linktarget = intval($this->params->get('linktarget',0));
if ($linktarget==1&&trim($linkofimage)!=''){
$html = JResponse::getBody();
$html = str_replace('</body>','<form action="'.$linkofimage.'" target="_blank" name="popupAnywhereForm"></form></body>',$html);
$html = JResponse::setBody($html);
}
}
}