@(event: models.Event)(implicit user: Option[models.User] = None) @import services.AppConfiguration @import play.api.i18n.Messages @import play.Logger @linkForObject(obj_type: String, obj_id: Option[UUID], obj_name: Option[String]) = { @obj_id match { case Some(id) => { @obj_type match { case "file" => { file: @obj_name.get } case "dataset" => { @Messages("dataset.title").toLowerCase : @obj_name.get } case "collection" => { @Messages("collection.title").toLowerCase : @obj_name.get } case "user" => { user: @obj_name.get } case "space" => { @Messages("space.title"): @obj_name.get } case "curation" => { curation object: @obj_name.get } case "subcollection" => { @Messages("collection.title").toLowerCase : @obj_name.get from collection: @event.source_name.get } case _ => { @obj_name match { case None => { @obj_type } case Some(name) => { @obj_type: @name } } } } } case None => { @obj_name match { case None => { @obj_type } case Some(name) => { @obj_type: @name } } } } } @actionTextForEvent(event_type_prefix: String) = @{ event_type_prefix match { case "follow" => "is now following " case "unfollow" => "stopped following " case "upload" => "uploaded " case "create" => "created " case "delete" => "deleted " case "edit" => "edited their comment to " case "download" => "downloaded " case "postrequest" => "requested access to" case _ => { Logger.warn("unknown event type prefix in actionTextForEvent: "+event_type_prefix) event_type_prefix } } } @actionTextsForEvent(event_type_prefix: String) = @{ event_type_prefix match { case "add" => List("added ", " to ") case "attach" => List("attached ", " to ") case "remove" => List("removed ", " from ") case "detach" => List("detached ", " from ") case _ => { Logger.warn("unknown event type prefix in actionTextsForEvent: "+event_type_prefix) List(event_type_prefix+" ", " ") } } } @event.event_type match { case "move_dataset_trash" => { moved to trash @linkForObject("dataset", event.object_id, event.object_name) } case "move_collection_trash" => { moved to trash @linkForObject("collection", event.object_id, event.object_name) } case "restore_dataset_trash" => { restored from trash @linkForObject("dataset", event.object_id, event.object_name) } case "restore_collection_trash" => { retored from trash @linkForObject("collection", event.object_id, event.object_name) } case "edit_profile" => { edited their profile } case "update_dataset_information" => { updated information for @linkForObject("dataset", event.object_id, event.object_name) } case "update_space_information" => { updated information for @linkForObject("space", event.object_id, event.object_name) } case "update_file_information" => { updated information for @linkForObject("file", event.object_id, event.object_name) } case "update_collection_information" => { updated information for @linkForObject("collection", event.object_id, event.object_name) } case "update_curation_information" => { updated information for @linkForObject("curation", event.object_id, event.object_name) } case "set_note_file" => { set note for @linkForObject("file", event.object_id, event.object_name) } case "add_user_to_space" => { added @linkForObject("user", event.targetuser.map(_.id), event.targetuser.map(_.fullName)) as a user to @linkForObject("space", event.object_id, event.object_name) } case "remove_user_from_space" => { removed @linkForObject("user", event.targetuser.map(_.id), event.targetuser.map(_.fullName)) as a user from @linkForObject("space", event.object_id, event.object_name) } case "added_folder" => { created a folder in @linkForObject("dataset", event.object_id, event.object_name) } case "deleted_folder" => { deleted a folder from @linkForObject("dataset", event.object_id, event.object_name) } case "updated_folder" => { updated a folder in @linkForObject("dataset", event.object_id, event.object_name) } case "add_file" | "add_file_1" | "add_file_2" | "add_file_3" => { added a file to @linkForObject("dataset", event.object_id, event.object_name) } case "add_file_folder" | "add_file_folder_1" | "add_file_folder_2" | "add_file_folder_3" => { added a file to a folder within @linkForObject("dataset", event.object_id, event.object_name) } case "add_sub_collection" => { added @linkForObject("collection", event.object_id, event.object_name) to @linkForObject("collection", event.source_id, event.source_name) } case "addMetadata_file" | "addMetadata_dataset" => { added metadata to @linkForObject( event.event_type.substring(event.event_type.indexOf('_')+1), event.object_id, event.object_name ) } case "acceptrequest_space" => { accepted @linkForObject("user", event.targetuser.map(_.id), event.targetuser.map(_.fullName))'s request to @linkForObject("space", event.object_id, event.object_name) } case "rejectrequest_space" => { rejected @linkForObject("user", event.targetuser.map(_.id), event.targetuser.map(_.fullName))'s request to @linkForObject("space", event.object_id, event.object_name) } case "tos_update" => { updated the Terms of Service } case "added_metadata_space" => { added a new metadata definition to @linkForObject("space", event.object_id, event.object_name) } case "added_metadata_instance" => { added a new metadata definition to @(AppConfiguration.getDisplayName) } case "edit_metadata_space" => { edited a metadata definition for @linkForObject("space", event.object_id, event.object_name) } case "edit_metadata_instance" => { edited a metadata definition for @(AppConfiguration.getDisplayName) } case "delete_metadata_space" => { delete a metadata definition from @linkForObject("space", event.object_id, event.object_name) } case "delete_metadata_instance" => { deleted a metadata definition from @(AppConfiguration.getDisplayName) } case "mention_file_comment" => { @event.targetuser match { case Some(u) => { was mentioned by @linkForObject("user", Some(u.id), Some(u.fullName)) in a comment on @linkForObject("file", event.object_id, event.object_name) } case None => { was mentioned in a comment on @linkForObject("file", event.object_id, event.object_name) } } } case "mention_dataset_comment" => { @event.targetuser match { case Some(u) => { was mentioned by @linkForObject("user", Some(u.id), Some(u.fullName)) in a comment on @linkForObject("dataset", event.object_id, event.object_name) } case None => { was mentioned in a comment on @linkForObject("dataset", event.object_id, event.object_name) } } } case _ => { @defining(event.event_type.split("_")) { event_type_split => @event_type_split.length match { case 2 => { @if(event_type_split(0) == "comment"){ commented @event.object_name on @linkForObject("file", event.source_id, event.source_name) }else{ @actionTextForEvent(event_type_split(0)) @linkForObject(event_type_split(1), event.object_id, event.object_name) } } case 3 => { @defining(actionTextsForEvent(event_type_split(0))) { texts => @if(event.event_type.indexOf("tag")>=0){ @texts(0) @linkForObject(event_type_split(1), None, None) @texts(1) @linkForObject(event_type_split(2), event.object_id, event.object_name) } else { @*parse add multiple files events*@ @if(event.event_type.indexOf("file")>=0 && event.event_type.indexOf("dataset") < 0 && event.event_type.indexOf("folder") < 0) { added @event_type_split(2) files to @linkForObject("dataset", event.object_id, event.object_name) } else { @texts(0) @linkForObject(event_type_split(1), event.object_id, event.object_name) @texts(1) @linkForObject(event_type_split(2), event.source_id, event.source_name) } } } } case 4 =>{ @*parse add multiple files in a folder events*@ @if(event.event_type.indexOf("file")>=0 && event.event_type.indexOf("dataset") < 0) { added @event_type_split(3) files to a folder within @linkForObject("dataset", event.object_id, event.object_name) } else { @event_type_split(0) @linkForObject(event_type_split(1), event.object_id, event.object_name) @event_type_split(1) @linkForObject(event_type_split(2), event.source_id, event.source_name) } } case _ => { @Logger.warn("unknown event type encountered: "+event.event_type) @event.event_type } } } } }