Commit 498b013324ae08b4ddb127e2dfae324dd4616bb1
1 parent
9744f0d3
Добавлен виджет мультиязычности
Showing
9 changed files
with
146 additions
and
95 deletions
Show diff stats
common/modules/blog/controllers/AjaxController.php
| @@ -26,24 +26,24 @@ class AjaxController extends Controller | @@ -26,24 +26,24 @@ class AjaxController extends Controller | ||
| 26 | return true; | 26 | return true; |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | - public function actionCategoryForm($lang_id) | 29 | + public function actionCategoryForm($lang_id, $widget_id) |
| 30 | { | 30 | { |
| 31 | $model = Language::find()->where(['>=', 'language_id', 1])->andWhere(['active' => 1, 'language_id' => $lang_id])->one(); | 31 | $model = Language::find()->where(['>=', 'language_id', 1])->andWhere(['active' => 1, 'language_id' => $lang_id])->one(); |
| 32 | if(!$model) { | 32 | if(!$model) { |
| 33 | throw new NotFoundHttpException('Language not found'); | 33 | throw new NotFoundHttpException('Language not found'); |
| 34 | } | 34 | } |
| 35 | $category_lang = new ArticleCategoryLang(); | 35 | $category_lang = new ArticleCategoryLang(); |
| 36 | - return $this->renderAjax('_category_form', ['model' => $model, 'category_lang' => $category_lang]); | 36 | + return $this->renderAjax('_category_form', ['model' => $model, 'category_lang' => $category_lang, 'widget_id' => $widget_id]); |
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | - public function actionArticleForm($lang_id) | 39 | + public function actionArticleForm($lang_id, $widget_id) |
| 40 | { | 40 | { |
| 41 | $model = Language::find()->where(['>=', 'language_id', 1])->andWhere(['active' => 1, 'language_id' => $lang_id])->one(); | 41 | $model = Language::find()->where(['>=', 'language_id', 1])->andWhere(['active' => 1, 'language_id' => $lang_id])->one(); |
| 42 | if(!$model) { | 42 | if(!$model) { |
| 43 | throw new NotFoundHttpException('Language not found'); | 43 | throw new NotFoundHttpException('Language not found'); |
| 44 | } | 44 | } |
| 45 | $article_lang = new ArticleLang(); | 45 | $article_lang = new ArticleLang(); |
| 46 | - return $this->renderAjax('_article_form', ['model' => $model, 'article_lang' => $article_lang]); | 46 | + return $this->renderAjax('_article_form', ['model' => $model, 'article_lang' => $article_lang, 'widget_id' => $widget_id]); |
| 47 | } | 47 | } |
| 48 | 48 | ||
| 49 | public function actionRemoveImage() | 49 | public function actionRemoveImage() |
common/modules/blog/views/ajax/_article_form.php
| @@ -5,7 +5,7 @@ use mihaildev\ckeditor\CKEditor; | @@ -5,7 +5,7 @@ use mihaildev\ckeditor\CKEditor; | ||
| 5 | 5 | ||
| 6 | $form = \yii\bootstrap\ActiveForm::begin(); | 6 | $form = \yii\bootstrap\ActiveForm::begin(); |
| 7 | ?> | 7 | ?> |
| 8 | -<div role="" class="tab-pane active ajax-loaded" id="lang-<?=$model->language_id?>"> | 8 | +<div role="" class="tab-pane active ajax-loaded" id="<?=$widget_id?>-<?=$model->language_id?>"> |
| 9 | 9 | ||
| 10 | <?= (new ActiveField(['model' => $article_lang, 'attribute' => "[$model->language_id]lang_id"]))->label(false)->hiddenInput(['value' => $model->language_id]) ?> | 10 | <?= (new ActiveField(['model' => $article_lang, 'attribute' => "[$model->language_id]lang_id"]))->label(false)->hiddenInput(['value' => $model->language_id]) ?> |
| 11 | 11 |
common/modules/blog/views/ajax/_category_form.php
| @@ -5,7 +5,7 @@ use mihaildev\ckeditor\CKEditor; | @@ -5,7 +5,7 @@ use mihaildev\ckeditor\CKEditor; | ||
| 5 | 5 | ||
| 6 | $form = \yii\bootstrap\ActiveForm::begin(); | 6 | $form = \yii\bootstrap\ActiveForm::begin(); |
| 7 | ?> | 7 | ?> |
| 8 | -<div role="" class="tab-pane active ajax-loaded" id="lang-<?=$model->language_id?>"> | 8 | +<div role="" class="tab-pane active ajax-loaded" id="<?=$widget_id?>-<?=$model->language_id?>"> |
| 9 | 9 | ||
| 10 | <?= (new ActiveField(['model' => $category_lang, 'attribute' => "[$model->language_id]lang_id"]))->label(false)->hiddenInput(['value' => $model->language_id]) ?> | 10 | <?= (new ActiveField(['model' => $category_lang, 'attribute' => "[$model->language_id]lang_id"]))->label(false)->hiddenInput(['value' => $model->language_id]) ?> |
| 11 | 11 |
common/modules/blog/views/article/_form.php
| 1 | <?php | 1 | <?php |
| 2 | use common\modules\blog\models\ArticleCategory; | 2 | use common\modules\blog\models\ArticleCategory; |
| 3 | +use common\widgets\Multilang; | ||
| 3 | use yii\bootstrap\ActiveForm; | 4 | use yii\bootstrap\ActiveForm; |
| 4 | use common\modules\blog\models\Article; | 5 | use common\modules\blog\models\Article; |
| 5 | use yii\bootstrap\Html; | 6 | use yii\bootstrap\Html; |
| @@ -80,36 +81,15 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | @@ -80,36 +81,15 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | ||
| 80 | 81 | ||
| 81 | <hr> | 82 | <hr> |
| 82 | 83 | ||
| 83 | - <div class="dropdown pull-right"> | ||
| 84 | - <button class="btn btn-default dropdown-toggle" type="button" id="dropdownLang" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> | ||
| 85 | - <?= Yii::t('app', 'Add language') ?> | ||
| 86 | - <span class="caret"></span> | ||
| 87 | - </button> | ||
| 88 | - <ul class="dropdown-menu f32" id="lang-dropdown" aria-labelledby="dropdownMenu1"> | ||
| 89 | - <?php foreach($langs as $index => $lang) { | ||
| 90 | - if(in_array($index, array_keys($article_langs))) continue; | ||
| 91 | - ?> | ||
| 92 | - <li><a href="#lang-tabs" data-lang="<?=$lang->language_id?>"><span class="flag <?=$lang->country_code?>"></span></a></li> | ||
| 93 | - <?php } ?> | ||
| 94 | - </ul> | ||
| 95 | - </div> | ||
| 96 | - <ul class="nav nav-tabs f32" id="lang-tabs" role="tablist"> | 84 | + <?php |
| 85 | + $multilang = Multilang::begin(['ajaxpath' => Url::to(['/blog/ajax/article-form']), 'form' => $form, 'data_langs' => $article_langs]); | ||
| 86 | + ?> | ||
| 97 | <?php | 87 | <?php |
| 98 | $first = 1; | 88 | $first = 1; |
| 99 | foreach($article_langs as $index => $article_lang) { | 89 | foreach($article_langs as $index => $article_lang) { |
| 100 | ?> | 90 | ?> |
| 101 | - <li role="lang_inputs" class="<?php if($first) { echo 'active'; }?>" data-lang="<?=$index?>"><a href="#lang-<?=$index?>" aria-controls="lang-<?=$index?>" role="tab" data-toggle="tab"><span class="flag <?=$langs[$index]->country_code?>"></span></a></li> | ||
| 102 | - <?php | ||
| 103 | - $first = 0; | ||
| 104 | - } | ||
| 105 | - ?> | ||
| 106 | - </ul> | ||
| 107 | - <div class="tab-content lang-tab-content"> | ||
| 108 | - <?php | ||
| 109 | - $first = 1; | ||
| 110 | - foreach($article_langs as $index => $article_lang) { | ||
| 111 | - ?> | ||
| 112 | - <div role="" class="tab-pane <?php if($first) { echo 'active main-tab'; } ?>" id="lang-<?=$index?>"> | 91 | + <div role="" class="tab-pane <?php if($first) { echo 'active main-tab'; } ?>" id="<?=$multilang->id?>-<?=$index?>"> |
| 92 | + | ||
| 113 | <?= $form->field($article_langs[$index], "[$index]lang_id")->label(false)->hiddenInput(['value' => $index]) ?> | 93 | <?= $form->field($article_langs[$index], "[$index]lang_id")->label(false)->hiddenInput(['value' => $index]) ?> |
| 114 | 94 | ||
| 115 | <?= $form->field($article_langs[$index], "[$index]text")->widget(CKEditor::className(),['editorOptions' => [ 'preset' => 'full', 'inline' => false, ], ]); ?> | 95 | <?= $form->field($article_langs[$index], "[$index]text")->widget(CKEditor::className(),['editorOptions' => [ 'preset' => 'full', 'inline' => false, ], ]); ?> |
| @@ -135,7 +115,9 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | @@ -135,7 +115,9 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | ||
| 135 | $first = 0; | 115 | $first = 0; |
| 136 | } | 116 | } |
| 137 | ?> | 117 | ?> |
| 138 | - </div> | 118 | + <?php |
| 119 | + $multilang->end(); | ||
| 120 | + ?> | ||
| 139 | 121 | ||
| 140 | <div class="form-group"> | 122 | <div class="form-group"> |
| 141 | <?= Html::submitButton($article->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $article->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | 123 | <?= Html::submitButton($article->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $article->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> |
common/modules/blog/views/category/_form.php
| 1 | <?php | 1 | <?php |
| 2 | +use common\widgets\Multilang; | ||
| 2 | use yii\bootstrap\ActiveForm; | 3 | use yii\bootstrap\ActiveForm; |
| 3 | use common\modules\blog\models\ArticleCategory; | 4 | use common\modules\blog\models\ArticleCategory; |
| 4 | use yii\bootstrap\Html; | 5 | use yii\bootstrap\Html; |
| @@ -75,31 +76,9 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | @@ -75,31 +76,9 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | ||
| 75 | 76 | ||
| 76 | <hr> | 77 | <hr> |
| 77 | 78 | ||
| 78 | - <div class="dropdown pull-right"> | ||
| 79 | - <button class="btn btn-default dropdown-toggle" type="button" id="dropdownLang" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> | ||
| 80 | - <?= Yii::t('app', 'Add language') ?> | ||
| 81 | - <span class="caret"></span> | ||
| 82 | - </button> | ||
| 83 | - <ul class="dropdown-menu f32" id="lang-dropdown" aria-labelledby="dropdownMenu1"> | ||
| 84 | - <?php foreach($langs as $index => $lang) { | ||
| 85 | - if(in_array($index, array_keys($category_langs))) continue; | ||
| 86 | - ?> | ||
| 87 | - <li><a href="#lang-tabs" data-lang="<?=$lang->language_id?>"><span class="flag <?=$lang->country_code?>"></span></a></li> | ||
| 88 | - <?php } ?> | ||
| 89 | - </ul> | ||
| 90 | - </div> | ||
| 91 | - <ul class="nav nav-tabs f32" id="lang-tabs" role="tablist"> | ||
| 92 | - <?php | ||
| 93 | - $first = 1; | ||
| 94 | - foreach($category_langs as $index => $category_lang) { | ||
| 95 | - ?> | ||
| 96 | - <li role="lang_inputs" class="<?php if($first) { echo 'active'; }?>" data-lang="<?=$index?>"><a href="#lang-<?=$index?>" aria-controls="lang-<?=$index?>" role="tab" data-toggle="tab"><span class="flag <?=$langs[$index]->country_code?>"></span></a></li> | ||
| 97 | - <?php | ||
| 98 | - $first = 0; | ||
| 99 | - } | ||
| 100 | - ?> | ||
| 101 | - </ul> | ||
| 102 | - <div class="tab-content lang-tab-content"> | 79 | + <?php |
| 80 | + $multilang = Multilang::begin(['ajaxpath' => Url::to(['/blog/ajax/category-form']), 'form' => $form, 'data_langs' => $category_langs]) | ||
| 81 | + ?> | ||
| 103 | <?php | 82 | <?php |
| 104 | $first = 1; | 83 | $first = 1; |
| 105 | foreach($category_langs as $index => $category_lang) { | 84 | foreach($category_langs as $index => $category_lang) { |
| @@ -130,7 +109,9 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | @@ -130,7 +109,9 @@ $uploaddir = \Yii::getAlias('@saveImageDir'); | ||
| 130 | $first = 0; | 109 | $first = 0; |
| 131 | } | 110 | } |
| 132 | ?> | 111 | ?> |
| 133 | - </div> | 112 | + <?php |
| 113 | + $multilang->end(); | ||
| 114 | + ?> | ||
| 134 | 115 | ||
| 135 | <div class="form-group"> | 116 | <div class="form-group"> |
| 136 | <?= Html::submitButton($category->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $category->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | 117 | <?= Html::submitButton($category->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $category->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> |
| 1 | +<?php | ||
| 2 | +namespace common\widgets; | ||
| 3 | +use common\models\Language; | ||
| 4 | +use yii\base\InvalidParamException; | ||
| 5 | +use yii\base\Widget; | ||
| 6 | +use yii\bootstrap\ActiveForm; | ||
| 7 | + | ||
| 8 | +class Multilang extends Widget | ||
| 9 | +{ | ||
| 10 | + public $id; | ||
| 11 | + | ||
| 12 | + public $langs; | ||
| 13 | + | ||
| 14 | + public $data_langs = []; | ||
| 15 | + | ||
| 16 | + public $ajaxpath; | ||
| 17 | + | ||
| 18 | + public $form; | ||
| 19 | + | ||
| 20 | + public function init() | ||
| 21 | + { | ||
| 22 | + parent::init(); | ||
| 23 | + if(empty($this->id)) { | ||
| 24 | + $this->id = \Yii::$app->security->generateRandomString(8); | ||
| 25 | + } | ||
| 26 | + if(empty($this->langs)) { | ||
| 27 | + $this->langs = Language::getActiveLanguages(); | ||
| 28 | + } | ||
| 29 | + if(empty($this->ajaxpath)) { | ||
| 30 | + throw new InvalidParamException('ajaxpath must be set'); | ||
| 31 | + } | ||
| 32 | + if(empty($this->form)) { | ||
| 33 | + throw new InvalidParamException('form must be set'); | ||
| 34 | + } | ||
| 35 | + ob_start(); | ||
| 36 | + echo $this->render('multilang-begin', ['id' => $this->id, 'langs' => $this->langs, 'data_langs' => $this->data_langs, 'ajaxpath' => $this->ajaxpath, 'form' => $this->form]); | ||
| 37 | + } | ||
| 38 | + | ||
| 39 | + public function run() | ||
| 40 | + { | ||
| 41 | + echo $this->render('multilang-end', ['id' => $this->id, 'langs' => $this->langs, 'data_langs' => $this->data_langs, 'ajaxpath' => $this->ajaxpath, 'form' => $this->form]); | ||
| 42 | + $content = ob_get_clean(); | ||
| 43 | + return $content; | ||
| 44 | + } | ||
| 45 | +} | ||
| 0 | \ No newline at end of file | 46 | \ No newline at end of file |
| 1 | +<?php | ||
| 2 | +use yii\helpers\Url; | ||
| 3 | +?> | ||
| 4 | +<div class="dropdown pull-right"> | ||
| 5 | + <button class="btn btn-default dropdown-toggle" type="button" id="<?=$id?>Lang" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> | ||
| 6 | + <?= Yii::t('app', 'Add language') ?> | ||
| 7 | + <span class="caret"></span> | ||
| 8 | + </button> | ||
| 9 | + <ul class="dropdown-menu f32" id="lang-<?=$id?>" aria-labelledby="<?=$id?>Menu"> | ||
| 10 | + <?php foreach($langs as $index => $lang) { | ||
| 11 | + if(in_array($index, array_keys($data_langs))) continue; | ||
| 12 | + ?> | ||
| 13 | + <li><a href="#<?=$id?>" data-lang="<?=$lang->language_id?>"><span class="flag <?=$lang->country_code?>"></span></a></li> | ||
| 14 | + <?php } ?> | ||
| 15 | + </ul> | ||
| 16 | +</div> | ||
| 17 | +<ul class="nav nav-tabs f32" id="<?=$id?>-tabs" role="tablist"> | ||
| 18 | + <?php | ||
| 19 | + $first = 1; | ||
| 20 | + foreach($data_langs as $index => $data_lang) { | ||
| 21 | + ?> | ||
| 22 | + <li role="lang_inputs" class="<?php if($first) { echo 'active'; }?>" data-lang="<?=$index?>"><a href="#<?=$id?>-<?=$index?>" aria-controls="<?=$id?>-<?=$index?>" role="tab" data-toggle="tab"><span class="flag <?=$langs[$index]->country_code?>"></span></a></li> | ||
| 23 | + <?php | ||
| 24 | + $first = 0; | ||
| 25 | + } | ||
| 26 | + ?> | ||
| 27 | +</ul> | ||
| 28 | +<div class="tab-content lang-tab-content" id="tab-content-<?=$id?>"> | ||
| 29 | + |
frontend/web/js/option.js
| @@ -36,42 +36,6 @@ $(function() { | @@ -36,42 +36,6 @@ $(function() { | ||
| 36 | $(document).on('click', '.remove_lang', function() { | 36 | $(document).on('click', '.remove_lang', function() { |
| 37 | $(this).parents('.form-wrapper').remove(); | 37 | $(this).parents('.form-wrapper').remove(); |
| 38 | }); | 38 | }); |
| 39 | - if($('#lang-tabs li').length > 1) { | ||
| 40 | - $('#lang-tabs li').append('<span class="glyphicon glyphicon-remove-circle remove-lang"></span>') | ||
| 41 | - } | ||
| 42 | - $(document).on('click', '#lang-dropdown li a[data-lang]', function() { | ||
| 43 | - var lang = $(this).data('lang'); | ||
| 44 | - var flag = $(this).find('span').first().clone(); | ||
| 45 | - var el = $(this); | ||
| 46 | - $.get('/blog/ajax/category-form', { lang_id: lang }, function(data) { | ||
| 47 | - $('#lang-tabs li').removeClass('active'); | ||
| 48 | - $('#lang-tabs').append('<li role="lang_inputs" class="active" data-lang="'+lang+'"><a href="#lang-'+lang+'" aria-controls="lang-'+lang+'" role="tab" data-toggle="tab">'+$('<p>').append($(flag)).html()+'</a></li>'); | ||
| 49 | - $('.lang-tab-content .tab-pane.active').removeClass('active'); | ||
| 50 | - $('.lang-tab-content').append($(data).find('.ajax-loaded').first()); | ||
| 51 | - $('body').append($(data).filter('script')); | ||
| 52 | - $(el).parent().remove(); | ||
| 53 | - if(!$('#lang-dropdown li').length) { | ||
| 54 | - $('#dropdownLang').addClass('disabled'); | ||
| 55 | - } | ||
| 56 | - if($('#lang-tabs li').length > 1) { | ||
| 57 | - $('#lang-tabs li').append('<span class="glyphicon glyphicon-remove-circle remove-lang"></span>') | ||
| 58 | - } | ||
| 59 | - }); | ||
| 60 | - }); | ||
| 61 | - $(document).on('click', '.remove-lang', function() { | ||
| 62 | - var lang = $(this).parent().data('lang'); | ||
| 63 | - var flag = $(this).parent().find('span.flag').first().clone(); | ||
| 64 | - $('#lang-'+lang).remove(); | ||
| 65 | - $('#lang-dropdown').append('<li><a href="#lang-tabs" data-lang="'+lang+'">'+$('<p>').append($(flag)).html()+'</a></li>'); | ||
| 66 | - $('#dropdownLang').removeClass('disabled'); | ||
| 67 | - $(this).parent().remove(); | ||
| 68 | - if($('#lang-tabs li').length <= 1) { | ||
| 69 | - $('#lang-tabs li').find('.remove-lang').remove(); | ||
| 70 | - } | ||
| 71 | - if(!$('#lang-tabs>li.active').length) { | ||
| 72 | - $('#lang-tabs>li').first().find('a').tab('show'); | ||
| 73 | - } | ||
| 74 | - }); | ||
| 75 | $(document).on('change', '.image_inputs_field', function() { | 39 | $(document).on('change', '.image_inputs_field', function() { |
| 76 | readURL(this); | 40 | readURL(this); |
| 77 | }); | 41 | }); |
| @@ -89,4 +53,44 @@ $(function() { | @@ -89,4 +53,44 @@ $(function() { | ||
| 89 | } | 53 | } |
| 90 | return false; | 54 | return false; |
| 91 | }); | 55 | }); |
| 56 | + $.each($('.nav-tabs.f32'), function(key, value) { | ||
| 57 | + if($(value).find('li').length > 1) { | ||
| 58 | + $(value).find('li').append('<span class="glyphicon glyphicon-remove-circle remove-lang"></span>'); | ||
| 59 | + } | ||
| 60 | + }); | ||
| 61 | + $(document).on('click', '.dropdown-menu.f32 li a[data-lang]', function() { | ||
| 62 | + var lang = $(this).data('lang'); | ||
| 63 | + var flag = $(this).find('span').first().clone(); | ||
| 64 | + var el = $(this); | ||
| 65 | + var id = $(this).attr('href').substr(1); | ||
| 66 | + $.get(form[id], { lang_id: lang, widget_id: id }, function(data) { | ||
| 67 | + $('#'+id+'-tabs li').removeClass('active'); | ||
| 68 | + $('#'+id+'-tabs').append('<li role="lang_inputs" class="active" data-lang="'+lang+'"><a href="#'+id+'-'+lang+'" aria-controls="'+id+'-'+lang+'" role="tab" data-toggle="tab">'+$('<p>').append($(flag)).html()+'</a></li>'); | ||
| 69 | + $('#tab-content-'+id+' .tab-pane.active').removeClass('active'); | ||
| 70 | + $('#tab-content-'+id).append($(data).find('.ajax-loaded').first()); | ||
| 71 | + $('body').append($(data).filter('script')); | ||
| 72 | + $(el).parent().remove(); | ||
| 73 | + if(!$('#lang-'+id+' li').length) { | ||
| 74 | + $('#'+id+'Lang').addClass('disabled'); | ||
| 75 | + } | ||
| 76 | + if($('#'+id+'-tabs li').length > 1) { | ||
| 77 | + $('#'+id+'-tabs li').append('<span class="glyphicon glyphicon-remove-circle remove-lang"></span>') | ||
| 78 | + } | ||
| 79 | + }); | ||
| 80 | + }); | ||
| 81 | + $(document).on('click', '.remove-lang', function() { | ||
| 82 | + var lang = $(this).parent().data('lang'); | ||
| 83 | + var flag = $(this).parent().find('span.flag').first().clone(); | ||
| 84 | + var id = $(this).parent().find('a[aria-controls]').first().attr('aria-controls').substr(0,8); | ||
| 85 | + $('#'+id+'-'+lang).remove(); | ||
| 86 | + $('#lang-'+id).append('<li><a href="#'+id+'" data-lang="'+lang+'">'+$('<p>').append($(flag)).html()+'</a></li>'); | ||
| 87 | + $('#'+id+'Lang').removeClass('disabled'); | ||
| 88 | + $(this).parent().remove(); | ||
| 89 | + if($('#'+id+'-tabs li').length <= 1) { | ||
| 90 | + $('#'+id+'-tabs li').find('.remove-lang').remove(); | ||
| 91 | + } | ||
| 92 | + if(!$('#'+id+'-tabs>li.active').length) { | ||
| 93 | + $('#'+id+'-tabs>li').first().find('a').tab('show'); | ||
| 94 | + } | ||
| 95 | + }); | ||
| 92 | }); | 96 | }); |
| 93 | \ No newline at end of file | 97 | \ No newline at end of file |