diff --git a/236D2578F8DE6C8F95E6D227C3B4A21C.txt b/236D2578F8DE6C8F95E6D227C3B4A21C.txt new file mode 100644 index 000000000..df5bb4136 --- /dev/null +++ b/236D2578F8DE6C8F95E6D227C3B4A21C.txt @@ -0,0 +1,2 @@ +B02E62150D94D4149311592085CC0231645F70C26BF4CDD49383B04E24A3935B +comodoca.com diff --git a/plugins/janvince/smallcontactform/components/SmallContactForm.php b/plugins/janvince/smallcontactform/components/SmallContactForm.php index 94dc95071..9d20727d3 100644 --- a/plugins/janvince/smallcontactform/components/SmallContactForm.php +++ b/plugins/janvince/smallcontactform/components/SmallContactForm.php @@ -369,6 +369,10 @@ class SmallContactForm extends ComponentBase $validator->valid(); $this->validationMessages = $validator->messages(); $this->setPostData($validator->messages()); + + if(empty($this->post['gapja'] or $this->post['gapja'] !='anti-spam')){ + $errors[] ='Gapja must be filled with valid data'; + } if($validator->failed() or count($errors)){ diff --git a/plugins/rainlab/blog/components/RssFeed.php b/plugins/rainlab/blog/components/RssFeed.php index 295433b0e..e21f3a746 100644 --- a/plugins/rainlab/blog/components/RssFeed.php +++ b/plugins/rainlab/blog/components/RssFeed.php @@ -6,6 +6,7 @@ use Cms\Classes\Page; use Cms\Classes\ComponentBase; use RainLab\Blog\Models\Post as BlogPost; use RainLab\Blog\Models\Category as BlogCategory; +use Carbon\Carbon; class RssFeed extends ComponentBase { @@ -77,9 +78,19 @@ class RssFeed extends ComponentBase 'default' => 'blog/post', 'group' => 'rainlab.blog::lang.settings.group_links', ], + 'source' => [ + 'title' => 'Source', + 'description' => 'Source google, yandex', + 'type' => 'dropdown', + 'default' => 'google', + ] ]; } + public function getSourceOptions(){ + return ['google'=>'google','yandex'=>'yandex']; + } + public function getBlogPageOptions() { return Page::sortBy('baseFileName')->lists('baseFileName', 'baseFileName'); @@ -105,7 +116,7 @@ class RssFeed extends ComponentBase { $this->prepareVars(); - $xmlFeed = $this->renderPartial('@default'); + $xmlFeed = $this->renderPartial('@'.($this->property('source')=='yandex'?'yandex':'default')); return Response::make($xmlFeed, '200')->header('Content-Type', 'text/xml'); } @@ -116,9 +127,12 @@ class RssFeed extends ComponentBase $this->postPage = $this->page['postPage'] = $this->property('postPage'); $this->category = $this->page['category'] = $this->loadCategory(); $this->posts = $this->page['posts'] = $this->listPosts(); - +$this->page['language'] = \App::getLocale(); $this->page['link'] = $this->pageUrl($this->blogPage); $this->page['rssLink'] = $this->currentPageUrl(); + //Carbon::setLocale('en'); + + } protected function listPosts() diff --git a/plugins/rainlab/blog/components/rssfeed/default.htm b/plugins/rainlab/blog/components/rssfeed/default.htm index cfe46ded0..99b05c08d 100644 --- a/plugins/rainlab/blog/components/rssfeed/default.htm +++ b/plugins/rainlab/blog/components/rssfeed/default.htm @@ -1,21 +1 @@ - - - - {{ this.page.meta_title ?: this.page.title }} - {{ link }} - {{ this.page.meta_description ?: this.page.description }} - - {% for post in posts %} - - {{ post.title }} - {{ post.url }} - {{ post.url }} - {{ post.published_at.toRfc2822String }} - {{ post.summary|raw}} ]]> - - - - - {% endfor %} - - +{% partial __SELF__ ~ "::"~ __SELF__.property('source') %} \ No newline at end of file diff --git a/plugins/rainlab/blog/components/rssfeed/google.htm b/plugins/rainlab/blog/components/rssfeed/google.htm new file mode 100644 index 000000000..0f8ecfa18 --- /dev/null +++ b/plugins/rainlab/blog/components/rssfeed/google.htm @@ -0,0 +1,26 @@ + + + + {{ this.page.meta_title ?: this.page.title }}{% if category %}:{{category.name}}{% endif %} + {{ link }} + {{ this.page.meta_description ?: this.page.description }} + + {{language}} + {% for post in posts %} + + {{ post.title }} + {{ post.url }} + {{ post.url }} + {{ post.rss_date }} + {{ post.summary|raw}} ]]> + + + + + + {% endfor %} + + diff --git a/plugins/rainlab/blog/components/rssfeed/yandex.htm b/plugins/rainlab/blog/components/rssfeed/yandex.htm new file mode 100644 index 000000000..62bc90331 --- /dev/null +++ b/plugins/rainlab/blog/components/rssfeed/yandex.htm @@ -0,0 +1,26 @@ + + + + {{ this.page.meta_title ?: this.page.title }}{% if category %}:{{category.name}}{% endif %} + {{ link }} + {{ this.page.meta_description ?: this.page.description }} + + {{language}} + + {% for post in posts %} + + {{ post.title }} + {{ post.url }} + {{ post.url }} + {{post.rss_date}} + {{ post.summary|raw}} ]]> + + + + {% endfor %} + + \ No newline at end of file diff --git a/plugins/rainlab/blog/models/Post.php b/plugins/rainlab/blog/models/Post.php index 54e6bfb0c..6cb3f2a60 100644 --- a/plugins/rainlab/blog/models/Post.php +++ b/plugins/rainlab/blog/models/Post.php @@ -472,6 +472,12 @@ class Post extends Model else $this->attributes['id_en'] = $value; } + + public function getRssDateAttribute(){ + setlocale(LC_TIME, 'en'); + Carbon::setLocale('en'); + return Carbon::parse($this->published_at)->format('D, d M Y H:i:s O');//Sun, 29 Sep 2002 19:59:01 +0300 + } // // Next / Previous // diff --git a/plugins/rainlab/sitemap/routes.php b/plugins/rainlab/sitemap/routes.php index 984a91aec..237565ce9 100644 --- a/plugins/rainlab/sitemap/routes.php +++ b/plugins/rainlab/sitemap/routes.php @@ -5,7 +5,7 @@ use Cms\Classes\Controller; use RainLab\Sitemap\Models\Definition; use Illuminate\Database\Eloquent\ModelNotFoundException as ModelNotFound; -Route::get('sitemap.xml', function() +Route::get('{locale}/sitemap.xml', function() { $themeActive = Theme::getActiveTheme()->getDirName(); diff --git a/plugins/vdomah/blogviews/Plugin.php b/plugins/vdomah/blogviews/Plugin.php index 507942ff8..f3bd1b3c2 100644 --- a/plugins/vdomah/blogviews/Plugin.php +++ b/plugins/vdomah/blogviews/Plugin.php @@ -116,12 +116,12 @@ class Plugin extends PluginBase if ($obj->count() > 0) { $row = $obj->first(); if (!$views) { - $views = $row->views + rand(1,10);; + $views = $row->views + rand(1,5);; } $obj->update(['views' => $views]); } else { if (!$views) { - $views = rand(1,10); + $views = rand(1,5); } Db::table($this->table_views)->insert([ 'post_id' => $post->getKey(), diff --git a/plugins/vdomah/blogviews/components/Popular.php b/plugins/vdomah/blogviews/components/Popular.php index e891d4080..2f3798d53 100644 --- a/plugins/vdomah/blogviews/components/Popular.php +++ b/plugins/vdomah/blogviews/components/Popular.php @@ -111,6 +111,7 @@ class Popular extends ComponentBase } $query = $query->orderBy('views', 'DESC') + ->where('published_at','>=',\Carbon\Carbon::now()->addMonth(-1)) ->limit($this->postsLimit) ; diff --git a/storage/framework/classes.php b/storage/framework/classes.php index 16cd52127..5e19589f8 100644 --- a/storage/framework/classes.php +++ b/storage/framework/classes.php @@ -461,4 +461,5 @@ 'toughdeveloper\\imageresizer\\Plugin' => 'plugins/toughdeveloper/imageresizer/Plugin.php', 'ToughDeveloper\\ImageResizer\\Classes\\Image' => 'plugins/toughdeveloper/imageresizer/classes/Image.php', 'ToughDeveloper\\ImageResizer\\Models\\Settings' => 'plugins/toughdeveloper/imageresizer/models/Settings.php', + 'Rainlab\\Blog\\Models\\Category' => 'plugins/rainlab/blog/models/Category.php', ); \ No newline at end of file diff --git a/themes/modern2/assets/css/style.css b/themes/modern2/assets/css/style.css new file mode 100644 index 000000000..4839aef8b --- /dev/null +++ b/themes/modern2/assets/css/style.css @@ -0,0 +1,139 @@ +* { + padding: 0; + margin: 0; + box-sizing: border-box; +} + +html { + font-size: 62.5%; +} + +body { + font-family: 'Roboto', sans-serif; +} + +.right_top-up { + max-width: 42.3rem; + width: 100%; + +} + +.right_top-title { + display: flex; + justify-content: space-between; + align-items: center; +} + +.right_top-title-text { + width: 17rem; + font-size: 2rem; + font-weight: bold; +} + +.right_top-line { + border: 0.01rem solid rgba(0, 0, 0, 15%); + max-width: 33%; + width: 100%; + height: 0; +} + +.right_top-content-top { + display: flex; + justify-content: space-between; + margin-top: 3rem; +} + +.right_top-content-sphere { + text-align: center; + padding: 0.6rem 0; + color: #fff; + background: #FD4C24; + max-width: 11.7rem; + width: 100%; + font-size: 1.4rem; + font-weight: bold; + margin-bottom: 1rem; + border: none; +} + +.right-top-content-date { + display: flex; + align-items: center; + margin-bottom: 1rem; +} + +.date, +.time { + color: #a2a2a2; + font-size: 1.4rem; +} + +.date { + margin-right: 2.5rem; + position: relative; +} + + +.date::after { + display: inline-block; + width: 0.4rem; + height: 0.4rem; + content: ""; + border: none; + background: #a2a2a2; + transform: rotate(45deg) translateY(-50%); + position: absolute; + top: 50%; + right: -23%; +} + +.right_top-content-bottom { + margin-bottom: 1.5rem; +} +.right_top-content:last-child{ + margin-bottom: 4rem; +} +.right_top-content-bottom-text { + text-decoration: none; + color: #000; + font-size: 1.6rem; + font-weight: bold; +} + + +.hr-line { + width: 100%; + border: 0.01rem solid rgba(0, 0, 0, 15%); +} +/* .hr-line:last-child{ + display: none; */ +} +@media screen and (min-width: 1400px){ + .right_top-line{ + max-width: 47%; + } +} +/* ========================================== */ + + + + +.right_top-title-text-2 { + width: 9.4rem; +} + +.right_top-line-2 { + max-width: 40%; + width: 100%; +} + +.additional { + text-decoration: none; + color: rgba(0, 0, 0, 30%); + font-size: 1.4rem; + margin-left: 2.1rem; +} + +.right-top-content-date-2 { + margin-top: 5rem; +} \ No newline at end of file diff --git a/themes/modern2/content/static-pages/about.htm b/themes/modern2/content/static-pages/about.htm index ff7cd426f..65b8d4afa 100644 --- a/themes/modern2/content/static-pages/about.htm +++ b/themes/modern2/content/static-pages/about.htm @@ -6,7 +6,6 @@ is_hidden = 0 navigation_hidden = 0 meta_title = "О нас" meta_description = "russian" -meta_keywords = "ru ru ru" robot_index = "index" robot_follow = "nofollow" == @@ -16,7 +15,7 @@ robot_follow = "nofollow"

Сайт ORIENT.tm – новый игрок на информационном рынке Туркменистана.

-

Индивидуальное предприятие «Media Turkmen» – первое негосударственное информационное агентство в Туркменистане, зарегистрированное в официальных органах страны в апреле 2017 года. Оно включает в себя два подразделения, работающие под одним брендом: сайт ORIENT и продакшн-студию, которые создают новостной, фото, видео и рекламный контент.

+

Хозяйственное общество «Media Turkmen» – первое негосударственное информационное агентство в Туркменистане, зарегистрированное в официальных органах страны в апреле 2017 года. Оно включает в себя два подразделения, работающие под одним брендом: сайт ORIENT и продакшн-студию, которые создают новостной, фото, видео и рекламный контент.

Команда ORIENT – это, в основном, молодые журналисты, выпускники туркменских и зарубежных вузов. Информационное агентство «Media Turkmen» также привлекает к сотрудничеству опытных журналистов, которые проводят мастер-классы и семинары для повышения квалификации команды.

diff --git a/themes/modern2/layouts/blog.htm b/themes/modern2/layouts/blog.htm index bddc7f550..623979b97 100644 --- a/themes/modern2/layouts/blog.htm +++ b/themes/modern2/layouts/blog.htm @@ -1,5 +1,10 @@ [SeoBlogPost] post = "post" + +[adverts] +code = "samsung" +type = "slider" +random = 0 == @@ -8,6 +13,9 @@ post = "post" {% partial 'head' %} +
+ {% component 'adverts'%} +
{% partial 'header' %} diff --git a/themes/modern2/layouts/cms.htm b/themes/modern2/layouts/cms.htm index 87bb9cb19..e49d5182a 100644 --- a/themes/modern2/layouts/cms.htm +++ b/themes/modern2/layouts/cms.htm @@ -2,6 +2,11 @@ forceUrl = 1 [SeoCmsPage] + +[adverts] +code = "samsung" +type = "slider" +random = 0 == @@ -11,6 +16,9 @@ forceUrl = 1 {% partial 'head' %} +
+ {% component 'adverts'%} +
{% partial 'header' %} diff --git a/themes/modern2/layouts/contacts.htm b/themes/modern2/layouts/contacts.htm index 54b00f1aa..d03f80e73 100644 --- a/themes/modern2/layouts/contacts.htm +++ b/themes/modern2/layouts/contacts.htm @@ -6,6 +6,11 @@ forceUrl = 1 [staticPage] useContent = 1 default = 0 + +[adverts] +code = "samsung" +type = "slider" +random = 0 == @@ -14,6 +19,9 @@ default = 0 {% partial 'head' %} +
+ {% component 'adverts'%} +
{% partial 'header' %}
diff --git a/themes/modern2/layouts/master.htm b/themes/modern2/layouts/master.htm index eb27d0008..6f6b10959 100644 --- a/themes/modern2/layouts/master.htm +++ b/themes/modern2/layouts/master.htm @@ -7,6 +7,11 @@ forceUrl = 1 code = "media" type = "carousel" random = 0 + +[adverts] +code = "samsung" +type = "slider" +random = 0 == @@ -15,7 +20,9 @@ random = 0 {% partial 'head' %} - +
+ {% component 'adverts'%} +
{% partial 'header' %} {% page %}
diff --git a/themes/modern2/layouts/static.htm b/themes/modern2/layouts/static.htm index cca4aa773..b4b3fee76 100644 --- a/themes/modern2/layouts/static.htm +++ b/themes/modern2/layouts/static.htm @@ -6,6 +6,11 @@ forceUrl = 1 [staticPage] useContent = 1 default = 0 + +[adverts] +code = "samsung" +type = "slider" +random = 0 == @@ -14,6 +19,9 @@ default = 0 {% partial 'head' %} +
+ {% component 'adverts'%} +
{% partial 'header' %}
diff --git a/themes/modern2/meta/menus/top-menu.yaml b/themes/modern2/meta/menus/top-menu.yaml index 2a86e7adb..b226b3d03 100644 --- a/themes/modern2/meta/menus/top-menu.yaml +++ b/themes/modern2/meta/menus/top-menu.yaml @@ -18,8 +18,13 @@ items: isExternal: '0' - title: Разделы + nesting: null type: header + url: null code: '' + reference: null + cmsPage: null + replace: null viewBag: locale: en: @@ -30,18 +35,120 @@ items: isExternal: '0' items: - - title: 'New menu item' - nesting: null - type: all-blog-categories + title: События + nesting: 0 + type: blog-category url: null code: '' - reference: null + reference: '9' cmsPage: category - replace: 1 + replace: 0 viewBag: locale: en: - title: '' + title: Events + url: '' + isHidden: '0' + cssClass: '' + isExternal: '0' + - + title: Общество + nesting: 0 + type: blog-category + url: null + code: '' + reference: '12' + cmsPage: category + replace: 0 + viewBag: + locale: + en: + title: Social + url: '' + isHidden: '0' + cssClass: '' + isExternal: '0' + - + title: Экономика + nesting: 0 + type: blog-category + url: null + code: '' + reference: '5' + cmsPage: category + replace: 0 + viewBag: + locale: + en: + title: Economy + url: '' + isHidden: '0' + cssClass: '' + isExternal: '0' + - + title: Культура + nesting: 0 + type: blog-category + url: null + code: '' + reference: '8' + cmsPage: category + replace: 0 + viewBag: + locale: + en: + title: Culture + url: '' + isHidden: '0' + cssClass: '' + isExternal: '0' + - + title: Экомир + nesting: 0 + type: blog-category + url: null + code: '' + reference: '13' + cmsPage: category + replace: 0 + viewBag: + locale: + en: + title: Eco-world + url: '' + isHidden: '0' + cssClass: '' + isExternal: '0' + - + title: Спорт + nesting: 0 + type: blog-category + url: null + code: '' + reference: '10' + cmsPage: category + replace: 0 + viewBag: + locale: + en: + title: Sport + url: '' + isHidden: '0' + cssClass: '' + isExternal: '0' + - + title: Технологии + nesting: 0 + type: blog-category + url: null + code: '' + reference: '11' + cmsPage: category + replace: 0 + viewBag: + locale: + en: + title: Science url: '' isHidden: '0' cssClass: '' @@ -58,7 +165,7 @@ items: viewBag: locale: en: - title: Photo + title: Photos url: '' isHidden: '0' cssClass: '' @@ -80,6 +187,39 @@ items: isHidden: '0' cssClass: '' isExternal: '0' + - + title: Тендеры + nesting: 0 + type: blog-category + url: null + code: '' + reference: '795' + cmsPage: category + replace: 0 + viewBag: + locale: + en: + title: Tenders + url: '' + isHidden: '0' + cssClass: '' + isExternal: '0' + - + title: Объявления + nesting: 0 + type: blog-category + code: '' + reference: '796' + cmsPage: category + replace: 0 + viewBag: + locale: + en: + title: Announcements + url: '' + isHidden: '0' + cssClass: '' + isExternal: '0' - title: 'Static Pages(About and Contact)' nesting: null diff --git a/themes/modern2/pages/404.htm b/themes/modern2/pages/404.htm index b9bb579a8..3f4e4df2a 100644 --- a/themes/modern2/pages/404.htm +++ b/themes/modern2/pages/404.htm @@ -1,10 +1,13 @@ title = "Page not found (404)" url = "/404" layout = "cms" +is_hidden = 0 +robot_index = "index" +robot_follow = "follow" ==
-

Page not found

-

We're sorry, but the page you requested cannot be found.

+

{{'Page not found'|_}}

+

{{'We are sorry, but the page you requested cannot be found.'|_}}

-
+
\ No newline at end of file diff --git a/themes/modern2/pages/feed.htm b/themes/modern2/pages/feed.htm index a5065d5b4..5864092db 100644 --- a/themes/modern2/pages/feed.htm +++ b/themes/modern2/pages/feed.htm @@ -6,14 +6,15 @@ is_hidden = 0 robot_index = "index" robot_follow = "follow" +[viewBag] +localeMeta_title[en] = "Orient news rss feed" +localeMeta_description[en] = "ORIENT.TM is designed for prompt delivery of interesting and relevant news in a convenient format." + [blogRssFeed] categoryFilter = "{{ :category }}" sortOrder = "published_at desc" postsPerPage = 20 blogPage = "index" postPage = "post" - -[viewBag] -localeMeta_title[en] = "Orient news rss feed" -localeMeta_description[en] = "ORIENT.TM is designed for prompt delivery of interesting and relevant news in a convenient format." +source = "google" == \ No newline at end of file diff --git a/themes/modern2/pages/index.htm b/themes/modern2/pages/index.htm index cd1df8ca8..9c7d2f669 100644 --- a/themes/modern2/pages/index.htm +++ b/themes/modern2/pages/index.htm @@ -1,11 +1,11 @@ title = "Главная" url = "/" layout = "master" -meta_title = "Последние актуальные новости Туркменистана и мира" -meta_description = "Главные и свежие новости Туркменистана за сегодня. Последние актуальные политические, экономические новости в +meta_title = "Новости Туркменистана и мира" +meta_description = "Новости Туркменистана за сегодня. Последние актуальные политические, экономические новости в Туркменистане." is_hidden = 0 -seo_keywords = "Новости Туркменистана, последние новости Туркменистана, Туркменистан, Turkmenistan news, latest news of Turkmenistan, president of Turkmenistan, Türkmenistanyň sonky habarlary, täzelikler, syyýasy habarlar." +seo_keywords = "Новости Туркменистана, последние новости Туркменистана, Туркменистан, Turkmenistan news, latest news of Turkmenistan, president of Turkmenistan, Türkmenistanyň sonky habarlary, täzelikler, syýasy habarlar." robot_index = "index" robot_follow = "follow" @@ -138,6 +138,8 @@ random = 0
{% partial 'sidebar__cards' %} {% component 'right_top' css_class= 'main__sidebar-adv' %} + {% partial 'popular-posts' %} + {% partial 'tenders' %} {% partial 'tags' %} {% component 'right_middle' css_class = 'main__sidebar-adv' %} {% partial 'calendar' %} @@ -153,4 +155,4 @@ random = 0 ================================================ --> +================================================ --> \ No newline at end of file diff --git a/themes/modern2/pages/rss.htm b/themes/modern2/pages/rss.htm index 1aa34ae95..5f75b563e 100644 --- a/themes/modern2/pages/rss.htm +++ b/themes/modern2/pages/rss.htm @@ -1,11 +1,17 @@ title = "rss" url = "/rss/:category?" +meta_title = "Ориент Новости Туркменистана и мира" +meta_description = "Новости Туркменистана за сегодня. Последние актуальные политические, экономические новости в +Туркменистане." is_hidden = 0 +seo_keywords = "Turkmenistan, news" robot_index = "index" robot_follow = "follow" [viewBag] localeUrl[en] = "/rss/:category?" +localeMeta_title[en] = "Orient. All main news of Turkmenistan today." +localeMeta_description[en] = "The main and latest news of politics of Turkmenistan for today" [blogRssFeed] categoryFilter = "{{ :category }}" @@ -13,4 +19,5 @@ sortOrder = "published_at desc" postsPerPage = 20 blogPage = "index" postPage = "post" +source = "yandex" == \ No newline at end of file diff --git a/themes/modern2/partials/head.htm b/themes/modern2/partials/head.htm index fe338ebe6..739959bf9 100644 --- a/themes/modern2/partials/head.htm +++ b/themes/modern2/partials/head.htm @@ -8,10 +8,13 @@ {% styles %} + - \ No newline at end of file + + + \ No newline at end of file diff --git a/themes/modern2/partials/header.htm b/themes/modern2/partials/header.htm index 560055a4b..cf7408bac 100644 --- a/themes/modern2/partials/header.htm +++ b/themes/modern2/partials/header.htm @@ -2,15 +2,7 @@ [staticMenu] code = "top-menu" - -[adverts] -code = "samsung" -type = "single" -random = 0 == -
- {% component 'adverts'%} -
diff --git a/themes/modern2/partials/popular-posts.htm b/themes/modern2/partials/popular-posts.htm new file mode 100644 index 000000000..f2da7341c --- /dev/null +++ b/themes/modern2/partials/popular-posts.htm @@ -0,0 +1,32 @@ +description = "popular-posts" + +[popularPosts] +postsLimit = 10 +noPostsMessage = "No posts found" +postPage = "post" + +[viewBag] +== +
+
+

{{'Самое читаемое'|_}}

+
+
+ {% for post in posts %} +
+
+

{{ post.categories.first.name }}

+ +
+ +
+
+ {% endfor %} +
\ No newline at end of file diff --git a/themes/modern2/partials/tenders.htm b/themes/modern2/partials/tenders.htm new file mode 100644 index 000000000..2b37824e0 --- /dev/null +++ b/themes/modern2/partials/tenders.htm @@ -0,0 +1,37 @@ +[blogPosts] +pageNumber = "{{ :page }}" +categoryFilter = "tendery" +postsPerPage = 5 +noPostsMessage = "No posts found" +sortOrder = "published_at desc" +categoryPage = "category" +postPage = "post" + +[viewBag] +== +{% set posts = blogPosts.posts %} +
+
+

{{category.name}}

+
+ {{'page.more'|_}} +
+ + {% for post in posts %} +
+
+ +
+ +
+
+ {% endfor %} + +
\ No newline at end of file