/** * \file AdminCenter.template.php * Template for the Admin Center. * * \author PortaMx - Portal Management Extension * \author Copyright 2008-2015 by PortaMx - http://portamx.com * \version Virgo 2.0 Beta 2 * \date 14.09.2015 */ function template_main() { global $context, $scripturl, $txt; $curarea = isset($_GET['area']) ? $_GET['area'] : 'pmx_center'; if (allowPmx('pmx_admin', true)) { $AdmTabs = array('pmx_center' => $txt['pmx_admincenter'], 'pmx_settings' => $txt['pmx_settings'], 'pmx_blocks' => $txt['pmx_blocks'], 'pmx_categories' => $txt['pmx_categories'], 'pmx_articles' => $txt['pmx_articles'], 'pmx_sefengine' => $txt['pmx_sefengine']); echo ' <div style="height:3em;margin-top:5px;"> <ul id="pmxmenu_nav" class="dropmenu sf-js-enabled">'; foreach ($AdmTabs as $name => $desc) { echo ' <li id="' . $name . '" class="subsections"> <a ' . ($name == $curarea ? 'class="active"' : '') . 'href="' . $scripturl . '?action=portamx;area=' . $name . ';' . $context['session_var'] . '=' . $context['session_id'] . '" onclick="pmxWinGetTop(\'adm\',\'template\')">' . $desc . '</a> </li>'; } echo ' </ul> </div>'; } if ($context['pmx']['subaction'] != 'showlang') { echo ' <table class="pmx_table" style="margin-top:1px; overflow:hidden;"> <tr> <td> <div class="cat_bar"> <h3 class="catbg largetext">', $txt['pmx_admin_center'], '</h3> </div> <p class="information" style="margin: 0;padding: 8px;"> <b>' . $txt['hello_guest'] . ' ' . $context['user']['name'] . '!</b> ' . sprintf($txt['pmx_admin_main_welcome'], '<img src="' . $context['pmx_imageurl'] . 'information.png" alt="*" title="" style="vertical-align: text-bottom;" />') . ' </p> </td> </tr> <tr> <td>'; } // Admin center main ? if ($context['pmx']['subaction'] == 'main') { echo ' <table class="pmx_table" style="margin-top:1em;"> <tr> <td style="width:65%"> <div class="cat_bar"> <h3 class="catbg"><span class="pmxtitle pmxleft">' . $txt['pmx_center_news'] . '</span></h3> </div> </td> <td> </td> <td> <div class="cat_bar" style="overflow:hidden;"> <h3 class="catbg"><span class="pmxtitle pmxleft">' . $txt['pmx_center_support'] . '</span></h3> </div> </td> </tr> <tr> <td> <div class="roundframe" style="border-top-left-radius:0;border-top-right-radius:0;margin-top:-1px;padding:5px"> <div class="smalltext" style="margin:1px 4px 5px 4px;height:130px;overflow:auto;line-height:1.5em;s">'; if (!empty($context['pmx_info']['item'])) { foreach ($context['pmx_info']['item'] as $data) { echo ' ' . $data['subject'] . ' on ' . $data['date'] . ' <div style="padding:0 0 10px 0;border-top: 1px solid #808080;">' . $data['msg'] . '</div>'; } } else { echo ' <div>' . $txt['pmx_center_nolivedata'] . '</div>'; } echo ' </div> </div> </td> <td style="width:5px;padding:0px 7px;"></td> <td style="width:40%"> <div class="roundframe" style="border-top-left-radius:0;border-top-right-radius:0;margin-top:-1px;padding:5px;overflow:hidden;"> <div style="height:116px;"> <div class="middletext" style="padding:2px 4px;">' . $txt['pmx_center_versioninfo'] . '<br />' . $txt['pmx_center_installed'] . '<i' . (empty($context['pmx_info']['versionOK']) ? ' style="color:#ff0000;"' : '') . '>' . $context['pmx_info']['installed'] . '</i><br />' . $txt['pmx_center_version'] . '<i>'; echo $context['pmx_info']['version']; echo '</i> </div> <div class="middletext" style="padding:2px 3px;">'; if (!empty($context['pmx_info']['update']) && empty($context['pmx_info']['versionOK'])) { echo ' <a href="' . $scripturl . '?action=admin;area=packages;sa=download;get;server=' . $context['pmx_info']['updserver'] . ';package=' . $context['pmx']['server']['update'] . $context['pmx_info']['update'] . ';' . $context['session_var'] . '=' . $context['session_id'] . '">' . $txt['pmx_center_update'] . '</a>'; } echo ' </div> <div class="middletext" style="padding:2px 3px;">'; if (!empty($context['pmx_info']['download']) && empty($context['pmx_info']['versionOK'])) { echo ' <a href="' . $context['pmx_info']['download'] . '">' . $txt['pmx_center_download'] . '</a>'; } echo ' </div> </div> <div class="middletext" style="position:relative; left:3px; bottom:3px;"> <a href="' . $scripturl . '?action=' . $context['pmx']['admmode'] . ';area=pmx_center;sa=flist;' . $context['session_var'] . '=' . $context['session_id'] . '">' . $txt['pmx_center_detailed'] . '</a> </div> </div> </td> </tr> <tr> <td colspan="3" style="padding:0.5em 0;"> <div class="roundframe" style="padding:10px 5px"> <table class="pmx_table middletext" style="padding:5px;"> <tr> <td style="width:50%; padding:5px"> <a href="' . $scripturl . '?action=' . $context['pmx']['admmode'] . ';area=pmx_settings;' . $context['session_var'] . '=' . $context['session_id'] . '"><img style="float:left;margin:5px 10px 20px;" src="' . $context['pmx_imageurl'] . 'admc_settings.png" alt="*" title="" /></a> <a href="' . $scripturl . '?action=' . $context['pmx']['admmode'] . ';area=pmx_settings;' . $context['session_var'] . '=' . $context['session_id'] . '">' . $txt['pmx_center_mansettings'] . '</a><br /><span class="smalltext">' . $txt['pmx_center_mansettings_desc'] . '</span> </td> <td style="width:50%; padding:5px"> <a href="' . $scripturl . '?action=' . $context['pmx']['admmode'] . ';area=pmx_blocks;' . $context['session_var'] . '=' . $context['session_id'] . '"><img style="float:left;margin:5px 10px 20px;" src="' . $context['pmx_imageurl'] . 'admc_blocks.png" alt="*" title="" /></a> <a href="' . $scripturl . '?action=' . $context['pmx']['admmode'] . ';area=pmx_blocks;' . $context['session_var'] . '=' . $context['session_id'] . '">' . $txt['pmx_center_manblocks'] . '</a><br /><span class="smalltext">' . $txt['pmx_center_manblocks_desc'] . '</span> </td> </tr> <tr> <td style="width:50%; padding:5px"> <a href="' . $scripturl . '?action=' . $context['pmx']['admmode'] . ';area=pmx_categories;' . $context['session_var'] . '=' . $context['session_id'] . '"><img style="float:left;margin:5px 10px 20px;" src="' . $context['pmx_imageurl'] . 'admc_category.png" alt="*" title="" /></a> <a href="' . $scripturl . '?action=' . $context['pmx']['admmode'] . ';area=pmx_categories;' . $context['session_var'] . '=' . $context['session_id'] . '">' . $txt['pmx_center_mancategories'] . '</a><br /><span class="smalltext">' . $txt['pmx_center_mancategories_desc'] . '</span> </td> <td style="width:50%; padding:5px"> <a href="' . $scripturl . '?action=' . $context['pmx']['admmode'] . ';area=pmx_articles;' . $context['session_var'] . '=' . $context['session_id'] . '"><img style="float:left;margin:5px 10px 20px;" src="' . $context['pmx_imageurl'] . 'admc_article.png" alt="*" title="" /></a> <a href="' . $scripturl . '?action=' . $context['pmx']['admmode'] . ';area=pmx_articles;' . $context['session_var'] . '=' . $context['session_id'] . '">' . $txt['pmx_center_manarticles'] . '</a><br /><span class="smalltext">' . $txt['pmx_center_manarticles_desc'] . '</span> </td> </tr> <tr> <td style="width:50%; padding:5px"> <a href="' . $scripturl . '?action=' . $context['pmx']['admmode'] . ';area=pmx_sefengine;' . $context['session_var'] . '=' . $context['session_id'] . '"><img style="float:left;margin:5px 10px 20px;" src="' . $context['pmx_imageurl'] . 'admc_pmxsef.png" alt="*" title="" /></a> <a href="' . $scripturl . '?action=' . $context['pmx']['admmode'] . ';area=pmx_sefengine;' . $context['session_var'] . '=' . $context['session_id'] . '">' . $txt['pmx_center_mansefengine'] . '</a><br /><span class="smalltext">' . $txt['pmx_center_mansefengine_desc'] . '</span> </td> <td style="width:50%; padding:5px"> <a href="' . $scripturl . '?action=' . $context['pmx']['admmode'] . ';area=pmx_languages;' . $context['session_var'] . '=' . $context['session_id'] . '"><img style="float:left;margin:5px 10px 20px;" src="' . $context['pmx_imageurl'] . 'admc_language.png" alt="*" title="" /></a> <a href="' . $scripturl . '?action=' . $context['pmx']['admmode'] . ';area=pmx_languages;' . $context['session_var'] . '=' . $context['session_id'] . '">' . $txt['pmx_center_manlangs'] . '</a><br /><span class="smalltext">' . $txt['pmx_center_manlangs_desc'] . '</span> </td> </tr> </table> </div> </td> </tr> </table>'; } // Detailed filelist ? if ($context['pmx']['subaction'] == 'flist') { echo ' <table class="pmx_table" style="margin-top:1em;"> <tr> <td> <div class="cat_bar"> <h3 class="catbg">' . $txt['pmx_center_vercheck'] . '</h3> </div> <p class="information">' . $txt['pmx_center_vercheck_info'] . '</p> </td> </tr> <tr> <td style="padding:0 0 5px 0;"><div class="roundframe" style="margin-top:5px;"> <table class="pmx_table middletext" style="margin:0 1px; padding:0 5px;"> <tr> <td style="width:50%">' . $txt['pmx_center_file'] . '</td> <td style="text-align:right;width:25%">' . $txt['pmx_center_fileinstalled'] . '</td> <td style="text-align:right;width:25%">' . $txt['pmx_center_filecurrent'] . '</td> </tr>'; foreach ($context['pmx_info'] as $dirtext => $data) { echo ' <tr> <td>'; if ($dirtext == 'pmx_filepackage') { echo $txt[$dirtext]; } else { echo '<div class="admin_hover" onclick="Toggle_help(\'' . $dirtext . '\');"><span>' . $txt[$dirtext] . '</span></div>'; } echo ' </td> <td style="text-align:right;">' . $data['installed'] . '</td> <td style="text-align:right;">' . $data['current'] . '</td> </tr> <tr> <td colspan="3"> <div id="' . $dirtext . '" style="display:none; padding:3px 0px 5px 10px;"> <table class="pmx_table"> <tr> <td style="width:60%">' . $txt['pmx_center_filename'] . '</td> <td style="width:25%;text-align:left">' . $txt['pmx_center_fileversion'] . '</td> <td style="width:15%;text-align:right">' . $txt['pmx_center_filedate'] . '</td> </tr>'; if ($dirtext == 'pmx_language_files') { foreach ($context['pmx_installed_ext'] as $ext) { foreach ($data['files'] as $file => $value) { if (stripos($file, '.min.') === false) { if (!empty($file) && strstr($file, '.') == $ext) { echo ' <tr> <td>' . $value['subdir'] . $file . '</td> <td style="text-align:left">' . $value['version'] . '</td> <td style="text-align:right">' . $value['date'] . '</td> </tr>'; } } } echo ' <tr> <td colspan="3"><div style="height:5px;"></div></td> </tr>'; } } else { $cdir = ''; foreach ($data['files'] as $file => $value) { if (!empty($file)) { if (stripos($file, '.min.') === false) { if (empty($cdir)) { $cdir = $value['subdir']; } elseif ($cdir != $value['subdir']) { $cdir = $value['subdir']; echo ' <tr> <td colspan="3"><div style="height:5px;"></div></td> </tr>'; } echo ' <tr> <td>' . $value['subdir'] . $file . '</td> <td style="text-align:left">' . $value['version'] . '</td> <td style="text-align:right">' . $value['date'] . '</td> </tr>'; } } } } echo ' </table> </div> </td> </tr>'; } echo ' <tr> <td colspan="3" style="padding:0.2em;text-align:center"><hr class="pmx_hr" /> <input class="button_submit" type="button" name="back" value="' . $txt['page_reqerror_button'] . '" onclick="window.location.href=\'' . $scripturl . '?action=' . $context['pmx']['admmode'] . ';area=pmx_center\';pmxWinGetTop(\'adm\',\'template\')" /> </td> </tr> </table> </div> </td> </tr> </table>'; } // Show Error ? if ($context['pmx']['subaction'] == 'error') { echo ' <table class="pmx_table" style="width:75%;margin:0 auto; margin-top:1em; text-align:center;"> <tr> <td style="text-align:center"> <div class="cat_bar"> <h3 class="catbg largetext headerpadding">', $context['pmx']['AdmcError']['title'], '</h3> </div> </td> </tr> <tr> <td class="middletext"> <div class="roundframe"> ' . $context['pmx']['AdmcError']['msg'] . ' <div style="padding-top:10px;text-align:center"> <input class="button_submit" type="button" name="back" value="' . $txt['page_reqerror_button'] . '" onclick="window.location.href=\'' . $scripturl . '?action=' . $context['pmx']['admmode'] . ';area=pmx_center' . (!empty($context['pmx']['AdmcError']['subact']) ? ';sa=' . $context['pmx']['AdmcError']['subact'] . ';' . $context['session_var'] . '=' . $context['session_id'] : '') . '\';pmxWinGetTop(\'adm\',\'template\')" /> </div> </div> </td> </tr> </table>'; } // Show languages ? if ($context['pmx']['subaction'] == 'showlang') { echo ' <table class="pmx_table" style="margin-top:1px; overflow:hidden;"> <tr> <td> <form id="pmx_form" accept-charset="' . $context['character_set'] . '" name="PMxAdmCenter" action="' . $scripturl . '?action=' . $context['pmx']['admmode'] . ';area=pmx_center;sa=admlang;' . $context['session_var'] . '=' . $context['session_id'] . '" method="post" style="margin: 0px;"> <input type="hidden" name="sc" value="' . $context['session_id'] . '" /> <input id="common_field" type="hidden" value="" />'; $tmp = explode(' ', $txt['pmx_admin_center']); echo ' <table class="pmx_table"> <tr> <td> <div class="cat_bar"> <h3 class="catbg">' . $tmp[0] . ' ' . $txt['pmx_center_showlang'] . '</h3> </div> <p class="information" style="margin: 0 0 20px 0;padding: 8px;"> <span id="holding">' . $txt['pmx_center_showlang_info'] . '</span> <span id="loading" style="display:none;">' . $txt['pmx_processing'] . '<img style="padding:0 10px;vertical-align:-2px;" src="' . $context['pmx_imageurl'] . 'loading.gif" alt="*" title="" /></span> </p> </td> </tr> <tr> <td> <div class="cat_bar"> <h3 class="catbg centertext">' . $txt['pmx_center_langinstalled'] . ' </h3> </div> <div class="windowbg wdbgtop"> <table class="pmx_table_grid"> <tr> <td class="normaltext" style="text-align:left;width:35%"><b>' . $txt['pmx_center_langname'] . '</b></td> <td class="normaltext" style="text-align:left;width:20%"><b>' . $txt['pmx_center_langcharset'] . '</b></td> <td class="normaltext" style="text-align:left;width:10%"><b>' . $txt['pmx_center_langversion'] . '</b></td> <td class="normaltext" style="text-align:right;width:15%"><b>' . $txt['pmx_center_langaction'] . '</b></td> </tr>'; // show installed languages $installed = array(); foreach ($context['pmx']['instlang'] as $id => $data) { $installed[$id] = $data; echo ' <tr> <td class="middletext">' . (isset($data['manually']) ? '* ' : '') . $data['name'] . '</td> <td class="middletext">' . $data['charset'] . '</td> <td class="middletext">' . $data['version'] . '</td> <td class="middletext" style="text-align:right">'; if ($id != 'lang.english') { echo '<a href="javascript:void(\'\')" onclick="FormFunc(\'lang_delete\', \'' . $id . '\', \'' . $txt['pmx_confirm_langdelete'] . '\');">' . $txt['pmx_center_langdelete'] . '</a>'; } echo ' </td> </tr>'; } echo ' </table> </div> <div style="margin-bottom:1em;"> </div> <div class="cat_bar"> <h3 class="catbg centertext">', $txt['pmx_center_langavailable'], '</h3> </div> <div class="windowbg wdbgtop"> <table class="pmx_table_grid"> <tr> <td class="normaltext" style="text-align:left;width:35%"><b>' . $txt['pmx_center_langname'] . '</b></td> <td class="normaltext" style="text-align:left;width:20%"><b>' . $txt['pmx_center_langcharset'] . '</b></td> <td class="normaltext" style="text-align:left;width:10%"><b>' . $txt['pmx_center_langversion'] . '</b></td> <td class="normaltext" style="text-align:right;width:15%"><b>' . $txt['pmx_center_langaction'] . '</b></td> </tr>'; // show available languages if (!empty($context['pmx']['langsets'])) { foreach ($context['pmx']['langsets'] as $data) { // check is installed $isInst = compareLang($data, $installed['lang.english'], 'eq'); $isUpd = false; foreach ($installed as $i => $inst) { if (compareLang($data, $inst, 'gt')) { $isInst = true; if ($data['version'] > $inst['version']) { $isUpd = true; } break; } } echo ' <tr> <td class="middletext">' . (isset($data['manually']) ? '* ' : '') . $data['name'] . '</td> <td class="middletext">' . $data['charset'] . '</td> <td class="middletext">' . $data['version'] . '</td> <td class="middletext" style="text-align:right"> <a href="javascript:void(\'\')" onclick="FormFunc(\'lang_install\', \'' . $data['link'] . (!empty($isInst) || !empty($isUpd) ? '\', \'' . (empty($isUpd) ? $txt['pmx_confirm_langreplace'] : $txt['pmx_confirm_langupdate']) : '') . '\')">' . (empty($isInst) ? $txt['pmx_center_langinstall'] : (empty($isUpd) ? $txt['pmx_center_langreplace'] : $txt['pmx_center_langupdate'])) . '</a> </td> </tr>'; } } else { echo ' <tr> <td class="middletext" colspan="4">' . $txt['pmx_center_fetchlang_failed'] . '</td> </tr>'; } echo ' </table> </div> <div style="margin-bottom:1em;"> </div>'; // show manually instalable languages if (!empty($context['pmx']['manualylangsets'])) { echo ' <div class="cat_bar"> <h3 class="catbg centertext">', $txt['pmx_center_manuallylang'], '</h3> </div> <div class="windowbg wdbgtop"> <table class="pmx_table_grid"> <tr> <td class="normaltext" style="text-align:left;width:35%"><b>' . $txt['pmx_center_langname'] . '</b></td> <td class="normaltext" style="text-align:left;width:20%"><b>' . $txt['pmx_center_langcharset'] . '</b></td> <td class="normaltext" style="text-align:left;width:10%"><b>' . $txt['pmx_center_langversion'] . '</b></td> <td class="normaltext" style="text-align:right;width:15%"><b>' . $txt['pmx_center_langaction'] . '</b></td> </tr>'; foreach ($context['pmx']['manualylangsets'] as $key => $data) { $isInst = false; $isUpd = false; foreach ($installed as $i => $inst) { if (compareLang($data, $inst, 'gt')) { $isInst = true; if ($data['version'] > $inst['version']) { $isUpd = true; } break; } } echo ' <tr> <td class="middletext">' . $data['name'] . '</td> <td class="middletext">' . $data['charset'] . '</td> <td class="middletext">' . $data['version'] . '</td> <td class="middletext" style="text-align:right"> <a href="javascript:void(\'\')" onclick="FormFunc(\'lang_install_manually\', \'' . $key . '\')">' . (empty($isInst) ? $txt['pmx_center_langinstall'] : (empty($isUpd) ? $txt['pmx_center_langreplace'] : $txt['pmx_center_langupdate'])) . '</a> </td> </tr>'; } echo ' </table> </div> <div style="margin-bottom:1em;"> </div>'; } echo ' <div style="padding:5px 10px;text-align:center"> <input class="button_submit" type="button" name="back" value="' . $txt['page_reqerror_button'] . '" onclick="window.location.href=\'' . $scripturl . '?action=' . $context['pmx']['admmode'] . ';area=pmx_center\';pmxWinGetTop(\'adm\',\'template\')" /> </div> </td> </tr> </table> <script type="text/javascript"> function StartProgress() { document.getElementById("holding").style.display = "none"; document.getElementById("loading").style.display = ""; } </script> </form>'; } echo ' </td> </tr> </table>'; }
/** * Find manually installable languages */ function getManuallyLanguages($installed) { global $context, $settings; // check for manually installable languages $langPath = $settings['default_theme_dir'] . '/languages/PortaMx'; $context['pmx']['manualylangsets'] = array(); $dir = dir($langPath); while ($entry = $dir->read()) { preg_match('~^PortaMx\\.?([a-zA-Z0-9_-]+)\\.php~', $entry, $match); if (!empty($match)) { $handle = fopen($langPath . '/PortaMx.' . $match[1] . '.php', "r"); $content = fread($handle, 512); fclose($handle); $isutf = strrchr($match[1], '-'); if ($isutf !== false && $isutf == '-utf8') { $name = ucfirst(substr($match[1], 0, -5)); } else { $name = ucfirst($match[1]); } $context['pmx']['manualylangsets']['lang.' . $match[1]] = array('name' => $name, 'version' => preg_match("~\\*\\s.version\\s([A-Za-z0-9\\.\\-\\s]+)~i", $content, $version) != 0 && isset($version[1]) ? $version[1] : '?.???', 'charset' => $isutf !== false && $isutf == '-utf8' ? 'UTF-8' : 'ISO-8859-1', 'langext' => '.' . $match[1], 'manually' => true); } } $dir->close(); // remove installed languages from manually set if (!empty($context['pmx']['manualylangsets'])) { foreach ($installed as $ldata) { if (isset($context['pmx']['manualylangsets']['lang' . $ldata['langext']])) { if (compareLang($ldata, $context['pmx']['manualylangsets']['lang' . $ldata['langext']], 'gt')) { unset($context['pmx']['manualylangsets']['lang' . $ldata['langext']]); } } } } }