Merge branch 'master' of https://github.com/zhukov/webogram
Conflicts: app/js/locales/de-de.json app/js/locales/es-es.json
This commit is contained in:
commit
804a1ac24f
@ -130,7 +130,7 @@ html {
|
|||||||
vertical-align: text-top;
|
vertical-align: text-top;
|
||||||
|
|
||||||
background: url(../img/icons/IconsetW.png) -15px -835px no-repeat;
|
background: url(../img/icons/IconsetW.png) -15px -835px no-repeat;
|
||||||
background-size: 42px 891px;
|
background-size: 42px 971px;
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
}
|
}
|
||||||
.is_1x .icon-back {
|
.is_1x .icon-back {
|
||||||
@ -954,7 +954,7 @@ a.mobile_modal_action .tg_checkbox_label {
|
|||||||
.im_submit:active,
|
.im_submit:active,
|
||||||
.im_submit:hover {
|
.im_submit:hover {
|
||||||
background: url(../img/icons/IconsetW.png) 2px -860px no-repeat;
|
background: url(../img/icons/IconsetW.png) 2px -860px no-repeat;
|
||||||
background-size: 42px 891px;
|
background-size: 42px 971px;
|
||||||
color: transparent;
|
color: transparent;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
@ -978,7 +978,7 @@ a.mobile_modal_action .tg_checkbox_label {
|
|||||||
height: 23px;
|
height: 23px;
|
||||||
vertical-align: text-top;
|
vertical-align: text-top;
|
||||||
background: url(../img/icons/IconsetW.png) -12px -68px no-repeat;
|
background: url(../img/icons/IconsetW.png) -12px -68px no-repeat;
|
||||||
background-size: 42px 891px;
|
background-size: 42px 971px;
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
}
|
}
|
||||||
.is_1x .icon-paperclip {
|
.is_1x .icon-paperclip {
|
||||||
@ -1015,7 +1015,7 @@ a.mobile_modal_action .tg_checkbox_label {
|
|||||||
opacity: 1;
|
opacity: 1;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
background: url(../img/icons/IconsetW.png) -10px -771px no-repeat;
|
background: url(../img/icons/IconsetW.png) -10px -771px no-repeat;
|
||||||
background-size: 42px 891px;
|
background-size: 42px 971px;
|
||||||
}
|
}
|
||||||
.is_1x .icon-emoji {
|
.is_1x .icon-emoji {
|
||||||
background-image: url(../img/icons/IconsetW_1x.png);
|
background-image: url(../img/icons/IconsetW_1x.png);
|
||||||
|
@ -33,11 +33,11 @@ angular.module('myApp.directives', ['myApp.filters'])
|
|||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
.directive('myMessage', function($filter) {
|
.directive('myMessage', function($filter, _) {
|
||||||
|
|
||||||
var dateFilter = $filter('myDate'),
|
var dateFilter = $filter('myDate'),
|
||||||
dateSplitHtml = '<div class="im_message_date_split im_service_message_wrap"><div class="im_service_message"></div></div>',
|
dateSplitHtml = '<div class="im_message_date_split im_service_message_wrap"><div class="im_service_message"></div></div>',
|
||||||
unreadSplitHtml = '<div class="im_message_unread_split">Unread messages</div>',
|
unreadSplitHtml = '<div class="im_message_unread_split">' + _('unread_messages_split') + '</div>',
|
||||||
selectedClass = 'im_message_selected',
|
selectedClass = 'im_message_selected',
|
||||||
focusClass = 'im_message_focus',
|
focusClass = 'im_message_focus',
|
||||||
unreadClass = 'im_message_unread',
|
unreadClass = 'im_message_unread',
|
||||||
|
@ -63,7 +63,7 @@ angular.module('myApp.filters', ['myApp.i18n'])
|
|||||||
|
|
||||||
var ticks = timestamp * 1000,
|
var ticks = timestamp * 1000,
|
||||||
diff = Math.abs(tsNow() - ticks),
|
diff = Math.abs(tsNow() - ticks),
|
||||||
format = 'HH:mm';
|
format = 'shortTime';
|
||||||
|
|
||||||
if (diff > 518400000) { // 6 days
|
if (diff > 518400000) { // 6 days
|
||||||
format = 'shortDate';
|
format = 'shortDate';
|
||||||
@ -78,7 +78,7 @@ angular.module('myApp.filters', ['myApp.i18n'])
|
|||||||
.filter('time', ['$filter', function($filter) {
|
.filter('time', ['$filter', function($filter) {
|
||||||
var cachedDates = {},
|
var cachedDates = {},
|
||||||
dateFilter = $filter('date'),
|
dateFilter = $filter('date'),
|
||||||
format = Config.Mobile ? 'HH:mm' : 'HH:mm:ss';
|
format = Config.Mobile ? 'shortTime' : 'mediumTime';
|
||||||
|
|
||||||
return function (timestamp) {
|
return function (timestamp) {
|
||||||
if (cachedDates[timestamp]) {
|
if (cachedDates[timestamp]) {
|
||||||
|
@ -74,6 +74,8 @@
|
|||||||
"error_browser_no_local_file_system_video_md": "Your browser doesn't support {moz-link: https://developer.mozilla.org/en-US/docs/Web/API/LocalFileSystem | LocalFileSystem} feature which is needed to play this video.\nPlease, install {chrome-link: http://google.com/chrome | Google Chrome} or use {telegram-link: https://telegram.org/ | mobile app} instead.",
|
"error_browser_no_local_file_system_video_md": "Your browser doesn't support {moz-link: https://developer.mozilla.org/en-US/docs/Web/API/LocalFileSystem | LocalFileSystem} feature which is needed to play this video.\nPlease, install {chrome-link: http://google.com/chrome | Google Chrome} or use {telegram-link: https://telegram.org/ | mobile app} instead.",
|
||||||
"error_video_download_failed": "Video download failed",
|
"error_video_download_failed": "Video download failed",
|
||||||
|
|
||||||
|
"unread_messages_split": "Unread messages",
|
||||||
|
|
||||||
"user_name_deleted": "DELETED",
|
"user_name_deleted": "DELETED",
|
||||||
"user_first_name_deleted": "DELETED",
|
"user_first_name_deleted": "DELETED",
|
||||||
"user_status_offline": "offline",
|
"user_status_offline": "offline",
|
||||||
@ -102,7 +104,7 @@
|
|||||||
"group_edit_submit_active": "Saving...",
|
"group_edit_submit_active": "Saving...",
|
||||||
|
|
||||||
"confirm_modal_logout": "Are you sure you want to log out?",
|
"confirm_modal_logout": "Are you sure you want to log out?",
|
||||||
"confirm_modal_update_reload": "A new version of Webogram has been downloaded. Launch it?",
|
"confirm_modal_update_reload": "A new version of Telegram Web has been downloaded. Launch it?",
|
||||||
"confirm_modal_history_flush": "Are you sure? This can not be undone!",
|
"confirm_modal_history_flush": "Are you sure? This can not be undone!",
|
||||||
"confirm_modal_terminate_sessions": "Are you sure you want to log out all devices except for the current one?",
|
"confirm_modal_terminate_sessions": "Are you sure you want to log out all devices except for the current one?",
|
||||||
"confirm_modal_mixed_content_fail_http_redirect_md": "Your browser {moz-link: does not support} mixed content which is neccessary for MTProto support on https. {issue-link: Learn more}\n\n Would you like to use http-version instead?",
|
"confirm_modal_mixed_content_fail_http_redirect_md": "Your browser {moz-link: does not support} mixed content which is neccessary for MTProto support on https. {issue-link: Learn more}\n\n Would you like to use http-version instead?",
|
||||||
|
@ -1728,7 +1728,7 @@ angular.module('myApp.services', ['myApp.i18n'])
|
|||||||
|
|
||||||
if (toID < 0) {
|
if (toID < 0) {
|
||||||
return toID;
|
return toID;
|
||||||
} else if (message.out) {
|
} else if (message.out || message.flags & 2) {
|
||||||
return toID;
|
return toID;
|
||||||
}
|
}
|
||||||
return message.from_id;
|
return message.from_id;
|
||||||
@ -2032,10 +2032,6 @@ angular.module('myApp.services', ['myApp.i18n'])
|
|||||||
peerID = getMessagePeer(message),
|
peerID = getMessagePeer(message),
|
||||||
historyStorage = historiesStorage[peerID];
|
historyStorage = historiesStorage[peerID];
|
||||||
|
|
||||||
if (!message.out) {
|
|
||||||
AppUsersManager.forceUserOnline(message.from_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (historyStorage !== undefined) {
|
if (historyStorage !== undefined) {
|
||||||
var topMsgID = historiesStorage[peerID].history[0];
|
var topMsgID = historiesStorage[peerID].history[0];
|
||||||
if (historiesStorage[peerID].history.indexOf(message.id) != -1) {
|
if (historiesStorage[peerID].history.indexOf(message.id) != -1) {
|
||||||
@ -2055,6 +2051,10 @@ angular.module('myApp.services', ['myApp.i18n'])
|
|||||||
|
|
||||||
saveMessages([message]);
|
saveMessages([message]);
|
||||||
|
|
||||||
|
if (!message.out) {
|
||||||
|
AppUsersManager.forceUserOnline(message.from_id);
|
||||||
|
}
|
||||||
|
|
||||||
if (historyStorage.count !== null) {
|
if (historyStorage.count !== null) {
|
||||||
historyStorage.count++;
|
historyStorage.count++;
|
||||||
}
|
}
|
||||||
@ -2713,9 +2713,9 @@ angular.module('myApp.services', ['myApp.i18n'])
|
|||||||
doc.thumb = thumb;
|
doc.thumb = thumb;
|
||||||
|
|
||||||
doc.canDownload = !(window.chrome && chrome.fileSystem && chrome.fileSystem.chooseEntry);
|
doc.canDownload = !(window.chrome && chrome.fileSystem && chrome.fileSystem.chooseEntry);
|
||||||
doc.withPreview = doc.canDownload && doc.thumb && doc.mime_type.match(/^(image\/|application\/pdf)/) ? 1 : 0;
|
doc.withPreview = doc.canDownload && doc.mime_type.match(/^(image\/|application\/pdf)/) ? 1 : 0;
|
||||||
|
|
||||||
if (doc.withPreview && isGif) {
|
if (isGif && doc.withPreview && doc.thumb) {
|
||||||
doc.isSpecial = 'gif';
|
doc.isSpecial = 'gif';
|
||||||
}
|
}
|
||||||
else if (isAudio) {
|
else if (isAudio) {
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<a class="btn btn-link" ng-click="$dismiss()" my-i18n="modal_cancel">Cancel</a>
|
<a class="btn btn-link" ng-click="$dismiss()" my-i18n="modal_cancel"></a>
|
||||||
<button class="btn btn-primary" ng-class="{disabled: group.updating}" ng-click="updateGroup()" ng-bind="group.updating ? 'group_edit_submit_active' : 'group_edit_submit' | i18n" ng-disabled="group.updating"></button>
|
<button class="btn btn-primary" ng-class="{disabled: group.updating}" ng-click="updateGroup()" ng-bind="group.updating ? 'group_edit_submit_active' : 'group_edit_submit' | i18n" ng-disabled="group.updating"></button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -148,7 +148,9 @@
|
|||||||
<div class="im_history_scrollable">
|
<div class="im_history_scrollable">
|
||||||
<div class="im_history" ng-class="{im_history_selectable: historyState.selectActions}">
|
<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">
|
<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"><my-i18n msgid="im_loading_history"></my-i18n><span my-loading-dots></span></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>
|
<span ng-switch-default my-i18n="im_no_messages"></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -187,7 +189,7 @@
|
|||||||
<span ng-switch-when="true" my-i18n="im_delete_chat"></span>
|
<span ng-switch-when="true" my-i18n="im_delete_chat"></span>
|
||||||
<span ng-switch-default my-i18n="im_clear_history"></span>
|
<span ng-switch-default my-i18n="im_clear_history"></span>
|
||||||
</a>
|
</a>
|
||||||
<a class="im_edit_cancel_link" ng-click="selectedCancel()" my-i18n="modal_cancel">Cancel</a>
|
<a class="im_edit_cancel_link" ng-click="selectedCancel()" my-i18n="modal_cancel"></a>
|
||||||
<div class="im_edit_selected_actions" my-i18n>
|
<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-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>
|
<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>
|
||||||
@ -257,7 +259,6 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div my-lang-footer></div>
|
<div my-lang-footer></div>
|
@ -8,15 +8,13 @@
|
|||||||
|
|
||||||
<ul class="nav navbar-nav navbar-quick-nav">
|
<ul class="nav navbar-nav navbar-quick-nav">
|
||||||
<li class="navbar-quick-right">
|
<li class="navbar-quick-right">
|
||||||
<a ng-class="{disabled: group.creating}" ng-click="createGroup()" ng-bind="group.creating ? 'Creating...' : 'OK'" ng-disabled="group.creating"></a>
|
<a ng-class="{disabled: group.creating}" ng-click="createGroup()" ng-bind="group.creating ? 'group_create_submit_active' : 'group_create_submit' | i18n" ng-disabled="group.creating"></a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a ng-click="$dismiss()" class="navbar-quick-media-back">
|
<a ng-click="$dismiss()" class="navbar-quick-media-back">
|
||||||
<i class="icon icon-back"></i>
|
<i class="icon icon-back"></i>
|
||||||
<div class="navbar-quick-back-title">
|
<div class="navbar-quick-back-title">
|
||||||
<h4>
|
<h4 my-i18n="group_create_modal_title"></h4>
|
||||||
Create Group
|
|
||||||
</h4>
|
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@ -33,7 +31,7 @@
|
|||||||
<form class="modal_simple_form" ng-submit="createGroup()" my-vertical-position="0.25">
|
<form class="modal_simple_form" ng-submit="createGroup()" my-vertical-position="0.25">
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input class="form-control input-lg" my-focused type="text" placeholder="Group name" ng-model="group.name"/>
|
<input class="form-control input-lg" my-focused type="text" placeholder="{{'group_create_name' | i18n}}" ng-model="group.name"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
@ -8,15 +8,13 @@
|
|||||||
|
|
||||||
<ul class="nav navbar-nav navbar-quick-nav">
|
<ul class="nav navbar-nav navbar-quick-nav">
|
||||||
<li class="navbar-quick-right">
|
<li class="navbar-quick-right">
|
||||||
<a ng-class="{disabled: group.updating}" ng-click="updateGroup()" ng-bind="group.updating ? 'Saving...' : 'Save'" ng-disabled="group.updating"></a>
|
<a ng-class="{disabled: group.updating}" ng-click="updateGroup()" ng-bind="group.updating ? 'group_edit_submit_active' : 'group_edit_submit' | i18n" ng-disabled="group.updating"></a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a ng-click="$dismiss()" class="navbar-quick-media-back">
|
<a ng-click="$dismiss()" class="navbar-quick-media-back">
|
||||||
<i class="icon icon-back"></i>
|
<i class="icon icon-back"></i>
|
||||||
<div class="navbar-quick-back-title">
|
<div class="navbar-quick-back-title">
|
||||||
<h4>
|
<h4 my-i18n="group_edit_modal_title"></h4>
|
||||||
Edit Group
|
|
||||||
</h4>
|
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@ -33,7 +31,7 @@
|
|||||||
<form class="modal_simple_form" ng-submit="updateGroup()" my-vertical-position="0.25">
|
<form class="modal_simple_form" ng-submit="updateGroup()" my-vertical-position="0.25">
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input class="form-control input-lg" my-focused type="text" placeholder="Group name" ng-model="group.name"/>
|
<input class="form-control input-lg" my-focused type="text" placeholder="{{'group_edit_name' | i18n}}" ng-model="group.name"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<a class="im_dialog" ng-click="dialogSelect(dialogMessage.peerString, search.messages && dialogMessage.id)">
|
<a class="im_dialog" ng-mousedown="dialogSelect(dialogMessage.peerString, search.messages && dialogMessage.id)">
|
||||||
|
|
||||||
<div class="im_dialog_meta pull-right text-right">
|
<div class="im_dialog_meta pull-right text-right">
|
||||||
<div class="im_dialog_date" ng-bind="dialogMessage.dateText"></div>
|
<div class="im_dialog_date" ng-bind="dialogMessage.dateText"></div>
|
||||||
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
<div ng-switch="dialogMessage.deleted">
|
<div ng-switch="dialogMessage.deleted">
|
||||||
<div ng-switch-when="true" class="im_dialog_message">
|
<div ng-switch-when="true" class="im_dialog_message">
|
||||||
<span class="im_dialog_message_text">deleted message</span>
|
<span class="im_dialog_message_text" my-i18n="conversation_message_deleted"></span>
|
||||||
</div>
|
</div>
|
||||||
<div ng-switch-default class="im_dialog_message">
|
<div ng-switch-default class="im_dialog_message">
|
||||||
<span class="im_dialog_chat_from_wrap">
|
<span class="im_dialog_chat_from_wrap">
|
||||||
@ -44,39 +44,36 @@
|
|||||||
></span><span
|
></span><span
|
||||||
class="im_dialog_chat_from"
|
class="im_dialog_chat_from"
|
||||||
ng-if="dialogMessage.out"
|
ng-if="dialogMessage.out"
|
||||||
>You</span>{{((dialogMessage.out || dialogMessage.peerID < 0) && (dialogMessage.message.length || dialogMessage.media && dialogMessage.media._ != 'messageMediaEmpty')) ? ':' : ''}}
|
my-i18n="conversation_you"
|
||||||
|
></span>{{((dialogMessage.out || dialogMessage.peerID < 0) && (dialogMessage.message.length || dialogMessage.media && dialogMessage.media._ != 'messageMediaEmpty')) ? ':' : ''}}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span class="im_dialog_message_media" ng-if="dialogMessage.media && dialogMessage.media._ != 'messageMediaEmpty'" ng-switch="dialogMessage.media._">
|
<span class="im_dialog_message_media" ng-if="dialogMessage.media" ng-switch="dialogMessage.media._">
|
||||||
<span ng-switch-when="messageMediaPhoto">Photo</span>
|
<span ng-switch-when="messageMediaPhoto" my-i18n="conversation_media_photo"></span>
|
||||||
<span ng-switch-when="messageMediaVideo">Video</span>
|
<span ng-switch-when="messageMediaVideo" my-i18n="conversation_media_video"></span>
|
||||||
<span ng-switch-when="messageMediaDocument">Document</span>
|
<span ng-switch-when="messageMediaDocument" ng-bind="dialogMessage.media.document.file_name"></span>
|
||||||
<span ng-switch-when="messageMediaAudio">Audio</span>
|
<span ng-switch-when="messageMediaAudio" my-i18n="conversation_media_audio"></span>
|
||||||
<span ng-switch-when="messageMediaGeo">Location</span>
|
<span ng-switch-when="messageMediaGeo" my-i18n="conversation_media_location"></span>
|
||||||
<span ng-switch-when="messageMediaContact">Contact</span>
|
<span ng-switch-when="messageMediaContact" my-i18n="conversation_media_contact"></span>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span class="im_dialog_message_service" ng-if="dialogMessage._ == 'messageService'" ng-switch="dialogMessage.action._">
|
<span class="im_dialog_message_service" ng-if="dialogMessage._ == 'messageService'" ng-switch="dialogMessage.action._">
|
||||||
<span ng-switch-when="messageActionChatCreate">created the group</span>
|
<span ng-switch-when="messageActionChatCreate" my-i18n="conversation_group_created"></span>
|
||||||
<span ng-switch-when="messageActionChatEditTitle">changed group name</span>
|
<span ng-switch-when="messageActionChatEditTitle" my-i18n="conversation_group_renamed"></span>
|
||||||
<span ng-switch-when="messageActionChatEditPhoto">changed group photo</span>
|
<span ng-switch-when="messageActionChatEditPhoto" my-i18n="conversation_group_photo_updated"></span>
|
||||||
<span ng-switch-when="messageActionChatDeletePhoto">removed group photo</span>
|
<span ng-switch-when="messageActionChatDeletePhoto" my-i18n="conversation_group_photo_removed"></span>
|
||||||
|
|
||||||
<span ng-switch-when="messageActionChatAddUser" ng-switch="dialogMessage.from_id == dialogMessage.action.user_id">
|
<span ng-switch-when="messageActionChatAddUser" ng-switch="dialogMessage.from_id == dialogMessage.action.user_id">
|
||||||
<span ng-switch-when="true">
|
<span ng-switch-when="true" my-i18n="conversation_returned_to_group"></span>
|
||||||
returned to group
|
<span ng-switch-default my-i18n="conversation_invited_user">
|
||||||
</span>
|
<my-i18n-param name="user" ng-bind-html="dialogMessage.action.user.rFullName"></my-i18n-param>
|
||||||
<span ng-switch-default>
|
|
||||||
invited <span ng-bind-html="dialogMessage.action.user.rFullName"></span>
|
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span ng-switch-when="messageActionChatDeleteUser" ng-switch="dialogMessage.from_id == dialogMessage.action.user_id">
|
<span ng-switch-when="messageActionChatDeleteUser" ng-switch="dialogMessage.from_id == dialogMessage.action.user_id">
|
||||||
<span ng-switch-when="true">
|
<span ng-switch-when="true" my-i18n="conversation_left_group"></span>
|
||||||
left group
|
<span ng-switch-default my-i18n="conversation_kicked_user">
|
||||||
</span>
|
<my-i18n-param name="user" ng-bind-html="dialogMessage.action.user.rFullName"></my-i18n-param>
|
||||||
<span ng-switch-default>
|
|
||||||
kicked <span ng-bind-html="dialogMessage.action.user.rFullName"></span>
|
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
|
@ -8,15 +8,13 @@
|
|||||||
|
|
||||||
<ul class="nav navbar-nav navbar-quick-nav">
|
<ul class="nav navbar-nav navbar-quick-nav">
|
||||||
<li class="navbar-quick-right">
|
<li class="navbar-quick-right">
|
||||||
<a ng-class="{disabled: progress.enabled}" ng-click="doImport()" ng-bind="progress.enabled ? 'Saving...' : 'Save'" ng-disabled="progress.enabled"></a>
|
<a ng-class="{disabled: progress.enabled}" ng-click="doImport()" ng-bind="progress.enabled ? 'contact_edit_modal_submit_active' : 'contact_edit_modal_submit'| i18n" ng-disabled="progress.enabled"></a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a ng-click="$dismiss()" class="navbar-quick-media-back">
|
<a ng-click="$dismiss()" class="navbar-quick-media-back">
|
||||||
<i class="icon icon-back"></i>
|
<i class="icon icon-back"></i>
|
||||||
<div class="navbar-quick-back-title">
|
<div class="navbar-quick-back-title">
|
||||||
<h4>
|
<h4 my-i18n="contact_edit_modal_title"></h4>
|
||||||
Edit contact
|
|
||||||
</h4>
|
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@ -36,10 +34,10 @@
|
|||||||
<span class="form-control uneditable_input input-lg disabled" disabled my-focused type="text" ng-bind="importContact.phone | phoneNumber"></span>
|
<span class="form-control uneditable_input input-lg disabled" disabled my-focused type="text" ng-bind="importContact.phone | phoneNumber"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input class="form-control input-lg" type="text" placeholder="First name" ng-model="importContact.first_name"/>
|
<input class="form-control input-lg" type="text" placeholder="{{'contact_edit_modal_first_name' | i18n}}" ng-model="importContact.first_name"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input class="form-control input-lg" type="text" placeholder="Last name" ng-model="importContact.last_name"/>
|
<input class="form-control input-lg" type="text" placeholder="{{'contact_edit_modal_last_name' | i18n}}" ng-model="importContact.last_name"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
@ -7,14 +7,14 @@
|
|||||||
<div ng-controller="AppImDialogsController" my-dialogs has-tabs="{{search.query.length > 0}}" class="im_dialogs_col_wrap">
|
<div ng-controller="AppImDialogsController" my-dialogs has-tabs="{{search.query.length > 0}}" class="im_dialogs_col_wrap">
|
||||||
<div class="im_dialogs_panel">
|
<div class="im_dialogs_panel">
|
||||||
<div class="im_dialogs_search">
|
<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>
|
<a class="im_dialogs_search_clear" ng-click="searchClear()" ng-show="search.query.length"></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="im_dialogs_tabs_wrap">
|
<div class="im_dialogs_tabs_wrap">
|
||||||
<div class="im_dialogs_tabs clearfix">
|
<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 = false" my-i18n="im_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 = true" my-i18n="im_messages"></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -22,14 +22,10 @@
|
|||||||
<div my-dialogs-list-mobile class="im_dialogs_col im_dialogs_scrollable_wrap mobile_scrollable_wrap">
|
<div my-dialogs-list-mobile class="im_dialogs_col im_dialogs_scrollable_wrap mobile_scrollable_wrap">
|
||||||
|
|
||||||
<div class="im_dialogs_empty_wrap" ng-if="isEmpty.contacts" my-vertical-position="0.4">
|
<div class="im_dialogs_empty_wrap" ng-if="isEmpty.contacts" my-vertical-position="0.4">
|
||||||
<h3 class="im_dialogs_empty_header">No contacts yet</h3>
|
<h3 class="im_dialogs_empty_header" my-i18n="im_no_contacts"></h3>
|
||||||
<p class="im_dialogs_empty_lead">Get started by adding a contact to chat with</p>
|
<p class="im_dialogs_empty_lead" my-i18n="im_get_started_long"></p>
|
||||||
<button type="button" class="btn btn-primary btn-block im_dialogs_add_contact" ng-click="importContact()">
|
<button type="button" class="btn btn-primary btn-block im_dialogs_add_contact" ng-click="importContact()" my-i18n="im_add_contact"> </button>
|
||||||
Add contact
|
<button ng-if="phonebookAvailable" type="button" class="btn btn-primary btn-block im_dialogs_import_phonebook" ng-click="importPhonebook()" my-i18n="im_import_phonebook"></button>
|
||||||
</button>
|
|
||||||
<button ng-if="phonebookAvailable" type="button" class="btn btn-primary btn-block im_dialogs_import_phonebook" ng-click="importPhonebook()">
|
|
||||||
Import phonebook
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div ng-switch="search.messages">
|
<div ng-switch="search.messages">
|
||||||
@ -42,7 +38,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="im_dialogs_contacts_wrap" ng-show="!search.messages && contacts.length > 0">
|
<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">
|
<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}">
|
<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)">
|
<a class="im_dialog" ng-click="dialogSelect(contact.peerString)">
|
||||||
@ -70,7 +66,7 @@
|
|||||||
|
|
||||||
<div class="im_history_col_wrap" ng-controller="AppImHistoryController">
|
<div class="im_history_col_wrap" ng-controller="AppImHistoryController">
|
||||||
<div ng-show="!state.notSelected && !state.loaded" class="im_history_not_selected" my-vertical-position="0.35" padding="true">
|
<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>
|
||||||
|
|
||||||
<div ng-show="state.loaded">
|
<div ng-show="state.loaded">
|
||||||
@ -81,8 +77,10 @@
|
|||||||
<div class="im_history_scrollable">
|
<div class="im_history_scrollable">
|
||||||
<div class="im_history" ng-class="{im_history_selectable: historyState.selectActions}">
|
<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">
|
<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-when="true">
|
||||||
<span ng-switch-default>No messages here yet...</span>
|
<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>
|
||||||
|
|
||||||
<div class="im_history_messages" ng-class="{im_history_messages_group: historyPeer.id < 0}">
|
<div class="im_history_messages" ng-class="{im_history_messages_group: historyPeer.id < 0}">
|
||||||
@ -100,12 +98,10 @@
|
|||||||
<div class="im_bottom_panel_wrap">
|
<div class="im_bottom_panel_wrap">
|
||||||
|
|
||||||
<div class="im_edit_panel_wrap clearfix" ng-show="historyState.selectActions">
|
<div class="im_edit_panel_wrap clearfix" ng-show="historyState.selectActions">
|
||||||
<div class="im_edit_selected_actions">
|
<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">
|
<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>
|
||||||
Forward <strong class="im_selected_count" ng-show="selectedCount > 0" ng-bind="selectedCount"></strong>
|
<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>
|
||||||
</a><a class="btn btn-danger im_edit_delete_btn" ng-click="selectedDelete()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount">
|
<my-i18n-param name="count"><strong class="im_selected_count" ng-show="selectedCount > 0" ng-bind="selectedCount"></strong></my-i18n-param>
|
||||||
Delete <strong class="im_selected_count" ng-show="selectedCount > 0" ng-bind="selectedCount"></strong>
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -117,16 +113,16 @@
|
|||||||
<form my-send-form draft-message="draftMessage" class="im_send_form" ng-class="{im_send_form_empty: !draftMessage.text.length}" ng-submit="sendMessage($event)">
|
<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_field_wrap">
|
||||||
<div class="im_send_dropbox_wrap"> Drop photos here to send </div>
|
<div class="im_send_dropbox_wrap" my-i18n="im_photos_drop_text"></div>
|
||||||
<textarea ng-model="draftMessage.text" placeholder="Write a message..." class="form-control im_message_field no_outline"></textarea>
|
<textarea ng-model="draftMessage.text" placeholder="{{'im_message_field_placeholder' | i18n}}" class="form-control im_message_field no_outline"></textarea>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="im_attach pull-right">
|
<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_media_attach_title' | i18n}}" />
|
||||||
<i class="icon icon-paperclip"></i>
|
<i class="icon icon-paperclip"></i>
|
||||||
</div>
|
</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>
|
<i class="icon icon-emoji"></i>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -147,7 +143,4 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="notify_sound"></div>
|
|
@ -8,15 +8,13 @@
|
|||||||
|
|
||||||
<ul class="nav navbar-nav navbar-quick-nav">
|
<ul class="nav navbar-nav navbar-quick-nav">
|
||||||
<li class="navbar-quick-right">
|
<li class="navbar-quick-right">
|
||||||
<a ng-class="{disabled: progress.enabled}" ng-click="doImport()" ng-bind="progress.enabled ? 'Importing...' : 'Save'" ng-disabled="progress.enabled"></a>
|
<a ng-class="{disabled: progress.enabled}" ng-click="doImport()" ng-bind="progress.enabled ? 'contact_import_modal_submit_active' : 'contact_import_modal_submit' | i18n" ng-disabled="progress.enabled"></a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a ng-click="$dismiss()" class="navbar-quick-media-back">
|
<a ng-click="$dismiss()" class="navbar-quick-media-back">
|
||||||
<i class="icon icon-back"></i>
|
<i class="icon icon-back"></i>
|
||||||
<div class="navbar-quick-back-title">
|
<div class="navbar-quick-back-title">
|
||||||
<h4>
|
<h4 my-i18n="contact_import_modal_title"></h4>
|
||||||
Add new contact
|
|
||||||
</h4>
|
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@ -33,13 +31,13 @@
|
|||||||
<form class="modal_simple_form" ng-submit="doImport()" my-vertical-position="0.3">
|
<form class="modal_simple_form" ng-submit="doImport()" my-vertical-position="0.3">
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input class="form-control input-lg" my-focused type="text" placeholder="Phone number" ng-model="importContact.phone"/>
|
<input class="form-control input-lg" my-focused type="text" placeholder="{{'contact_import_modal_phone' | i18n}}" ng-model="importContact.phone"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input class="form-control input-lg" type="text" placeholder="First name" ng-model="importContact.first_name"/>
|
<input class="form-control input-lg" type="text" placeholder="{{'contact_edit_modal_first_name' | i18n}}" ng-model="importContact.first_name"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input class="form-control input-lg" type="text" placeholder="Last name" ng-model="importContact.last_name"/>
|
<input class="form-control input-lg" type="text" placeholder="{{'contact_edit_modal_last_name' | i18n}}" ng-model="importContact.last_name"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
@ -47,7 +45,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="modal-footer" ng-if="phonebookAvailable">
|
<div class="modal-footer" ng-if="phonebookAvailable">
|
||||||
<a class="btn btn-link" ng-click="importPhonebook()">Phonebook</a>
|
<a class="btn btn-link" ng-click="importPhonebook()" my-i18n="contact_import_modal_phonebook"></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
@ -5,8 +5,8 @@
|
|||||||
<div class="error" ng-if="error.message" ng-bind="error.message"></div>
|
<div class="error" ng-if="error.message" ng-bind="error.message"></div>
|
||||||
|
|
||||||
<form name="mySendCodeForm" ng-if="!credentials.phone_code_hash" ng-submit="sendCode()">
|
<form name="mySendCodeForm" ng-if="!credentials.phone_code_hash" ng-submit="sendCode()">
|
||||||
<h3 class="login_form_head">Sign in</h3>
|
<h3 class="login_form_head" my-i18n="login_sign_in"></h3>
|
||||||
<p class="login_form_lead">Please choose your country and enter your full phone number.</p>
|
<p class="login_form_lead" my-i18n="login_enter_number_description"></p>
|
||||||
|
|
||||||
<div class="login_country_selector" ng-click="chooseCountry()">
|
<div class="login_country_selector" ng-click="chooseCountry()">
|
||||||
<span ng-bind="credentials.phone_country_name"></span>
|
<span ng-bind="credentials.phone_country_name"></span>
|
||||||
@ -14,71 +14,73 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group" ng-class="{'has-error': error.field == 'phone'}">
|
<div class="form-group" ng-class="{'has-error': error.field == 'phone'}">
|
||||||
<label class="control-label" ng-if="error.field == 'phone'">Incorrect phone number</label>
|
<label class="control-label" ng-if="error.field == 'phone'" my-i18n="login_incorrect_number"></label>
|
||||||
<div class="clearfix">
|
<div class="clearfix">
|
||||||
<input type="tel" autocomplete="off" class="form-control input-lg pull-left login_phone_country" my-focused name="phone_country" ng-model="credentials.phone_country">
|
<input type="tel" autocomplete="off" class="form-control pull-left login_phone_country" my-focused name="phone_country" ng-model="credentials.phone_country">
|
||||||
<input type="tel" autocomplete="off" class="form-control input-lg pull-left login_phone_number" my-focus-on="country_selected" name="phone_number" ng-model="credentials.phone_number" placeholder="Enter your phone" required>
|
<input type="tel" autocomplete="off" class="form-control pull-left login_phone_number" my-focus-on="country_selected" name="phone_number" ng-model="credentials.phone_number" placeholder="{{'login_tel_input_placeholder' | i18n}}" required>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-primary btn-block" ng-class="{disabled: progress.enabled}" ng-disabled="progress.enabled" type="submit" ng-switch="progress.enabled">
|
<button class="btn btn-primary btn-block" ng-class="{disabled: progress.enabled}" ng-disabled="progress.enabled" type="submit" ng-switch="progress.enabled">
|
||||||
<span ng-switch-when="true">Generating keys<span my-loading-dots></span></span>
|
<span ng-switch-when="true"><my-i18n msgid="login_generating_key"></my-i18n><span my-loading-dots></span></span>
|
||||||
<span ng-switch-default>Next</span>
|
<span ng-switch-default my-i18n="modal_next"></span>
|
||||||
</button>
|
</button>
|
||||||
<div class="login_form_messaging" ng-show="progress.enabled">Keys are only generated once. This can take a few minutes on slower devices, please be patient.</div>
|
<div class="login_form_messaging" ng-show="progress.enabled" my-i18n="login_generating_keys_info"></div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form name="myLoginForm" ng-if="credentials.phone_code_hash && !credentials.phone_code_valid" ng-submit="logIn()">
|
<form name="myLoginForm" ng-if="credentials.phone_code_hash && !credentials.phone_code_valid" ng-submit="logIn()">
|
||||||
<h3 class="login_form_head"><span ng-bind="credentials.phone_country"></span> <span ng-bind="credentials.phone_number"></span></h3>
|
<h3 class="login_form_head"><span ng-bind="credentials.phone_country"></span> <span ng-bind="credentials.phone_number"></span></h3>
|
||||||
<div class="login_edit_phone"><a ng-click="editPhone()">Edit phone number</a></div>
|
<div class="login_edit_phone"><a ng-click="editPhone()" my-i18n="login_edit_number"></a></div>
|
||||||
<div ng-switch="credentials.viaApp">
|
<div ng-switch="credentials.viaApp">
|
||||||
<div ng-switch-when="true">
|
<div ng-switch-when="true">
|
||||||
|
<p class="login_form_lead" my-i18n="login_enter_code_label_md"></p>
|
||||||
<p class="login_form_lead">
|
<p class="login_form_lead">
|
||||||
Please enter the code you've just received in your other <strong>Telegram</strong> app
|
<a ng-click="sendSms()" my-i18n="login_code_not_received"></a>
|
||||||
</p>
|
|
||||||
<p class="login_form_lead">
|
|
||||||
<a ng-click="sendSms()">Haven't received the code?</a>
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div ng-switch-default>
|
<div ng-switch-default>
|
||||||
<p class="login_form_lead">We have sent you a code via SMS.<br/>Please enter it below.</p>
|
<p class="login_form_lead" my-i18n="login_enter_sms_code_label_md"></p>
|
||||||
|
|
||||||
<p class="login_form_lead">
|
<p class="login_form_lead">
|
||||||
<span ng-show="callPending.remaining > 0">Telegram will call you in {{callPending.remaining | duration}}</span>
|
<span ng-show="callPending.remaining > 0" my-i18n="login_call_remaining">
|
||||||
<span ng-show="!callPending.remaining && !callPending.success">Telegram is calling you</span>
|
<my-i18n-param name="remaining">{{callPending.remaining | duration}}</my-i18n-param>
|
||||||
<span ng-show="!callPending.remaining && callPending.success">Telegram dialed your number</span>
|
</span>
|
||||||
|
<span ng-show="!callPending.remaining && !callPending.success" my-i18n="login_calling"></span>
|
||||||
|
<span ng-show="!callPending.remaining && callPending.success" my-i18n="login_number_dialed"></span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group" ng-class="{'has-error': error.field == 'phone_code'}">
|
<div class="form-group" ng-class="{'has-error': error.field == 'phone_code'}">
|
||||||
<label class="control-label" for="phone_code" ng-if="error.field == 'phone_code'">Incorrect SMS code</label>
|
<label class="control-label" for="phone_code" ng-if="error.field == 'phone_code'" my-i18n="login_incorrect_sms_code"></label>
|
||||||
<input type="number" my-focused class="form-control login_phone_code" name="phone_code" ng-model="credentials.phone_code" placeholder="Enter your code" autocomplete="off" required>
|
<input type="number" my-focused class="form-control login_phone_code" name="phone_code" ng-model="credentials.phone_code" placeholder="{{'login_number_input_placeholder' | i18n}}" autocomplete="off" required>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button class="btn btn-primary btn-block" type="submit" ng-class="{disabled: progress.enabled}" ng-disabled="progress.enabled" ng-switch="progress.enabled">
|
<button class="btn btn-primary btn-block" type="submit" ng-class="{disabled: progress.enabled}" ng-disabled="progress.enabled" ng-switch="progress.enabled">
|
||||||
<span ng-switch-when="true">Checking code<span my-loading-dots></span></span>
|
<span ng-switch-when="true"><my-i18n msgid="login_checking_code"></my-i18n><span my-loading-dots></span></span>
|
||||||
<span ng-switch-default>Next</span>
|
<span ng-switch-default my-i18n="modal_next"></span>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<form name="myFullNameForm" ng-if="credentials.phone_code_valid && credentials.phone_unoccupied" ng-submit="logIn(true)">
|
<form name="myFullNameForm" ng-if="credentials.phone_code_valid && credentials.phone_unoccupied" ng-submit="logIn(true)">
|
||||||
<h3 class="login_form_head">Your info</h3>
|
<h3 class="login_form_head" my-i18n="login_your_info"></h3>
|
||||||
<p class="login_form_lead">Please enter your full name to set up a Telegram account.</p>
|
<p class="login_form_lead" my-i18n="login_fulll_name_label"></p>
|
||||||
|
|
||||||
<div class="form-group login_first_name_wrap" ng-class="{'has-error': error.field == 'first_name'}">
|
<div class="form-group login_first_name_wrap" ng-class="{'has-error': error.field == 'first_name'}">
|
||||||
<label class="control-label" for="first_name" ng-if="error.field == 'first_name'">Incorrect first name</label>
|
<label class="control-label" for="first_name" ng-if="error.field == 'first_name'" my-i18n="login_incorrect_first_name"></label>
|
||||||
<input my-focused class="form-control" name="first_name" ng-model="credentials.first_name" placeholder="First name" autocomplete="off" required>
|
<input my-focused class="form-control" name="first_name" ng-model="credentials.first_name" placeholder="{{'login_first_name' | i18n}}" autocomplete="off" required>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group" ng-class="{'has-error': error.field == 'last_name'}">
|
<div class="form-group" ng-class="{'has-error': error.field == 'last_name'}">
|
||||||
<label class="control-label" for="last_name" ng-if="error.field == 'last_name'">Incorrect last name</label>
|
<label class="control-label" for="last_name" ng-if="error.field == 'last_name'" my-i18n="login_incorrect_last_name"></label>
|
||||||
<input class="form-control" name="last_name" ng-model="credentials.last_name" placeholder="Last name" autocomplete="off">
|
<input class="form-control" name="last_name" ng-model="credentials.last_name" placeholder="{{'login_last_name' | i18n}}" autocomplete="off">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button class="btn btn-primary btn-block" ng-class="{disabled: progress.enabled}" ng-disabled="progress.enabled" type="submit" ng-switch="progress.enabled">
|
<button class="btn btn-primary btn-block" ng-class="{disabled: progress.enabled}" ng-disabled="progress.enabled" type="submit" ng-switch="progress.enabled">
|
||||||
<span ng-switch-when="true">Signing up<span my-loading-dots></span></span>
|
<span ng-switch-when="true"><my-i18n msgid="login_signing_up"></my-i18n><span my-loading-dots></span></span>
|
||||||
<span ng-switch-default>Sign up</span>
|
<span ng-switch-default my-i18n="login_sign_up"></span>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- <div my-lang-footer></div> -->
|
@ -25,8 +25,12 @@
|
|||||||
<span class="im_message_document_size" ng-if="!historyMessage.media.document.progress.enabled" ng-bind="::historyMessage.media.document.size | formatSize"></span>
|
<span class="im_message_document_size" ng-if="!historyMessage.media.document.progress.enabled" ng-bind="::historyMessage.media.document.size | formatSize"></span>
|
||||||
<span class="im_message_document_size" ng-if="historyMessage.media.document.progress.enabled" ng-bind="historyMessage.media.document.progress | formatSizeProgress"></span>
|
<span class="im_message_document_size" ng-if="historyMessage.media.document.progress.enabled" ng-bind="historyMessage.media.document.progress | formatSizeProgress"></span>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="im_message_document_actions" ng-if="!historyMessage.media.document.progress.enabled">
|
||||||
|
<a href="" ng-click="downloadDoc(historyMessage.media.document.id)" my-i18n="message_attach_document_download"></a>
|
||||||
|
<a href="" ng-click="downloadDoc(historyMessage.media.document.id, 1)" ng-if="::historyMessage.media.document.withPreview" my-i18n="message_attach_document_open"></a>
|
||||||
|
</div>
|
||||||
<div class="clearfix cancelable_progress_wrap" ng-if="historyMessage.media.document.progress.enabled">
|
<div class="clearfix cancelable_progress_wrap" ng-if="historyMessage.media.document.progress.enabled">
|
||||||
<a class="im_message_media_progress_cancel pull-right" ng-click="historyMessage.media.document.progress.cancel()">Cancel</a>
|
<a class="im_message_media_progress_cancel pull-right" ng-click="historyMessage.media.document.progress.cancel()" my-i18n="modal_cancel"></a>
|
||||||
<div class="im_message_download_progress_wrap">
|
<div class="im_message_download_progress_wrap">
|
||||||
<div class="progress tg_down_progress">
|
<div class="progress tg_down_progress">
|
||||||
<div class="progress-bar progress-bar-success" ng-style="{width: historyMessage.media.document.progress.percent + '%'}"></div>
|
<div class="progress-bar progress-bar-success" ng-style="{width: historyMessage.media.document.progress.percent + '%'}"></div>
|
||||||
@ -36,4 +40,4 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<span class="im_message_document_size" ng-if="historyMessage.media.progress" ng-bind="historyMessage.media.progress | formatSizeProgress"></span>
|
<span class="im_message_document_size" ng-if="historyMessage.media.progress" ng-bind="historyMessage.media.progress | formatSizeProgress"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="clearfix cancelable_progress_wrap">
|
<div class="clearfix cancelable_progress_wrap">
|
||||||
<a class="im_message_media_progress_cancel pull-right" ng-click="historyMessage.media.progress.cancel()">Cancel</a>
|
<a class="im_message_media_progress_cancel pull-right" ng-click="historyMessage.media.progress.cancel()" my-i18n="modal_cancel"></a>
|
||||||
<div class="im_message_download_progress_wrap">
|
<div class="im_message_download_progress_wrap">
|
||||||
<div class="progress tg_down_progress">
|
<div class="progress tg_down_progress">
|
||||||
<div class="progress-bar progress-bar-success" role="progressbar" ng-style="{width: historyMessage.media.progress.percent + '%'}"></div>
|
<div class="progress-bar progress-bar-success" role="progressbar" ng-style="{width: historyMessage.media.progress.percent + '%'}"></div>
|
||||||
@ -14,4 +14,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,32 +1,23 @@
|
|||||||
<span ng-switch="::historyMessage.action._">
|
<span ng-switch="::historyMessage.action._">
|
||||||
<span ng-switch-when="messageActionChatCreate">
|
<my-i18n>
|
||||||
created the group «<strong ng-bind-html="::historyMessage.action.rTitle"></strong>»
|
<span ng-switch-when="messageActionChatCreate" my-i18n-format="message_service_created_group"></span>
|
||||||
</span>
|
<span ng-switch-when="messageActionChatEditTitle" my-i18n-format="message_service_changed_group_name"></span>
|
||||||
<span ng-switch-when="messageActionChatEditTitle">
|
<my-i18n-param name="group-name">«<strong ng-bind-html="::historyMessage.action.rTitle"></strong>»</my-i18n-param>
|
||||||
changed group name to «<strong ng-bind-html="::historyMessage.action.rTitle"></strong>»
|
</my-i18n>
|
||||||
</span>
|
<span ng-switch-when="messageActionChatEditPhoto" my-i18n="message_service_changed_group_photo"></span>
|
||||||
<span ng-switch-when="messageActionChatEditPhoto">
|
<span ng-switch-when="messageActionChatDeletePhoto" my-i18n="message_service_removed_group_photo"></span>
|
||||||
changed group photo
|
|
||||||
</span>
|
|
||||||
<span ng-switch-when="messageActionChatDeletePhoto">
|
|
||||||
removed group photo
|
|
||||||
</span>
|
|
||||||
<span ng-switch-when="messageActionChatAddUser" ng-switch="::historyMessage.from_id != historyMessage.action.user_id">
|
<span ng-switch-when="messageActionChatAddUser" ng-switch="::historyMessage.from_id != historyMessage.action.user_id">
|
||||||
<span ng-switch-when="true">
|
<span ng-switch-when="true" my-i18n="message_service_invited_user">
|
||||||
invited <a my-user-link="historyMessage.action.user_id" color="true"></a>
|
<my-i18n-param name="user"><a my-user-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>
|
||||||
</span>
|
|
||||||
<span ng-switch-default>
|
|
||||||
returned to group
|
|
||||||
</span>
|
</span>
|
||||||
|
<span ng-switch-default my-i18n="message_service_returned_to_group"></span>
|
||||||
</span>
|
</span>
|
||||||
<span ng-switch-when="messageActionChatDeleteUser" ng-switch="::historyMessage.from_id != historyMessage.action.user_id">
|
<span ng-switch-when="messageActionChatDeleteUser" ng-switch="::historyMessage.from_id != historyMessage.action.user_id">
|
||||||
<span ng-switch-when="true">
|
<span ng-switch-when="true" my-i18n="message_service_kicked_user">
|
||||||
kicked <a my-user-link="historyMessage.action.user_id" color="true"></a>
|
<my-i18n-param name="user"><a my-user-link="historyMessage.action.user_id" color="true"></a></my-i18n-param>
|
||||||
</span>
|
|
||||||
<span ng-switch-default>
|
|
||||||
left group
|
|
||||||
</span>
|
</span>
|
||||||
|
<span ng-switch-default my-i18n="message_service_left_group"></span>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span ng-switch-default ng-bind="'Unsupported action ' + historyMessage.action._"></span>
|
<span ng-switch-default ng-bind="'message_service_unsupported_action' | i18n:historyMessage.action._"></span>
|
||||||
</span>
|
</span>
|
||||||
|
@ -6,9 +6,9 @@
|
|||||||
|
|
||||||
<div class="media_meta_wrap clearfix">
|
<div class="media_meta_wrap clearfix">
|
||||||
<div class="media_modal_actions pull-right">
|
<div class="media_modal_actions pull-right">
|
||||||
<a href="" class="media_modal_action_link" ng-click="download()">Download</a>
|
<a href="" class="media_modal_action_link" ng-click="download()" my-i18n="media_modal_download"></a>
|
||||||
<a href="" class="media_modal_action_link" ng-if="canForward" ng-click="forward()">Forward</a>
|
<a href="" class="media_modal_action_link" ng-if="canForward" ng-click="forward()" my-i18n="media_modal_forward"></a>
|
||||||
<a href="" class="media_modal_action_link" ng-if="canDelete" ng-click="delete()">Delete</a>
|
<a href="" class="media_modal_action_link" ng-if="canDelete" ng-click="delete()" my-i18n="media_modal_delete"></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="media_modal_info">
|
<p class="media_modal_info">
|
||||||
@ -19,4 +19,4 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -8,15 +8,13 @@
|
|||||||
|
|
||||||
<ul class="nav navbar-nav navbar-quick-nav">
|
<ul class="nav navbar-nav navbar-quick-nav">
|
||||||
<li class="navbar-quick-right">
|
<li class="navbar-quick-right">
|
||||||
<a ng-class="{disabled: profile.updating}" ng-click="updateProfile()" ng-bind="profile.updating ? 'Saving...' : 'Save'" ng-disabled="profile.updating"></a>
|
<a ng-class="{disabled: profile.updating}" ng-click="updateProfile()" ng-bind="profile.updating ? 'profile_edit_submit_active' : 'profile_edit_submit' | i18n" ng-disabled="profile.updating"></a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a ng-click="$dismiss()" class="navbar-quick-media-back">
|
<a ng-click="$dismiss()" class="navbar-quick-media-back">
|
||||||
<i class="icon icon-back"></i>
|
<i class="icon icon-back"></i>
|
||||||
<div class="navbar-quick-back-title">
|
<div class="navbar-quick-back-title">
|
||||||
<h4>
|
<h4 my-i18n="profile_edit_modal_title"></h4>
|
||||||
Edit Profile
|
|
||||||
</h4>
|
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@ -33,10 +31,10 @@
|
|||||||
<form class="modal_simple_form" ng-submit="updateProfile()" my-vertical-position="0.3">
|
<form class="modal_simple_form" ng-submit="updateProfile()" my-vertical-position="0.3">
|
||||||
|
|
||||||
<div class="form-group" ng-class="{'has-error': error.field == 'first_name'}">
|
<div class="form-group" ng-class="{'has-error': error.field == 'first_name'}">
|
||||||
<input class="form-control input-lg" my-focused type="text" placeholder="First name" ng-model="profile.first_name" name="first_name"/>
|
<input class="form-control input-lg" my-focused type="text" placeholder="{{'profile_edit_first_name' | i18n}}" ng-model="profile.first_name" name="first_name"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" ng-class="{'has-error': error.field == 'last_name'}">
|
<div class="form-group" ng-class="{'has-error': error.field == 'last_name'}">
|
||||||
<input class="form-control input-lg" type="text" placeholder="Last name" ng-model="profile.last_name"/>
|
<input class="form-control input-lg" type="text" placeholder="{{'profile_edit_last_name' | i18n}}" ng-model="profile.last_name"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
@ -6,9 +6,9 @@
|
|||||||
|
|
||||||
<div class="media_meta_wrap clearfix">
|
<div class="media_meta_wrap clearfix">
|
||||||
<div class="media_modal_actions pull-right">
|
<div class="media_modal_actions pull-right">
|
||||||
<a href="" class="media_modal_action_link" ng-click="download()">Download</a>
|
<a href="" class="media_modal_action_link" ng-click="download()" my-i18n="media_modal_download"></a>
|
||||||
<a ng-if="messageID" href="" class="media_modal_action_link" ng-click="forward()">Forward</a>
|
<a ng-if="messageID" href="" class="media_modal_action_link" ng-click="forward()" my-i18n="media_modal_forward"></a>
|
||||||
<a ng-if="messageID" href="" class="media_modal_action_link" ng-click="delete()">Delete</a>
|
<a ng-if="messageID" href="" class="media_modal_action_link" ng-click="delete()" my-i18n="media_modal_delete"></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p class="media_modal_info">
|
<p class="media_modal_info">
|
||||||
@ -18,4 +18,4 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,14 +5,14 @@
|
|||||||
<div class="welcome_form">
|
<div class="welcome_form">
|
||||||
<div class="welcome_logo"></div>
|
<div class="welcome_logo"></div>
|
||||||
|
|
||||||
<h3 class="welcome_header"><strong>Telegram</strong> Web</h3>
|
<h3 class="welcome_header" my-i18n="welcome_header_md"></h3>
|
||||||
|
|
||||||
<div class="welcome_text">
|
<div class="welcome_text">
|
||||||
<p>This is an unofficial web-client for the <strong>Telegram Messenger</strong>.</p>
|
<p my-i18n="welcome_text_1_md"></p>
|
||||||
<p>It's still an <strong>alpha-version</strong> and may not be 200% reliable</p>
|
<p my-i18n="welcome_text_2_md"></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="welcome_btn_wrap">
|
<div class="welcome_btn_wrap">
|
||||||
<a href="#/login" class="btn btn-primary btn-block">Start Messaging</a>
|
<a href="#/login" class="btn btn-primary btn-block" my-i18n="welcome_start_messaging"></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -24,24 +24,24 @@
|
|||||||
<div class="col-md-4 col-sm-4">
|
<div class="col-md-4 col-sm-4">
|
||||||
<div class="welcome_footer_card_wrap row">
|
<div class="welcome_footer_card_wrap row">
|
||||||
<div class="welcome_footer_card welcome_footer_card_messaging"></div>
|
<div class="welcome_footer_card welcome_footer_card_messaging"></div>
|
||||||
<h4>Fast messaging</h4>
|
<h4 my-i18n="welcome_fast_messaging_header"></h4>
|
||||||
<div class="welcome_footer_card_lead">Send messages with rich emoji support right from your desktop or laptop computer</div>
|
<div class="welcome_footer_card_lead" my-i18n="welcome_fast_messaging_text"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-4 col-sm-4">
|
<div class="col-md-4 col-sm-4">
|
||||||
<div class="welcome_footer_card_wrap">
|
<div class="welcome_footer_card_wrap">
|
||||||
<div class="welcome_footer_card welcome_footer_card_filesharing"></div>
|
<div class="welcome_footer_card welcome_footer_card_filesharing"></div>
|
||||||
<h4>Easy file sharing</h4>
|
<h4 my-i18n="welcome_easy_sharing_header"></h4>
|
||||||
<div class="welcome_footer_card_lead">Share files of any type using drag-and-drop or the attachment icon</div>
|
<div class="welcome_footer_card_lead" my-i18n="welcome_easy_sharing_text"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-4 col-sm-4">
|
<div class="col-md-4 col-sm-4">
|
||||||
<div class="welcome_footer_card_wrap">
|
<div class="welcome_footer_card_wrap">
|
||||||
<div class="welcome_footer_card welcome_footer_card_powerful"></div>
|
<div class="welcome_footer_card welcome_footer_card_powerful"></div>
|
||||||
<h4>Powerful tools</h4>
|
<h4 my-i18n="welcome_powerful_tools_header"></h4>
|
||||||
<div class="welcome_footer_card_lead">Browse shared media and files by type <br/> and set custom notifications</div>
|
<div class="welcome_footer_card_lead" my-i18n="welcome_powerful_tools_text_md"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user