Details View Cabinet

Hi,
is it possible to configure Mayan to view files and files from sub levels in Detail Cabinet view?
Example:
MainFolder
-Sub1

If I click on MainFolder I only get to see files from MainFolder,
But I also like to see files from Sub1 folder.
Is this possible?
Many thanks,
Erik

Hi,

there is no setting or configuration for something like that. What would be a use case for such a feature?

Hi Roberto,
thanks for your quick response :slight_smile:
My company is used to find files they need through clicking down the folderstructure in the explorer.
I want to replicate this with the “Cabinet” view.
But now I can only see files from the cabinet I click on.
Ideally I can see also the files from the sub-levels from the cabinet I click on.
Regards,
Erik

Hi,

In order to support that the cabinet tree would need to be displayed in the sidebar. This would allow an experience similar to a file browser. However as others have found out, this breaks the user interface and is not scalable to more than a few cabinet levels.

If the users that are going to access the cabinet documents don’t require all the features of the user interface, you can use cabinet mirroring, introduced in version 4.3.

https://docs.mayan-edms.com/releases/4.3.html#cabinets

With cabinet mirroring, the cabinet structure is exported as a read only virtual filesystem which you can then mount to your users. From their point of view it a regular network drive and browseable using the OS file explorer.

I achieved this using API calls which I called from PHP code

The MayanApiService contains the CURL code to connect to Mayan.
The buildTree() function creates a nested tree from a flat list of cabinets to reflect the hierarchy.
'‘All Documents’ is a forced link - not a cabinet, I am just making it look like it came from Mayan

Hope this helps someone

    public function getNavItems(Request $request, Response $response, $args)
    {

        $connection =  new MayanApiService();
        $connection->setToken($_SESSION['auth_token']);
        $cabinet_list = $connection->getCabinetList();

        $all_documents_entry = [
            'full_path' => 'All Documents',
            'label' => 'All Documents',
            'name' => 'All Documents',
            'link' => $this->settings['site'] .  "/worxs/doclist" . '?id=' . '0',
            'children' => [],
            'parent_id' => null,
            'id' => '0'
        ];


        foreach ($cabinet_list as $key => $cabinet_item) {

            $cabinet_list[$key]['name'] = $cabinet_item['full_path'];
            $cabinet_list[$key]['link'] = $this->settings['site'] . "/worxs/doclist" . '?id=' . $cabinet_item['id'];

        }

        $nav_items = $this->buildTree($cabinet_list);
        $nav_items = [$all_documents_entry, ...$nav_items];

        $response->getBody()->write(json_encode($nav_items));
        return $response->withHeader('Content-Type', 'application/json');

    }

To get the cabinet list

public function getCabinetList()
{

    $url =  'http://mayaninstance.com:8884/api/v4/cabinets/';

    $connection =  $this;

    $connection = $connection->setURL($url);

    $connection = $connection->setoptions([
        CURLOPT_CUSTOMREQUEST => 'GET'
    ]);

    $connection = $connection->setHeaders([
        'Accept: application/json',
        'Authorization: Token ' . $this->getToken(),
    ]);

    $cabinet_response = $connection->getRequest();
    $cabinet_response = json_decode($cabinet_response, true);
    $result_set = $cabinet_response['results'];

// $result_set = json_decode($result_set, true);

    return $result_set;

}