Ejemplo n.º 1
0
 public function renderConfigForm(ActiveForm $form)
 {
     echo $form->fieldSet(\Yii::t('skeeks/seo', 'Keywords'));
     echo $form->field($this, 'kladrApiToken');
     echo $form->field($this, 'kladrRequestLimit');
     echo $form->field($this, 'russiaId')->listBox(\yii\helpers\ArrayHelper::map(\skeeks\cms\kladr\models\KladrLocation::find()->where(['type' => \skeeks\cms\kladr\models\KladrLocation::TYPE_COUNTRY])->all(), 'id', 'name'), ['size' => 1]);
     echo $form->fieldSetEnd();
 }
Ejemplo n.º 2
0
/* @var $this yii\web\View */
/* @var $abc array */
?>

<? \yii\bootstrap\Alert::begin([
    'options' => [
      'class' => 'alert-info',
    ],
]); ?>
    Вы можете автоматически наполнить базу адресов на вашем сайте, при помоще сервиса http://kladr-api.ru/.
    Для начала обновления посетите раздел настроек.
<? \yii\bootstrap\Alert::end(); ?>


<?php 
echo \skeeks\cms\modules\admin\widgets\GridView::widget(["pjaxOptions" => ["id" => "sx-stat"], "dataProvider" => new \yii\data\ArrayDataProvider(['allModels' => [['type' => \skeeks\cms\kladr\models\KladrLocation::TYPE_COUNTRY, 'name' => 'Страна', 'count' => \skeeks\cms\kladr\models\KladrLocation::find()->where(['type' => \skeeks\cms\kladr\models\KladrLocation::TYPE_COUNTRY])->count()], ['type' => \skeeks\cms\kladr\models\KladrLocation::TYPE_REGION, 'name' => 'Регион', 'count' => \skeeks\cms\kladr\models\KladrLocation::find()->where(['type' => \skeeks\cms\kladr\models\KladrLocation::TYPE_REGION])->count()], ['type' => \skeeks\cms\kladr\models\KladrLocation::TYPE_DISTRICT, 'name' => 'Район', 'count' => \skeeks\cms\kladr\models\KladrLocation::find()->where(['type' => \skeeks\cms\kladr\models\KladrLocation::TYPE_DISTRICT])->count()], ['type' => \skeeks\cms\kladr\models\KladrLocation::TYPE_CITY, 'name' => 'Город', 'count' => \skeeks\cms\kladr\models\KladrLocation::find()->where(['type' => \skeeks\cms\kladr\models\KladrLocation::TYPE_CITY])->count()], ['type' => \skeeks\cms\kladr\models\KladrLocation::TYPE_VILLAGE, 'name' => 'Поселок', 'count' => \skeeks\cms\kladr\models\KladrLocation::find()->where(['type' => \skeeks\cms\kladr\models\KladrLocation::TYPE_VILLAGE])->count()], ['type' => \skeeks\cms\kladr\models\KladrLocation::TYPE_VILLAGE_SMALL, 'name' => 'Деревня', 'count' => \skeeks\cms\kladr\models\KladrLocation::find()->where(['type' => \skeeks\cms\kladr\models\KladrLocation::TYPE_VILLAGE_SMALL])->count()], ['type' => \skeeks\cms\kladr\models\KladrLocation::TYPE_STREET, 'name' => 'Улица', 'count' => \skeeks\cms\kladr\models\KladrLocation::find()->where(['type' => \skeeks\cms\kladr\models\KladrLocation::TYPE_STREET])->count()], ['type' => \skeeks\cms\kladr\models\KladrLocation::TYPE_BUILDING, 'name' => 'Строение', 'count' => \skeeks\cms\kladr\models\KladrLocation::find()->where(['type' => \skeeks\cms\kladr\models\KladrLocation::TYPE_BUILDING])->count()]]]), 'columns' => [['attribute' => 'name', 'label' => 'Тип местоположения'], ['attribute' => 'count', 'label' => 'Количество'], ['format' => 'raw', 'label' => '', 'attribute' => 'count', 'class' => \yii\grid\DataColumn::className(), 'value' => function ($data) {
    $name = \yii\helpers\ArrayHelper::getValue($data, 'name');
    $type = \yii\helpers\ArrayHelper::getValue($data, 'type');
    if ($type == \skeeks\cms\kladr\models\KladrLocation::TYPE_COUNTRY) {
        return "";
    }
    return \yii\helpers\Html::a('Запустить импорт', '#', ['class' => 'btn-primary btn btn-xs', 'onclick' => new \yii\web\JsExpression(<<<JS
                    sx.KladrImport.execute('{$type}', '{$name}');
JS
)]);
}]]]);
?>


<div class="sx-progress-global" id="sx-progress-global" style="display: none;">
    <span style="vertical-align:middle;"><h3>Общий процесс (Выполнено <span class="sx-executing-ptc">0</span>%)</h3></span>
Ejemplo n.º 3
0
$form = ActiveForm::begin();
?>

<?php 
echo $form->fieldSet('Основное');
?>

    <?php 
echo $form->field($model, 'name')->textInput(['maxlength' => 255]);
?>

    <?php 
echo $form->fieldSelect($model, 'type', \skeeks\cms\kladr\models\KladrLocation::possibleTypes());
?>
    <?php 
echo $form->fieldSelect($model, 'parent_id', \yii\helpers\ArrayHelper::map(\skeeks\cms\kladr\models\KladrLocation::find()->all(), 'id', 'name'));
?>

    <?php 
echo $form->field($model, 'name_short')->textInput(['maxlength' => 255]);
?>
    <?php 
echo $form->field($model, 'name_full')->textInput(['maxlength' => 255]);
?>

<?php 
echo $form->fieldSetEnd();
?>

<?php 
echo $form->buttonsCreateOrUpdate($model);
 /**
  * Импорт районов
  *
  * @return array|RequestResponse
  */
 public function actionImportDistricts()
 {
     $rr = new RequestResponse();
     if ($rr->isRequestAjaxPost()) {
         $rr->data = ['yes' => 0, 'no' => 0, 'offset' => \Yii::$app->request->post('offset', 0), 'total' => 0, 'nextOffset' => 0];
         if (!\Yii::$app->kladr->isReady() || !\Yii::$app->request->post('char')) {
             $rr->success = false;
             $rr->message = "Некорректные настройки";
             return $rr;
         }
         /**
          * @var $region KladrLocation
          */
         $regions = KladrLocation::find()->where(['type' => KladrLocation::TYPE_REGION])->all();
         foreach ($regions as $region) {
             if ($region->kladr_api_id) {
                 $query = \Yii::$app->kladr->createApiQuery();
                 $query->ContentName = \Yii::$app->request->post('char');
                 $query->ContentType = \skeeks\cms\kladr\libs\ObjectType::District;
                 $query->ParentId = $region->kladr_api_id;
                 $query->ParentType = \skeeks\cms\kladr\libs\ObjectType::Region;
                 $query->offset = \Yii::$app->request->post('offset', 0);
                 $arResult = \Yii::$app->kladr->createApi()->QueryToArray($query);
                 $rr->data['total'] = $rr->data['total'] + count($arResult);
                 foreach ((array) $arResult as $locationData) {
                     if ($this->_writeLocation($locationData, $region, KladrLocation::TYPE_DISTRICT)) {
                         $rr->data['yes'] = $rr->data['yes'] + 1;
                     } else {
                         $rr->data['no'] = $rr->data['no'] + 1;
                     }
                 }
             }
         }
         $rr->success = true;
         $rr->message = "Импорт завершен";
         return $rr;
     }
     return (array) $rr;
 }