admin settings : get, add, delete extra symbols OK
parent
c73a9dd18e
commit
6d4ae1b23b
|
@ -29,5 +29,7 @@ return [
|
||||||
['name' => 'utils#getOptionsValues', 'url' => '/getOptionsValues', 'verb' => 'POST'],
|
['name' => 'utils#getOptionsValues', 'url' => '/getOptionsValues', 'verb' => 'POST'],
|
||||||
['name' => 'utils#saveOptionsValues', 'url' => '/saveOptionsValues', 'verb' => 'POST'],
|
['name' => 'utils#saveOptionsValues', 'url' => '/saveOptionsValues', 'verb' => 'POST'],
|
||||||
['name' => 'utils#getExtraSymbol', 'url' => '/getExtraSymbol', 'verb' => 'GET'],
|
['name' => 'utils#getExtraSymbol', 'url' => '/getExtraSymbol', 'verb' => 'GET'],
|
||||||
|
['name' => 'utils#uploadExtraSymbol', 'url' => '/uploadExtraSymbol', 'verb' => 'POST'],
|
||||||
|
['name' => 'utils#deleteExtraSymbol', 'url' => '/deleteExtraSymbol', 'verb' => 'POST'],
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
|
@ -82,9 +82,11 @@ class UtilsController extends Controller {
|
||||||
private $dbconnection;
|
private $dbconnection;
|
||||||
private $dbtype;
|
private $dbtype;
|
||||||
private $appPath;
|
private $appPath;
|
||||||
|
//private $request;
|
||||||
|
|
||||||
public function __construct($AppName, IRequest $request, $UserId, $userfolder, $config){
|
public function __construct($AppName, IRequest $request, $UserId, $userfolder, $config){
|
||||||
parent::__construct($AppName, $request);
|
parent::__construct($AppName, $request);
|
||||||
|
//$this->request = $request;
|
||||||
$this->appPath = \OC_App::getAppPath('gpxedit');
|
$this->appPath = \OC_App::getAppPath('gpxedit');
|
||||||
$this->userId = $UserId;
|
$this->userId = $UserId;
|
||||||
$this->dbtype = $config->getSystemValue('dbtype');
|
$this->dbtype = $config->getSystemValue('dbtype');
|
||||||
|
@ -115,7 +117,61 @@ class UtilsController extends Controller {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add one tile server to the DB for current user
|
* @NoCSRFRequired
|
||||||
|
*/
|
||||||
|
public function deleteExtraSymbol($name) {
|
||||||
|
$filename = str_replace(array('../', '..\\', '/'), '', $name);
|
||||||
|
$filepath = $this->config->getSystemValue('datadirectory').'/gpxedit/symbols/'.$filename;
|
||||||
|
if (file_exists($filepath)){
|
||||||
|
unlink($filepath);
|
||||||
|
}
|
||||||
|
return new DataResponse(
|
||||||
|
[
|
||||||
|
'data' =>
|
||||||
|
[
|
||||||
|
'name' => $filename,
|
||||||
|
'message' => 'Deleted'
|
||||||
|
],
|
||||||
|
'status' => 'success'
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @NoCSRFRequired
|
||||||
|
*/
|
||||||
|
public function uploadExtraSymbol($addExtraSymbolName) {
|
||||||
|
$newSymbol = $this->request->getUploadedFile('uploadsymbol');
|
||||||
|
$filename = str_replace(array('../', '..\\', '/'), '', $addExtraSymbolName);
|
||||||
|
if (empty($newSymbol)) {
|
||||||
|
return new DataResponse(
|
||||||
|
[
|
||||||
|
'data' => [
|
||||||
|
'message' => 'No file uploaded'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
Http::STATUS_UNPROCESSABLE_ENTITY
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$name = '';
|
||||||
|
if(!empty($newSymbol)) {
|
||||||
|
$filepath = $this->config->getSystemValue('datadirectory').'/gpxedit/symbols/'.$filename.'.png';
|
||||||
|
$content = file_get_contents($newSymbol['tmp_name']);
|
||||||
|
file_put_contents($filepath, $content);
|
||||||
|
}
|
||||||
|
return new DataResponse(
|
||||||
|
[
|
||||||
|
'data' =>
|
||||||
|
[
|
||||||
|
'name' => $filename.'.png',
|
||||||
|
'message' => 'Saved'
|
||||||
|
],
|
||||||
|
'status' => 'success'
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
* @NoAdminRequired
|
* @NoAdminRequired
|
||||||
* @NoCSRFRequired
|
* @NoCSRFRequired
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -3,6 +3,19 @@ button#addExtraSymbol{
|
||||||
height: 33px;
|
height: 33px;
|
||||||
}
|
}
|
||||||
.extraSymbol img{
|
.extraSymbol img{
|
||||||
|
width: 25px;
|
||||||
|
height: 25px;
|
||||||
|
}
|
||||||
|
#gpxedit .upload-symbol-field{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#gpxedit .icon-upload{
|
||||||
|
display: inline-flex;
|
||||||
|
padding: 8px;
|
||||||
|
margin: 2px 0px;
|
||||||
|
}
|
||||||
|
#gpxedit .icon-delete{
|
||||||
|
padding-top: 12px;
|
||||||
width: 28px;
|
width: 28px;
|
||||||
height: 28px;
|
height: 28px;
|
||||||
}
|
}
|
||||||
|
|
48
js/admin.js
48
js/admin.js
|
@ -31,6 +31,30 @@
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
function addLogoLine(name){
|
||||||
|
var url = OC.generateUrl('/apps/gpxedit/getExtraSymbol?');
|
||||||
|
var fullurl = url+'name='+encodeURI(name);
|
||||||
|
var nameWe = name.replace(/\.png$/, '');
|
||||||
|
$('div#extraSymbols').append('<p class="extraSymbol" id="'+nameWe+'">'+
|
||||||
|
'<img src="'+fullurl+'"><label> '+nameWe+' </label>'+
|
||||||
|
'<button class="delExtraSymbol icon-delete icon" name="'+name+'" title="Remove"></button></p>');
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteLogo(button){
|
||||||
|
button.removeClass('icon-delete').addClass('icon-loading-small');
|
||||||
|
var name = button.attr('name');
|
||||||
|
var req = {
|
||||||
|
name : name,
|
||||||
|
}
|
||||||
|
var url = OC.generateUrl('/apps/gpxedit/deleteExtraSymbol');
|
||||||
|
$.post(url, req).done(function (response) {
|
||||||
|
button.parent().remove();
|
||||||
|
OC.msg.finishedSuccess('#extraSymbolsSettingsMsg', response.data.message);
|
||||||
|
}).fail(function(){
|
||||||
|
OC.msg.finishedError('#extraSymbolsSettingsMsg', 'Failed');
|
||||||
|
button.addClass('icon-delete').removeClass('icon-loading-small');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
OCA.GpxEdit.Admin.initialize();
|
OCA.GpxEdit.Admin.initialize();
|
||||||
|
@ -41,4 +65,28 @@ $(document).ready(function() {
|
||||||
$(this).attr('src', fullurl);
|
$(this).attr('src', fullurl);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var uploadParamsSymbol = {
|
||||||
|
pasteZone: null,
|
||||||
|
dropZone: null,
|
||||||
|
done: function (e, response) {
|
||||||
|
//preview('logoMime', response.result.data.name);
|
||||||
|
addLogoLine(response.result.data.name);
|
||||||
|
OC.msg.finishedSaving('#extraSymbolsSettingsMsg', response.result);
|
||||||
|
$('label#uploadsymbol').addClass('icon-upload').removeClass('icon-loading-small');
|
||||||
|
},
|
||||||
|
submit: function(e, response) {
|
||||||
|
OC.msg.startSaving('#extraSymbolsSettingsMsg');
|
||||||
|
$('label#uploadsymbol').removeClass('icon-upload').addClass('icon-loading-small');
|
||||||
|
},
|
||||||
|
fail: function (e, response){
|
||||||
|
OC.msg.finishedError('#extraSymbolsSettingsMsg', response.data.message);
|
||||||
|
$('label#uploadsymbol').addClass('icon-upload').removeClass('icon-loading-small');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$('#uploadsymbol').fileupload(uploadParamsSymbol);
|
||||||
|
$('body').on('click', 'button.delExtraSymbol', function(e) {
|
||||||
|
deleteLogo($(this));
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -7,6 +7,7 @@ use OCP\IRequest;
|
||||||
use OCP\IConfig;
|
use OCP\IConfig;
|
||||||
use OCP\Settings\ISettings;
|
use OCP\Settings\ISettings;
|
||||||
use OCP\Util;
|
use OCP\Util;
|
||||||
|
use OCP\IURLGenerator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Recursive find files from name pattern
|
* Recursive find files from name pattern
|
||||||
|
@ -40,8 +41,14 @@ class Admin implements ISettings {
|
||||||
private $request;
|
private $request;
|
||||||
private $config;
|
private $config;
|
||||||
private $dataDirPath;
|
private $dataDirPath;
|
||||||
|
private $urlGenerator;
|
||||||
|
|
||||||
public function __construct(IniGetWrapper $iniWrapper, IRequest $request, IConfig $config) {
|
public function __construct(
|
||||||
|
IniGetWrapper $iniWrapper,
|
||||||
|
IRequest $request,
|
||||||
|
IConfig $config,
|
||||||
|
IURLGenerator $urlGenerator) {
|
||||||
|
$this->urlGenerator = $urlGenerator;
|
||||||
$this->iniWrapper = $iniWrapper;
|
$this->iniWrapper = $iniWrapper;
|
||||||
$this->request = $request;
|
$this->request = $request;
|
||||||
$this->config = $config;
|
$this->config = $config;
|
||||||
|
@ -59,15 +66,17 @@ class Admin implements ISettings {
|
||||||
* @return TemplateResponse
|
* @return TemplateResponse
|
||||||
*/
|
*/
|
||||||
public function getForm() {
|
public function getForm() {
|
||||||
|
$uploadPath = $this->urlGenerator->linkToRoute('gpxedit.utils.uploadExtraSymbol');
|
||||||
//$extraSymbolList = Array(Array('name'=>'plop', 'url'=>'huhu'), Array('name'=>'lll', 'url'=>'uuu'));
|
//$extraSymbolList = Array(Array('name'=>'plop', 'url'=>'huhu'), Array('name'=>'lll', 'url'=>'uuu'));
|
||||||
$extraSymbolList = Array();
|
$extraSymbolList = Array();
|
||||||
foreach(globRecursive($this->dataDirPath.'/symbols', '*.png', False) as $symbolfile){
|
foreach(globRecursive($this->dataDirPath.'/symbols', '*.png', False) as $symbolfile){
|
||||||
$filename = basename($symbolfile);
|
$filename = basename($symbolfile);
|
||||||
array_push($extraSymbolList, Array('name'=>str_replace('.png', '', $filename), 'url'=>$filename));
|
array_push($extraSymbolList, Array('smallname'=>str_replace('.png', '', $filename), 'name'=>$filename));
|
||||||
}
|
}
|
||||||
|
|
||||||
$parameters = [
|
$parameters = [
|
||||||
'extraSymbolList' => $extraSymbolList
|
'extraSymbolList' => $extraSymbolList,
|
||||||
|
'uploadPath' => $uploadPath
|
||||||
];
|
];
|
||||||
|
|
||||||
return new TemplateResponse('gpxedit', 'admin', $parameters, '');
|
return new TemplateResponse('gpxedit', 'admin', $parameters, '');
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
<?php
|
||||||
|
OCP\Util::addscript('gpxedit', 'admin');
|
||||||
|
OCP\Util::addstyle('gpxedit', 'admin');
|
||||||
|
?>
|
||||||
|
|
||||||
|
<div class="section" id="gpxedit">
|
||||||
|
<h2><?php p($l->t('GpxEdit additional settings')); ?></h2>
|
||||||
|
<label><?php p($l->t( 'Extra symbols' )); ?> </label>
|
||||||
|
<span id="extraSymbolsSettingsMsg" class="msg"></span>
|
||||||
|
<br />
|
||||||
|
<div id="extraSymbols">
|
||||||
|
<?php
|
||||||
|
foreach($_['extraSymbolList'] as $symbol){
|
||||||
|
echo '<p class="extraSymbol" id="';
|
||||||
|
p($symbol['smallname']);
|
||||||
|
echo '">';
|
||||||
|
echo '<img src="';
|
||||||
|
p($symbol['name']);
|
||||||
|
echo '"/>';
|
||||||
|
echo '<label> ';
|
||||||
|
p($symbol['smallname']);
|
||||||
|
echo ' </label>';
|
||||||
|
echo '<button class="delExtraSymbol icon-delete icon" name="';
|
||||||
|
p($symbol['name']);
|
||||||
|
echo '" title="Remove"></button>';
|
||||||
|
echo '</p>';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
<!--button id="addExtraSymbol" class="inlineblock button icon-upload" title="Upload new symbol image"></button-->
|
||||||
|
|
||||||
|
<form class="uploadButton" method="post" action="<?php p($_['uploadPath']) ?>">
|
||||||
|
<label for="addExtraSymbolName">New symbol name :</label>
|
||||||
|
<input type="text" name="addExtraSymbolName" id="addExtraSymbolName"></input>
|
||||||
|
|
||||||
|
<input id="uploadsymbol" class="upload-symbol-field" name="uploadsymbol" type="file">
|
||||||
|
<label for="uploadsymbol" class="button icon-upload svg" id="uploadsymbol" title="<?php p($l->t('Upload new symbol image')) ?>"></label>
|
||||||
|
</form>
|
||||||
|
</div>
|
Loading…
Reference in New Issue