OXID eShop I would like to design my own Admin

My idea is to design your own admin theme. For your own admin theme you must change core files oxconfig.php, oxshopcontrol.php and oxfunctions.php. I recommend to define params into config.inc.php and use them. I used following params:

/**
 * To define your own admin theme
 */
$this->sAdminTheme = 'admin-responsive';
$this->sAdminStartController = 'bis_login_responsive';
/**
 * Finds and returns files or folders path in out dir
 *
 * @param string $sFile        File name
 * @param string $sDir         Directory name
 * @param bool   $blAdmin      Whether to force admin
 * @param int    $iLang        Language id
 * @param int    $iShop        Shop id
 * @param string $sTheme       Theme name
 * @param bool   $blAbsolute   mode - absolute/relative path
 * @param bool   $blIgnoreCust Ignore custom theme
 *
 * @return string
 */
public function getDir($sFile, $sDir, $blAdmin, $iLang = null, $iShop = null, $sTheme = null, $blAbsolute = true, $blIgnoreCust = false)
{
    if (is_null($sTheme)) {
        $sTheme = $this->getConfigParam('sTheme');
    }

    if ($blAdmin) {
        $sTheme = $this->getConfigParam('sAdminTheme');
    }

    if ($sDir != $this->_sTemplateDir) {
        $sBase = $this->getOutDir($blAbsolute);
        $sAbsBase = $this->getOutDir();
    } else {
        $sBase = $this->getViewsDir($blAbsolute);
        $sAbsBase = $this->getViewsDir();
    }

    $sLang = '-';
    // FALSE means skip language folder check
    if ($iLang !== false) {
        $oLang = oxRegistry::getLang();

        if (is_null($iLang)) {
            $iLang = $oLang->getEditLanguage();
        }

        $sLang = $oLang->getLanguageAbbr($iLang);
    }

    if (is_null($iShop)) {
        $iShop = $this->getShopId();
    }

    //Load from
    $sPath = "{$sTheme}/{$iShop}/{$sLang}/{$sDir}/{$sFile}";
    $sCacheKey = $sPath . "_{$blIgnoreCust}{$blAbsolute}";

    if (($sReturn = oxRegistry::getUtils()->fromStaticCache($sCacheKey)) !== null) {
        return $sReturn;
    }

    $sReturn = false;

    // Check for custom template
    $sCustomTheme = $this->getConfigParam('sCustomTheme');
    if (!$blAdmin && !$blIgnoreCust && $sCustomTheme && $sCustomTheme != $sTheme) {
        $sReturn = $this->getDir($sFile, $sDir, $blAdmin, $iLang, $iShop, $sCustomTheme, $blAbsolute);
    }

    //test lang level ..
    if (!$sReturn && !$blAdmin && is_readable($sAbsBase . $sPath)) {
        $sReturn = $sBase . $sPath;
    }

    //test shop level ..
    $sPath = "$sTheme/$iShop/$sDir/$sFile";
    if (!$sReturn && !$blAdmin && is_readable($sAbsBase . $sPath)) {
        $sReturn = $sBase . $sPath;
    }


    //test theme language level ..
    $sPath = "$sTheme/$sLang/$sDir/$sFile";
    if (!$sReturn && $iLang !== false && is_readable($sAbsBase . $sPath)) {
        $sReturn = $sBase . $sPath;
    }

    //test theme level ..
    $sPath = "$sTheme/$sDir/$sFile";
    if (!$sReturn && is_readable($sAbsBase . $sPath)) {
        $sReturn = $sBase . $sPath;
    }

    //test out language level ..
    $sPath = "$sLang/$sDir/$sFile";
    if (!$sReturn && $iLang !== false && is_readable($sAbsBase . $sPath)) {
        $sReturn = $sBase . $sPath;
    }

    //test out level ..
    $sPath = "$sDir/$sFile";
    if (!$sReturn && is_readable($sAbsBase . $sPath)) {
        $sReturn = $sBase . $sPath;
    }

    if (!$sReturn) {
        // TODO: implement logic to log missing paths
    }

    // to cache
    oxRegistry::getUtils()->toStaticCache($sCacheKey, $sReturn);

    return $sReturn;
}
/**
 * Returns controller class which should be loaded.
 *
 * @return string
 */
protected function _getStartController()
{
    $sClass = oxRegistry::getConfig()->getRequestParameter('cl');

    if (!$sClass) {
        $sClass = $this->isAdmin() ? oxRegistry::getConfig()->getConfigParam('sAdminStartController') : $this->_getFrontendStartController();
        oxRegistry::getSession()->setVariable('cl', $sClass);
    }

    return $sClass;
}

For my own admin theme I add following new dirs:

admin-responsive/
application/controllers/admin-responsive/
application/views/admin-responsive/
out/admin-responsive/

In my new dir admin-responsive I added a new index.php file:

.
 *
 * @link      http://www.oxid-esales.com
 * @copyright (C) OXID eSales AG 2003-2015
 * @version   OXID eShop CE
 */

define('OX_IS_ADMIN', true);
define('OX_ADMIN_DIR', basename(dirname(__FILE__)));

// Includes main index.php file
require_once dirname(__FILE__) . "/../index.php";

That the OXID Framework know your own admin classes, you must add your new classes path like this:

/**
 * Return array with classes paths.
 *
 * @param string $sBasePath path to shop base ddirectory.
 *
 * @return array
 */
function getClassDirs($sBasePath)
{
    $aClassDirs = array($sBasePath . 'core/',
                        $sBasePath . 'application/components/widgets/',
                        $sBasePath . 'application/components/services/',
                        $sBasePath . 'application/components/',
                        $sBasePath . 'application/models/',
                        $sBasePath . 'application/controllers/',
                        $sBasePath . 'application/controllers/admin/',
                        $sBasePath . 'application/controllers/admin-responsive/',
                        $sBasePath . 'application/controllers/admin/reports/',
                        $sBasePath . 'views/',
                        $sBasePath . 'core/exception/',
                        $sBasePath . 'core/interface/',
                        $sBasePath . 'core/cache/',
                        $sBasePath . 'core/cache/connectors/',
                        $sBasePath . 'core/wysiwigpro/',
                        $sBasePath . 'admin/reports/',
                        $sBasePath . 'admin/',
                        $sBasePath . 'modules/',
                        $sBasePath
    );

    return $aClassDirs;
}

What do you think about my idea to design your own admin?