summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Bennett <lukeeeebennettplus@gmail.com>2016-08-08 14:04:18 +0100
committerLuke Bennett <lukeeeebennettplus@gmail.com>2016-08-14 00:54:18 +0100
commit1e6d8a388c3e818ee63daabb3b05b0c30f4502fe (patch)
treeb7e8af2862c018092d394c5dee80df7e451c9bf2
parent721232228f7e1aef92cc82d87d8f05136d862c53 (diff)
downloadgitlab-ce-1e6d8a388c3e818ee63daabb3b05b0c30f4502fe.tar.gz
Reverted collapsible design for Hazels
-rw-r--r--app/assets/javascripts/abuse_reports.js.es638
-rw-r--r--app/assets/javascripts/dispatcher.js2
-rw-r--r--app/assets/javascripts/dispatcher.js.coffee173
-rw-r--r--app/assets/stylesheets/pages/admin.scss38
-rw-r--r--app/views/admin/abuse_reports/_abuse_report.html.haml59
-rw-r--r--app/views/admin/abuse_reports/index.html.haml12
6 files changed, 95 insertions, 227 deletions
diff --git a/app/assets/javascripts/abuse_reports.js.es6 b/app/assets/javascripts/abuse_reports.js.es6
new file mode 100644
index 00000000000..a85ba2006d7
--- /dev/null
+++ b/app/assets/javascripts/abuse_reports.js.es6
@@ -0,0 +1,38 @@
+((global) => {
+ const MAX_MESSAGE_LENGTH = 500;
+ const MESSAGE_CELL_SELECTOR = '.abuse-reports .message';
+
+ class AbuseReports {
+ constructor() {
+ $(MESSAGE_CELL_SELECTOR).each(this.truncateLongMessage);
+ $(document)
+ .off('click', MESSAGE_CELL_SELECTOR)
+ .on('click', MESSAGE_CELL_SELECTOR, this.toggleMessageTruncation);
+ }
+
+ truncateLongMessage() {
+ let $messageCellElement = $(this);
+ let reportMessage = $messageCellElement.text();
+ if (reportMessage.length > MAX_MESSAGE_LENGTH) {
+ $messageCellElement.data('original-message', reportMessage);
+ $messageCellElement.data('message-truncated', 'true');
+ $messageCellElement.text(`${reportMessage.substr(0, MAX_MESSAGE_LENGTH)}...`);
+ }
+ }
+
+ toggleMessageTruncation() {
+ let $messageCellElement = $(this);
+ let originalMessage = $messageCellElement.data('original-message');
+ if (!originalMessage) return;
+ if ($messageCellElement.data('message-truncated') === 'true') {
+ $messageCellElement.data('message-truncated', 'false');
+ $messageCellElement.text(originalMessage);
+ } else {
+ $messageCellElement.data('message-truncated', 'true');
+ $messageCellElement.text(`${originalMessage.substr(0, MAX_MESSAGE_LENGTH)}...`);
+ }
+ }
+ }
+
+ global.AbuseReports = AbuseReports;
+})(window.gl);
diff --git a/app/assets/javascripts/dispatcher.js b/app/assets/javascripts/dispatcher.js
index 0606287f35b..c9c7eaf4fc5 100644
--- a/app/assets/javascripts/dispatcher.js
+++ b/app/assets/javascripts/dispatcher.js
@@ -193,7 +193,7 @@
new Labels();
}
case 'abuse_reports':
- new AbuseReports();
+ new gl.AbuseReports();
break;
}
break;
diff --git a/app/assets/javascripts/dispatcher.js.coffee b/app/assets/javascripts/dispatcher.js.coffee
deleted file mode 100644
index 7711f66bb91..00000000000
--- a/app/assets/javascripts/dispatcher.js.coffee
+++ /dev/null
@@ -1,173 +0,0 @@
-$ ->
- new Dispatcher()
-
-class Dispatcher
- constructor: () ->
- @initSearch()
- @initPageScripts()
-
- initPageScripts: ->
- page = $('body').attr('data-page')
-
- unless page
- return false
-
- path = page.split(':')
- shortcut_handler = null
- switch page
- when 'projects:issues:index'
- Issuable.init()
- new IssuableBulkActions()
- shortcut_handler = new ShortcutsNavigation()
- when 'projects:issues:show'
- new Issue()
- shortcut_handler = new ShortcutsIssuable()
- new ZenMode()
- when 'projects:milestones:show', 'groups:milestones:show', 'dashboard:milestones:show'
- new Milestone()
- when 'dashboard:todos:index'
- new Todos()
- when 'projects:milestones:new', 'projects:milestones:edit'
- new ZenMode()
- new DueDateSelect()
- new GLForm($('.milestone-form'))
- when 'groups:milestones:new'
- new ZenMode()
- when 'projects:compare:show'
- new Diff()
- when 'projects:issues:new','projects:issues:edit'
- shortcut_handler = new ShortcutsNavigation()
- new GLForm($('.issue-form'))
- new IssuableForm($('.issue-form'))
- when 'projects:merge_requests:new', 'projects:merge_requests:edit'
- new Diff()
- shortcut_handler = new ShortcutsNavigation()
- new GLForm($('.merge-request-form'))
- new IssuableForm($('.merge-request-form'))
- when 'projects:tags:new'
- new ZenMode()
- new GLForm($('.tag-form'))
- when 'projects:releases:edit'
- new ZenMode()
- new GLForm($('.release-form'))
- when 'projects:merge_requests:show'
- new Diff()
- shortcut_handler = new ShortcutsIssuable(true)
- new ZenMode()
- new MergedButtons()
- when 'projects:merge_requests:commits', 'projects:merge_requests:builds'
- new MergedButtons()
- when "projects:merge_requests:diffs"
- new Diff()
- new ZenMode()
- new MergedButtons()
- when 'projects:merge_requests:index'
- shortcut_handler = new ShortcutsNavigation()
- Issuable.init()
- when 'dashboard:activity'
- new Activities()
- when 'dashboard:projects:starred'
- new Activities()
- when 'projects:commit:show'
- new Commit()
- new Diff()
- new ZenMode()
- shortcut_handler = new ShortcutsNavigation()
- when 'projects:commits:show', 'projects:activity'
- shortcut_handler = new ShortcutsNavigation()
- when 'projects:show'
- shortcut_handler = new ShortcutsNavigation()
-
- new NotificationsForm()
- new TreeView() if $('#tree-slider').length
- when 'groups:activity'
- new Activities()
- when 'groups:show'
- shortcut_handler = new ShortcutsNavigation()
- new NotificationsForm()
- new NotificationsDropdown()
- when 'groups:group_members:index'
- new GroupMembers()
- new UsersSelect()
- when 'projects:project_members:index'
- new ProjectMembers()
- new UsersSelect()
- when 'groups:new', 'groups:edit', 'admin:groups:edit', 'admin:groups:new'
- new GroupAvatar()
- when 'projects:tree:show'
- shortcut_handler = new ShortcutsNavigation()
- new TreeView()
- when 'projects:find_file:show'
- shortcut_handler = true
- when 'projects:blob:show', 'projects:blame:show'
- new LineHighlighter()
- shortcut_handler = new ShortcutsNavigation()
- new ShortcutsBlob true
- when 'projects:labels:new', 'projects:labels:edit'
- new Labels()
- when 'projects:labels:index'
- new LabelManager() if $('.prioritized-labels').length
- when 'projects:network:show'
- # Ensure we don't create a particular shortcut handler here. This is
- # already created, where the network graph is created.
- shortcut_handler = true
- when 'projects:forks:new'
- new ProjectFork()
- when 'projects:artifacts:browse'
- new BuildArtifacts()
- when 'projects:group_links:index'
- new GroupsSelect()
- when 'search:show'
- new Search()
-
- switch path.first()
- when 'admin'
- new Admin()
- switch path[1]
- when 'groups'
- new UsersSelect()
- when 'projects'
- new NamespaceSelects()
- when 'abuse_reports'
- new AbuseReports()
- when 'dashboard', 'root'
- shortcut_handler = new ShortcutsDashboardNavigation()
- when 'profiles'
- new NotificationsForm()
- new NotificationsDropdown()
- when 'projects'
- new Project()
- new ProjectAvatar()
- switch path[1]
- when 'compare'
- new CompareAutocomplete()
- when 'edit'
- shortcut_handler = new ShortcutsNavigation()
- new ProjectNew()
- when 'new'
- new ProjectNew()
- when 'show'
- new ProjectNew()
- new ProjectShow()
- new NotificationsDropdown()
- when 'wikis'
- new Wikis()
- shortcut_handler = new ShortcutsNavigation()
- new ZenMode()
- new GLForm($('.wiki-form'))
- when 'snippets'
- shortcut_handler = new ShortcutsNavigation()
- new ZenMode() if path[2] == 'show'
- when 'labels', 'graphs', 'compare', 'pipelines', 'forks', \
- 'milestones', 'project_members', 'deploy_keys', 'builds', \
- 'hooks', 'services', 'protected_branches'
- shortcut_handler = new ShortcutsNavigation()
-
- # If we haven't installed a custom shortcut handler, install the default one
- if not shortcut_handler
- new Shortcuts()
-
- initSearch: ->
-
- # Only when search form is present
- new SearchAutocomplete() if $('.search').length
diff --git a/app/assets/stylesheets/pages/admin.scss b/app/assets/stylesheets/pages/admin.scss
index d8a3d1af9a2..caf68308cc2 100644
--- a/app/assets/stylesheets/pages/admin.scss
+++ b/app/assets/stylesheets/pages/admin.scss
@@ -99,29 +99,25 @@
}
.abuse-reports {
- .btn-group {
- margin-top: 4px;
- }
- .panel-body {
- max-height: 300px;
- overflow-y: scroll;
- }
- .panel-heading {
- position: relative;
- }
- .clickable-entity {
- display: inline;
- position: relative;
- z-index: 2;
+ table-layout: fixed;
+ .action-buttons a {
+ white-space: normal;
+ }
+ th {
+ width: 15%;
+ &.wide {
+ width: 55%;
+ }
}
- .clickable-title {
- bottom: 0;
- left: 0;
- position: absolute;
- right: 0;
- top: 0;
+ @media (max-width: $screen-sm-max) {
+ th {
+ width: 100%;
+ }
+ td {
+ width: 100%;
+ float: left;
+ }
}
-
.no-reports {
.emoji-icon {
margin-left: $btn-side-margin;
diff --git a/app/views/admin/abuse_reports/_abuse_report.html.haml b/app/views/admin/abuse_reports/_abuse_report.html.haml
index 91dcfdfb34e..1feec221d2c 100644
--- a/app/views/admin/abuse_reports/_abuse_report.html.haml
+++ b/app/views/admin/abuse_reports/_abuse_report.html.haml
@@ -1,32 +1,33 @@
- reporter = abuse_report.reporter
- user = abuse_report.user
-
-.panel.panel-default
- .panel-heading{ id: "heading#{ abuse_report_counter }", role: 'tab' }
- .panel-title
- %a.clickable-title{ role: 'button', href: "#collapse#{ abuse_report_counter }", data: { toggle: 'collapse', parent: '#accordion' }, aria: { expanded: 'true', controls: "collapse#{ abuse_report_counter }" } }
- - if user
- = link_to user.name, user, { class: 'clickable-entity', data: { toggle: 'tooltip', placement: 'bottom', title: "Joined #{user.created_at}" } }
- - else
- (removed)
- reported by
- - if reporter
- = link_to reporter.name, reporter, { class: 'clickable-entity' }
- - else
- (removed)
- .light.small.clickable-entity
- = time_ago_with_tooltip(abuse_report.created_at)
- .btn-group.pull-right
- - if user
- = link_to 'Remove user & report', admin_abuse_report_path(abuse_report, remove_user: true),
- data: { confirm: "USER #{user.name} WILL BE REMOVED! Are you sure?" }, remote: true, method: :delete, class: 'btn btn-sm btn-remove js-remove-tr'
- - if user && !user.blocked?
- = link_to 'Block user', block_admin_user_path(user), data: {confirm: 'USER WILL BE BLOCKED! Are you sure?'}, method: :put, class: 'btn btn-sm'
- - else
- .btn.btn-sm.disabled
- Already Blocked
- = link_to 'Remove report', [:admin, abuse_report], remote: true, method: :delete, class: 'btn btn-sm btn-close js-remove-tr'
- .clearfix
- .panel-collapse.collapse{ id: "collapse#{ abuse_report_counter }", class: (abuse_report_counter == 0 ? 'in' : ''), role: 'tabpanel', aria: { labelledby: "heading#{ abuse_report_counter }" } }
- .panel-body
+%tr
+ %th.visible-xs-block.visible-sm-block User
+ %td
+ - if user
+ = link_to user.name, user
+ .light.small
+ Joined #{time_ago_with_tooltip(user.created_at)}
+ - else
+ (removed)
+ %td
+ %strong.visible-xs-block.visible-sm-block Reported by
+ - if reporter
+ = link_to reporter.name, reporter
+ - else
+ (removed)
+ .light.small
+ = time_ago_with_tooltip(abuse_report.created_at)
+ %td
+ %strong.visible-xs-block.visible-sm-block Message
+ .message
= markdown(abuse_report.message.squish!, pipeline: :single_line, author: reporter)
+ %td
+ - if user
+ = link_to 'Remove user & report', admin_abuse_report_path(abuse_report, remove_user: true),
+ data: { confirm: "USER #{user.name} WILL BE REMOVED! Are you sure?" }, remote: true, method: :delete, class: "btn btn-sm btn-block btn-remove js-remove-tr"
+ - if user && !user.blocked?
+ = link_to 'Block user', block_admin_user_path(user), data: {confirm: 'USER WILL BE BLOCKED! Are you sure?'}, method: :put, class: "btn btn-sm btn-block"
+ - else
+ .btn.btn-sm.disabled.btn-block
+ Already Blocked
+ = link_to 'Remove report', [:admin, abuse_report], remote: true, method: :delete, class: "btn btn-sm btn-block btn-close js-remove-tr"
diff --git a/app/views/admin/abuse_reports/index.html.haml b/app/views/admin/abuse_reports/index.html.haml
index c426559c4c3..7bbc75db9ff 100644
--- a/app/views/admin/abuse_reports/index.html.haml
+++ b/app/views/admin/abuse_reports/index.html.haml
@@ -3,9 +3,15 @@
%hr
.abuse-reports
- if @abuse_reports.present?
- .panel-group#accordion{ role: 'tablist', aria: { multiselectable: 'true' } }
- = render @abuse_reports
- = paginate @abuse_reports
+ .table-holder
+ %table.table
+ %thead.hidden-sm.hidden-xs
+ %tr
+ %th User
+ %th Reported by
+ %th.wide Message
+ %th Action
+ = render @abuse_reports
- else
.no-reports
%span.pull-left