提交 61968d79 编写于 作者: T Terry

extension market manager

上级 4ccc2dc9
......@@ -22,7 +22,9 @@ use Yii;
*/
class Manager
{
public $nameSpaceArr;
public $versionArr;
/**
* init param function ,execute in construct.
*/
......@@ -36,17 +38,37 @@ class Manager
$addons = $info['addons'];
$coll = isset($addons['coll']) ? $addons['coll'] : [];
$count = isset($addons['count']) ? $addons['count'] : 0;
$this->initInstalledExtensions();
return [
'addon_list'=> $coll,
'addon_count' => $count,
'installed_extensions' => $this->getInstalledExtensions(),
'installed_extensions_namespace' => $this->nameSpaceArr,
'versionArr' => $this->versionArr,
];
}
// namespace
public function getInstalledExtensions()
public function initInstalledExtensions()
{
return Yii::$service->extension->getAllNamespaces();
$filter = [
'asArray' => true,
'fetchAll' => true,
];
$data = Yii::$service->extension->coll($filter);
$arr = [];
$versionArr = [];
if (is_array($data['coll'])) {
foreach ($data['coll'] as $one) {
$namespace = $one['namespace'];
if ($namespace) {
$arr[] = $namespace;
$versionArr[$namespace] = $one['version'];
}
}
}
$this->versionArr = $versionArr;
$this->nameSpaceArr = $arr;
}
......
......@@ -62,10 +62,11 @@ class ExtensionmarketController extends SystemController
{
$namespace = Yii::$app->request->get('namespace');
$packageName = Yii::$app->request->get('packageName');
$folderName = Yii::$app->request->get('folderName');
$addonName = Yii::$app->request->get('addonName');
// 进行zip文件下载到指定的文件路径
$zipFilePath = Yii::$service->extension->remoteService->downloadAddons($namespace, $packageName, $addonName);
$zipFilePath = Yii::$service->extension->remoteService->downloadAddons($namespace, $packageName, $folderName, $addonName);
if (!$zipFilePath) {
echo json_encode([
'statusCode' => '300',
......@@ -82,7 +83,8 @@ class ExtensionmarketController extends SystemController
]);
exit;
}
// 删除zip压缩包
unlink($zipFilePath);
// 将addons信息写入数据库
/*
......@@ -95,8 +97,8 @@ class ExtensionmarketController extends SystemController
string(7) "fecmall"
["name"]=>
string(15) "furnilife_theme"
["config_file_path"]=>
string(26) "furnilife_theme/config.php"
["folder"]=>
string(26) "furnilife_theme"
["version"]=>
string(5) "1.0.0"
}
......@@ -126,17 +128,180 @@ class ExtensionmarketController extends SystemController
]);
exit;
}
// 进行插件的升级
if (!Yii::$service->extension->administer->upgrade($namespace)) {
$errors = Yii::$service->helper->errors->get();
echo json_encode([
'statusCode' => '300',
'message' => Yii::$service->page->translate->__($errors),
]);
exit;
}
// 输入安装成功信息。
echo json_encode([
'statusCode' => '200',
'message' => Yii::$service->page->translate->__('addons install success'),
]);
exit;
}
// 升级
public function actionUpgrade()
{
$namespace = Yii::$app->request->get('namespace');
$packageName = Yii::$app->request->get('packageName');
$addonName = Yii::$app->request->get('addonName');
$folderName = Yii::$app->request->get('folderName');
// 进行zip文件下载到指定的文件路径
$zipFilePath = Yii::$service->extension->remoteService->downloadAddons($namespace, $packageName, $folderName, $addonName);
if (!$zipFilePath) {
echo json_encode([
'statusCode' => '300',
'message' => Yii::$service->page->translate->__('download remote addons fail'),
]);
exit;
}
// 进行zip文件的解压
$dest_dir = dirname($zipFilePath);
if (!Yii::$service->helper->zipFile->unzip($zipFilePath, $dest_dir, true, true)) {
echo json_encode([
'statusCode' => '300',
'message' => Yii::$service->page->translate->__('unzip addons fail'),
]);
exit;
}
// 删除zip压缩包
unlink($zipFilePath);
// 将addons信息写入数据库
/*
array(6) {
["id"]=>
string(2) "50"
["namespace"]=>
string(13) "fectfurnilife"
["package"]=>
string(7) "fecmall"
["name"]=>
string(15) "furnilife_theme"
["config_file_path"]=>
string(26) "furnilife_theme/config.php"
["version"]=>
string(5) "1.0.0"
}
*/
$data = Yii::$service->extension->remoteService->getAddonsInfoByNamespace($namespace);
if (!is_array($data)) {
echo json_encode([
'statusCode' => '300',
'message' => Yii::$service->page->translate->__('get remote addons info by namespace fail'),
]);
exit;
}
// 将远程获取的数据,保存到数据库中。
if (!Yii::$service->extension->upgradeInit($data)){
echo json_encode([
'statusCode' => '300',
'message' => Yii::$service->page->translate->__('init new install addon to db fail'),
]);
exit;
}
// 进行插件的升级
if (!Yii::$service->extension->administer->upgrade($namespace)) {
$errors = Yii::$service->helper->errors->get();
echo json_encode([
'statusCode' => '300',
'message' => Yii::$service->page->translate->__($errors),
]);
exit;
}
// 输入安装成功信息。
echo json_encode([
'statusCode' => '200',
'message' => Yii::$service->page->translate->__('addons install success'),
]);
exit;
}
// 卸载
public function actionUninstall()
{
$namespace = Yii::$app->request->get('namespace');
$packageName = Yii::$app->request->get('packageName');
$addonName = Yii::$app->request->get('addonName');
// 进行zip文件下载到指定的文件路径
$zipFilePath = Yii::$service->extension->remoteService->downloadAddons($namespace, $packageName, $addonName);
if (!$zipFilePath) {
echo json_encode([
'statusCode' => '300',
'message' => Yii::$service->page->translate->__('download remote addons fail'),
]);
exit;
}
// 进行zip文件的解压
$dest_dir = dirname($zipFilePath);
if (!Yii::$service->helper->zipFile->unzip($zipFilePath, $dest_dir, true, true)) {
echo json_encode([
'statusCode' => '300',
'message' => Yii::$service->page->translate->__('unzip addons fail'),
]);
exit;
}
// 删除zip压缩包
unlink($zipFilePath);
// 将addons信息写入数据库
/*
array(6) {
["id"]=>
string(2) "50"
["namespace"]=>
string(13) "fectfurnilife"
["package"]=>
string(7) "fecmall"
["name"]=>
string(15) "furnilife_theme"
["config_file_path"]=>
string(26) "furnilife_theme/config.php"
["version"]=>
string(5) "1.0.0"
}
*/
$data = Yii::$service->extension->remoteService->getAddonsInfoByNamespace($namespace);
if (!is_array($data)) {
echo json_encode([
'statusCode' => '300',
'message' => Yii::$service->page->translate->__('get remote addons info by namespace fail'),
]);
exit;
}
// 将远程获取的数据,保存到数据库中。
if (!Yii::$service->extension->upgradeInit($data)){
echo json_encode([
'statusCode' => '300',
'message' => Yii::$service->page->translate->__('init new install addon to db fail'),
]);
exit;
}
// 进行插件的升级
if (!Yii::$service->extension->administer->upgrade($namespace)) {
$errors = Yii::$service->helper->errors->get();
echo json_encode([
'statusCode' => '300',
'message' => Yii::$service->page->translate->__($errors),
]);
exit;
}
// 输入安装成功信息。
echo json_encode([
'statusCode' => '200',
'message' => Yii::$service->page->translate->__('addons install success'),
]);
exit;
}
/*
public function actionManagereditsave()
{
......
......@@ -27,31 +27,56 @@ use fec\helpers\CRequest;
<img style="" src="<?= $addon_one['addon_info']['image'] ?>" />
<h2 style="margin10px auto"><?= $addon_one['addon_info']['name'] ?></h2>
</div>
<div>
<div class="clear"></div>
<div style="margin-top:60px;">
<?php
$namespace = $addon_one['addon_info']['namespace'];
if (in_array($namespace, $installed_extensions)):
if (in_array($namespace, $installed_extensions_namespace)):
if ( version_compare($versionArr[$namespace], $addon_one['addon_info']['version'] ,'<') ):
?>
<a class="abutton-update" href="javascript:void(0)">升级</a>
<a class="abutton-update" href="javascript:void(0)" addonName="<?= $addon_one['addon_info']['name'] ?>" rel="<?= $namespace ?>" folderName="<?= $addon_one['addon_info']['folder'] ?>" packageName="<?= $addon_one['addon_info']['package'] ?>">需要升级</a>
<?php else: ?>
<a class="abutton-normal" href="javascript:void(0)">最新版本</a>
<?php endif; ?>
<?php else: ?>
<a class="abutton" href="javascript:void(0)" addonName="<?= $addon_one['addon_info']['name'] ?>" rel="<?= $namespace ?>" packageName="<?= $addon_one['addon_info']['package'] ?>">安装</a>
<a class="abutton" href="javascript:void(0)" addonName="<?= $addon_one['addon_info']['name'] ?>" rel="<?= $namespace ?>" folderName="<?= $addon_one['addon_info']['folder'] ?>" packageName="<?= $addon_one['addon_info']['package'] ?>">点击安装</a>
<?php endif; ?>
<div class="version_info">
<div class="">最高版本: <?= $addon_one['addon_info']['version'] ?></div>
<?php if($versionArr[$namespace]): ?>
<div style="margin-top:5px;">当前版本: <?= $versionArr[$namespace] ?></div>
<?php endif; ?>
</div>
<span class="version_info">最高版本: <?= $addon_one['addon_info']['version'] ?></span>
</div>
<a href="javascript:void(0)" class="removeAddon" title="卸载应用" addonName="<?= $addon_one['addon_info']['name'] ?>" rel="<?= $namespace ?>" folderName="<?= $addon_one['addon_info']['folder'] ?>" packageName="<?= $addon_one['addon_info']['package'] ?>">
<i class="fa fa-trash-o"></i>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</div>
<a class="reflushaaa" href="javascript:void(0)">刷新页面</a>
</div>
<style>
.removeAddon{
display: block;
bottom: 10px;
position: absolute;
right: 10px;
font-size:18px;
color:#999;
}
.removeAddon:hover{
color:#333;
}
.version_info{
float: right;
......@@ -59,10 +84,11 @@ use fec\helpers\CRequest;
}
.addon_li{
width: 280px;
height:320px;
height:390px;
display: inline-block;
margin: 10px;
border: 1px solid #ccc;
position: relative;
}
.addon_d{
width:230px;
......@@ -91,6 +117,11 @@ use fec\helpers\CRequest;
padding:5px 10px;
}
.abutton-normal{
background:#337ab7 !important;
color:#fff;
padding:5px 10px;
}
.abutton:hover{
......@@ -115,10 +146,12 @@ use fec\helpers\CRequest;
namespace = $(this).attr('rel');
var packageName = $(this).attr('packageName');
var addonName = $(this).attr('addonName');
var folderName = $(this).attr('folderName');
var url = "<?= Yii::$service->url->getUrl("system/extensionmarket/install"); ?>";
url += '?namespace=' + namespace;
url += '&packageName=' + packageName;
url += '&folderName=' + folderName;
url += '&addonName=' + encodeURIComponent(addonName);
$.ajax({
......@@ -149,8 +182,98 @@ use fec\helpers\CRequest;
});
$(document).on("click",".removeAddon",function(){
var self = this;
alertMsg.confirm("您确定删除该应用吗?", {
okCall: function(){
namespace = $(self).attr('rel');
var packageName = $(self).attr('packageName');
var addonName = $(self).attr('addonName');
var folderName = $(this).attr('folderName');
var url = "<?= Yii::$service->url->getUrl("system/extensionmarket/uninstall"); ?>";
url += '?namespace=' + namespace;
url += '&packageName=' + packageName;
url += '&folderName=' + folderName;
url += '&addonName=' + encodeURIComponent(addonName);
$.ajax({
url: url,
async: true,
timeout: 800000,
dataType: 'json',
type: 'get',
success:function(data, textStatus){
if(data.statusCode == 200){
//alert(data.statusCode);
message = data.message;
alertMsg.correct(message);
navTab.reloadFlag('page1');
} else if (data.statusCode == 300){
message = data.message;
alertMsg.error(message)
} else {
alertMsg.error("错误");
}
//
},
error:function(){
}
});
},
cancelCall : function() {
}
});
});
$(document).on("click",".abutton-update",function(){
namespace = $(this).attr('rel');
var packageName = $(this).attr('packageName');
var addonName = $(this).attr('addonName');
var folderName = $(this).attr('folderName');
var url = "<?= Yii::$service->url->getUrl("system/extensionmarket/upgrade"); ?>";
url += '?namespace=' + namespace;
url += '&packageName=' + packageName;
url += '&folderName=' + folderName;
url += '&addonName=' + encodeURIComponent(addonName);
$.ajax({
url: url,
async: true,
timeout: 800000,
dataType: 'json',
type: 'get',
success:function(data, textStatus){
if(data.statusCode == 200){
//alert(data.statusCode);
message = data.message;
alertMsg.correct(message);
navTab.reloadFlag('page1');
} else if (data.statusCode == 300){
message = data.message;
alertMsg.error(message)
} else {
alertMsg.error("错误");
}
//
},
error:function(){
}
});
});
});
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册