Skip to content
Open
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 38 additions & 6 deletions app/controllers/works_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -820,15 +820,47 @@ def index_page_title
end

def log_admin_activity
if logged_in_as_admin?
options = { action: params[:action] }
return unless logged_in_as_admin?

if params[:action] == 'update_tags'
summary = "Old tags: #{@work.tags.pluck(:name).join(', ')}"
if params[:action] == "update_tags"
Comment thread
slavalamp marked this conversation as resolved.
Outdated
unless params[:work][:language_id].empty?
old_language_id = @work.language_id
new_language_id = params[:work][:language_id].to_i

if old_language_id != new_language_id
new_language_name = Language.find_by(id: new_language_id).name
edit_language_summary = "<p>Old language: #{@work.language.name}</p><p>New language: #{new_language_name}</p>"

AdminActivity.log_action(current_admin, @work, action: "edit language", summary: edit_language_summary)
end
end

AdminActivity.log_action(current_admin, @work, action: params[:action], summary: summary)
end
# Don't log if nothing changed.
rating_changed = params[:work][:rating_string] != @work.rating_string
fandoms_changed = params[:work][:fandom_string] != @work.fandom_string
relationships_changed = params[:work][:relationship_string] != @work.relationship_string
characters_changed = params[:work][:character_string] != @work.character_string
freeforms_changed = params[:work][:freeform_string] != @work.freeform_string
# The category_strings and archive_warning_strings params values
# both start with an empty element which has to be dropped here
categories_changed = if params[:work][:category_strings].nil?
params[:work][:category_string] != @work.category_string
else
params[:work][:category_strings].drop(1).sort != @work.category_strings.sort
end
warnings_changed = if params[:work][:archive_warning_strings].nil?
params[:work][:archive_warning_string] != @work.archive_warning_string
else
params[:work][:archive_warning_strings].drop(1).sort != @work.archive_warning_strings.sort
end
return unless rating_changed || fandoms_changed || relationships_changed ||
characters_changed || freeforms_changed ||
categories_changed || warnings_changed

summary = "Old tags: #{@work.tags.pluck(:name).join(', ')}"
end

AdminActivity.log_action(current_admin, @work, action: params[:action], summary: summary)
end

private
Expand Down
2 changes: 1 addition & 1 deletion app/helpers/admin_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ def admin_activity_target_link(activity)
# handled differently from summaries that use item.inspect (and thus contain
# angle brackets).
def admin_activity_summary(activity)
if activity.action == "edit pseud" || activity.action == "edit profile"
if activity.action == "edit pseud" || activity.action == "edit profile" || activity.action == "edit language"
raw sanitize_field(activity, :summary)
else
activity.summary
Expand Down
40 changes: 39 additions & 1 deletion features/admins/admin_works.feature
Original file line number Diff line number Diff line change
Expand Up @@ -381,6 +381,11 @@ Feature: Admin Actions for Works, Comments, Series, Bookmarks
And I press "Update"
Then I should see "Deutsch"
And I should not see "English"
When I follow "Activities"
Then I should see "edit language"
When I visit the last activities item
Then I should see "Old language: English"
And I should see "New language: Deutsch"

Scenario: Admin can edit language on works when previewing first
Given basic languages
Expand All @@ -392,9 +397,42 @@ Feature: Admin Actions for Works, Comments, Series, Bookmarks
And I press "Preview"
Then I should see "Preview Tags and Language"
When I press "Update"
Then I should see "Deutsch"
Then I should see "Deutsch"
And I should not see "English"

Scenario: Admin can edit tags and language at the same time on works
Given basic languages
And the work "Wrong Tags and Language"
When I am logged in as a "policy_and_abuse" admin
And I view the work "Wrong Tags and Language"
And I follow "Edit Tags and Language"
When I select "Mature" from "Rating"
And I select "Deutsch" from "Choose a language"
And I press "Update"
And I follow "Activities"
Then I should see "update_tags"
And I should see "edit language"

Scenario: When admin does not edit tags or language, no Activities entries are added
Given the work "Nothing Wrong"
When I am logged in as a "policy_and_abuse" admin
And I view the work "Nothing Wrong"
And I follow "Edit Tags and Language"
And I press "Update"
And I follow "Activities"
Then I should not see "update_tags"
And I should not see "edit language"

Scenario: test thing to see how it works in tests
Given the work "Nothing Wrong"
When I am logged in as a "policy_and_abuse" admin
And I view the work "Nothing Wrong"
And I follow "Edit Tags and Language"
And I press "Update"
And I follow "Activities"
Then I should not see "update_tags"
And I should not see "edit language"

Scenario: can mark a work as spam
Given the work "Spammity Spam"
And I am logged in as a "policy_and_abuse" admin
Expand Down
Loading