public function detailsAction(Request $request, $module, $template, $skins)
    {
        $fullModule = null;

        try {
            $moduleManager = $this->get('terrific.composer.module.manager');
            $fullModule = $moduleManager->getModuleByName($module);

            // prepare the parameter for module rendering
            $template = $fullModule->getTemplateByName($template)->getPath();

            if($skins) {
                $skins = explode(',', $skins);
            }
            else {
                $skins = array();
            }
        }
        catch (\Exception $e) {
            $logger = $this->get('logger');
            $logger->err($e->getMessage());

            $this->get('session')->setFlash('notice', 'Module could not be found: ' . $e->getMessage());
        }

        // decide whether to render the layout or not (ajax = without layout | default = with layout)
        if($request->isXmlHttpRequest()) {
            // render the module without layout
            return $this->render('TerrificComposerBundle:Module:details.ajax.html.twig', array('module' => $module, 'template' => $template, 'skins' => $skins));
        }
        else {
            // render the module with layout
            return $this->render('TerrificComposerBundle:Module:details.html.twig', array('layout' => $moduleManager->getModuleLayout(),'module' => $module, 'template' => $template, 'skins' => $skins));
        }
    }