links for blocking/reporting users and topics

This commit is contained in:
or-else
2019-09-22 21:19:04 +03:00
parent 12a0660e5b
commit 2a164ddf49
5 changed files with 137 additions and 96 deletions
+5 -2
View File
@@ -34,11 +34,14 @@
"label_permissions": "Permissions:", "label_permissions": "Permissions:",
"label_you": "You:", "label_you": "You:",
"label_default_access": "Default access mode:", "label_default_access": "Default access mode:",
"action_delete_messages": "Delete Messages",
"action_leave_chat": "Leave Conversation",
"action_report_group": "Report Group",
"action_block_contact": "Block Contact",
"action_report_contact": "Report Contact",
"label_group_members": "Group members:", "label_group_members": "Group members:",
"button_add_members": "Add members", "button_add_members": "Add members",
"button_leave": "Leave",
"group_has_no_members": "No members", "group_has_no_members": "No members",
"action_leave_chat": "Leave",
"login_prompt": "Login", "login_prompt": "Login",
"password_prompt": "Password", "password_prompt": "Password",
"stay_logged_in": "Stay logged in", "stay_logged_in": "Stay logged in",
+5 -2
View File
@@ -86,7 +86,6 @@
"label_default_access": "Права по умолчанию:", "label_default_access": "Права по умолчанию:",
"label_group_members": "Участники чата:", "label_group_members": "Участники чата:",
"button_add_members": "Добавить", "button_add_members": "Добавить",
"button_leave": "Отписаться",
"group_has_no_members": "Нет участников", "group_has_no_members": "Нет участников",
"action_leave_chat": "Уйти из чата", "action_leave_chat": "Уйти из чата",
"menu_item_info": "Информация", "menu_item_info": "Информация",
@@ -138,5 +137,9 @@
"label_legal": "Прочее", "label_legal": "Прочее",
"link_contact_us": "Связаться с нами", "link_contact_us": "Связаться с нами",
"link_terms_of_service": "Условия сервиса", "link_terms_of_service": "Условия сервиса",
"link_privacy_policy": "Политика конфиденциальности" "link_privacy_policy": "Политика конфиденциальности",
"action_delete_messages": "Удалить сообщения",
"action_block_contact": "Заблокировать контакт",
"action_report_contact": "Сообщить о нарушении",
"action_report_group": "Сообщить о нарушении"
} }
+6 -2
View File
@@ -30,7 +30,7 @@
"label_default_access": "默认权限模式:", "label_default_access": "默认权限模式:",
"label_group_members": "群组成员:", "label_group_members": "群组成员:",
"button_add_members": "添加成员", "button_add_members": "添加成员",
"button_leave": "离开", "button_leave": ":!![OBSOLETE]!!:离开",
"group_has_no_members": "无成员", "group_has_no_members": "无成员",
"action_leave_chat": "离开", "action_leave_chat": "离开",
"login_prompt": "登录", "login_prompt": "登录",
@@ -138,5 +138,9 @@
"label_legal": "法律东西", "label_legal": "法律东西",
"link_contact_us": "联系我们", "link_contact_us": "联系我们",
"link_terms_of_service": "条款和条件", "link_terms_of_service": "条款和条件",
"link_privacy_policy": "隐私政策" "link_privacy_policy": "隐私政策",
"action_delete_messages": "删除所有帖子",
"action_block_contact": "屏蔽联系人",
"action_report_contact": "检举垃圾邮件",
"action_report_group": "检举垃圾邮件"
} }
+15 -6
View File
@@ -35,11 +35,14 @@
"label_permissions": "Permissions:", "label_permissions": "Permissions:",
"label_you": "You:", "label_you": "You:",
"label_default_access": "Default access mode:", "label_default_access": "Default access mode:",
"action_delete_messages": "Delete Messages",
"action_leave_chat": "Leave Conversation",
"action_report_group": "Report Group",
"action_block_contact": "Block Contact",
"action_report_contact": "Report Contact",
"label_group_members": "Group members:", "label_group_members": "Group members:",
"button_add_members": "Add members", "button_add_members": "Add members",
"button_leave": "Leave",
"group_has_no_members": "No members", "group_has_no_members": "No members",
"action_leave_chat": "Leave",
"login_prompt": "Login", "login_prompt": "Login",
"password_prompt": "Password", "password_prompt": "Password",
"stay_logged_in": "Stay logged in", "stay_logged_in": "Stay logged in",
@@ -229,7 +232,6 @@
"label_default_access": "Права по умолчанию:", "label_default_access": "Права по умолчанию:",
"label_group_members": "Участники чата:", "label_group_members": "Участники чата:",
"button_add_members": "Добавить", "button_add_members": "Добавить",
"button_leave": "Отписаться",
"group_has_no_members": "Нет участников", "group_has_no_members": "Нет участников",
"action_leave_chat": "Уйти из чата", "action_leave_chat": "Уйти из чата",
"menu_item_info": "Информация", "menu_item_info": "Информация",
@@ -281,7 +283,11 @@
"label_legal": "Прочее", "label_legal": "Прочее",
"link_contact_us": "Связаться с нами", "link_contact_us": "Связаться с нами",
"link_terms_of_service": "Условия сервиса", "link_terms_of_service": "Условия сервиса",
"link_privacy_policy": "Политика конфиденциальности" "link_privacy_policy": "Политика конфиденциальности",
"action_delete_messages": "Удалить сообщения",
"action_block_contact": "Заблокировать контакт",
"action_report_contact": "Сообщить о нарушении",
"action_report_group": "Сообщить о нарушении"
}, },
"zh-CN": { "zh-CN": {
"archived_contacts": "已归档联系人 ({count})", "archived_contacts": "已归档联系人 ({count})",
@@ -315,7 +321,6 @@
"label_default_access": "默认权限模式:", "label_default_access": "默认权限模式:",
"label_group_members": "群组成员:", "label_group_members": "群组成员:",
"button_add_members": "添加成员", "button_add_members": "添加成员",
"button_leave": "离开",
"group_has_no_members": "无成员", "group_has_no_members": "无成员",
"action_leave_chat": "离开", "action_leave_chat": "离开",
"login_prompt": "登录", "login_prompt": "登录",
@@ -423,6 +428,10 @@
"label_legal": "法律东西", "label_legal": "法律东西",
"link_contact_us": "联系我们", "link_contact_us": "联系我们",
"link_terms_of_service": "条款和条件", "link_terms_of_service": "条款和条件",
"link_privacy_policy": "隐私政策" "link_privacy_policy": "隐私政策",
"action_delete_messages": "删除所有帖子",
"action_block_contact": "屏蔽联系人",
"action_report_contact": "检举垃圾邮件",
"action_report_group": "检举垃圾邮件"
} }
} }
+106 -84
View File
@@ -422,6 +422,7 @@ class InfoView extends React.Component {
<GroupManager <GroupManager
members={this.state.contactList} members={this.state.contactList}
requiredMember={this.props.myUserId} requiredMember={this.props.myUserId}
keepInitialMembers={!this.state.admin && !this.state.owner}
myUserId={this.props.myUserId} myUserId={this.props.myUserId}
contacts={this.props.searchableContacts} contacts={this.props.searchableContacts}
onCancel={this.handleHideAddMembers} onCancel={this.handleHideAddMembers}
@@ -498,45 +499,45 @@ class InfoView extends React.Component {
}</FormattedMessage> }</FormattedMessage>
{this.state.moreInfoExpanded ? {this.state.moreInfoExpanded ?
<div className="panel-form-column"> <div className="panel-form-column">
<div className="panel-form-row">
<label><FormattedMessage id="label_user_id" /></label>
<tt>{this.state.address}</tt>
</div>
{this.state.groupTopic ?
<div className="panel-form-row"> <div className="panel-form-row">
<label> <label><FormattedMessage id="label_user_id" /></label>
<FormattedMessage id="label_your_permissions" defaultMessage="Your permissions:" <tt>{this.state.address}</tt>
description="Label for current user permissions" />
</label>
<tt className="clickable"
onClick={this.handleLaunchPermissionsEditor.bind(this, 'want')}>
{this.state.access}
</tt>
</div> </div>
: {this.state.groupTopic ?
<div> <div className="panel-form-row">
<div> <label>
<label className="small"> <FormattedMessage id="label_your_permissions" defaultMessage="Your permissions:"
<FormattedMessage id="label_permissions" defaultMessage="Permissions:" description="Label for current user permissions" />
description="Section title" />
</label> </label>
</div> <tt className="clickable"
<div className="quoted">
<div>
<FormattedMessage id="label_you" defaultMessage="You:"
description="Label for the current user" /> &nbsp;<tt className="clickable"
onClick={this.handleLaunchPermissionsEditor.bind(this, 'want')}> onClick={this.handleLaunchPermissionsEditor.bind(this, 'want')}>
{this.state.access} {this.state.access}
</tt></div> </tt>
<div>{this.state.fullName ? this.state.fullName : formatMessage(messages.other_user)}: </div>
&nbsp;<tt className="clickable" onClick={this.handleLaunchPermissionsEditor.bind(this, 'given')}> :
{this.state.modeGiven2} <div>
</tt> <div>
<label className="small">
<FormattedMessage id="label_permissions" defaultMessage="Permissions:"
description="Section title" />
</label>
</div>
<div className="quoted">
<div>
<FormattedMessage id="label_you" defaultMessage="You:"
description="Label for the current user" /> &nbsp;<tt className="clickable"
onClick={this.handleLaunchPermissionsEditor.bind(this, 'want')}>
{this.state.access}
</tt></div>
<div>{this.state.fullName ? this.state.fullName : formatMessage(messages.other_user)}:
&nbsp;<tt className="clickable" onClick={this.handleLaunchPermissionsEditor.bind(this, 'given')}>
{this.state.modeGiven2}
</tt>
</div>
</div> </div>
</div> </div>
</div> }
} {this.state.sharer && (this.state.auth || this.state.anon) ?
{this.state.sharer && (this.state.auth || this.state.anon) ?
<div> <div>
<div> <div>
<label className="small"> <label className="small">
@@ -575,62 +576,83 @@ class InfoView extends React.Component {
</div> </div>
<div className="hr" /> <div className="hr" />
{this.state.owner ? {this.state.owner ?
<FormattedMessage id="title_tag_manager">{ <>
(tags) => <TagManager <FormattedMessage id="title_tag_manager">{
title={tags} (tags) => <TagManager
tags={this.state.tags} title={tags}
activated={false} tags={this.state.tags}
onSubmit={this.handleTagsUpdated} /> activated={false}
}</FormattedMessage> onSubmit={this.handleTagsUpdated} />
}</FormattedMessage>
<div className="hr" />
</>
: :
null null
} }
{this.state.owner ? <div className="hr" /> : null } <div className="panel-form-column">
{this.state.groupTopic ? <a href="#" className="flat-button" onClick={this.handleDeleteMessages}>
<div className="panel-form-column"> <i className="material-icons">delete_outline</i> &npbs;<FormattedMessage id="action_delete_messages"
<div className="panel-form-row"> defaultMessage="Delete Messages" description="Flat button [Delete Messages]" />
<label className="small"> </a>
<FormattedMessage id="label_group_members" defaultMessage="Group members:" <a href="#" className="red flat-button" onClick={this.handleLeave}>
description="Section title or label" /> <i className="material-icons">exit_to_app</i> &npbs;<FormattedMessage id="action_leave_chat"
</label> defaultMessage="Leave Conversation" description="Flat button [Leave Conversation]" />
</div> </a>
<div className="panel-form-row"> {this.state.groupTopic ?
{this.state.sharer ? <a href="#" className="red flat-button" onClick={this.handleReport}>
<a href="#" className="flat-button" onClick={this.handleShowAddMembers}> <i className="material-icons">report</i> &npbs;<FormattedMessage id="action_report_group"
<i className="material-icons">person_add</i> <FormattedMessage id="button_add_members" defaultMessage="Report Group" description="Flat button [Report Group]" />
defaultMessage="Add members" description="Flat button [Add members] (to topic)" />
</a>
: null}
{!this.state.owner ?
<a href="#" className="red flat-button" onClick={this.handleLeave}>
<i className="material-icons">exit_to_app</i> <FormattedMessage id="button_leave"
defaultMessage="Leave" description="Flat button [Leave] (topic)" />
</a>
: null}
</div>
<FormattedMessage id="group_has_no_members" defaultMessage="No members"
description="Shown in place of group members">{
(no_members) => <ContactList
contacts={this.state.contactList}
myUserId={this.props.myUserId}
emptyListMessage={no_members}
topicSelected={this.state.selectedContact}
showOnline={false}
showUnread={false}
showMode={true}
noScroll={true}
onTopicSelected={this.handleMemberSelected}
showContextMenu={this.state.admin ? this.handleContextMenu : false}
/>
}</FormattedMessage>
</div>
:
<div className="panel-form-row">
<a href="#" className="red flat-button" onClick={this.handleLeave}>
<i className="material-icons">exit_to_app</i> <FormattedMessage id="action_leave_chat"
defaultMessage="Leave" description="Action [Leave] chat" />
</a> </a>
</div> :
<>
<a href="#" className="red flat-button" onClick={this.handleBlock}>
<i className="material-icons">block</i> &npbs;<FormattedMessage id="action_block_contact"
defaultMessage="Block Contact" description="Flat button [Block Contact]" />
</a>
<a href="#" className="red flat-button" onClick={this.handleReport}>
<i className="material-icons">report</i> &npbs;<FormattedMessage id="action_report_contact"
defaultMessage="Report Contact" description="Flat button [Report Contact]" />
</a>
</>
}
</div>
{this.state.groupTopic ?
<>
<div className="hr" />
<div className="panel-form-column">
<div className="panel-form-row">
<label className="small">
<FormattedMessage id="label_group_members" defaultMessage="Group members:"
description="Section title or label" />
</label>
</div>
<div className="panel-form-row">
{this.state.sharer ?
<a href="#" className="flat-button" onClick={this.handleShowAddMembers}>
<i className="material-icons">person_add</i> <FormattedMessage id="button_add_members"
defaultMessage="Add members" description="Flat button [Add members] (to topic)" />
</a>
: null}
</div>
<FormattedMessage id="group_has_no_members" defaultMessage="No members"
description="Shown in place of group members">{
(no_members) => <ContactList
contacts={this.state.contactList}
myUserId={this.props.myUserId}
emptyListMessage={no_members}
topicSelected={this.state.selectedContact}
showOnline={false}
showUnread={false}
showMode={true}
noScroll={true}
onTopicSelected={this.handleMemberSelected}
showContextMenu={this.state.admin ? this.handleContextMenu : false}
/>
}</FormattedMessage>
</div>
</>
:
null
} }
</div> </div>
} }