mirror of
https://github.com/taobataoma/meanTorrent.git
synced 2026-05-07 20:38:16 +02:00
feat(core): system assets and env config js file editor online
This commit is contained in:
2
config/env/torrents.js
vendored
2
config/env/torrents.js
vendored
@@ -1228,7 +1228,7 @@ module.exports = {
|
||||
|
||||
/**------------------------------------------------------------------------------------------------
|
||||
* !IMPORTANT
|
||||
* MEANTORRENT CONFIG START
|
||||
* MEANTORRENT CONFIG END
|
||||
* PLEASE DO NOT MODIFY THE FOLLOWING LINES !!!
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
};
|
||||
|
||||
@@ -6,11 +6,13 @@
|
||||
.module(app.applicationModuleName)
|
||||
.config(transConfig);
|
||||
|
||||
// **************************************************
|
||||
// English Strings
|
||||
// --------------------------------------------------
|
||||
// Don`t change other code
|
||||
// **************************************************
|
||||
/**------------------------------------------------------------------------------------------------
|
||||
* !IMPORTANT
|
||||
* MEANTORRENT CONFIG START
|
||||
* PLEASE DO NOT MODIFY THE ABOVE LINES !!!
|
||||
*
|
||||
* English strings
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
|
||||
var string_en = {
|
||||
COMINGSOON: 'coming soon...',
|
||||
@@ -1258,17 +1260,21 @@
|
||||
|
||||
//systems control panel
|
||||
SYSTEMS: {
|
||||
TORRENTS_CONFIG: 'System configure',
|
||||
ASSETS_CONFIG: 'System assets configure',
|
||||
ENV_CONFIG: 'System env configure',
|
||||
TEMPLATES_EDIT: 'Templates editor',
|
||||
STRINGS_EDIT: 'Translate strings editor',
|
||||
TRANS_EDIT: 'Translate strings editor',
|
||||
COMMANDS_EXECUTE: 'Server commands execute',
|
||||
SELECT_FILE: 'Select file, please',
|
||||
|
||||
CONFIG_BLUR_CONFIRM_CANCEL: 'Cancel',
|
||||
CONFIG_BLUR_CONFIRM_SAVE: 'Save',
|
||||
CONFIG_BLUR_HEADER_TEXT: 'Configure was changed',
|
||||
CONFIG_BLUR_BODY_TEXT: 'Configure was changed, are you sure to quit and don`t save it?',
|
||||
CONFIG_CHANGED_CONFIRM_CANCEL: 'Cancel',
|
||||
CONFIG_CHANGED_CONFIRM_SAVE: 'Save',
|
||||
CONFIG_CHANGED_HEADER_TEXT: 'Configure was changed',
|
||||
CONFIG_CHANGED_BODY_TEXT: 'Configure was changed, are you sure to quit and don`t save it?',
|
||||
CONFIG_SAVE_SUCCESSFULLY: 'Configure save successfully',
|
||||
CONFIG_SAVE_FAILED: 'Configure save failed'
|
||||
CONFIG_SAVE_FAILED: 'Configure save failed',
|
||||
|
||||
DESC_CONFIG: ':warning: This is the system configuration file of **meanTorrent**. If you know what you are doing, you can modify them. Otherwise, don\'t change it arbitrarily. Incorrect settings may cause the system to not work properly. You can also consult the related system maintenance personnel before modification.'
|
||||
},
|
||||
|
||||
/////////////////////////resources tag fields///////////////////////////////////
|
||||
@@ -1548,9 +1554,13 @@
|
||||
}
|
||||
};
|
||||
|
||||
// **************************************************
|
||||
// English Strings end
|
||||
// **************************************************
|
||||
/**------------------------------------------------------------------------------------------------
|
||||
* !IMPORTANT
|
||||
* MEANTORRENT CONFIG END
|
||||
* PLEASE DO NOT MODIFY THE FOLLOWING LINES !!!
|
||||
*
|
||||
* English strings
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
|
||||
// config $translateProvider
|
||||
transConfig.$inject = ['$translateProvider'];
|
||||
|
||||
@@ -6,11 +6,13 @@
|
||||
.module(app.applicationModuleName)
|
||||
.config(transConfig);
|
||||
|
||||
// **************************************************
|
||||
// 中 文 翻 译
|
||||
// --------------------------------------------------
|
||||
// 请不要修改翻译部分之外的代码
|
||||
// **************************************************
|
||||
/**------------------------------------------------------------------------------------------------
|
||||
* !重要提示
|
||||
* MEANTORRENT 配置开始
|
||||
* 请不要修改在这之前的任何代码 !!!
|
||||
*
|
||||
* 中文字符串
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
|
||||
var string_zh = {
|
||||
COMINGSOON: '开发中,请稍候...',
|
||||
@@ -1258,17 +1260,21 @@
|
||||
|
||||
//systems control panel
|
||||
SYSTEMS: {
|
||||
TORRENTS_CONFIG: '系统配置调整',
|
||||
ASSETS_CONFIG: 'Assets 资源配置调整',
|
||||
ENV_CONFIG: 'Env 环境配置调整',
|
||||
TEMPLATES_EDIT: '模板在线编辑',
|
||||
STRINGS_EDIT: '多语言字符串在线编辑',
|
||||
TRANS_EDIT: '多语言字符串在线编辑',
|
||||
COMMANDS_EXECUTE: '服务器命令在线执行',
|
||||
SELECT_FILE: '请选择文件',
|
||||
|
||||
CONFIG_BLUR_CONFIRM_CANCEL: '取消',
|
||||
CONFIG_BLUR_CONFIRM_SAVE: '保存',
|
||||
CONFIG_BLUR_HEADER_TEXT: '系统配置已更改',
|
||||
CONFIG_BLUR_BODY_TEXT: '系统配置已被修改, 您确定要退出并放弃保存吗?',
|
||||
CONFIG_CHANGED_CONFIRM_CANCEL: '取消',
|
||||
CONFIG_CHANGED_CONFIRM_SAVE: '保存',
|
||||
CONFIG_CHANGED_HEADER_TEXT: '系统配置已更改',
|
||||
CONFIG_CHANGED_BODY_TEXT: '系统配置已被修改, 您确定要退出并放弃保存吗?',
|
||||
CONFIG_SAVE_SUCCESSFULLY: '系统配置保存成功',
|
||||
CONFIG_SAVE_FAILED: '系统配置保存失败'
|
||||
CONFIG_SAVE_FAILED: '系统配置保存失败',
|
||||
|
||||
DESC_CONFIG: ':warning: 这是 **meantorrent** 的系统配置文件, 如果您知道你在干什么, 您可以修改它们, 否则不要随便改动, 不正确的设置可能会导致系统不能正常工作. 您也可以在修改前咨询相关系统维护人员.'
|
||||
},
|
||||
|
||||
/////////////////////////resources tag fields///////////////////////////////////
|
||||
@@ -1546,12 +1552,15 @@
|
||||
SITE_NOTICE: {
|
||||
GLOBAL_SALES_NOTICE: '### 重要通知! \n :radio: **新年快乐 2018**, **{{site_name}}** 新年促销活动已准备就绪, 促销活动类型为 <span class="sale_key">**{{sale_value}}**</span> , 活动将开始于 **{{sale_start_at | date: "yyyy-MM-dd HH:mm"}}** 并持续 <span class="sale_key">**{{sale_days}}**</span> 天, 结束于 **{{sale_end_at | date: "yyyy-MM-dd HH:mm"}}**, 并感谢所有会员用户一直以来给予我们的帮助与支持!'
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// **************************************************
|
||||
// 中文翻译结束
|
||||
// **************************************************
|
||||
/**------------------------------------------------------------------------------------------------
|
||||
* !重要提示
|
||||
* MEANTORRENT 配置结束
|
||||
* 请不要修改在这之前的任何代码 !!!
|
||||
*
|
||||
* 中文字符串
|
||||
--------------------------------------------------------------------------------------------------*/
|
||||
|
||||
// config $translateProvider
|
||||
transConfig.$inject = ['$translateProvider'];
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
'NotifycationService', 'uibButtonConfig', 'marked', 'localStorageService'];
|
||||
|
||||
function RequestsListController($scope, $rootScope, $state, $timeout, $translate, Authentication, RequestsService, ScoreLevelService, MeanTorrentConfig, mtDebug,
|
||||
NotifycationService, uibButtonConfig, marked, localStorageService) {
|
||||
NotifycationService, uibButtonConfig, marked, localStorageService) {
|
||||
var vm = this;
|
||||
vm.user = Authentication.user;
|
||||
vm.itemsPerPageConfig = MeanTorrentConfig.meanTorrentConfig.itemsPerPage;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
'NotifycationService', 'uibButtonConfig', 'marked', 'localStorageService'];
|
||||
|
||||
function RequestsResController($scope, $rootScope, $state, $timeout, $translate, Authentication, RequestsService, ScoreLevelService, MeanTorrentConfig, mtDebug,
|
||||
NotifycationService, uibButtonConfig, marked, localStorageService) {
|
||||
NotifycationService, uibButtonConfig, marked, localStorageService) {
|
||||
var vm = this;
|
||||
vm.user = Authentication.user;
|
||||
vm.itemsPerPageConfig = MeanTorrentConfig.meanTorrentConfig.itemsPerPage;
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
function menuConfig(menuService) {
|
||||
menuService.addSubMenuItem('topbar', 'admin', {
|
||||
title: 'MENU_ADMIN_SYSTEMS',
|
||||
state: 'admin.systems.config',
|
||||
state: 'admin.systems.env',
|
||||
position: 1000,
|
||||
roles: ['admin'],
|
||||
divider: true
|
||||
|
||||
@@ -19,17 +19,21 @@
|
||||
roles: ['admin']
|
||||
}
|
||||
})
|
||||
.state('admin.systems.config', {
|
||||
url: '/config',
|
||||
templateUrl: '/modules/systems/client/views/config.client.view.html'
|
||||
.state('admin.systems.assets', {
|
||||
url: '/assets',
|
||||
templateUrl: '/modules/systems/client/views/assets.client.view.html'
|
||||
})
|
||||
.state('admin.systems.env', {
|
||||
url: '/env',
|
||||
templateUrl: '/modules/systems/client/views/env.client.view.html'
|
||||
})
|
||||
.state('admin.systems.templates', {
|
||||
url: '/templates',
|
||||
templateUrl: '/modules/systems/client/views/templates.client.view.html'
|
||||
})
|
||||
.state('admin.systems.strings', {
|
||||
url: '/strings',
|
||||
templateUrl: '/modules/systems/client/views/strings.client.view.html'
|
||||
.state('admin.systems.trans', {
|
||||
url: '/trans',
|
||||
templateUrl: '/modules/systems/client/views/trans.client.view.html'
|
||||
})
|
||||
.state('admin.systems.commands', {
|
||||
url: '/commands',
|
||||
|
||||
@@ -5,22 +5,65 @@
|
||||
.module('systems')
|
||||
.controller('SystemConfigController', SystemConfigController);
|
||||
|
||||
SystemConfigController.$inject = ['$scope', '$state', '$timeout', '$translate', 'Authentication', 'SystemsService', 'ModalConfirmService', 'NotifycationService'];
|
||||
SystemConfigController.$inject = ['$scope', '$state', '$timeout', '$translate', 'Authentication', 'SystemsService', 'ModalConfirmService', 'NotifycationService', 'marked',
|
||||
'DebugConsoleService'];
|
||||
|
||||
function SystemConfigController($scope, $state, $timeout, $translate, Authentication, SystemsService, ModalConfirmService, NotifycationService) {
|
||||
function SystemConfigController($scope, $state, $timeout, $translate, Authentication, SystemsService, ModalConfirmService, NotifycationService, marked,
|
||||
mtDebug) {
|
||||
var vm = this;
|
||||
vm.user = Authentication.user;
|
||||
vm.selectedFilename = 'null';
|
||||
|
||||
vm.cmOption = {
|
||||
lineNumbers: true,
|
||||
mode: {name: 'javascript', json: true},
|
||||
tabSize: 2,
|
||||
onLoad: function (_cm) {
|
||||
/**
|
||||
* initConfigContent
|
||||
* @param value
|
||||
*/
|
||||
vm.initConfigContent = function (value) {
|
||||
_cm.setOption('value', value);
|
||||
vm.contentChanged = false;
|
||||
};
|
||||
|
||||
/**
|
||||
* onSelectedFileChanged
|
||||
*/
|
||||
vm.onSelectedFileChanged = function () {
|
||||
if (vm.contentChanged) {
|
||||
var modalOptions = {
|
||||
closeButtonText: $translate.instant('SYSTEMS.CONFIG_CHANGED_CONFIRM_CANCEL'),
|
||||
actionButtonText: $translate.instant('SYSTEMS.CONFIG_CHANGED_CONFIRM_SAVE'),
|
||||
headerText: $translate.instant('SYSTEMS.CONFIG_CHANGED_HEADER_TEXT'),
|
||||
bodyText: $translate.instant('SYSTEMS.CONFIG_CHANGED_BODY_TEXT')
|
||||
};
|
||||
|
||||
ModalConfirmService.showModal({}, modalOptions)
|
||||
.then(function (result) {
|
||||
vm.saveConfigFileContent(function () {
|
||||
loadNewFile();
|
||||
});
|
||||
}, function (result) {
|
||||
loadNewFile();
|
||||
});
|
||||
|
||||
} else {
|
||||
loadNewFile();
|
||||
}
|
||||
};
|
||||
|
||||
function loadNewFile() {
|
||||
_cm.setOption('value', '');
|
||||
SystemsService.getSystemConfigContent({
|
||||
filename: vm.selectedFilename
|
||||
}, function (res) {
|
||||
vm.loadedFilename = vm.selectedFilename;
|
||||
vm.initConfigContent(res.configContent);
|
||||
});
|
||||
}
|
||||
|
||||
_cm.on('change', function () {
|
||||
vm.contentChanged = true;
|
||||
});
|
||||
@@ -33,41 +76,70 @@
|
||||
$scope.$on('$stateChangeStart', function () {
|
||||
if (vm.contentChanged) {
|
||||
var modalOptions = {
|
||||
closeButtonText: $translate.instant('SYSTEMS.CONFIG_BLUR_CONFIRM_CANCEL'),
|
||||
actionButtonText: $translate.instant('SYSTEMS.CONFIG_BLUR_CONFIRM_SAVE'),
|
||||
headerText: $translate.instant('SYSTEMS.CONFIG_BLUR_HEADER_TEXT'),
|
||||
bodyText: $translate.instant('SYSTEMS.CONFIG_BLUR_BODY_TEXT')
|
||||
closeButtonText: $translate.instant('SYSTEMS.CONFIG_CHANGED_CONFIRM_CANCEL'),
|
||||
actionButtonText: $translate.instant('SYSTEMS.CONFIG_CHANGED_CONFIRM_SAVE'),
|
||||
headerText: $translate.instant('SYSTEMS.CONFIG_CHANGED_HEADER_TEXT'),
|
||||
bodyText: $translate.instant('SYSTEMS.CONFIG_CHANGED_BODY_TEXT')
|
||||
};
|
||||
|
||||
ModalConfirmService.showModal({}, modalOptions)
|
||||
.then(function (result) {
|
||||
vm.saveConfigContent();
|
||||
vm.saveConfigFileContent();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* getConfigFile
|
||||
* getDescConfig
|
||||
* @returns {*}
|
||||
*/
|
||||
vm.getConfigFile = function () {
|
||||
SystemsService.getSystemConfig(function (res) {
|
||||
vm.initConfigContent(res.configContent);
|
||||
// vm.systemConfigContent = res.configContent;
|
||||
}, function (err) {
|
||||
vm.getDescConfig = function () {
|
||||
var ts = $translate.instant('SYSTEMS.DESC_CONFIG');
|
||||
|
||||
return marked(ts, {sanitize: true});
|
||||
};
|
||||
|
||||
/**
|
||||
* getEnvConfigFiles
|
||||
*/
|
||||
vm.getEnvConfigFiles = function () {
|
||||
SystemsService.getSystemEnvConfigFiles(function (res) {
|
||||
vm.envConfigFiles = res;
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* saveConfigContent
|
||||
* getTransConfigFiles
|
||||
*/
|
||||
vm.saveConfigContent = function () {
|
||||
var sc = new SystemsService({
|
||||
content: vm.systemConfigContent
|
||||
vm.getTransConfigFiles = function () {
|
||||
SystemsService.getSystemTransConfigFiles(function (res) {
|
||||
vm.transConfigFiles = res;
|
||||
});
|
||||
sc.$setSystemConfig(function (res) {
|
||||
};
|
||||
|
||||
/**
|
||||
* getAssetsConfigFiles
|
||||
*/
|
||||
vm.getAssetsConfigFiles = function () {
|
||||
SystemsService.getSystemAssetsConfigFiles(function (res) {
|
||||
vm.assetsConfigFiles = res;
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* saveConfigFileContent
|
||||
*/
|
||||
vm.saveConfigFileContent = function (callback) {
|
||||
mtDebug.info('save content to config file: ' + vm.loadedFilename);
|
||||
var sc = new SystemsService({
|
||||
filename: vm.loadedFilename,
|
||||
content: vm.systemConfigContentValue
|
||||
});
|
||||
sc.$setSystemConfigContent(function (res) {
|
||||
NotifycationService.showSuccessNotify('SYSTEMS.CONFIG_SAVE_SUCCESSFULLY');
|
||||
vm.contentChanged = false;
|
||||
if (callback)
|
||||
callback();
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
@@ -11,13 +11,18 @@
|
||||
}
|
||||
.panel-desc {
|
||||
border-bottom: solid 1px #ddd;
|
||||
padding: 10px 15px 5px;
|
||||
background-color: @alert-warning-bg;
|
||||
}
|
||||
.panel-filelist {
|
||||
border-bottom: solid 1px #ddd;
|
||||
padding: 10px 15px;
|
||||
background-color: #fafbfc;
|
||||
height: 100px;
|
||||
}
|
||||
.panel-body {
|
||||
padding: 0;
|
||||
.CodeMirror {
|
||||
min-height: 500px;
|
||||
min-height: 450px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,13 +14,25 @@
|
||||
update: {
|
||||
method: 'PUT'
|
||||
},
|
||||
getSystemConfig: {
|
||||
getSystemEnvConfigFiles: {
|
||||
method: 'GET',
|
||||
url: '/api/systems/systemConfig'
|
||||
url: '/api/systems/systemEnvConfigFiles'
|
||||
},
|
||||
setSystemConfig: {
|
||||
getSystemAssetsConfigFiles: {
|
||||
method: 'GET',
|
||||
url: '/api/systems/systemAssetsConfigFiles'
|
||||
},
|
||||
getSystemTransConfigFiles: {
|
||||
method: 'GET',
|
||||
url: '/api/systems/systemTransConfigFiles'
|
||||
},
|
||||
getSystemConfigContent: {
|
||||
method: 'GET',
|
||||
url: '/api/systems/systemConfigContent'
|
||||
},
|
||||
setSystemConfigContent: {
|
||||
method: 'PUT',
|
||||
url: '/api/systems/systemConfig'
|
||||
url: '/api/systems/systemConfigContent'
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
26
modules/systems/client/views/assets.client.view.html
Normal file
26
modules/systems/client/views/assets.client.view.html
Normal file
@@ -0,0 +1,26 @@
|
||||
<div class="panel panel-default system-panel" ng-controller="SystemConfigController as vm" ng-init="vm.getAssetsConfigFiles()">
|
||||
<div class="panel-heading">{{'SYSTEMS.ASSETS_CONFIG' | translate}}
|
||||
<small> - {{vm.loadedFilename}}</small>
|
||||
</div>
|
||||
<div class="panel-desc" ng-bind-html="vm.getDescConfig()"></div>
|
||||
<div class="panel-filelist">
|
||||
<select class="form-control" ng-model="vm.selectedFilename" ng-change="vm.onSelectedFileChanged();" autofocus>
|
||||
<option value="null">{{'SYSTEMS.SELECT_FILE' | translate}}
|
||||
</option>
|
||||
<option ng-repeat="t in vm.assetsConfigFiles.files"
|
||||
value="{{t}}">{{t}}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<textarea class="form-control config-content" id="configContent" name="configContent" ng-model="vm.systemConfigContentValue"
|
||||
ui-codemirror="vm.cmOption"></textarea>
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
<div class="text-right">
|
||||
<button class="btn btn-success btn-width-100" ng-disabled="!vm.contentChanged"
|
||||
ng-click="vm.saveConfigFileContent()">{{'BUTTON_SAVE' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,19 +0,0 @@
|
||||
<div class="panel panel-default system-panel" ng-controller="SystemConfigController as vm" ng-init="vm.getConfigFile()">
|
||||
<div class="panel-heading">{{'SYSTEMS.TORRENTS_CONFIG' | translate}} -
|
||||
<small>/config/env/torrent.js</small>
|
||||
</div>
|
||||
<div class="panel-desc">
|
||||
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<textarea class="form-control config-content" id="configContent" name="configContent" ng-model="vm.systemConfigContent"
|
||||
ui-codemirror="vm.cmOption"></textarea>
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
<div class="text-right">
|
||||
<button class="btn btn-success btn-width-100" ng-disabled="!vm.contentChanged"
|
||||
ng-click="vm.saveConfigContent()">{{'BUTTON_SAVE' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
26
modules/systems/client/views/env.client.view.html
Normal file
26
modules/systems/client/views/env.client.view.html
Normal file
@@ -0,0 +1,26 @@
|
||||
<div class="panel panel-default system-panel" ng-controller="SystemConfigController as vm" ng-init="vm.getEnvConfigFiles()">
|
||||
<div class="panel-heading">{{'SYSTEMS.ENV_CONFIG' | translate}}
|
||||
<small> - {{vm.loadedFilename}}</small>
|
||||
</div>
|
||||
<div class="panel-desc" ng-bind-html="vm.getDescConfig()"></div>
|
||||
<div class="panel-filelist">
|
||||
<select class="form-control" ng-model="vm.selectedFilename" ng-change="vm.onSelectedFileChanged();" autofocus>
|
||||
<option value="null">{{'SYSTEMS.SELECT_FILE' | translate}}
|
||||
</option>
|
||||
<option ng-repeat="t in vm.envConfigFiles.files"
|
||||
value="{{t}}">{{t}}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<textarea class="form-control config-content" id="configContent" name="configContent" ng-model="vm.systemConfigContentValue"
|
||||
ui-codemirror="vm.cmOption"></textarea>
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
<div class="text-right">
|
||||
<button class="btn btn-success btn-width-100" ng-disabled="!vm.contentChanged"
|
||||
ng-click="vm.saveConfigFileContent()">{{'BUTTON_SAVE' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -2,8 +2,9 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-4 col-md-3">
|
||||
<div class="list-group">
|
||||
<a ui-sref="admin.systems.config" class="list-group-item" ui-sref-active="active">{{'SYSTEMS.TORRENTS_CONFIG' | translate}}</a>
|
||||
<a ui-sref="admin.systems.strings" class="list-group-item" ui-sref-active="active">{{'SYSTEMS.STRINGS_EDIT' | translate}}</a>
|
||||
<a ui-sref="admin.systems.env" class="list-group-item" ui-sref-active="active">{{'SYSTEMS.ENV_CONFIG' | translate}}</a>
|
||||
<a ui-sref="admin.systems.assets" class="list-group-item" ui-sref-active="active">{{'SYSTEMS.ASSETS_CONFIG' | translate}}</a>
|
||||
<a ui-sref="admin.systems.trans" class="list-group-item" ui-sref-active="active">{{'SYSTEMS.TRANS_EDIT' | translate}}</a>
|
||||
<a ui-sref="admin.systems.templates" class="list-group-item" ui-sref-active="active">{{'SYSTEMS.TEMPLATES_EDIT' | translate}}</a>
|
||||
<a ui-sref="admin.systems.commands" class="list-group-item" ui-sref-active="active">{{'SYSTEMS.COMMANDS_EXECUTE' | translate}}</a>
|
||||
</div>
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
<div class="panel panel-default system-panel">
|
||||
<div class="panel-heading">
|
||||
{{'SYSTEMS.STRINGS_EDIT' | translate}}
|
||||
</div>
|
||||
<div class="panel-desc">
|
||||
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<p>...</p>
|
||||
</div>
|
||||
</div>
|
||||
26
modules/systems/client/views/trans.client.view.html
Normal file
26
modules/systems/client/views/trans.client.view.html
Normal file
@@ -0,0 +1,26 @@
|
||||
<div class="panel panel-default system-panel" ng-controller="SystemConfigController as vm" ng-init="vm.getTransConfigFiles()">
|
||||
<div class="panel-heading">{{'SYSTEMS.TRANS_EDIT' | translate}}
|
||||
<small> - {{vm.loadedFilename}}</small>
|
||||
</div>
|
||||
<div class="panel-desc" ng-bind-html="vm.getDescConfig()"></div>
|
||||
<div class="panel-filelist">
|
||||
<select class="form-control" ng-model="vm.selectedFilename" ng-change="vm.onSelectedFileChanged();" autofocus>
|
||||
<option value="null">{{'SYSTEMS.SELECT_FILE' | translate}}
|
||||
</option>
|
||||
<option ng-repeat="t in vm.transConfigFiles.files"
|
||||
value="{{t}}">{{t}}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<textarea class="form-control config-content" id="configContent" name="configContent" ng-model="vm.systemConfigContentValue"
|
||||
ui-codemirror="vm.cmOption"></textarea>
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
<div class="text-right">
|
||||
<button class="btn btn-success btn-width-100" ng-disabled="!vm.contentChanged"
|
||||
ng-click="vm.saveConfigFileContent()">{{'BUTTON_SAVE' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -17,12 +17,69 @@ var serverMessage = require(path.resolve('./config/lib/server-message'));
|
||||
var serverNoticeConfig = config.meanTorrentConfig.serverNotice;
|
||||
|
||||
/**
|
||||
* getSystemConfig
|
||||
* getSystemEnvConfigFiles
|
||||
* @param req
|
||||
* @param res
|
||||
*/
|
||||
exports.getSystemConfig = function (req, res) {
|
||||
var config = shell.cat(path.resolve('./config/env/torrents.js'));
|
||||
exports.getSystemEnvConfigFiles = function (req, res) {
|
||||
var files = shell.ls('./config/env/*.js');
|
||||
|
||||
if (req.user.isAdmin) {
|
||||
res.json({
|
||||
files: files
|
||||
});
|
||||
} else {
|
||||
return res.status(403).json({
|
||||
message: 'SERVER.USER_IS_NOT_AUTHORIZED'
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* getSystemAssetsConfigFiles
|
||||
* @param req
|
||||
* @param res
|
||||
*/
|
||||
exports.getSystemAssetsConfigFiles = function (req, res) {
|
||||
var files = shell.ls('./config/assets/*.js');
|
||||
|
||||
if (req.user.isAdmin) {
|
||||
res.json({
|
||||
files: files
|
||||
});
|
||||
} else {
|
||||
return res.status(403).json({
|
||||
message: 'SERVER.USER_IS_NOT_AUTHORIZED'
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* getSystemTransConfigFiles
|
||||
* @param req
|
||||
* @param res
|
||||
*/
|
||||
exports.getSystemTransConfigFiles = function (req, res) {
|
||||
var files = shell.ls('./modules/core/client/app/trans*.js');
|
||||
|
||||
if (req.user.isAdmin) {
|
||||
res.json({
|
||||
files: files
|
||||
});
|
||||
} else {
|
||||
return res.status(403).json({
|
||||
message: 'SERVER.USER_IS_NOT_AUTHORIZED'
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* getSystemConfigContent
|
||||
* @param req
|
||||
* @param res
|
||||
*/
|
||||
exports.getSystemConfigContent = function (req, res) {
|
||||
var config = shell.cat(path.resolve(req.query.filename));
|
||||
|
||||
if (req.user.isAdmin) {
|
||||
res.json({
|
||||
@@ -36,18 +93,18 @@ exports.getSystemConfig = function (req, res) {
|
||||
};
|
||||
|
||||
/**
|
||||
* setSystemConfig
|
||||
* setSystemConfigContent
|
||||
* @param req
|
||||
* @param res
|
||||
*/
|
||||
exports.setSystemConfig = function (req, res) {
|
||||
exports.setSystemConfigContent = function (req, res) {
|
||||
// eslint-disable-next-line new-cap
|
||||
var cc = shell.ShellString(req.body.content);
|
||||
|
||||
if (req.user.isAdmin) {
|
||||
cc.to('./config/env/torrents.js');
|
||||
cc.to(path.resolve(req.body.filename));
|
||||
res.json({
|
||||
message: 'SERVER.TORRENT_CONFIG_SAVE_SUCCESSFULLY'
|
||||
message: 'SERVER.SYSTEM_CONFIG_SAVE_SUCCESSFULLY'
|
||||
});
|
||||
} else {
|
||||
return res.status(403).json({
|
||||
|
||||
@@ -15,7 +15,10 @@ exports.invokeRolesPolicies = function () {
|
||||
acl.allow([{
|
||||
roles: ['admin'],
|
||||
allows: [
|
||||
{resources: '/api/systems/systemConfig', permissions: '*'}
|
||||
{resources: '/api/systems/systemConfigContent', permissions: '*'},
|
||||
{resources: '/api/systems/systemEnvConfigFiles', permissions: '*'},
|
||||
{resources: '/api/systems/systemAssetsConfigFiles', permissions: '*'},
|
||||
{resources: '/api/systems/systemTransConfigFiles', permissions: '*'}
|
||||
]
|
||||
}]);
|
||||
};
|
||||
|
||||
@@ -7,7 +7,16 @@ var systemsPolicy = require('../policies/systems.server.policy'),
|
||||
systems = require('../controllers/systems.server.controller');
|
||||
|
||||
module.exports = function (app) {
|
||||
app.route('/api/systems/systemConfig').all(systemsPolicy.isAllowed)
|
||||
.get(systems.getSystemConfig)
|
||||
.put(systems.setSystemConfig);
|
||||
app.route('/api/systems/systemEnvConfigFiles').all(systemsPolicy.isAllowed)
|
||||
.get(systems.getSystemEnvConfigFiles);
|
||||
|
||||
app.route('/api/systems/systemAssetsConfigFiles').all(systemsPolicy.isAllowed)
|
||||
.get(systems.getSystemAssetsConfigFiles);
|
||||
|
||||
app.route('/api/systems/systemTransConfigFiles').all(systemsPolicy.isAllowed)
|
||||
.get(systems.getSystemTransConfigFiles);
|
||||
|
||||
app.route('/api/systems/systemConfigContent').all(systemsPolicy.isAllowed)
|
||||
.get(systems.getSystemConfigContent)
|
||||
.put(systems.setSystemConfigContent);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user