/**
     * Render module content
     *
     * @return string $content
     */
    public function render()
    {
        /* Add CSS */
        $this->pageRenderer->addCssFile($this->resPath . 'js/ux/css/GridFilters.css');
        $this->pageRenderer->addCssFile($this->resPath . 'js/ux/css/RangeMenu.css');
        $this->pageRenderer->addCssFile($this->resPath . 'css/t3_em.css');
        $iconsGfxPath = $GLOBALS['TBE_STYLES']['skinImgAutoCfg']['relDir'] . 'gfx/';
        $this->pageRenderer->addCssInlineBlock('em-t3skin-icons', '
			.x-tree-node-leaf img.tree-edit { background-image:url(' . $iconsGfxPath . 'edit_file.gif);}
			.x-btn-edit { background-image:url(' . $iconsGfxPath . 'edit2.gif) !important;}
			.x-btn-new { background-image:url(' . $iconsGfxPath . 'new_el.gif) !important;}
			.x-btn-delete { background-image:url(' . $iconsGfxPath . 'garbage.gif) !important;}
			.x-tree-node-leaf img.tree-unknown { background-image:url(' . $iconsGfxPath . 'default.gif); }
			.x-btn-save { background-image:url(' . $iconsGfxPath . 'savedok.gif) !important;}
			.x-btn-upload { background-image:url(' . $iconsGfxPath . 'upload.gif) !important;}
			.x-btn-download { background-image:url(' . $iconsGfxPath . 'down.gif) !important;}
			.x-btn-undo { background-image:url(' . $this->resPath . 'icons/arrow_undo.png) !important;}
			.x-btn-redo { background-image:url(' . $this->resPath . 'icons/arrow_redo.png) !important;}
			.x-btn-jslint { background-image:url(' . $this->resPath . 'icons/jslint.gif) !important;}
			.x-btn-indent { background-image:url(' . $this->resPath . 'icons/text_indent.png) !important;}
		');
        /* load ExtJS */
        $this->pageRenderer->loadExtJS();
        $this->pageRenderer->enableExtJSQuickTips();
        // Load  JavaScript:
        $this->pageRenderer->addJsFile($this->parentObject->doc->backPath . 'ajax.php?ajaxID=ExtDirect::getAPI&namespace=TYPO3.EM', NULL, FALSE);
        $this->pageRenderer->addJsFile($this->parentObject->doc->backPath . 'ajax.php?ajaxID=ExtDirect::getAPI&namespace=TYPO3.EMSOAP', NULL, FALSE);
        $this->pageRenderer->addExtDirectCode();
        // Localization
        $labels = array();
        $this->pageRenderer->addInlineLanguageLabelFile(t3lib_extMgm::extPath('em', 'language/locallang.xml'));
        $labels['yes'] = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:yes');
        $labels['no'] = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:no');
        $this->pageRenderer->addInlineLanguageLabelArray($labels);
        $globalSettings = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['em']);
        if (!is_array($globalSettings)) {
            $globalSettings = array('displayMyExtensions' => 0, 'selectedLanguages' => array(), 'inlineToWindow' => 1);
        }
        $settings = $this->parentObject->MOD_SETTINGS;
        $mirrors = unserialize($settings['extMirrors']);
        $settings['extMirrors'] = array(array('Random (recommended)', '', '', '', '', '', ''));
        if (is_array($mirrors)) {
            foreach ($mirrors as $mirror) {
                $settings['extMirrors'][] = array($mirror['title'], $mirror['country'], $mirror['host'], $mirror['path'], $mirror['sponsor']['name'], $mirror['sponsor']['link'], $mirror['sponsor']['logo']);
            }
        }
        $allowRepositoryUpdate = !intval($GLOBALS['BE_USER']->getTSConfigVal('mod.tools_em.hideRepositoryUpdate'));
        /* file operations */
        $fileAllowMove = intval($GLOBALS['BE_USER']->getTSConfigVal('mod.tools_em.fileAllowMove'));
        $fileAllowDelete = intval($GLOBALS['BE_USER']->getTSConfigVal('mod.tools_em.fileAllowDelete'));
        $fileAllowRename = intval($GLOBALS['BE_USER']->getTSConfigVal('mod.tools_em.fileAllowRename'));
        $fileAllowUpload = intval($GLOBALS['BE_USER']->getTSConfigVal('mod.tools_em.fileAllowUpload'));
        $fileAllowCreate = intval($GLOBALS['BE_USER']->getTSConfigVal('mod.tools_em.fileAllowCreate'));
        $fileAllowDownload = intval($GLOBALS['BE_USER']->getTSConfigVal('mod.tools_em.fileAllowDownload'));
        // add the settings
        $additionalSettings = array('siteUrl' => t3lib_div::getIndpEnv('TYPO3_SITE_URL'), 'backPath' => $this->parentObject->doc->backPath, 'hasCredentials' => isset($settings['fe_u']) && isset($settings['fe_p']) && $settings['fe_u'] !== '' && $settings['fe_p'] !== '', 'scriptLink' => $this->parentObject->script, 'editorCss' => $this->resPath . 'css/editor.css', 'codemirrorCssPath' => $this->parentObject->doc->backPath . 'contrib/codemirror/css/', 'codemirrorJsPath' => $this->parentObject->doc->backPath . 'contrib/codemirror/js/', 'codemirrorContribPath' => $this->parentObject->doc->backPath . 'contrib/codemirror/contrib/', 'selectedLanguages' => t3lib_div::trimExplode(',', $globalSettings['selectedLanguages'], TRUE), 'state' => $GLOBALS['BE_USER']->uc['moduleData']['tools_em']['States'], 'inlineToWindow' => $globalSettings['inlineToWindow'], 'allowRepositoryUpdate' => $allowRepositoryUpdate, 'displayMyExtensions' => $globalSettings['displayMyExtensions'], 'debug' => $GLOBALS['TYPO3_CONF_VARS']['BE']['debug'] > 0, 'fileAllowSave' => $GLOBALS['TYPO3_CONF_VARS']['EXT']['noEdit'] == 0, 'fileAllowMove' => 0, 'fileAllowDelete' => 0, 'fileAllowRename' => 0, 'fileAllowUpload' => 0, 'fileAllowCreate' => 0, 'fileAllowDownload' => $fileAllowDownload);
        $settings = array_merge($settings, $additionalSettings);
        // Add JS
        $this->pageRenderer->addJsFile($this->parentObject->doc->backPath . '../t3lib/js/extjs/ux/flashmessages.js');
        $this->pageRenderer->addJsFile($this->parentObject->doc->backPath . 'js/extjs/iframepanel.js');
        $this->pageRenderer->addJsFile($this->parentObject->doc->backPath . 'contrib/codemirror/js/codemirror.js');
        //Plugins
        $this->pageRenderer->addJsFile($this->resPath . 'js/overrides/ext_overrides.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/ux/custom_plugins.js');
        $this->pageRenderer->addJsFile($this->parentObject->doc->backPath . '../t3lib/js/extjs/ux/Ext.ux.FitToParent.js');
        $this->pageRenderer->addJsFile($this->parentObject->doc->backPath . '../t3lib/js/extjs/notifications.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/ux/TreeState.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/ux/RowPanelExpander.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/ux/searchfield.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/ux/fileuploadfield.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/ux/menu/RangeMenu.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/ux/menu/ListMenu.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/ux/GridFilters.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/ux/filter/Filter.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/ux/filter/BooleanFilter.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/ux/filter/DateFilter.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/ux/filter/ListFilter.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/ux/filter/NumericFilter.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/ux/filter/StringFilter.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/ux/jslint.js');
        //Scripts
        $this->pageRenderer->addJsFile($this->resPath . 'js/em_layouts.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/em_components.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/em_files.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/em_ter.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/em_tools.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/em_locallist.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/em_repositorylist.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/em_usertools.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/em_languages.js');
        $this->pageRenderer->addJsFile($this->resPath . 'js/em_settings.js');
        //Application
        $this->pageRenderer->addJsFile($this->resPath . 'js/em_app.js');
        // clear flashmessages from php
        t3lib_FlashMessageQueue::getAllMessagesAndFlush();
        $content = '
			<div id="em-message-area"></div><div id="em-app"></div>
			<!-- dummy form to make configuration js happy -->
			<form name="tsStyleConfigForm" action="" method="post"></form>
		';
        //hook for the extension manager gui
        if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['em/classes/class.tx_em_extensionamager.php']['renderHook'])) {
            foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['em/classes/class.tx_em_extensionamager.php']['renderHook'] as $classRef) {
                $hookObject = t3lib_div::getUserObj($classRef);
                if (!$hookObject instanceof tx_em_renderHook) {
                    throw new UnexpectedValueException('$hookObject must implement interface tx_em_renderHook', 1298121373);
                }
                $hookObject->render($this->pageRenderer, $settings, $content);
            }
        }
        // render settings and labels
        $this->pageRenderer->addInlineSettingArray('EM', $settings);
        $this->pageRenderer->addInlineLanguageLabelArray($labels);
        return $content;
    }
 public function render()
 {
     $doc = $this->getDocInstance();
     $doc->bodyTagAdditions .= 'class="yui-skin-sam"';
     $baseUrl = '../' . t3lib_extMgm::siteRelPath('extension_builder');
     $this->pageRenderer->disableCompressJavascript();
     $this->pageRenderer->loadExtJS(FALSE, FALSE);
     // SECTION: JAVASCRIPT FILES
     // YUI Basis Files
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/yui/utilities/utilities.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/yui/resize/resize-min.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/yui/layout/layout-min.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/yui/container/container-min.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/yui/json/json-min.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/yui/button/button-min.js');
     // YUI-RPC
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/yui-rpc.js');
     // InputEx with wirable options
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/inputex/js/inputex.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/inputex/js/Field.js');
     // extended fields for enabling unique ids
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/extended/ListField.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/extended/Group.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/js/util/inputex/WirableField-beta.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/inputex/js/Visus.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/inputex/js/fields/StringField.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/inputex/js/fields/Textarea.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/inputex/js/fields/SelectField.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/inputex/js/fields/EmailField.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/inputex/js/fields/UrlField.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/inputex/js/fields/CheckBox.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/inputex/js/fields/InPlaceEdit.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/inputex/js/fields/MenuField.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/inputex/js/fields/TypeField.js');
     // WireIt
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/excanvas.js', 'text/javascript', TRUE, FALSE, '<!--[if IE]>|<![endif]-->');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/js/WireIt.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/js/CanvasElement.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/js/Wire.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/js/Terminal.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/js/util/DD.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/js/util/DDResize.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/js/Container.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/js/ImageContainer.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/js/Layer.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/js/util/inputex/FormContainer-beta.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/js/LayerMap.js');
     $this->pageRenderer->addInlineSettingArray('extensionBuilder', array('baseUrl' => $baseUrl));
     $this->setLocallangSettings();
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/js/WiringEditor.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/roundtrip.js');
     // Extbase Modelling definition
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/extbaseModeling.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/layout.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/extensionProperties.js');
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/modules/modelObject.js');
     // collapsible forms in relations
     $this->pageRenderer->addJsFile($baseUrl . 'Resources/Public/jsDomainModeling/modules/extendedModelObject.js');
     // SECTION: CSS Files
     // YUI CSS
     $this->pageRenderer->addCssFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/yui/reset-fonts-grids/reset-fonts-grids.css');
     $this->pageRenderer->addCssFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/yui/assets/skins/sam/skin.css');
     // InputEx CSS
     $this->pageRenderer->addCssFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/lib/inputex/css/inputEx.css');
     // WireIt CSS
     $this->pageRenderer->addCssFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/css/WireIt.css');
     $this->pageRenderer->addCssFile($baseUrl . 'Resources/Public/jsDomainModeling/wireit/css/WireItEditor.css');
     // Custom CSS
     $this->pageRenderer->addCssFile($baseUrl . 'Resources/Public/jsDomainModeling/extbaseModeling.css');
 }