Open Journal Systems  3.3.0
TemplateManager.inc.php
1 <?php
2 
18 import('classes.search.ArticleSearch');
19 import('classes.file.PublicFileManager');
20 import('lib.pkp.classes.template.PKPTemplateManager');
21 
27  function initialize($request) {
28  parent::initialize($request);
29 
30  // Pass app-specific details to template
31  $this->assign([
32  'brandImage' => 'templates/images/ojs_brand.png',
33  ]);
34 
35  if (!defined('SESSION_DISABLE_INIT')) {
42  $context = $request->getContext();
43  $site = $request->getSite();
44 
45  $publicFileManager = new PublicFileManager();
46  $siteFilesDir = $request->getBaseUrl() . '/' . $publicFileManager->getSiteFilesPath();
47  $this->assign('sitePublicFilesDir', $siteFilesDir);
48  $this->assign('publicFilesDir', $siteFilesDir); // May be overridden by journal
49 
50  if ($site->getData('styleSheet')) {
51  $this->addStyleSheet(
52  'siteStylesheet',
53  $request->getBaseUrl() . '/' . $publicFileManager->getSiteFilesPath() . '/' . $site->getData('styleSheet')['uploadName'],
54  ['priority' => STYLE_SEQUENCE_LATE]
55  );
56  }
57  if (isset($context)) {
58  $this->assign([
59  'currentJournal' => $context,
60  'siteTitle' => $context->getLocalizedName(),
61  'publicFilesDir' => $request->getBaseUrl() . '/' . $publicFileManager->getContextFilesPath($context->getId()),
62  'primaryLocale' => $context->getPrimaryLocale(),
63  'supportedLocales' => $context->getSupportedLocaleNames(),
64  'displayPageHeaderTitle' => $context->getLocalizedPageHeaderTitle(),
65  'displayPageHeaderLogo' => $context->getLocalizedPageHeaderLogo(),
66  'displayPageHeaderLogoAltText' => $context->getLocalizedData('pageHeaderLogoImageAltText'),
67  'numPageLinks' => $context->getData('numPageLinks'),
68  'itemsPerPage' => $context->getData('itemsPerPage'),
69  'enableAnnouncements' => $context->getData('enableAnnouncements'),
70  'disableUserReg' => $context->getData('disableUserReg'),
71  'pageFooter' => $context->getLocalizedData('pageFooter'),
72  ]);
73  } else {
74  // Check if registration is open for any contexts
75  $contextDao = Application::getContextDAO();
76  $contexts = $contextDao->getAll(true)->toArray();
77  $contextsForRegistration = [];
78  foreach($contexts as $context) {
79  if (!$context->getData('disableUserReg')) {
80  $contextsForRegistration[] = $context;
81  }
82  }
83 
84  $this->assign([
85  'contexts' => $contextsForRegistration,
86  'disableUserReg' => empty($contextsForRegistration),
87  'displayPageHeaderTitle' => $site->getLocalizedPageHeaderTitle(),
88  'displayPageHeaderLogo' => $site->getLocalizedData('pageHeaderTitleImage'),
89  'siteTitle' => $site->getLocalizedTitle(),
90  'primaryLocale' => $site->getPrimaryLocale(),
91  'supportedLocales' => $site->getSupportedLocaleNames(),
92  'pageFooter' => $site->getLocalizedData('pageFooter'),
93  ]);
94 
95  }
96  }
97  }
98 
102  function setupBackendPage() {
103  parent::setupBackendPage();
104 
105  $request = Application::get()->getRequest();
106  if (defined('SESSION_DISABLE_INIT')
107  || !$request->getContext()
108  || !$request->getUser()) {
109  return;
110  }
111 
112  $router = $request->getRouter();
113  $handler = $router->getHandler();
114  $userRoles = (array) $handler->getAuthorizedContextObject(ASSOC_TYPE_USER_ROLES);
115 
116  $menu = (array) $this->getState('menu');
117 
118  // Add issues after submissions items
119  if (in_array(ROLE_ID_MANAGER, $userRoles)) {
120  $issuesLink = [
121  'name' => __('editor.navigation.issues'),
122  'url' => $router->url($request, null, 'manageIssues'),
123  'isCurrent' => $request->getRequestedPage() === 'manageIssues',
124  ];
125 
126  $index = array_search('submissions', array_keys($menu));
127  if ($index === false || count($menu) <= ($index + 1)) {
128  $menu['issues'] = $issuesLink;
129  } else {
130  $menu = array_slice($menu, 0, $index + 1, true) +
131  ['issues' => $issuesLink] +
132  array_slice($menu, $index + 1, null, true);
133  }
134  }
135 
136  // Add payments link before settings
137  if ($request->getContext()->getData('paymentsEnabled') && array_intersect([ROLE_ID_SITE_ADMIN, ROLE_ID_MANAGER, ROLE_ID_SUBSCRIPTION_MANAGER], $userRoles)) {
138  $paymentsLink = [
139  'name' => __('common.payments'),
140  'url' => $router->url($request, null, 'payments'),
141  'isCurrent' => $request->getRequestedPage() === 'payments',
142  ];
143 
144  $index = array_search('settings', array_keys($menu));
145  if ($index === false || count($menu) === $index) {
146  $menu['payments'] = $paymentsLink;
147  } else {
148  $menu = array_slice($menu, 0, $index, true) +
149  ['payments' => $paymentsLink] +
150  array_slice($menu, $index, null, true);
151  }
152  }
153 
154  $this->setState(['menu' => $menu]);
155  }
156 }
157 
158 
PKPTemplateManager\addStyleSheet
addStyleSheet($name, $style, $args=[])
Definition: PKPTemplateManager.inc.php:468
Application\getContextDAO
static getContextDAO()
Definition: Application.inc.php:137
PKPTemplateManager
Definition: PKPTemplateManager.inc.php:50
PKPTemplateManager\getState
getState($key)
Definition: PKPTemplateManager.inc.php:581
PKPTemplateManager\setState
setState($data)
Definition: PKPTemplateManager.inc.php:592
PublicFileManager
Wrapper class for uploading files to a site/journal's public directory.
Definition: PublicFileManager.inc.php:18
TemplateManager\initialize
initialize($request)
Definition: TemplateManager.inc.php:27
TemplateManager
Class for accessing the underlying template engine. Currently integrated with Smarty (from http://sma...
Definition: TemplateManager.inc.php:22
TemplateManager\setupBackendPage
setupBackendPage()
Definition: TemplateManager.inc.php:102
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235