add setting for default file suffix
This commit is contained in:
parent
e11d328597
commit
fe52c71e72
|
@ -36,6 +36,6 @@ class SettingsController extends Controller
|
|||
* @NoAdminRequired
|
||||
*/
|
||||
public function get() {
|
||||
return new JSONResponse($this->service->get());
|
||||
return new JSONResponse($this->service->getAll());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -86,6 +86,10 @@
|
|||
opacity: 1 !important;
|
||||
}
|
||||
|
||||
#app-settings-content > div + div {
|
||||
padding-top: 2ex;
|
||||
}
|
||||
|
||||
.note-search span {
|
||||
background-position: 0 center;
|
||||
background-origin: content-box;
|
||||
|
|
|
@ -2,6 +2,8 @@ app.controller('NotesSettingsController',
|
|||
function($scope, Restangular, $document) {
|
||||
'use strict';
|
||||
|
||||
$scope.extensions = ['.txt', '.md'];
|
||||
|
||||
Restangular.one('settings').get().then(function(settings) {
|
||||
if(angular.isObject(settings)) {
|
||||
$scope.settings = settings;
|
||||
|
@ -17,4 +19,8 @@ app.controller('NotesSettingsController',
|
|||
window.location.reload(true);
|
||||
});
|
||||
});
|
||||
|
||||
$document.on('change', '#fileSuffix', function() {
|
||||
$scope.settings.put();
|
||||
});
|
||||
});
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -132,7 +132,7 @@ class NotesService {
|
|||
// check new note exists already and we need to number it
|
||||
// pass -1 because no file has id -1 and that will ensure
|
||||
// to only return filenames that dont yet exist
|
||||
$path = $this->generateFileName($folder, $title, "txt", -1);
|
||||
$path = $this->generateFileName($folder, $title, $this->settings->get('fileSuffix'), -1);
|
||||
$file = $folder->newFile($path);
|
||||
|
||||
return $this->getNote($file, $folder);
|
||||
|
@ -160,7 +160,7 @@ class NotesService {
|
|||
// this can fail if access rights are not sufficient or category name is illegal
|
||||
try {
|
||||
$currentFilePath = $this->root->getFullPath($file->getPath());
|
||||
$fileExtension = pathinfo($file->getName(), PATHINFO_EXTENSION);
|
||||
$fileSuffix = '.' . pathinfo($file->getName(), PATHINFO_EXTENSION);
|
||||
|
||||
// detect (new) folder path based on category name
|
||||
if($category===null) {
|
||||
|
@ -178,7 +178,7 @@ class NotesService {
|
|||
}
|
||||
|
||||
// assemble new file path
|
||||
$newFilePath = $basePath . '/' . $this->generateFileName($folder, $title, $fileExtension, $id);
|
||||
$newFilePath = $basePath . '/' . $this->generateFileName($folder, $title, $fileSuffix, $id);
|
||||
|
||||
// if the current path is not the new path, the file has to be renamed
|
||||
if($currentFilePath !== $newFilePath) {
|
||||
|
@ -344,15 +344,15 @@ class NotesService {
|
|||
*
|
||||
* @param Folder $folder a folder to the notes directory
|
||||
* @param string $title the filename which should be used
|
||||
* @param string $extension the extension which should be used
|
||||
* @param string $suffix the suffix (incl. dot) which should be used
|
||||
* @param int $id the id of the note for which the title should be generated
|
||||
* used to see if the file itself has the title and not a different file for
|
||||
* checking for filename collisions
|
||||
* @return string the resolved filename to prevent overwriting different
|
||||
* files with the same title
|
||||
*/
|
||||
private function generateFileName (Folder $folder, $title, $extension, $id) {
|
||||
$path = $title . '.' . $extension;
|
||||
private function generateFileName (Folder $folder, $title, $suffix, $id) {
|
||||
$path = $title . $suffix;
|
||||
|
||||
// if file does not exist, that name has not been taken. Similar we don't
|
||||
// need to handle file collisions if it is the filename did not change
|
||||
|
@ -368,7 +368,7 @@ class NotesService {
|
|||
} else {
|
||||
$newTitle = $title . ' (2)';
|
||||
}
|
||||
return $this->generateFileName($folder, $newTitle, $extension, $id);
|
||||
return $this->generateFileName($folder, $newTitle, $suffix, $id);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -17,8 +17,9 @@ class SettingsService
|
|||
private $root;
|
||||
|
||||
/* Default values */
|
||||
private $settings = [
|
||||
private $defaults = [
|
||||
"notesPath" => "Notes",
|
||||
"fileSuffix" => ".txt",
|
||||
];
|
||||
|
||||
public function __construct(
|
||||
|
@ -33,16 +34,42 @@ class SettingsService
|
|||
* @throws \OCP\PreConditionNotMetException
|
||||
*/
|
||||
public function set($settings) {
|
||||
foreach($this->settings as $name => $value) {
|
||||
$this->settings[$name] = isset($settings[$name]) ? $settings[$name] : $value;
|
||||
// remove illegal, empty and default settings
|
||||
foreach($settings as $name => $value) {
|
||||
if(!array_key_exists($name, $this->defaults)
|
||||
|| empty($value)
|
||||
|| $value === $this->defaults[$name]
|
||||
) {
|
||||
unset($settings[$name]);
|
||||
}
|
||||
}
|
||||
|
||||
$this->config->setUserValue($this->uid, 'notes', 'settings', json_encode($this->settings));
|
||||
$this->config->setUserValue($this->uid, 'notes', 'settings', json_encode($settings));
|
||||
}
|
||||
|
||||
public function get($name = null, $default = null) {
|
||||
public function getAll() {
|
||||
$settings = json_decode($this->config->getUserValue($this->uid, 'notes', 'settings'));
|
||||
if(!$settings || !is_object($settings)) $settings = $this->settings;
|
||||
return $name ? (property_exists($settings, $name) ? $settings->{$name} : $default) : $settings;
|
||||
if(is_object($settings)) {
|
||||
// use default for empty settings
|
||||
foreach($this->defaults as $name => $defaultValue) {
|
||||
if(!property_exists($settings, $name) || empty($settings->{$name})) {
|
||||
$settings->{$name} = $defaultValue;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$settings = (object)$this->defaults;
|
||||
}
|
||||
return $settings;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \OCP\PreConditionNotMetException
|
||||
*/
|
||||
public function get($name) {
|
||||
$settings = $this->getAll();
|
||||
if(property_exists($settings, $name)) {
|
||||
return $settings->{$name};
|
||||
} else {
|
||||
throw new \OCP\PreConditionNotMetException('Setting '.$name.' not found.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -80,8 +80,14 @@ style('notes', [
|
|||
<button class="settings-button" data-apps-slide-toggle="#app-settings-content"><?php p($l->t('Settings'));?></button>
|
||||
</div>
|
||||
<div id="app-settings-content">
|
||||
<p class="settings-hint"><label for="notesPath"><?php p($l->t('Folder to store your notes:')) ?></label></p>
|
||||
<input type="text" name="notesPath" ng-model="settings.notesPath" placeholder="<?php p($l->t('path to notes')); ?>" id="notesPath" style="width:100%"/>
|
||||
<div class="settings-notesPath">
|
||||
<p class="settings-hint"><label for="notesPath"><?php p($l->t('Folder to store your notes')) ?></label></p>
|
||||
<input type="text" name="notesPath" ng-model="settings.notesPath" placeholder="<?php p($l->t('path to notes')); ?>" id="notesPath" style="width:80%"/><input type="submit" class="icon-confirm" value="">
|
||||
</div>
|
||||
<div class="settings-fileSuffix">
|
||||
<p class="settings-hint"><label for="fileSuffix"><?php p($l->t('File extension for new notes')) ?></label></p>
|
||||
<select id="fileSuffix" ng-model="settings.fileSuffix" ng-options="o as o for o in extensions"></select><input type="submit" class="icon-confirm" value="">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
Loading…
Reference in New Issue