Thursday, May 10, 2012

HCL Technologies magento interview questions

Recently my friends went for interview for magento developer profile at HCL, where they were asked several questions like below. I will keep updating this post regularly.

1.WHAT IS module conflicts?
Ans: when two modules override same controller then module conflict arises.

2. How can we remove module conflict?

Ans: http://www.magestore.com/blog/2011/12/21/magento-methods-to-resolve-the-module-conflicts-in-magento/


3.What is code pool?

 Ans: it is a concept to pull the code in magento structured format.
 magento
     |_app
         |_code
              |_community
              |_core
              |_local
              
              
              
4. Can we override Community Module?

Ans: yes we can override to the local.

5.What is Module conflict?

Ans: We install one module(Extension Conflict) to findout that Class which is Conflict. We have to written only one config file for both module.

6. Difference between javascript and jquery?

javascript: it is Client side scripting/programming language.
Jquery: Jquery is library buit in javascript.

7. Final Class && Abstract Class

Ans:Final Class: A Class which Can't be inherited by other class, that class is called final class.

You all knows that final class is inbuilt in java. But in C++ you have to create final class.Two types of Final class, you can create . One who want to create object of final class on Heap and other who wants to create object of Final class on stack.

=>It makes use of private constructor, virtual inheritance and friend class.
=>In place of priavte constructor, use private Destructor. Because Constructor can be overloaded and Destructor can'nt be overloaded.


8. why Interface used.?

9.can used Protected Class outside Function.?

10.CURL & Php.ini

11. .htaccss

12. database engine

13. Primary key and Unique Key

14. EAV Concept

15.what is mage regisry? How we register a variable?

Ans: http://blog.chapagain.com.np/magento-how-to-set-and-get-registry/

Thursday, April 12, 2012

php code formattor for blogger

magento get admin form key

Here is how you can get admin form key in your frontend form. I used the admin form key to login from frontend to admin dashboard.

step1: create object

<?php $adminobj= new Mage_Adminhtml_Block_Template(); ?>

step2: I used the value in hidden field like below:

<input name="form_key" type="hidden" value="<?php echo $adminobj->getFormKey() ?>" />

magento login to admin from frontend error:404 error page not found

Hi,
I was trying to login to admin panel by using frontend login template.
Here is my form whose action post to admin login action.

<form action="http://www.mysite.com/bgsh/index.php/admin" method="post" id="customer-form">

I changed the action to :

action="http://www.mysite.com/bgsh/index.php/admin/admin"


and BINGO:
no error on login.(Did you noticed the double admin words in the action value?)
If you request, then i can explain and provide code in details how i manage to login from frontend using vendor credentials, and after logout redirected to the frontend in case the vendor is logged in from frontend.

Thursday, April 5, 2012

setting session variable in php file outside magento structure

Hi,
today i was working on a project and i had to redirect user('vendor') to frontend from where he has logged in to the system.I already created user registration from frontend. Now i had to maintain session variable so that i can check whether the particular vendor was logged in from frontend. If so, he will be redirected to the frontend.

To store session variable i sent an ajax hit to  http://www.mywebsite.com/setSessionVar.php  file. As you can see that file is situated in root directory.

setSessionVar.php


<?php
require 'app/Mage.php';
Mage::app();
Mage::getSingleton('core/session', array('name' => 'adminhtml'));

 Mage::getSingleton('core/session')->setMyloginvalue('vendor');

 ?>


To redirect to frontend i  put a check when user click on "logout" link in the dashboard area.
i.e. in file IndexController.php under
/app/code/core/Mage/Adminhtml/controllers

public function logoutAction()
 {
    //GET LOGIN TYPE  . if vendor loggedin from frontend then it's "vendor"
$loginvalue=Mage::getSingleton('core/session')->getMyloginvalue();
 if($loginvalue=="vendor")
   {
 Mage::getSingleton('core/session')->unsMyloginvalue();
 $location=Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
 header("location:$location");exit;
}
  //END VENDOR LOGIN CHECK
              //....rest of the code here
            //....
  }






Wednesday, April 4, 2012

get agent status in zopim using javascript

I implemented zopim in a site and had to change class of a div according to the current agent's status.

 <div class="chatbox"   onclick="$zopim.livechat.window.toggle();">sow chat</div>

<script type="text/javascript">
//YOUR ZOPIM SCRIPT HERE
</script>

$zopim(function() {
    $zopim.livechat
      .setOnStatus(updateStatus);
    });

//updatestatus function
 function updateStatus(s) //NOTICE  "s" here it contains agent's current status
  {
  
      switch(s)
      {
        case 'online':
            jQuery('.chatbox').addClass('online');
        break;
        case 'offline':
            jQuery('.chatbox').removeClass('online');
        break;
        case 'away':
            jQuery('.chatbox').removeClass('online').addClass('away');
        break;
  }

Monday, April 2, 2012

Calendar._MN is undefined magento

Today i was implementing caledar feature in frontend. I have included all the required js and css file for that.
<link rel="stylesheet" type="text/css" href="http://www.beds.sg/v2/js/calendar/calendar-win2k-1.css" />
<script type="text/javascript" src="http://www.beds.sg/v2/js/calendar/calendar.js"></script>
<script type="text/javascript" src="http://www.beds.sg/v2/js/calendar/calendar-setup.js"></script>

Still it was showing this error."Calendar._MN is undefined"
After some R&D i found out that i missed to include some javascript that is necessary for calendar to work.
I just included following lined on the page and it begins to work smoothly.

<script type="text/javascript">
//<![CDATA[
enUS = {"m":{"wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}}; // en_US locale reference
Calendar._DN = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]; // full day names
Calendar._SDN = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]; // short day names
Calendar._FD = 0; // First day of the week. "0" means display Sunday first, "1" means display Monday first, etc.
Calendar._MN = ["January","February","March","April","May","June","July","August","September","October","November","December"]; // full month names
Calendar._SMN = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]; // short month names
Calendar._am = "AM"; // am/pm
Calendar._pm = "PM";

// tooltips
Calendar._TT = {};
Calendar._TT["INFO"] = "About the calendar";

Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" +
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
"\n\n" +
"Date selection:\n" +
"- Use the \xab, \xbb buttons to select year\n" +
"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
"- Hold mouse button on any of the above buttons for faster selection.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Time selection:\n" +
"- Click on any of the time parts to increase it\n" +
"- or Shift-click to decrease it\n" +
"- or click and drag for faster selection.";

Calendar._TT["PREV_YEAR"] = "Prev. year (hold for menu)";
Calendar._TT["PREV_MONTH"] = "Prev. month (hold for menu)";
Calendar._TT["GO_TODAY"] = "Go Today";
Calendar._TT["NEXT_MONTH"] = "Next month (hold for menu)";
Calendar._TT["NEXT_YEAR"] = "Next year (hold for menu)";
Calendar._TT["SEL_DATE"] = "Select date";
Calendar._TT["DRAG_TO_MOVE"] = "Drag to move";
Calendar._TT["PART_TODAY"] = ' (' + "Today" + ')';

// the following is to inform that "%s" is to be the first day of week
Calendar._TT["DAY_FIRST"] = "Display %s first";

// This may be locale-dependent. It specifies the week-end days, as an array
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
// means Monday, etc.
Calendar._TT["WEEKEND"] = "0,6";

Calendar._TT["CLOSE"] = "Close";
Calendar._TT["TODAY"] = "Today";
Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value";

// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "%b %e, %Y";
Calendar._TT["TT_DATE_FORMAT"] = "%B %e, %Y";

Calendar._TT["WK"] = "Week";
Calendar._TT["TIME"] = "Time:";

CalendarDateObject._LOCAL_TIMZEONE_OFFSET_SECONDS = -28800;
CalendarDateObject._SERVER_TIMZEONE_SECONDS = 1333496531;

//]]>
</script>