/** * @param bool $onlyActive load configurables only for active extensions * @return array */ public static function getConfigurables($onlyActive = false) { $installed = ComposerInstalledSet::get()->getInstalled(); $configurables = []; foreach ($installed as $package) { $packageConfigurablesFile = ArrayHelper::getValue($package, 'extra.configurables', null); if ($packageConfigurablesFile === null || true === $onlyActive && false === ExtensionsManager::module()->extensionIsActive($package['name'])) { continue; } $fn = Yii::getAlias('@vendor') . DIRECTORY_SEPARATOR . $package['name'] . DIRECTORY_SEPARATOR . $packageConfigurablesFile; if (file_exists($fn) && is_readable($fn)) { $packageConfigurables = (include $fn); array_walk($packageConfigurables, function (&$item) use($package) { $item['package'] = $package['name']; $item['sectionNameTranslated'] = ExtensionDataHelper::getLocalizedDataField($package, Extension::TYPE_YII, 'name'); }); $configurables = ArrayHelper::merge($configurables, $packageConfigurables); } } return $configurables; }
public function testGetLocalizedDataFieldNoExtra() { $name = ExtensionDataHelper::getLocalizedDataField(Json::decode(file_get_contents(__DIR__ . '/../../data/installed-no-extra.json')), Extension::TYPE_YII, 'name'); $this->assertEquals('devgroup/yii2-extensions-manager', $name); }
</div> </div> <div class="col-md-9"> <div class="extensions-controller__list-extensions box box-solid"> <div class="box-header clearfix"> <h3 class="box-title pull-left"> <?php echo Yii::t('extensions-manager', 'Installed extensions'); ?> </h3> </div> <?php echo GridView::widget(['id' => 'extensions-list', 'dataProvider' => $dataProvider, 'layout' => $gridTpl, 'tableOptions' => ['class' => 'table table-bordered table-hover table-responsive'], 'pager' => ['options' => ['class' => 'pagination pull-right']], 'columns' => [['label' => Yii::t('extensions-manager', 'Name'), 'attribute' => 'composer_name', 'content' => function ($data) use($nameBlockTpl, $composerSet) { $name = ExtensionDataHelper::getLocalizedDataField($composerSet->getInstalled($data["composer_name"]), Extension::TYPE_YII, 'name'); $description = ExtensionDataHelper::getLocalizedDataField($composerSet->getInstalled($data["composer_name"]), Extension::TYPE_YII, 'description'); $activateButton = 0 == $data['is_active'] ? Yii::$app->user->can('extensions-manager-activate-extension') ? Html::button(Yii::t('extensions-manager', 'Activate'), ['class' => 'btn btn-success btn-xs', 'data-action' => 'run-ext-task', 'data-ext-task' => ExtensionsManager::ACTIVATE_DEFERRED_TASK, 'data-package-name' => $data["composer_name"]]) : '' : (Yii::$app->user->can('extensions-manager-deactivate-extension') ? Html::button(Yii::t('extensions-manager', 'Deactivate'), ['class' => 'btn btn-warning btn-xs', 'data-action' => 'run-ext-task', 'data-ext-task' => ExtensionsManager::DEACTIVATE_DEFERRED_TASK, 'data-package-name' => $data["composer_name"]]) : ''); $removeButton = $data['is_core'] == 0 && Yii::$app->user->can('extensions-manager-uninstall-extension') ? Html::button(Yii::t('extensions-manager', 'Uninstall'), ['class' => 'btn btn-danger btn-xs', 'data-action' => 'run-ext-task', 'data-ext-task' => ExtensionsManager::UNINSTALL_DEFERRED_TASK, 'data-package-name' => $data["composer_name"]]) : ''; $buttons = $removeButton . Html::button(Yii::t('extensions-manager', 'Check updates'), ['class' => 'btn btn-warning btn-xs', 'data-action' => 'run-ext-task', 'data-ext-task' => ExtensionsManager::CHECK_UPDATES_DEFERRED_TASK, 'data-package-name' => $data["composer_name"]]) . Html::button(Yii::t('extensions-manager', 'Details') . ' ' . Icon::show('refresh fa-spin', ['style' => 'display: none;'], 'fa'), ['class' => 'btn btn-info btn-xs', 'data-package-name' => $data["composer_name"], 'data-action' => 'ext-info']) . $activateButton; return sprintf($nameBlockTpl, $name, $description, $buttons, str_replace(['\\', '/'], '', $data["composer_name"])); }], ['label' => Yii::t('extensions-manager', 'Version'), 'content' => function ($data) use($composerSet) { return ExtensionDataHelper::getLocalizedDataField($composerSet->getInstalled($data["composer_name"]), Extension::TYPE_YII, 'version'); }, 'options' => ['width' => '150px']], ['label' => Yii::t('extensions-manager', 'Type'), 'attribute' => 'composer_type', 'content' => function ($data) { $types = Extension::getTypes(); return isset($types[$data['composer_type']]) ? $types[$data['composer_type']] : Yii::t('extensions-manager', 'Undefined extension type'); }, 'options' => ['width' => '150px']], ['label' => Yii::t('extensions-manager', 'Active'), 'attribute' => 'is_active', 'content' => function ($data) { return Yii::$app->formatter->asBoolean($data["is_active"]); }, 'options' => ['width' => '150px']]]]); ?> </div> </div> </div>