Merge pull request #2394 from mike-esokia/PHRAS-1726_PORT_PHRAS-1559_1560

PORT PHRAS-1559 and PHRAS-1560 to 4.1
This commit is contained in:
Nicolas Maillat
2018-01-08 12:19:22 +01:00
committed by GitHub
5 changed files with 104 additions and 12 deletions

View File

@@ -36,6 +36,31 @@ class MoveCollectionController extends Controller
} else {
// is able to move:
$success = true;
/** @var DisplaySettingService $settings */
$settings = $this->app['settings'];
$userOrderSetting = $settings->getUserSetting($this->app->getAuthenticatedUser(), 'order_collection_by');
// a temporary array to sort the collections
$aName = array();
list($ukey, $uorder) = ["order", SORT_ASC]; // default ORDER_BY_ADMIN
switch ($userOrderSetting) {
case $settings::ORDER_ALPHA_ASC :
list($ukey, $uorder) = ["name", SORT_ASC];
break;
case $settings::ORDER_ALPHA_DESC :
list($ukey, $uorder) = ["name", SORT_DESC];
break;
}
foreach ($collections as $key => $row) {
if($ukey == "order") {
$aName[$key] = $row->get_ord();
}else {
$aName[$key] = $row->get_name();
}
}
// sort the collections
array_multisort($aName, $uorder, SORT_REGULAR, $collections);
$parameters = [
'records' => $records,
'message' => '',

View File

@@ -243,20 +243,45 @@ class UploadController extends Controller
{
$collections = [];
foreach ($acl->get_granted_base([\ACL::CANADDRECORD]) as $collection) {
$databox = $collection->get_databox();
if ( ! isset($collections[$databox->get_sbas_id()])) {
$collections[$databox->get_sbas_id()] = [
'databox' => $databox,
'databox_collections' => []
];
foreach ($acl->get_granted_sbas() as $databox) {
$sbasId = $databox->get_sbas_id();
foreach ($acl->get_granted_base([\ACL::CANADDRECORD], [$sbasId]) as $collection) {
$databox = $collection->get_databox();
if ( ! isset($collections[$sbasId])) {
$collections[$databox->get_sbas_id()] = [
'databox' => $databox,
'databox_collections' => []
];
}
$collections[$databox->get_sbas_id()]['databox_collections'][] = $collection;
/** @var DisplaySettingService $settings */
$settings = $this->app['settings'];
$userOrderSetting = $settings->getUserSetting($this->app->getAuthenticatedUser(), 'order_collection_by');
// a temporary array to sort the collections
$aName = [];
list($ukey, $uorder) = ["order", SORT_ASC]; // default ORDER_BY_ADMIN
switch ($userOrderSetting) {
case $settings::ORDER_ALPHA_ASC :
list($ukey, $uorder) = ["name", SORT_ASC];
break;
case $settings::ORDER_ALPHA_DESC :
list($ukey, $uorder) = ["name", SORT_DESC];
break;
}
foreach ($collections[$databox->get_sbas_id()]['databox_collections'] as $key => $row) {
if ($ukey == "order") {
$aName[$key] = $row->get_ord();
}
else {
$aName[$key] = $row->get_name();
}
}
// sort the collections
array_multisort($aName, $uorder, SORT_REGULAR, $collections[$databox->get_sbas_id()]['databox_collections']);
}
$collections[$databox->get_sbas_id()]['databox_collections'][] = $collection;
}
return $collections;
}
/**

View File

@@ -15,6 +15,10 @@ use Alchemy\Phrasea\Model\Entities\User;
class DisplaySettingService
{
const ORDER_ALPHA_ASC = "ORDER_ALPHA_ASC";
const ORDER_ALPHA_DESC = "ORDER_ALPHA_DESC";
const ORDER_BY_ADMIN = "ORDER_BY_ADMIN";
/**
* The default user settings.
*
@@ -34,6 +38,7 @@ class DisplaySettingService
'client_basket_status' => '1',
'css' => '000000',
'start_page_query' => '',
'order_collection_by' => self::ORDER_BY_ADMIN,
'start_page' => 'QUERY',
'rollover_thumbnail' => 'caption',
'technical_display' => '1',

View File

@@ -46,10 +46,34 @@ class Prod extends Helper
$selected = $saveSettings ? ((isset($searchSet['bases']) && isset($searchSet['bases'][$sbasId])) ? (in_array($coll->get_base_id(), $searchSet['bases'][$sbasId])) : true) : true;
$bases[$sbasId]['collections'][] = array(
'selected' => $selected,
'base_id' => $coll->get_base_id()
'base_id' => $coll->get_base_id(),
'name' => $coll->get_name(),
'order' => $coll->get_ord()
);
}
/** @var DisplaySettingService $settings */
$settings = $this->app['settings'];
$userOrderSetting = $settings->getUserSetting($this->app->getAuthenticatedUser(), 'order_collection_by');
// a temporary array to sort the collections
$aName = array();
list($ukey, $uorder) = ["order", SORT_ASC]; // default ORDER_BY_ADMIN
switch ($userOrderSetting) {
case $settings::ORDER_ALPHA_ASC :
list($ukey, $uorder) = ["name", SORT_ASC];
break;
case $settings::ORDER_ALPHA_DESC :
list($ukey, $uorder) = ["name", SORT_DESC];
break;
}
foreach ($bases[$sbasId]['collections'] as $key => $row) {
$aName[$key] = $row[$ukey];
}
// sort the collections
array_multisort($aName, $uorder, SORT_REGULAR, $bases[$sbasId]['collections']);
foreach ($databox->get_meta_structure() as $fieldMeta) {
if (!$fieldMeta->is_indexable()) {
continue;

View File

@@ -669,6 +669,19 @@
</form>
</div>
</div>
<div class="box">
<h1>{{ 'Collection order' | trans }}</h1>
<form class="form-inline">
{% set order_collection_by = app['settings'].getUserSetting(app.getAuthenticatedUser(), 'order_collection_by') %}
<label class="select" for="orderByName">
<select class="preferences-options-collection-order" name="orderByName">
<option {% if order_collection_by == constant('Alchemy\\Phrasea\\Core\\Configuration\\DisplaySettingService::ORDER_BY_ADMIN') %} selected="selected" {% endif %} value="{{ constant('Alchemy\\Phrasea\\Core\\Configuration\\DisplaySettingService::ORDER_BY_ADMIN') }}">{{ 'Defined by admin' | trans }}</option>
<option {% if order_collection_by == constant('Alchemy\\Phrasea\\Core\\Configuration\\DisplaySettingService::ORDER_ALPHA_ASC') %} selected="selected" {% endif %} value="{{ constant('Alchemy\\Phrasea\\Core\\Configuration\\DisplaySettingService::ORDER_ALPHA_ASC') }}">{{ 'Alphabetic asc' | trans }}</option>
<option {% if order_collection_by == constant('Alchemy\\Phrasea\\Core\\Configuration\\DisplaySettingService::ORDER_ALPHA_DESC') %} selected="selected" {% endif %} value="{{ constant('Alchemy\\Phrasea\\Core\\Configuration\\DisplaySettingService::ORDER_ALPHA_DESC') }}">{{ 'Alphabetic desc' | trans }}</option>
</select>
</label>
</form>
</div>
<div class="box">
<h1>{{ 'index::advance_search: facet' | trans }}</h1>
{% set facetFilter = app['settings'].getUserSetting(app.getAuthenticatedUser(), 'facet') %}