';
$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();
try {
// initialize remote data in one go
Repository::getInstance()->initExtensions(array_keys($plugins));
} catch (Exception $e) {
msg($e->getMessage(), -1); // this should not happen
}
$html .= '';
$html .= '';
$html .= '
';
return $html;
}
/**
* Return the HTML for the list of installed templates
*
* @return string
*/
public function tabTemplates()
{
$html = '';
$templates = (new Local())->getTemplates();
try {
// initialize remote data in one go
Repository::getInstance()->initExtensions(array_keys($templates));
} catch (Exception $e) {
msg($e->getMessage(), -1); // this should not happen
}
$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 .= '
';
return $html;
}
}