Mega Menu doesn’t display down arrow for submenus

The WordPress plugin Mega Menu has the possibility to display a “down arrow” for a menu item where a submenu is available (i.e. the menu item has “children”). The problem was that the arrow was not displaying.

It turned out it was a collission with the theme, Cherry Framework 4. In the settings of the theme’s native menu, there is a possibility to enable “arrow markups”. When this is enabled in Cherry Framework 4, the arrows in Mega Menu is not displayed.

Solution: Go to Cherry -> Options -> Navigation -> Set Arrows Markup = off

Resize EFI partition but the 16 MB MSR partition is blocking

With Microsoft Windows 10 Fall Creators update many users have ran into problems updating becuase their computer was installed with a too small EFI partition (100 MB). I’d consider this a warranty issue with the computer supplier, becuase obviously the computer wasn’t Windows 10 ready. The problem is that the hardware supplier will happily take your machine in, erase it and factory install it with a new Windows 10 image with a bigger EFI, but you will lose all your data.

A solution would of cause to make a backup and let them erase the machine but some of my clients have computers that will take 1-2 work days to reinstall and configure all software. So resizing the EFI is preferred.

This guide shows a simple way to do it with EaseUS partition master (requires to buy a license, but 50-60 usd is worth it if I can save 1-2 days of work). The problem is that in my case it wasn’t so simple as the guide shows, because there were no unallocated space after the EFI partition and the 16 MB MSR partition following it wasn’t possible to move. The layout looked like this (simplified):

EFI-partition -> 16 MB MSR partition (file system type “Other”) -> circa 500 GB NTFS Windows partition (C:)

This is how I solved it using EaseUS partition master:

  • Backup, backup and backup all your data! If something goes wrong this is your life line.
  • Resize the 500 GB NTFS partion, shrinking it and creating 32 MB unused space after the NTFS partition (I first tried 16 MB but wasn’t able to clone the 16 MB MSR partition to it, displaying an error message saying it wasn’t enough space), apply changes and let the system reboot
  • Select the 16 MB MSR and clone it to the unsused 32 MB space
  • Resize the 500 GB NTFS partition, shrinking it creating 400 MB unused space before the NTFS partition, apply changes and let the system reboot
  • Now there is 400 MB unallocated space between the EFI and NTFS-partitions. Select the EFI partition and resize it to 500 MB, apply and reboot

 

Cherry Framework 4 header not using full page width when breadcrumbs are disabled

When you disable breadcrumbs in Cherry Framework 4, it still reserves space for it in the header/title section of the page. This is a bit annoying, because it makes the title wrap when there still is space on the right side.

A simple CSS solution can fix this. By applying this, the breadcrumbs will not be visible even if they are enabled again.

.cherry-breadcrumbs .col-md-5 { /* no breadcrumbs, title in full width */
width: 100%;
}
.cherry-breadcrumbs .col-md-7 { /* no breadcrumbs, hide the breadcrumb container */
display: none;
}

Ispconfig 3.0 to 3.1 update issue – PHP-FPM and SSL problems

After updating a multi server installation of Ispconfig3 problems occured when editing existing or adding new websites on one of the servers.

  • If the site had SSL enabled the apache2 vhosts file for the site (located in /etc/apache2/sites-availible) would get empty values for SSLCertificateFile, SSLCertificateKeyFile and SSLCertificateChainFile fields, causing it to revert to old configuration or not load the site at all. At some point apache2 wouldn’t reload at all so to get it upp the site had to be disabled by removing /etc/apache2/sites-enabled/100-sitename.vhost file.
  • If the site was running under PHP-FPM the site would report Internal server error 501 caused by the socket file /var/lib/php5-fpm/webXXX.sock was owned by root and not by the web user. This in turned was caused by the fields listen.owner and listen.group in webXXX.conf (for PHP-FPM) was empty.

Since this was a multi server installation and this problem only occured on one server they could be compared. It turned out that the problem was caused in the directory /usr/local/ispconfig/server/plugins-enabled. The files in this directory should be symbolic links to the corresponding files in /usr/local/ispconfig/server/plugins-available, but after a move of the Ispconfig3 installation from an older server, these links had become real files instead of symbolic links.

This meant that the files in /usr/local/ispconfig/server/plugins-enabled was still Ispconfig 3.0 files while the ones in /usr/local/ispconfig/server/plugins-available was Ispconfig 3.1. To resolve the problem, to be on the safe side, make a backup of /usr/local/ispconfig/server/plugins-enabled and then run:

cd /usr/local/ispconfig/server/plugins-enabled
ln -s -f /usr/local/ispconfig/server/plugins-available/apache2_plugin.inc.php apache2_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/apps_vhost_plugin.inc.php apps_vhost_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/aps_plugin.inc.php aps_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/bind_plugin.inc.php bind_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/cron_jailkit_plugin.inc.php cron_jailkit_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/cron_plugin.inc.php cron_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/firewall_plugin.inc.php firewall_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/ftpuser_base_plugin.inc.php ftpuser_base_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/getmail_plugin.inc.php getmail_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/maildrop_plugin.inc.php maildrop_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/mailman_plugin.inc.php mailman_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/mail_plugin_dkim.inc.php mail_plugin_dkim.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/mail_plugin.inc.php mail_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/mysql_clientdb_plugin.inc.php mysql_clientdb_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/network_settings_plugin.inc.php network_settings_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/postfix_filter_plugin.inc.php postfix_filter_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/postfix_server_plugin.inc.php postfix_server_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/shelluser_base_plugin.inc.php shelluser_base_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/shelluser_jailkit_plugin.inc.php shelluser_jailkit_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/software_update_plugin.inc.php software_update_plugin.inc.php
ln -s -f /usr/local/ispconfig/server/plugins-available/webserver_plugin.inc.php webserver_plugin.inc.php

Verify with ls -l /usr/local/ispconfig/server/plugins-enabled that all your files are symbolic links.

 

Microsoft Office 365 SSL certificate error in Outlook [solved]

Clients moving over to Office 365 who had purchased a valid SSL certificate for their mail server still got SSL certificate errors in Outlook and mobile clients. This was despite the mail service was equipped with a valid SSL certificate (not self signed, but issued by a real CA).

It turns out here that Outlook seems to investigate https root domain (i.e. the customer’s web site) for auto configuration before trying autodiscover.customerdomain.com. And if there is no valid SSL certificate installed on the customers web site, an error is displayed. This was verified by examining the customer’s web site logs where we could se repetitive accesses to /autodiscover/autodiscover.xml.

If only Outlook just would have ignored the SSL error and continued to the next method….

A simple solution was just to add a valid SSL certificate to the customer’s web site, and the problem was solved. That way Outlook didn’t get SSL certificate error when trying to retrieve the non-existing autoconfiguration information from the customer’s web site.

Add custom favicon.ico to T3 bootstrap framework for Joomla!

When you are using the T3 bootstrap framwork for Joomla! to create a Joomla! responsive template, an easy way to use a custom favicon.ico is to just replace the file templates/t3_bs_blank/favicon.ico with your own.

This is fine – until you update the T3 framwork. Then your custom favicon.ico will be overwritten with the default file.

This is a solution:

  • Create an override of the file templates/t3_bs_blank/tpls/blocks/head.php and place it in templates/t3_bs_blank/local/tpls/blocks/head.php
  • Add the following code last in the file:
    <!-- LOCAL FAVICON.ICO -->
    <?php
    if (is_file(T3_TEMPLATE_PATH . '/local/favicon.ico')) {
    $this->addFavicon(T3_TEMPLATE_URL . '/local/favicon.ico');
    }
    ?>
    <!-- //LOCAL FAVICON.ICO -->
  • Now put your custom favicon.ico in templates/t3_bs_blank/local

Now your custom favicon.ico will survive updates of the T3 framework.

Where is WordPress links / blogroll?

In older WordPress installations there was a possibility to handle links. I recently installed a new WordPress 4.9 and I can’t find links (or blogroll). i.e. the Link Manager, anymore. Where is it?

From version 3.5 of WordPress, the Links section is not visible anymore if there were no links present or if it is a new installation.

If you want it back, you can download Link Manager here.

Should I use hotmail / gmail / yahoo etc for my business email?

When you are starting your new business you will need an email address. As a small, startup company it can be tempting to go for the quick, cheap and easy solutions. Is it a good idea to use one of the free email services like hotmail, gmail, yahoo etc as your company email?

My answer is no. I normally don’t recommend it for several reasons. The free services are great for private use, but not for business.

  • Buying your own domain name is cheap.
  • Your own domain name will also market your business name, making it easier for your clients to remember you.
  • It gives you a more trustworthy appearance towards your clients, when you are not building your business on a free service, sharing the domain name with thousands of others.
  • Hotmail, for example, has very “trigger happy” spam filters which means you will most certainly find legitimate emails from a new sender in the spam folder along with real spam emails. You have to tell Hotmail that this was not a spam to “teach” it not to put emails from this sender again in the spam folder. To make sure you don’t miss important business emails you will have to check your spam folders on an hourly basis.

I had a client who lost several assignments because of legitimite client requests ending up in the spam folder at Hotmail. When the emails was found in the Hotmail spam folder, the assignments had already gone to competitors.

We switched the client over to using a domain name of their own, hosted at a hosting company targeting businesses, with spam filters that were a bit more allowing. Meaning, sometimes a spam would end up in the inbox but legitimite emails never ended up in the spam folder.

The client was very used to the Hotmail interface, so we just connected the new email account with their own domain name email account, at the new hosting provider, throught IMAP to the Hotmail account.

This way they could continue to work in the Hotmail (or Outlook OWA) interface with their new email account under their own domain name. So they now just used Hotmail as their “email program” because they were used to it.

When replying to emails sent to their own domain name, the own domain name email account was automatically used for the reply. Only when writing a new email they have to select the account with their own domain name (otherwise, by default, the new email is sent from the Hotmail account).

 

Joomla! 1.5 create new admin user via MySQL and phpMyAdmin

If you need to gain administrator access to a Joomla! 1.5 website where the admin password is not known (forgotten or the original admin is no longer available) you can resolve the situation by adding a new administrator user through MySQL.

For this, obviously, you need to now the database credentials. This is how you do it using MySQL and phpMyAdmin. Click on the images below to see them enlarged.

  1. Log in to phpMyAdmin using the credentials for the Joomla! database
  2. Go to the table jos_users and go to the last record. If your last user id is less than 1000 you can use the values in this example. Otherwise you have to adapt it to a user id larger than your last user id (if you have less than 1000 users in your Joomla! database user id 1000 will be fine).
  3. Insert a new record into the jos_users table:
    Joomla! 1.5 create new admin user via MySQL and phpMyAdmin step 1

    Joomla! 1.5 create new admin user via MySQL and phpMyAdmin step 1

    id = 1000
    name = A new administrator
    username = admin2
    email = admin2@example.com (or perhaps your own email address ;))
    password = d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199
    usertype = Super Administrator
    block = 0
    sendEmail = 1
    gid = 25

    Then click on Run to save the entry

  4. Go to the table jos_core_acl_aro and insert a new record:
    Joomla! 1.5 create new admin user via MySQL and phpMyAdmin step 2

    Joomla! 1.5 create new admin user via MySQL and phpMyAdmin step 2

    id = 1000
    section_value = users
    value = 1000
    order_value = 0
    name = Administrator
    hidden = 0

    Then click on Run to save the entry

  5. Go to the table jos_core_acl_groups_aro_map and insert a new record:
    Joomla! 1.5 create new admin user via MySQL and phpMyAdmin step 3

    Joomla! 1.5 create new admin user via MySQL and phpMyAdmin step 3

    group_id = 25
    section_value = (empty)
    aro_id = 1000

    Then click on Run to save the entry

  6. Now go to the backend of your site (i.e /administrator) and log in with the username “admin2” and the password “secret” (whithout “”)
  7. Go to the user section and immediately change the password of admin2 user since “secret” is a very insecure password