Initial fix for File Association preference

This is a initial fix to permit user to change the file association
preferences again.
This commit is contained in:
sysadminstory 2022-01-22 00:53:03 +01:00
parent e4e5143b3e
commit 3c4bfb6c78
6 changed files with 240 additions and 2 deletions

View File

@ -48,4 +48,8 @@ See [README] for more exhaustive information on features and potential misfeatur
<dependencies>
<nextcloud min-version="21" max-version="23"/>
</dependencies>
<settings>
<personal>OCA\Epubreader\Settings\Personal</personal>
<personal-section>OCA\Epubreader\Settings\PersonalSection</personal-section>
</settings>
</info>

View File

@ -10,7 +10,7 @@
* later.
*/
$this->create('reader_personal_settings', 'ajax/personal.php')->actionInclude('epubreader/ajax/personal.php');
//$this->create('reader_personal_settings', 'ajax/personal.php')->actionInclude('epubreader/ajax/personal.php');
return ['routes' => [
// Page
@ -36,5 +36,6 @@ 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'],
['name' => 'settings#setPreference', 'url' => '/ajax/personal.php', 'verb' => 'POST'],
]];

View File

@ -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/ajax/personal.php'), data, readerSettings.afterSave);
},
afterSave : function(data){
OC.msg.finishedSaving('#reader-personal .msg', data);

View File

@ -0,0 +1,74 @@
<?php
/**
* ownCloud - Epubreader App
*
* @author Frank de Lange
* @copyright 2014,2018 Frank de Lange
*
* This file is licensed under the Affero General Public License version 3 or
* later.
*/
namespace OCA\Epubreader\Controller;
use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\AppFramework\Http;
use OCP\AppFramework\Controller;
use OCA\Epubreader\Service\PreferenceService;
use OCA\Epubreader\Config;
class SettingsController extends Controller {
private $urlGenerator;
private $preferenceService;
/**
* @param string $AppName
* @param IRequest $request
* @param IURLGenerator $urlGenerator
* @param PreferenceService $preferenceService
*/
public function __construct($AppName,
IRequest $request,
IURLGenerator $urlGenerator,
PreferenceService $preferenceService ) {
parent::__construct($AppName, $request);
$this->urlGenerator = $urlGenerator;
$this->preferenceService = $preferenceService;
}
/**
* @brief return preference for $fileId
*
* @NoAdminRequired
* @NoCSRFRequired
*
* @param string $scope
* @param int $fileId
* @param string $name if null, return all preferences for $scope + $fileId
*
* @return array|\OCP\AppFramework\Http\JSONResponse
*/
public function setPreference($scope, $fileId, $name) {
/*\OC_JSON::callCheck();
\OC_JSON::checkLoggedIn();*/
$l = \OC::$server->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.'))
)
);
}
}

89
lib/Settings/Personal.php Normal file
View File

@ -0,0 +1,89 @@
<?php
/**
* ownCloud - Epubreader App
*
* @author Frank de Lange
* @copyright 2014,2018 Frank de Lange
*
* This file is licensed under the Affero General Public License version 3 or
* later.
*/
namespace OCA\Epubreader\Settings;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\Settings\ISettings;
use OCP\IConfig;
class Personal implements ISettings
{
private $userId;
private $configManager;
public function __construct(
$userId,
IConfig $configManager
)
{
$this->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;
}
}

View File

@ -0,0 +1,70 @@
<?php
/**
* ownCloud - Epubreader App
*
* @author Frank de Lange
* @copyright 2014,2018 Frank de Lange
*
* This file is licensed under the Affero General Public License version 3 or
* later.
*/
namespace OCA\Epubreader\Settings;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\Settings\IIconSection;
class PersonalSection implements IIconSection
{
/** @var IURLGenerator */
private $urlGenerator;
/** @var IL10N */
private $l;
public function __construct(IURLGenerator $urlGenerator, IL10N $l)
{
$this->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 100;
}
}