PHP code example of makinacorpus / drupal-udashboard

1. Go to this page and download the library: Download makinacorpus/drupal-udashboard library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

makinacorpus / drupal-udashboard example snippets


$conf['udashboard.context_pane_enable'] = true;

$conf['udashboard.context_pane_enable'] = true;

$conf['udashboard.breadcrumb_alter'] = true;

$conf['udashboard.disable_css'] = true;

$conf['udashboard.seven_force'] = true;

/**
 * Implements hook_menu_alter().
 */
function mymodule_menu_alter(&$items) {
  $items['admin/people']['page callback'] = 'sf_dic_page';
  $items['admin/people']['page arguments'] = [AccountController::class . '::accountList'];
}



use MakinaCorpus\Drupal\Dashboard\Controller\PageControllerTrait;
use MakinaCorpus\Drupal\Sf\Controller;
use Symfony\Component\HttpFoundation\Request;

/**
 * User admin
 */
class AccountController extends Controller
{
    /**
     * Main list
     *
     * @param \Symfony\Component\HttpFoundation\Request $request
     * @return string
     */
    public function accountListAction(Request $request)
    {
        /** @var \MakinaCorpus\Drupal\Dashboard\Page\DatasourceInterface $datasource */
        $datasource = $this->get('mymodule.datasource.account');

        return $this
          ->createPageBuilder()
          ->setDatasource($datasource)
          ->setAllowedTemplates(
            [
              'table' => 'module:mymodule:Page/page-account.html.twig',
            ]
          )
          ->showFilters()
          ->showSort()
          ->showSearch()
          ->setDefaultDisplay('table')
          ->searchAndRender($request)
        ;
    }
}



namespace MyModule\Page;

use MakinaCorpus\Drupal\Dashboard\Page\Account\DefaultAccountDatasource;
use MakinaCorpus\Drupal\Dashboard\Page\PageState;

/**
 * Account Datasource
 */
class AccountDatasource extends DefaultAccountDatasource
{
    /**
     * Add our own columns
     *
     * @inheritdoc
     */
    public function getSortFields($query)
    {
        $sortFields = parent::getSortFields($query);

        $sortFields['m.myfield_value'] = "my field";

        return $sortFields;
    }

    protected function applyFilters(\SelectQueryInterface $select, $query, PageState $pageState)
    {
        $select->leftJoin('field_data_myfield', 'm', 'm.entity_id = u.uid');
    }
}



namespace MyModule\Action;

use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\user\User;
use MakinaCorpus\Drupal\Dashboard\Action\Action;
use MakinaCorpus\Drupal\Dashboard\Action\ActionProviderInterface;

/**
 * Action provider for accounts
 */
class AccountActionProvider implements ActionProviderInterface
{
    use StringTranslationTrait;

    /**
     * @inheritdoc
     */
    public function getActions($item, $primaryOnly = false, array $groups = [])
    {
        $ret = [];

        $ret[] = new Action($this->t("Edit"), 'user/'.$item->id().'/edit', null,'pencil', 0, true, false);
        $ret[] = new Action($this->t("Delete"), 'user/'.$item->id().'/cancel', null, 'trash', 2, true, false);

        return $ret;
    }

    /**
     * {@inheritDoc}
     */
    public function supports($item)
    {
        return $item instanceof User;
    }
}