';
        $html .= $this->tabNavigation();
        switch ($this->currentTab()) {
            case 'search':
                $html .= $this->tabSearch();
                break;
            case 'templates':
                $html .= $this->tabTemplates();
                break;
            case 'install':
                $html .= $this->tabInstall();
                break;
            case 'plugins':
            default:
                $html .= $this->tabPlugins();
        }
        $html .= '';
        return $html;
    }
    /**
     * Print the tab navigation
     *
     */
    public function tabNavigation()
    {
        $html = '
';
        foreach ($this->tabs as $tab) {
            $url = $this->tabURL($tab);
            if ($this->currentTab() == $tab) {
                $class = ' active';
            } else {
                $class = '';
            }
            $html .= '- ' .
                $this->getLang('tab_' . $tab) . '';
        }
        $html .= '
';
        return $html;
    }
    /**
     * Return the HTML for the list of installed plugins
     *
     * @return string
     */
    public function tabPlugins()
    {
        $html = '';
        $plugins = (new Local())->getPlugins();
        $html .= '';
        $html .= '';
        $html .= '
';
        return $html;
    }
    /**
     * Return the HTML for the list of installed templates
     *
     * @return string
     */
    public function tabTemplates()
    {
        $html = '';
        $templates = (new Local())->getTemplates();
        $html .= '';
        $html .= '';
        $html .= '
';
        return $html;
    }
    /**
     * Return the HTML for the search tab
     *
     * @return string
     */
    public function tabSearch()
    {
        global $INPUT;
        $html = '';
        $form = new Form([
            'action' => $this->tabURL('search'),
            'class' => 'search',
        ]);
        $form->addTagOpen('div')->addClass('no');
        $form->addTextInput('q', $this->getLang('search_for'))
            ->addClass('edit')
            ->val($INPUT->str('q'));
        $form->addButton('submit', $this->getLang('search'))
            ->attrs(['type' => 'submit', 'title' => $this->getLang('search')]);
        $form->addTagClose('div');
        $html .= $form->toHTML();
        if ($INPUT->str('q')) $html .= $this->searchResults($INPUT->str('q'));
        return $html;
    }
    /**
     * Return the HTML for the install tab
     *
     * @return string
     */
    public function tabInstall()
    {
        global $lang;
        $html = '';
        $form = new Form([
            'action' => $this->tabURL('install'),
            'enctype' => 'multipart/form-data',
            'class' => 'install',
        ]);
        $form->addTagOpen('div')->addClass('no');
        $form->addTextInput('installurl', $this->getLang('install_url'))
            ->addClass('block')
            ->attrs(['type' => 'url']);
        $form->addTag('br');
        $form->addTextInput('installfile', $this->getLang('install_upload'))
            ->addClass('block')
            ->attrs(['type' => 'file']);
        $form->addTag('br');
        $form->addCheckbox('overwrite', $lang['js']['media_overwrt'])
            ->addClass('block');
        $form->addTag('br');
        $form->addButton('', $this->getLang('btn_install'))
            ->attrs(['type' => 'submit', 'title' => $this->getLang('btn_install')]);
        $form->addTagClose('div');
        $html .= $form->toHTML();
        return $html;
    }
    /**
     * Execute the given search query and return the results
     *
     * @param string $q the query
     * @return string
     */
    protected function searchResults($q)
    {
        $repo = Repository::getInstance();
        $html = '';
        $html .= '
';
        $html .= '