@ -13,21 +13,21 @@
@@ -13,21 +13,21 @@
< span class = "icon-bar" > < / span >
< / a >
< ul class = "dropdown-menu" >
< li > < a ng-click = "openGroup()" > New Group< / a > < / li >
< li > < a ng-click = "importContact()" > New Contact< / a > < / li >
< li > < a ng-click = "openContacts()" > Contacts< / a > < / li >
< li > < a ng-click = "openSettings()" > Settings< / a > < / li >
< li > < a ng-click = "openGroup()" my-i18n = "im_new_group" > < / a > < / li >
< li > < a ng-click = "importContact()" my-i18n = "im_new_contact" > < / a > < / li >
< li > < a ng-click = "openContacts()" my-i18n = "im_contacts" > < / a > < / li >
< li > < a ng-click = "openSettings()" my-i18n = "im_settings" > < / a > < / li >
< / ul >
< / div >
< div class = "im_dialogs_search" >
< input class = "form-control im_dialogs_search_field no_outline" type = "search" placeholder = "Search " ng-model = "search.query" / >
< input class = "form-control im_dialogs_search_field no_outline" type = "search" placeholder = "{{'modal_search' | i18n}} " ng-model = "search.query" / >
< a class = "im_dialogs_search_clear" ng-click = "searchClear()" ng-show = "search.query.length" > < / a >
< / div >
< div class = "im_dialogs_tabs_wrap" >
< div class = "im_dialogs_tabs clearfix" >
< a href = "" class = "im_dialogs_tab" ng-class = "{active: !search.messages}" ng-click = "search.messages = false" > Conversations< / a >
< a href = "" class = "im_dialogs_tab" ng-class = "{active: search.messages}" ng-click = "search.messages = true" > Messages< / a >
< a href = "" class = "im_dialogs_tab" ng-class = "{active: !search.messages}" ng-click = "search.messages = false" my-i18n = "im_conversations" > < / a >
< a href = "" class = "im_dialogs_tab" ng-class = "{active: search.messages}" ng-click = "search.messages = true" my-i18n = "im_messages" > < / a >
< / div >
< / div >
< / div >
@ -37,10 +37,10 @@
@@ -37,10 +37,10 @@
< div class = "im_dialogs_scrollable_wrap nano-content" >
< div class = "im_dialogs_empty_wrap" ng-if = "isEmpty.contacts" >
< h3 class = "im_dialogs_empty_header" > No contacts yet< / h3 >
< p class = "im_dialogs_empty_lead" > Get started by adding a contact to chat with< / p >
< button type = "button" class = "btn btn-primary btn-sm" ng-click = "importContact()" > Add contact< / button >
< button ng-if = "phonebookAvailable" type = "button" class = "btn btn-primary btn-sm im_dialogs_import_phonebook" ng-click = "importPhonebook()" > Import phonebook< / button >
< h3 class = "im_dialogs_empty_header" my-i18n = "im_no_contacts" > < / h3 >
< p class = "im_dialogs_empty_lead" my-i18n = "im_get_started_long" > < / p >
< button type = "button" class = "btn btn-primary btn-sm" ng-click = "importContact()" my-i18n = "im_add_contact" > < / button >
< button ng-if = "phonebookAvailable" type = "button" class = "btn btn-primary btn-sm im_dialogs_import_phonebook" ng-click = "importPhonebook()" my-i18n = "im_import_phonebook" > < / button >
< / div >
< div ng-switch = "search.messages" >
@ -53,7 +53,7 @@
@@ -53,7 +53,7 @@
< / div >
< div class = "im_dialogs_contacts_wrap" ng-show = "!search.messages && contacts.length > 0" >
< h5 > Contacts< / h5 >
< h5 my-i18n = "im_contacts_title" > < / h5 >
< ul class = "nav nav-pills nav-stacked" >
< li class = "im_dialog_wrap" ng-repeat = "contact in contacts | orderBy:'user.sortName' track by contact.userID" ng-class = "{active: curDialog.peerID == contact.userID}" >
< a class = "im_dialog" ng-mousedown = "dialogSelect(contact.peerString)" >
@ -85,16 +85,14 @@
@@ -85,16 +85,14 @@
< div class = "im_history_col_wrap" ng-controller = "AppImHistoryController" >
< div ng-show = "state.notSelected" ng-switch = "isEmpty.contacts && isEmpty.dialogs" >
< div ng-switch-when = "true" class = "im_history_no_dialogs_wrap" >
< h3 class = "im_dialogs_empty_header" > Get started< / h3 >
< p class = "im_dialogs_empty_lead" > Welcome to Telegram Web. You can always set your profile photo and change your name in Settings.< / p >
< button type = "button" class = "btn btn-primary btn-sm" ng-click = "openSettings()" > Open Settings< / button >
< / div >
< div ng-switch-default class = "im_history_not_selected" my-vertical-position = "0.35" padding = "true" >
Please select a chat to start messaging
< h3 class = "im_dialogs_empty_header" my-i18n = "im_get_started" > < / h3 >
< p class = "im_dialogs_empty_lead" my-i18n = "im_welcome_text" > < / p >
< button type = "button" class = "btn btn-primary btn-sm" ng-click = "openSettings()" my-i18n = "im_open_settings" > < / button >
< / div >
< div ng-switch-default class = "im_history_not_selected" my-vertical-position = "0.35" padding = "true" my-i18n = "im_select_a_chat" > < / div >
< / div >
< div ng-show = "!state.notSelected && !state.loaded" class = "im_history_not_selected" my-vertical-position = "0.35" padding = "true" >
Loading history < span my-loading-dots > < / span >
< my-i18n msgid = "im_loading_history" > < / my-i18n > < span my-loading-dots > < / span >
< / div >
< div ng-show = "state.loaded" >
@ -105,29 +103,29 @@
@@ -105,29 +103,29 @@
< div class = "im_history_panel clearfix" ng-controller = "AppImPanelController" >
< div class = "im_history_panel_title" >
< a class = "im_history_panel_info_link pull-right" ng-click = "showPeerInfo()" > Info < / a >
< a class = "im_history_panel_edit_link pull-right" ng-click = "toggleEdit()" > Edit < / a >
< a class = "im_history_panel_info_link pull-right" ng-click = "showPeerInfo()" my-i18n = "im_info" > < / a >
< a class = "im_history_panel_edit_link pull-right" ng-click = "toggleEdit()" my-i18n = "im_edit" > < / a >
< div class = "dropdown im_history_panel_media_dropdown pull-right" >
< a class = "dropdown-toggle" > Media < i class = "icon icon-caret" > < / i > < / a >
< a class = "dropdown-toggle" > < my-i18n msgid = "im_media" > < / my-i18n > < i class = "icon icon-caret" > < / i > < / a >
< ul class = "dropdown-menu" >
< li > < a ng-click = "toggleMedia('photos')" > Photos< / a > < / li >
< li > < a ng-click = "toggleMedia('video')" > Videos < / a > < / li >
< li > < a ng-click = "toggleMedia('documents')" > Documents< / a > < / li >
< li > < a ng-click = "toggleMedia('audio')" > Voice messages< / a > < / li >
< li > < a ng-click = "toggleMedia('photos')" my-i18n = "im_media_photos" > < / a > < / li >
< li > < a ng-click = "toggleMedia('video')" my-i18n = "im_media_video" > < / a > < / li >
< li > < a ng-click = "toggleMedia('documents')" my-i18n = "im_media_documents" > < / a > < / li >
< li > < a ng-click = "toggleMedia('audio')" my-i18n = "im_media_audio" > < / a > < / li >
< / ul >
< / div >
< a ng-show = "historyFilter.mediaType.length || skippedHistory" class = "im_history_panel_return_link pull-right" ng-click = "returnToRecent()" ng-switch = "skippedHistory" >
< span ng-switch-when = "true" > Show recent messages< / span >
< span ng-switch-default > Show all messages< / span >
< span ng-switch-when = "true" my-i18n = "im_show_recent_messages" > < / span >
< span ng-switch-default my-i18n = "im_show_all_messages" > < / span >
< strong class = "im_history_panel_return_count" ng-show = "missedCount > 0" ng-bind = "'+' + missedCount" > < / strong >
< / a >
< div ng-switch = "historyFilter.mediaType" >
< h4 ng-switch-when = "photos" > Photos< / h4 >
< h4 ng-switch-when = "video" > Videos < / h4 >
< h4 ng-switch-when = "documents" > Documents< / h4 >
< h4 ng-switch-when = "audio" > Voice messages< / h4 >
< h4 ng-switch-when = "photos" my-i18n = "im_media_photos" > < / h4 >
< h4 ng-switch-when = "video" my-i18n = "im_media_video" > < / h4 >
< h4 ng-switch-when = "documents" my-i18n = "im_media_documents" > < / h4 >
< h4 ng-switch-when = "audio" my-i18n = "im_media_audio" > < / h4 >
< h4 ng-switch-default ng-switch = "historyPeer.id > 0" ng-click = "showPeerInfo()" >
< div ng-switch-when = "true" >
@ -138,7 +136,7 @@
@@ -138,7 +136,7 @@
< span ng-bind-html = "historyPeer.data.rTitle" > < / span >
< small class = "im_chat_users" >
< ng-pluralize count = "historyPeer.data.participants_count"
when="{'0': 'No members', 'one': '1 member', 'other': '{} members'} ">
when="im_pluralize_participants ">
< / ng-pluralize >
< / small >
< / div >
@ -158,8 +156,8 @@
@@ -158,8 +156,8 @@
< div class = "im_history_scrollable" >
< div class = "im_history" ng-class = "{im_history_selectable: historyState.selectActions}" >
< div ng-if = "state.empty" class = "im_history_empty" ng-switch = "state.mayBeHasMore" my-vertical-position = "0.25" padding = "true" >
< span ng-switch-when = "true" > Loading history < span my-loading-dots > < / span > < / span >
< span ng-switch-default > No messages here yet...< / span >
< span ng-switch-when = "true" > < my-i18n msgid = "im_loading_history" > < / my-i18n > < span my-loading-dots > < / span > < / span >
< span ng-switch-default my-i18n = "im_no_messages" > < / span >
< / div >
< div class = "im_history_messages" ng-class = "{im_history_messages_group: historyPeer.id < 0}" >
@ -172,16 +170,14 @@
@@ -172,16 +170,14 @@
< div class = "im_history_typing_wrap" >
< div class = "im_history_typing" ng-show = "historyState.typing.length > 0 && !historyFilter.mediaType" ng-switch = "historyState.typing.length" >
< span ng-switch-when = "1" >
< a class = "im_history_typing_author" my-user-link = "historyState.typing[0]" > < / a > is typing< span my-loading-dots > < / span >
< / span >
< span ng-switch-when = "2" >
< a class = "im_history_typing_author" my-user-link = "historyState.typing[0]" > < / a > and < a class = "im_history_typing_author" my-user-link = "historyState.typing[1]" > < / a > are typing< span my-loading-dots > < / span >
< / span >
< span ng-switch-default >
< a class = "im_history_typing_author" my-user-link = "historyState.typing[0]" > < / a > , < a class = "im_history_typing_author" my-user-link = "historyState.typing[1]" > < / a > and {{historyState.typing.length - 2}} more are typing< span my-loading-dots > < / span >
< / span >
< div class = "im_history_typing" ng-show = "historyState.typing.length > 0 && !historyFilter.mediaType" ng-switch = "historyState.typing.length" my-i18n >
< span ng-switch-when = "1" my-i18n-format = "im_one_typing" > < / span >
< span ng-switch-when = "2" my-i18n-format = "im_two_typing" > < / span >
< span ng-switch-default my-i18n-format = "im_many_typing" > < / span >
< my-i18n-param name = "name1" > < a class = "im_history_typing_author" my-user-link = "historyState.typing[0]" > < / a > < / my-i18n-param >
< my-i18n-param name = "name2" > < a class = "im_history_typing_author" my-user-link = "historyState.typing[1]" > < / a > < / my-i18n-param >
< my-i18n-param name = "count" > {{historyState.typing.length - 2}}< / my-i18n-param >
< my-i18n-param name = "dots" > < span my-loading-dots > < / span > < / my-i18n-param >
< / div >
< / div >
@ -196,16 +192,14 @@
@@ -196,16 +192,14 @@
< div class = "im_edit_panel_wrap clearfix" ng-show = "historyState.selectActions" >
< div class = "im_edit_panel_border" > < / div >
< a class = "im_edit_flush_link" ng-click = "selectedFlush()" ng-switch = "historyPeer.id > 0" >
< span ng-switch-when = "true" > Delete Chat< / span >
< span ng-switch-default > Clear History< / span >
< span ng-switch-when = "true" my-i18n = "im_delete_chat" > < / span >
< span ng-switch-default my-i18n = "im_clear_history" > < / span >
< / a >
< a class = "im_edit_cancel_link" ng-click = "selectedCancel()" > Cancel< / a >
< div class = "im_edit_selected_actions" >
< a class = "btn btn-primary im_edit_forward_btn" ng-click = "selectedForward()" ng-class = "{disabled: !selectedCount}" ng-disabled = "!selectedCount" >
Forward < strong class = "im_selected_count" ng-show = "selectedCount > 0" ng-bind = "selectedCount" > < / strong >
< / a > < a class = "btn btn-danger im_edit_delete_btn" ng-click = "selectedDelete()" ng-class = "{disabled: !selectedCount}" ng-disabled = "!selectedCount" >
Delete < strong class = "im_selected_count" ng-show = "selectedCount > 0" ng-bind = "selectedCount" > < / strong >
< / a >
< a class = "im_edit_cancel_link" ng-click = "selectedCancel()" my-i18n = "modal_cancel" > Cancel< / a >
< div class = "im_edit_selected_actions" my-i18n >
< a class = "btn btn-primary im_edit_forward_btn" ng-click = "selectedForward()" ng-class = "{disabled: !selectedCount}" ng-disabled = "!selectedCount" my-i18n-format = "im_forward" > < / a >
< a class = "btn btn-danger im_edit_delete_btn" ng-click = "selectedDelete()" ng-class = "{disabled: !selectedCount}" ng-disabled = "!selectedCount" my-i18n-format = "im_delete" > < / a >
< my-i18n-param name = "count" > < strong class = "im_selected_count" ng-show = "selectedCount > 0" ng-bind = "selectedCount" > < / strong > < / my-i18n-param >
< / div >
< / div >
@ -234,26 +228,26 @@
@@ -234,26 +228,26 @@
< form my-send-form draft-message = "draftMessage" class = "im_send_form" ng-class = "{im_send_form_empty: !draftMessage.text.length}" ng-submit = "sendMessage($event)" >
< div class = "im_send_field_wrap" >
< div class = "im_send_dropbox_wrap" > Drop photos here to send < / div >
< textarea ng-model = "draftMessage.text" placeholder = "Write a message... " class = "form-control im_message_field no_outline" > < / textarea >
< div class = "im_send_dropbox_wrap" my-i18n = "im_photos_drop_text" > < / div >
< textarea ng-model = "draftMessage.text" placeholder = "{{'im_message_field_placeholder' | i18n}} " class = "form-control im_message_field no_outline" > < / textarea >
< / div >
< div class = "im_media_attach pull-right" >
< input type = "file" class = "im_media_attach_input" size = "28" multiple = "true" accept = "image/*, video/*, audio/*" title = "Send media " / >
< input type = "file" class = "im_media_attach_input" size = "28" multiple = "true" accept = "image/*, video/*, audio/*" title = "{{'im_media_attach_title' | i18n}} " / >
< i class = "icon icon-camera" > < / i >
< / div >
< div class = "im_attach pull-right" >
< input type = "file" class = "im_attach_input" size = "28" multiple = "true" title = "Send file " / >
< input type = "file" class = "im_attach_input" size = "28" multiple = "true" title = "{{'im_attach_file_title' | i18n}} " / >
< i class = "icon icon-paperclip" > < / i >
< / div >
< div class = "im_emoji_btn pull-right" title = "Insert emoticon " >
< div class = "im_emoji_btn pull-right" title = "{{'im_emoji_btn_title' | i18n}} " >
< i class = "icon icon-emoji" > < / i >
< / div >
< button type = "submit" class = "btn btn-success im_submit" >
< span class = "im_submit_text" > Send < / span >
< span class = "im_submit_text" my-i18n = "im_submit_message" > < / span >
< / button >
< / form >
< / div >