forked from pkp/citationStyleLanguage
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCitationStyleLanguageSettingsForm.inc.php
111 lines (95 loc) · 3.82 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
<?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;
$allStyles = [];
foreach ($this->plugin->getCitationStyles() as $style) {
$allStyles[$style['id']] = $style['title'];
}
$allDownloads = [];
foreach ($this->plugin->getCitationDownloads() as $style) {
$allDownloads[$style['id']] = $style['title'];
}
$templateMgr = TemplateManager::getManager($request);
$templateMgr->assign(array(
'pluginName' => $this->plugin->getName(),
'allDownloads' => $allDownloads,
'allStyles' => $allStyles,
'primaryCitationStyle' => $this->getData('primaryCitationStyle'),
'enabledStyles' => $this->plugin->mapCitationIds($this->plugin->getEnabledCitationStyles($contextId)),
'enabledDownloads' => $this->plugin->mapCitationIds($this->plugin->getEnabledCitationDownloads($contextId)),
));
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);
}
}