Merge upstream changes before upgrading to gulp 4 (it has issues)
This commit is contained in:
commit
054d4c3854
@ -101,7 +101,7 @@ Run `npm start` (`gulp watch`) to watch for file changes and automatically rebui
|
||||
|
||||
#### Running in production
|
||||
|
||||
Run `npm run clean` (`gulp clean`), then `npm run publish` (`gulp publish`) to build the minimized production version of the app. Copy `dist` folder contents to your web server. Don't forget to set `X-Frame-Options SAMEORIGIN` header ([docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options)).
|
||||
Run `npm run clean` (`gulp clean`), then `npm run build` (`gulp publish`) to build the minimized production version of the app. Copy `dist` folder contents to your web server. Don't forget to set `X-Frame-Options SAMEORIGIN` header ([docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options)).
|
||||
|
||||
|
||||
### Third party libraries
|
||||
|
@ -499,6 +499,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
canReply: false,
|
||||
canDelete: false,
|
||||
canEdit: false,
|
||||
canReport: false,
|
||||
actions: function () {
|
||||
return $scope.historyState.selectActions ? 'selected' : ($scope.historyState.botActions ? 'bot' : ($scope.historyState.channelActions ? 'channel' : false))
|
||||
},
|
||||
@ -1086,6 +1087,15 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
var wrapDialog = searchMessages ? undefined : dialog
|
||||
var wrappedDialog = AppMessagesManager.wrapForDialog(dialog.top_message, wrapDialog)
|
||||
|
||||
if (searchMessages &&
|
||||
$scope.searchPeer) {
|
||||
var message = AppMessagesManager.getMessage(dialog.top_message)
|
||||
if (message.fromID > 0) {
|
||||
wrappedDialog.peerID = message.fromID
|
||||
wrappedDialog.foundInHistory = true
|
||||
}
|
||||
}
|
||||
|
||||
if (searchMessages) {
|
||||
wrappedDialog.unreadCount = -1
|
||||
} else {
|
||||
@ -1233,6 +1243,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
$scope.selectedEdit = selectedEdit
|
||||
$scope.selectedCancel = selectedCancel
|
||||
$scope.selectedFlush = selectedFlush
|
||||
$scope.selectedReport = selectedReport
|
||||
$scope.selectInlineBot = selectInlineBot
|
||||
|
||||
$scope.startBot = startBot
|
||||
@ -1742,6 +1753,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
|
||||
if (Config.Mobile) {
|
||||
$scope.historyState.canEdit = AppMessagesManager.canEditMessage(messageID)
|
||||
$scope.historyState.canReport = AppMessagesManager.canReportMessage(messageID)
|
||||
|
||||
$modal.open({
|
||||
templateUrl: templateUrl('message_actions_modal'),
|
||||
@ -1765,6 +1777,10 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
selectedForward(messageID)
|
||||
break
|
||||
|
||||
case 'report':
|
||||
selectedReport(messageID)
|
||||
break
|
||||
|
||||
case 'select':
|
||||
$scope.historyState.selectActions = 'selected'
|
||||
$scope.$broadcast('ui_panel_update')
|
||||
@ -1824,6 +1840,15 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
if ($scope.selectedCount == 1) {
|
||||
angular.forEach($scope.selectedMsgs, function (t, messageID) {
|
||||
$scope.historyState.canEdit = AppMessagesManager.canEditMessage(messageID)
|
||||
$scope.historyState.canReport = AppMessagesManager.canReportMessage(messageID)
|
||||
})
|
||||
} else {
|
||||
$scope.historyState.canEdit = false
|
||||
$scope.historyState.canReport = false
|
||||
angular.forEach($scope.selectedMsgs, function (t, messageID) {
|
||||
if (AppMessagesManager.canReportMessage(messageID)) {
|
||||
$scope.historyState.canReport = true
|
||||
}
|
||||
})
|
||||
}
|
||||
$scope.$broadcast('messages_select')
|
||||
@ -1966,6 +1991,38 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
}
|
||||
}
|
||||
|
||||
function selectedReport (selectedMessageID) {
|
||||
var selectedMessageIDs = []
|
||||
if (selectedMessageID) {
|
||||
selectedMessageIDs.push(selectedMessageID)
|
||||
} else if ($scope.selectedCount > 0) {
|
||||
angular.forEach($scope.selectedMsgs, function (t, messageID) {
|
||||
selectedMessageIDs.push(messageID)
|
||||
})
|
||||
}
|
||||
if (selectedMessageIDs.length) {
|
||||
$modal.open({
|
||||
templateUrl: templateUrl('report_msgs_modal'),
|
||||
controller: 'ReportMessagesModalController',
|
||||
windowClass: 'md_simple_modal_window mobile_modal',
|
||||
scope: $scope.$new()
|
||||
}).result.then(function (inputReason) {
|
||||
selectedCancel()
|
||||
AppMessagesManager.reportMessages(selectedMessageIDs, inputReason).then(function () {
|
||||
var toastData = toaster.pop({
|
||||
type: 'info',
|
||||
body: _('confirm_modal_report_success'),
|
||||
bodyOutputType: 'trustedHtml',
|
||||
clickHandler: function () {
|
||||
toaster.clear(toastData)
|
||||
},
|
||||
showCloseButton: false
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
function selectedReply (selectedMessageID) {
|
||||
if (!selectedMessageID && $scope.selectedCount == 1) {
|
||||
angular.forEach($scope.selectedMsgs, function (t, messageID) {
|
||||
@ -3726,7 +3783,9 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
|
||||
$scope.settings = {notifications: true}
|
||||
|
||||
AppProfileManager.getProfile($scope.userID, $scope.override).then(function (userFull) {
|
||||
var profilePromise = AppProfileManager.getProfile($scope.userID, $scope.override)
|
||||
|
||||
profilePromise.then(function (userFull) {
|
||||
$scope.blocked = userFull.pFlags.blocked
|
||||
$scope.bot_info = userFull.bot_info
|
||||
$scope.rAbout = userFull.rAbout
|
||||
@ -3750,6 +3809,12 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
$rootScope.$broadcast('history_focus', {peerString: peerString})
|
||||
}
|
||||
|
||||
$scope.openUserPic = function () {
|
||||
profilePromise.then(function () {
|
||||
$scope.openPhoto($scope.user.photo.photo_id, {p: $scope.userID})
|
||||
})
|
||||
}
|
||||
|
||||
$scope.flushHistory = function (justClear) {
|
||||
ErrorService.confirm({type: justClear ? 'HISTORY_FLUSH' : 'HISTORY_FLUSH_AND_DELETE'}).then(function () {
|
||||
AppMessagesManager.flushHistory($scope.userID, justClear).then(function () {
|
||||
@ -4178,6 +4243,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
})
|
||||
|
||||
.controller('SettingsModalController', function ($rootScope, $scope, $timeout, $modal, AppUsersManager, AppChatsManager, AppPhotosManager, MtpApiManager, Storage, NotificationsManager, MtpApiFileManager, PasswordManager, ApiUpdatesManager, ChangelogNotifyService, LayoutSwitchService, WebPushApiManager, AppRuntimeManager, ErrorService, _) {
|
||||
|
||||
$scope.profile = {}
|
||||
$scope.photo = {}
|
||||
$scope.version = Config.App.version
|
||||
@ -4186,7 +4252,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
$scope.profile = AppUsersManager.getUser(id)
|
||||
})
|
||||
|
||||
MtpApiManager.invokeApi('users.getFullUser', {
|
||||
var profilePromise = MtpApiManager.invokeApi('users.getFullUser', {
|
||||
id: {_: 'inputUserSelf'}
|
||||
}).then(function (userFullResult) {
|
||||
AppUsersManager.saveApiUser(userFullResult.user)
|
||||
@ -4207,6 +4273,12 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
var updatePasswordTimeout = false
|
||||
var stopped = false
|
||||
|
||||
$scope.openUserPic = function () {
|
||||
profilePromise.then(function () {
|
||||
$scope.openPhoto($scope.profile.photo.photo_id, {p: $scope.profile.id})
|
||||
})
|
||||
}
|
||||
|
||||
$scope.changePassword = function (options) {
|
||||
options = options || {}
|
||||
if (options.action == 'cancel_email') {
|
||||
@ -4490,6 +4562,18 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
}
|
||||
})
|
||||
|
||||
.controller('ReportMessagesModalController', function ($scope, $modalInstance) {
|
||||
$scope.reason = {_: 'inputReportReasonSpam', text: ''}
|
||||
$scope.toggleReportReason = function (reason) {
|
||||
$scope.reason = {_: reason}
|
||||
if (reason == 'inputReportReasonOther') {
|
||||
onContentLoaded(function () {
|
||||
$scope.$broadcast('ui_reason_text_focus')
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
.controller('ProfileEditModalController', function ($scope, $modalInstance, AppUsersManager, MtpApiManager) {
|
||||
$scope.profile = {}
|
||||
$scope.error = {}
|
||||
|
File diff suppressed because one or more lines are too long
@ -106,7 +106,7 @@ chatPhotoEmpty#37c1011c = ChatPhoto;
|
||||
chatPhoto#6153276a photo_small:FileLocation photo_big:FileLocation = ChatPhoto;
|
||||
|
||||
messageEmpty#83e5de54 id:int = Message;
|
||||
message#44f9b43d flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true id:int from_id:flags.8?int to_id:Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to_msg_id:flags.3?int date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long = Message;
|
||||
message#44f9b43d flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true from_scheduled:flags.18?true id:int from_id:flags.8?int to_id:Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to_msg_id:flags.3?int date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long = Message;
|
||||
messageService#9e19a1f6 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true id:int from_id:flags.8?int to_id:Peer reply_to_msg_id:flags.3?int date:int action:MessageAction = Message;
|
||||
|
||||
messageMediaEmpty#3ded6320 = MessageMedia;
|
||||
@ -174,7 +174,6 @@ inputPeerNotifySettings#38935eb2 flags:# show_previews:flags.0?true silent:flags
|
||||
peerNotifyEventsEmpty#add53cb3 = PeerNotifyEvents;
|
||||
peerNotifyEventsAll#6d1ded88 = PeerNotifyEvents;
|
||||
|
||||
peerNotifySettingsEmpty#70a68512 = PeerNotifySettings;
|
||||
peerNotifySettings#9acda4c0 flags:# show_previews:flags.0?true silent:flags.1?true mute_until:int sound:string = PeerNotifySettings;
|
||||
|
||||
peerSettings#818426cd flags:# report_spam:flags.0?true = PeerSettings;
|
||||
@ -185,6 +184,7 @@ wallPaperSolid#63117f24 id:int title:string bg_color:int color:int = WallPaper;
|
||||
inputReportReasonSpam#58dbcab8 = ReportReason;
|
||||
inputReportReasonViolence#1e22c78d = ReportReason;
|
||||
inputReportReasonPornography#2e59d922 = ReportReason;
|
||||
inputReportReasonChildAbuse#adf44ee3 = ReportReason;
|
||||
inputReportReasonOther#e1746d0a text:string = ReportReason;
|
||||
|
||||
userFull#f220f3f flags:# blocked:flags.0?true phone_calls_available:flags.4?true phone_calls_private:flags.5?true user:User about:flags.1?string link:contacts.Link profile_photo:flags.2?Photo notify_settings:PeerNotifySettings bot_info:flags.3?BotInfo common_chats_count:int = UserFull;
|
||||
@ -423,7 +423,7 @@ accountDaysTTL#b8d0afdf days:int = AccountDaysTTL;
|
||||
documentAttributeImageSize#6c37c15c w:int h:int = DocumentAttribute;
|
||||
documentAttributeAnimated#11b58939 = DocumentAttribute;
|
||||
documentAttributeSticker#6319d612 flags:# mask:flags.1?true alt:string stickerset:InputStickerSet mask_coords:flags.0?MaskCoords = DocumentAttribute;
|
||||
documentAttributeVideo#ef02ce6 flags:# round_message:flags.0?true duration:int w:int h:int = DocumentAttribute;
|
||||
documentAttributeVideo#ef02ce6 flags:# round_message:flags.0?true supports_streaming:flags.1?true duration:int w:int h:int = DocumentAttribute;
|
||||
documentAttributeAudio#9852f9c6 flags:# voice:flags.10?true duration:int title:flags.0?string performer:flags.1?string waveform:flags.2?bytes = DocumentAttribute;
|
||||
documentAttributeFilename#15590068 file_name:string = DocumentAttribute;
|
||||
documentAttributeHasStickers#9801d2f7 = DocumentAttribute;
|
||||
@ -578,7 +578,7 @@ botInlineMediaResult#17db940b flags:# id:string type:string photo:flags.0?Photo
|
||||
|
||||
messages.botResults#947ca848 flags:# gallery:flags.0?true query_id:long next_offset:flags.1?string switch_pm:flags.2?InlineBotSwitchPM results:Vector<BotInlineResult> cache_time:int users:Vector<User> = messages.BotResults;
|
||||
|
||||
exportedMessageLink#1f486803 link:string = ExportedMessageLink;
|
||||
exportedMessageLink#5dab1af4 link:string html:string = ExportedMessageLink;
|
||||
|
||||
messageFwdHeader#559ebe6d flags:# from_id:flags.0?int date:int channel_id:flags.1?int channel_post:flags.2?int post_author:flags.3?string saved_from_peer:flags.4?Peer saved_from_msg_id:flags.4?int = MessageFwdHeader;
|
||||
|
||||
@ -821,7 +821,6 @@ auth.signUp#1b067634 phone_number:string phone_code_hash:string phone_code:strin
|
||||
auth.signIn#bcd51581 phone_number:string phone_code_hash:string phone_code:string = auth.Authorization;
|
||||
auth.logOut#5717da40 = Bool;
|
||||
auth.resetAuthorizations#9fab0d1a = Bool;
|
||||
auth.sendInvites#771c1d97 phone_numbers:Vector<string> message:string = Bool;
|
||||
auth.exportAuthorization#e5bfffcd dc_id:int = auth.ExportedAuthorization;
|
||||
auth.importAuthorization#e3ef9613 id:int bytes:bytes = auth.Authorization;
|
||||
auth.bindTempAuthKey#cdd42a05 perm_auth_key_id:long nonce:long expires_at:int encrypted_message:bytes = Bool;
|
||||
@ -833,7 +832,7 @@ auth.resendCode#3ef1a9bf phone_number:string phone_code_hash:string = auth.SentC
|
||||
auth.cancelCode#1f040578 phone_number:string phone_code_hash:string = Bool;
|
||||
auth.dropTempAuthKeys#8e48a188 except_auth_keys:Vector<long> = Bool;
|
||||
|
||||
account.registerDevice#01280460 token_type:int token:string app_sandbox:Bool other_uids:Vector<int> = Bool;
|
||||
account.registerDevice#1389cc token_type:int token:string app_sandbox:Bool other_uids:Vector<int> = Bool;
|
||||
account.unregisterDevice#3076c4bf token_type:int token:string other_uids:Vector<int> = Bool;
|
||||
account.updateNotifySettings#84be5b93 peer:InputNotifyPeer settings:InputPeerNotifySettings = Bool;
|
||||
account.getNotifySettings#12b3ad31 peer:InputNotifyPeer = PeerNotifySettings;
|
||||
@ -895,6 +894,7 @@ messages.forwardMessages#708e0195 flags:# silent:flags.5?true background:flags.6
|
||||
messages.reportSpam#cf1592db peer:InputPeer = Bool;
|
||||
messages.hideReportSpam#a8f1709b peer:InputPeer = Bool;
|
||||
messages.getPeerSettings#3672e09c peer:InputPeer = PeerSettings;
|
||||
messages.report#bd82b658 peer:InputPeer id:Vector<int> reason:ReportReason = Bool;
|
||||
messages.getChats#3c6aa187 id:Vector<int> = messages.Chats;
|
||||
messages.getFullChat#3b831c66 chat_id:int = messages.ChatFull;
|
||||
messages.editChatTitle#dc452855 chat_id:int title:string = Updates;
|
||||
@ -902,7 +902,6 @@ messages.editChatPhoto#ca4c79d8 chat_id:int photo:InputChatPhoto = Updates;
|
||||
messages.addChatUser#f9a0aa09 chat_id:int user_id:InputUser fwd_limit:int = Updates;
|
||||
messages.deleteChatUser#e0611f16 chat_id:int user_id:InputUser = Updates;
|
||||
messages.createChat#9cb126e users:Vector<InputUser> title:string = Updates;
|
||||
messages.forwardMessage#33963bf9 peer:InputPeer id:int random_id:long = Updates;
|
||||
messages.getDhConfig#26cf8950 version:int random_length:int = messages.DhConfig;
|
||||
messages.requestEncryption#f64daf43 user_id:InputUser random_id:int g_a:bytes = EncryptedChat;
|
||||
messages.acceptEncryption#3dbc0415 peer:InputEncryptedChat g_b:bytes key_fingerprint:long = EncryptedChat;
|
||||
@ -915,6 +914,7 @@ messages.sendEncryptedService#32d439a4 peer:InputEncryptedChat random_id:long da
|
||||
messages.receivedQueue#55a5bb66 max_qts:int = Vector<long>;
|
||||
messages.reportEncryptedSpam#4b0c8c0f peer:InputEncryptedChat = Bool;
|
||||
messages.readMessageContents#36a73f77 id:Vector<int> = messages.AffectedMessages;
|
||||
messages.getStickers#ae22e045 emoticon:string hash:string = messages.Stickers;
|
||||
messages.getAllStickers#1c9618b1 hash:int = messages.AllStickers;
|
||||
messages.getWebPagePreview#25223e24 message:string = MessageMedia;
|
||||
messages.exportChatInvite#7d885289 chat_id:int = ExportedChatInvite;
|
||||
|
@ -394,7 +394,8 @@ function templateUrl (tplName) {
|
||||
megagroup_edit_modal: 'desktop',
|
||||
inline_results: 'desktop',
|
||||
composer_dropdown: 'desktop',
|
||||
peer_pinned_message_bar: 'desktop'
|
||||
peer_pinned_message_bar: 'desktop',
|
||||
report_msgs_modal: 'desktop'
|
||||
}
|
||||
var layout = forceLayout[tplName] || (Config.Mobile ? 'mobile' : 'desktop')
|
||||
return 'partials/' + layout + '/' + tplName + '.html'
|
||||
|
@ -486,7 +486,7 @@
|
||||
"im_reply_loading": "Lade{dots}",
|
||||
"im_X_forwarded_messages": "{'one': 'hat {} Nachricht weitergeleitet', 'other': 'hat {} Nachrichten weitergeleitet'}",
|
||||
"im_photos_drop_text": "Bilder hier reinschieben um sie zu verschicken",
|
||||
"im_message_field_placeholder": "Schreibe eine Nachricht...",
|
||||
"im_message_field_placeholder": "Nachricht",
|
||||
"im_broadcast_field_placeholder": "Broadcast...",
|
||||
"im_emoji_tab": "Emoji",
|
||||
"im_stickers_tab": "Sticker",
|
||||
|
@ -219,6 +219,15 @@
|
||||
"group_invite_revoke_active": "Revoking...",
|
||||
"group_invite_revoke": "Revoke",
|
||||
|
||||
"report_reason_modal_title": "Report",
|
||||
"report_reason_modal_spam": "Spam",
|
||||
"report_reason_modal_violence": "Violence",
|
||||
"report_reason_modal_pornography": "Pornography",
|
||||
"report_reason_modal_childabuse": "Child Abuse",
|
||||
"report_reason_modal_other": "Other",
|
||||
"report_reason_modal_other_placeholder": "Description",
|
||||
"report_reason_modal_submit_btn": "Send",
|
||||
|
||||
"clipboard_copied": "Copied!",
|
||||
"clipboard_press_ctrl_c": "Press Ctrl+C to copy",
|
||||
"clipboard_press_cmd_c": "Press ⌘+C to copy",
|
||||
@ -246,6 +255,7 @@
|
||||
"confirm_modal_login_phone_correct": "Is this phone number correct?",
|
||||
"confirm_modal_forward_to_peer": "Forward to {peer}?",
|
||||
"confirm_modal_forward_to_peer_success": "Message was successfully forwarded.",
|
||||
"confirm_modal_report_success": "Report sent",
|
||||
"confirm_modal_send_to_peer": "Send to {peer}?",
|
||||
"confirm_modal_share_file_peer": "Share with {peer}?",
|
||||
"confirm_modal_invite_peer": "Invite to {peer}?",
|
||||
@ -391,6 +401,7 @@
|
||||
"message_action_reply": "Reply",
|
||||
"message_action_edit": "Edit",
|
||||
"message_action_delete": "Delete",
|
||||
"message_action_report": "Report",
|
||||
"message_action_forward": "Forward",
|
||||
"message_action_select": "Select",
|
||||
"message_action_cancel": "Cancel",
|
||||
@ -441,7 +452,7 @@
|
||||
"error_modal_recovery_na_description": "Since you haven't provided a recovery e-mail when setting up your password, your remaining options are either to remember your password or to reset your account.",
|
||||
"error_modal_password_success_descripion": "Your password for Two-Step Verification is now active.",
|
||||
"error_modal_password_disabled_descripion": "You have disabled Two-Step Verification.",
|
||||
"error_modal_user_not_mutual_contact": "The user can be invited by his contact only",
|
||||
"error_modal_user_not_mutual_contact": "The user can be invited by their contact only",
|
||||
"error_modal_invite_link_invalid": "The invite link is invalid",
|
||||
"error_modal_channel_not_accessible": "Sorry, this channel is not accessible.",
|
||||
"error_modal_not_contact_flood": "Sorry, you can only send messages to mutual contacts at the moment. {more-info-link: More info »}",
|
||||
@ -529,6 +540,7 @@
|
||||
"im_channel_join": "+ Join",
|
||||
"im_channel_mute": "Mute",
|
||||
"im_channel_unmute": "Unmute",
|
||||
"im_report": "Report {count}",
|
||||
"im_reply_loading": "Loading{dots}",
|
||||
"im_X_forwarded_messages": "{'one': '{} forwarded message', 'other': '{} forwarded messages'}",
|
||||
"im_photos_drop_text": "Drop photos here to send",
|
||||
|
@ -78,7 +78,7 @@
|
||||
"settings_modal_change_password": "Cambiar contraseña",
|
||||
"settings_modal_disable_password": "Desactivar",
|
||||
"settings_modal_disable_password_mobile": "Desactivar la contraseña",
|
||||
"settings_modal_password_email_pending": "Haz click en el enlace en {email} para configurar la verificación en dos pasos.",
|
||||
"settings_modal_password_email_pending": "Haz clic en el enlace en {email} para configurar la verificación en dos pasos.",
|
||||
"settings_modal_password_email_pending_cancel": "Cancelar",
|
||||
"settings_modal_password_email_pending_cancel_mobile": "Anular contraseña",
|
||||
"password_delete_title": "Desactivar contraseña",
|
||||
@ -88,7 +88,7 @@
|
||||
"password_new_placeholder": "Pon tu nueva contraseña",
|
||||
"password_confirm_placeholder": "Repite tu nueva contraseña",
|
||||
"password_hint_placeholder": "Pon la pista para tu contraseña",
|
||||
"password_email_placeholder": "Pon tu e-mail de recuperación",
|
||||
"password_email_placeholder": "Pon tu correo de recuperación",
|
||||
"password_create_description": "Esta contraseña será necesaria cuando inicies sesión en un nuevo dispositivo, además del código que recibes vía SMS.",
|
||||
"password_create_active": "Guardando...",
|
||||
"password_create_submit": "Guardar",
|
||||
@ -195,7 +195,7 @@
|
||||
"group_invite_link_link_label": "Copiar enlace",
|
||||
"group_invite_link_loading": "Cargando...",
|
||||
"group_invite_revoke_active": "Revocando...",
|
||||
"group_invite_revoke": "Revocar",
|
||||
"group_invite_revoke": "Anular",
|
||||
"clipboard_copied": "¡Copiado!",
|
||||
"clipboard_press_ctrl_c": "Presiona Ctrl+C para copiar",
|
||||
"clipboard_press_cmd_c": "Presiona ⌘+C para copiar",
|
||||
@ -230,7 +230,7 @@
|
||||
"confirm_modal_migrate_to_https_md": "Telegram Web ahora soporta cifrado SSL adicional. ¿Quieres cambiar a HTTPS?\nLa versión HTTP será inhabilitada pronto.",
|
||||
"confirm_modal_resize_desktop_md": "¿Quieres cambiar a la versión de escritorio?",
|
||||
"confirm_modal_resize_mobile_md": "¿Quieres cambiar a la versión móvil?",
|
||||
"confirm_modal_recovery_email_empty_md": "¡Advertencia! ¿No quieres añadir un e-mail de recuperación para la contraseña?\n\nSi olvidas tu contraseña, perderás el acceso a tu cuenta de Telegram.",
|
||||
"confirm_modal_recovery_email_empty_md": "¡Advertencia! ¿No quieres añadir un correo de recuperación para la contraseña?\n\nSi olvidas tu contraseña, perderás el acceso a tu cuenta de Telegram.",
|
||||
"confirm_modal_abort_password_setup": "¿Anular la configuración de la verificación en dos pasos?",
|
||||
"confirm_modal_reset_account_md": "¿Quieres hacerlo?\nEsta acción no se puede deshacer.\n\nSi continúas con el reinicio de tu cuenta, perderás todos tus chats y mensajes, junto con toda la multimedia y archivos que compartiste. ",
|
||||
"confirm_modal_join_group_link": "¿Quieres unirte al grupo «{title}»?",
|
||||
@ -367,7 +367,7 @@
|
||||
"error_modal_internal_title": "Error del servidor",
|
||||
"error_modal_alert": "Alerta",
|
||||
"error_modal_email_unconfirmed_title": "¡Ya casi!",
|
||||
"error_modal_email_unconfirmed_descripion": "Por favor, revisa tu e-mail (no olvides la carpeta del spam) para configurar la verificación en dos pasos.",
|
||||
"error_modal_email_unconfirmed_descripion": "Por favor, revisa tu correo (no olvides la carpeta del spam) para configurar la verificación en dos pasos.",
|
||||
"error_modal_password_success_title": "¡Listo!",
|
||||
"error_modal_password_disabled_title": "Contraseña desactivada",
|
||||
"error_modal_media_not_supported_title": "Multimedia no soportado",
|
||||
@ -397,7 +397,7 @@
|
||||
"error_modal_flood_description": "Estás realizando demasiadas acciones. Por favor, reinténtalo más tarde.",
|
||||
"error_modal_internal_description": "Error interno del servidor. Por favor, reinténtalo más tarde.",
|
||||
"error_modal_tech_details": "Haz clic para detalles técnicos",
|
||||
"error_modal_recovery_na_description": "Como no estableciste un e-mail de recuperación cuando configuraste tu contraseña, las opciones restantes son recordar tu contraseña o restablecer tu cuenta.",
|
||||
"error_modal_recovery_na_description": "Como no estableciste un correo de recuperación cuando configuraste tu contraseña, las opciones restantes son recordar tu contraseña o restablecer tu cuenta.",
|
||||
"error_modal_password_success_descripion": "Tu contraseña para la verificación en dos pasos está activada.",
|
||||
"error_modal_password_disabled_descripion": "Has desactivado la verificación en dos pasos.",
|
||||
"error_modal_user_not_mutual_contact": "El usuario sólo puede ser invitado por su contacto",
|
||||
@ -416,7 +416,7 @@
|
||||
"head_settings": "Ajustes",
|
||||
"head_log_out": "Cerrar sesión",
|
||||
"head_peer_more": "Más",
|
||||
"head_select_messages": "Elige mensajes",
|
||||
"head_select_messages": "Elegir mensajes",
|
||||
"head_media_photos": "Fotos",
|
||||
"head_media_video": "Vídeos",
|
||||
"head_media_documents": "Archivos",
|
||||
@ -545,7 +545,7 @@
|
||||
"login_recovery_title": "¿Olvidaste la contraseña?",
|
||||
"login_code_placeholder": "Código",
|
||||
"login_code_incorrect": "Código incorrecto",
|
||||
"login_recovery_description_md": "Hemos enviado un código de recuperación al email que nos proporcionaste:\n\n{email}\n\nPor favor, revisa tu e-mail y pon el código de 6 dígitos que enviamos.",
|
||||
"login_recovery_description_md": "Hemos enviado un código de recuperación al correo que nos proporcionaste:\n\n{email}\n\nPor favor, revisa tu correo y pon el código de 6 dígitos que enviamos.",
|
||||
"password_recover_active": "Comprobando...",
|
||||
"password_recover_submit": "Enviar",
|
||||
"login_controller_unknown_country": "Desconocido",
|
||||
|
@ -10,7 +10,7 @@
|
||||
"group_modal_info": "Информация о группе",
|
||||
"group_modal_pluralize_participants": "{'one': '{} участник', 'few': '{} участника', 'many': '{} участников', 'other': '{} участников'}",
|
||||
"group_modal_pluralize_online_participants": "{'one': '1 в сети', 'other': '{} в сети'}",
|
||||
"group_modal_pluralize_subscribers": "{'0': 'No subscribers', 'one': '1 subscriber', 'other': '{} subscribers'}",
|
||||
"group_modal_pluralize_subscribers": "{'0': 'Нет подписчиков', 'one': '1 подписчик', 'other': '{} подписчиков'}",
|
||||
"group_modal_participants": "{total}, {online}",
|
||||
"group_modal_add_member": "Добавить участника",
|
||||
"group_modal_return": "Вернуться в группу",
|
||||
@ -63,7 +63,7 @@
|
||||
"settings_modal_sounds": "Звук",
|
||||
"settings_modal_language": "Язык",
|
||||
"settings_modal_notifications": "Уведомления на рабочем столе",
|
||||
"settings_modal_pushes": "Background notifications",
|
||||
"settings_modal_pushes": "Фоновые уведомления",
|
||||
"settings_modal_message_preview": "Предпросмотр сообщений",
|
||||
"settings_modal_sound": "Звук",
|
||||
"settings_modal_enter_send_description_md": "**Enter** — отправить сообщение, **Shift + Enter** — новая строка",
|
||||
@ -125,7 +125,7 @@
|
||||
"user_modal_share_contact": "Поделиться контактом",
|
||||
"user_modal_block_user": "Заблокировать пользователя",
|
||||
"user_modal_unblock_user": "Разблокировать пользователя",
|
||||
"user_modal_clear_history": "Clear history",
|
||||
"user_modal_clear_history": "Очистить историю",
|
||||
"user_modal_delete_chat": "Delete conversation",
|
||||
"user_modal_add_to_group": "Добавить в группу",
|
||||
"user_modal_info": "Информация",
|
||||
@ -152,7 +152,7 @@
|
||||
"unread_messages_split": "Непрочитанные сообщения",
|
||||
"user_name_deleted": "УДАЛЕНО",
|
||||
"user_first_name_deleted": "УДАЛЕНО",
|
||||
"user_name_saved_msgs": "Saved Messages",
|
||||
"user_name_saved_msgs": "Сохранённые сообщения",
|
||||
"user_status_online": "в сети",
|
||||
"user_status_last_seen": "был(а) в сети {0}",
|
||||
"user_status_recently": "был(а) в сети только что",
|
||||
@ -160,8 +160,8 @@
|
||||
"user_status_last_month": "был(а) в сети в течение месяца",
|
||||
"user_status_long_ago": "был(а) в сети очень давно",
|
||||
"user_status_bot": "бот",
|
||||
"user_status_service_notifications": "service notifications",
|
||||
"user_status_support": "support",
|
||||
"user_status_service_notifications": "сервисные уведомления",
|
||||
"user_status_support": "поддержка",
|
||||
"user_status_bot_noprivacy": "имеет доступ к сообщениям",
|
||||
"user_status_bot_privacy": "не имеет доступа к сообщениям",
|
||||
"chat_title_deleted": "УДАЛЕНО",
|
||||
@ -175,7 +175,7 @@
|
||||
"changelog_modal_title_current_version": "текущая версия",
|
||||
"changelog_modal_full_description_md": "Official free messaging app based on Telegram API for speed and security.\n\nThis software is licensed under GNU GPL version 3.",
|
||||
"changelog_modal_changelog_link": "Changelog",
|
||||
"changelog_app_version": "Version {version}",
|
||||
"changelog_app_version": "Версия {version}",
|
||||
"group_create_contacts_modal_title": "Новая группа",
|
||||
"group_create_modal_title": "Создать группу",
|
||||
"group_create_name": "Название группы",
|
||||
@ -188,7 +188,7 @@
|
||||
"group_edit_submit_active": "Сохранение...",
|
||||
"channel_edit_modal_title": "Edit channel",
|
||||
"channel_edit_name": "Название канала",
|
||||
"channel_edit_about": "Channel description",
|
||||
"channel_edit_about": "Описание канала",
|
||||
"channel_edit_submit": "Сохранить",
|
||||
"channel_edit_submit_active": "Saving...",
|
||||
"group_invite_link_modal_title": "Пригласительная ссылка",
|
||||
@ -196,7 +196,7 @@
|
||||
"group_invite_link_loading": "Загрузка",
|
||||
"group_invite_revoke_active": "Отмена...",
|
||||
"group_invite_revoke": "Отозвать",
|
||||
"clipboard_copied": "Copied!",
|
||||
"clipboard_copied": "Скопировано!",
|
||||
"clipboard_press_ctrl_c": "Press Ctrl+C to copy",
|
||||
"clipboard_press_cmd_c": "Press ⌘+C to copy",
|
||||
"confirm_modal_logout": "Вы действительно хотите выйти?",
|
||||
@ -212,9 +212,9 @@
|
||||
"confirm_modal_message_delete": "Удалить это сообщение?",
|
||||
"confirm_modal_delete_X_messages": "{'one': '{} message', 'other': '{} messages'}",
|
||||
"confirm_modal_delete_messages": "Are you sure you want to delete {messages}?",
|
||||
"confirm_modal_message_revoke": "Delete for {recipient}",
|
||||
"confirm_modal_message_revoke": "Удалить для {recipient}",
|
||||
"confirm_modal_message_revoke_recipient_chat": "everyone",
|
||||
"confirm_modal_delete_messages_for_everyone_chat": "This will delete messages for everyone in this chat.",
|
||||
"confirm_modal_delete_messages_for_everyone_chat": "Это удалит сообщения для всех в этом чате.",
|
||||
"confirm_modal_delete_messages_for_you_only_pm": "This will delete messages just for you, not for {user}.",
|
||||
"confirm_modal_delete_messages_for_you_only_chat": "This will delete messages just for you, not for other members of the chat.",
|
||||
"confirm_modal_photo_delete": "Уверены, что хотите удалить это фото?",
|
||||
@ -246,9 +246,9 @@
|
||||
"confirm_modal_bot_access_geo_inline": "This bot would like to know your location each time you send it a request. This can be used to provide location-specific results.",
|
||||
"confirm_modal_are_u_sure": "Вы уверены?",
|
||||
"confirm_modal_logout_submit": "Выход",
|
||||
"confirm_modal_clear_history_submit": "Clear history",
|
||||
"confirm_modal_clear_history_submit": "Очистить историю",
|
||||
"confirm_modal_leave_chat_submit": "Leave",
|
||||
"confirm_modal_delete_chat_submit": "Delete chat",
|
||||
"confirm_modal_delete_chat_submit": "Удалить чат",
|
||||
"confirm_modal_clipboard_files_send_submit": "Отправить",
|
||||
"confirm_modal_clipboard_file_send_submit": "Отправить",
|
||||
"confirm_modal_message_delete_submit": "Удалить",
|
||||
@ -271,7 +271,7 @@
|
||||
"conversations_modal_forward_submit": "Переслать",
|
||||
"conversations_modal_select_recipients": "Выберите получателей",
|
||||
"conversations_modal_recipients": "Получатели:",
|
||||
"conversations_modal_share_url_loading": "Loading{dots}",
|
||||
"conversations_modal_share_url_loading": "Загрузка{dots}",
|
||||
"conversations_modal_share_url_copy": "Click to copy share link",
|
||||
"contact_edit_modal_first_name": "Имя",
|
||||
"contact_edit_modal_last_name": "Фамилия",
|
||||
@ -284,10 +284,10 @@
|
||||
"contact_import_modal_submit": "Сохранить",
|
||||
"contact_import_modal_submit_active": "Импорт...",
|
||||
"conversation_you": "Вы",
|
||||
"conversation_draft": "Draft:",
|
||||
"conversation_draft": "Черновик:",
|
||||
"conversation_media_photo": "Фотография",
|
||||
"conversation_media_video": "Видео",
|
||||
"conversation_media_round": "Video message",
|
||||
"conversation_media_round": "Видеосообщение",
|
||||
"conversation_media_document": "Файл",
|
||||
"conversation_media_sticker": "Стикер",
|
||||
"conversation_media_gif": "GIF",
|
||||
@ -295,8 +295,8 @@
|
||||
"conversation_media_location": "Местоположение",
|
||||
"conversation_media_contact": "Контакт",
|
||||
"conversation_media_attachment": "Прикрепление",
|
||||
"conversation_media_unsupported": "Unsupported attachment",
|
||||
"conversation_search_peer": "Search in this chat",
|
||||
"conversation_media_unsupported": "Вложение не поддерживается",
|
||||
"conversation_search_peer": "Искать в этом чате",
|
||||
"conversation_group_created": "создал(а) группу",
|
||||
"conversation_group_renamed": "изменил(а) название группы",
|
||||
"conversation_group_photo_updated": "изменил(а) фото группы",
|
||||
@ -315,7 +315,7 @@
|
||||
"conversation_changed_channel_name": "Канал переименован",
|
||||
"conversation_changed_channel_photo": "Фото канала изменено",
|
||||
"conversation_removed_channel_photo": "Фото канала удалено",
|
||||
"conversation_pinned_message": "pinned message",
|
||||
"conversation_pinned_message": "закреплённое сообщение",
|
||||
"conversation_scored_X": "{'one': 'scored {}', 'other': 'scored {}'}",
|
||||
"conversation_message_sent": "прислал(а) вам сообщение",
|
||||
"conversation_forwarded_X_messages": "{'одно': 'отправленное {} сообщение', 'другие': 'отправленные {} сообщения'}",
|
||||
@ -333,10 +333,10 @@
|
||||
"message_service_joined_by_link": "присоединился к группе по пригласительной ссылке",
|
||||
"message_service_joined": "joined the group",
|
||||
"message_service_pinned_message": "pinned «{message}»",
|
||||
"message_service_phonecall_incoming": "Incoming Call",
|
||||
"message_service_phonecall_outgoing": "Outgoing Call",
|
||||
"message_service_phonecall_missed": "Missed Call",
|
||||
"message_service_phonecall_canceled": "Cancelled Call",
|
||||
"message_service_phonecall_incoming": "Входящий вызов",
|
||||
"message_service_phonecall_outgoing": "Исходящий вызов",
|
||||
"message_service_phonecall_missed": "Пропущенный вызов",
|
||||
"message_service_phonecall_canceled": "Отменённый вызов",
|
||||
"message_service_phonecall": "Phone call {duration}",
|
||||
"message_service_scored_game": "{scored} in {message}",
|
||||
"message_service_unsupported_action": "неподдерживаемое действие {action}",
|
||||
@ -347,9 +347,9 @@
|
||||
"message_service_changed_channel_photo": "Фото канала изменено",
|
||||
"message_service_removed_channel_photo": "Фото канала удалено",
|
||||
"message_service_scored_X": "{'one': 'scored {}', 'other': 'scored {}'}",
|
||||
"message_service_payment_sent": "Payment sent",
|
||||
"message_service_payment_sent": "Платёж отправлен",
|
||||
"message_service_screenshot_taken": "took a screenshot!",
|
||||
"message_admin_badge": "admin",
|
||||
"message_admin_badge": "админ.",
|
||||
"message_action_reply": "Ответить",
|
||||
"message_action_edit": "Edit",
|
||||
"message_action_delete": "Удалить",
|
||||
@ -402,7 +402,7 @@
|
||||
"error_modal_password_disabled_descripion": "Вы отключили двухэтапную аутентификацию.",
|
||||
"error_modal_user_not_mutual_contact": "Пользователь может быть приглашен только пользователем, у которого он есть в контактах",
|
||||
"error_modal_invite_link_invalid": "Пригласительная ссылка недействительна",
|
||||
"error_modal_channel_not_accessible": "Sorry, this channel is not accessible.",
|
||||
"error_modal_channel_not_accessible": "Извините, этот канал недоступен.",
|
||||
"error_modal_not_contact_flood": "Sorry, you can only send messages to mutual contacts at the moment. {more-info-link: More info »}",
|
||||
"error_modal_gelocation_na": "App was unable to determine your current location",
|
||||
"error_modal_2fa_recent_confirm": "Your recent attempts to reset this account have been cancelled by its active user. Please try again in 7 days.",
|
||||
@ -416,19 +416,19 @@
|
||||
"head_settings": "Настройки",
|
||||
"head_log_out": "Выход",
|
||||
"head_peer_more": "Ещё",
|
||||
"head_select_messages": "Select messages",
|
||||
"head_select_messages": "Выберите сообщения",
|
||||
"head_media_photos": "Фотографии",
|
||||
"head_media_video": "Видео",
|
||||
"head_media_documents": "Файлы",
|
||||
"head_media_music": "Audio",
|
||||
"head_media_music": "Аудио",
|
||||
"head_media_links": "Shared links",
|
||||
"head_media_audio": "Голосовые сообщения",
|
||||
"head_media_round": "Video messages",
|
||||
"head_media_mymentions": "Mentions",
|
||||
"head_media_search": "Search",
|
||||
"head_media_round": "Видеосообщения",
|
||||
"head_media_mymentions": "Упоминания",
|
||||
"head_media_search": "Поиск",
|
||||
"head_about": "О приложении",
|
||||
"head_clear_all": "Clear history",
|
||||
"head_select": "Select",
|
||||
"head_clear_all": "Очистить историю",
|
||||
"head_select": "Выбрать",
|
||||
"head_typing": "набирает",
|
||||
"head_pluralize_participants": "{'one': '{} участник', 'few': '{} участника', 'many': '{} участников', 'other': '{} участников'}",
|
||||
"head_one_typing": "{name1} набирает{dots}",
|
||||
@ -460,10 +460,10 @@
|
||||
"im_media_video": "Видео",
|
||||
"im_media_documents": "Файлы",
|
||||
"im_media_audio": "Голосовые сообщения",
|
||||
"im_media_round": "Video messages",
|
||||
"im_media_music": "Audio",
|
||||
"im_media_round": "Видеосообщения",
|
||||
"im_media_music": "Аудио",
|
||||
"im_media_links": "Shared Links",
|
||||
"im_media_mentions": "Mentions and Replies",
|
||||
"im_media_mentions": "Упоминания и ответы",
|
||||
"im_pluralize_participants": "{'one': '{} участник', 'few': '{} участника', 'many': '{} участников', 'other': '{} участников'}",
|
||||
"im_show_recent_messages": "Показать последние сообщения",
|
||||
"im_show_all_messages": "Показать все сообщения",
|
||||
@ -495,7 +495,7 @@
|
||||
"im_attach_file_title": "Отправить файл",
|
||||
"im_emoji_btn_title": "Вставить смайл",
|
||||
"im_submit_message": "Отправить",
|
||||
"im_submit_edit_message": "Save",
|
||||
"im_submit_edit_message": "Сохранить",
|
||||
"im_edit_message_title": "Edit message",
|
||||
"im_voice_recording_label": "Release outside this form to cancel",
|
||||
"im_voice_recording_cancel_label": "Release to cancel record",
|
||||
|
@ -1013,6 +1013,19 @@ angular.module('myApp.services')
|
||||
return true
|
||||
}
|
||||
|
||||
function canReportMessage(messageID) {
|
||||
if (!messagesStorage[messageID]) {
|
||||
return false
|
||||
}
|
||||
if (!canEditMessage(messageID)) {
|
||||
var message = messagesStorage[messageID]
|
||||
if (!message.pFlags.out) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
function getMessageEditData(messageID) {
|
||||
if (!canEditMessage(messageID)) {
|
||||
return $q.reject()
|
||||
@ -2177,6 +2190,25 @@ angular.module('myApp.services')
|
||||
return $q.all(promises)
|
||||
}
|
||||
|
||||
function reportMessages (mids, reason) {
|
||||
mids = mids.sort()
|
||||
var splitted = AppMessagesIDsManager.splitMessageIDsByChannels(mids)
|
||||
var promises = []
|
||||
angular.forEach(splitted.msgIDs, function (msgIDs, channelID) {
|
||||
var peerID = -channelID || getMessagePeer(getMessage(msgIDs[0]))
|
||||
var promise = MtpApiManager.invokeApi('messages.report', {
|
||||
peer: AppPeersManager.getInputPeerByID(peerID),
|
||||
id: msgIDs,
|
||||
reason: reason
|
||||
}).then(function (updates) {
|
||||
ApiUpdatesManager.processUpdateMessage(updates)
|
||||
})
|
||||
promises.push(promise)
|
||||
})
|
||||
|
||||
return $q.all(promises)
|
||||
}
|
||||
|
||||
function startBot (botID, chatID, startParam) {
|
||||
var peerID = chatID ? -chatID : botID
|
||||
if (startParam) {
|
||||
@ -3847,6 +3879,7 @@ angular.module('myApp.services')
|
||||
sendFile: sendFile,
|
||||
sendOther: sendOther,
|
||||
forwardMessages: forwardMessages,
|
||||
reportMessages: reportMessages,
|
||||
startBot: startBot,
|
||||
shareGame: shareGame,
|
||||
editMessage: editMessage,
|
||||
@ -3856,6 +3889,7 @@ angular.module('myApp.services')
|
||||
getMessageShareLink: getMessageShareLink,
|
||||
canMessageBeEdited: canMessageBeEdited,
|
||||
canEditMessage: canEditMessage,
|
||||
canReportMessage: canReportMessage,
|
||||
getMessageEditData: getMessageEditData,
|
||||
canRevokeMessage: canRevokeMessage,
|
||||
clearDialogCache: clearDialogCache,
|
||||
|
@ -200,6 +200,7 @@
|
||||
<a class="btn btn-md btn-md-primary im_edit_cancel_link" ng-click="selectedCancel()" my-i18n="modal_cancel"></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-primary im_edit_delete_btn" ng-click="selectedDelete()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_delete" ng-show="historyState.canDelete"></a>
|
||||
<a class="btn btn-primary im_edit_delete_btn" ng-click="selectedReport()" ng-class="{disabled: !selectedCount}" ng-disabled="!selectedCount" my-i18n-format="im_report" ng-show="historyState.canReport"></a>
|
||||
<a class="btn btn-primary im_edit_reply_btn" ng-click="selectedReply()" ng-show="selectedCount == 1 && historyState.canReply" my-i18n="im_reply"></a>
|
||||
<a class="btn btn-primary im_edit_reply_btn" ng-click="selectedEdit()" ng-show="selectedCount == 1 && historyState.canEdit" my-i18n="im_edit"></a>
|
||||
<my-i18n-param name="count"><strong class="im_selected_count" ng-show="selectedCount > 0" ng-bind="selectedCount"></strong></my-i18n-param>
|
||||
|
@ -7,7 +7,7 @@
|
||||
<div class="inline_result_ind"></div>
|
||||
<div ng-switch-when="botInlineMediaResult" ng-switch="result.document.url !== undefined" class="inline_result_gif_mtproto">
|
||||
<div ng-switch-when="true" ng-switch="result.document.mime_type == 'video/mp4'">
|
||||
<video ng-switch-when="true" width="{{result.thumbW}}" height="{{result.thumbH}}" loop autoplay class="img_gif_video">
|
||||
<video ng-switch-when="true" width="{{result.thumbW}}" height="{{result.thumbH}}" loop autoplay muted class="img_gif_video">
|
||||
<source ng-src="{{result.document.url}}" type="video/mp4">
|
||||
</video>
|
||||
<img ng-switch-default class="img_gif_image" ng-src="{{result.document.url}}" width="{{result.thumbW}}" height="{{result.thumbH}}" />
|
||||
@ -18,7 +18,7 @@
|
||||
</div>
|
||||
<div ng-switch-default ng-switch="result.contentUrl !== undefined" class="inline_result_gif_http">
|
||||
<div ng-switch-when="true" ng-switch="result.content_type == 'video/mp4'">
|
||||
<video ng-switch-when="true" width="{{result.thumbW}}" height="{{result.thumbH}}" loop autoplay class="img_gif_video">
|
||||
<video ng-switch-when="true" width="{{result.thumbW}}" height="{{result.thumbH}}" loop autoplay muted class="img_gif_video">
|
||||
<source ng-src="{{result.contentUrl}}" type="video/mp4">
|
||||
</video>
|
||||
<img ng-switch-default class="img_gif_image" ng-src="{{result.contentUrl}}" width="{{result.thumbW}}" height="{{result.thumbH}}" />
|
||||
|
@ -1,4 +1,4 @@
|
||||
<div class="im_message_outer_wrap hasselect" ng-click="toggleMessage(historyMessage.mid, $event)">
|
||||
<div class="im_message_outer_wrap hasselect" ng-click="toggleMessage(historyMessage.mid, $event)" data-msg-id="{{::historyMessage.id}}">
|
||||
|
||||
<div class="im_message_wrap clearfix" ng-switch="::historyMessage._ == 'messageService'">
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
<div ng-switch="::media.document.type">
|
||||
<div ng-switch="::media.document.type" data-doc-id="{{::media.document.id}}">
|
||||
|
||||
<div ng-switch-when="gif" my-load-gif document="media.document"></div>
|
||||
|
||||
|
51
app/partials/desktop/report_msgs_modal.html
Normal file
51
app/partials/desktop/report_msgs_modal.html
Normal file
@ -0,0 +1,51 @@
|
||||
<div class="md_simple_modal_wrap" my-modal-position>
|
||||
|
||||
<div class="md_simple_modal_body">
|
||||
|
||||
<form class="modal_simple_form" ng-submit="$close(reason)">
|
||||
|
||||
<h4 my-i18n="report_reason_modal_title"></h4>
|
||||
|
||||
<div class="tg_radios_wrap">
|
||||
<a class="md_modal_section_radio_wrap tg_radio" ng-click="toggleReportReason('inputReportReasonSpam')" ng-class="reason._ == 'inputReportReasonSpam' ? 'tg_radio_on' : ''">
|
||||
<span class="icon icon-radio-outer"><i class="icon-radio"></i></span>
|
||||
<span my-i18n="report_reason_modal_spam"></span>
|
||||
</a>
|
||||
|
||||
<a class="md_modal_section_radio_wrap tg_radio" ng-click="toggleReportReason('inputReportReasonViolence')" ng-class="reason._ == 'inputReportReasonViolence' ? 'tg_radio_on' : ''">
|
||||
<span class="icon icon-radio-outer"><i class="icon-radio"></i></span>
|
||||
<span my-i18n="report_reason_modal_violence"></span>
|
||||
</a>
|
||||
|
||||
<a class="md_modal_section_radio_wrap tg_radio" ng-click="toggleReportReason('inputReportReasonChildAbuse')" ng-class="reason._ == 'inputReportReasonChildAbuse' ? 'tg_radio_on' : ''">
|
||||
<span class="icon icon-radio-outer"><i class="icon-radio"></i></span>
|
||||
<span class="" my-i18n="report_reason_modal_childabuse"></span>
|
||||
</a>
|
||||
|
||||
<a class="md_modal_section_radio_wrap tg_radio" ng-click="toggleReportReason('inputReportReasonPornography')" ng-class="reason._ == 'inputReportReasonPornography' ? 'tg_radio_on' : ''">
|
||||
<span class="icon icon-radio-outer"><i class="icon-radio"></i></span>
|
||||
<span my-i18n="report_reason_modal_pornography"></span>
|
||||
</a>
|
||||
|
||||
|
||||
<a class="md_modal_section_radio_wrap tg_radio" ng-click="toggleReportReason('inputReportReasonOther')" ng-class="reason._ == 'inputReportReasonOther' ? 'tg_radio_on' : ''">
|
||||
<span class="icon icon-radio-outer"><i class="icon-radio"></i></span>
|
||||
<span my-i18n="report_reason_modal_other"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="md-input-group" my-labeled-input ng-show="reason._ == 'inputReportReasonOther'">
|
||||
<label class="md-input-label" my-i18n="report_reason_modal_other_placeholder"></label>
|
||||
<input class="md-input" my-focus-on="ui_reason_text_focus" type="text" ng-model="reason.text" />
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="md_simple_modal_footer">
|
||||
<button class="btn btn-md" ng-click="$dismiss()" my-i18n="modal_cancel"></button>
|
||||
<button class="btn btn-md btn-md-primary" ng-click="$close(reason)" my-i18n="report_reason_modal_submit_btn"></button>
|
||||
</div>
|
||||
|
||||
</div>
|
@ -14,7 +14,7 @@
|
||||
<div ng-switch-when="true" class="peer_modal_photo md_photo_loading loading_dots">
|
||||
<i></i><i></i><i></i>
|
||||
</div>
|
||||
<a ng-switch-default ng-click="openPhoto(profile.photo.photo_id, {p: profile.id})" class="peer_modal_photo" my-peer-photolink="::profile.id" img-class="peer_modal_photo" watch="true" no-open="true" ng-class="{disabled: !profile.photo.photo_id}" ng-disabled="!profile.photo.photo_id"></a>
|
||||
<a ng-switch-default ng-click="openUserPic()" class="peer_modal_photo" my-peer-photolink="::profile.id" img-class="peer_modal_photo" watch="true" no-open="true" ng-class="{disabled: !profile.photo.photo_id}" ng-disabled="!profile.photo.photo_id"></a>
|
||||
</div>
|
||||
<div class="peer_modal_profile">
|
||||
<div class="peer_modal_profile_name" my-peer-link="profile.id"></div>
|
||||
|
@ -11,7 +11,7 @@
|
||||
|
||||
<div class="peer_modal_profile_wrap clearfix">
|
||||
<div class="peer_modal_photo_wrap pull-left">
|
||||
<a ng-click="openPhoto(user.photo.photo_id, {p: user.id})" class="peer_modal_photo" ng-class="{disabled: !user.photo.photo_id}" ng-disabled="!user.photo.photo_id" my-peer-photolink="::user.id" img-class="peer_modal_photo" no-open="true"></a>
|
||||
<a ng-click="openUserPic()" class="peer_modal_photo" ng-class="{disabled: !user.photo.photo_id}" ng-disabled="!user.photo.photo_id" my-peer-photolink="::user.id" img-class="peer_modal_photo" no-open="true"></a>
|
||||
</div>
|
||||
<div class="peer_modal_profile">
|
||||
<div class="peer_modal_profile_name" my-peer-link="user.id" verified="true"></div>
|
||||
|
@ -5,6 +5,7 @@
|
||||
<button ng-if="historyState.canEdit" class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_edit" ng-click="$close('edit')"></button>
|
||||
<button class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_forward" ng-click="$close('forward')"></button>
|
||||
<button ng-if="historyState.canDelete" class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_delete" ng-click="$close('delete')"></button>
|
||||
<button ng-if="historyState.canReport" class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_report" ng-click="$close('report')"></button>
|
||||
<button class="btn btn-md btn-md-primary btn-block" my-i18n="message_action_select" ng-click="$close('select')"></button>
|
||||
<button class="btn btn-md btn-block" my-i18n="message_action_cancel" ng-click="$dismiss()"></button>
|
||||
</div>
|
||||
|
@ -1,4 +1,5 @@
|
||||
<a class="im_message_photo_thumb" ng-click="openPhoto(media.photo.id, {m: messageId})" ng-style="::{width: media.photo.thumb.width + 'px'}" ng-mouseover="preloadPhoto(media.photo.id)">
|
||||
<a class="im_message_photo_thumb" ng-click="openPhoto(media.photo.id, {m: messageId})" ng-style="::{width: media.photo.thumb.width + 'px'}" ng-mouseover="preloadPhoto(media.photo.id)" data-photo-id="{{::media.photo.id}}">
|
||||
|
||||
<img
|
||||
class="im_message_photo_thumb"
|
||||
my-load-thumb
|
||||
|
@ -59,7 +59,7 @@
|
||||
|
||||
<div class="mobile_user_modal_photo_profile_wrap">
|
||||
|
||||
<a ng-click="openPhoto(profile.photo.photo_id, {p: profile.id})" class="mobile_user_modal_image_wrap pull-left" my-peer-photolink="::profile.id" img-class="mobile_user_modal_image" no-open="true" watch="true" ng-class="{disabled: !profile.photo.photo_id}" ng-disabled="!profile.photo.photo_id"></a>
|
||||
<a ng-click="openUserPic()" class="mobile_user_modal_image_wrap pull-left" my-peer-photolink="::profile.id" img-class="mobile_user_modal_image" no-open="true" watch="true" ng-class="{disabled: !profile.photo.photo_id}" ng-disabled="!profile.photo.photo_id"></a>
|
||||
|
||||
<div class="mobile_user_modal_info_wrap clearfix">
|
||||
<h4 class="mobile_user_modal_header" my-peer-link="profile.id"></h4>
|
||||
|
@ -52,7 +52,7 @@
|
||||
|
||||
<div class="mobile_user_modal_photo_profile_wrap">
|
||||
|
||||
<a ng-click="openPhoto(user.photo.photo_id, {p: user.id})" class="mobile_user_modal_image_wrap pull-left" my-peer-photolink="::user.id" img-class="mobile_user_modal_image" no-open="true" watch="true" ng-class="{disabled: !user.photo.photo_id}" ng-disabled="!user.photo.photo_id"></a>
|
||||
<a ng-click="openUserPic()" class="mobile_user_modal_image_wrap pull-left" my-peer-photolink="::user.id" img-class="mobile_user_modal_image" no-open="true" watch="true" ng-class="{disabled: !user.photo.photo_id}" ng-disabled="!user.photo.photo_id"></a>
|
||||
|
||||
<div class="mobile_user_modal_info_wrap clearfix">
|
||||
<h4 class="mobile_user_modal_header" my-peer-link="user.id" verified="true"></h4>
|
||||
|
@ -45,7 +45,7 @@
|
||||
"homepage": "http://zhukov.github.io/webogram",
|
||||
"devDependencies": {
|
||||
"del": "^1.2.0",
|
||||
"event-stream": "^3.1.0",
|
||||
"event-stream": "~3.1.0",
|
||||
"gulp": "^3.9.0",
|
||||
"gulp-angular-templatecache": "^1.1.0",
|
||||
"gulp-concat": "^2.1.7",
|
||||
@ -74,7 +74,7 @@
|
||||
"karma-phantomjs-launcher": "^1.0.2",
|
||||
"phantomjs-prebuilt": "^2.1.14",
|
||||
"run-sequence": "^1.0.2",
|
||||
"st": "^0.5.2",
|
||||
"st": ">=1.2.2",
|
||||
"sw-precache": "^3.2.0"
|
||||
},
|
||||
"standard": {
|
||||
|
Loading…
x
Reference in New Issue
Block a user