codiad/components/market/dialog.php

154 lines
10 KiB
PHP
Raw Permalink Normal View History

<?php
/*
* Copyright (c) Codiad & daeks (codiad.com), distributed
* as-is and without warranty under the MIT License. See
* [root]/license.txt for more. This information must remain intact.
*/
require_once('../../common.php');
//////////////////////////////////////////////////////////////////
// Verify Session or Key
//////////////////////////////////////////////////////////////////
checkSession();
switch($_GET['action']){
//////////////////////////////////////////////////////////////
// Marketplace
//////////////////////////////////////////////////////////////
case 'list':
if(!checkAccess()){
?>
<label><?php i18n("Restricted"); ?></label>
<pre><?php i18n("You can not access the marketplace"); ?></pre>
<button onclick="codiad.modal.unload();return false;"><?php i18n("Close"); ?></button>
<?php } else {
require_once('class.market.php');
$market = new Market();
if(sizeof($market->remote) == 0){
?>
<label><?php i18n("Connection Error"); ?></label>
<pre><?php i18n("Connection to the market place can not be made. Please check your internet connection."); ?></pre>
<button onclick="codiad.modal.unload();return false;"><?php i18n("Close"); ?></button>
<?php } else { ?>
<label><?php i18n("Codiad Marketplace"); ?></label>
<div id="market-list">
<table width="100%">
<tr>
<th valign="middle" style="white-space:nowrap;"><button style="margin:0;" class="btn-left" onclick="codiad.market.list();return false;"><?php i18n("All"); ?></button><button class="btn-mid" style="margin:0;" onclick="codiad.market.list('plugins');return false;"><?php i18n("Plugins"); ?></button><button class="btn-right" style="margin:0;" onclick="codiad.market.list('themes');return false;"><?php i18n("Themes"); ?></button></th>
<th valign="middle" width="30%" style="white-space:nowrap;"><input style="margin:0;display:inline" onkeyup="codiad.market.search(event, this.value,'<?php echo $_GET['note']; ?>')" value="<?php if(isset($_GET['query'])) echo $_GET['query'];?>" placeholder="<?php i18n("Press Enter to Search"); ?>"></th>
</tr>
</table>
<div class="market-wrapper">
<table width="100%">
<?php
$marketplace = array();
foreach($market->remote as $data) {
if(!isset($data['category']) || $data['category'] == '') {
$data['category'] = 'Common';
}
if(!array_key_exists($data['remote'], $marketplace)) {
$marketplace[$data['remote']] = array();
}
if(!array_key_exists($data['type'], $marketplace[$data['remote']])) {
$marketplace[$data['remote']][$data['type']] = array();
}
if(!array_key_exists($data['category'], $marketplace[$data['remote']][$data['type']])) {
$marketplace[$data['remote']][$data['type']][$data['category']] = array();
}
array_push($marketplace[$data['remote']][$data['type']][$data['category']], $data);
}
ksort($marketplace);
$extLoaded = (extension_loaded('zip') && extension_loaded('openssl') && ini_get('allow_url_fopen') == 1);
function sort_name($a, $b) { return strnatcmp($a['name'], $b['name']); }
foreach($marketplace as $remote=>$markettype) {
ksort($markettype);
echo '<tr><th class="market-remote-title">';
if(!$remote) {
echo get_i18n("Installed");
} else {
echo get_i18n("Available");
}
echo '</th></tr>';
foreach($markettype as $type=>$data) {
ksort($data);
if($_GET['type'] == 'undefined' || $_GET['type'] == $type) {
foreach($data as $category=>$subdata) {
usort($subdata, 'sort_name');
foreach($subdata as $addon){
if(isset($_GET['query']) && (strpos(strtolower(trim($addon['name'])), strtolower(trim($_GET['query']))) === false)) {
continue;
}
echo '<tr><td><div style="position:relative;height:100px">';
$left = 0;
$right = 0;
if(isset($addon['image']) && $addon['image'] != '') {
echo '<div style="position:absolute;top:5px;left:404px;"><a onclick="codiad.market.openInBrowser(\''.$addon['image'].'\');return false;"><img src="'.$addon['image'].'" width="150" height="90"></a></div>';
$right = 160;
}
if(isset($addon['new'])) {
echo '<div style="position:absolute;top:0px;left:0px;z-index:10000;"><img src="./themes/default/images/new.png" width="35" height="35"></div>';
$left = $left + 30;
}
echo '<div style="position:absolute;top:2px;left:'.($left+10).'px;"><a style="font-weight:bold;font-size:14px" onclick="codiad.market.openInBrowser(\''.$addon['url'].'\');return false;">'.$addon['name'].'</a></div>';
echo '<div style="position:absolute;top:15px;left:'.($left+10).'px;"><font style="font-size:10px">'.get_i18n(ucfirst(rtrim($type,'s'))).' - '.get_i18n(ucfirst($category)).' | <a style="font-weight:bold;text-decoration:underline;" onclick="codiad.market.openInBrowser(\'https://github.com/'.$addon['author'].'\');return false;">'.$addon['author'].'</a> | '.$addon['count'].' '.get_i18n("Users").'</font></div>';
echo '<div style="position:absolute;top:25px;left:5px;"><pre style="height:60px;color:#a8a6a8;width:'.(550-$right).'px;white-space: pre-wrap;">'.$addon['description'].'</pre></div>';
if(!$addon['remote']) {
if(!isset($addon['update'])) {
echo '<div style="position:absolute;top:7px;left:570px;"><font style="color:green">'.get_i18n("Latest Version").' v'.$addon['version'].'</font></div>';
} else {
if($extLoaded && is_writable(BASE_PATH.'/'.$type.'/'.$addon['folder'])) {
echo '<div style="position:absolute;top:-5px;left:570px;"><button style="color: blue; width:150px;white-space:nowrap;" onclick="codiad.market.update(\''.$_GET['type'].'\',\''.$type.'\', \''.$addon['folder'].'\');return false;">'.get_i18n("Update ".ucfirst(rtrim($type,'s'))).'</button></div>';
} else {
echo '<div style="position:absolute;top:-5px;left:570px;"><button style="width:150px;white-space:nowrap;" onclick="codiad.market.openInBrowser(\''.$addon['url'].'\');">'.get_i18n("Download ".ucfirst(rtrim($type,'s'))).'</button><div>';
}
}
if(is_writable(BASE_PATH.'/'.$type.'/'.$addon['folder'])) {
echo '<div style="position:absolute;top:30px;left:570px;"><button style="color: red; width:150px;white-space:nowrap;" onclick="codiad.market.remove(\''.$_GET['type'].'\',\''.$type.'\', \''.$addon['folder'].'\');return false;">'.get_i18n("Delete ".ucfirst(rtrim($type,'s'))).'</button><div>';
}
} else {
if($extLoaded && is_writable(BASE_PATH.'/'.$type)) {
echo '<div style="position:absolute;top:-5px;left:570px;"><button style="width:150px;white-space:nowrap;" onclick="codiad.market.install(\''.$_GET['type'].'\',\''.$type.'\', \''.$addon['name'].'\',\''.$addon['url'].'\');return false;">'.get_i18n("Install ".ucfirst(rtrim($type,'s'))).'</button><div>';
} else {
echo '<div style="position:absolute;top:-5px;left:570px;"><button style="width:150px;white-space:nowrap;" onclick="codiad.market.openInBrowser(\''.$addon['url'].'\');">'.get_i18n("Download ".ucfirst(rtrim($type,'s'))).'</button><div>';
}
}
echo '</div></td></tr>';
}
}
}
}
}
?>
</table></div>
</div>
<?php } ?>
<table width="100%">
<tr>
<th valign="middle" align="center" width="40px"><?php
if($_GET['note'] != 'undefined' && $_GET['note'] == 'true') {
?><button style="color: blue;white-space:nowrap;" onclick="window.location.reload();return false;"><?php i18n("Reload Codiad"); ?></button><?php
} else {
?><button class="icon-arrows-ccw bigger-icon" onclick="window.location.reload();return false;"></button><?php
}
?></th>
<th valign="middle"><input style="margin:0;display:inline" id="repourl" placeholder="<?php i18n("Enter GitHub Repository Url..."); ?>"></th>
<th valign="middle" align="right" style="white-space:nowrap;" width="222px"><button class="btn-left" onclick="codiad.market.install('<?php echo $_GET['type']; ?>','','Manually',getElementById('repourl').value);return false;"><?php i18n("Install Manually"); ?></button><button class="btn-right" onclick="codiad.modal.unload();return false;"><?php i18n("Close"); ?></button></th>
</tr>
</table>
<?php
}
break;
}
?>