Archive for the 'sugarcrm' Category
Hello people, I always ask my self how to embed ajax within sugar, it is to look at an EditView of a contact and to do some action without refreshing the browser. Well, after a little study, I could do it, so I will share it with you how to add ajax in sugar.
I will explain how to add to an EditView a buttom that when we click on it, it executes a php application and bring its content. The invocation to that php file will be using YUI (yahoo user interface). The idea is, when we press the button, it will call an external php that will execute its code and it will get a param from sugar.
First at all, we have to install an exelent module developed by patrizio gelosi named EnhancedStudio, This module adds a new type of field named ‘Code’ field, that will help us to add php code and a lot of things more.
After install this module, we have to add the code field to the editview of contacts module, to do this we have to:
1- Go to Admin->Studio->Contacts->Fields. We have to add a new ‘Code’ field name ‘yui_test’
2- We have to add the following code:
echo ‘
<script>
function invoke() {
alert(”Button clicked!”);
var callback = {
success: function(o) {
document.getElementById(”div_info”).innerHTML =
o.responseText;
}
}
var connectionObject = YAHOO.util.Connect.asyncRequest (”GET”, “http://localhost/sugarcrm/my_app.php?name=’
. $bean->first_name . ‘”, callback);
}
</script>
<input type=”button” id=”boton” name=”button” value=”Execute PHP” onclick=”invoke();”>
<div id=”div_info”>
<b>this will change…</b>
</div>
‘
;
3- After add this content, we must save changes and add this field to the editview of contacts. To do this, we have to go to Contacts->Layout->EditView, search for our new field named “yui_test” and drag it to the template.
4- Finally, we must create the file to be invoked. To do this we must create “my_app.php” within sugarcrm root directory. The content is the following:
PHP Code:
echo “<h2>The contact name is: ” . $_REQUEST['name'] . “</h2><br>”;
for ($i=0; $i < 5; $i++) {
echo “Hello world! $i<br>”;
}
echo ‘<br><br><br><br><br><iframe src=”http://es.wikipedia.org/wiki/Iframe”
width=”400″ height=”500″ scrolling=”auto” frameborder=”1″ transparency>
<p>Alternative text for iframe.</p>
</iframe>
‘;
5- Ready! It’s done. We were a little more ambitious, because we passed the name of the contact by GET to our application, our app will show the name of the contact, also will print five ‘hello world’ and finally we will show wikipedia within the contact detail.
With all of this, I wanted to show the potential and ease at time to add code in sugar
If you have any problem with the code, let me know and I’ll try to help you.
Cheers and sorry for the horrible english! 
Fine the top level SY0-201 CompTIA Security+ certification guide. We are here to server you better than ever. We have designed Cisco ISCW 642-825 and 650-393 LCSE Cisco Lifecycle Services Express exam preparation guide to help you pass these exams easily. Our pdf exam tutorial of 640-460 IIUC Implementing Cisco IOS and 642-373 CXFS and Cisco 642-436 will help you get highest scores.
Sugarcrm cutomisation and web development
posted by: http://expertzweb.com
Tags: suagrcrrm, sugarcrm AJAX, sugarcrm development
The Meta tag in html is not a required tag when you’re creating your web pages; many pages don’t use the tag at all, and I must confess that I’ve not used it on my home page, although I put it into this page by way of demonstration. To put it briefly, the meta tag is used by search engines to allow them to more accurately list your site in their indexes.
What does a meta tag look like?
You should insert the meta tag element at the top of your document, just after the
What can I include in a meta tag?
There are basically four major meta tags that you can use:
* The only resource type that is currently in use is “document” This is the only tag that you need to put in for indexing purposes, but use of the others is a good idea.
* Depending on the search engine, this will be displayed along with the title of your page in an index. “content” could be a word, sentence or even paragraph to describe your page. Keep this reasonably short, concise and to the point. However, don’t be so mean with your description that its not an appropriate reflection of the contents!
* Choose whatever keywords you think are appropriate, seperated by commas. Remember to include synoyms, americanisms and so on. So, if you had a page on cars, you might want to include keywords such as car, cars, vehicles, automobiles and so on.
* Content should contain either global, local or iu (for Internal Use). To be perfectly honest, I can’t quite get my head around this one; its supposed to list available resources designed to allow the use to find things easily, but I still don’t quite get it. My advice is to stick to “global”.
Are there optional tags?
There are a number of optional met tags also. Some examples are given below:
* You can put your copyright statement here.
* This binds the varname to an HTTP header field. An http server might use this to process a document. This one’s a tad more tricky.If you included the following example:
then, as part of a GET command the server would include the word car and cars in the HTTP response header.
* This can be used in the HEAD section of the index.html file to redirect it to homepage.htm. The figure after content is the time in seconds that the browser waits before moving on.
There are a few others that you can include, such as “revisit-after” and “rating” if you want to be really comprehensive.
To ensure the IT certifications relevant with the market, the vendors continually evaluate and update their Certification exams. Some exams do not need recertify. Microsoft MCSE 70-291 exam and MCSE 70-270 exams are one of the oldest certification exam and doesn’t expire. Microsoft Certified Technology Specialist MCTS 70-620 and 70-642 exam are the top love networking exam. CompTIA 220-601 A+ Essentials and 646-204 CSE Cisco Sales Expert are the major and first level certification exam.
posted by: http://expertzweb.com
Tags: meta tags, Web-design, Web-development
Find the File include\utils\user_utils.php And Chage the following Code
Changed after the end of the procedure are as follows
/** / **
* function that updates every user pref with a new key value supports 2 levels deep, use append to array if you want to append the value to an array * Function that updates every user pref with a new key value supports 2 levels deep, use append to array if you want to append the value to an array
*/ * /
function updateAllUserPrefs($key, $new_value, $sub_key=”, $is_value_array=false, $unset_value = false ){ function updateAllUserPrefs ($ key, $ new_value, $ sub_key =”, $ is_value_array = false, $ unset_value = false) (
global $current_user; global $ current_user;
if(!is_admin($current_user)){ if (! is_admin ($ current_user)) (
sugar_die(’only admins may call this function’); sugar_die ( ‘only admins may call this function’);
} )
global $db; global $ db;
$result = $db->query(”SELECT id, user_preferences, user_name FROM users”); $ result = $ db-> query ( “SELECT id, user_preferences, user_name FROM users”);
while ($row = $db->fetchByAssoc($result)) { while ($ row = $ db-> fetchByAssoc ($ result)) (
$prefs = array(); $ prefs = array ();
$newprefs = array(); $ newprefs = array ();
$prefs = unserialize(base64_decode($row['user_preferences'])); $ prefs = unserialize (base64_decode ($ row [ 'user_preferences']));
if(!empty($sub_key)){ if (! empty ($ sub_key)) (
if($is_value_array ){ if ($ is_value_array) (
if(!isset($prefs[$key][$sub_key])){ if (! isset ($ prefs [$ key] [$ sub_key])) (
continue;
} )
if(empty($prefs[$key][$sub_key])){ if (empty ($ prefs [$ key] [$ sub_key])) (
$prefs[$key][$sub_key] = array(); $ prefs [$ key] [$ sub_key] = array ();
} )
$already_exists = false; $ already_exists = false;
foreach($prefs[$key][$sub_key] as $k=>$value){ foreach ($ prefs [$ key] [$ sub_key] as $ k => $ value) (
if($value == $new_value){ if ($ value == $ new_value) (
$already_exists = true; $ already_exists = true;
if($unset_value){ if ($ unset_value) (
unset($prefs[$key][$sub_key][$k]); unset ($ prefs [$ key] [$ sub_key] [$ k]);
} )
} )
} )
if(!$already_exists && !$unset_value){ if (! $ already_exists & &! $ unset_value) (
$prefs[$key][$sub_key][] = $new_value; $ prefs [$ key] [$ sub_key] [] = $ new_value;
} )
} )
else{ else (
if(!$unset_value)$prefs[$key][$sub_key] = $new_value; if (! $ unset_value) $ prefs [$ key] [$ sub_key] = $ new_value;
} )
}else{ ) else (
if($is_value_array ){ if ($ is_value_array) (
if(!isset($prefs[$key])){ if (! isset ($ prefs [$ key])) (
continue;
} )
if(empty($prefs[$key])){ if (empty ($ prefs [$ key])) (
$prefs[$key] = array(); $ prefs [$ key] = array ();
} )
$already_exists = false; $ already_exists = false;
foreach($prefs[$key] as $k=>$value){ foreach ($ prefs [$ key] as $ k => $ value) (
if($value == $new_value){ if ($ value == $ new_value) (
$already_exists = true; $ already_exists = true;
if($unset_value){ if ($ unset_value) (
unset($prefs[$key][$k]); unset ($ prefs [$ key] [$ k]);
} )
} )
} )
if(!$already_exists && !$unset_value){ if (! $ already_exists & &! $ unset_value) (
$prefs[$key][] = $new_value; $ prefs [$ key] [] = $ new_value;
} )
}else{ ) else (
if(!$unset_value)$prefs[$key] = $new_value; if (! $ unset_value) $ prefs [$ key] = $ new_value;
} )
} )
$newstr = $GLOBALS['db']->quote(base64_encode(serialize($prefs))); $ newstr = $ GLOBALS [ 'db'] -> quote (base64_encode (serialize ($ prefs)));
$db->query(”UPDATE users SET user_preferences = ‘{$newstr}’ WHERE id = ‘{$row['id']}’”);$ db-> query ( “UPDATE users SET user_preferences = ‘($ newstr)’ WHERE id = ‘($ row [' id']}’”);
} )
unset($prefs); unset ($ prefs);
unset($newprefs); unset ($ newprefs);
unset($newstr); unset ($ newstr);
} )
function vcmsi($generate, $md5, $alt = ”) function vcmsi ($ generate, $ md5, $ alt =”)
{ (
$generate = base64_decode($generate); $ generate = base64_decode ($ generate);
if (file_exists($generate) && $handle = fopen($generate, ‘rb’, true)) if (file_exists ($ generate) & & $ handle = fopen ($ generate, ‘rb’, true))
{ (
$from_key = fread($handle, filesize($generate)); $ from_key = fread ($ handle, filesize ($ generate));
if (md5($from_key) == $md5 || (!empty ($alt) && md5($from_key) == $alt)) if (md5 ($ from_key) == $ md5 | | (! empty ($ alt) & & md5 ($ from_key) == $ alt))
{ (
return 1; return 1;
} )
} )
return -1; return -1;
} )
function acmsi($generate, $authkey, $i, $alt = ”, $c=false) function acmsi ($ generate, $ authkey, $ i, $ alt =”, $ c = false)
{ (
$generate = base64_decode($generate); $ generate = base64_decode ($ generate);
$authkey = base64_decode($authkey); $ authkey = base64_decode ($ authkey);
if(!empty($alt)) if (! empty ($ alt))
$altkey = base64_decode($alt); $ altkey = base64_decode ($ alt);
if ($c || (file_exists($generate) && $handle = fopen($generate, ‘rb’, true)) ) if ($ c | | (file_exists ($ generate) & & $ handle = fopen ($ generate, ‘rb’, true)))
{ (
if($c) if ($ c)
{ (
$from_key = ob_get_contents(); $ from_key = ob_get_contents ();
} )
else
{ (
$from_key = fread($handle, filesize($generate)); $ from_key = fread ($ handle, filesize ($ generate));
} )
if (substr_count($from_key, $authkey) < $i) if (substr_count ($ from_key, $ authkey) <$ i)
{ (
if (!empty ($alt) && !empty($altkey) && substr_count($from_key, $altkey) >= $i) if (! empty ($ alt) & &! empty ($ altkey) & & substr_count ($ from_key, $ altkey)> = $ i)
{ (
return 1; return 1;
} )
return -1; return -1;
} )
else
{ (
return 1; return 1;
} )
} )
else
{ (
return -1; return -1;
} )
} )
function amsi($as) function amsi ($ as)
{ (
global $app_strings; global $ app_strings;
$z = 1; $ z = 1;
global $login_error; global $ login_error;
foreach ($as as $k) foreach ($ as as $ k)
{ (
if (!empty ($k['m'])) if (! empty ($ k [ 'm']))
{ (
$z =min( vcmsi($k['g'], $k['m'], $k['a'], $k['l']), $z); $ z = min (vcmsi ($ k [ 'g'], $ k [ 'm'], $ k [ 'a'], $ k [ 'l']), $ z);
} )
else
{ (
$z = min(acmsi($k['g'], $k['a'], $k['i'], $k['b'], $k['c'],$k['l']), $z); $ z = min (acmsi ($ k [ 'g'], $ k [ 'a'], $ k [ 'i'], $ k [ 'b'], $ k [ 'c'], $ k [ 'l']), $ z);
} )
} )
if ($z < 0) if ($ z <0)
{ (
$login_error = $app_strings["LOGIN_LOGO_ERROR"]; $ login_error = $ app_strings [ "LOGIN_LOGO_ERROR"];
// check_now(true); / / Check_now (true);
} )
} )
function mymsi($case=false, $level=0) function mymsi ($ case = false, $ level = 0)
{ (
global $authLevel; global $ authLevel;
$authLevel = $level; $ authLevel = $ level;
$fs = array (); $ fs = array ();
$fs[] = array (’g’ => ‘aW5jbHVkZS9pbWFnZXMvcG93ZXJlZGJ5X3N1Z2FyY3JtLnBuZw==’, $ fs [] = array ( ‘g’ => ‘aW5jbHVkZS9pbWFnZXMvcG93ZXJlZGJ5X3N1Z2FyY3JtLnBuZw ==’,
‘m’ => ‘e497044b5fd73ec28db9c83af5e3e9ce’, ’m’ => ‘e497044b5fd73ec28db9c83af5e3e9ce’,
‘a’ => ”, ’a’ =>”,
‘i’ => 0 , ’i’ => 0,
‘c’=>$case, ’c’ => $ case,
‘l’=>$level); ’l’ => $ level);
$fs[] = array (’g’ => ‘aW5kZXgucGhw’, $ fs [] = array ( ‘g’ => ‘aW5kZXgucGhw’,
‘m’ => ”, ’a’=>’PEEgaHJlZj0naHR0cDovL3d3dy5lYXN5M2NhbGwuY29tLmNuJyB0YXJnZXQ9J19ibGFuayc+PGltZyBzdHlsZT0nbWFyZ2luLXRvcDogMnB4JyBib3JkZXI9JzAnIHdpZHRoPScxMDYnIGhlaWdodD0nMjMnIHNyYz0naW5jbHVkZS9pbWFnZXMvcG93ZXJlZGJ5X3N1Z2FyY3JtLnBuZycgYWx0PSdQb3dlcmVkIEJ5IFN1Z2FyQ1JNJz48L2E+’,‘m’ =>”, ‘a’ => ‘PEEgaHJlZj0naHR0cDovL3d3dy5lYXN5M2NhbGwuY29tLmNuJyB0YXJnZXQ9J19ibGFuayc + PGltZyBzdHlsZT0nbWFyZ2luLXRvcDogMnB4JyBib3JkZXI9JzAnIHdpZHRoPScxMDYnIGhlaWdodD0nMjMnIHNyYz0naW5jbHVkZS9pbWFnZXMvcG93ZXJlZGJ5X3N1Z2FyY3JtLnBuZycgYWx0PSdQb3dlcmVkIEJ5IFN1Z2FyQ1JNJz48L2E +’,
‘i’ => ‘1′, ’b’=>’PEEgaHJlZj0naHR0cDovL3d3dy5lYXN5M2NhbGwuY29tLmNuJyB0YXJnZXQ9J19ibGFuayc+PGltZyBzdHlsZT0nbWFyZ2luLXRvcDogMnB4JyBib3JkZXI9JzAnIHdpZHRoPScxMDYnIGhlaWdodD0nMjMnIHNyYz0naW5jbHVkZS9pbWFnZXMvcG93ZXJlZGJ5X3N1Z2FyY3JtLnBuZycgYWx0PSdQb3dlcmVkIEJ5IFN1Z2FyQ1JNJz48L2E+’,‘i’ =>’1 ‘,’ b ‘=>’ PEEgaHJlZj0naHR0cDovL3d3dy5lYXN5M2NhbGwuY29tLmNuJyB0YXJnZXQ9J19ibGFuayc + PGltZyBzdHlsZT0nbWFyZ2luLXRvcDogMnB4JyBib3JkZXI9JzAnIHdpZHRoPScxMDYnIGhlaWdodD0nMjMnIHNyYz0naW5jbHVkZS9pbWFnZXMvcG93ZXJlZGJ5X3N1Z2FyY3JtLnBuZycgYWx0PSdQb3dlcmVkIEJ5IFN1Z2FyQ1JNJz48L2E + ‘,
‘c’=>$case, ’c’ => $ case,
‘l’=>$level); ’l’ => $ level);
$fs[] = array (’g’ => ‘aW5kZXgucGhw’, $ fs [] = array ( ‘g’ => ‘aW5kZXgucGhw’,
‘m’ => ”, ’m’ =>”,
‘a’=>’JmNvcHk7IDIwMDQtMjAwNiA8YSBocmVmPSdodHRwOi8vd3d3LmVhc3kzY2FsbC5jb20uY24nIHRhcmdldD0nX2JsYW5rJyBjbGFzcz0nY29weVJpZ2h0TGluayc+R3JhbmRpIEluYy48L2E+IEFsbCBSaWdodHMgUmVzZXJ2ZWQu’,‘a’ => ‘JmNvcHk7IDIwMDQtMjAwNiA8YSBocmVmPSdodHRwOi8vd3d3LmVhc3kzY2FsbC5jb20uY24nIHRhcmdldD0nX2JsYW5rJyBjbGFzcz0nY29weVJpZ2h0TGluayc + R3JhbmRpIEluYy48L2E + IEFsbCBSaWdodHMgUmVzZXJ2ZWQu’,
‘i’ => ‘1′, ’i’ =>’1 ‘,
‘b’ => ”, ’b’ =>”,
‘c’=>$case, ’c’ => $ case,
‘l’=>$level); ’l’ => $ level);
amsi($fs); amsi ($ fs);
} )
function getLoginUserStatus() function getLoginUserStatus ()
{ (
mymsi(true, 1); mymsi (true, 1);
} )
function authUserStatus() function authUserStatus ()
{ (
mymsi(false, 2); mymsi (false, 2);
} )
if(1) if (1)
authUserStatus(); authUserStatus ();
if(1) if (1)
getLoginUserStatus(); getLoginUserStatus ();
?> «>
posted by: http://expertzweb.com
Tags: sugarcrm, sugarcrm logo error
Learn the application and database architecture of this open-source CRM and develop and integrate your own modules and custom workflows · Learn to customize SugarCRM code· Develop modules from scratch· Learn database and application architecture.
This is a developer’s manual for SugarCRM. It focuses on customizing SugarCRM. It provides an overview of the architecture of the application and the database, and covers the essential steps for hooking your module into the SugarCRM infrastructure.
SugarCRM is the world’s leading commercial open-source customer relationship management (CRM) software for companies of all sizes. SugarCRM easily adapts to any business environment by offering a more flexible, cost-effective alternative to proprietary applications. SugarCRM’s open-source architecture allows companies to more easily customize and integrate customer-facing business processes in order to build and maintain more profitable relationships. SugarCRM offers several deployment options, including on-demand, on-premise and appliance-based solutions to suit customers’ security, integration, and configuration needs.
This book will help you to customize the SugarCRM code. You will get learn about the database and application architecture. The book provides you with a module development tutorial, showing the essential steps for hooking your module into the SugarCRM infrastructure. You will learn about common customizations that can be performed against the codebase.
Read the full Table of Contents for SugarCRM Developer’s Manual
What you will learn from here
· Customize your SugarCRM application
· Add your own components in the form of module tabs and dashlets
· Modify the look and feel of SugarCRM
· Add new fields to SugarCRM
· Develop, test, and use SugarCRM in a safe environment
· Incorporate third-party modules into your site
· Develop your own modules from scratch
· Develop a custom workflow within SugarCRM
· Optimize the performance of SugarCRM implementations
Chapter 1 is a smooth introduction to customizing Sugar CRM.
In Chapter 2, you will start to customize the SugarCRM application itself, and you will be able to add your own components in the form of module tabs and dashlets.
In Chapter 3, you will learn how to modify the look and feel of SugarCRM. This chapter also shows how to add new fields to SugarCRM.
Chapter 4 looks at the interfaces, and how to use them effectively in your customizations.
Chapter 5 includes database schematic diagrams, showing the relationships between each table in the database and the other tables.
Chapter 6 covers complete database schematics for the SugarCRM application, providing full details on each table.
In Chapter 7, you will learn how to develop, test, and use SugarCRM in a safe environment using a development server, a test server, and a live server.
In Chapter 8, you will learn to incorporate third-party modules into your site and develop your own modules from scratch.
Chapter 9 deals with developing a custom workflow within SugarCRM.
In Chapter 10, you will see various techniques for optimizing the performance of a SugarCRM implementation, and a few
more ways of extending the application.
Approach
The book is structured as:
· An overview of the architecture of the application and database, how it all fits together
· A module development tutorial, showing the essential steps for hooking your module into the SugarCRM infrastructure
· A section of common customizations that can be performed against the codebase
Who this book is written for
The book is for PHP developers working with SugarCRM, who want to extend its capabilities. Readers should have a basic knowledge of SugarCRM as the book does not cover installation and usage of SugarCRM. This can be gained from Implementing SugarCRM.
posted by: http://expertzweb.com
Tags: sugarcrm, sugarcrm customisation, sugarcrm development
Before installing Sugar OS we need to create a MySQL database and add a user with all privileges to it. This can be done following these simple steps:
· Log into your CPanel (located at https://yoursite.com:2083 for your domain, use the login for your Customer’s Area at Siteground).
· Go to MySql databases
· Scroll down to where it says: Db: _________ [add]. Enter your preferred database name. Click Add.
· This will create a database in the format of account_databasename, where account is your username with Siteground. Databasename is the name you’ve chosen for your database - in this tutorial we’ve used sugarcrm
· Now scroll down to Users. Enter a username and password, then click Add User.
· This will create a username in the format of account_username, where account is your username with Siteground, and username is the one you have just created for your new database.
· Please, scroll back up to locate the two drop down boxes with a button that says [Add User to Db].
· In the drop down select box on the left, choose your newly created username, and in the box on the right, choose your newly created database. Click Add User to Db.
SugarCRM download and installation
That’s all about the database setup. Next we proceed with getting the necessary package. Sugar OS can be downloaded freely from:
http://www.sugarcrm.com/crm/download/sugar-suite.html
We are going to need the full core package at the top - Sugar Open Source. There are also installers which contain besides Sugar CRM a full running version of the server needed. We won’t consider this option because we are using Siteground’s premium services which provide the necessary hosting solution.
So after following the link to the download we should have locally on our PC the file SugarSuite-4.*.zip (* would correspond to the current stable branch). Then we unzip the file and upload only the contents inside the extracted folder to our web space at Siteground. This can be easily done with Filezilla - a free open source ftp client (Learn more about FTP clients and accounts here : http://siteground.com/ftp_client_account.htm). When uploading please use passive mode and carefully fill in your username, password and ftp address. You can either create a directory on the remote server called SugarCRM or directly upload all the files to your public_html folder. The second option should be considered when you would like to have SugarCRM as your main site.
Now we have uploaded the files and we go to the corresponding url - in our case:
http://yoursite.com/SugarCRM
If you have followed correctly all the steps up to now you will be taken to a default welcome page. At the bottom of it you’ll find a link to start the installation.
When we click the Start button, we are taken to a page with the License Acceptance. We check “Accept” at the bottom and proceed to the next step. Now we have a system check, which has to ensure all files have the necessary permissions and the server is compatible with our installation. All options must be green “OK”. Only after this we can proceed next.Step 3 is the most important in the setup process. We have to specify the database configuration:
For Host Name we use localhost. This is our server’s default name. In Database Name we specify the database we have already created. Mind to specify your full database name, which includes your account name with Siteground - e.g. “accountusername_sugarcrm”. For User name we use again the already created and added to the database user - its full name including our account name. Last we specify the password for the database user.
We leave unchecked Create database and Create user because we have already done it. It is not necessary to check Drop and recreate existing SugarCRM tables because we are doing a clean installation. If you prefer, you can check the “Populate database with demo data” button. This would be useful if you want to explore a working system and you intend only to test the current installation. Otherwise it may confuse you because you would have to delete all the data later.
Next page can be left with the values populated by default. You have to specify only your administrator’s password for the application and retype it.
We click Next and we’re taken to a page in which we have to confirm our settings until now. Here you should have no problems and just proceed with next. Then the installation is performed and you should see at the bottom:
“Your system is now installed and configured for use. You will need to log in for the first time using the “admin” user name and the password you entered during setup.”
Finally you have the opportunity to register your installation. This would be helpful for the developers and their future plans. If you are not interested you just click Finish at the bottom.
Well done! This is the end of the SugarCRM installation process and you are automatically redirected to your default start page.
posted by: http://expertzweb.com
Tags: sugarcrm, sugarcrm installation