Roundcube Community Forum

 

Custom Logos and Welcome Text based on domain name.

Started by Gus, August 08, 2007, 11:24:30 AM

Previous topic - Next topic

Gus

Folks,

i've customised a few of the pages to allow me to display different welcome text and logos depending on which domain is being used in the URL; i have several domains running from a single roundcube instance and my customers now get their own custom logos when they login

If anyone is interested, i'll post the code changes.

Cheers

Gus

oldschool


SKaero


Gus

OK, there are 2 ways to do this.

The first way is to edit each of the files which contain the branding logos/text, these are:

main.inc.php - the welcome text and window titles.
login.html - the login logo
header.html - the logo in the top left of all screens after login.

Each file is edited to first check the domain via javascript, then pick an IMG or text to show based on the result.... but i've realised a far far better way.

Just do this.
(i have several domains named, webmail.domain1.com, webmail.domain2.com etc. All pointing to the the same virtual area on my hosting account, an all reference a single instance of roundcube, single mysql etc.)

Edit the main.inc.php file, and put the following at the start:

function getDomain() {
$host=$_SERVER['HTTP_HOST'];
$prefix='webmail';
$arr=explode('.',$host);
if ($arr[0]==$prefix) { unset($arr[0]); $host=implode('.',$arr); }
else { $host=''; }
return $host;
}

I've then added this:
$rcmail_config['username_domain'] = getDomain();to allow my users to only use their ID and not the full email address.

then
// relative path to the skin folder
$rcmail_config['skin_path'] = 'skins/default/';
if (getDomain()=='domain1.com') {
$rcmail_config['skin_path'] = 'skins/domain1'; }
if (getDomain()=='domain2.com') {
$rcmail_config['skin_path'] = 'skins/domain2'; }
to force a skin based on the domain name.

then
// use this name to compose page titles
$rcmail_config['product_name'] = 'WebMail';
if (getDomain()=='domain1.com') { $rcmail_config['product_name']='domain1.com WebMail text'; }
if (getDomain()=='domain2.com') { $rcmail_config['product_name']='domain2.com WebMail text'; }
to change the welcome text at login based on the domain name.

and thats it.

let me know how you get on, it seems to work fine with my setup.


Julio

Not sure if it's a version change but I had to alter the variable names to:

// relative path to the skin folder
$rcmail_config['skin'] = 'default';
if (getDomain()=='domain1.com') {
$rcmail_config['skin'] = 'domain1folder'; }
if (getDomain()=='domain2.com') {
$rcmail_config['skin'] = 'domain2folder'; }

Thanks for posting the tip, works a treat

snookey

I've been trying to get this little bit of code working ... I'm on the latest version of roundcube 0.3.1 - I don't actually get any error messages ; but nothing happens and neither does the new skins folder appears nor does the code pass the welcome message to the selected domain in the code ...

Could it be that this code needs some sort of change having been done a few months back ? It's listed below ... I've just changed the actual domain name to mydomain.co.uk


--------------------------------------------------------------------------

function getDomain() {
   $host=$_SERVER['HTTP_HOST'];
   $prefix='webmail';
   $arr=explode('.',$host);
   if ($arr[0]==$prefix) { unset($arr[0]); $host=implode('.',$arr); }
   else { $host=''; }
   return $host;
}


$rcmail_config['username_domain'] = getDomain();


// relative path to the skin folder

// relative path to the skin folder
$rcmail_config['skin'] = 'default';
if (getDomain()=='mydomain.co.uk') {
$rcmail_config['skin'] = 'mydomain1folder'; }
if (getDomain()=='mydomain2.co.uk') {
$rcmail_config['skin'] = 'mydomain2folder'; }


// use this name to compose page titles


$rcmail_config['product_name'] = 'WebMail';
if (getDomain()=='mydomain.co.uk') { $rcmail_config['product_name']='welcome to mydomain.co.uk Webmail'; }
if (getDomain()=='mydomain2.co.uk') { $rcmail_config['product_name']='Welcome to mydomain2.co.uk Webmail'; }


--------------------------------------------------------------------------

thanks for looking !



SKaero

What the output when you add:
echo getDomain();

snookey

I've tried all sorts of variations to the code already posted and I just do not get any results ... I tried to narrow down the problem by creating this little script, and as suggested (thanks) put the echo getdomain line in ... nothing shows up !

--------------------------------------------------------------------------

function GetDomain($url)
 {
   $nowww = ereg_replace('www.','',$url);
   $domain = parse_url($nowww);
   if(!empty($domain["host"]))
   {
       return $domain["host"];
   } else
   {
        return $domain["path"];
   }

  }

echo GetDomain($url);


?>

------------------------------------------------------------------------

... Could my server have disabled certain featrures ?
Or is there some settings in phpadmin I need to look at ... Thanks for your interest

SKaero

When your putting it into your /config/main.inc.php are you putting in the ""