forked from pkp/citationStyleLanguage
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCitationStyleLanguageSettingsForm.inc.php
128 lines (111 loc) · 4.9 KB
/
CitationStyleLanguageSettingsForm.inc.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?php
/**
* @file CitationStyleLanguageSettingsForm.inc.inc.php
*
* Copyright (c) 2017-2020 Simon Fraser University
* Copyright (c) 2017-2020 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @class CitationStyleLanguageSettingsForm.inc
* @ingroup plugins_generic_citationStyleLanguage
*
* @brief Form for site admins to modify Citation Style Language settings.
*/
import('lib.pkp.classes.form.Form');
class CitationStyleLanguageSettingsForm extends Form {
/** @var $plugin object */
public $plugin;
/**
* Constructor
* @param $plugin object
*/
public function __construct($plugin) {
parent::__construct($plugin->getTemplateResource('settings.tpl'));
$this->plugin = $plugin;
$this->addCheck(new FormValidatorPost($this));
$this->addCheck(new FormValidatorCSRF($this));
}
/**
* @copydoc Form::init
*/
public function initData() {
$request = Application::get()->getRequest();
$context = $request->getContext();
$contextId = $context ? $context->getId() : 0;
$this->setData('primaryCitationStyle', $this->plugin->getSetting($contextId, 'primaryCitationStyle'));
$this->setData('enabledCitationStyles', array_keys($this->plugin->getEnabledCitationStyles($contextId)));
$this->setData('enabledCitationDownloads', $this->plugin->getEnabledCitationDownloads($contextId));
$this->setData('publisherLocation', $this->plugin->getSetting($contextId, 'publisherLocation'));
}
/**
* Assign form data to user-submitted data.
*/
public function readInputData() {
$this->readUserVars(array(
'primaryCitationStyle',
'enabledCitationStyles',
'enabledCitationDownloads',
'publisherLocation',
));
}
/**
* @copydoc Form::fetch()
*/
public function fetch($request, $template = null, $display = false) {
$context = $request->getContext();
$contextId = $context ? $context->getId() : 0;
$primaryCitationStyles = new PKP\components\listPanels\ListPanel('primaryCitationStyles', __('plugins.generic.citationStyleLanguage.settings.citationFormatsPrimary'), array(
'description' => __('plugins.generic.citationStyleLanguage.settings.citationFormatsPrimaryDescription'),
'canSelect' => true,
'selectorName' => 'primaryCitationStyle',
'selectorType' => 'radio',
'selected' => $this->getData('primaryCitationStyle'),
'items' => $this->plugin->getCitationStyles(),
));
$citationStyles = new PKP\components\listPanels\ListPanel('citationStyles', __('plugins.generic.citationStyleLanguage.settings.citationFormats'), array(
'description' => __('plugins.generic.citationStyleLanguage.settings.citationFormatsDescription'),
'canSelect' => true,
'selectorName' => 'enabledCitationStyles[]',
'selected' => $this->plugin->mapCitationIds($this->plugin->getEnabledCitationStyles($contextId)),
'items' => $this->plugin->getCitationStyles(),
));
$citationDownloads = new PKP\components\listPanels\ListPanel('citationDownloads', __('plugins.generic.citationStyleLanguage.settings.citationDownloads'), array(
'description' => __('plugins.generic.citationStyleLanguage.settings.citationDownloadsDescription'),
'canSelect' => true,
'selectorName' => 'enabledCitationDownloads[]',
'selected' => $this->plugin->mapCitationIds($this->plugin->getEnabledCitationDownloads($contextId)),
'items' => $this->plugin->getCitationDownloads(),
));
$templateMgr = TemplateManager::getManager($request);
$templateMgr->assign(array(
'pluginName' => $this->plugin->getName(),
'settingsData' => [
'components' => [
'primaryCitationStyles' => $primaryCitationStyles->getConfig(),
'citationStyles' => $citationStyles->getConfig(),
'citationDownloads' => $citationDownloads->getConfig(),
]
]
));
return parent::fetch($request, $template, $display);
}
/**
* @copydoc Form::execute()
*/
public function execute(...$functionArgs) {
$request = Application::get()->getRequest();
$context = $request->getContext();
$contextId = $context ? $context->getId() : 0;
$this->plugin->updateSetting($contextId, 'primaryCitationStyle', $this->getData('primaryCitationStyle'));
$enabledCitationStyles = $this->getData('enabledCitationStyles') ? $this->getData('enabledCitationStyles') : array();
$this->plugin->updateSetting($contextId, 'enabledCitationStyles', $enabledCitationStyles);
$enabledCitationDownloads = $this->getData('enabledCitationDownloads') ? $this->getData('enabledCitationDownloads') : array();
$this->plugin->updateSetting($contextId, 'enabledCitationDownloads', $enabledCitationDownloads);
$this->plugin->updateSetting($contextId, 'publisherLocation', $this->getData('publisherLocation'));
import('classes.notification.NotificationManager');
$notificationMgr = new NotificationManager();
$user = $request->getUser();
$notificationMgr->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS, array('contents' => __('common.changesSaved')));
return parent::execute(...$functionArgs);
}
}