Open Monograph Press  3.3.0
CatalogListPanel.inc.php
1 <?php
15 
16 // Bring in orderby constants
17 import('lib.pkp.classes.submission.PKPSubmissionDAO');
18 
20 
22  public $apiUrl = '';
23 
25  public $count = 30;
26 
28  public $getParams = [];
29 
31  public $itemsMax = 0;
32 
36  public function getConfig() {
37  \AppLocale::requireComponents(LOCALE_COMPONENT_APP_SUBMISSION);
38 
39  $request = \Application::get()->getRequest();
40  $context = $request->getContext();
41 
42  list($catalogSortBy, $catalogSortDir) = explode('-', $context->getData('catalogSortOption'));
43  $catalogSortBy = empty($catalogSortBy) ? ORDERBY_DATE_PUBLISHED : $catalogSortBy;
44  $catalogSortDir = $catalogSortDir == SORT_DIRECTION_ASC ? 'ASC' : 'DESC';
45  $config['catalogSortBy'] = $catalogSortBy;
46  $config['catalogSortDir'] = $catalogSortDir;
47 
48  $this->getParams = array_merge(
49  $this->getParams,
50  [
51  'status' => STATUS_PUBLISHED,
52  'orderByFeatured' => true,
53  'orderBy' => $catalogSortBy,
54  'orderDirection' => $catalogSortDir,
55  ]
56  );
57 
58  $config = parent::getConfig();
59 
60  $config['apiUrl'] = $this->apiUrl;
61  $config['count'] = $this->count;
62  $config['getParams'] = $this->getParams;
63  $config['itemsMax'] = $this->itemsMax;
64 
65  $config['filters'] = [];
66 
67  if ($context) {
68  $config['contextId'] = $context->getId();
69 
70  $categories = [];
71  $categoryDao = \DAORegistry::getDAO('CategoryDAO');
72  $categoriesResult = $categoryDao->getByContextId($context->getId());
73  while (!$categoriesResult->eof()) {
74  $category = $categoriesResult->next();
75  list($categorySortBy, $categorySortDir) = explode('-', $category->getSortOption());
76  $categorySortDir = empty($categorySortDir) ? $catalogSortDir : $categorySortDir == SORT_DIRECTION_ASC ? 'ASC' : 'DESC';
77  $categories[] = [
78  'param' => 'categoryIds',
79  'value' => (int) $category->getId(),
80  'title' => $category->getLocalizedTitle(),
81  'sortBy' => $categorySortBy,
82  'sortDir' => $categorySortDir,
83  ];
84  }
85  if (count($categories)) {
86  $config['filters'][] = [
87  'heading' => __('catalog.categories'),
88  'filters' => $categories,
89  ];
90  }
91 
92  $series = [];
93  $seriesDao = \DAORegistry::getDAO('SeriesDAO');
94  $seriesResult = $seriesDao->getByPressId($context->getId());
95  while (!$seriesResult->eof()) {
96  $seriesObj = $seriesResult->next();
97  list($seriesSortBy, $seriesSortDir) = explode('-', $seriesObj->getSortOption());
98  $seriesSortDir = empty($seriesSortDir) ? $catalogSortDir : $seriesSortDir == SORT_DIRECTION_ASC ? 'ASC' : 'DESC';
99  $series[] = [
100  'param' => 'seriesIds',
101  'value' => (int) $seriesObj->getId(),
102  'title' => $seriesObj->getLocalizedTitle(),
103  'sortBy' => $seriesSortBy,
104  'sortDir' => $seriesSortDir,
105  ];
106  }
107  if (count($series)) {
108  $config['filters'][] = [
109  'heading' => __('catalog.manage.series'),
110  'filters' => $series,
111  ];
112  }
113  }
114 
115  // Attach a CSRF token for post requests
116  $config['csrfToken'] = $request->getSession()->getCSRFToken();
117 
118  // Get the form to add a new entry
119  $addEntryApiUrl = $request->getDispatcher()->url(
120  $request,
121  ROUTE_API,
122  $context->getPath(),
123  '_submissions/addToCatalog'
124  );
125  $searchSubmissionsApiUrl = $request->getDispatcher()->url(
126  $request,
127  ROUTE_API,
128  $context->getPath(),
129  'submissions'
130  );
131  $supportedFormLocales = $context->getSupportedFormLocales();
132  $localeNames = \AppLocale::getAllLocales();
133  $locales = array_map(function($localeKey) use ($localeNames) {
134  return ['key' => $localeKey, 'label' => $localeNames[$localeKey]];
135  }, $supportedFormLocales);
136  $addEntryForm = new \APP\components\forms\catalog\AddEntryForm($addEntryApiUrl, $searchSubmissionsApiUrl, $locales);
137  $config['addEntryForm'] = $addEntryForm->getConfig();
138 
139  $templateMgr = \TemplateManager::getManager($request);
140  $templateMgr->setConstants([
141  'ASSOC_TYPE_PRESS',
142  'ASSOC_TYPE_CATEGORY',
143  'ASSOC_TYPE_SERIES',
144  ]);
145 
146  $templateMgr->setLocaleKeys([
147  'submission.catalogEntry.new',
148  'submission.list.saveFeatureOrder',
149  'submission.list.orderFeatures',
150  'catalog.manage.categoryFeatured',
151  'catalog.manage.seriesFeatured',
152  'catalog.manage.featured',
153  'catalog.manage.feature.categoryNewRelease',
154  'catalog.manage.feature.seriesNewRelease',
155  'catalog.manage.feature.newRelease',
156  'submission.list.orderingFeatures',
157  'submission.list.orderingFeaturesSection',
158  'catalog.manage.isFeatured',
159  'catalog.manage.isNotFeatured',
160  'catalog.manage.isNewRelease',
161  'catalog.manage.isNotNewRelease',
162  'submission.list.viewEntry',
163  'submission.list.viewSubmission',
164  ]);
165 
166  return $config;
167  }
168 }
PKPLocale\getAllLocales
static & getAllLocales()
Definition: PKPLocale.inc.php:537
AppLocale\requireComponents
static requireComponents()
Definition: env1/MockAppLocale.inc.php:56
DAORegistry\getDAO
static & getDAO($name, $dbconn=null)
Definition: DAORegistry.inc.php:57
APP\components\listPanels\CatalogListPanel\$itemsMax
$itemsMax
Definition: CatalogListPanel.inc.php:43
APP\components\listPanels\CatalogListPanel\$apiUrl
$apiUrl
Definition: CatalogListPanel.inc.php:25
APP\components\listPanels
Definition: CatalogListPanel.inc.php:14
APP\components\listPanels\CatalogListPanel\$count
$count
Definition: CatalogListPanel.inc.php:31
APP\components\listPanels\CatalogListPanel
Definition: CatalogListPanel.inc.php:19
APP\components\listPanels\CatalogListPanel\$getParams
$getParams
Definition: CatalogListPanel.inc.php:37
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
APP\components\listPanels\CatalogListPanel\getConfig
getConfig()
Definition: CatalogListPanel.inc.php:48
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
PKP\components\listPanels\ListPanel
Definition: ListPanel.inc.php:17