For Negative Text Indent Text Align left is must : CSS Issue

I got an an email from a customer that anchor text is showing as they should not as we used image in anchor tag and used text indent negative.

An interesting finding for CSS issue for

* to make the negative indent you must set the property text align left. Text align right with text indent negative will not work.

http://blog.adambard.com/2008/02/20/why-isnt-my-negative-text-indent-hiding-text/ that blog post helped me.

Jomsocial auth Controller callback fix to allow other application

I was working with a new extension for jomsocial for auto update any jomsocial status update to linkedin. Please note that jomsocial has a packaged apps for twitter for such purpose and that’s why I was trying to go with same thing for linkedin and tried to use the jomsocial library etc. After authentication callback it was trying to access a method of jomsocial default twitter plugin. That means a hardcode class and it’s method.

Let me share the controller class

class CommunityOauthController extends CommunityBaseController
{
	public function callback()
	{
		$mainframe	=& JFactory::getApplication();
		$my			= CFactory::getUser();
		$denied     = JRequest::getVar( 'denied' , '' );
		$app        = JRequest::getVar( 'app' , '' );
		$url        = CRoute::_('index.php?option=com_community&view=profile&userid=' . $my->id , false );

		if( empty($app) )
		{
			echo JText::_('COM_COMMUNITY_INVALID_APPLICATION');
			return;
		}

		if( $my->id == 0 )
		{
			echo JText::_('COM_COMMUNITY_INVALID_ACCESS');
			return;
		}

		if( !empty( $denied ) )
		{
		    $mainframe->redirect( $url , JText::_( 'COM_COMMUNITY_OAUTH_APPLICATION_ACCESS_DENIED_WARNING' ) );
		}

		$oauth	=& JTable::getInstance( 'Oauth' , 'CTable' );
		if( $oauth->load( $my->id , $app ) )
		{
			$consumer       = plgCommunityTwitter::getConsumer();
			$oauth->userid	= $my->id;
			$oauth->app     = $app;
			$getData    	= JRequest::get('get');

			try
			{
			    $oauth->accesstoken 	= serialize( $consumer->getAccessToken( $getData , unserialize( $oauth->requesttoken ) ) );
			}
			catch( Exception $error )
			{
			    $mainframe->redirect( $url , $error->getMessage() );
			}

			if( !empty($oauth->accesstoken) )
			{
				$oauth->store();
			}
			$msg	= JText::_( 'COM_COMMUNITY_OAUTH_AUTHENTICATION_SUCCESS' );
			$mainframe->redirect( $url , $msg );
		}
	}

Check line number 31
$consumer = plgCommunityTwitter::getConsumer();

Suppose if we take the getConsumer() method is a standard practice to get the configuration for the authentication method for jomsocial application for social network then we can make the plgCommunityTwitter class name here dynamic depending on the variable found from
$app = JRequest::getVar( ‘app’ , ” );

for twitter we get $app = ‘twitter’ and as I was developing another apps plugin and it’s application name is “cblinkedin” it will get $app = ‘cblinkedin’

So just modifying the line 31 will give other extension developer use this controller and this will be more practical and my suggestion here is modifying the code like

//$consumer       = plgCommunityTwitter::getConsumer();
                        //$consumer       = plgCommunityCBLinkedin::getConsumer();
                        $appclassname   = strtolower('plgCommunity'.$app);                        
                        $consumer       = call_user_func( array($appclassname,'getConsumer') );  

What do you think ?

BTW, we are close to develop an jomsocial extension that will allow users to update their jomsocial status update to linkedin as the core twitter apps does. Let me show my screenshot of current work.

I am testing here

Update: 12.08.2012
I have a new update for the above issue and that can be solved using adding an extra method in the plugin.

Solution is using onSystemStart method and check if the app is your plugin app and task is call back.

function onSystemStart(){
                    $mainframe  =& JFactory::getApplication();
                    $my         = CFactory::getUser();
                    $denied     = JRequest::getVar( 'denied' , '' );
                    $app        = JRequest::getVar( 'app' , '' );
                    $task       = JRequest::getVar( 'task' , '' );
                    $url        = CRoute::_('index.php?option=com_community&view=profile&userid=' . $my->id , false );
                    if($app == 'cblinkedin' && $task == 'callback'){
                        if( $my->id == 0 )
                        {
                                echo JText::_('COM_COMMUNITY_INVALID_ACCESS');
                                return;
                        }

                        if( !empty( $denied ) )
                        {
                            $mainframe->redirect( $url , JText::_( 'COM_COMMUNITY_OAUTH_APPLICATION_ACCESS_DENIED_WARNING' ) );
                        }

                        $oauth	=& JTable::getInstance( 'Oauth' , 'CTable' );
                        if( $oauth->load( $my->id , $app ) )
                        {
                              
                              
                                $consumer       = plgCommunityCBLinkedin::getConsumer();                              
                                $oauth->userid	= $my->id;
                                $oauth->app     = $app;
                                $getData    	= JRequest::get('get');

                                try
                                {
                                    $oauth->accesstoken 	= serialize( $consumer->getAccessToken( $getData , unserialize( $oauth->requesttoken ) ) );
                                }
                                catch( Exception $error )
                                {
                                    $mainframe->redirect( $url , $error->getMessage() );
                                }

                                if( !empty($oauth->accesstoken) )
                                {
                                        $oauth->store();
                                }
                                $msg	= JText::_( 'COM_COMMUNITY_OAUTH_AUTHENTICATION_SUCCESS' );
                                $mainframe->redirect( $url , $msg );
                        }
                    }                    
                    
                }

But still I think if jomsocial gives 3rd party plugins execution for it’s built in Controller.

একদিন একটা কবিতা লিখেছিলাম

একদিন একটা ল্যাম্পপোস্টকে ভালোবেসেছিলাম, জানান না দিয়েই ওটা ঝড়ে ভেঙে পড়েছিল।

একদিন একটা ইনার্জি সেভিং বাল্বকে দেখে স্বপ্ন দেখা শুরু করেছিলাম, কিছুদিনের ভেতর ফিউজ হয়ে গিয়েছিল।

একদিন একটা ডাস্টবিনের ময়লাগুলোকে মনে ধরে ছিল, পরের দিন দেখি সেগুলো সিটিকর্পোরেশন নিয়ে গেছে !

একদিন একটা কবিতা লিখেছিলাম, কেউ পড়ার আগেই ছিড়ে টুকরো টুকরো করে উড়িয়ে দিলাম।

নোটঃ ফেসবুকের স্ট্যাটাস হিসাবে যোগকৃত এখানে

ছোট্ট পুঁটি মাছ

জানার চেস্টা করি নাই ঠিক তা নয়,
তবে জানতে জানতে যে সময় চলে যায় তা ঠাওর করা কঠিন হয়ে যায়।

ছোট্ট পুঁটি মাছ, আধার পরিক্ষা করতে গিয়ে যেভাবে বর্শিতে বিঁধে যায় শেষ করে প্রাণ সেভাবে আমাকে একদিন খেয়েছিল মহাকাল !

প্রাণ ভয়ে আমি সেবার ঠিক পিছু হঠে আসি নাই বরং পেরিয়ে গিয়েছিলাম ল্যাংটা কাঁদা ! কারণ মরে যাবার থেকে আমাকে বেশি ভীত করেছিল আধ মরা হয়ে মৃত্যুর জন্য ঝুলে থাকা !!

মনে আছে সেই আসামীর কথা যাকে ফাঁসীর দরিতে ঝুলিয়ে রাখা হয়েছিল কিন্তু আজও মৃত্যুদন্ড কার্যকর করা হয়নি। রশিতে রশিতে ঝুলতে ঝুলতে সে ক্লান্ত হয়ে মুখ দিয়ে আউড়ে দিয়েছিল খিস্তি “অস্পৃশ্য, ছোটলোক !”

০৫.০৮.২০১২
ফেসবুকে স্ট্যাটাস হিসাবে যোগকৃত।

Fixing ‘DS’ error in joomla 3.0 alpha

I was checking the Joomla! 3.0.0_Alpha1 version and got an error after installing one of extension that shows Directory separator constant DS error. So if you get such error for any of your extension try this code

if(!defined('DS')){
    define('DS',DIRECTORY_SEPARATOR);
}

May be making a system plugin can solve this problem. I developed one 😛

  Fix DS error in joomla 3.0 (1.3 KiB, 1,287 hits)

BTW, we develop custom joomla extension at codeboxr.com