From 0d09fee0d3bd2ed9cf849de9d0783c589c5d2c25 Mon Sep 17 00:00:00 2001 From: Denis Shakhov Date: Sat, 3 Sep 2016 09:39:46 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A8=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD=20Synio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blog/blocks/block.blog-photo.tpl | 2 +- .../skin/synio/components/block/block.tpl | 6 +- .../skin/synio/components/block/css/block.css | 12 +++ .../skin/synio/components/blog/add.tpl | 83 ++++++++++++++++++ .../blog/blocks/block.blog-actions.tpl | 60 +++++++++++++ .../blog/blocks/block.blogs-search.tpl | 67 ++++++++++++++ .../components/blog/blocks/block.blogs.tpl | 22 +++++ .../components/blog/blocks/blogs-top.tpl | 26 ++++++ .../skin/synio/components/blog/blog.tpl | 56 ++++++++++++ .../skin/synio/components/blog/component.json | 5 ++ .../synio/components/blog/css/blog-blocks.css | 28 ++++++ .../synio/components/blog/css/blog-list.css | 46 ++++++++++ .../skin/synio/components/blog/css/blog.css | 42 +++++++++ .../components/blog/invite/invite-item.tpl | 12 +++ .../components/blog/invite/invite-list.tpl | 9 ++ .../synio/components/blog/invite/invite.tpl | 15 ++++ .../components/blog/list/blog-list-item.tpl | 48 ++++++++++ .../synio/components/item/css/item-group.css | 18 ++++ .../skin/synio/components/item/css/item.css | 75 ++++++++++++++++ .../skin/synio/components/syn-icon/icon.css | 10 +++ .../synio/components/syn-icon/icons/lock.png | Bin 0 -> 1623 bytes .../synio/components/syn-icon/icons/user.png | Bin 0 -> 1319 bytes .../skin/synio/components/table/css/table.css | 80 +++++++++++++++++ .../components/user/css/user-list-small.css | 4 + .../synio/components/user/css/user-list.css | 12 --- .../components/user/list/user-list-item.tpl | 2 +- .../frontend/skin/synio/settings/i18n/ru.php | 3 +- 27 files changed, 727 insertions(+), 16 deletions(-) create mode 100644 application/frontend/skin/synio/components/blog/add.tpl create mode 100644 application/frontend/skin/synio/components/blog/blocks/block.blog-actions.tpl create mode 100644 application/frontend/skin/synio/components/blog/blocks/block.blogs-search.tpl create mode 100644 application/frontend/skin/synio/components/blog/blocks/block.blogs.tpl create mode 100644 application/frontend/skin/synio/components/blog/blocks/blogs-top.tpl create mode 100644 application/frontend/skin/synio/components/blog/blog.tpl create mode 100644 application/frontend/skin/synio/components/blog/component.json create mode 100644 application/frontend/skin/synio/components/blog/css/blog-blocks.css create mode 100644 application/frontend/skin/synio/components/blog/css/blog-list.css create mode 100644 application/frontend/skin/synio/components/blog/css/blog.css create mode 100644 application/frontend/skin/synio/components/blog/invite/invite-item.tpl create mode 100644 application/frontend/skin/synio/components/blog/invite/invite-list.tpl create mode 100644 application/frontend/skin/synio/components/blog/invite/invite.tpl create mode 100644 application/frontend/skin/synio/components/blog/list/blog-list-item.tpl create mode 100644 application/frontend/skin/synio/components/item/css/item-group.css create mode 100644 application/frontend/skin/synio/components/item/css/item.css create mode 100644 application/frontend/skin/synio/components/syn-icon/icons/lock.png create mode 100644 application/frontend/skin/synio/components/syn-icon/icons/user.png create mode 100644 application/frontend/skin/synio/components/table/css/table.css diff --git a/application/frontend/components/blog/blocks/block.blog-photo.tpl b/application/frontend/components/blog/blocks/block.blog-photo.tpl index 9d084a66..bcdf9127 100644 --- a/application/frontend/components/blog/blocks/block.blog-photo.tpl +++ b/application/frontend/components/blog/blocks/block.blog-photo.tpl @@ -14,5 +14,5 @@ assign = blockContent} {component 'block' - mods = 'nopadding transparent blog-actions' + mods = 'nopadding transparent blog-photo' content = $blockContent} \ No newline at end of file diff --git a/application/frontend/skin/synio/components/block/block.tpl b/application/frontend/skin/synio/components/block/block.tpl index e253bc0b..47a17568 100644 --- a/application/frontend/skin/synio/components/block/block.tpl +++ b/application/frontend/skin/synio/components/block/block.tpl @@ -25,7 +25,11 @@
{block 'block_header_inner'}

- {$title} + {if $titleUrl} + {$title} + {else} + {$title} + {/if}

{/block}
diff --git a/application/frontend/skin/synio/components/block/css/block.css b/application/frontend/skin/synio/components/block/css/block.css index 7f1df63e..21a0e1ea 100644 --- a/application/frontend/skin/synio/components/block/css/block.css +++ b/application/frontend/skin/synio/components/block/css/block.css @@ -32,6 +32,9 @@ max-height: 200px; position: relative; } +.ls-block h3 { + font-size: 16px; +} /* Шапка */ .ls-block-header { @@ -96,4 +99,13 @@ .ls-block--transparent { background-color: transparent; border-color: transparent; +} + +.ls-block .ls-blankslate { + margin-bottom: 0; + padding: 10px; + background: #eafff8; + color: #555; + border-radius: 5px; + font-size: 11px; } \ No newline at end of file diff --git a/application/frontend/skin/synio/components/blog/add.tpl b/application/frontend/skin/synio/components/blog/add.tpl new file mode 100644 index 00000000..69a3fe7c --- /dev/null +++ b/application/frontend/skin/synio/components/blog/add.tpl @@ -0,0 +1,83 @@ +{** + * Форма добавления/редактирования + * + * @param object $blog + *} + +{component_define_params params=[ 'blog' ]} + +
+ {hook run='form_add_blog_begin'} + + {* Название блога *} + {component 'field' template='text' + name = 'blog_title' + rules = [ 'required' => true, 'length' => "[2,200]" ] + note = $aLang.blog.add.fields.title.note + label = $aLang.blog.add.fields.title.label} + + {* URL блога *} + {component 'field' template='text' + name = 'blog_url' + rules = [ 'required' => true, 'regexp' => '^[\w- ]{2,50}$' ] + isDisabled = $_aRequest.blog_id && ! $oUserCurrent->isAdministrator() + note = $aLang.blog.add.fields.url.note + label = $aLang.blog.add.fields.url.label} + + {* Категория блога *} + {if Config::Get('module.blog.category_allow') && ($oUserCurrent->isAdministrator() or ! Config::Get('module.blog.category_only_admin'))} + {* Подключаем блок для управления категориями *} + {insert name='block' block='fieldCategory' params=[ 'target' => $blog, 'entity' => 'ModuleBlog_EntityBlog' ]} + {/if} + + {* Тип блога *} + {component 'field' template='select' + name = 'blog_type' + label = $aLang.blog.add.fields.type.label + note = $aLang.blog.add.fields.type.note_open + classes = 'js-blog-add-field-type' + inputClasses = 'ls-width-200 js-blog-add-type' + selectedValue = $_aRequest.blog_type + items = [ + [ 'value' => 'open', 'text' => $aLang.blog.add.fields.type.value_open ], + [ 'value' => 'close', 'text' => $aLang.blog.add.fields.type.value_close ] + ]} + + {* Описание блога *} + {component 'editor' + mediaTargetType = 'blog' + mediaTargetId = $_aRequest.blog_id + name = 'blog_description' + rules = [ 'required' => true, 'length' => '[10,3000]' ] + inputClasses = 'js-editor-default' + label = $aLang.blog.add.fields.description.label} + + {* Ограничение по рейтингу *} + {component 'field' template='text' + name = 'blog_limit_rating_topic' + rules = [ 'required' => true, 'type' => 'number' ] + value = '0' + inputClasses = 'ls-width-100' + note = $aLang.blog.add.fields.rating.note + label = $aLang.blog.add.fields.rating.label} + + {* Принудительный вывод топиков на главную (доступно только админам) *} + {if $oUserCurrent->isAdministrator()} + {component 'field' template='checkbox' + name = 'blog_skip_index' + note = $aLang.blog.add.fields.skip_index.note + label = $aLang.blog.add.fields.skip_index.label} + {/if} + + + {hook run='form_add_blog_end'} + + {* Скрытые поля *} + {component 'field' template='hidden.security-key'} + + {* Кнопки *} + {component 'button' + name = 'submit_blog_add' + text = {lang "{( $sEvent == 'add' ) ? 'common.create' : 'common.save'}"} + mods = 'primary'} +
\ No newline at end of file diff --git a/application/frontend/skin/synio/components/blog/blocks/block.blog-actions.tpl b/application/frontend/skin/synio/components/blog/blocks/block.blog-actions.tpl new file mode 100644 index 00000000..6a051536 --- /dev/null +++ b/application/frontend/skin/synio/components/blog/blocks/block.blog-actions.tpl @@ -0,0 +1,60 @@ +{** + * Действия + *} + +{capture 'block_content'} + {* Список экшенов *} + {$actions = []} + + {* Вступить/покинуть *} + {if $oUserCurrent && $oUserCurrent->getId() != $blog->getOwnerId() && $blog->getType() == 'open'} + {$actions[] = [ + 'classes' => 'js-blog-profile-join', + 'attributes' => [ 'data-blog-id' => $blog->getId() ], + 'text' => {($blog->getUserIsJoin()) ? {lang 'blog.actions.leave'} : {lang 'blog.actions.join'}} + ]} + {/if} + + {* Написать в блог *} + {if $oUserCurrent && ( ( $blog->getUserIsJoin() && $oUserCurrent->getRating() >= $blog->getLimitRatingTopic() ) || $blog->isAllowEdit() )} + {$topicType=$LS->Topic_GetTopicTypeFirst()} + {if $topicType} + {$actions[] = [ + 'url' => "{$topicType->getUrlForAdd()}?blog_id={$blog->getId()}", + 'text' => {lang 'blog.actions.write'} + ]} + {/if} + {/if} + + {* Подписаться через RSS *} + {$actions[] = [ + 'url' => "{router page='rss'}blog/{$blog->getUrl()}/", + 'text' => {lang 'blog.actions.rss'} + ]} + + {if $blog->isAllowEdit()} + {* Редактировать *} + {$actions[] = [ 'url' => "{router page='blog'}edit/{$blog->getId()}/", 'text' => $aLang.common.edit ]} + + {* Удалить *} + {if $oUserCurrent->isAdministrator()} + {$actions[] = [ + 'classes' => 'js-modal-toggle-default', + 'attributes' => [ 'data-lsmodaltoggle-modal' => 'modal-blog-delete' ], + 'text' => $aLang.common.remove + ]} + {else} + {$actions[] = [ + 'url' => "{router page='blog'}delete/{$blog->getId()}/?security_ls_key={$LIVESTREET_SECURITY_KEY}", + 'classes' => 'js-confirm-remove-default', + 'text' => $aLang.common.remove + ]} + {/if} + {/if} + + {component 'nav' hook='blog_actions' items=$actions mods='stacked' classes='profile-actions'} +{/capture} + +{component 'block' + mods = 'nopadding user-actions' + content = $smarty.capture.block_content} \ No newline at end of file diff --git a/application/frontend/skin/synio/components/blog/blocks/block.blogs-search.tpl b/application/frontend/skin/synio/components/blog/blocks/block.blogs-search.tpl new file mode 100644 index 00000000..5ece57b6 --- /dev/null +++ b/application/frontend/skin/synio/components/blog/blocks/block.blogs-search.tpl @@ -0,0 +1,67 @@ +{** + * Фильтр блогов + *} + +{capture 'block_content'} +

{lang 'blog.blocks.search.categories.title'}

+ + {* Категории *} + {if $aBlogCategories} + {$items = [[ + 'name' => 'all', + 'text' => {lang 'blog.blocks.search.categories.all'}, + 'url' => {router page='blogs'}, + 'attributes' => [ 'data-value' => '0' ], + 'count' => $iCountBlogsAll + ]]} + + {foreach $aBlogCategories as $category} + {$oCategory = $category.entity} + + {$items[] = [ + 'text' => ($oCategory->getTitle()), + 'url' => '#', + 'attributes' => [ 'data-value' => $oCategory->getId(), 'style' => "margin-left: {$category.level * 20}px;" ], + 'count' => $oCategory->getCountTargetOfDescendants() + ]} + {/foreach} + + {component 'nav' + name = 'blogs_categories' + classes = 'actionbar-item-link' + attributes = [ 'id' => 'js-search-ajax-blog-category' ] + activeItem = 'all' + mods = 'stacked pills' + items = $items} + {else} + {component 'blankslate' text=$aLang.blog.categories.empty} + {/if} + +
+ + {* Тип блога *} +

{lang 'blog.blocks.search.type.title'}

+ +
+ {component 'field' template='radio' inputClasses='js-search-ajax-blog-type' name='blog_search_type' value='' label='Любой' checked=true} + {component 'field' template='radio' inputClasses='js-search-ajax-blog-type' name='blog_search_type' value='open' label='Открытый'} + {component 'field' template='radio' inputClasses='js-search-ajax-blog-type' name='blog_search_type' value='close' label='Закрытый'} +
+ + {* Тип принадлежности блога *} + {if $oUserCurrent} +

{lang 'blog.blocks.search.relation.title'}

+ +
+ {component 'field' template='radio' inputClasses='js-search-ajax-blog-relation' name='blog_search_relation' value='all' label='Все' checked=true} + {component 'field' template='radio' inputClasses='js-search-ajax-blog-relation' name='blog_search_relation' value='my' label='Мои'} + {component 'field' template='radio' inputClasses='js-search-ajax-blog-relation' name='blog_search_relation' value='join' label='Читаю'} +
+ {/if} + +{/capture} + +{component 'block' + mods = 'blogs-search' + title = {lang 'blog.blocks.search.title'} + content = $smarty.capture.block_content} \ No newline at end of file diff --git a/application/frontend/skin/synio/components/blog/blocks/block.blogs.tpl b/application/frontend/skin/synio/components/blog/blocks/block.blogs.tpl new file mode 100644 index 00000000..91b58d21 --- /dev/null +++ b/application/frontend/skin/synio/components/blog/blocks/block.blogs.tpl @@ -0,0 +1,22 @@ +{** + * Блок со списком блогов + *} + +{capture 'block_footer'} + {lang 'synio.all_blogs'} +{/capture} + +{component 'block' + mods = 'blogs' + classes = 'blog-block-blogs js-block-default' + title = {lang 'blog.blocks.blogs.title'} + titleUrl = {router page='blogs'} + footer = $smarty.capture.block_footer + tabs = [ + 'classes' => 'js-tabs-block', + 'tabs' => [ + [ 'text' => {lang 'blog.blocks.blogs.nav.top'}, 'url' => "{router page='ajax'}blogs/top", 'list' => $sBlogsTop ], + [ 'text' => {lang 'blog.blocks.blogs.nav.joined'}, 'url' => "{router page='ajax'}blogs/join", 'is_enabled' => !! $oUserCurrent ], + [ 'text' => {lang 'blog.blocks.blogs.nav.self'}, 'url' => "{router page='ajax'}blogs/self", 'is_enabled' => !! $oUserCurrent ] + ] + ]} \ No newline at end of file diff --git a/application/frontend/skin/synio/components/blog/blocks/blogs-top.tpl b/application/frontend/skin/synio/components/blog/blocks/blogs-top.tpl new file mode 100644 index 00000000..1c7c73f8 --- /dev/null +++ b/application/frontend/skin/synio/components/blog/blocks/blogs-top.tpl @@ -0,0 +1,26 @@ +{** + * Блок со списоком блогов + * Список блогов + *} + +{$items = []} + +{foreach $aBlogs as $blog} + {capture 'item_content'} + {lang 'blog.users.readers_total'}: {$blog->getCountUser()} + {/capture} + + {$items[] = [ + 'title' => $blog->getTitle()|escape, + 'titleUrl' => $blog->getUrlFull(), + 'mods' => $blog->getUrlFull(), + 'content' => $smarty.capture.item_content, + 'image' => [ + 'path' => $blog->getAvatarPath(48), + 'url' => $blog->getUrlFull(), + 'alt' => $blog->getTitle()|escape + ] + ]} +{/foreach} + +{component 'item' template='group' items=$items} \ No newline at end of file diff --git a/application/frontend/skin/synio/components/blog/blog.tpl b/application/frontend/skin/synio/components/blog/blog.tpl new file mode 100644 index 00000000..6bda37d0 --- /dev/null +++ b/application/frontend/skin/synio/components/blog/blog.tpl @@ -0,0 +1,56 @@ +{** + * Блог + * + * @param object $blog Блог + * @param object $blogs Список блогов для переноса топиков (для модальника удаления) + * @param string $mods Модификаторы + * @param string $attributes Дополнительные атрибуты основного блока + * @param string $classes Дополнительные классы + *} + +{* Название компонента *} +{$component = 'blog'} +{component_define_params params=[ 'blog', 'blogs', 'mods', 'classes', 'attributes' ]} + +{* Подключаем модальное окно удаления блога если пользователь админ *} +{if $oUserCurrent && $oUserCurrent->isAdministrator()} + {component 'blog' template='modal.delete' blog=$blog blogs=$blogs} +{/if} + +{* Является ли пользователь администратором или управляющим блога *} +{$isBlogAdmin = $oUserCurrent && ($oUserCurrent->getId() == $blog->getOwnerId() || $oUserCurrent->isAdministrator() || $blog->getUserIsAdministrator())} + +{* Блог *} +
+
+ {* Заголовок *} + +
+ + {* Информация о блоге *} +
+ {* Описание *} +
+ {$blog->getDescription()} +
+ + {* Информация *} + {$info = [ + [ 'label' => $aLang.blog.date_created, 'content' => "{date_format date=$blog->getDateAdd() hours_back='12' minutes_back='60' now='60' day='day H:i' format='j F Y'}" ], + [ 'label' => $aLang.blog.topics_total, 'content' => $blog->getCountTopic() ], + [ 'label' => $aLang.blog.rating_limit, 'content' => $blog->getLimitRatingTopic() ] + ]} + + {if $blog->category->getCategory()} + {$info[] = [ 'label' => "{$aLang.blog.categories.category}:", 'content' => $blog->category->getCategory()->getTitle() ]} + {/if} + + {component 'info-list' list=$info} +
+
\ No newline at end of file diff --git a/application/frontend/skin/synio/components/blog/component.json b/application/frontend/skin/synio/components/blog/component.json new file mode 100644 index 00000000..37692855 --- /dev/null +++ b/application/frontend/skin/synio/components/blog/component.json @@ -0,0 +1,5 @@ +{ + "styles": { + "blog-list": "css/blog-list.css" + } +} \ No newline at end of file diff --git a/application/frontend/skin/synio/components/blog/css/blog-blocks.css b/application/frontend/skin/synio/components/blog/css/blog-blocks.css new file mode 100644 index 00000000..94785674 --- /dev/null +++ b/application/frontend/skin/synio/components/blog/css/blog-blocks.css @@ -0,0 +1,28 @@ +/** + * Блок с кнопкой "Создать блог" + */ +.ls-block--blog-add .ls-block-content { + padding: 20px; + text-align: center; +} + +/** + * Список блогов + */ +.ls-block.blog-block-blogs .ls-item { + padding: 10px 0; + font-size: 11px; +} +.ls-block.blog-block-blogs .ls-item-title { + font-size: 14px; + margin-bottom: 3px; +} +.ls-block.blog-block-blogs .ls-item-image { + width: 36px; + height: 36px; +} + +.ls-block.ls-block--blog-photo { + border: none; + padding-bottom: 0; +} \ No newline at end of file diff --git a/application/frontend/skin/synio/components/blog/css/blog-list.css b/application/frontend/skin/synio/components/blog/css/blog-list.css new file mode 100644 index 00000000..d0383cee --- /dev/null +++ b/application/frontend/skin/synio/components/blog/css/blog-list.css @@ -0,0 +1,46 @@ +.ls-item-group .blog-list-item { + padding-right: 70px; +} +.blog-list-item .ls-item-title { + margin-top: -3px; + line-height: 24px; + font-size: 16px; + margin-bottom: 5px; +} +.blog-list-item .ls-item-title a { + text-decoration: underline; + color: #275ec2; +} +.blog-list-item .ls-item-title a:hover { + color: #f00; +} +.blog-list-item .ls-item-title .syn-icon { + vertical-align: middle; + margin-right: 3px; + position: relative; + top: -1px; + cursor: help; +} + +.blog-list-item-category { + font-size: 11px; + margin-top: -5px; + margin-bottom: 7px; +} +.blog-list-item-category .fa { + color: #65aed2; +} + +.blog-list-item-users { + position: absolute; + top: 15px; + right: 15px; + font-size: 11px; + color: #5396b7; + cursor: help; +} +.blog-list-item-users .syn-icon { + vertical-align: middle; + position: relative; + top: -1px; +} \ No newline at end of file diff --git a/application/frontend/skin/synio/components/blog/css/blog.css b/application/frontend/skin/synio/components/blog/css/blog.css new file mode 100644 index 00000000..62b4a0df --- /dev/null +++ b/application/frontend/skin/synio/components/blog/css/blog.css @@ -0,0 +1,42 @@ +/** + * Блог + * + * @license GNU General Public License, version 2 + * @copyright 2013 OOO "ЛС-СОФТ" {@link http://livestreetcms.com} + * @author Denis Shakhov + */ + +.blog { + margin-bottom: 40px; + padding: 25px; + background: #f8fbfe; + border-radius: 5px; +} + +/* Хидер */ +.blog-header { + position: relative; + padding: 0 0 15px 0; +} + +.blog-title { + margin-bottom: 7px; +} +.blog-title .syn-icon { + position: relative; + top: -2px; + vertical-align: middle; + cursor: help; +} + +/* Контент */ +.blog-description { + margin-bottom: 30px; +} +.blog-content .ls-info-list-item-content, +.blog-content .ls-info-list-item-label-text { + background: #f8fbfe; +} +.blog-content .ls-info-list-item-label { + width: 200px; +} \ No newline at end of file diff --git a/application/frontend/skin/synio/components/blog/invite/invite-item.tpl b/application/frontend/skin/synio/components/blog/invite/invite-item.tpl new file mode 100644 index 00000000..03cf156c --- /dev/null +++ b/application/frontend/skin/synio/components/blog/invite/invite-item.tpl @@ -0,0 +1,12 @@ +{** + * Пользователь + *} + +{extends 'component@user-list-add.item'} + +{block 'user_list_add_item_actions' prepend} + {* Кнопка "Повторно отправить инвайт" *} +
  • + {component 'icon' icon='repeat'} +
  • +{/block} \ No newline at end of file diff --git a/application/frontend/skin/synio/components/blog/invite/invite-list.tpl b/application/frontend/skin/synio/components/blog/invite/invite-list.tpl new file mode 100644 index 00000000..f4c5f29b --- /dev/null +++ b/application/frontend/skin/synio/components/blog/invite/invite-list.tpl @@ -0,0 +1,9 @@ +{** + * Список пользователей + *} + +{extends 'component@user-list-add.list'} + +{block 'user_list_add_item'} + {component 'blog' template='invite-item' user=$user showActions=true} +{/block} \ No newline at end of file diff --git a/application/frontend/skin/synio/components/blog/invite/invite.tpl b/application/frontend/skin/synio/components/blog/invite/invite.tpl new file mode 100644 index 00000000..2d607a5a --- /dev/null +++ b/application/frontend/skin/synio/components/blog/invite/invite.tpl @@ -0,0 +1,15 @@ +{** + * Приглашение пользователей в закрытый блог + *} + +{extends 'component@user-list-add.user-list-add'} + +{block 'user_list_add_list'} + {component 'blog' template='invite-list' + hideableEmptyAlert = true + users = $users + showActions = true + show = !! $users + classes = "js-$component-users" + itemClasses = "js-$component-user"} +{/block} \ No newline at end of file diff --git a/application/frontend/skin/synio/components/blog/list/blog-list-item.tpl b/application/frontend/skin/synio/components/blog/list/blog-list-item.tpl new file mode 100644 index 00000000..b96272e2 --- /dev/null +++ b/application/frontend/skin/synio/components/blog/list/blog-list-item.tpl @@ -0,0 +1,48 @@ +{** + * Блог в списке блогов + * + * @param object $blog + *} + +{$component = 'blog-list-item'} +{component_define_params params=[ 'blog' ]} + +{* Заголовок *} +{capture 'title'} + {if $blog->getType() == 'close'} + {component 'syn-icon' icon='lock' attributes=[ title => {lang 'blog.private'} ]} + {/if} + + {$blog->getTitle()|escape} +{/capture} + +{* Описание *} +{capture 'content'} + {* Рейтинг *} +
    + {component 'syn-icon' icon='user'} {$blog->getCountUser()} +
    + + {$category = $blog->category->getCategory()} + + {if $category} +
    + {component 'icon' icon='folder'} + {$category->getTitle()} +
    + {/if} + +
    + {$blog->getDescription()|strip_tags|truncate:170} +
    +{/capture} + +{component 'item' + classes='blog-list-item' + title=$smarty.capture.title + content=$smarty.capture.content + image=[ + 'url' => $blog->getUrlFull(), + 'path' => $blog->getAvatarPath(64), + 'alt' => $blog->getTitle()|escape + ]} \ No newline at end of file diff --git a/application/frontend/skin/synio/components/item/css/item-group.css b/application/frontend/skin/synio/components/item/css/item-group.css new file mode 100644 index 00000000..3c35cdc0 --- /dev/null +++ b/application/frontend/skin/synio/components/item/css/item-group.css @@ -0,0 +1,18 @@ +/** + * Группированный список + * + * @license GNU General Public License, version 2 + * @copyright 2013 OOO "ЛС-СОФТ" {@link http://livestreetcms.com} + * @author Denis Shakhov + */ + +.ls-item-group { + +} +.ls-item-group .ls-item { + padding: 13px 15px 13px 0; + border-top: 1px solid #f1f3f5; +} +.ls-item-group .ls-item:last-child { + border-bottom: none; +} \ No newline at end of file diff --git a/application/frontend/skin/synio/components/item/css/item.css b/application/frontend/skin/synio/components/item/css/item.css new file mode 100644 index 00000000..8a355cd9 --- /dev/null +++ b/application/frontend/skin/synio/components/item/css/item.css @@ -0,0 +1,75 @@ +/** + * Item + * + * @license GNU General Public License, version 2 + * @copyright 2013 OOO "ЛС-СОФТ" {@link http://livestreetcms.com} + * @author Denis Shakhov + */ + + +.ls-item { + position: relative; + padding: 13px 15px 13px 0; + border: none; +} +.ls-item:hover { + background: #f5fdff; +} +.ls-item:hover .ls-info-list-item-content, +.ls-item:hover .ls-info-list-item-label-text { + background: #f8fbfe; +} + +/* */ +.ls-item > * { + vertical-align: top; + display: table-cell; + padding-right: 15px; +} +.ls-item > *:last-child { + padding-right: 0; +} + +/* Делаем так, чтобы блок body занимал максимальное */ +/* пространство по ширине */ +.ls-item-body { + width: 100%; +} + +.ls-item-image { + vertical-align: top; +} +.ls-item-title { + font-size: 24px; + line-height: 1.1em; + margin-bottom: 15px; +} +.ls-item-description { + font-size: 11px; + line-height: 16px; + margin-bottom: 10px; +} +.ls-item-description:last-child { + margin-bottom: 0; +} +.ls-item-actions { + position: absolute; + top: 15px; + right: 0; + width: 150px; + text-align: right; +} + +/** + * @modifier has-image + */ +.ls-item--has-image { + +} + +/** + * @modifier image-rounded + */ +.ls-item--image-rounded .ls-item-image { + border-radius: 50%; +} \ No newline at end of file diff --git a/application/frontend/skin/synio/components/syn-icon/icon.css b/application/frontend/skin/synio/components/syn-icon/icon.css index 98e78cc3..0a58c24a 100644 --- a/application/frontend/skin/synio/components/syn-icon/icon.css +++ b/application/frontend/skin/synio/components/syn-icon/icon.css @@ -42,4 +42,14 @@ } .syn-icon-trash:hover { background-image: url(icons/trash-hover.png); +} +.syn-icon-lock { + width: 21px; + height: 21px; + background-image: url(icons/lock.png); +} +.syn-icon-user { + width: 12px; + height: 12px; + background-image: url(icons/user.png); } \ No newline at end of file diff --git a/application/frontend/skin/synio/components/syn-icon/icons/lock.png b/application/frontend/skin/synio/components/syn-icon/icons/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..33568f8d4fa36004d7d16bab3e259a4f839896c1 GIT binary patch literal 1623 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw{1|(OCFP#RYBuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFl%InM3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWnQpS7v5|tgrJkXw zrICe+j)IYap_#sciN2wwuA#9N5SbV#K!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh zUb(Seeo;D5ucf8FfswwEkuFe$ZgFK^Nn(X=Ua>OF1ees}+T7#d8#0MoBXEYLU9GXQxBrqI_HztY@Xxa#7Ppj3o=u^L<)Qdy9y zACy|0Us{w5jJPyqkW~d%&PAz-CHX}m`T04pPz=b(FUc>?$S+WEb_Ru-sh+8VMtEjk zN`85Lyv=oo!a^ddz!ObD2UKumbz1#;lYKQ#}S=8J%d`$hlTc?=9p zM?GB}Ln>}9nQEUA>?m`*et-3QRW%nE7p6&$EYtZ|1r@z?Qw*B;bhk~uvWkOGYYN|^ zkg2pEV ztoS1ONy6cZ^@SbF#co~Wit@6*pvSc4&_k&Nxe5MCu5wEnuU)RY-EN!l+SM>Ez({wI zsoyf~mNQJ##51?7ee@tW*k$r*7xi_M3rhA!$rN3RdUNr{{L?W(HYQvQF-}-_gQOErki7;%)wLhq!MhB_o`0%`S{3jy}-v;Eplxw zy?f0ktN7hpl5jszRxGjXv1Gc9R&K1L2BVem{VW!q$7L&4Jl?U-Wu?xm_uaq#A9R$B z=H8}wv1gO?GJh6hhiZjOCs%B1URzn6WM;nl(&>Nw2clT>?kp%hBWqyT$@a@b^tq$3 zecbn{nO8M;%)k0LcUIz_{k&H*;}WLE&+(A9-k@%v6W7LMUuoWZ+-GXRVd=fkROh$c zzrJJr-ouK^cpGo%T(+O`cYSJn^p=JtT3ggEY+NPB?)g7_NmIR_{q)k(@6nfSTBA1# z+*O!jb}nOg+X3_4&)aWKIQOt`InSB!@B5#czwmgqam|X)&d-fASPo3`6+M1c_-do- zd6$gpDOJC&&f;s7T`#i7wqXlb{7S~Yr?1yV^X<*Kw8vOI|8|~W>Ph9DozJr+q5|)E zF0R|)us5hQ=XaRQjn7ZRJL}s|a~$Qdk?YFiogI8_71J&j_IFGXH@_B7YIx45%{<5O q{>u3bVGJ>)a%FW+kDjh)U}l&+T~T5g>&|3QQSa&M=d#Wzp$PyOf@oL( literal 0 HcmV?d00001 diff --git a/application/frontend/skin/synio/components/syn-icon/icons/user.png b/application/frontend/skin/synio/components/syn-icon/icons/user.png new file mode 100644 index 0000000000000000000000000000000000000000..6f0bfc655321a2e49863844e2c09205b61496034 GIT binary patch literal 1319 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%o>>?5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8Uo-h6WQb!1OB;3-k^33_xCjDfIQluQWFouDZA+C>7yetOgf{R2HP_ z2c;J0mlh=hBQ8xDWL1Hcb5UwyNq$jCetr%t6azByOY(~|@(UE4ok5{ys%NU85uTZs zl3!k|3D)K7Yvq|&T#}fVoa*Ufs{}MhFEca6%EH9a+|a_v%-qn-(a_M<%+lG+!otwZ z#nQms!r9Wo0H)U^Ke;qFHLnDwHwB^B9H(ATg2*iZ+U$~Alv$RV;#QQOs{r=6RVHq? znBX)Isy79RVB$U>5Npi9z&O>@ z#WAGfmP_DnFBd}rTVv06$>Q%$iFIWsFAQtyXuZYJB-XTDbfaMXfn$gCH*OH(mgb(l z^@H#hft=bYi!?Mg{n+*H?vazctC^kECeJ)+nV#|L2kTsUcJ_Rh?7J3%X*D`!nLPKc zo-YthR7lPEbGzlo!fQ6ieH6GnSK3Zb4*qlO{%_vZE+slgSNgQf3D7F}QkAz(=WXcv zE!jo3UwIcFsS$CVb8O?Gb16+%r#1b5^yXyJ`*q!U*O$3ov}SrEvVZ!GX)7ZqWn6j9 zrhS-;dEx`p1D_NYh8c&(*}OK&&sIA3_lXH_-U-gT497b}QvdO#de#G{z7Z1HD5nI-q`v3LJlQt6VtHY}muY9vy z&DqJ)y|(2R|9!FfOs>;HclOujS-9<%OjZ>A`fKsNwxm<`UR&;aO}7_g+}+XEwyZ2R gSns<0{NJJp3`f|S9*C+6{s0wSp00i_>zopr09Az8Qvd(} literal 0 HcmV?d00001 diff --git a/application/frontend/skin/synio/components/table/css/table.css b/application/frontend/skin/synio/components/table/css/table.css new file mode 100644 index 00000000..b18450b2 --- /dev/null +++ b/application/frontend/skin/synio/components/table/css/table.css @@ -0,0 +1,80 @@ +/** + * Таблицы + * + * @license GNU General Public License, version 2 + * @copyright 2013 OOO "ЛС-СОФТ" {@link http://livestreetcms.com} + * @author Denis Shakhov + */ + +caption { + text-align: left; +} +th { + text-align: left; +} + + +.ls-table { + width: 100%; + max-width: 100%; + margin-bottom: 15px; +} +.ls-table:last-child { + margin-bottom: 0; +} +.ls-table td, .ls-table th { + padding: 15px; + vertical-align: top; + line-height: 18px; + border-top: 1px solid #f1f3f5; +} +.ls-table td { + vertical-align: middle; +} +.ls-table tr:hover td { + background: #f5fdff; +} +.ls-table th { + vertical-align: bottom; + border-bottom: 1px solid #c3d4dc; + font-weight: normal; + padding: 10px; +} +.ls-table caption + thead th, +.ls-table colgroup + thead th, +.ls-table thead:first-child tr:first-child th, +.ls-table thead:first-child tr:first-child td { + border-top: 0; +} + +.ls-table tr.active td { + background: #F6F6FA; +} +.ls-table .ls-table-sort-asc:after { + content: "▲"; +} +.ls-table .ls-table-sort-desc:after { + content: "▼"; +} + +/** + * Condensed + */ +.ls-table--condensed td, +.ls-table--condensed th { + padding: 7px; +} + +/** + * Striped + */ +.ls-table--striped tbody tr:nth-child(odd) td { + background: #fafafa; +} + +/** + * Hover + */ +.ls-table--hover tbody tr:hover td { + background: #f5fdff; +} \ No newline at end of file diff --git a/application/frontend/skin/synio/components/user/css/user-list-small.css b/application/frontend/skin/synio/components/user/css/user-list-small.css index 1f592165..dba4a3d3 100644 --- a/application/frontend/skin/synio/components/user/css/user-list-small.css +++ b/application/frontend/skin/synio/components/user/css/user-list-small.css @@ -9,6 +9,10 @@ .user-list-small:last-child { margin-bottom: 0; } +.user-list-small-title { + font-size: 16px; + margin-bottom: 5px; +} .user-list-small-item { background: #f8fbfe; padding: 10px 55px 10px 10px; diff --git a/application/frontend/skin/synio/components/user/css/user-list.css b/application/frontend/skin/synio/components/user/css/user-list.css index 44911db0..8466dfef 100644 --- a/application/frontend/skin/synio/components/user/css/user-list.css +++ b/application/frontend/skin/synio/components/user/css/user-list.css @@ -1,15 +1,3 @@ -.user-list.ls-item-group { - border: none; -} -.user-list .ls-item { - padding: 13px 15px 13px 0; - border: none; - border-top: 1px solid #f1f3f5; -} -.user-list .ls-item:hover { - background: #f5fdff; -} - .user-list-item-username { margin-bottom: 0; } diff --git a/application/frontend/skin/synio/components/user/list/user-list-item.tpl b/application/frontend/skin/synio/components/user/list/user-list-item.tpl index a589648c..9fb818a0 100644 --- a/application/frontend/skin/synio/components/user/list/user-list-item.tpl +++ b/application/frontend/skin/synio/components/user/list/user-list-item.tpl @@ -34,7 +34,7 @@ {* Статус *}
    - {if $isOnline && $smarty.now - strtotime($session->getDateLast()) < 60*5} + {if $isOnline} {$aLang.user.status.online} {else} {$date = {date_format date=$session->getDateLast() hours_back="12" minutes_back="60" day_back="8" now="60*5" day="day H:i" format="j F в G:i"}|lower} diff --git a/application/frontend/skin/synio/settings/i18n/ru.php b/application/frontend/skin/synio/settings/i18n/ru.php index 0b7ac3a2..7bc0b51b 100644 --- a/application/frontend/skin/synio/settings/i18n/ru.php +++ b/application/frontend/skin/synio/settings/i18n/ru.php @@ -5,7 +5,8 @@ return [ 'guest' => 'Гость', 'site_pages' => 'Разделы', 'drafts' => '%%count%% черновик;%%count%% черновика;%%count%% черновиков', - 'user_about_empty' => 'Пока ничего не известно...' + 'user_about_empty' => 'Пока ничего не известно...', + 'all_blogs' => 'Все блоги' ], 'activity' => [ 'block_recent' => [