Telegram Web, preconfigured for usage in I2P.
http://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
279 lines
14 KiB
279 lines
14 KiB
11 years ago
|
<div my-head></div>
|
||
11 years ago
|
|
||
11 years ago
|
<div class="im_page_wrap" ng-class="{im_page_peer_not_selected: !curDialog.peer}">
|
||
11 years ago
|
|
||
|
<div class="im_page_split clearfix">
|
||
|
|
||
11 years ago
|
<div class="im_dialogs_col_wrap" ng-controller="AppImDialogsController" my-dialogs has-tabs="{{search.query.length > 0}}">
|
||
11 years ago
|
<div class="im_dialogs_panel">
|
||
|
<div class="dropdown im_dialogs_panel_dropdown pull-right">
|
||
|
<a class="dropdown-toggle">
|
||
|
<span class="icon-bar"></span>
|
||
|
<span class="icon-bar"></span>
|
||
|
<span class="icon-bar"></span>
|
||
|
</a>
|
||
|
<ul class="dropdown-menu">
|
||
11 years ago
|
<li><a ng-click="openGroup()">New Group</a></li>
|
||
11 years ago
|
<li><a ng-click="importContact()">New Contact</a></li>
|
||
11 years ago
|
<li><a ng-click="openContacts()">Contacts</a></li>
|
||
|
<li><a ng-click="openSettings()">Settings</a></li>
|
||
11 years ago
|
</ul>
|
||
|
</div>
|
||
|
<div class="im_dialogs_search">
|
||
11 years ago
|
<input class="form-control im_dialogs_search_field no_outline" type="search" placeholder="Search" ng-model="search.query"/>
|
||
11 years ago
|
<a class="im_dialogs_search_clear" ng-click="searchClear()" ng-show="search.query.length"></a>
|
||
11 years ago
|
</div>
|
||
11 years ago
|
|
||
11 years ago
|
<div class="im_dialogs_tabs_wrap">
|
||
11 years ago
|
<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>
|
||
|
</div>
|
||
|
</div>
|
||
11 years ago
|
</div>
|
||
11 years ago
|
|
||
11 years ago
|
<div my-dialogs-list class="im_dialogs_col">
|
||
|
<div class="im_dialogs_wrap nano">
|
||
11 years ago
|
<div class="im_dialogs_scrollable_wrap nano-content">
|
||
11 years ago
|
|
||
|
<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>
|
||
11 years ago
|
<button ng-if="phonebookAvailable" type="button" class="btn btn-primary btn-sm im_dialogs_import_phonebook" ng-click="importPhonebook()">Import phonebook</button>
|
||
11 years ago
|
</div>
|
||
|
|
||
11 years ago
|
<div ng-switch="search.messages">
|
||
|
<ul ng-switch-when="true" class="nav nav-pills nav-stacked">
|
||
|
<li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs track by dialogMessage.id" ng-class="{active: curDialog.peerID == dialogMessage.peerID && curDialog.messageID == dialogMessage.id}"></li>
|
||
|
</ul>
|
||
|
<ul ng-switch-default class="nav nav-pills nav-stacked">
|
||
|
<li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs track by dialogMessage.peerID" ng-class="{active: curDialog.peerID == dialogMessage.peerID}"></li>
|
||
|
</ul>
|
||
|
</div>
|
||
11 years ago
|
|
||
10 years ago
|
<div class="im_dialogs_contacts_wrap" ng-show="!search.messages && contacts.length > 0">
|
||
11 years ago
|
<h5>Contacts</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-click="dialogSelect(contact.peerString)">
|
||
|
<div class="im_dialog_photo pull-left">
|
||
|
<img
|
||
|
class="im_dialog_photo"
|
||
|
my-load-thumb
|
||
|
thumb="contact.userPhoto"
|
||
|
/>
|
||
|
</div>
|
||
|
<div class="im_dialog_message_wrap">
|
||
|
<div class="im_dialog_peer">
|
||
|
<span class="im_dialog_user" ng-bind-html="contact.user.rFullName"></span>
|
||
|
</div>
|
||
|
<div class="im_dialog_message">
|
||
10 years ago
|
<span class="im_dialog_message_text" my-user-status="::contact.userID"></span>
|
||
11 years ago
|
</div>
|
||
|
</div>
|
||
|
</a>
|
||
|
</li>
|
||
|
</ul>
|
||
|
</div>
|
||
11 years ago
|
|
||
11 years ago
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<div class="im_history_col_wrap" ng-controller="AppImHistoryController">
|
||
11 years ago
|
<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>
|
||
11 years ago
|
<div ng-switch-default class="im_history_not_selected" my-vertical-position="0.35" padding="true">
|
||
11 years ago
|
Please select a chat to start messaging
|
||
|
</div>
|
||
11 years ago
|
</div>
|
||
11 years ago
|
<div ng-show="!state.notSelected && !state.loaded" class="im_history_not_selected" my-vertical-position="0.35" padding="true">
|
||
11 years ago
|
Loading history<span my-loading-dots></span>
|
||
11 years ago
|
</div>
|
||
11 years ago
|
|
||
11 years ago
|
<div ng-show="state.loaded">
|
||
11 years ago
|
<div my-history class="im_history_col">
|
||
|
|
||
|
<div class="im_history_panel_wrap">
|
||
|
|
||
|
<div class="im_history_panel clearfix" ng-controller="AppImPanelController">
|
||
|
<div class="im_history_panel_title">
|
||
|
|
||
11 years ago
|
<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>
|
||
|
|
||
|
<div class="dropdown im_history_panel_media_dropdown pull-right">
|
||
|
<a class="dropdown-toggle">Media<i class="icon icon-caret"></i></a>
|
||
|
<ul class="dropdown-menu">
|
||
11 years ago
|
<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>
|
||
11 years ago
|
<li><a ng-click="toggleMedia('audio')">Voice messages</a></li>
|
||
11 years ago
|
</ul>
|
||
11 years ago
|
</div>
|
||
11 years ago
|
<a ng-show="historyFilter.mediaType.length || skippedHistory" class="im_history_panel_return_link pull-right" ng-click="returnToRecent()" ng-switch="skippedHistory">
|
||
11 years ago
|
<span ng-switch-when="true">Show recent messages</span>
|
||
|
<span ng-switch-default>Show all messages</span>
|
||
11 years ago
|
<strong class="im_history_panel_return_count" ng-show="missedCount > 0" ng-bind="'+' + missedCount"></strong>
|
||
11 years ago
|
</a>
|
||
|
|
||
11 years ago
|
<div ng-switch="historyFilter.mediaType">
|
||
11 years ago
|
<h4 ng-switch-when="photos">Photos</h4>
|
||
|
<h4 ng-switch-when="video">Videos</h4>
|
||
|
<h4 ng-switch-when="documents">Documents</h4>
|
||
11 years ago
|
<h4 ng-switch-when="audio">Voice messages</h4>
|
||
11 years ago
|
|
||
11 years ago
|
<h4 ng-switch-default ng-switch="historyPeer.id > 0" ng-click="showPeerInfo()">
|
||
11 years ago
|
<div ng-switch-when="true">
|
||
|
<span ng-bind-html="historyPeer.data.rFullName"></span>
|
||
10 years ago
|
<small class="im_peer_online" my-user-status="historyPeer.id"></small>
|
||
11 years ago
|
</div>
|
||
|
<div ng-switch-default>
|
||
|
<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'}">
|
||
|
</ng-pluralize>
|
||
|
</small>
|
||
|
</div>
|
||
|
</h4>
|
||
|
</div>
|
||
11 years ago
|
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
|
||
|
<div class="im_history_wrap nano">
|
||
|
|
||
11 years ago
|
<div class="im_history_scrollable_wrap nano-content">
|
||
11 years ago
|
|
||
|
<div class="im_history_scrollable">
|
||
10 years ago
|
<div class="im_history" ng-class="{im_history_selectable: historyState.selectActions}">
|
||
11 years ago
|
<div ng-if="!history.length" 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>
|
||
11 years ago
|
</div>
|
||
11 years ago
|
|
||
10 years ago
|
<div class="im_history_messages" ng-class="{im_history_messages_group: historyPeer.id < 0}">
|
||
10 years ago
|
<div class="im_history_message_wrap" my-message ng-repeat="historyMessage in history"></div>
|
||
11 years ago
|
</div>
|
||
11 years ago
|
</div>
|
||
|
|
||
|
<div class="im_history_typing_wrap">
|
||
10 years ago
|
|
||
|
<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>
|
||
11 years ago
|
</div>
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
|
||
11 years ago
|
<div class="im_bottom_panel_wrap">
|
||
11 years ago
|
|
||
10 years ago
|
<div class="im_edit_panel_wrap clearfix" ng-show="historyState.selectActions">
|
||
11 years ago
|
<div class="im_edit_panel_border"></div>
|
||
11 years ago
|
<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>
|
||
11 years ago
|
</a>
|
||
11 years ago
|
<a class="im_edit_cancel_link" ng-click="selectedCancel()">Cancel</a>
|
||
11 years ago
|
<div class="im_edit_selected_actions">
|
||
11 years ago
|
<a class="btn btn-primary im_edit_forward_btn" ng-click="selectedForward()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount">
|
||
11 years ago
|
Forward <strong class="im_selected_count" ng-show="selectedCount > 0" ng-bind="selectedCount"></strong>
|
||
11 years ago
|
</a><a class="btn btn-danger im_edit_delete_btn" ng-click="selectedDelete()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount">
|
||
11 years ago
|
Delete <strong class="im_selected_count" ng-show="selectedCount > 0" ng-bind="selectedCount"></strong>
|
||
11 years ago
|
</a>
|
||
|
</div>
|
||
|
</div>
|
||
11 years ago
|
|
||
10 years ago
|
<div class="im_send_panel_wrap" ng-hide="historyState.selectActions">
|
||
11 years ago
|
|
||
11 years ago
|
<div class="im_send_form_wrap1">
|
||
11 years ago
|
|
||
11 years ago
|
<div class="im_send_form_wrap clearfix" ng-controller="AppImSendController">
|
||
|
<div class="pull-right im_panel_peer_photo" ng-click="showPeerInfo()">
|
||
|
<img
|
||
|
class="im_panel_peer_photo"
|
||
|
my-load-thumb
|
||
10 years ago
|
watch="true"
|
||
11 years ago
|
thumb="historyPeer.photo"
|
||
|
/>
|
||
|
<i class="icon im_panel_peer_online" ng-show="historyPeer.id > 0 && historyPeer.data.status._ == 'userStatusOnline'"></i>
|
||
11 years ago
|
</div>
|
||
11 years ago
|
<div class="pull-left im_panel_own_photo">
|
||
|
<img
|
||
|
class="im_panel_own_photo"
|
||
|
my-load-thumb
|
||
10 years ago
|
watch="true"
|
||
11 years ago
|
thumb="ownPhoto"
|
||
|
/>
|
||
|
</div>
|
||
10 years ago
|
<form my-send-form draft-message="draftMessage" class="im_send_form" ng-class="{im_send_form_empty: !draftMessage.text.length}" ng-submit="sendMessage($event)">
|
||
11 years ago
|
|
||
|
<div class="im_send_field_wrap">
|
||
|
<div class="im_send_dropbox_wrap"> Drop photos here to send </div>
|
||
11 years ago
|
<textarea ng-model="draftMessage.text" placeholder="Write a message..." class="form-control im_message_field no_outline"></textarea>
|
||
11 years ago
|
</div>
|
||
11 years ago
|
|
||
11 years ago
|
<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"/>
|
||
|
<i class="icon icon-camera"></i>
|
||
|
</div>
|
||
11 years ago
|
|
||
11 years ago
|
<div class="im_attach pull-right">
|
||
|
<input type="file" class="im_attach_input" size="28" multiple="true" title="Send file" />
|
||
|
<i class="icon icon-paperclip"></i>
|
||
|
</div>
|
||
11 years ago
|
|
||
11 years ago
|
<div class="im_emoji_btn pull-right" title="Insert emoticon">
|
||
11 years ago
|
<i class="icon icon-emoji"></i>
|
||
11 years ago
|
</div>
|
||
11 years ago
|
|
||
10 years ago
|
<button type="submit" class="btn btn-success im_submit">
|
||
|
<span class="im_submit_text">Send</span>
|
||
|
</button>
|
||
11 years ago
|
</form>
|
||
|
</div>
|
||
|
|
||
11 years ago
|
</div>
|
||
|
|
||
11 years ago
|
</div>
|
||
|
|
||
11 years ago
|
</div>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
|
||
|
|
||
|
</div>
|
||
|
|
||
11 years ago
|
<div class="im_page_footer">
|
||
10 years ago
|
<a class="im_page_footer_brand" target="_blank" href="https://github.com/zhukov/webogram">Telegram beta</a> by izhukov & toberg
|
||
11 years ago
|
</div>
|
||
|
|
||
11 years ago
|
<div id="notify_sound"></div>
|