示例#1
0
    $blueprint->makeAction(['name' => 'getDetails', 'pattern' => '{vendor}/{package}', 'routeParametersCallback' => function ($action, array $options) {
        return [$options['vendor'], $options['package']];
    }]);
    $blueprint->makeToolbarItem(['action' => 'getDetails', 'label' => 'Show Details', 'icon' => 'info-circle']);
    $blueprint->makeAction(['name' => 'postRequire', 'pattern' => '{vendor}/{package}/require/{version?}', 'method' => 'POST', 'routeParametersCallback' => function ($action, array $options) {
        return [$options['vendor'], $options['package']];
    }]);
    $blueprint->makeToolbarItem(['action' => 'postRequire', 'label' => 'Require', 'icon' => 'plus', 'color' => 'green'])->addDynamicCallback(function ($item, $arguments) {
        $installer = Marketplace::getInstaller();
        $package = $arguments['vendor'] . '/' . $arguments['package'];
        if ($installer->isRequired($package)) {
            $item->color = 'red';
            $item->icon = 'trash-o';
            $item->label = 'Remove';
        }
    });
    $blueprint->makeAction(['name' => 'getInstalled', 'pattern' => 'installed']);
    $blueprint->makeToolbarItem(['action' => 'getInstalled', 'label' => 'Installed Packages', 'icon' => 'list', 'color' => 'white']);
    $blueprint->makeAction(['name' => 'postToggleProvider', 'pattern' => 'provider/toggle/{class}', 'method' => 'POST', 'routeParametersCallback' => function ($action, array $options) {
        return [$options['provider']];
    }]);
    $blueprint->makeToolbarItem(['action' => 'postToggleProvider', 'label' => 'Enable', 'icon' => 'check', 'color' => 'white', 'shouldRenderCallback' => function (ActionToolbarItem $item, array $arguments) {
        return $item->shouldRenderBasic($arguments) && !Marketplace::getProviderRepository()->isCore($arguments['provider']);
    }])->addDynamicCallback(function ($item, $arguments) {
        $repository = Marketplace::getProviderRepository();
        if ($repository->isEnabled($arguments['provider'])) {
            $item->icon = 'power-off';
            $item->label = 'Disable';
        }
    });
});