<?php
namespace fid_bbi\Module\Configuration;

$config = [
    'controllers' => [
        'factories' => [
            'fid_bbi\Controller\SearchController' => 'VuFind\Controller\AbstractBaseFactory',
        ],
        'aliases' => [
            'Search' => 'fid_bbi\Controller\SearchController',
            'search' => 'fid_bbi\Controller\SearchController',
        ],
    ],
    'vufind' => [
        'plugin_managers' => [
            'recorddriver' => [
                'factories' => [
                    'solrdefault' => 'finc\RecordDriver\Factory::getSolrDefault',
                    'solrmarc' => 'finc\RecordDriver\Factory::getSolrMarc',
                    'solrmarcfinc' => 'finc\RecordDriver\Factory::getSolrMarcFinc',
                    'solrmarcfincpda' => 'finc\RecordDriver\Factory::getSolrMarcFincPDA',
                    'solrmarcremote' => 'finc\RecordDriver\Factory::getSolrMarcRemote',
                    'solrmarcremotefinc' => 'finc\RecordDriver\Factory::getSolrMarcRemoteFinc',
                    'solrai' => 'finc\RecordDriver\Factory::getSolrAI',
                    'solris' => 'finc\RecordDriver\Factory::getSolrIS',
                    'solrlido' => 'finc\RecordDriver\Factory::getSolrLido',
                    'solrlidondl' => 'finc\RecordDriver\Factory::getSolrLidoNdl'
                ],
            ],
            'recordtab' => [
                'factories' => [
                    'hierarchytree' => 'finc\RecordTab\Factory::getHierarchyTree',
                ],
                'invokables' => [
                    'staffviewai' => 'finc\RecordTab\StaffViewAI',
                    'acquisitionpda' => 'finc\RecordTab\AcquisitionPDA',
                    'topics' => 'finc\RecordTab\Topics',
                    'descriptionlido' => 'finc\RecordTab\DescriptionLido'
                ],
            ],
        ],
        'recorddriver_tabs' => [
            'finc\RecordDriver\SolrDefault' => [
                'tabs' => [
                    'Description' => 'Description', 'Holdings' => 'HoldingsILS',
                    'TOC' => 'TOC', 'UserComments' => 'UserComments',
                    'Reviews' => 'Reviews', 'Excerpt' => 'Excerpt',
                    'Preview' => 'preview',
                    'HierarchyTree' => 'HierarchyTree', 'Map' => 'Map',
                    'Similar' => null,
                    'Details' => 'StaffViewArray',
                ],
                'defaultTab' => null,
            ],
            'fid_bbi\RecordDriver\SolrMarcFinc' => [
                'tabs' => [
                    'Description' => 'Description', 'Holdings' => 'HoldingsILS',
                    'TOC' => 'TOC', 'UserComments' => 'UserComments',
                    'Reviews' => 'Reviews', 'Excerpt' => 'Excerpt',
                    'Preview' => 'preview',
                    'HierarchyTree' => 'HierarchyTree', 'Map' => 'Map',
                    'Similar' => null,
                    'Details' => 'StaffViewMARC',
                ],
                'defaultTab' => null,
            ],
            'finc\RecordDriver\SolrAI' => [
                'tabs' => [
                    'Description' => 'Description', 'Holdings' => 'HoldingsILS',
                    'TOC' => 'TOC', 'UserComments' => 'UserComments',
                    'Reviews' => 'Reviews', 'Excerpt' => 'Excerpt',
                    'Preview' => 'preview',
                    'HierarchyTree' => 'HierarchyTree', 'Map' => 'Map',
                    'Similar' => null,
                    'Details' => 'StaffViewAI',
                ],
                'defaultTab' => null,
            ],
        ],
        'recorddriver_collection_tabs' => [
            'VuFind\RecordDriver\AbstractBase' => [
                'tabs' => [
                    'CollectionList' => 'CollectionList',
                    'HierarchyTree' => 'CollectionHierarchyTree',
                    'Details' => 'StaffViewArray',
                ],
                'defaultTab' => null,
            ],
        ],
    ],
];

$nonTabRecordActions = [
    'PDA', 'EmailHold', 'ReportErrors'
];


// Define record view routes -- route name => controller
// Define record view routes once again to add new nonTabRecordActions
$recordRoutes = [
    'record' => 'Record',
    'export' => 'Export',
    'resources' => 'Resources'
];


// Define static routes -- Controller/Action strings
$staticRoutes = [
    'MyResearch/Acquisition',
    'MyResearch/ResetPassword',
    'dds/Home',
    'dds/Email',
    'Record/EblLink',
    'Search/Sources'
];

$routeGenerator = new \VuFind\Route\RouteGenerator($nonTabRecordActions);
$routeGenerator->addRecordRoutes($config, $recordRoutes);
$routeGenerator->addStaticRoutes($config, $staticRoutes);

return $config;