Class: SystemNotes::DesignManagementService
- Inherits:
-
BaseService
- Object
- BaseService
- SystemNotes::DesignManagementService
- Includes:
- ActionView::RecordIdentifier
- Defined in:
- app/services/system_notes/design_management_service.rb
Instance Attribute Summary
Attributes inherited from BaseService
Class Method Summary collapse
-
.design_event_note_data(event) ⇒ Object
Take one of the ‘DesignManagement::Action.events` and return: * an English past-tense verb.
Instance Method Summary collapse
-
#design_discussion_added(discussion_note) ⇒ Object
Called when a new discussion is created on a design.
-
#design_version_added(version) ⇒ Object
Parameters: - version [DesignManagement::Version].
Methods inherited from BaseService
Constructor Details
This class inherits a constructor from SystemNotes::BaseService
Class Method Details
.design_event_note_data(event) ⇒ Object
Take one of the ‘DesignManagement::Action.events` and return:
* an English past-tense verb.
* the name of an icon used in renderin a system note
We do not currently internationalize our system notes, instead we just produce English-language descriptions. See: gitlab.com/gitlab-org/gitlab/issues/30408 See: gitlab.com/gitlab-org/gitlab/issues/14056
64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'app/services/system_notes/design_management_service.rb', line 64 def self.design_event_note_data(event) case event when DesignManagement::Action.events[:creation] { icon: 'designs_added', past_tense: 'added' } when DesignManagement::Action.events[:modification] { icon: 'designs_modified', past_tense: 'updated' } when DesignManagement::Action.events[:deletion] { icon: 'designs_removed', past_tense: 'removed' } else raise "Unknown event: #{event}" end end |
Instance Method Details
#design_discussion_added(discussion_note) ⇒ Object
Called when a new discussion is created on a design
discussion_note - DiscussionNote
Example Note text:
"started a discussion on screen.png"
Returns the created Note object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'app/services/system_notes/design_management_service.rb', line 40 def design_discussion_added(discussion_note) design = discussion_note.noteable body = _('started a discussion on %{design_link}') % { design_link: '[%s](%s)' % [ design.filename, designs_path(vueroute: design.filename, anchor: dom_id(discussion_note)) ] } action = :designs_discussion_added create_note(NoteSummary.new(noteable, project, , body, action: action)) end |
#design_version_added(version) ⇒ Object
Parameters:
- version [DesignManagement::Version]
Example Note text:
"added [1 designs](link-to-version)"
"changed [2 designs](link-to-version)"
Returns [Array<Note>]: the created Note objects
16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'app/services/system_notes/design_management_service.rb', line 16 def design_version_added(version) events = DesignManagement::Action.events link_href = designs_path(version: version.id) version.designs_by_event.map do |(event_name, designs)| note_data = self.class.design_event_note_data(events[event_name]) icon_name = note_data[:icon] n = designs.size body = "%s [%d %s](%s)" % [note_data[:past_tense], n, 'design'.pluralize(n), link_href] create_note(NoteSummary.new(noteable, project, , body, action: icon_name)) end end |