AntonLV 7 лет назад
Родитель
Сommit
4e72ca1755

+ 132 - 116
modules/boonex/russian/data/langs/bx_timeline/ru.xml

@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources name="ru" flag="ru" title="Russian">
-
     <string name="_bx_timeline"><![CDATA[Лента]]></string>
     <string name="_bx_timeline_cmts"><![CDATA[Лента - Комментарии]]></string>
     <string name="_bx_timeline_reactions"><![CDATA[Лента - Реакции]]></string>
@@ -29,104 +28,121 @@
     <string name="_bx_timeline_option_enable_cache_list"><![CDATA[Включить кэш хроники]]></string>
     <string name="_bx_timeline_option_enable_editor_toolbar"><![CDATA[Включить панель инструментов в форме создания сообщения]]></string>
 
-	<string name="_bx_timeline_form_post"><![CDATA[Сообщение]]></string>
-	<string name="_bx_timeline_form_post_display_add"><![CDATA[Написать сообщение]]></string>
-	<string name="_bx_timeline_form_post_display_add_public"><![CDATA[Написать публичное сообщение]]></string>
-	<string name="_bx_timeline_form_post_display_add_profile"><![CDATA[Написать сообщение в профиль]]></string>
-	<string name="_bx_timeline_form_post_display_edit"><![CDATA[Изменить сообщение]]></string>
-	<string name="_bx_timeline_form_post_input_sys_owner_id"><![CDATA[ID владельца]]></string>
-	<string name="_bx_timeline_form_post_input_owner_id_own"><![CDATA[Собственный профиль]]></string>
-        <string name="_bx_timeline_form_post_input_owner_id_following_group"><![CDATA[{0}]]></string>
-	<string name="_bx_timeline_form_post_input_sys_action"><![CDATA[Действие]]></string>
-	<string name="_bx_timeline_form_post_input_sys_type"><![CDATA[Тип]]></string>
-	<string name="_bx_timeline_form_post_input_sys_text"><![CDATA[Содержимое]]></string>
-	<string name="_bx_timeline_form_post_input_text"><![CDATA[]]></string>
-        <string name="_bx_timeline_form_post_input_sys_object_privacy_view"><![CDATA[Видимость]]></string>
-        <string name="_bx_timeline_form_post_input_object_privacy_view"><![CDATA[Видимость]]></string>
-        <string name="_bx_timeline_form_post_input_sys_date"><![CDATA[Создано]]></string>
-        <string name="_bx_timeline_form_post_input_date"><![CDATA[Создано]]></string>
-        <string name="_bx_timeline_form_post_input_sys_date_published"><![CDATA[Время публикации]]></string>
-        <string name="_bx_timeline_form_post_input_date_published"><![CDATA[Время публикации]]></string>
-        <string name="_bx_timeline_form_post_input_date_published_info"><![CDATA[Оставьте пустым, чтобы опубликовать немедленно.]]></string>
-	<string name="_bx_timeline_form_post_input_sys_link"><![CDATA[Ссылка]]></string>
-	<string name="_bx_timeline_form_post_input_link_alt"><![CDATA[Добавить ссылку]]></string>
-	<string name="_bx_timeline_form_post_input_link_err_delete"><![CDATA[Невозможно удалить ссылку. Пожалуйста, оповестите нас о проблеме.]]></string>
-	<string name="_bx_timeline_form_post_input_sys_photo"><![CDATA[Фото]]></string>
-	<string name="_bx_timeline_form_post_input_photo"><![CDATA[]]></string>
-	<string name="_bx_timeline_form_post_input_photo_alt"><![CDATA[Добавить фото]]></string>
-	<string name="_bx_timeline_form_post_input_sys_video"><![CDATA[Видео]]></string>
-	<string name="_bx_timeline_form_post_input_video"><![CDATA[]]></string>
-	<string name="_bx_timeline_form_post_input_video_alt"><![CDATA[Добавить видео]]></string>
-	<string name="_bx_timeline_form_post_input_sys_attachments"><![CDATA[Прикрепления]]></string>
-	<string name="_bx_timeline_form_post_input_sys_do_submit"><![CDATA[Создать]]></string>
-	<string name="_bx_timeline_form_post_input_do_submit"><![CDATA[Создать]]></string>
-	<string name="_bx_timeline_form_post_input_sys_do_cancel"><![CDATA[Отмена]]></string>
-        <string name="_bx_timeline_form_post_input_do_cancel"><![CDATA[Отмена]]></string>
+    <string name="_bx_timeline_form_post"><![CDATA[Сообщение]]></string>
+    <string name="_bx_timeline_form_post_display_add"><![CDATA[Написать сообщение]]></string>
+    <string name="_bx_timeline_form_post_display_add_public"><![CDATA[Написать публичное сообщение]]></string>
+    <string name="_bx_timeline_form_post_display_add_profile"><![CDATA[Написать сообщение в профиль]]></string>
+    <string name="_bx_timeline_form_post_display_edit"><![CDATA[Изменить сообщение]]></string>
+    <string name="_bx_timeline_form_post_input_sys_owner_id"><![CDATA[ID владельца]]></string>
+    <string name="_bx_timeline_form_post_input_owner_id_own"><![CDATA[Собственный профиль]]></string>
+    <string name="_bx_timeline_form_post_input_owner_id_following_group"><![CDATA[{0}]]></string>
+    <string name="_bx_timeline_form_post_input_sys_action"><![CDATA[Действие]]></string>
+    <string name="_bx_timeline_form_post_input_sys_type"><![CDATA[Тип]]></string>
+    <string name="_bx_timeline_form_post_input_sys_text"><![CDATA[Содержимое]]></string>
+    <string name="_bx_timeline_form_post_input_text"><![CDATA[]]></string>
+    <string name="_bx_timeline_form_post_input_sys_object_privacy_view"><![CDATA[Видимость]]></string>
+    <string name="_bx_timeline_form_post_input_object_privacy_view"><![CDATA[Видимость]]></string>
+    <string name="_bx_timeline_form_post_input_sys_date"><![CDATA[Создано]]></string>
+    <string name="_bx_timeline_form_post_input_date"><![CDATA[Создано]]></string>
+    <string name="_bx_timeline_form_post_input_sys_date_published"><![CDATA[Время публикации]]></string>
+    <string name="_bx_timeline_form_post_input_date_published"><![CDATA[Время публикации]]></string>
+    <string name="_bx_timeline_form_post_input_date_published_info"><![CDATA[Оставьте пустым, чтобы опубликовать немедленно.]]></string>
+    <string name="_bx_timeline_form_post_input_sys_link"><![CDATA[Ссылка]]></string>
+    <string name="_bx_timeline_form_post_input_link_alt"><![CDATA[Добавить ссылку]]></string>
+    <string name="_bx_timeline_form_post_input_link_err_delete"><![CDATA[Невозможно удалить ссылку. Пожалуйста, оповестите нас о проблеме.]]></string>
+    <string name="_bx_timeline_form_post_input_sys_photo"><![CDATA[Фото]]></string>
+    <string name="_bx_timeline_form_post_input_photo"><![CDATA[]]></string>
+    <string name="_bx_timeline_form_post_input_photo_alt"><![CDATA[Добавить фото]]></string>
+    <string name="_bx_timeline_form_post_input_sys_video"><![CDATA[Видео]]></string>
+    <string name="_bx_timeline_form_post_input_video"><![CDATA[]]></string>
+    <string name="_bx_timeline_form_post_input_video_alt"><![CDATA[Добавить видео]]></string>
+    <string name="_bx_timeline_form_post_input_sys_attachments"><![CDATA[Прикрепления]]></string>
+    <string name="_bx_timeline_form_post_input_sys_do_submit"><![CDATA[Создать]]></string>
+    <string name="_bx_timeline_form_post_input_do_submit"><![CDATA[Создать]]></string>
+    <string name="_bx_timeline_form_post_input_sys_do_cancel"><![CDATA[Отмена]]></string>
+    <string name="_bx_timeline_form_post_input_do_cancel"><![CDATA[Отмена]]></string>
 
-	<string name="_bx_timeline_form_attach_link"><![CDATA[Прикрепить ссылку]]></string>
-	<string name="_bx_timeline_form_attach_link_display_add"><![CDATA[Прикрепить ссылку]]></string>
-	<string name="_bx_timeline_form_attach_link_input_sys_url"><![CDATA[Url]]></string>
-	<string name="_bx_timeline_form_attach_link_input_url"><![CDATA[Добавить ссылку]]></string>
-	<string name="_bx_timeline_form_attach_link_input_url_err"><![CDATA[Необходима правильная ссылка. Пожалуйста, заполните это поле.]]></string>
-	<string name="_bx_timeline_form_attach_link_input_sys_do_submit"><![CDATA[Добавить]]></string>
-	<string name="_bx_timeline_form_attach_link_input_do_submit"><![CDATA[Добавить]]></string>
-	<string name="_bx_timeline_form_attach_link_input_do_cancel"><![CDATA[Закрыть]]></string>
+    <string name="_bx_timeline_form_attach_link"><![CDATA[Прикрепить ссылку]]></string>
+    <string name="_bx_timeline_form_attach_link_display_add"><![CDATA[Прикрепить ссылку]]></string>
+    <string name="_bx_timeline_form_attach_link_input_sys_url"><![CDATA[Url]]></string>
+    <string name="_bx_timeline_form_attach_link_input_url"><![CDATA[Добавить ссылку]]></string>
+    <string name="_bx_timeline_form_attach_link_input_url_err"><![CDATA[Необходима правильная ссылка. Пожалуйста, заполните это поле.]]></string>
+    <string name="_bx_timeline_form_attach_link_input_sys_do_submit"><![CDATA[Добавить]]></string>
+    <string name="_bx_timeline_form_attach_link_input_do_submit"><![CDATA[Добавить]]></string>
+    <string name="_bx_timeline_form_attach_link_input_do_cancel"><![CDATA[Закрыть]]></string>
 
-	<string name="_bx_timeline_privacy_view"><![CDATA[Просматривать события]]></string>
+    <string name="_bx_timeline_privacy_view"><![CDATA[Просматривать события]]></string>
 
-	<string name="_bx_timeline_acl_action_post"><![CDATA[Писать сообщения]]></string>
-	<string name="_bx_timeline_acl_action_edit"><![CDATA[Изменять любое сообщение]]></string>
-	<string name="_bx_timeline_acl_action_delete"><![CDATA[Удалять любое сообщение]]></string>
-	<string name="_bx_timeline_acl_action_vote"><![CDATA[Голосовать]]></string>
-	<string name="_bx_timeline_acl_action_repost"><![CDATA[Делать репост]]></string>
-	<string name="_bx_timeline_acl_action_send"><![CDATA[Послать]]></string>
-	<string name="_bx_timeline_acl_action_pin"><![CDATA['Приколоть тут' любое сообщение]]></string>
-	<string name="_bx_timeline_acl_action_stick"><![CDATA['Приколоть для всех' любое сообщение]]></string>
-	<string name="_bx_timeline_acl_action_promote"><![CDATA[Рекламировать любое сообщение]]></string>
+    <string name="_bx_timeline_acl_action_post"><![CDATA[Писать сообщения]]></string>
+    <string name="_bx_timeline_acl_action_edit"><![CDATA[Изменять любое сообщение]]></string>
+    <string name="_bx_timeline_acl_action_delete"><![CDATA[Удалять любое сообщение]]></string>
+    <string name="_bx_timeline_acl_action_vote"><![CDATA[Голосовать]]></string>
+    <string name="_bx_timeline_acl_action_repost"><![CDATA[Делать репост]]></string>
+    <string name="_bx_timeline_acl_action_send"><![CDATA[Послать]]></string>
+    <string name="_bx_timeline_acl_action_pin"><![CDATA['Приколоть тут' любое сообщение]]></string>
+    <string name="_bx_timeline_acl_action_stick"><![CDATA['Приколоть для всех' любое сообщение]]></string>
+    <string name="_bx_timeline_acl_action_promote"><![CDATA[Рекламировать любое сообщение]]></string>
 
-	<string name="_bx_timeline_page_title_sys_view"><![CDATA[Хроника новостей профайла]]></string>
-	<string name="_bx_timeline_page_title_view"><![CDATA[Хроника новостей профайла]]></string>
-	<string name="_bx_timeline_page_title_sys_view_home"><![CDATA[Общая хроника новостей]]></string>
+    <!-- Pages -->
+    <string name="_bx_timeline_page_title_sys_view"><![CDATA[Хроника новостей профайла]]></string>
+    <string name="_bx_timeline_page_title_view"><![CDATA[Хроника новостей профайла]]></string>
+    <string name="_bx_timeline_page_title_sys_view_home"><![CDATA[Общая хроника новостей]]></string>
     <string name="_bx_timeline_page_title_view_home"><![CDATA[Общая хроника новостей]]></string>
     <string name="_bx_timeline_page_title_sys_view_hot"><![CDATA[Хроника 'горячих' новостей]]></string>
     <string name="_bx_timeline_page_title_view_hot"><![CDATA[Хроника 'горячих' новостей]]></string>
-	<string name="_bx_timeline_page_title_sys_item"><![CDATA[Элемент хроники]]></string>
-	<string name="_bx_timeline_page_title_item"><![CDATA[Элемент хроники]]></string>
-	<string name="_bx_timeline_page_title_sys_item_brief"><![CDATA[Предпросмотр элемента хроники]]></string>
+    <string name="_bx_timeline_page_title_sys_item"><![CDATA[Элемент хроники]]></string>
+    <string name="_bx_timeline_page_title_item"><![CDATA[Элемент хроники]]></string>
+    <string name="_bx_timeline_page_title_sys_item_brief"><![CDATA[Предпросмотр элемента хроники]]></string>
     <string name="_bx_timeline_page_title_item_brief"><![CDATA[Предпросмотр элемента хроники]]></string>
-	<string name="_bx_timeline_page_title_sys_account"><![CDATA[Хроника новостей]]></string>
-  <string name="_bx_timeline_page_title_sys_manage_administration"><![CDATA[Управление всеми событями ленты]]></string>
-  <string name="_bx_timeline_page_title_manage"><![CDATA[Управление]]></string>
-	<string name="_bx_timeline_page_title_account"><![CDATA[Хроника новостей]]></string>
-	<string name="_bx_timeline_page_block_title_system_post_profile"><![CDATA[Создать публикацию (в контекст)]]></string>
-	<string name="_bx_timeline_page_block_title_post_profile"><![CDATA[Создать публикацию]]></string>
-	<string name="_bx_timeline_page_block_title_system_view_profile"><![CDATA[Хроника новостей профайла (лента)]]></string>
-	<string name="_bx_timeline_page_block_title_view_profile"><![CDATA[Хроника новостей профайла]]></string>
-	<string name="_bx_timeline_page_block_title_system_view_profile_outline"><![CDATA[Хроника новостей профайла (сводка)]]></string>
-	<string name="_bx_timeline_page_block_title_view_profile_outline"><![CDATA[Хроника новостей профайла]]></string>
-	<string name="_bx_timeline_page_block_title_item"><![CDATA[Элемент]]></string>
-	<string name="_bx_timeline_page_block_title_item_content"><![CDATA[Содержимое]]></string>
+    <string name="_bx_timeline_page_title_sys_account"><![CDATA[Хроника новостей]]></string>
+    <string name="_bx_timeline_page_title_sys_manage_administration"><![CDATA[Управление всеми событями ленты]]></string>
+    <string name="_bx_timeline_page_title_manage"><![CDATA[Управление]]></string>
+    <string name="_bx_timeline_page_title_account"><![CDATA[Хроника новостей]]></string>
+    <string name="_bx_timeline_page_block_title_system_post_profile"><![CDATA[Создать публикацию (в контекст)]]></string>
+    <string name="_bx_timeline_page_block_title_post_profile"><![CDATA[Создать публикацию]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_profile"><![CDATA[Хроника новостей профайла (лента)]]></string>
+    <string name="_bx_timeline_page_block_title_view_profile"><![CDATA[Хроника новостей профайла]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_profile_outline"><![CDATA[Хроника новостей профайла (сводка)]]></string>
+    <string name="_bx_timeline_page_block_title_view_profile_outline"><![CDATA[Хроника новостей профайла]]></string>
+    <string name="_bx_timeline_page_block_title_item"><![CDATA[Элемент]]></string>
+    <string name="_bx_timeline_page_block_title_item_content"><![CDATA[Содержимое]]></string>
     <string name="_bx_timeline_page_block_title_item_info"><![CDATA[Информация]]></string>
     <string name="_bx_timeline_page_block_title_item_comments"><![CDATA[Комментарии]]></string>
-	<string name="_bx_timeline_page_block_title_system_post_account"><![CDATA[Создать публикацию]]></string>
-	<string name="_bx_timeline_page_block_title_post_account"><![CDATA[Создать публикацию]]></string>
-	<string name="_bx_timeline_page_block_title_system_view_account"><![CDATA[Хроника новостей (лента)]]></string>
-	<string name="_bx_timeline_page_block_title_view_account"><![CDATA[Хроника новостей]]></string>
-	<string name="_bx_timeline_page_block_title_system_view_account_outline"><![CDATA[Хроника новостей (сводка)]]></string>
-	<string name="_bx_timeline_page_block_title_view_account_outline"><![CDATA[Хроника новостей]]></string>
-	<string name="_bx_timeline_page_block_title_system_post_home"><![CDATA[Создать публичную публикацию]]></string>
-	<string name="_bx_timeline_page_block_title_post_home"><![CDATA[Создать публикацию]]></string>
-	<string name="_bx_timeline_page_block_title_system_view_home"><![CDATA[Общая хроника новостей (лента)]]></string>
-	<string name="_bx_timeline_page_block_title_view_home"><![CDATA[Общая хроника новостей]]></string>
-	<string name="_bx_timeline_page_block_title_system_view_home_outline"><![CDATA[Общая хроника новостей (сводка)]]></string>
-	<string name="_bx_timeline_page_block_title_view_home_outline"><![CDATA[Общая хроника новостей]]></string>
-	<string name="_bx_timeline_page_block_title_system_view_hot"><![CDATA[Хроника 'горячих' новостей (лента)]]></string>
+    <string name="_bx_timeline_page_block_title_system_post_account"><![CDATA[Создать публикацию]]></string>
+    <string name="_bx_timeline_page_block_title_post_account"><![CDATA[Создать публикацию]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_account"><![CDATA[Хроника новостей (лента)]]></string>
+    <string name="_bx_timeline_page_block_title_view_account"><![CDATA[Хроника новостей]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_account_outline"><![CDATA[Хроника новостей (сводка)]]></string>
+    <string name="_bx_timeline_page_block_title_view_account_outline"><![CDATA[Хроника новостей]]></string>
+    <string name="_bx_timeline_page_block_title_system_views_timeline"><![CDATA[Все хроники (лента)]]></string>
+    <string name="_bx_timeline_page_block_title_views_timeline"><![CDATA[Хроники]]></string>
+    <string name="_bx_timeline_page_block_title_system_views_outline"><![CDATA[Все хроники (сводка)]]></string>
+    <string name="_bx_timeline_page_block_title_views_outline"><![CDATA[Хроники]]></string>
+    <string name="_bx_timeline_page_block_title_system_post_home"><![CDATA[Создать публичную публикацию]]></string>
+    <string name="_bx_timeline_page_block_title_post_home"><![CDATA[Создать публикацию]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_home"><![CDATA[Общая хроника новостей (лента)]]></string>
+    <string name="_bx_timeline_page_block_title_view_home"><![CDATA[Общая хроника новостей]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_home_outline"><![CDATA[Общая хроника новостей (сводка)]]></string>
+    <string name="_bx_timeline_page_block_title_view_home_outline"><![CDATA[Общая хроника новостей]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_hot"><![CDATA[Хроника 'горячих' новостей (лента)]]></string>
     <string name="_bx_timeline_page_block_title_view_hot"><![CDATA[Хроника 'горячих' новостей]]></string>
     <string name="_bx_timeline_page_block_title_system_view_hot_outline"><![CDATA[Хроника 'горячих' новостей (сводка)]]></string>
     <string name="_bx_timeline_page_block_title_view_hot_outline"><![CDATA[Хроника 'горячих' новостей]]></string>
-	<string name="_bx_timeline_page_block_title_browse_cmts"><![CDATA[Хроника новостей - Комментарии]]></string>
-  <string name="_bx_timeline_page_block_title_system_manage_administration"><![CDATA[Управление всеми событями ленты]]></string>
-  <string name="_bx_timeline_page_block_title_manage"><![CDATA[Управление]]></string>
+    <string name="_bx_timeline_page_block_title_browse_cmts"><![CDATA[Хроника новостей - Комментарии]]></string>
+    <string name="_bx_timeline_page_block_title_system_manage_administration"><![CDATA[Управление всеми событями ленты]]></string>
+    <string name="_bx_timeline_page_block_title_manage"><![CDATA[Управление]]></string>
+
+    <!-- Menus -->
+    <string name="_bx_timeline_menu_title_view"><![CDATA[Просмотр]]></string>
+    <string name="_bx_timeline_menu_set_title_view"><![CDATA[Просмотр]]></string>
+    <string name="_bx_timeline_menu_item_title_system_news"><![CDATA[Новости]]></string>
+    <string name="_bx_timeline_menu_item_title_news"><![CDATA[Новости]]></string>
+    <string name="_bx_timeline_menu_item_title_system_feed"><![CDATA[Хроника]]></string>
+    <string name="_bx_timeline_menu_item_title_feed"><![CDATA[Хроника]]></string>
+    <string name="_bx_timeline_menu_item_title_system_public"><![CDATA[Публичное]]></string>
+    <string name="_bx_timeline_menu_item_title_public"><![CDATA[Публичное]]></string>
+    <string name="_bx_timeline_menu_item_title_system_hot"><![CDATA[Популярное]]></string>
+    <string name="_bx_timeline_menu_item_title_hot"><![CDATA[Популярное]]></string>
 
     <string name="_bx_timeline_menu_item_view_all"><![CDATA[Все сообщения]]></string>
     <string name="_bx_timeline_menu_item_view_owner"><![CDATA[Сообщения от {0}]]></string>
@@ -215,37 +231,37 @@
     <string name="_bx_timeline_alert_action_repost_follow_member"><![CDATA[Новый репост контента]]></string>
     <string name="_bx_timeline_alert_action_repost_follow_context"><![CDATA[Новый репост контента]]></string>
 
-	<string name="_bx_timeline_txt_msg_no_results"><![CDATA[Пусто]]></string>
-	<string name="_bx_timeline_txt_msg_performed_action"><![CDATA[Действие было успешно выполнено.]]></string>
-	<string name="_bx_timeline_txt_msg_posted"><![CDATA[Успешно опубликовано.]]></string>
-	<string name="_bx_timeline_txt_err_cannot_perform_action"><![CDATA[Невозможно выполнить действие. Пожалуйста, оповестите нас об этой проблеме.]]></string>
-	<string name="_bx_timeline_txt_err_empty_post"><![CDATA[Сообщение пусто.]]></string>
+    <string name="_bx_timeline_txt_msg_no_results"><![CDATA[Пусто]]></string>
+    <string name="_bx_timeline_txt_msg_performed_action"><![CDATA[Действие было успешно выполнено.]]></string>
+    <string name="_bx_timeline_txt_msg_posted"><![CDATA[Успешно опубликовано.]]></string>
+    <string name="_bx_timeline_txt_err_cannot_perform_action"><![CDATA[Невозможно выполнить действие. Пожалуйста, оповестите нас об этой проблеме.]]></string>
+    <string name="_bx_timeline_txt_err_empty_post"><![CDATA[Сообщение пусто.]]></string>
 
-        <string name="_bx_timeline_txt_to"><![CDATA[в]]></string>
-	<string name="_bx_timeline_txt_load_more"><![CDATA[Загрузить ещё]]></string>
-	<string name="_bx_timeline_txt_or_jump_to"><![CDATA[... или перейти к:]]></string>
-	<string name="_bx_timeline_txt_jump_to_n_year"><![CDATA[Перейти к {0} году]]></string>
-	<string name="_bx_timeline_txt_jump_to_recent"><![CDATA[Перейти к недавним сообщениям]]></string>
-        <string name="_bx_timeline_txt_status_deleted"><![CDATA[Удалено]]></string>
-	<string name="_bx_timeline_txt_hot"><![CDATA['Горячее' событие]]></string>
-	<string name="_bx_timeline_txt_pinned"><![CDATA[Приколотое событие]]></string>
-        <string name="_bx_timeline_txt_sticked"><![CDATA[Событие приколотое для всех]]></string>
-        <string name="_bx_timeline_txt_promoted"><![CDATA[Рекламируемое]]></string>
-        <string name="_bx_timeline_txt_note_scheduled_awaiting"><![CDATA[Дата публикации: {0}]]></string>
-        <string name="_bx_timeline_txt_note_processing_awaiting"><![CDATA[Обновление будет опубликована как только сконвертируется видео.]]></string>
-        <string name="_bx_timeline_txt_note_processing_failed"><![CDATA[Обновление не было опубликовано, тк произошла ошибка при конвертации видео. Обновите видео, чтобы решить проблему.]]></string>
-	<string name="_bx_timeline_txt_rss_caption"><![CDATA[Лента {0}]]></string>
-	<string name="_bx_timeline_txt_added_sample"><![CDATA[добавил {0}]]></string>
-	<string name="_bx_timeline_txt_user_added_sample"><![CDATA[{0} добавил {1}]]></string>
-	<string name="_bx_timeline_txt_user_repost"><![CDATA[Репост от {0}]]></string>
-	<string name="_bx_timeline_txt_user_reposted_user_sample"><![CDATA[{0} сделал репост {1} {2}]]></string>
-	<string name="_bx_timeline_txt_sample"><![CDATA[сообщение]]></string>
-	<string name="_bx_timeline_txt_sample_with_article"><![CDATA[сообщение]]></string>
-	<string name="_bx_timeline_txt_sample_ext"><![CDATA[сообщение в ленте]]></string>
-	<string name="_bx_timeline_txt_sample_comment_single"><![CDATA[комментарий к сообщению в ленте]]></string>
-	<string name="_bx_timeline_txt_sample_vote_single"><![CDATA[голос за сообщение в ленте]]></string>
-        <string name="_bx_timeline_txt_sample_reaction_single"><![CDATA[реакция '{0}' к сообщению в ленте]]></string>
-        <string name="_bx_timeline_txt_sample_score_up_single"><![CDATA[голос за сообщение в ленте]]></string>
+    <string name="_bx_timeline_txt_to"><![CDATA[в]]></string>
+    <string name="_bx_timeline_txt_load_more"><![CDATA[Загрузить ещё]]></string>
+    <string name="_bx_timeline_txt_or_jump_to"><![CDATA[... или перейти к:]]></string>
+    <string name="_bx_timeline_txt_jump_to_n_year"><![CDATA[Перейти к {0} году]]></string>
+    <string name="_bx_timeline_txt_jump_to_recent"><![CDATA[Перейти к недавним сообщениям]]></string>
+    <string name="_bx_timeline_txt_status_deleted"><![CDATA[Удалено]]></string>
+    <string name="_bx_timeline_txt_hot"><![CDATA['Горячее' событие]]></string>
+    <string name="_bx_timeline_txt_pinned"><![CDATA[Приколотое событие]]></string>
+    <string name="_bx_timeline_txt_sticked"><![CDATA[Событие приколотое для всех]]></string>
+    <string name="_bx_timeline_txt_promoted"><![CDATA[Рекламируемое]]></string>
+    <string name="_bx_timeline_txt_note_scheduled_awaiting"><![CDATA[Дата публикации: {0}]]></string>
+    <string name="_bx_timeline_txt_note_processing_awaiting"><![CDATA[Обновление будет опубликована как только сконвертируется видео.]]></string>
+    <string name="_bx_timeline_txt_note_processing_failed"><![CDATA[Обновление не было опубликовано, тк произошла ошибка при конвертации видео. Обновите видео, чтобы решить проблему.]]></string>
+    <string name="_bx_timeline_txt_rss_caption"><![CDATA[Лента {0}]]></string>
+    <string name="_bx_timeline_txt_added_sample"><![CDATA[добавил {0}]]></string>
+    <string name="_bx_timeline_txt_user_added_sample"><![CDATA[{0} добавил {1}]]></string>
+    <string name="_bx_timeline_txt_user_repost"><![CDATA[Репост от {0}]]></string>
+    <string name="_bx_timeline_txt_user_reposted_user_sample"><![CDATA[{0} сделал репост {1} {2}]]></string>
+    <string name="_bx_timeline_txt_sample"><![CDATA[сообщение]]></string>
+    <string name="_bx_timeline_txt_sample_with_article"><![CDATA[сообщение]]></string>
+    <string name="_bx_timeline_txt_sample_ext"><![CDATA[сообщение в ленте]]></string>
+    <string name="_bx_timeline_txt_sample_comment_single"><![CDATA[комментарий к сообщению в ленте]]></string>
+    <string name="_bx_timeline_txt_sample_vote_single"><![CDATA[голос за сообщение в ленте]]></string>
+    <string name="_bx_timeline_txt_sample_reaction_single"><![CDATA[реакция '{0}' к сообщению в ленте]]></string>
+    <string name="_bx_timeline_txt_sample_score_up_single"><![CDATA[голос за сообщение в ленте]]></string>
     <string name="_bx_timeline_txt_sample_score_down_single"><![CDATA[голос против сообщения в ленте]]></string>
     <string name="_bx_timeline_txt_sample_with_link"><![CDATA[со ссылкой]]></string>
     <string name="_bx_timeline_txt_sample_with_image"><![CDATA[с изображением]]></string>

+ 24 - 8
modules/boonex/timeline/classes/BxTimelineConfig.php

@@ -134,6 +134,8 @@ class BxTimelineConfig extends BxBaseModNotificationsConfig
         $this->_aTypeToFormDisplay = array(
             BX_BASE_MOD_NTFS_TYPE_OWNER => 'form_display_post_add_profile',
             BX_BASE_MOD_NTFS_TYPE_PUBLIC => 'form_display_post_add_public',
+            BX_TIMELINE_TYPE_NEWS => 'form_display_post_add',
+            BX_TIMELINE_TYPE_FEED => 'form_display_post_add',
             BX_TIMELINE_TYPE_OWNER_AND_CONNECTIONS => 'form_display_post_add'
         );
 
@@ -166,6 +168,7 @@ class BxTimelineConfig extends BxBaseModNotificationsConfig
 
             'page_item_brief' => $this->_sName . '_item_brief',
 
+            'menu_view' => $this->_sName . '_menu_view',
             'menu_item_manage' => $this->_sName . '_menu_item_manage',
             'menu_item_actions' => $this->_sName . '_menu_item_actions',
             'menu_item_meta' => $this->_sName . '_menu_item_meta',
@@ -311,23 +314,35 @@ class BxTimelineConfig extends BxBaseModNotificationsConfig
         $this->_bUnhideRestored = false;
     }
 
-    protected function getNameView($aParams, $bWithOwner = false, $sGlue = '_')
+    /**
+     * Generate name from parameters.
+     * 
+     * @param type $aParams - parameters whose values will be used during generation.
+     * @param type $aRules - generation rules.
+     * @return string
+     */
+    protected function getNameView($aParams, $aRules = array())
     {
+        $bWithView = !isset($aRules['with_view']) || $aRules['with_view'] === true;
+        $bWithType = !isset($aRules['with_type']) || $aRules['with_type'] === true;
+        $bWithOwner = isset($aRules['with_owner']) && $aRules['with_owner'] === true;
+        $sGlue = !empty($aRules['glue']) ? $aRules['glue'] : '_';
+
         $aAddons = array();
         if(!empty($aParams['name']))
             $aAddons[] = $aParams['name'];
         else {
-            if(!empty($aParams['view']))
+            if($bWithView && !empty($aParams['view']))
                 $aAddons[] = $aParams['view'];
 
-            if(!empty($aParams['type']))
+            if($bWithType && !empty($aParams['type']))
                 $aAddons[] = $aParams['type'];
         }
 
         if($bWithOwner)
             $aAddons[] = $aParams['owner_id'];
 
-        return !empty($aAddons) ? implode('_', $aAddons) : '';
+        return !empty($aAddons) ? implode($sGlue, $aAddons) : '';
     }
 
     /**
@@ -341,11 +356,12 @@ class BxTimelineConfig extends BxBaseModNotificationsConfig
         return parent::getJsObject('view') . bx_gen_method_name($this->getNameView($aParams));
     }
 
-    public function getHtmlIdView($sKey, $aParams, $bWhole = true)
+    public function getHtmlIdView($sKey, $aParams, $aRules = array())
     {
-        $sDiv = '_';
+        $bWhole = !isset($aRules['whole']) || $aRules['whole'] === true;
+        $sGlue = !empty($aRules['glue']) ? $aRules['glue'] : '_';
 
-        return str_replace($sDiv, '-', $this->_sName  . $sDiv . $sKey . $sDiv . $this->getNameView($aParams) . (!$bWhole ? $sDiv : ''));
+        return str_replace($sGlue, '-', $this->_sName  . $sGlue . $sKey . $sGlue . $this->getNameView($aParams, $aRules) . (!$bWhole ? $sGlue : ''));
     }
 
     public function isAllowEdit()
@@ -555,7 +571,7 @@ class BxTimelineConfig extends BxBaseModNotificationsConfig
 
     public function getLiveUpdateKey($aParams)
     {
-        return $this->getName() . '_live_update_' . $this->getNameView($aParams, true);
+        return $this->getName() . '_live_update_' . $this->getNameView($aParams, array('with_owner' => true));
     }
 
     //TODO: isCommon and isSystem can be updated to use new 'system' db field.

+ 96 - 13
modules/boonex/timeline/classes/BxTimelineDb.php

@@ -450,6 +450,8 @@ class BxTimelineDb extends BxBaseModNotificationsDb
                         $aMethod['params'][2]['context_id'] = 0;
                         break;
 
+                    case BX_TIMELINE_TYPE_NEWS:
+                    case BX_TIMELINE_TYPE_FEED:
                     case BX_TIMELINE_TYPE_OWNER_AND_CONNECTIONS:
                         $aMethod['params'][2]['context_id'] = $aParams['profile_id'];
                         break;
@@ -631,7 +633,7 @@ class BxTimelineDb extends BxBaseModNotificationsDb
 
             case 'list':
                 list($sMethod, $sSelectClause, $sJoinClause, $sWhereClause, $sOrderClause, $sLimitClause) = parent::_getSqlPartsEvents($aParams);
-                if(in_array($aParams['type'], array(BX_BASE_MOD_NTFS_TYPE_CONNECTIONS, BX_TIMELINE_TYPE_OWNER_AND_CONNECTIONS)))
+                if(in_array($aParams['type'], array(BX_TIMELINE_TYPE_NEWS, BX_TIMELINE_TYPE_FEED, BX_BASE_MOD_NTFS_TYPE_CONNECTIONS, BX_TIMELINE_TYPE_OWNER_AND_CONNECTIONS)))
                     $sSelectClause  = "DISTINCT " . $sSelectClause;
                 break;
 
@@ -654,6 +656,8 @@ class BxTimelineDb extends BxBaseModNotificationsDb
 
                     case BX_BASE_MOD_NTFS_TYPE_PUBLIC:
                     case BX_BASE_MOD_NTFS_TYPE_CONNECTIONS:
+                    case BX_TIMELINE_TYPE_NEWS:
+                    case BX_TIMELINE_TYPE_FEED:
                     case BX_TIMELINE_TYPE_OWNER_AND_CONNECTIONS:
                         $sOrderClause = "`{$this->_sTable}`.`sticked` DESC, ";
                         break;
@@ -708,10 +712,12 @@ class BxTimelineDb extends BxBaseModNotificationsDb
         //--- Check type
         $mixedWhereSubclause = "";
         switch($aParams['type']) {
-            case BX_TIMELINE_TYPE_HOT: //--- Hot (Public) Feed.
+            //--- Feed: Hot (Public)
+            case BX_TIMELINE_TYPE_HOT:
                 $mixedJoinClause .= " INNER JOIN `{$this->_sTableHotTrack}` ON `{$this->_sTable}`.`id`=`{$this->_sTableHotTrack}`.`event_id`";
 
-            case BX_BASE_MOD_NTFS_TYPE_PUBLIC: //--- Site (Public) Feed.
+            //--- Feed: Public
+            case BX_BASE_MOD_NTFS_TYPE_PUBLIC:
                 //--- Apply privacy filter
                 $aPrivacyGroups = array(BX_DOL_PG_ALL);
                 if(isLogged())
@@ -733,7 +739,7 @@ class BxTimelineDb extends BxBaseModNotificationsDb
                 $mixedWhereSubclause .= " OR `{$this->_sTable}`.`promoted` <> '0'";
                 break;
 
-            //--- Profile Feed
+            //--- Feed: Profile
             case BX_BASE_MOD_NTFS_TYPE_OWNER:
                 if(empty($aParams['owner_id']))
                     break;
@@ -745,33 +751,69 @@ class BxTimelineDb extends BxBaseModNotificationsDb
                 $mixedWhereSubclause .= $this->prepareAsString(" OR (`{$this->_sTable}`.`owner_id` = '0' AND IF(`{$this->_sTable}`.`system`='0', `{$this->_sTable}`.`object_id` = ?, 1))", $aParams['owner_id']);
                 break;
 
-            //--- Profile Connections Feed
+            //--- Feed: All Profile Connections 
             case BX_BASE_MOD_NTFS_TYPE_CONNECTIONS:
                 if(empty($aParams['owner_id']))
                     break;
 
+                $mixedJoinClause = array();
+                $mixedWhereSubclause = array();
+
                 $oConnection = BxDolConnection::getObjectInstance($this->_oConfig->getObject('conn_subscriptions'));
 
+                //--- Join System and Direct posts received by and made by following members. 'LEFT' join is essential to apply different conditions.
                 $aQueryParts = $oConnection->getConnectedContentAsSQLPartsExt($this->_sPrefix . 'events', 'owner_id', $aParams['owner_id']);
                 $aJoin1 = $aQueryParts['join'];
 
+                $mixedJoinClause['p1'] = "LEFT JOIN `" . $aJoin1['table'] . "` AS `" . $aJoin1['table_alias'] . "` ON " . $aJoin1['condition'];
+                $mixedWhereSubclause['p1'] = "NOT ISNULL(`" . $aJoin1['table_alias'] . "`.`content`)";
+
+                //--- Exclude Own (Direct) posts on timelines of following members.
+                //--- Note. Disabled for now.
+                //$mixedWhereSubclause['p1'] .= $this->prepareAsString(" AND IF(`{$this->_sTable}`.`system`='0', `{$this->_sTable}`.`object_id` <> ?, 1)", $aParams['owner_id']);
+
                 $aQueryParts = $oConnection->getConnectedContentAsSQLPartsExt($this->_sPrefix . 'events', 'object_id', $aParams['owner_id']);
                 $aJoin2 = $aQueryParts['join'];
 
-                //--- Join System and Direct posts made by following members.  
-                $mixedJoinClause .= " " . $aJoin1['type'] . " JOIN `" . $aJoin1['table'] . "` AS `" . $aJoin1['table_alias'] . "` ON ((" . $aJoin1['condition'] . ") OR (`" . $this->_sTable . "`.`system`='0' AND " . $aJoin2['condition'] . "))";
+                $aQueryParts = $oConnection->getConnectedContentAsSQLPartsExt($this->_sPrefix . 'events', 'object_id', $aParams['owner_id']);
+                $aJoin2 = $aQueryParts['join'];
+                $aJoin2['table_alias'] = 'cc';
+                $aJoin2['condition'] = str_replace('`c`', '`' . $aJoin2['table_alias'] . '`', $aJoin2['condition']);
+
+                $mixedJoinClause['p2'] = "LEFT JOIN `" . $aJoin2['table'] . "` AS `" . $aJoin2['table_alias'] . "` ON `" . $this->_sTable . "`.`system`='0' AND " . $aJoin2['condition'];
+                $mixedWhereSubclause['p2'] = "NOT ISNULL(`" . $aJoin2['table_alias'] . "`.`content`)";
+
+                //--- Select Promoted posts.
+                $mixedWhereSubclause['p3'] = "`{$this->_sTable}`.`promoted` <> '0'";
+                break;
+
+            //--- Feed: Profile Connections to Channel contexts only
+            case BX_TIMELINE_TYPE_NEWS:
+                if(empty($aParams['owner_id']))
+                    break;
+
+                $mixedJoinClause = array();
+                $mixedWhereSubclause = array();
+
+                $oConnection = BxDolConnection::getObjectInstance($this->_oConfig->getObject('conn_subscriptions'));
+
+                //--- Join System posts received by following channels.
+                $aQueryParts = $oConnection->getConnectedContentAsSQLPartsExt($this->_sPrefix . 'events', 'owner_id', $aParams['owner_id']);
+                $aJoin1 = $aQueryParts['join'];
+
+                $mixedJoinClause['p1'] = "LEFT JOIN `" . $aJoin1['table'] . "` AS `" . $aJoin1['table_alias'] . "` ON " . $aJoin1['condition'];
+                $mixedWhereSubclause['p1'] = "`{$this->_sTable}`.`type`='bx_channels' AND NOT ISNULL(`" . $aJoin1['table_alias'] . "`.`content`)";
 
                 //--- Exclude Own (Direct) posts on timelines of following members.
                 //--- Note. Disabled for now.
-                //$mixedWhereSubclause = $this->prepareAsString("IF(`{$this->_sTable}`.`system`='0', `{$this->_sTable}`.`object_id` <> ?, 1)", $aParams['owner_id']);
-                $mixedWhereSubclause = "0";
+                //$mixedWhereSubclause['p1'] = $this->prepareAsString(" AND IF(`{$this->_sTable}`.`system`='0', `{$this->_sTable}`.`object_id` <> ?, 1)", $aParams['owner_id']);
 
                 //--- Select Promoted posts.
-                $mixedWhereSubclause .= " OR `{$this->_sTable}`.`promoted` <> '0'";
+                $mixedWhereSubclause['p2'] = "`{$this->_sTable}`.`promoted` <> '0'";
                 break;
 
-            //--- Profile + Profile Connections Feed
-            case BX_TIMELINE_TYPE_OWNER_AND_CONNECTIONS:
+            //--- Feed: Profile + Profile Connections to Non-Channel contexts
+            case BX_TIMELINE_TYPE_FEED:
                 if(empty($aParams['owner_id']))
                     break;
 
@@ -788,9 +830,46 @@ class BxTimelineDb extends BxBaseModNotificationsDb
 
                 $mixedWhereSubclause['p1'] = "(" . $sWhereSubclauseOwnProfile . " OR " . $sWhereSubclauseOwnPublic . ")";
 
+                //--- Join System and Direct posts received by and made by following members. 'LEFT' join is essential to apply different conditions.
+                $aQueryParts = $oConnection->getConnectedContentAsSQLPartsExt($this->_sPrefix . 'events', 'owner_id', $aParams['owner_id']);
+                $aJoin1 = $aQueryParts['join'];
+
+                $mixedJoinClause['p2'] = "LEFT JOIN `" . $aJoin1['table'] . "` AS `" . $aJoin1['table_alias'] . "` ON " . $aJoin1['condition'];
+                $mixedWhereSubclause['p2'] = "`{$this->_sTable}`.`type`<>'bx_channels' AND NOT ISNULL(`" . $aJoin1['table_alias'] . "`.`content`)";
+                
                 //--- Exclude Own (Direct) posts on timelines of following members.
                 //--- Note. Disabled for now and next check is used instead. 
-                //$mixedWhereSubclause['pX'] = $this->prepareAsString(" OR (NOT ISNULL(`c`.`content`) AND IF(`{$this->_sTable}`.`system`='0', `{$this->_sTable}`.`object_id` <> ?, 1))", $aParams['owner_id']);
+                //$mixedWhereSubclause['p2'] = $this->prepareAsString(" AND IF(`{$this->_sTable}`.`system`='0', `{$this->_sTable}`.`object_id` <> ?, 1))", $aParams['owner_id']);
+
+                $aQueryParts = $oConnection->getConnectedContentAsSQLPartsExt($this->_sPrefix . 'events', 'object_id', $aParams['owner_id']);
+                $aJoin2 = $aQueryParts['join'];
+                $aJoin2['table_alias'] = 'cc';
+                $aJoin2['condition'] = str_replace('`c`', '`' . $aJoin2['table_alias'] . '`', $aJoin2['condition']);
+
+                $mixedJoinClause['p3'] = "LEFT JOIN `" . $aJoin2['table'] . "` AS `" . $aJoin2['table_alias'] . "` ON `" . $this->_sTable . "`.`system`='0' AND " . $aJoin2['condition'];
+                $mixedWhereSubclause['p3'] = "NOT ISNULL(`" . $aJoin2['table_alias'] . "`.`content`)";
+
+                //--- Select Promoted posts.
+                $mixedWhereSubclause['p4'] = "`{$this->_sTable}`.`promoted` <> '0'";
+                break;
+
+            //--- Feed: Profile + All Profile Connections
+            case BX_TIMELINE_TYPE_OWNER_AND_CONNECTIONS:
+                if(empty($aParams['owner_id']))
+                    break;
+
+                $mixedJoinClause = array();
+                $mixedWhereSubclause = array();
+
+                $oConnection = BxDolConnection::getObjectInstance($this->_oConfig->getObject('conn_subscriptions'));
+
+                //--- Select Own (System and Direct) posts from Profile's Timeline.
+                $sWhereSubclauseOwnProfile = $this->prepareAsString("(`{$this->_sTable}`.`owner_id` = ?)", $aParams['owner_id']);
+
+                //--- Select Own Public (Direct) posts from Home Page Timeline (Public Feed).
+                $sWhereSubclauseOwnPublic = $this->prepareAsString("(`{$this->_sTable}`.`owner_id` = '0' AND IF(`{$this->_sTable}`.`system`='0', `{$this->_sTable}`.`object_id` = ?, 1))", $aParams['owner_id']);
+
+                $mixedWhereSubclause['p1'] = "(" . $sWhereSubclauseOwnProfile . " OR " . $sWhereSubclauseOwnPublic . ")";
 
                 //--- Join System and Direct posts received by and made by following members. 'LEFT' join is essential to apply different conditions.
                 $aQueryParts = $oConnection->getConnectedContentAsSQLPartsExt($this->_sPrefix . 'events', 'owner_id', $aParams['owner_id']);
@@ -798,6 +877,10 @@ class BxTimelineDb extends BxBaseModNotificationsDb
 
                 $mixedJoinClause['p2'] = "LEFT JOIN `" . $aJoin1['table'] . "` AS `" . $aJoin1['table_alias'] . "` ON " . $aJoin1['condition'];
                 $mixedWhereSubclause['p2'] = "NOT ISNULL(`" . $aJoin1['table_alias'] . "`.`content`)";
+                
+                //--- Exclude Own (Direct) posts on timelines of following members.
+                //--- Note. Disabled for now and next check is used instead. 
+                //$mixedWhereSubclause['p2'] = $this->prepareAsString(" AND IF(`{$this->_sTable}`.`system`='0', `{$this->_sTable}`.`object_id` <> ?, 1))", $aParams['owner_id']);
 
                 $aQueryParts = $oConnection->getConnectedContentAsSQLPartsExt($this->_sPrefix . 'events', 'object_id', $aParams['owner_id']);
                 $aJoin2 = $aQueryParts['join'];

+ 29 - 0
modules/boonex/timeline/classes/BxTimelineMenuView.php

@@ -0,0 +1,29 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    Timeline Timeline
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+/**
+ * View block menu.
+ */
+class BxTimelineMenuView extends BxTemplMenuInteractive
+{
+    protected $_oModule;
+
+    public function __construct($aObject, $oTemplate = false)
+    {
+        $this->_oModule = BxDolModule::getInstance('bx_timeline');
+
+        parent::__construct($aObject, $this->_oModule->_oTemplate);
+
+        $this->_bShowDivider = false;
+    }
+}
+
+/** @} */

+ 58 - 1
modules/boonex/timeline/classes/BxTimelineModule.php

@@ -14,7 +14,9 @@ bx_import('BxBaseModNotificationsModule');
 
 define('BX_TIMELINE_TYPE_ITEM', 'view_item');
 define('BX_TIMELINE_TYPE_OWNER_AND_CONNECTIONS', 'owner_and_connections');
-define('BX_TIMELINE_TYPE_HOT', 'hot');
+define('BX_TIMELINE_TYPE_NEWS', 'news'); //--- Followed channels only.
+define('BX_TIMELINE_TYPE_FEED', 'feed'); //--- Owner and folloved contexts excluding channels.
+define('BX_TIMELINE_TYPE_HOT', 'hot'); //--- Aggrigated hot content.
 define('BX_TIMELINE_TYPE_DEFAULT', BX_BASE_MOD_NTFS_TYPE_OWNER);
 
 define('BX_TIMELINE_VIEW_ITEM', 'item');
@@ -246,6 +248,20 @@ class BxTimelineModule extends BxBaseModNotificationsModule implements iBxDolCon
         ));
     }
 
+    function actionGetView()
+    {
+        $aParams = $this->_prepareParamsGet();
+
+        $sConten = $this->_oTemplate->getViewBlock($aParams);
+        if(empty($sConten))
+            return echoJson(array());
+
+        echoJson(array(
+            'code' => 0, 
+            'content' => $sConten,
+        ));
+    }
+
     function actionGetPost()
     {
         $aParams = $this->_prepareParamsGet();
@@ -1164,6 +1180,36 @@ class BxTimelineModule extends BxBaseModNotificationsModule implements iBxDolCon
         ));
     }
 
+    public function serviceGetBlockViewsTimeline($sType = BX_BASE_MOD_NTFS_TYPE_PUBLIC, $iProfileId = 0, $iStart = -1, $iPerPage = -1, $iTimeline = -1, $sFilter = '', $aModules = array())
+    {
+        return $this->_serviceGetBlockViews(array(
+            'view' => BX_TIMELINE_VIEW_TIMELINE, 
+            'type' => $sType,
+            'owner_id' => $iProfileId,
+            'start' => $iStart, 
+            'per_page' => $iPerPage, 
+            'per_page_default' => $this->_oConfig->getPerPage('home'), 
+            'timeline' => $iTimeline, 
+            'filter' => $sFilter, 
+            'modules' => $aModules
+        ));
+    }
+    
+    public function serviceGetBlockViewsOutline($sType = BX_BASE_MOD_NTFS_TYPE_PUBLIC, $iProfileId = 0, $iStart = -1, $iPerPage = -1, $iTimeline = -1, $sFilter = '', $aModules = array())
+    {
+        return $this->_serviceGetBlockViews(array(
+            'view' => BX_TIMELINE_VIEW_OUTLINE, 
+            'type' => $sType,
+            'owner_id' => $iProfileId,
+            'start' => $iStart, 
+            'per_page' => $iPerPage, 
+            'per_page_default' => $this->_oConfig->getPerPage('home'), 
+            'timeline' => $iTimeline, 
+            'filter' => $sFilter, 
+            'modules' => $aModules
+        ));
+    }
+
     /**
      * @page service Service Calls
      * @section bx_timeline Timeline
@@ -3359,6 +3405,17 @@ class BxTimelineModule extends BxBaseModNotificationsModule implements iBxDolCon
         return $this->_getBlockView($aBrowseParams);
     }
 
+    protected function _serviceGetBlockViews($aBrowseParams = array())
+    {
+        $aParams = $this->_prepareParams($aBrowseParams);
+
+        $this->_iOwnerId = $aParams['owner_id'];
+
+        return array(
+            'content' => $this->_oTemplate->getViewsBlock($aParams)
+        );
+    }
+
     protected function _serviceGetBlockViewHome($aBrowseParams = array())
     {
         $sRssUrl = BX_DOL_URL_ROOT . $this->_oConfig->getBaseUri() . 'rss/' . $aBrowseParams['type'] . '/';

+ 38 - 1
modules/boonex/timeline/classes/BxTimelineTemplate.php

@@ -98,6 +98,41 @@ class BxTimelineTemplate extends BxBaseModNotificationsTemplate
         ));
     }
 
+    public function getViewsBlock($aParams)
+    {
+        $sStylePrefix = $this->_oConfig->getPrefix('style');
+        $sJsObject = $this->_oConfig->getJsObjectView($aParams);
+        
+        $sType = isset($aParams['type']) ? $aParams['type'] : '';
+
+        $sMenu = $this->_oConfig->getObject('menu_view');
+        $oMenu = BxDolMenu::getObjectInstance($sMenu);
+
+    	$aMenuItems = $oMenu->getMenuItems();
+    	if(empty($aMenuItems) || !is_array($aMenuItems))
+            return '';
+
+    	if(empty($sType)) {
+            $aMenuItem = array_shift($aMenuItems);
+            $sType = $aMenuItem['name'];
+    	}
+    	$oMenu->setSelected($this->_oConfig->getName(), $sType);
+        $oMenu->addMarkers(array(
+            'js_object_view' => $sJsObject
+        ));
+
+        $sTitle = _t('_bx_timeline_page_block_title_views_' . $aParams['view']);
+
+        return $this->parseHtmlByName('block_views.html', array(
+            'style_prefix' => $sStylePrefix,
+            'html_id' => $this->_oConfig->getHtmlIdView('views', $aParams, array('with_type' => false)),
+            'html_id_content' => $this->_oConfig->getHtmlIdView('views_content', $aParams, array('with_type' => false)),
+            'title' => $sTitle,
+            'menu' => $oMenu->getCode(),
+            'content' => $this->getViewBlock($aParams)
+        ));
+    }
+
     public function getViewBlock($aParams)
     {
         $oModule = $this->getModule();
@@ -1160,6 +1195,8 @@ class BxTimelineTemplate extends BxBaseModNotificationsTemplate
                 $aParamsSet['context_id'] = 0;
                 break;
 
+            case BX_TIMELINE_TYPE_NEWS:
+            case BX_TIMELINE_TYPE_FEED:
             case BX_TIMELINE_TYPE_OWNER_AND_CONNECTIONS:
                 $aParamsSet['context_id'] = $iProfileId;
                 break;
@@ -1342,7 +1379,7 @@ class BxTimelineTemplate extends BxBaseModNotificationsTemplate
         $aTmplVars = array (
             'style_prefix' => $sStylePrefix,
             'js_object' => $sJsObject,
-            'html_id' => $this->_oConfig->getHtmlIdView('item', $aBrowseParams, false) . $aEvent['id'],
+            'html_id' => $this->_oConfig->getHtmlIdView('item', $aBrowseParams, array('whole' => false)) . $aEvent['id'],
             'class' => $sClass,
             'class_owner' => $sClassOwner,
             'class_content' => $bViewItem ? 'bx-def-color-bg-block' : 'bx-def-color-bg-box',

+ 163 - 147
modules/boonex/timeline/install/langs/en.xml

@@ -1,134 +1,150 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources name="en" flag="gb" title="English">
-
     <string name="_bx_timeline"><![CDATA[Timeline]]></string>
     <string name="_bx_timeline_cmts"><![CDATA[Timeline's Comments]]></string>
     <string name="_bx_timeline_reactions"><![CDATA[Timeline's Reactions]]></string>
 
     <string name="_bx_timeline_option_enable_edit"><![CDATA[Allow user to edit his items]]></string>
-	<string name="_bx_timeline_option_enable_delete"><![CDATA[Allow Timeline owner to remove items]]></string>
-	<string name="_bx_timeline_option_enable_show_all"><![CDATA[Show all items in Public Feed including ones which were posted in personal Feeds]]></string>
-        <string name="_bx_timeline_option_enable_count_all_views"><![CDATA[Count views for all items in the Feed]]></string>
-	<string name="_bx_timeline_option_events_per_page_profile"><![CDATA[Number of items on profile page]]></string>
-	<string name="_bx_timeline_option_events_per_page_account"><![CDATA[Number of items on dashboard page]]></string>
-	<string name="_bx_timeline_option_events_per_page_home"><![CDATA[Number of items on site home page]]></string>
-	<string name="_bx_timeline_option_events_per_page"><![CDATA[Number of items per page]]></string>
-	<string name="_bx_timeline_option_rss_length"><![CDATA[The length of RSS feed]]></string>
-	<string name="_bx_timeline_option_events_hide"><![CDATA[Show events]]></string>
-	<string name="_bx_timeline_option_videos_autoplay"><![CDATA[Videos autoplay (for Timeline view only)]]></string>
-	<string name="_bx_timeline_option_videos_autoplay_off"><![CDATA[Disabled]]></string>
-	<string name="_bx_timeline_option_videos_autoplay_on_mute"><![CDATA[Enabled without sound]]></string>
-	<string name="_bx_timeline_option_videos_autoplay_on"><![CDATA[Enabled with sound]]></string>
-        <string name="_bx_timeline_option_preload_comments"><![CDATA[Number of preloaded comments (up to 7 items)]]></string>
-        <string name="_bx_timeline_option_enable_jump_to_switcher"><![CDATA[Show 'Jump to' switcher]]></string>
-	<string name="_bx_timeline_option_enable_hot"><![CDATA[Enable Hot list aggregation]]></string>
-	<string name="_bx_timeline_option_hot_interval"><![CDATA[Interval of time (in hours) to get Hot events]]></string>
-        <string name="_bx_timeline_option_enable_cache_item"><![CDATA[Enable item cache]]></string>
-        <string name="_bx_timeline_option_cache_item_engine"><![CDATA[Item cache engine (other than File option may require custom server setup)]]></string>
-        <string name="_bx_timeline_option_cache_item_lifetime"><![CDATA[Item cache lifetime]]></string>
-        <string name="_bx_timeline_option_enable_cache_list"><![CDATA[Enable feed cache]]></string>
-	<string name="_bx_timeline_option_enable_editor_toolbar"><![CDATA[Enable post form editor toolbar]]></string>
+    <string name="_bx_timeline_option_enable_delete"><![CDATA[Allow Timeline owner to remove items]]></string>
+    <string name="_bx_timeline_option_enable_show_all"><![CDATA[Show all items in Public Feed including ones which were posted in personal Feeds]]></string>
+    <string name="_bx_timeline_option_enable_count_all_views"><![CDATA[Count views for all items in the Feed]]></string>
+    <string name="_bx_timeline_option_events_per_page_profile"><![CDATA[Number of items on profile page]]></string>
+    <string name="_bx_timeline_option_events_per_page_account"><![CDATA[Number of items on dashboard page]]></string>
+    <string name="_bx_timeline_option_events_per_page_home"><![CDATA[Number of items on site home page]]></string>
+    <string name="_bx_timeline_option_events_per_page"><![CDATA[Number of items per page]]></string>
+    <string name="_bx_timeline_option_rss_length"><![CDATA[The length of RSS feed]]></string>
+    <string name="_bx_timeline_option_events_hide"><![CDATA[Show events]]></string>
+    <string name="_bx_timeline_option_videos_autoplay"><![CDATA[Videos autoplay (for Timeline view only)]]></string>
+    <string name="_bx_timeline_option_videos_autoplay_off"><![CDATA[Disabled]]></string>
+    <string name="_bx_timeline_option_videos_autoplay_on_mute"><![CDATA[Enabled without sound]]></string>
+    <string name="_bx_timeline_option_videos_autoplay_on"><![CDATA[Enabled with sound]]></string>
+    <string name="_bx_timeline_option_preload_comments"><![CDATA[Number of preloaded comments (up to 7 items)]]></string>
+    <string name="_bx_timeline_option_enable_jump_to_switcher"><![CDATA[Show 'Jump to' switcher]]></string>
+    <string name="_bx_timeline_option_enable_hot"><![CDATA[Enable Hot list aggregation]]></string>
+    <string name="_bx_timeline_option_hot_interval"><![CDATA[Interval of time (in hours) to get Hot events]]></string>
+    <string name="_bx_timeline_option_enable_cache_item"><![CDATA[Enable item cache]]></string>
+    <string name="_bx_timeline_option_cache_item_engine"><![CDATA[Item cache engine (other than File option may require custom server setup)]]></string>
+    <string name="_bx_timeline_option_cache_item_lifetime"><![CDATA[Item cache lifetime]]></string>
+    <string name="_bx_timeline_option_enable_cache_list"><![CDATA[Enable feed cache]]></string>
+    <string name="_bx_timeline_option_enable_editor_toolbar"><![CDATA[Enable post form editor toolbar]]></string>
 
-	<string name="_bx_timeline_form_post"><![CDATA[Post]]></string>
-	<string name="_bx_timeline_form_post_display_add"><![CDATA[Write Post]]></string>
-	<string name="_bx_timeline_form_post_display_add_public"><![CDATA[Write Public Post]]></string>
-	<string name="_bx_timeline_form_post_display_add_profile"><![CDATA[Write Profile Post]]></string>
-	<string name="_bx_timeline_form_post_display_edit"><![CDATA[Edit Post]]></string>
-	<string name="_bx_timeline_form_post_input_sys_owner_id"><![CDATA[Owner ID]]></string>
-	<string name="_bx_timeline_form_post_input_owner_id_own"><![CDATA[Your profile]]></string>
-	<string name="_bx_timeline_form_post_input_owner_id_following_group"><![CDATA[{0}]]></string>
-	<string name="_bx_timeline_form_post_input_sys_action"><![CDATA[Action]]></string>
-	<string name="_bx_timeline_form_post_input_sys_type"><![CDATA[Type]]></string>
-	<string name="_bx_timeline_form_post_input_sys_text"><![CDATA[Content]]></string>
-	<string name="_bx_timeline_form_post_input_text"><![CDATA[]]></string>
-	<string name="_bx_timeline_form_post_input_sys_object_privacy_view"><![CDATA[Visibility]]></string>
-        <string name="_bx_timeline_form_post_input_object_privacy_view"><![CDATA[Visibility]]></string>
-        <string name="_bx_timeline_form_post_input_sys_date"><![CDATA[Created at]]></string>
-        <string name="_bx_timeline_form_post_input_date"><![CDATA[Created at]]></string>
-        <string name="_bx_timeline_form_post_input_sys_date_published"><![CDATA[Publishing time]]></string>
-        <string name="_bx_timeline_form_post_input_date_published"><![CDATA[Publishing time]]></string>
-        <string name="_bx_timeline_form_post_input_date_published_info"><![CDATA[Leave empty to publish immediately.]]></string>
-	<string name="_bx_timeline_form_post_input_sys_link"><![CDATA[Link]]></string>
-	<string name="_bx_timeline_form_post_input_link_alt"><![CDATA[Add Link]]></string>
-	<string name="_bx_timeline_form_post_input_link_err_delete"><![CDATA[Cannot remove the link. Please report.]]></string>
-	<string name="_bx_timeline_form_post_input_sys_photo"><![CDATA[Photo]]></string>
-	<string name="_bx_timeline_form_post_input_photo"><![CDATA[]]></string>
-	<string name="_bx_timeline_form_post_input_photo_alt"><![CDATA[Add Photo]]></string>
-	<string name="_bx_timeline_form_post_input_sys_video"><![CDATA[Video]]></string>
-	<string name="_bx_timeline_form_post_input_video"><![CDATA[]]></string>
-	<string name="_bx_timeline_form_post_input_video_alt"><![CDATA[Add Video]]></string>
-	<string name="_bx_timeline_form_post_input_sys_attachments"><![CDATA[Attachments]]></string>
-	<string name="_bx_timeline_form_post_input_sys_do_submit"><![CDATA[Post]]></string>
-	<string name="_bx_timeline_form_post_input_do_submit"><![CDATA[Post]]></string>
-	<string name="_bx_timeline_form_post_input_sys_do_cancel"><![CDATA[Cancel]]></string>
-        <string name="_bx_timeline_form_post_input_do_cancel"><![CDATA[Cancel]]></string>
+    <string name="_bx_timeline_form_post"><![CDATA[Post]]></string>
+    <string name="_bx_timeline_form_post_display_add"><![CDATA[Write Post]]></string>
+    <string name="_bx_timeline_form_post_display_add_public"><![CDATA[Write Public Post]]></string>
+    <string name="_bx_timeline_form_post_display_add_profile"><![CDATA[Write Profile Post]]></string>
+    <string name="_bx_timeline_form_post_display_edit"><![CDATA[Edit Post]]></string>
+    <string name="_bx_timeline_form_post_input_sys_owner_id"><![CDATA[Owner ID]]></string>
+    <string name="_bx_timeline_form_post_input_owner_id_own"><![CDATA[Your profile]]></string>
+    <string name="_bx_timeline_form_post_input_owner_id_following_group"><![CDATA[{0}]]></string>
+    <string name="_bx_timeline_form_post_input_sys_action"><![CDATA[Action]]></string>
+    <string name="_bx_timeline_form_post_input_sys_type"><![CDATA[Type]]></string>
+    <string name="_bx_timeline_form_post_input_sys_text"><![CDATA[Content]]></string>
+    <string name="_bx_timeline_form_post_input_text"><![CDATA[]]></string>
+    <string name="_bx_timeline_form_post_input_sys_object_privacy_view"><![CDATA[Visibility]]></string>
+    <string name="_bx_timeline_form_post_input_object_privacy_view"><![CDATA[Visibility]]></string>
+    <string name="_bx_timeline_form_post_input_sys_date"><![CDATA[Created at]]></string>
+    <string name="_bx_timeline_form_post_input_date"><![CDATA[Created at]]></string>
+    <string name="_bx_timeline_form_post_input_sys_date_published"><![CDATA[Publishing time]]></string>
+    <string name="_bx_timeline_form_post_input_date_published"><![CDATA[Publishing time]]></string>
+    <string name="_bx_timeline_form_post_input_date_published_info"><![CDATA[Leave empty to publish immediately.]]></string>
+    <string name="_bx_timeline_form_post_input_sys_link"><![CDATA[Link]]></string>
+    <string name="_bx_timeline_form_post_input_link_alt"><![CDATA[Add Link]]></string>
+    <string name="_bx_timeline_form_post_input_link_err_delete"><![CDATA[Cannot remove the link. Please report.]]></string>
+    <string name="_bx_timeline_form_post_input_sys_photo"><![CDATA[Photo]]></string>
+    <string name="_bx_timeline_form_post_input_photo"><![CDATA[]]></string>
+    <string name="_bx_timeline_form_post_input_photo_alt"><![CDATA[Add Photo]]></string>
+    <string name="_bx_timeline_form_post_input_sys_video"><![CDATA[Video]]></string>
+    <string name="_bx_timeline_form_post_input_video"><![CDATA[]]></string>
+    <string name="_bx_timeline_form_post_input_video_alt"><![CDATA[Add Video]]></string>
+    <string name="_bx_timeline_form_post_input_sys_attachments"><![CDATA[Attachments]]></string>
+    <string name="_bx_timeline_form_post_input_sys_do_submit"><![CDATA[Post]]></string>
+    <string name="_bx_timeline_form_post_input_do_submit"><![CDATA[Post]]></string>
+    <string name="_bx_timeline_form_post_input_sys_do_cancel"><![CDATA[Cancel]]></string>
+    <string name="_bx_timeline_form_post_input_do_cancel"><![CDATA[Cancel]]></string>
 
-	<string name="_bx_timeline_form_attach_link"><![CDATA[Attach Link]]></string>
-	<string name="_bx_timeline_form_attach_link_display_add"><![CDATA[Attach Link]]></string>
-	<string name="_bx_timeline_form_attach_link_input_sys_url"><![CDATA[Url]]></string>
-	<string name="_bx_timeline_form_attach_link_input_url"><![CDATA[Add Link]]></string>
-	<string name="_bx_timeline_form_attach_link_input_url_err"><![CDATA[Correct Link is essential. Please, fill in this field.]]></string>
-	<string name="_bx_timeline_form_attach_link_input_sys_do_submit"><![CDATA[Add]]></string>
-	<string name="_bx_timeline_form_attach_link_input_do_submit"><![CDATA[Add]]></string>
-	<string name="_bx_timeline_form_attach_link_input_do_cancel"><![CDATA[Close]]></string>
+    <string name="_bx_timeline_form_attach_link"><![CDATA[Attach Link]]></string>
+    <string name="_bx_timeline_form_attach_link_display_add"><![CDATA[Attach Link]]></string>
+    <string name="_bx_timeline_form_attach_link_input_sys_url"><![CDATA[Url]]></string>
+    <string name="_bx_timeline_form_attach_link_input_url"><![CDATA[Add Link]]></string>
+    <string name="_bx_timeline_form_attach_link_input_url_err"><![CDATA[Correct Link is essential. Please, fill in this field.]]></string>
+    <string name="_bx_timeline_form_attach_link_input_sys_do_submit"><![CDATA[Add]]></string>
+    <string name="_bx_timeline_form_attach_link_input_do_submit"><![CDATA[Add]]></string>
+    <string name="_bx_timeline_form_attach_link_input_do_cancel"><![CDATA[Close]]></string>
 
-	<string name="_bx_timeline_privacy_view"><![CDATA[View event]]></string>
+    <string name="_bx_timeline_privacy_view"><![CDATA[View event]]></string>
 
-	<string name="_bx_timeline_acl_action_post"><![CDATA[Post]]></string>
-	<string name="_bx_timeline_acl_action_edit"><![CDATA[Edit Any Post]]></string>
-	<string name="_bx_timeline_acl_action_delete"><![CDATA[Delete Any Post]]></string>
-	<string name="_bx_timeline_acl_action_vote"><![CDATA[Vote]]></string>
-	<string name="_bx_timeline_acl_action_repost"><![CDATA[Repost]]></string>
-	<string name="_bx_timeline_acl_action_send"><![CDATA[Send]]></string>
-	<string name="_bx_timeline_acl_action_pin"><![CDATA['Pin here' Any Post]]></string>
-	<string name="_bx_timeline_acl_action_stick"><![CDATA['Pin for all' Any Post]]></string>
-	<string name="_bx_timeline_acl_action_promote"><![CDATA[Promote Any Post]]></string>
+    <string name="_bx_timeline_acl_action_post"><![CDATA[Post]]></string>
+    <string name="_bx_timeline_acl_action_edit"><![CDATA[Edit Any Post]]></string>
+    <string name="_bx_timeline_acl_action_delete"><![CDATA[Delete Any Post]]></string>
+    <string name="_bx_timeline_acl_action_vote"><![CDATA[Vote]]></string>
+    <string name="_bx_timeline_acl_action_repost"><![CDATA[Repost]]></string>
+    <string name="_bx_timeline_acl_action_send"><![CDATA[Send]]></string>
+    <string name="_bx_timeline_acl_action_pin"><![CDATA['Pin here' Any Post]]></string>
+    <string name="_bx_timeline_acl_action_stick"><![CDATA['Pin for all' Any Post]]></string>
+    <string name="_bx_timeline_acl_action_promote"><![CDATA[Promote Any Post]]></string>
 
-	<string name="_bx_timeline_page_title_sys_view"><![CDATA[Profile Feed]]></string>
-	<string name="_bx_timeline_page_title_view"><![CDATA[Profile Feed]]></string>
-	<string name="_bx_timeline_page_title_sys_view_home"><![CDATA[Public Feed]]></string>
+    <!-- Pages -->
+    <string name="_bx_timeline_page_title_sys_view"><![CDATA[Profile Feed]]></string>
+    <string name="_bx_timeline_page_title_view"><![CDATA[Profile Feed]]></string>
+    <string name="_bx_timeline_page_title_sys_view_home"><![CDATA[Public Feed]]></string>
     <string name="_bx_timeline_page_title_view_home"><![CDATA[Public Feed]]></string>
     <string name="_bx_timeline_page_title_sys_view_hot"><![CDATA[Hot Feed]]></string>
     <string name="_bx_timeline_page_title_view_hot"><![CDATA[Hot Feed]]></string>
-	<string name="_bx_timeline_page_title_sys_item"><![CDATA[Feed Item]]></string>
-	<string name="_bx_timeline_page_title_item"><![CDATA[Feed Item]]></string>
-	<string name="_bx_timeline_page_title_sys_item_brief"><![CDATA[Feed Item Preview]]></string>
+    <string name="_bx_timeline_page_title_sys_item"><![CDATA[Feed Item]]></string>
+    <string name="_bx_timeline_page_title_item"><![CDATA[Feed Item]]></string>
+    <string name="_bx_timeline_page_title_sys_item_brief"><![CDATA[Feed Item Preview]]></string>
     <string name="_bx_timeline_page_title_item_brief"><![CDATA[Feed Item Preview]]></string>
-	<string name="_bx_timeline_page_title_sys_account"><![CDATA[Feed]]></string>
-	<string name="_bx_timeline_page_title_account"><![CDATA[Feed]]></string>
-  <string name="_bx_timeline_page_title_sys_manage_administration"><![CDATA[Manage All]]></string>
-  <string name="_bx_timeline_page_title_manage"><![CDATA[Manage]]></string>
-	<string name="_bx_timeline_page_block_title_system_post_profile"><![CDATA[Post to Сontext Feed]]></string>
-	<string name="_bx_timeline_page_block_title_post_profile"><![CDATA[Post to Feed]]></string>
-	<string name="_bx_timeline_page_block_title_system_view_profile"><![CDATA[Profile Feed (Timeline)]]></string>
-	<string name="_bx_timeline_page_block_title_view_profile"><![CDATA[Profile Feed]]></string>
-	<string name="_bx_timeline_page_block_title_system_view_profile_outline"><![CDATA[Profile Feed (Outline)]]></string>
-	<string name="_bx_timeline_page_block_title_view_profile_outline"><![CDATA[Profile Feed]]></string>
-	<string name="_bx_timeline_page_block_title_item"><![CDATA[Item]]></string>
-	<string name="_bx_timeline_page_block_title_item_content"><![CDATA[Content]]></string>
-	<string name="_bx_timeline_page_block_title_item_info"><![CDATA[Info]]></string>
-	<string name="_bx_timeline_page_block_title_item_comments"><![CDATA[Comments]]></string>
-	<string name="_bx_timeline_page_block_title_system_post_account"><![CDATA[Post to Feed]]></string>
-	<string name="_bx_timeline_page_block_title_post_account"><![CDATA[Post to Feed]]></string>
-	<string name="_bx_timeline_page_block_title_system_view_account"><![CDATA[Feed (Timeline)]]></string>
-	<string name="_bx_timeline_page_block_title_view_account"><![CDATA[Feed]]></string>
-	<string name="_bx_timeline_page_block_title_system_view_account_outline"><![CDATA[Feed (Outline)]]></string>
-	<string name="_bx_timeline_page_block_title_view_account_outline"><![CDATA[Feed]]></string>
-	<string name="_bx_timeline_page_block_title_system_post_home"><![CDATA[Post to Public Feed]]></string>
-	<string name="_bx_timeline_page_block_title_post_home"><![CDATA[Post to Feed]]></string>
-	<string name="_bx_timeline_page_block_title_system_view_home"><![CDATA[Public Feed (Timeline)]]></string>
-	<string name="_bx_timeline_page_block_title_view_home"><![CDATA[Public Feed]]></string>
-	<string name="_bx_timeline_page_block_title_system_view_home_outline"><![CDATA[Public Feed (Outline)]]></string>
-	<string name="_bx_timeline_page_block_title_view_home_outline"><![CDATA[Public Feed]]></string>
-	<string name="_bx_timeline_page_block_title_system_view_hot"><![CDATA[Hot Feed (Timeline)]]></string>
+    <string name="_bx_timeline_page_title_sys_account"><![CDATA[Feed]]></string>
+    <string name="_bx_timeline_page_title_account"><![CDATA[Feed]]></string>
+    <string name="_bx_timeline_page_title_sys_manage_administration"><![CDATA[Manage All]]></string>
+    <string name="_bx_timeline_page_title_manage"><![CDATA[Manage]]></string>
+    <string name="_bx_timeline_page_block_title_system_post_profile"><![CDATA[Post to Сontext Feed]]></string>
+    <string name="_bx_timeline_page_block_title_post_profile"><![CDATA[Post to Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_profile"><![CDATA[Profile Feed (Timeline)]]></string>
+    <string name="_bx_timeline_page_block_title_view_profile"><![CDATA[Profile Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_profile_outline"><![CDATA[Profile Feed (Outline)]]></string>
+    <string name="_bx_timeline_page_block_title_view_profile_outline"><![CDATA[Profile Feed]]></string>
+    <string name="_bx_timeline_page_block_title_item"><![CDATA[Item]]></string>
+    <string name="_bx_timeline_page_block_title_item_content"><![CDATA[Content]]></string>
+    <string name="_bx_timeline_page_block_title_item_info"><![CDATA[Info]]></string>
+    <string name="_bx_timeline_page_block_title_item_comments"><![CDATA[Comments]]></string>
+    <string name="_bx_timeline_page_block_title_system_post_account"><![CDATA[Post to Feed]]></string>
+    <string name="_bx_timeline_page_block_title_post_account"><![CDATA[Post to Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_account"><![CDATA[Feed (Timeline)]]></string>
+    <string name="_bx_timeline_page_block_title_view_account"><![CDATA[Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_account_outline"><![CDATA[Feed (Outline)]]></string>
+    <string name="_bx_timeline_page_block_title_view_account_outline"><![CDATA[Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_views_timeline"><![CDATA[All Feeds (Timeline)]]></string>
+    <string name="_bx_timeline_page_block_title_views_timeline"><![CDATA[Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_views_outline"><![CDATA[All Feeds (Outline)]]></string>
+    <string name="_bx_timeline_page_block_title_views_outline"><![CDATA[Feed]]></string>        
+    <string name="_bx_timeline_page_block_title_system_post_home"><![CDATA[Post to Public Feed]]></string>
+    <string name="_bx_timeline_page_block_title_post_home"><![CDATA[Post to Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_home"><![CDATA[Public Feed (Timeline)]]></string>
+    <string name="_bx_timeline_page_block_title_view_home"><![CDATA[Public Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_home_outline"><![CDATA[Public Feed (Outline)]]></string>
+    <string name="_bx_timeline_page_block_title_view_home_outline"><![CDATA[Public Feed]]></string>
+    <string name="_bx_timeline_page_block_title_system_view_hot"><![CDATA[Hot Feed (Timeline)]]></string>
     <string name="_bx_timeline_page_block_title_view_hot"><![CDATA[Hot Feed]]></string>
     <string name="_bx_timeline_page_block_title_system_view_hot_outline"><![CDATA[Hot Feed (Outline)]]></string>
     <string name="_bx_timeline_page_block_title_view_hot_outline"><![CDATA[Hot Feed]]></string>
-	<string name="_bx_timeline_page_block_title_browse_cmts"><![CDATA[Feeds' Comments]]></string>
-  <string name="_bx_timeline_page_block_title_system_manage_administration"><![CDATA[Manage All]]></string>
-  <string name="_bx_timeline_page_block_title_manage"><![CDATA[Manage]]></string>
+    <string name="_bx_timeline_page_block_title_browse_cmts"><![CDATA[Feeds' Comments]]></string>
+    <string name="_bx_timeline_page_block_title_system_manage_administration"><![CDATA[Manage All]]></string>
+    <string name="_bx_timeline_page_block_title_manage"><![CDATA[Manage]]></string>
+
+    <!-- Menus -->
+    <string name="_bx_timeline_menu_title_view"><![CDATA[View]]></string>
+    <string name="_bx_timeline_menu_set_title_view"><![CDATA[View]]></string>
+    <string name="_bx_timeline_menu_item_title_system_news"><![CDATA[News]]></string>
+    <string name="_bx_timeline_menu_item_title_news"><![CDATA[News]]></string>
+    <string name="_bx_timeline_menu_item_title_system_feed"><![CDATA[Feed]]></string>
+    <string name="_bx_timeline_menu_item_title_feed"><![CDATA[Feed]]></string>
+    <string name="_bx_timeline_menu_item_title_system_public"><![CDATA[Public]]></string>
+    <string name="_bx_timeline_menu_item_title_public"><![CDATA[Public]]></string>
+    <string name="_bx_timeline_menu_item_title_system_hot"><![CDATA[Hot]]></string>
+    <string name="_bx_timeline_menu_item_title_hot"><![CDATA[Hot]]></string>
 
-  <string name="_bx_timeline_menu_item_view_all"><![CDATA[All posts]]></string>
+    <string name="_bx_timeline_menu_item_view_all"><![CDATA[All posts]]></string>
     <string name="_bx_timeline_menu_item_view_owner"><![CDATA[Posts by {0}]]></string>
     <string name="_bx_timeline_menu_item_view_other"><![CDATA[Posts by others]]></string>
     <string name="_bx_timeline_menu_item_get_rss"><![CDATA[RSS]]></string>
@@ -141,7 +157,7 @@
     <string name="_bx_timeline_menu_item_title_item_send"><![CDATA[Send to Friend]]></string>
     <string name="_bx_timeline_menu_item_title_system_admt_timeline"><![CDATA[Timeline]]></string>
     <string name="_bx_timeline_menu_item_title_admt_timeline"><![CDATA[Timeline]]></string>
-    
+
     <string name="_bx_timeline_menu_title_item_manage"><![CDATA[Manage Item]]></string>
     <string name="_bx_timeline_menu_set_title_item_manage"><![CDATA[Manage Item]]></string>
     <string name="_bx_timeline_menu_item_title_system_item_pin"><![CDATA[Pin here]]></string>
@@ -196,13 +212,13 @@
     <string name="_bx_timeline_menu_item_title_system_view_timeline_view"><![CDATA[Timeline]]></string>
     <string name="_bx_timeline_menu_item_title_view_timeline_view"><![CDATA[Timeline]]></string>
 
-  <string name="_bx_timeline_grid_column_title_adm_active"><![CDATA[Active]]></string>
-  <string name="_bx_timeline_grid_column_title_adm_description"><![CDATA[Event]]></string>
-  <string name="_bx_timeline_grid_column_title_adm_added"><![CDATA[Added]]></string>
-  <string name="_bx_timeline_grid_column_title_adm_author"><![CDATA[Author]]></string>
-  <string name="_bx_timeline_grid_action_title_adm_delete"><![CDATA[Delete]]></string>
-  <string name="_bx_timeline_grid_txt_account_manager"><![CDATA[Redirect to manage account.]]></string>
-  
+    <string name="_bx_timeline_grid_column_title_adm_active"><![CDATA[Active]]></string>
+    <string name="_bx_timeline_grid_column_title_adm_description"><![CDATA[Event]]></string>
+    <string name="_bx_timeline_grid_column_title_adm_added"><![CDATA[Added]]></string>
+    <string name="_bx_timeline_grid_column_title_adm_author"><![CDATA[Author]]></string>
+    <string name="_bx_timeline_grid_action_title_adm_delete"><![CDATA[Delete]]></string>
+    <string name="_bx_timeline_grid_txt_account_manager"><![CDATA[Redirect to manage account.]]></string>
+
     <string name="_bx_timeline_alert_module_timeline_common_post"><![CDATA[Timeline (post)]]></string>
     <string name="_bx_timeline_alert_module_timeline_common_repost"><![CDATA[Timeline (repost)]]></string>
     <string name="_bx_timeline_alert_action_added"><![CDATA[add]]></string>
@@ -214,35 +230,35 @@
     <string name="_bx_timeline_alert_action_repost_follow_member"><![CDATA[New content repost]]></string>
     <string name="_bx_timeline_alert_action_repost_follow_context"><![CDATA[New content repost]]></string>
 
-	<string name="_bx_timeline_txt_msg_no_results"><![CDATA[Empty]]></string>
-	<string name="_bx_timeline_txt_msg_performed_action"><![CDATA[The action was successfully performed.]]></string>
-	<string name="_bx_timeline_txt_msg_posted"><![CDATA[Posted successfully.]]></string>
-  <string name="_bx_timeline_grid_action_err_delete"><![CDATA[Cannot delete the selected timeline events(s).]]></string>
-	<string name="_bx_timeline_txt_err_cannot_perform_action"><![CDATA[Cannot perform action. Please report.]]></string>
-	<string name="_bx_timeline_txt_err_empty_post"><![CDATA[The post is empty.]]></string>
+    <string name="_bx_timeline_txt_msg_no_results"><![CDATA[Empty]]></string>
+    <string name="_bx_timeline_txt_msg_performed_action"><![CDATA[The action was successfully performed.]]></string>
+    <string name="_bx_timeline_txt_msg_posted"><![CDATA[Posted successfully.]]></string>
+    <string name="_bx_timeline_grid_action_err_delete"><![CDATA[Cannot delete the selected timeline events(s).]]></string>
+    <string name="_bx_timeline_txt_err_cannot_perform_action"><![CDATA[Cannot perform action. Please report.]]></string>
+    <string name="_bx_timeline_txt_err_empty_post"><![CDATA[The post is empty.]]></string>
 
-        <string name="_bx_timeline_txt_to"><![CDATA[to]]></string>
-	<string name="_bx_timeline_txt_load_more"><![CDATA[Load More]]></string>
-	<string name="_bx_timeline_txt_or_jump_to"><![CDATA[... or jump to:]]></string>
-	<string name="_bx_timeline_txt_jump_to_n_year"><![CDATA[Jump to {0} year]]></string>
-	<string name="_bx_timeline_txt_jump_to_recent"><![CDATA[Jump to recent posts]]></string>
-        <string name="_bx_timeline_txt_status_deleted"><![CDATA[Deleted]]></string>
-        <string name="_bx_timeline_txt_hot"><![CDATA[Hot post]]></string>
-	<string name="_bx_timeline_txt_pinned"><![CDATA[Pinned post]]></string>
-        <string name="_bx_timeline_txt_sticked"><![CDATA[Pinned for all post]]></string>
-	<string name="_bx_timeline_txt_promoted"><![CDATA[Promoted]]></string>
-        <string name="_bx_timeline_txt_note_scheduled_awaiting"><![CDATA[Update publishing date is {0}]]></string>
-        <string name="_bx_timeline_txt_note_processing_awaiting"><![CDATA[Update will be published as soon as video is converted]]></string>
-        <string name="_bx_timeline_txt_note_processing_failed"><![CDATA[Update isn't published because video conversion failed, edit video to fix the issue.]]></string>
-	<string name="_bx_timeline_txt_rss_caption"><![CDATA[{0}'s timeline]]></string>
-	<string name="_bx_timeline_txt_added_sample"><![CDATA[added {0}]]></string>
-	<string name="_bx_timeline_txt_user_added_sample"><![CDATA[{0} added {1}]]></string>
-	<string name="_bx_timeline_txt_user_repost"><![CDATA[{0}'s repost]]></string>
-	<string name="_bx_timeline_txt_user_reposted_user_sample"><![CDATA[{0} reposted {1}'s {2}]]></string>
-	<string name="_bx_timeline_txt_sample"><![CDATA[post]]></string>
-	<string name="_bx_timeline_txt_sample_with_article"><![CDATA[a post]]></string>
-	<string name="_bx_timeline_txt_sample_ext"><![CDATA[timeline post]]></string>
-	<string name="_bx_timeline_txt_sample_comment_single"><![CDATA[comment to timeline post]]></string>
+    <string name="_bx_timeline_txt_to"><![CDATA[to]]></string>
+    <string name="_bx_timeline_txt_load_more"><![CDATA[Load More]]></string>
+    <string name="_bx_timeline_txt_or_jump_to"><![CDATA[... or jump to:]]></string>
+    <string name="_bx_timeline_txt_jump_to_n_year"><![CDATA[Jump to {0} year]]></string>
+    <string name="_bx_timeline_txt_jump_to_recent"><![CDATA[Jump to recent posts]]></string>
+    <string name="_bx_timeline_txt_status_deleted"><![CDATA[Deleted]]></string>
+    <string name="_bx_timeline_txt_hot"><![CDATA[Hot post]]></string>
+    <string name="_bx_timeline_txt_pinned"><![CDATA[Pinned post]]></string>
+    <string name="_bx_timeline_txt_sticked"><![CDATA[Pinned for all post]]></string>
+    <string name="_bx_timeline_txt_promoted"><![CDATA[Promoted]]></string>
+    <string name="_bx_timeline_txt_note_scheduled_awaiting"><![CDATA[Update publishing date is {0}]]></string>
+    <string name="_bx_timeline_txt_note_processing_awaiting"><![CDATA[Update will be published as soon as video is converted]]></string>
+    <string name="_bx_timeline_txt_note_processing_failed"><![CDATA[Update isn't published because video conversion failed, edit video to fix the issue.]]></string>
+    <string name="_bx_timeline_txt_rss_caption"><![CDATA[{0}'s timeline]]></string>
+    <string name="_bx_timeline_txt_added_sample"><![CDATA[added {0}]]></string>
+    <string name="_bx_timeline_txt_user_added_sample"><![CDATA[{0} added {1}]]></string>
+    <string name="_bx_timeline_txt_user_repost"><![CDATA[{0}'s repost]]></string>
+    <string name="_bx_timeline_txt_user_reposted_user_sample"><![CDATA[{0} reposted {1}'s {2}]]></string>
+    <string name="_bx_timeline_txt_sample"><![CDATA[post]]></string>
+    <string name="_bx_timeline_txt_sample_with_article"><![CDATA[a post]]></string>
+    <string name="_bx_timeline_txt_sample_ext"><![CDATA[timeline post]]></string>
+    <string name="_bx_timeline_txt_sample_comment_single"><![CDATA[comment to timeline post]]></string>
     <string name="_bx_timeline_txt_sample_vote_single"><![CDATA[vote to timeline post]]></string>
     <string name="_bx_timeline_txt_sample_reaction_single"><![CDATA['{0}' reaction to timeline post]]></string>
     <string name="_bx_timeline_txt_sample_score_up_single"><![CDATA[score up vote to timeline post]]></string>

+ 1 - 1
modules/boonex/timeline/install/sql/disable.sql

@@ -6,7 +6,7 @@ DELETE FROM `sys_pages_blocks` WHERE `module` = 'bx_timeline' OR `object` IN('bx
 -- MENU
 DELETE FROM `sys_objects_menu` WHERE `module` = 'bx_timeline';
 DELETE FROM `sys_menu_sets` WHERE `module` = 'bx_timeline';
-DELETE FROM `sys_menu_items` WHERE `module` = 'bx_timeline' OR `set_name` IN('bx_timeline_menu_item_share', 'bx_timeline_menu_item_manage', 'bx_timeline_menu_item_actions', 'bx_timeline_menu_item_meta', 'bx_timeline_menu_post_attachments');
+DELETE FROM `sys_menu_items` WHERE `module` = 'bx_timeline' OR `set_name` IN('bx_timeline_menu_view', 'bx_timeline_menu_item_share', 'bx_timeline_menu_item_manage', 'bx_timeline_menu_item_actions', 'bx_timeline_menu_item_meta', 'bx_timeline_menu_post_attachments');
 
 
 -- SETTINGS

+ 28 - 4
modules/boonex/timeline/install/sql/enable.sql

@@ -32,16 +32,16 @@ SET @iPBCellDashboard = 2;
 SET @iPBOrderDashboard = 1; --(SELECT IFNULL(MAX(`order`), 0) FROM `sys_pages_blocks` WHERE `object` = 'sys_dashboard' AND `cell_id` = @iPBCellDashboard LIMIT 1);
 INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES
 ('sys_dashboard', @iPBCellDashboard, 'bx_timeline', '_bx_timeline_page_block_title_system_post_account', '_bx_timeline_page_block_title_post_account', 11, 2147483644, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_post_account";}', 0, 1, 1, @iPBOrderDashboard),
-('sys_dashboard', @iPBCellDashboard, 'bx_timeline', '_bx_timeline_page_block_title_system_view_account', '_bx_timeline_page_block_title_view_account', 0, 2147483644, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_view_account";}', 0, 1, 1, @iPBOrderDashboard + 1),
-('sys_dashboard', @iPBCellDashboard, 'bx_timeline', '_bx_timeline_page_block_title_system_view_account_outline', '_bx_timeline_page_block_title_view_account_outline', 0, 2147483644, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:30:"get_block_view_account_outline";}', 0, 1, 0, @iPBOrderDashboard + 1);
+('sys_dashboard', @iPBCellDashboard, 'bx_timeline', '_bx_timeline_page_block_title_system_views_timeline', '_bx_timeline_page_block_title_views_timeline', 3, 2147483644, 'service', 'a:3:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:24:"get_block_views_timeline";s:6:"params";a:1:{i:0;s:4:"feed";}}', 0, 0, 1, @iPBOrderDashboard + 1),
+('sys_dashboard', @iPBCellDashboard, 'bx_timeline', '_bx_timeline_page_block_title_system_views_outline', '_bx_timeline_page_block_title_views_outline', 3, 2147483644, 'service', 'a:3:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:23:"get_block_views_outline";s:6:"params";a:1:{i:0;s:4:"feed";}}', 0, 0, 0, @iPBOrderDashboard + 1);
 
 -- PAGES: add page block on home
 SET @iPBCellHome = 1;
 SET @iPBOrderHome = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_pages_blocks` WHERE `object` = 'sys_home' AND `cell_id` = @iPBCellHome ORDER BY `order` DESC LIMIT 1);
 INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
 ('sys_home', @iPBCellHome, 'bx_timeline', '_bx_timeline_page_block_title_system_post_home', '_bx_timeline_page_block_title_post_home', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:19:"get_block_post_home";}', 0, 1, 1, @iPBOrderHome + 1),
-('sys_home', @iPBCellHome, 'bx_timeline', '_bx_timeline_page_block_title_system_view_home', '_bx_timeline_page_block_title_view_home', 0, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:19:"get_block_view_home";}', 0, 1, 0, @iPBOrderHome + 2),
-('sys_home', @iPBCellHome, 'bx_timeline', '_bx_timeline_page_block_title_system_view_home_outline', '_bx_timeline_page_block_title_view_home_outline', 0, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:27:"get_block_view_home_outline";}', 0, 1, 1, @iPBOrderHome + 3);
+('sys_home', @iPBCellHome, 'bx_timeline', '_bx_timeline_page_block_title_system_views_timeline', '_bx_timeline_page_block_title_views_timeline', 3, 2147483647, 'service', 'a:3:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:24:"get_block_views_timeline";s:6:"params";a:1:{i:0;s:6:"public";}}', 0, 0, 1, @iPBOrderHome + 2),
+('sys_home', @iPBCellHome, 'bx_timeline', '_bx_timeline_page_block_title_system_views_outline', '_bx_timeline_page_block_title_views_outline', 3, 2147483647, 'service', 'a:3:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:23:"get_block_views_outline";s:6:"params";a:1:{i:0;s:6:"public";}}', 0, 0, 0, @iPBOrderHome + 3);
 
 -- PAGES: add page block to profiles modules (trigger* page objects are processed separately upon modules enable/disable)
 SET @iPBCellProfile = 2;
@@ -63,6 +63,30 @@ INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `t
 ('bx_timeline_administration', 1, 'bx_timeline', '_bx_timeline_page_block_title_system_manage_administration', '_bx_timeline_page_block_title_manage', 11, 192, 'service', 'a:3:{s:6:\"module\";s:11:\"bx_timeline\";s:6:\"method\";s:12:\"manage_tools\";s:6:\"params\";a:1:{i:0;s:14:\"administration\";}}', 0, 1, 0);
 
 
+-- PAGE: service blocks
+SET @iBlockOrder = (SELECT `order` FROM `sys_pages_blocks` WHERE `object` = '' AND `cell_id` = 0 ORDER BY `order` DESC LIMIT 1);
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('', 0, 'bx_timeline', '_bx_timeline_page_block_title_system_views_timeline', '_bx_timeline_page_block_title_views_timeline', 3, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:24:"get_block_views_timeline";}', 0, 1, 1, @iPBOrderHome + 1),
+('', 0, 'bx_timeline', '_bx_timeline_page_block_title_system_views_outline', '_bx_timeline_page_block_title_views_outline', 3, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:23:"get_block_views_outline";}', 0, 1, 1, @iPBOrderHome + 2),
+('', 0, 'bx_timeline', '_bx_timeline_page_block_title_system_view_home', '_bx_timeline_page_block_title_view_home', 0, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:19:"get_block_view_home";}', 0, 1, 1, @iBlockOrder + 3),
+('', 0, 'bx_timeline', '_bx_timeline_page_block_title_system_view_home_outline', '_bx_timeline_page_block_title_view_home_outline', 0, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:27:"get_block_view_home_outline";}', 0, 1, 1, @iBlockOrder + 4),
+('', 0, 'bx_timeline', '_bx_timeline_page_block_title_system_view_account', '_bx_timeline_page_block_title_view_account', 0, 2147483644, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:22:"get_block_view_account";}', 0, 1, 1, @iBlockOrder + 5),
+('', 0, 'bx_timeline', '_bx_timeline_page_block_title_system_view_account_outline', '_bx_timeline_page_block_title_view_account_outline', 0, 2147483644, 'service', 'a:2:{s:6:"module";s:11:"bx_timeline";s:6:"method";s:30:"get_block_view_account_outline";}', 0, 1, 1, @iBlockOrder + 6);
+
+
+-- MENU: Feeds
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_timeline_menu_view', '_bx_timeline_menu_title_view', 'bx_timeline_menu_view', 'bx_timeline', 22, 0, 1, 'BxTimelineMenuView', 'modules/boonex/timeline/classes/BxTimelineMenuView.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_timeline_menu_view', 'bx_timeline', '_bx_timeline_menu_set_title_view', 0);
+
+INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES
+('bx_timeline_menu_view', 'bx_timeline', 'news', '_bx_timeline_menu_item_title_system_news', '_bx_timeline_menu_item_title_news', 'javascript:void(0)', 'javascript:{js_object_view}.changeView(this, ''news'')', '_self', '', '', 2147483647, 1, 0, 1),
+('bx_timeline_menu_view', 'bx_timeline', 'feed', '_bx_timeline_menu_item_title_system_feed', '_bx_timeline_menu_item_title_feed', 'javascript:void(0)', 'javascript:{js_object_view}.changeView(this, ''feed'')', '_self', '', '', 2147483647, 1, 0, 2),
+('bx_timeline_menu_view', 'bx_timeline', 'public', '_bx_timeline_menu_item_title_system_public', '_bx_timeline_menu_item_title_public', 'javascript:void(0)', 'javascript:{js_object_view}.changeView(this, ''public'')', '_self', '', '', 2147483647, 1, 0, 3),
+('bx_timeline_menu_view', 'bx_timeline', 'hot', '_bx_timeline_menu_item_title_system_hot', '_bx_timeline_menu_item_title_hot', 'javascript:void(0)', 'javascript:{js_object_view}.changeView(this, ''hot'')', '_self', '', '', 2147483647, 1, 0, 4);
+
 -- MENU: Item Share (Repost, Send to Friend, etc)
 INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
 ('bx_timeline_menu_item_share', '_bx_timeline_menu_title_item_share', 'bx_timeline_menu_item_share', 'bx_timeline', 6, 0, 1, 'BxTimelineMenuItemShare', 'modules/boonex/timeline/classes/BxTimelineMenuItemShare.php');

+ 31 - 11
modules/boonex/timeline/js/main.js

@@ -221,6 +221,11 @@ BxTimelineMain.prototype.loadingInBlock = function(e, bShow) {
     bx_loading(oParent, bShow);
 };
 
+BxTimelineMain.prototype.loadingInBlockHeaderCustom = function(e, bShow) {
+    var oParent = $(e).length ? $(e).parents('.bx-tl-v-header:first') : $('body'); 
+    bx_loading(oParent, bShow);
+};
+
 BxTimelineMain.prototype.loadingInPopup = function(e, bShow) {
     var oParent = $(e).length ? $(e).parents('.bx-popup-content:first') : $('body'); 
     bx_loading(oParent, bShow);
@@ -236,8 +241,8 @@ BxTimelineMain.prototype.loadingIn = function(e, bShow) {
         this.loadingInItem(e, bShow);
     else if(bElement && oElement.parents('.bx-popup-content:first').length > 0)
         this.loadingInPopup(e, bShow);
-    else if(bElement && oElement.parents('.bx-db-container:first').length > 0)
-        this.loadingInBlock(e, bShow);
+    else if(bElement && oElement.parents('.bx-tl-v-header:first').length > 0)
+        this.loadingInBlockHeaderCustom(e, bShow);
     else 
         bx_loading($('body'), bShow);
 };
@@ -285,30 +290,45 @@ BxTimelineMain.prototype._getView = function(oElement) {
     return '';
 };
 
-BxTimelineMain.prototype._getName = function(oData)
+BxTimelineMain.prototype._getName = function(oData, oRules)
 {
+    oRules = jQuery.extend({}, oRules);
+
+    var bWithView = oRules.with_view === undefined || oRules.with_view === true;
+    var bWithType = oRules.with_type === undefined || oRules.with_type === true;
+    var bWithOwner = oRules.with_owner !== undefined && oRules.with_owner === true;
+    var sGlue = oRules.glue !== undefined && oRules.glue ? oRules.glue : '_';
+
     var aAddons = [];
     if(oData['name'])
         aAddons.push(oData['name']);
     else {
-        if(oData['view'])
+        if(bWithView && oData['view'])
             aAddons.push(oData['view']);
 
-        if(oData['type'])
+        if(bWithType && oData['type'])
             aAddons.push(oData['type']);
     }
 
-    return aAddons.length > 0 ? aAddons.join('_') : '';
+    if(bWithOwner)
+        aAddons.push(this._iOwnerId);
+
+    return aAddons.length > 0 ? aAddons.join(sGlue) : '';
 };
 
-BxTimelineMain.prototype._getHtmlId = function(sKey, oData, bWhole, bHash)
+BxTimelineMain.prototype._getHtmlId = function(sKey, oData, oRules)
 {
-    var sDiv = '_';
-    var sHtmlId = this.sId  + sDiv + sKey + sDiv + this._getName(oData) + (bWhole != undefined && !bWhole ? sDiv : '');
-    if(bHash != undefined && !bHash)
+    oRules = jQuery.extend({}, oRules);
+
+    var bWhole = oRules.whole === undefined || oRules.whole === true;
+    var bHash = oRules.hash === undefined || oRules.hash === true;
+    var sGlue = oRules.glue !== undefined && oRules.glue ? oRules.glue : '_';
+
+    var sHtmlId = this.sId  + sGlue + sKey + sGlue + this._getName(oData, oRules) + (!bWhole ? sGlue : '');
+    if(!bHash)
         sHtmlId = sHtmlId.substr(1);
 
-    return sHtmlId.replace(new RegExp(sDiv,'g'), '-');
+    return sHtmlId.replace(new RegExp(sGlue, 'g'), '-');
 };
 
 BxTimelineMain.prototype._getDefaultData = function() {

+ 47 - 11
modules/boonex/timeline/js/view.js

@@ -224,6 +224,42 @@ BxTimelineView.prototype.playVideos = function(oEvents, fOffsetStart, fOffsetSto
     });
 };
 
+BxTimelineView.prototype.changeView = function(oLink, sType)
+{
+    var oViews = $(this._getHtmlId('views_content', this._oRequestParams, {with_type: false})); 
+
+    this._oRequestParams.type = sType;
+
+    var sView = this._getHtmlId('main', this._oRequestParams);
+    if(oViews.find(sView).length !== 0) {
+        oViews.children(':visible').hide().siblings(sView).show();
+        return;
+    }
+
+    var $this = this;
+    var oData = this._getDefaultData(oLink);
+
+    this.loadingIn(oLink, true);
+
+    jQuery.get (
+        this._sActionsUrl + 'get_view',
+        oData,
+        function(oResponse) {
+            if(oLink)
+                $this.loadingIn(oLink, false);
+
+            if(!oResponse.content)
+                return;
+
+            var oContent = $(oResponse.content);
+            oContent.filter(sView).bxProcessHtml().hide();
+
+            oViews.append(oContent).children(':visible').hide().siblings(sView).show();
+        },
+        'json'
+    );
+};
+
 BxTimelineView.prototype.changePage = function(oLink, iStart, iPerPage)
 {
     var $this = this;
@@ -303,7 +339,7 @@ BxTimelineView.prototype.showCalendar = function(oLink)
 
     var sClassProcessed = this.sSP + '-datepicker-processed';
     if(!oInput.hasClass(sClassProcessed)) {
-        oInput.datetimepicker({
+        oInput.datepicker({
             changeYear: true,
             changeMonth: true,
             dateFormat: 'yy-mm-dd',
@@ -315,7 +351,7 @@ BxTimelineView.prototype.showCalendar = function(oLink)
         oInput.addClass(sClassProcessed);
     }
 
-    oInput.datetimepicker('show');
+    oInput.datepicker('show');
 };
 
 BxTimelineView.prototype.showMore = function(oLink)
@@ -337,7 +373,7 @@ BxTimelineView.prototype.showItem = function(oLink, iId, sMode, oParams)
 
     $(window).dolPopupAjax({
         id: {
-            value: this._getHtmlId('item_popup', this._oRequestParams, false, false) + iId, 
+            value: this._getHtmlId('item_popup', this._oRequestParams, {whole: false, hash: false}) + iId, 
             force: true
         },
         url: bx_append_url_params(this._sActionsUrl + 'get_item_brief', oData),
@@ -413,7 +449,7 @@ BxTimelineView.prototype.promotePost = function(oLink, iId, iWay)
         }
     });
 
-    var oLoadingContainer = $(this._getHtmlId('item', this._oRequestParams, false) + iId);
+    var oLoadingContainer = $(this._getHtmlId('item', this._oRequestParams, {whole: false}) + iId);
 
     this.loadingInItem(oLoadingContainer, true);
 
@@ -488,7 +524,7 @@ BxTimelineView.prototype.editPost = function(oLink, iId)
 
     $(oLink).parents('.bx-popup-applied:first:visible').dolPopupHide();
 
-    var oItem = this.oView.find(this._getHtmlId('item', this._oRequestParams, false) + iId);
+    var oItem = this.oView.find(this._getHtmlId('item', this._oRequestParams, {whole: false}) + iId);
 
     var oContent = oItem.find('.' + this.sClassItemContent);
     if(oContent.find('form').length) {
@@ -519,7 +555,7 @@ BxTimelineView.prototype.onEditPost = function(oData)
     if(!oData || !oData.id)
         return;
 
-    var oItem = $(this._getHtmlId('item', this._oRequestParams, false) + oData.id);
+    var oItem = $(this._getHtmlId('item', this._oRequestParams, {whole: false}) + oData.id);
 
     this.loadingInItem(oItem, false);
 
@@ -547,7 +583,7 @@ BxTimelineView.prototype.deletePost = function(oLink, iId)
         var oData = $this._getDefaultData();
         oData['id'] = iId;
 
-        $this.loadingInItem($($this._getHtmlId('item', $this._oRequestParams, false) + iId), true);
+        $this.loadingInItem($($this._getHtmlId('item', $this._oRequestParams, {whole: false}) + iId), true);
 
         $.post(
             $this._sActionsUrl + 'delete/',
@@ -563,7 +599,7 @@ BxTimelineView.prototype.deletePost = function(oLink, iId)
 BxTimelineView.prototype.onDeletePost = function(oData)
 {
     var $this = this;
-    var oItem = $(this._getHtmlId('item', this._oRequestParams, false) + oData.id);
+    var oItem = $(this._getHtmlId('item', this._oRequestParams, {whole: false}) + oData.id);
 
     //--- Delete from 'Timeline' (if available)
     if(this.bViewTimeline) {
@@ -861,7 +897,7 @@ BxTimelineView.prototype._onGetPost = function(oData)
         return;
 
     var $this = this;
-    var sItem = this._getHtmlId('item', this._oRequestParams, false) + oData.id;
+    var sItem = this._getHtmlId('item', this._oRequestParams, {whole:false}) + oData.id;
     this.oView.find(sItem).replaceWith($(oData.item).bxProcessHtml());
     this.oView.find(sItem).find('.bx-tl-item-text .bx-tl-content').checkOverflowHeight(this.sSP + '-overflow', function(oElement) {
         $this.onFindOverflow(oElement);
@@ -879,7 +915,7 @@ BxTimelineView.prototype._markPost = function(oLink, iId, iWay, sAction)
         }
     });
 
-    this.loadingInItem($(this._getHtmlId('item', this._oRequestParams, false) + iId), true);
+    this.loadingInItem($(this._getHtmlId('item', this._oRequestParams, {whole:false}) + iId), true);
 
     $.post(
         this._sActionsUrl + sAction + '/',
@@ -894,7 +930,7 @@ BxTimelineView.prototype._markPost = function(oLink, iId, iWay, sAction)
 BxTimelineView.prototype._onMarkPost = function(oData, sAction)
 {
     var $this = this;
-    var sItem = this._getHtmlId('item', this._oRequestParams, false) + oData.id;
+    var sItem = this._getHtmlId('item', this._oRequestParams, {whole:false}) + oData.id;
 
     this._oRequestParams.start = 0;
 

+ 11 - 0
modules/boonex/timeline/template/block_views.html

@@ -0,0 +1,11 @@
+<div id="__html_id__" class="__style_prefix__-views">
+    <div class="__style_prefix__-v-header">
+        <div class="__style_prefix__-v-title bx-def-padding-leftright bx-def-border-bottom bx-def-box-sizing">__title__</div>
+        <div class="__style_prefix__-v-submenu">
+            <div class="__style_prefix__-v-submenu-cnt">__menu__</div>
+        </div>
+    </div>
+    <div class="__style_prefix__-v-gap bx-def-padding">
+        <div id="__html_id_content__" class="__style_prefix__-v-cnt">__content__</div>
+    </div>
+</div>

+ 146 - 0
modules/boonex/timeline/template/css/view.css

@@ -1,6 +1,152 @@
 /*--- General section ---*/
 
 
+/*--- Views Block Style ---*/
+.bx-tl-views {
+    position: relative;
+}
+
+.bx-tl-views .bx-loading-ajax {
+    display: -webkit-flex;
+    display: flex;
+    -webkit-align-items: center;
+    align-items: center;
+    -webkit-justify-content: center;
+    justify-content: center;
+
+    top: 0;
+    width: 100%;
+    height: 100%;
+}
+
+.bx-tl-v-header {
+    position: relative;
+    display: -webkit-flex;
+    display: flex;
+
+    border-bottom-color: #e6f0fa;
+    border-bottom-width: 2px;
+}
+.bx-tl-v-title,
+.bx-tl-v-submenu {
+    -webkit-flex: 0 1 auto; 
+    -ms-flex:  0 1 auto; 
+    flex:  0 1 auto;
+    line-height: 3.125rem;
+}
+.bx-tl-v-title,
+.bx-tl-v-submenu-cnt {
+    height: 3.125rem;
+}
+
+.bx-tl-v-title {
+    -webkit-flex-grow: 3;
+    flex-grow: 3;
+
+    border-bottom: 2px solid rgba(0,0,0,0.1);
+
+    white-space: nowrap;
+    font-size: 1rem;
+    font-weight: 400;
+}
+.bx-tl-v-submenu {
+    overflow-x: auto;
+    overflow-y: hidden;
+
+    -webkit-overflow-scrolling: touch;
+}
+.bx-tl-v-submenu::-webkit-scrollbar {
+    width: 0.5rem;
+}
+.bx-tl-v-submenu::-webkit-scrollbar-track {
+    -webkit-border-radius: 0.5rem;
+    border-radius: 0.5rem;
+
+    background-color: rgba(0, 0, 0, 0.1); 
+}
+.bx-tl-v-submenu::-webkit-scrollbar-thumb {
+    -webkit-border-radius: 0.5rem;
+    border-radius: 0.5rem;
+
+    background: rgba(255, 255, 255, 0.9); 
+    -webkit-box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.5);
+}
+.bx-tl-v-submenu::-webkit-scrollbar-thumb:window-inactive {
+    background: rgba(255, 255, 255, 0.4); 
+}
+.bx-tl-v-submenu-cnt ul {
+    display: -webkit-flex;
+    display: flex;
+}
+.bx-tl-v-submenu-cnt ul li {
+    -webkit-flex: 0 1 auto; 
+    -ms-flex:  0 1 auto; 
+    flex:  0 1 auto;
+    box-sizing: border-box;
+    height: 3.125rem;
+
+    border-bottom: 2px solid rgba(0,0,0,0.1);
+    border-radius: 0;
+
+    line-height: 3.125rem;
+    white-space: nowrap;
+    
+}
+.bx-tl-v-submenu-cnt ul li div {
+    padding: 0 0.625rem;
+}
+.bx-tl-v-submenu-cnt ul li.bx-menu-inter-act {
+    border-bottom-color: #364f6b;
+}
+.bx-tl-v-submenu-cnt ul li.bx-menu-inter-act > div {
+    font-weight: bold;
+}
+.bx-tl-v-submenu-item .bx-cnc-psi-icon,
+.bx-tl-v-submenu-item .bx-cnc-psi-icon img {
+    width: 1.5rem;
+    height: 1.5rem;
+}
+.bx-tl-v-submenu-item .bx-cnc-psi-icon img {
+    color: #002e74;
+}
+
+.bx-tl-v-submenu-item .bx-cnc-psi-icon .sys-icon {
+    vertical-align: middle;
+    font-size: 1.5rem;
+}
+.bx-tl-v-submenu-item .bx-cnc-psi-title {
+    text-align: center;
+}
+.bx-tl-v-submenu-item.bx-cnc-psi-main .bx-cnc-psi-title {
+    text-align: left;
+}
+.bx-tl-v-view {
+    position: relative;
+}
+.bx-tl-v-form .bx-tl-v-user {
+    position: absolute;
+    top: 0;
+    left: 0;
+}
+.bx-tl-v-form .bx-tl-v-content {
+    display: -webkit-flex;
+    display: flex;
+    -webkit-align-items: center;
+    align-items: center;
+}
+.bx-tl-v-form.bx-tl-v-default .bx-tl-v-content {
+    -webkit-align-items: stretch;
+    align-items: stretch;   
+}
+.bx-tl-v-form.bx-tl-v-default .bx-tl-v-content > div {
+    width: 100%;
+    cursor: text;
+}
+.bx-tl-v-form .bx-uploader-ghost .bx-base-general-icon-wrapper img {
+	max-width: 9.375rem;
+}
+
+
 /*--- View Block Style ---*/
 div.bx-tl-view {
 	position: relative;

+ 4 - 1
template/scripts/BxBaseMenuInteractive.php

@@ -20,12 +20,15 @@ class BxBaseMenuInteractive extends BxTemplMenu
     {
         parent::__construct ($aObject);
 
+        if(empty($this->_aObject['menu_id']))
+            $this->_aObject['menu_id'] = $this->_sObject;
+
         if ($oTemplate)
             $this->_oTemplate = $oTemplate;
         else
             $this->_oTemplate = BxDolTemplate::getInstance();
 
-		$this->_bShowDivider = true;
+        $this->_bShowDivider = true;
     }
 
     /**