/** * Добавляем обрамление div * @param ClientInterface $client * @param null $text * @param array $htmlOptions * @throws InvalidConfigException */ public function clientLink($client, $text = null, array $htmlOptions = []) { echo Html::beginTag('div', ['class' => $this->clientCssClass]); $text = Html::tag('span', $text, ['class' => 'auth-icon ' . $client->getName()]); if (!array_key_exists('class', $htmlOptions)) { $htmlOptions['class'] = 'auth-link ' . $client->getName(); } $viewOptions = $client->getViewOptions(); if (empty($viewOptions['widget'])) { if ($this->popupMode) { if (isset($viewOptions['popupWidth'])) { $htmlOptions['data-popup-width'] = $viewOptions['popupWidth']; } if (isset($viewOptions['popupHeight'])) { $htmlOptions['data-popup-height'] = $viewOptions['popupHeight']; } } echo Html::a($text, $this->createClientUrl($client), $htmlOptions) . '<br>'; } else { $widgetConfig = $viewOptions['widget']; if (!isset($widgetConfig['class'])) { throw new InvalidConfigException('Widget config "class" parameter is missing'); } /* @var $widgetClass Widget */ $widgetClass = $widgetConfig['class']; if (!is_subclass_of($widgetClass, AuthChoiceItem::className())) { throw new InvalidConfigException('Item widget class must be subclass of "' . AuthChoiceItem::className() . '"'); } unset($widgetConfig['class']); $widgetConfig['client'] = $client; $widgetConfig['authChoice'] = $this; echo $widgetClass::widget($widgetConfig); } echo Html::endTag('div'); }
/** * Меняем ссылки на добавление и удаление ключей * @param ClientInterface $client external auth client instance. * @param string $text link text, if not set - default value will be generated. * @param array $htmlOptions link HTML options. * @throws InvalidConfigException on wrong configuration. */ public function clientLink($client, $text = null, array $htmlOptions = []) { echo Html::beginTag('div', ['class' => 'col-xs-4']); $exists = UserOauthKey::findOne(['user_id' => Yii::$app->user->id, 'provider_id' => UserOauthKey::getAvailableClients()[$client->getId()]]); if ($exists) { $button = Html::a('<span class="glyphicon glyphicon-trash" aria-hidden="true"></span> <span class="hidden-xs">' . Yii::t('user', 'Удалить') . '</span>', Url::toRoute(['auth/unbind', 'id' => $client->getId()]), ['class' => 'btn btn-danger btn-sm', 'onclick' => '$(this).off("click"); return true;']); } else { $viewOptions = $client->getViewOptions(); if (isset($viewOptions['popupWidth'])) { $htmlOptions['data-popup-width'] = $viewOptions['popupWidth']; } if (isset($viewOptions['popupHeight'])) { $htmlOptions['data-popup-height'] = $viewOptions['popupHeight']; } $htmlOptions['class'] = 'btn btn-success btn-sm'; $button = Html::a('<span class="glyphicon glyphicon-plus" aria-hidden="true"></span> <span class="hidden-xs">' . Yii::t('user', 'Добавить') . '</span>', $this->createClientUrl($client), $htmlOptions); } echo Html::tag('span', $button, ['class' => 'auth-icon ' . $client->getName(), 'style' => 'padding-left: 40px; margin-bottom: 10px;']); echo Html::endTag('div'); }
/** * Outputs client auth link. * @param ClientInterface $client external auth client instance. * @param string $text link text, if not set - default value will be generated. * @param array $htmlOptions link HTML options. * @return string generated HTML. * @throws InvalidConfigException on wrong configuration. */ public function clientLink($client, $text = null, array $htmlOptions = []) { $viewOptions = $client->getViewOptions(); if (empty($viewOptions['widget'])) { if ($text === null) { $text = Html::tag('span', '', ['class' => 'auth-icon ' . $client->getName()]); } if (!isset($htmlOptions['class'])) { $htmlOptions['class'] = $client->getName(); } if (!isset($htmlOptions['title'])) { $htmlOptions['title'] = $client->getTitle(); } Html::addCssClass($htmlOptions, ['widget' => 'auth-link']); if ($this->popupMode) { if (isset($viewOptions['popupWidth'])) { $htmlOptions['data-popup-width'] = $viewOptions['popupWidth']; } if (isset($viewOptions['popupHeight'])) { $htmlOptions['data-popup-height'] = $viewOptions['popupHeight']; } } return Html::a($text, $this->createClientUrl($client), $htmlOptions); } $widgetConfig = $viewOptions['widget']; if (!isset($widgetConfig['class'])) { throw new InvalidConfigException('Widget config "class" parameter is missing'); } /* @var $widgetClass Widget */ $widgetClass = $widgetConfig['class']; if (!is_subclass_of($widgetClass, AuthChoiceItem::className())) { throw new InvalidConfigException('Item widget class must be subclass of "' . AuthChoiceItem::className() . '"'); } unset($widgetConfig['class']); $widgetConfig['client'] = $client; $widgetConfig['authChoice'] = $this; return $widgetClass::widget($widgetConfig); }
/** * Outputs client auth link. * @param ClientInterface $client external auth client instance. * @param string $text link text, if not set - default value will be generated. * @param array $htmlOptions link HTML options. */ public function clientLink($client, $text = null, array $htmlOptions = []) { if ($text === null) { $text = Html::tag('span', '', ['class' => 'auth-icon ' . $client->getName()]); $text .= Html::tag('span', $client->getTitle(), ['class' => 'auth-title']); } if (!array_key_exists('class', $htmlOptions)) { $htmlOptions['class'] = 'auth-link ' . $client->getName(); } if ($this->popupMode) { $viewOptions = $client->getViewOptions(); if (isset($viewOptions['popupWidth'])) { $htmlOptions['data-popup-width'] = $viewOptions['popupWidth']; } if (isset($viewOptions['popupHeight'])) { $htmlOptions['data-popup-height'] = $viewOptions['popupHeight']; } } echo Html::a($text, $this->createClientUrl($client), $htmlOptions); }