Open Journal Systems  3.3.0
HealthSciencesThemePlugin.inc.php
1 <?php
2 
16 import('lib.pkp.classes.plugins.ThemePlugin');
18 
23  public function init() {
24 
25  // Add theme options
26  $this->addOption('baseColour', 'colour', array(
27  'label' => 'plugins.themes.healthSciences.option.colour.label',
28  'description' => 'plugins.themes.healthSciences.option.colour.description',
29  'default' => '#10BECA',
30  ));
31 
32  // Update colour based on theme option
33  $additionalLessVariables = [];
34  if ($this->getOption('baseColour') !== '#10BECA') {
35  $additionalLessVariables[] = '@primary:' . $this->getOption('baseColour') . ';';
36  $additionalLessVariables[] = '
37  @primary-light: desaturate(lighten(@primary, 41%), 15%);
38  @primary-text: darken(@primary, 15%);
39  @primary-link: darken(@primary, 50%);
40  ';
41  }
42 
43  // Update contrast colour based on primary colour
44  if ($this->isColourDark($this->getOption('baseColour'))) {
45  $additionalLessVariables[] = '
46  @contrast: rgba(255, 255, 255, 0.85);
47  @primary-text: lighten(@primary, 15%);
48  @primary-link: lighten(@primary, 50%);
49  ';
50  }
51 
52  // Load dependencies from CDN
53  if (Config::getVar('general', 'enable_cdn')) {
54  $this->addStyle(
55  'fonts',
56  'https://fonts.googleapis.com/css?family=Droid+Serif:200,200i,400,400i|Fira+Sans:300,300i,400,400i,700,700i',
57  array('baseUrl' => '')
58  );
59  $this->addStyle(
60  'bootstrap',
61  'https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css',
62  array('baseUrl' => '')
63  );
64  $this->addStyle(
65  'fontawesome',
66  'https://use.fontawesome.com/releases/v5.6.1/css/all.css',
67  array('baseUrl' => '')
68  );
69  $this->addScript(
70  'jquery',
71  'https://code.jquery.com/jquery-3.3.1.min.js',
72  array('baseUrl' => '')
73  );
74  $this->addScript(
75  'popper',
76  'https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js',
77  array('baseUrl' => '')
78  );
79  $this->addScript(
80  'bootstrap',
81  'https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js',
82  array('baseUrl' => '')
83  );
84 
85  // Load local copies of dependencies if CDNs are not allowed
86  } else {
87  $this->addStyle('bootstrap', 'libs/bootstrap.min.css');
88  $this->addScript('jquery', 'libs/jquery-3.3.1.min.js');
89  $this->addScript('popper', 'libs/popper.min.js');
90  $this->addScript('bootstrap', 'libs/bootstrap.min.js');
91  }
92 
93  // Load theme stylesheet and script
94  $this->addStyle('stylesheet', 'styles/index.less');
95  $this->modifyStyle('stylesheet', array('addLessVariables' => join($additionalLessVariables)));
96  $this->addScript('main', 'js/main.js');
97 
98  // Styles for HTML galleys
99  $this->addStyle('htmlGalley', 'templates/plugins/generic/htmlArticleGalley/css/default.css', array('contexts' => 'htmlGalley'));
100  $this->addStyle('htmlFont', 'https://fonts.googleapis.com/css?family=PT+Serif&display=swap', array('baseUrl' => '', 'contexts' => 'htmlGalley'));
101 
102  // Styles for right to left scripts
103  $locale = AppLocale::getLocale();
104  $localeDirection = AppLocale::getLocaleDirection($locale);
105  if ($localeDirection === "rtl") {
106  $this->addStyle('rtl', 'styles/rtl.less');
107  }
108 
109  // Add JQuery UI and tag-it libraries for registration page (reviewer's interests)
110  $this->addScript("jquery-ui", "libs/jquery-ui.min.js");
111  $this->addScript("tag-it", "libs/tag-it.min.js");
112 
113  // Add navigation menu areas for this theme
114  $this->addMenuArea(array('primary', 'user'));
115 
116  // Get extra data for templates
117  HookRegistry::register ('TemplateManager::display', array($this, 'loadTemplateData'));
118 
119  // Check if CSS embedded to the HTML galley
120  HookRegistry::register('TemplateManager::display', array($this, 'hasEmbeddedCSS'));
121  }
122 
127  public function getDisplayName() {
128  return __('plugins.themes.healthSciences.name');
129  }
130 
135  public function getDescription() {
136  return __('plugins.themes.healthSciences.description');
137  }
138 
151  public function loadTemplateData($hookName, $args) {
152  $templateMgr = $args[0];
153  $request = Application::get()->getRequest();
154  $context = $request->getContext();
155 
156  if (!defined('SESSION_DISABLE_INIT')) {
157 
158  // Get possible locales
159  if ($context) {
160  $locales = $context->getSupportedLocaleNames();
161  } else {
162  $locales = $request->getSite()->getSupportedLocaleNames();
163  }
164 
165  // Load login form
166  $loginUrl = $request->url(null, 'login', 'signIn');
167  if (Config::getVar('security', 'force_login_ssl')) {
168  $loginUrl = PKPString::regexp_replace('/^http:/', 'https:', $loginUrl);
169  }
170 
171  $orcidImage = $this->getPluginPath() . '/templates/images/orcid.png';
172 
173  $templateMgr->assign(array(
174  'languageToggleLocales' => $locales,
175  'loginUrl' => $loginUrl,
176  'brandImage' => 'templates/images/ojs_brand_white.png',
177  'orcidImage' => $orcidImage,
178  ));
179  }
180  }
181 
182  public function hasEmbeddedCSS($hookName, $args) {
183  $templateMgr = $args[0];
184  $template = $args[1];
185  $request = $this->getRequest();
186 
187  // Retun false if not a galley page
188  if ($template != 'plugins/plugins/generic/htmlArticleGalley/generic/htmlArticleGalley:display.tpl') return false;
189 
190  $articleArrays = $templateMgr->get_template_vars('article');
191 
192  $boolEmbeddedCss = false;
193 
194  foreach ($articleArrays->getGalleys() as $galley) {
195  if ($galley->getFileType() === 'text/html') {
196  $submissionFile = $galley->getFile();
197 
198  $submissionFileDao = DAORegistry::getDAO('SubmissionFileDAO');
199  import('lib.pkp.classes.submission.SubmissionFile'); // Constants
200  $embeddableFiles = array_merge(
201  $submissionFileDao->getLatestRevisions($submissionFile->getSubmissionId(), SUBMISSION_FILE_PROOF),
202  $submissionFileDao->getLatestRevisionsByAssocId(ASSOC_TYPE_SUBMISSION_FILE, $submissionFile->getFileId(), $submissionFile->getSubmissionId(), SUBMISSION_FILE_DEPENDENT)
203  );
204 
205  foreach ($embeddableFiles as $embeddableFile) {
206  if ($embeddableFile->getFileType() == 'text/css') {
207  $boolEmbeddedCss = true;
208  }
209  }
210  }
211 
212  }
213 
214  $templateMgr->assign(array(
215  'boolEmbeddedCss' => $boolEmbeddedCss,
216  'themePath' => $request->getBaseUrl() . "/" . $this->getPluginPath(),
217  ));
218  }
219 }
HealthSciencesThemePlugin\hasEmbeddedCSS
hasEmbeddedCSS($hookName, $args)
Definition: HealthSciencesThemePlugin.inc.php:182
ThemePlugin
Abstract class for theme plugins.
Definition: ThemePlugin.inc.php:21
ThemePlugin\isColourDark
isColourDark($color, $limit=130)
Definition: ThemePlugin.inc.php:845
ThemePlugin\addMenuArea
addMenuArea($menuAreas)
Definition: ThemePlugin.inc.php:662
PKPString\regexp_replace
static regexp_replace($pattern, $replacement, $subject, $limit=-1)
Definition: PKPString.inc.php:279
Plugin\getRequest
& getRequest()
Definition: Plugin.inc.php:828
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
HealthSciencesThemePlugin\getDisplayName
getDisplayName()
Definition: HealthSciencesThemePlugin.inc.php:127
ThemePlugin\getOption
getOption($name)
Definition: ThemePlugin.inc.php:454
HealthSciencesThemePlugin\init
init()
Definition: HealthSciencesThemePlugin.inc.php:23
ThemePlugin\addScript
addScript($name, $script, $args=array())
Definition: ThemePlugin.inc.php:304
ThemePlugin\addOption
addOption($name, $type, $args=array())
Definition: ThemePlugin.inc.php:393
PKPLocale\getLocaleDirection
static getLocaleDirection($locale)
Definition: PKPLocale.inc.php:465
HealthSciencesThemePlugin\loadTemplateData
loadTemplateData($hookName, $args)
Definition: HealthSciencesThemePlugin.inc.php:151
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
HealthSciencesThemePlugin\getDescription
getDescription()
Definition: HealthSciencesThemePlugin.inc.php:135
HealthSciencesThemePlugin
Health Sciences theme.
Definition: HealthSciencesThemePlugin.inc.php:17
Plugin\getPluginPath
getPluginPath()
Definition: Plugin.inc.php:330
ThemePlugin\modifyStyle
modifyStyle($name, $args=array())
Definition: ThemePlugin.inc.php:229
Plugin\$request
$request
Definition: Plugin.inc.php:68
HookRegistry\register
static register($hookName, $callback, $hookSequence=HOOK_SEQUENCE_NORMAL)
Definition: HookRegistry.inc.php:70
ThemePlugin\addStyle
addStyle($name, $style, $args=array())
Definition: ThemePlugin.inc.php:191
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
AppLocale\getLocale
static getLocale()
Definition: env1/MockAppLocale.inc.php:40