diff --git a/ajax/personal.php b/ajax/personal.php
deleted file mode 100644
index 801090b..0000000
--- a/ajax/personal.php
+++ /dev/null
@@ -1,35 +0,0 @@
-getL10N('epubreader');
-
-$EpubEnable = isset($_POST['EpubEnable']) ? $_POST['EpubEnable'] : 'false';
-$PdfEnable = isset($_POST['PdfEnable']) ? $_POST['PdfEnable'] : 'false';
-$CbxEnable = isset($_POST['CbxEnable']) ? $_POST['CbxEnable'] : 'false';
-
-Config::set('epub_enable', $EpubEnable);
-Config::set('pdf_enable', $PdfEnable);
-Config::set('cbx_enable', $CbxEnable);
-
-\OC_JSON::success(
- array(
- 'data' => array('message'=> $l->t('Settings updated successfully.'))
- )
-);
-
-exit();
-
diff --git a/appinfo/app.php b/appinfo/app.php
index 5d2e294..cf3b4ee 100644
--- a/appinfo/app.php
+++ b/appinfo/app.php
@@ -19,4 +19,3 @@ $l = \OC::$server->getL10N('epubreader');
\OCA\Epubreader\Hooks::register();
Util::addscript('epubreader', 'plugin');
-\OCP\App::registerPersonal('epubreader', 'personal');
diff --git a/appinfo/info.xml b/appinfo/info.xml
index 3cfe617..bffaa21 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -48,4 +48,8 @@ See [README] for more exhaustive information on features and potential misfeatur
+
+ OCA\Epubreader\Settings\Personal
+ OCA\Epubreader\Settings\PersonalSection
+
diff --git a/appinfo/routes.php b/appinfo/routes.php
index b3fde19..f70c426 100644
--- a/appinfo/routes.php
+++ b/appinfo/routes.php
@@ -10,8 +10,6 @@
* later.
*/
-$this->create('reader_personal_settings', 'ajax/personal.php')->actionInclude('epubreader/ajax/personal.php');
-
return ['routes' => [
// Page
['name' => 'page#showReader', 'url' => '/', 'verb' => 'GET'],
@@ -36,5 +34,8 @@ return ['routes' => [
['name' => 'preference#get', 'url' => '/preference/{fileId}/{scope}/{name}', 'verb' => 'GET', 'defaults' => ['name' => '']],
['name' => 'preference#set', 'url' => '/preference', 'verb' => 'POST'],
['name' => 'preference#delete', 'url' => '/preference/{fileId}/{scope}/{name}', 'verb' => 'DELETE'],
+
+ // User Settings
+ ['name' => 'settings#setPreference', 'url' => '/settings/set', 'verb' => 'POST'],
]];
diff --git a/js/personal.js b/js/personal.js
index a59a3be..171e675 100644
--- a/js/personal.js
+++ b/js/personal.js
@@ -9,7 +9,7 @@ window.addEventListener('DOMContentLoaded', function () {
};
OC.msg.startSaving('#reader-personal .msg');
- $.post(OC.filePath('epubreader', 'lib', 'personal-back.php'), data, readerSettings.afterSave);
+ $.post(OC.generateUrl('apps/epubreader/settings/set'), data, readerSettings.afterSave);
},
afterSave : function(data){
OC.msg.finishedSaving('#reader-personal .msg', data);
diff --git a/js/settings.js b/js/settings.js
index 92f0a82..171e675 100644
--- a/js/settings.js
+++ b/js/settings.js
@@ -9,7 +9,7 @@ window.addEventListener('DOMContentLoaded', function () {
};
OC.msg.startSaving('#reader-personal .msg');
- $.post(OC.filePath('epubreader', 'ajax', 'personal.php'), data, readerSettings.afterSave);
+ $.post(OC.generateUrl('apps/epubreader/settings/set'), data, readerSettings.afterSave);
},
afterSave : function(data){
OC.msg.finishedSaving('#reader-personal .msg', data);
diff --git a/lib/Controller/SettingsController.php b/lib/Controller/SettingsController.php
new file mode 100644
index 0000000..7b26a34
--- /dev/null
+++ b/lib/Controller/SettingsController.php
@@ -0,0 +1,69 @@
+urlGenerator = $urlGenerator;
+ $this->preferenceService = $preferenceService;
+ }
+
+ /**
+ * @brief set preference for file type association
+ *
+ * @NoAdminRequired
+ *
+ * @param int $EpubEnable
+ * @param int $EpubEnable
+ * @param int $CbxEnable
+ *
+ * @return array|\OCP\AppFramework\Http\JSONResponse
+ */
+ public function setPreference(string $EpubEnable, string $PdfEnable, string $CbxEnable) {
+
+ $l = \OC::$server->getL10N('epubreader');
+
+ Config::set('epub_enable', $EpubEnable);
+ Config::set('pdf_enable', $PdfEnable);
+ Config::set('cbx_enable', $CbxEnable);
+
+ $response = array(
+ 'data' => array('message'=> $l->t('Settings updated successfully.')),
+ 'status' => 'success'
+ );
+
+ return new JSONResponse($response);
+ }
+}
\ No newline at end of file
diff --git a/lib/Settings/Personal.php b/lib/Settings/Personal.php
new file mode 100644
index 0000000..dbfccb1
--- /dev/null
+++ b/lib/Settings/Personal.php
@@ -0,0 +1,89 @@
+userId = $userId;
+ $this->configManager = $configManager;
+ }
+
+ /**
+ * @return TemplateResponse returns the instance with all parameters set, ready to be rendered
+ * @since 9.1
+ */
+ public function getForm()
+ {
+
+ $parameters = [
+ 'EpubEnable' => $this->configManager->getUserValue($this->userId, 'epubreader', 'epub_enable'),
+ 'PdfEnable' => $this->configManager->getUserValue($this->userId, 'epubreader', 'pdf_enable'),
+ 'CbxEnable' => $this->configManager->getUserValue($this->userId, 'epubreader', 'cbx_enable'),
+ ];
+ return new TemplateResponse('epubreader', 'settings-personal', $parameters, '');
+ }
+
+ /**
+ * Print config section (ownCloud 10)
+ *
+ * @return TemplateResponse
+ */
+ public function getPanel()
+ {
+ return $this->getForm();
+ }
+
+ /**
+ * @return string the section ID, e.g. 'sharing'
+ * @since 9.1
+ */
+ public function getSection()
+ {
+ return 'epubreader';
+ }
+
+ /**
+ * Get section ID (ownCloud 10)
+ *
+ * @return string
+ */
+ public function getSectionID()
+ {
+ return 'epubreader';
+ }
+
+ /**
+ * @return int whether the form should be rather on the top or bottom of
+ * the admin section. The forms are arranged in ascending order of the
+ * priority values. It is required to return a value between 0 and 100.
+ *
+ * E.g.: 70
+ * @since 9.1
+ */
+ public function getPriority()
+ {
+ return 10;
+ }
+}
diff --git a/lib/Settings/PersonalSection.php b/lib/Settings/PersonalSection.php
new file mode 100644
index 0000000..17d8d64
--- /dev/null
+++ b/lib/Settings/PersonalSection.php
@@ -0,0 +1,70 @@
+urlGenerator = $urlGenerator;
+ $this->l = $l;
+ }
+
+ /**
+ * returns the relative path to an 16*16 icon describing the section.
+ *
+ * @returns string
+ */
+ public function getIcon()
+ {
+ return $this->urlGenerator->imagePath('epubreader', 'app.svg');
+ }
+
+ /**
+ * returns the ID of the section. It is supposed to be a lower case string,
+ *
+ * @returns string
+ */
+ public function getID()
+ {
+ return 'epubreader';
+ }
+
+ /**
+ * returns the translated name as it should be displayed
+ *
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->l->t('EPUB/CBZ/PDF ebook reader');
+ }
+
+ /**
+ * returns priority for positioning
+ *
+ * @return int
+ */
+ public function getPriority()
+ {
+ return 20;
+ }
+}
\ No newline at end of file
diff --git a/personal.php b/personal.php
deleted file mode 100644
index 262b8e6..0000000
--- a/personal.php
+++ /dev/null
@@ -1,25 +0,0 @@
-getL10N('epubreader');
-
-$tmpl = new \OCP\Template('epubreader', 'settings-personal');
-$EpubEnable = Config::get('epub_enable', 'true');
-$PdfEnable = Config::get('pdf_enable', 'true');
-$CbxEnable = Config::get('cbx_enable', 'true');
-$tmpl->assign('EpubEnable', $EpubEnable);
-$tmpl->assign('PdfEnable', $PdfEnable);
-$tmpl->assign('CbxEnable', $CbxEnable);
-
-return $tmpl->fetchPage();