Example #1
0
 /**
  * Returns HTML for colored (red/green) display of writable status 
  *
  * @param mixed $CurrentStatus The current status of the item in question
  * @param mixed $DesiredStatus The status considered good for the item in question
  * @param string $goodKey The translation key for the string to display if the status is good
  * @param string $errorKey The translation key for the string to display if the status is not good
  * @param string $translationSection The translation section to look for the key in.
  * @return string
  */
 function colorizeWriteStatus($CurrentStatus, $DesiredStatus, $goodKey = 'writable', $errorKey = 'unwritable', $translationSection = 'common')
 {
     $isStatusGood = $CurrentStatus === $DesiredStatus;
     $statusVerbal = $isStatusGood ? JoomlapackLangManager::_(strtoupper($translationSection) . '_' . strtoupper($goodKey)) : JoomlapackLangManager::_(strtoupper($translationSection) . '_' . strtoupper($errorKey));
     $class = $isStatusGood ? 'statusok' : 'statusnotok';
     $image = $isStatusGood ? 'ok_small' : 'error_small';
     $imageURL = JoomlapackCommonHTML::getImageURI($image);
     return '<span class="' . $class . '"><img src="' . $imageURL . '" border="0" width="16" height="16" />' . $statusVerbal . '</span>';
 }
Example #2
0
 /**
  * Displays the HTML for this page
  * 
  */
 function echoHTML()
 {
     $nohtml = JoomlapackAbstraction::getParam('no_html', 0);
     if ($nohtml == 1) {
         JoomlapackLogger::VisualizeLogDirect();
     } else {
         $configuration =& JoomlapackConfiguration::getInstance();
         $option = JoomlapackAbstraction::getParam('option', 'com_joomlapack');
         // Show top header
         echo JoomlapackCommonHTML::getAdminHeadingHTML(JoomlapackLangManager::_('LOG_LOGBANNER'));
         echo "<p><a href=\"index2.php?option={$option}&act=dllog&no_html=1\">" . JoomlapackLangManager::_('LOG_DOWNLOADTEXT') . "</a></p>";
         echo '<iframe src="index2.php?option=' . $option . '&act=log&no_html=1" width="90%" height="400px">';
         echo '</iframe>';
     }
 }
Example #3
0
    function echoHTML()
    {
        jpimport('helpers.lang');
        $errorStack = array();
        // Initialize an errors stack
        // Cleanup locks
        jpimport('classes.core.cube');
        JoomlapackCUBE::cleanup();
        // Test for the existence of a default temporary folder
        if (!is_dir(JPATH_COMPONENT_ADMINISTRATOR . DS . 'backup')) {
            // Temp dir doesn't exist; try to create one
            if (!@mkdir(JPATH_COMPONENT_ADMINISTRATOR . DS . 'backup')) {
                $errorStack[] = JoomlapackLangManager::_('UNLOCK_CANTCREATEDIR');
            } else {
                // Try creating a deafult .htaccess
                $htaccess = <<<END
Deny from all
END;
                $fp = @fopen(JPATH_COMPONENT_ADMINISTRATOR . DS . 'backup' . DS . '.htaccess');
                if ($fp === false) {
                    $errorStack[] = JoomlapackLangManager::_('UNLOCK_CANTCREATEHTACCESS');
                } else {
                    @fputs($fp, $htaccess);
                    @fclose($fp);
                }
            }
        }
        // Get some more HTML fragments
        echo JoomlapackCommonHTML::getAdminHeadingHTML(JoomlapackLangManager::_('CPANEL_UNLOCK'));
        ?>
		<p>
		<?php 
        if (count($errorStack) == 0) {
            echo JoomlapackLangManager::_('UNLOCK_DONE');
        } else {
            foreach ($errorStack as $error) {
                echo "<p class=\"error\">{$error}</p>";
            }
        }
        ?>
		</p>
		<?php 
    }
Example #4
0
    function getTablesHTML()
    {
        jpimport('classes.filter.dbef');
        jpimport('helpers.lang');
        $resetHTML = JoomlapackLangManager::_('DBEF_RESET');
        $filter1HTML = JoomlapackLangManager::_('DBEF_QUICK1');
        $out = <<<END
\t\t\t<p>
\t\t\t<a href='javascript:Reset();'>{$resetHTML}</a> -
\t\t\t<a href='javascript:FilterNonJ();'>{$filter1HTML}</a>
\t\t\t</p>
\t\t\t<table class="adminlist">
\t\t\t\t<tr>
\t\t\t\t\t<th align="left" width="50">
END;
        $out .= JoomlapackLangManager::_('DBEF_EXCLUDE') . "\n" . "</th><th class=\"title\">" . JoomlapackLangManager::_('DBEF_TABLE') . "</th></tr>";
        $dbef = new JoomlapackFilterDBEF();
        $dbef->init();
        $filters = $dbef->getFilters('database');
        $tables = $this->getTables();
        $id = 0;
        // Get db prefix
        global $mosConfig_dbprefix;
        $prefix = defined('_JEXEC') ? JApplication::getCfg('dbprefix') : $mosConfig_dbprefix;
        foreach ($tables as $table) {
            // Get abstract name
            $tableAbstract = str_replace($prefix, '#__', $table);
            $isJoomla = $tableAbstract != $table;
            $checked = in_array($tableAbstract, $filters) ? " checked = \"true\" " : '';
            $id++;
            $out .= "\n<tr><td align=\"center\">";
            $out .= "<input type=\"checkbox\" {$checked} onclick=\"ToggleFilter('" . $tableAbstract . "', 'dbef-{$id}');\" id=\"dbef-{$id}\">";
            $out .= "</td><td align=\"left\">";
            $out .= ($isJoomla ? "<b>" : "") . htmlentities($table) . ($isJoomla ? "</b>" : "");
        }
        $out .= "\n</table>";
        return $out;
    }
Example #5
0
    function getFileSelectionHTML($root)
    {
        // Import usefull JoomlaPack classes
        jpimport('classes.filter.sff');
        jpimport('helpers.lang');
        jpimport('classes.core.utility.filtermanager');
        // Cleanup the root folder we were passed
        $root = realpath($root);
        // Get some translation strings
        $lang_dir = JoomlapackLangManager::_('SFF_DIR');
        $lang_excluded = JoomlapackLangManager::_('SFF_EXCLUDE');
        $lang_file = JoomlapackLangManager::_('SFF_FILE');
        // Scan folder for files
        $sff = new JoomlapackFilterSFF();
        $scanResult = $sff->getDirectory($root);
        // Get the directories filters; we're not going to allow the user to enter excluded folders :)
        $filterManager = new JoomlapackFilterManager();
        $filterManager->init();
        // Produce the output
        $out = <<<END
\t\t\t<h4>{$root}</h4>
\t\t\t<table border="0" cellspacing="10">
\t\t\t\t<tr>
\t\t\t\t\t<td valign="top">
\t\t\t\t\t\t<!-- Directory Selection -->
\t\t\t\t\t\t<table class="adminlist">
\t\t\t\t\t\t\t<thead>
\t\t\t\t\t\t\t\t<tr>
\t\t\t\t\t\t\t\t\t<th>{$lang_dir}</th>
\t\t\t\t\t\t\t\t</tr>
\t\t\t\t\t\t\t</thead>
\t\t\t\t\t\t\t<tbody>
END;
        $dirFilters = $filterManager->getFilters('folder');
        foreach ($scanResult['folders'] as $folder) {
            if (is_array($dirFilters)) {
                $wholefolder = JoomlapackAbstraction::TranslateWinPath($root . DIRECTORY_SEPARATOR . $folder);
                $showLink = !in_array($wholefolder, $dirFilters);
            } else {
                $showLink = true;
            }
            $out .= "\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td>\n";
            if ($showLink) {
                $out .= "<a href=\"javascript:dirSelectionHTML('" . JoomlapackAbstraction::TranslateWinPath($root . DIRECTORY_SEPARATOR . $folder) . "');\">" . htmlentities($folder) . "</a>";
            } else {
                $out .= htmlentities($folder);
            }
            $out .= "\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n";
        }
        $out .= <<<END
\t\t\t\t\t\t\t</tbody>
\t\t\t\t\t\t</table>
\t\t\t\t\t</td>
\t\t\t\t\t<td valign="top">
\t\t\t\t\t\t<!-- File Selection -->
\t\t\t\t\t\t<table class="adminlist">
\t\t\t\t\t\t\t<thead>
\t\t\t\t\t\t\t\t<tr>
\t\t\t\t\t\t\t\t\t<th>{$lang_excluded}</th>
\t\t\t\t\t\t\t\t\t<th>{$lang_file}</th>
\t\t\t\t\t\t\t\t</tr>
\t\t\t\t\t\t\t</thead>
\t\t\t\t\t\t\t<tbody>
END;
        $id = 0;
        foreach ($scanResult['files'] as $file => $excluded) {
            $id++;
            $checked = $excluded ? " checked = \"true\" " : "";
            $out .= "\n<tr><td align=\"center\">";
            $out .= "<input type=\"checkbox\" {$checked} onclick=\"ToggleFilter('" . JoomlapackAbstraction::TranslateWinPath($root) . "', '{$file}','sff-{$id}');\" id=\"sff-{$id}\">";
            $out .= "</td><td align=\"left\">";
            $out .= htmlentities($file);
            $out .= "</td></tr>";
        }
        $out .= <<<END
\t\t\t\t\t\t\t</tbody>
\t\t\t\t\t\t</table>
\t\t\t\t\t</td>
\t\t\t\t</tr>
\t\t\t</table>
END;
        return $out;
    }
Example #6
0
 function backupMethodChooser($activeMethod)
 {
     $options = array();
     if (!defined('_JEXEC')) {
         $options[] = mosHTML::makeOption('ajax', JoomlapackLangManager::_('CONFIG_METHODAJAX'));
         $options[] = mosHTML::makeOption('redirect', JoomlapackLangManager::_('CONFIG_METHODJSREDIRECT'));
         echo mosHTML::selectList($options, 'backupMethod', '', 'value', 'text', $activeMethod);
     } else {
         $options[] = JHTML::_('select.option', 'ajax', JoomlapackLangManager::_('CONFIG_METHODAJAX'));
         $options[] = JHTML::_('select.option', 'redirect', JoomlapackLangManager::_('CONFIG_METHODJSREDIRECT'));
         echo JHTML::_('select.genericlist', $options, 'backupMethod', '', 'value', 'text', $activeMethod);
     }
 }
    function CommonFooter()
    {
        // Skip footer for AJAX calls
        if (JoomlapackAbstraction::isSAJAX()) {
            return;
        }
        $option = JoomlapackAbstraction::getParam('option', 'com_joomlapack');
        ?>
		<p>
			[
			<a href="index2.php?option=<?php 
        echo $option;
        ?>
"><?php 
        echo JoomlapackLangManager::_('CPANEL_HOME');
        ?>
</a>
			]
			<br />
			<span style="font-size:x-small;">
			JoomlaPack <?php 
        echo _JP_VERSION;
        ?>
. Copyright &copy; 2006-2008 <a href="http://www.joomlapack.net">JoomlaPack Developers</a>.<br/>
			<a href="http://www.joomlapack.net">JoomlaPack</a> is Free Software released under the GNU/GPL License.
			</span>
		</p>
	<?php 
    }
Example #8
0
 function _checkCollision()
 {
     jpimport('classes.core.utility.configuration');
     $lastLock = JoomlapackTables::ReadVar('CUBELock');
     // Expire CUBE lock after two minutes of inactivity
     if (is_null($lastLock)) {
         $noLock = true;
     } else {
         $now = time();
         $noLock = $now - $lastLock > 120;
     }
     if (!$noLock) {
         die(JoomlapackLangManager::_('FRONTEND_STATUS501'));
     }
 }
Example #9
0
    /**
     * Returns the admin list of multidb definitions
     *
     * @return string The HTML of the table
     */
    function getMultiDBList()
    {
        jpimport('helpers.lang');
        $lang_active = JoomlapackLangManager::_('MULTIDB_ACTIVE');
        $lang_host = JoomlapackLangManager::_('MULTIDB_HOST');
        $lang_database = JoomlapackLangManager::_('MULTIDB_DATABASE');
        $out = '';
        $out .= <<<END
\t\t\t<table class="adminlist">
\t\t\t<thead>
\t\t\t<tr>
\t\t\t\t<th width="5">#</th>
\t\t\t\t<th class="title" width="100px">{$lang_active}</th>
\t\t\t\t<th class="title">{$lang_host}</th>
\t\t\t\t<th class="title">{$lang_database}</th>
\t\t\t\t<th width="80" align="right"></th>
\t\t\t\t<th width="80" align="right"></th>
\t\t\t</tr>
\t\t\t</thead>
\t\t\t<tbody>
END;
        $allRows = $this->_getRowList();
        if (count($allRows) > 0) {
            foreach ($allRows as $row) {
                $checked = $row['active'] ? " checked = \"true\" " : "";
                $row_id = $row['id'];
                $row_host = $row['host'];
                $row_database = $row['database'];
                $lang_edit = JoomlapackLangManager::_('MULTIDB_EDIT');
                $lang_delete = JoomlapackLangManager::_('MULTIDB_DELETE');
                $out .= <<<ENDTHISROW
\t\t\t<tr>
\t\t\t\t<td>{$row_id}</td>
\t\t\t\t<td><input type="checkbox" {$checked} onclick="ToggleActive({$row_id});" /></td>
\t\t\t\t<td>{$row_host}</td>
\t\t\t\t<td>{$row_database}</td>
\t\t\t\t<td><a href="javascript:editRow({$row_id});">{$lang_edit}</a></td>
\t\t\t\t<td><a href="javascript:deleteRow({$row_id});">{$lang_delete}</a></td>
\t\t\t</tr>
ENDTHISROW;
            }
        } else {
            $out .= '<tr><td colspan="6">' . JoomlapackLangManager::_('MULTIDB_NORECORDS') . '</td></tr>';
        }
        $out .= <<<END
\t\t\t</tbody>
\t\t</table>
END;
        return $out;
    }
Example #10
0
    $myBase = realpath($myBase) == '' ? $myBase : realpath($myBase);
    // 1.2a3 -- Rare case when $myBase == '/'
    define('DS', DIRECTORY_SEPARATOR);
    define('JPATH_SITE', realpath($myBase));
    define('JPATH_COMPONENT_ADMINISTRATOR', $myBase . DS . 'administrator' . DS . 'components' . DS . $option);
    define('JPATH_COMPONENT', $myBase . DS . 'components' . DS . $option);
}
// Include Joomla! Version Abstraction Layer
require_once JPATH_COMPONENT_ADMINISTRATOR . DS . 'helpers' . DS . 'frameworkabstraction.php';
// Include abstract classes definitions
jpimport('classes.abstract.object');
jpimport('classes.abstract.filter');
jpimport('classes.abstract.enginearchiver');
jpimport('classes.abstract.engineparts');
// Always populate basic Joomla! page parameters and make them global
global $act, $task;
// Get the parameters from the request
$act = JoomlapackAbstraction::getParam('act', 'default');
$task = JoomlapackAbstraction::getParam('task', '');
// Load language definitions
require_once JPATH_COMPONENT_ADMINISTRATOR . DS . 'helpers' . DS . 'lang.php';
switch ($act) {
    case "fullbackup":
        require_once JPATH_COMPONENT . '/includes/CFullBackup.php';
        $tickableObject =& CFullBackup::getInstance();
        $tickableObject->tick();
        break;
    default:
        echo JoomlapackLangManager::_('FRONTEND_ACCESSDENIED');
        break;
}
Example #11
0
    /**
     * Outputs an error condition. Used by the JavaScript Redirects backup method.
     * It displays all errors found in the class' _errorStack array.
     * 
     * @access private
     * @since 1.2.b1
     */
    function _echoHTML_Redirects_Error()
    {
        ?>
<div id="Main">
	<div id="Timeout" style="display:none; margin-top: 10px;" class="sitePack">
		<table border="0" width="100%">
			<tr>
				<td valign="top">
					<img src="<?php 
        echo JoomlapackCommonHTML::getImageURI('error_big');
        ?>
" border="0" />
				</td>
			</tr>
<?php 
        foreach ($this->_errorStack as $errorString) {
            ?>
			<tr>
				<td>
					<p><?php 
            echo $errorString;
            ?>
</p>
				</td>
			</tr>
<?php 
        }
        ?>
			<tr>
				<td>&nbsp;</td>
				<td>
					<a href="<?php 
        echo JoomlapackAbstraction::JPLink('log');
        ?>
">
						<div class="jpbutton">
							<img src="<?php 
        echo JoomlapackCommonHTML::getImageURI('log');
        ?>
" border="0" />
							<p><?php 
        echo JoomlapackLangManager::_('CPANEL_LOG');
        ?>
</p>
						</div>
					</a>					
				</td>
			</tr>
		</table>
	</div>
</div>
<?php 
    }
 function _echoFix()
 {
     $jpconfiguration =& JoomlapackConfiguration::getInstance();
     $db = JoomlapackAbstraction::getDatabase();
     echo JoomlapackCommonHTML::getAdminHeadingHTML(JoomlapackLangManager::_('CPANEL_CONFIGMIGRATE'));
     // Catch the "nothing to do" case
     if ($jpconfiguration->get('siteRoot') == JPATH_SITE) {
         echo JoomlapackLangManager::_('CONFIGMIGRATE_NOFIXREQUIRED');
         return;
     }
     // Sometimes, it is possible that the siteRoot configuration value is not set
     // (e.g. manually upgrading from an older version, keeping the config xml file).
     // This will fix it
     if (is_null($jpconfiguration->get('siteRoot'))) {
         echo JoomlapackLangManager::_('CONFIGMIGRATE_NOROOTSTORED');
         $jpconfiguration->set('siteRoot', JPATH_SITE);
         $jpconfiguration->SaveConfiguration();
         return;
     }
     // A genuine case of site location mismatch. Let's take a look at it.
     $oldPath = JoomlapackAbstraction::TranslateWinPath($jpconfiguration->get('siteRoot'));
     $newPath = JoomlapackAbstraction::TranslateWinPath(JPATH_SITE);
     $sql = 'SELECT * FROM ' . $db->nameQuote('#__jp_exclusion');
     $db->setQuery($sql);
     $temparray = $db->loadAssocList();
     foreach ($temparray as $row) {
         $value = $row['value'];
         if (strstr($value, $oldPath)) {
             $value = str_replace($oldPath, $newPath, $value);
             $sql = 'UPDATE ' . $db->nameQuote('#__jp_exclusion') . ' SET ' . $db->nameQuote('value') . ' = ' . $db->Quote($value) . ' WHERE ' . $db->nameQuote('id') . ' = ' . $db->Quote($row['id']);
             $db->setQuery($sql);
             $db->query();
         }
     }
     echo JoomlapackLangManager::_('CONFIGMIGRATE_FIXED');
 }
Example #13
0
    function _echoJavaScript()
    {
        $this->commonSAJAX();
        ?>
		<script type="text/javascript">
		<?php 
        sajax_show_javascript();
        ?>
		
	 		
 		sajax_fail_handle = SAJAXTrap;

		function SAJAXTrap( myData ) {
			alert('Invalid AJAX reponse: ' + myData);
		}

		function do_deletebackup( filename )
		{
			x_deleteBackup( filename, do_deletebackup_cb ); 
		}
		
		function do_deletebackup_cb( myRet )
		{
			if( myRet ) {
				alert('<?php 
        echo JoomlapackLangManager::_('BUADMIN_DELETESUCCESS');
        ?>
');
			} else {
				alert('<?php 
        echo JoomlapackLangManager::_('BUADMIN_DELETEFAILED');
        ?>
');
			}
			
			history.go(0);
		}
		 
		</script>
<?php 
    }
Example #14
0
    function getDirSelectionHTML($root)
    {
        jpimport('classes.filter.def');
        jpimport('helpers.lang');
        $root = realpath($root);
        $out = <<<END
\t\t\t<h4>{$root}</h4>
\t\t\t<table class="adminlist">
\t\t\t\t<tr>
\t\t\t\t\t<th align="left" width="50">
END;
        $out .= JoomlapackLangManager::_('DEF_EXCLUDE') . "\n" . "</th><th class=\"title\">" . JoomlapackLangManager::_('DEF_DIRECTORY') . "</th></tr>";
        $def = new JoomlapackFilterDEF();
        $def->init();
        $dirs = $def->getDirectory($root);
        $id = 0;
        foreach ($dirs as $dir => $excluded) {
            $id++;
            $checked = $excluded ? " checked = \"true\" " : "";
            $nocheck = $dir == "." || $dir == "..";
            $out .= "\n<tr><td align=\"center\">";
            if (!$nocheck) {
                $out .= "<input type=\"checkbox\" {$checked} onclick=\"ToggleFilter('" . JoomlapackAbstraction::TranslateWinPath($root) . "', '{$dir}','def-{$id}');\" id=\"def-{$id}\">";
            } else {
                $out .= "&nbsp;";
            }
            $out .= "</td><td align=\"left\">";
            if ($excluded) {
                $out .= htmlentities($dir);
            } else {
                $out .= "<a href=\"javascript:dirSelectionHTML('" . JoomlapackAbstraction::TranslateWinPath($root . DIRECTORY_SEPARATOR . $dir) . "');\">" . htmlentities($dir) . "</a>";
            }
            $out .= "</td></tr>";
        }
        $out .= "\n</table>";
        return $out;
    }
Example #15
0
    /**
     * Renders the JoomlaPack's overview tabbed pane
     */
    function _getTabsHTML()
    {
        // Get some status information
        $config =& JoomlapackConfiguration::getInstance();
        $this->_isOutWritable = $config->isOutputWriteable();
        $this->_isTempWritable = $config->isTempWriteable();
        $this->_isStatusGood = $this->_isOutWritable && $this->_isTempWritable;
        $this->_defaultDirs = realpath($config->OutputDirectory) == realpath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'backup') || realpath($config->TempDirectory) == realpath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'backup');
        if (defined('_JEXEC')) {
            jimport('joomla.html.pane');
            $tabs =& JPane::getInstance('sliders');
            echo $tabs->startPane('jpstatuspane');
        } else {
            $tabs = new mosTabs(1);
            $tabs->startPane('jpstatuspane');
        }
        if (defined('_JEXEC')) {
            echo $tabs->startPanel(JoomlapackLangManager::_('MAIN_OVERVIEW'), 'jpstatusov');
        } else {
            $tabs->startTab(JoomlapackLangManager::_('MAIN_OVERVIEW'), 'jpstatusov');
        }
        echo '<p class="sanityCheck">' . JoomlapackLangManager::_('MAIN_STATUS') . ': ';
        echo JoomlapackCommonHTML::colorizeWriteStatus($this->_isStatusGood, true, 'appgood', 'appnotgood', 'main') . '</p>';
        // --- START --- Detect use of default temp directory
        if ($this->_defaultDirs) {
            echo '<p class="sanityCheck">' . JoomlapackLangManager::_('MAIN_WARNING') . '<br/>';
            echo '<a href="http://www.joomlapack.net/index.php?option=com_content&id=75">' . JoomlapackLangManager::_('MAIN_WARNING_INFO') . '</a></p>';
        }
        // --- END ---
        if (defined('_JEXEC')) {
            echo $tabs->endPanel();
            echo $tabs->startPanel(JoomlapackLangManager::_('MAIN_DETAILS'), 'jpstatusdet');
        } else {
            $tabs->endTab();
            $tabs->startTab(JoomlapackLangManager::_('MAIN_DETAILS'), 'jpstatusdet');
        }
        // Populate side panel
        $item = JoomlapackLangManager::_('MAIN_ITEM');
        $status = JoomlapackLangManager::_('MAIN_STATUS');
        $tempDir = JoomlapackLangManager::_('COMMON_TEMPDIR');
        $tempStatus = JoomlapackCommonHTML::colorizeWriteStatus($this->_isTempWritable, true);
        $outDir = JoomlapackLangManager::_('COMMON_OUTDIR');
        $outStatus = JoomlapackCommonHTML::colorizeWriteStatus($this->_isOutWritable, true);
        $verCheckTitle = JoomlapackLangManager::_('COMMON_VERSION_CHECK');
        $verHTML = $this->checkAppStatusV(strstr(_JP_VERSION, 'SVN') ? 0 : 1);
        echo <<<ENDSNIPPET
\t\t\t<table align="center" border="1" cellspacing="0" cellpadding="5" class="adminlist">
\t\t\t\t<thead>
\t\t\t\t\t<tr>
\t\t\t\t\t\t<th class="title">{$item}</th>
\t\t\t\t\t\t<th>{$status}</th>
\t\t\t\t\t</tr>
\t\t\t\t</thead>
\t\t\t\t<tbody>
\t\t\t\t\t<tr>
\t\t\t\t\t\t<td>{$tempDir}</td>
\t\t\t\t\t\t<td>{$tempStatus}</td>
\t\t\t\t\t</tr>
\t\t\t\t\t<tr>
\t\t\t\t\t\t<td>{$outDir}</td>
\t\t\t\t\t\t<td>{$outStatus}</td>
\t\t\t\t\t</tr>
\t\t\t\t\t<tr>
\t\t\t\t\t\t<td>{$verCheckTitle}</td>
\t\t\t\t\t\t<td>{$verHTML}</td>
\t\t\t\t\t</tr>
\t\t\t\t</tbody>
\t\t\t</table>
ENDSNIPPET;
        if (defined('_JEXEC')) {
            echo $tabs->endPanel();
            echo $tabs->startPanel(JoomlapackLangManager::_('MAIN_TRANSLATIONCREDITS'), 'jptranscredits');
        } else {
            $tabs->endTab();
            $tabs->startTab(JoomlapackLangManager::_('MAIN_TRANSLATIONCREDITS'), 'jptranscredits');
        }
        $translationlanglabel = JoomlapackLangManager::_('MAIN_TRANSLATIONLANG');
        $translationlang = JoomlapackLangManager::_('INFO_LANGUAGE');
        $translationverlabel = JoomlapackLangManager::_('MAIN_TRANSLATIONVER');
        $translationver = JoomlapackLangManager::_('INFO_JPVER');
        $translationauthorlabel = JoomlapackLangManager::_('MAIN_TRANSLATIONAUTHOR');
        $translationauthor = JoomlapackLangManager::_('INFO_AUTHOR');
        $trasnlationurllabel = JoomlapackLangManager::_('MAIN_TRANSLATIONURL');
        $trasnlationurl = JoomlapackLangManager::_('INFO_AUTHORURL');
        echo <<<ENDSNIPPET
\t\t\t<table align="center" border="1" cellspacing="0" cellpadding="5" class="adminlist">
\t\t\t\t<thead>
\t\t\t\t\t<tr>
\t\t\t\t\t\t<th class="title">{$item}</th>
\t\t\t\t\t\t<th>{$status}</th>
\t\t\t\t\t</tr>
\t\t\t\t</thead>
\t\t\t\t<tbody>
\t\t\t\t\t<tr>
\t\t\t\t\t\t<td>{$translationlanglabel}</td>
\t\t\t\t\t\t<td>{$translationlang}</td>
\t\t\t\t\t</tr>
\t\t\t\t\t<tr>
\t\t\t\t\t\t<td>{$translationverlabel}</td>
\t\t\t\t\t\t<td>{$translationver}</td>
\t\t\t\t\t</tr>
\t\t\t\t\t<tr>
\t\t\t\t\t\t<td>{$translationauthorlabel}</td>
\t\t\t\t\t\t<td>{$translationauthor}</td>
\t\t\t\t\t</tr>
\t\t\t\t\t<tr>
\t\t\t\t\t\t<td>{$trasnlationurllabel}</td>
\t\t\t\t\t\t<td>{$trasnlationurl}</td>
\t\t\t\t\t</tr>
\t\t\t\t</tbody>
\t\t\t</table>
ENDSNIPPET;
        if (defined('_JEXEC')) {
            echo $tabs->endPanel();
            echo $tabs->endPane();
        } else {
            $tabs->endTab();
            $tabs->endPane();
        }
    }
        // Configuration screen
        if (!JoomlapackAbstraction::isSAJAX() && $task != 'save') {
            echo '<link rel="stylesheet" href="components/' . $option . '/assets/css/jpcss.css" type="text/css" />';
        }
        switch ($task) {
            case "apply":
                $configuration =& JoomlapackConfiguration::getInstance();
                $configuration->SaveFromPost();
                jpackScreens::fConfig();
                break;
            case "save":
                $configuration =& JoomlapackConfiguration::getInstance();
                $configuration->SaveFromPost();
                $skipFooter = true;
                $uri = JoomlapackAbstraction::SiteURI() . '/administrator/index.php?option=' . JoomlapackAbstraction::getParam('option', 'com_joomlapack');
                $html = JoomlapackLangManager::_('CONFIG_CONT_LINE1') . ' <a href="' . $uri . '">' . JoomlapackLangManager::_('CONFIG_CONT_LINE2') . '</a> ' . JoomlapackLangManager::_('CONFIG_CONT_LINE3');
                echo <<<ENDSNIPPET
\t\t\t\t<script language="Javascript" type="text/javascript">
\t\t\t\twindow.location="{$uri}";
\t\t\t\t</script>
\t\t\t\t<noscript>
\t\t\t\t{$html}
\t\t\t\t</noscript>
ENDSNIPPET;
                //jpackScreens::fMain();
                break;
            case "cancel":
                jpackScreens::fMain();
                break;
            default:
                jpackScreens::fConfig();