diff --git a/Disco.Web/Areas/API/Models/Attachment/_AttachmentModel.cs b/Disco.Web/Areas/API/Models/Attachment/_AttachmentModel.cs index abe13df8..00991741 100644 --- a/Disco.Web/Areas/API/Models/Attachment/_AttachmentModel.cs +++ b/Disco.Web/Areas/API/Models/Attachment/_AttachmentModel.cs @@ -9,6 +9,7 @@ namespace Disco.Web.Areas.API.Models.Attachment { public class _AttachmentModel { + public string ParentId { get; set; } public int Id { get; set; } public string Author { get; set; } public DateTime Timestamp { get; set; } @@ -42,6 +43,7 @@ namespace Disco.Web.Areas.API.Models.Attachment { return new _AttachmentModel { + ParentId = ua.UserId, Id = ua.Id, Author = ua.TechUser.ToString(), Timestamp = ua.Timestamp, @@ -54,6 +56,7 @@ namespace Disco.Web.Areas.API.Models.Attachment { return new _AttachmentModel { + ParentId = ja.JobId.ToString(), Id = ja.Id, Author = ja.TechUser.ToString(), Timestamp = ja.Timestamp, @@ -66,6 +69,7 @@ namespace Disco.Web.Areas.API.Models.Attachment { return new _AttachmentModel { + ParentId = da.DeviceSerialNumber, Id = da.Id, Author = da.TechUser.ToString(), Timestamp = da.Timestamp, diff --git a/Disco.Web/Disco.Web.csproj b/Disco.Web/Disco.Web.csproj index 7e0446c4..709a03c8 100644 --- a/Disco.Web/Disco.Web.csproj +++ b/Disco.Web/Disco.Web.csproj @@ -176,6 +176,11 @@ + + + + + True @@ -240,15 +245,15 @@ - - + + - + - + diff --git a/Disco.Web/Properties/AssemblyInfo.cs b/Disco.Web/Properties/AssemblyInfo.cs index 1a21f026..80c5d38e 100644 --- a/Disco.Web/Properties/AssemblyInfo.cs +++ b/Disco.Web/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("1.2.0411.1833")] -[assembly: AssemblyFileVersion("1.2.0411.1833")] +[assembly: AssemblyVersion("1.2.0430.1219")] +[assembly: AssemblyFileVersion("1.2.0430.1219")] diff --git a/Disco.Web/Views/Job/JobParts/Resources.cshtml b/Disco.Web/Views/Job/JobParts/Resources.cshtml index 9ee80fb6..bd32dd8b 100644 --- a/Disco.Web/Views/Job/JobParts/Resources.cshtml +++ b/Disco.Web/Views/Job/JobParts/Resources.cshtml @@ -20,166 +20,6 @@ -
@@ -200,161 +40,6 @@
- @@ -374,3 +59,355 @@ Are you sure?

+ diff --git a/Disco.Web/Views/Job/JobParts/Resources.generated.cs b/Disco.Web/Views/Job/JobParts/Resources.generated.cs index e8fd4d4c..e548c2c5 100644 --- a/Disco.Web/Views/Job/JobParts/Resources.generated.cs +++ b/Disco.Web/Views/Job/JobParts/Resources.generated.cs @@ -167,189 +167,7 @@ WriteLiteral(">\r\n \r\n \r\n \r\n $(function () {\r\n var jobId = parseInt(\'"); - - - #line 25 "..\..\Views\Job\JobParts\Resources.cshtml" - Write(Model.Job.Id); - - - #line default - #line hidden -WriteLiteral("\');\r\n $Comments = $(\'#Comments\');\r\n $Commen" + -"tOutput = $Comments.find(\'.commentOutput\');\r\n $CommentOutputC" + -"ontainer = $Comments.find(\'.commentOutputContainer\');\r\n $Comm" + -"entInput = $Comments.find(\'textarea.commentInput\');\r\n\r\n windo" + -"w.setTimeout(function () {\r\n $CommentOutput[0].scrollTop " + -"= $CommentOutput[0].scrollHeight; // Scroll to Bottom\r\n }, 0)" + -";\r\n $(\'#jobDetailTabs\').on(\'tabsactivate\', function (event, u" + -"i) {\r\n if (ui.newPanel && ui.newPanel.is(\'#jobDetailTab-R" + -"esources\')) {\r\n $CommentOutput[0].scrollTop = $Commen" + -"tOutput[0].scrollHeight; // Scroll to Bottom\r\n }\r\n " + -" });\r\n\r\n $Comments.find(\'.commentInputPost\').clic" + -"k(postComment);\r\n $CommentInput.keypress(function (e) {\r\n " + -" if (e.which == 13 && !e.shiftKey) {\r\n " + -" postComment();\r\n return false;\r\n " + -" }\r\n });\r\n $CommentOutput.find(\'spa" + -"n.remove\').click(removePost);\r\n\r\n $dialogRemoveLog = $(\'#dial" + -"ogRemoveLog\');\r\n $dialogRemoveLog.dialog({\r\n " + -" resizable: false,\r\n height: 140,\r\n " + -" modal: true,\r\n autoOpen: false\r\n " + -" });\r\n\r\n function postComment() {\r\n " + -"var comment = $CommentInput.val();\r\n if (comment != \'\') {" + -"\r\n var data = { comment: comment }\r\n " + -" $.ajax({\r\n url: \'"); - - - #line 62 "..\..\Views\Job\JobParts\Resources.cshtml" - Write(Url.Action(MVC.API.Job.CommentPost(Model.Job.Id, null))); - - - #line default - #line hidden -WriteLiteral("\',\r\n dataType: \'json\',\r\n " + -" data: data,\r\n success: function (d) {\r\n " + -" if (d.Result == \'OK\') {\r\n " + -" // Should be added via Repository Notifications\r\n " + -" // addComment(d.Comment, false);\r\n " + -" $CommentInput.val(\'\').attr(\'disabled\', false).focus();\r\n " + -" } else {\r\n " + -" alert(\'Unable to post comment: \' + d.Result);\r\n " + -" $CommentInput.attr(\'disabled\', false);\r\n " + -" }\r\n },\r\n erro" + -"r: function (jqXHR, textStatus, errorThrown) {\r\n " + -" alert(\'Unable to post comment: \' + textStatus);\r\n " + -" $CommentInput.attr(\'disabled\', false);\r\n " + -" }\r\n });\r\n }\r\n " + -" }\r\n function removePost() {\r\n $thi" + -"s = $(this);\r\n var data = { id: $this.closest(\'div\').attr" + -"(\'data-logid\') };\r\n\r\n $dialogRemoveLog.dialog(\"enable\");\r" + -"\n $dialogRemoveLog.dialog(\'option\', \'buttons\', {\r\n " + -" \"Remove\": function () {\r\n $d" + -"ialogRemoveLog.dialog(\"disable\");\r\n $dialogRemove" + -"Log.dialog(\"option\", \"buttons\", null);\r\n $.ajax({" + -"\r\n url: \'"); - - - #line 92 "..\..\Views\Job\JobParts\Resources.cshtml" - Write(Url.Action(MVC.API.Job.CommentRemove())); - - - #line default - #line hidden -WriteLiteral("\',\r\n dataType: \'json\',\r\n " + -" data: data,\r\n success: function" + -" (d) {\r\n if (d == \'OK\') {\r\n " + -" // Should be removed via Repository Notifications\r" + -"\n //$this.closest(\'div\').slideUp(300)" + -".delay(300).queue(function () {\r\n // " + -" $(this).remove();\r\n //});\r\n " + -" } else {\r\n " + -" alert(\'Unable to remove comment: \' + d);\r\n " + -" }\r\n $dialogRemoveLog.dialog(\"clo" + -"se\");\r\n },\r\n " + -" error: function (jqXHR, textStatus, errorThrown) {\r\n " + -" alert(\'Unable to remove comment: \' + textStatus);\r\n " + -" $dialogRemoveLog.dialog(\"close\");\r\n " + -" }\r\n });\r\n " + -" },\r\n \"Cancel\": function () {\r\n " + -" $dialogRemoveLog.dialog(\"close\");\r\n }\r\n" + -" });\r\n\r\n $dialogRemoveLog.dialog(\'" + -"open\');\r\n\r\n return false;\r\n }\r\n " + -" function loadLiveComment(id) {\r\n $.ajax({\r\n " + -" url: \'"); - - - #line 123 "..\..\Views\Job\JobParts\Resources.cshtml" - Write(Url.Action(MVC.API.Job.Comment())); - - - #line default - #line hidden -WriteLiteral(@"', - dataType: 'json', - data: { id: id }, - success: function (d) { - if (d && d.JobId == jobId) { - addComment(d, false); - } - }, - error: function (jqXHR, textStatus, errorThrown) { - alert('Unable to load live comment ' + id + ': ' + textStatus); - } - }); - } - function addComment(c, quick) { - var e = $('
'); - e.attr('data-logid', c.Id); - e.find('.author').text(c.Author); - e.find('.timestamp').text(c.TimestampFuzzy).attr('title', c.TimestampFull); - e.find('.remove').click(removePost); - var eComment = e.find('.comment').text(c.Comments); - var commentHtml = eComment.text().replace(/\r\n|\r|\n/g, '
'); - commentHtml = commentHtml.replace(/\#(\d+)/g, ''); - eComment.html(commentHtml); - - $CommentOutput.append(e); - - if (!quick) { - e.animate({ backgroundColor: '#ffff99' }, 500, function () { - e.animate({ backgroundColor: '#f4f4f4' }, 500); - }); - $CommentOutput.animate({ scrollTop: $CommentOutput[0].scrollHeight }, 250) - } - } - - // Sign up for Live Events - function liveMessageRecieved(d) { - if (d) { - switch (d.EventType) { - case 0: // Added - loadLiveComment(d.EntityKey[0]); - break; - case 1: // Removed - $CommentOutput.children('div[data-logid=""' + d.EntityKey[0] + '""]').slideUp(300).delay(300).queue(function () { - $(this).remove(); - }); - break; - } - } - } - var liveMessagesConnection = $.connection('"); - - - #line 172 "..\..\Views\Job\JobParts\Resources.cshtml" - Write(Url.Content("~/API/Repository/Notifications")); - - - #line default - #line hidden -WriteLiteral(@"') - liveMessagesConnection.received(liveMessageRecieved); - liveMessagesConnection.error(function (e) { - alert('Error: ' + JSON.stringify(e)); - }); - liveMessagesConnection.start(function () { - liveMessagesConnection.send('/addToGroups:JobLog'); - }); - - }); - - - \r\n \r\n \r\n \r\n"); - #line 186 "..\..\Views\Job\JobParts\Resources.cshtml" + #line 26 "..\..\Views\Job\JobParts\Resources.cshtml" #line default #line hidden - #line 186 "..\..\Views\Job\JobParts\Resources.cshtml" + #line 26 "..\..\Views\Job\JobParts\Resources.cshtml" foreach (var ja in Model.Job.JobAttachments) { @@ -375,20 +193,20 @@ WriteLiteral(">\r\n"); #line hidden WriteLiteral(" (Url.Action(MVC.API.Job.AttachmentDownload(ja.Id)) + #line 28 "..\..\Views\Job\JobParts\Resources.cshtml" +, Tuple.Create(Tuple.Create("", 1252), Tuple.Create(Url.Action(MVC.API.Job.AttachmentDownload(ja.Id)) #line default #line hidden -, 9912), false) +, 1252), false) ); WriteLiteral(" data-attachmentid=\""); - #line 188 "..\..\Views\Job\JobParts\Resources.cshtml" + #line 28 "..\..\Views\Job\JobParts\Resources.cshtml" Write(ja.Id); @@ -399,7 +217,7 @@ WriteLiteral("\""); WriteLiteral(" data-mimetype=\""); - #line 188 "..\..\Views\Job\JobParts\Resources.cshtml" + #line 28 "..\..\Views\Job\JobParts\Resources.cshtml" Write(ja.MimeType); @@ -411,68 +229,68 @@ WriteLiteral(">\r\n (ja.Filename + #line 29 "..\..\Views\Job\JobParts\Resources.cshtml" +, Tuple.Create(Tuple.Create("", 1412), Tuple.Create(ja.Filename #line default #line hidden -, 10072), false) +, 1412), false) ); WriteLiteral(">\r\n (Url.Action(MVC.API.Job.AttachmentThumbnail(ja.Id)) + #line 30 "..\..\Views\Job\JobParts\Resources.cshtml" +, Tuple.Create(Tuple.Create("", 1493), Tuple.Create(Url.Action(MVC.API.Job.AttachmentThumbnail(ja.Id)) #line default #line hidden -, 10153), false) +, 1493), false) ); WriteLiteral(" />\r\n (ja.Comments + #line 31 "..\..\Views\Job\JobParts\Resources.cshtml" +, Tuple.Create(Tuple.Create("", 1613), Tuple.Create(ja.Comments #line default #line hidden -, 10273), false) +, 1613), false) ); WriteLiteral(">\r\n"); - #line 192 "..\..\Views\Job\JobParts\Resources.cshtml" + #line 32 "..\..\Views\Job\JobParts\Resources.cshtml" #line default #line hidden - #line 192 "..\..\Views\Job\JobParts\Resources.cshtml" + #line 32 "..\..\Views\Job\JobParts\Resources.cshtml" if (!string.IsNullOrEmpty(ja.DocumentTemplateId)) { #line default #line hidden - #line 193 "..\..\Views\Job\JobParts\Resources.cshtml" + #line 33 "..\..\Views\Job\JobParts\Resources.cshtml" Write(ja.DocumentTemplate.Description); #line default #line hidden - #line 193 "..\..\Views\Job\JobParts\Resources.cshtml" + #line 33 "..\..\Views\Job\JobParts\Resources.cshtml" } else { @@ -480,14 +298,14 @@ WriteLiteral(">\r\n"); #line default #line hidden - #line 195 "..\..\Views\Job\JobParts\Resources.cshtml" + #line 35 "..\..\Views\Job\JobParts\Resources.cshtml" Write(ja.Comments); #line default #line hidden - #line 195 "..\..\Views\Job\JobParts\Resources.cshtml" + #line 35 "..\..\Views\Job\JobParts\Resources.cshtml" } #line default @@ -499,7 +317,7 @@ WriteLiteral(" class=\"author\""); WriteLiteral(">"); - #line 196 "..\..\Views\Job\JobParts\Resources.cshtml" + #line 36 "..\..\Views\Job\JobParts\Resources.cshtml" Write(ja.TechUser.ToString()); @@ -513,20 +331,20 @@ WriteLiteral(">(ja.Timestamp.ToFullDateTime() + #line 36 "..\..\Views\Job\JobParts\Resources.cshtml" + , Tuple.Create(Tuple.Create("", 2003), Tuple.Create(ja.Timestamp.ToFullDateTime() #line default #line hidden -, 10663), false) +, 2003), false) ); WriteLiteral(">"); - #line 196 "..\..\Views\Job\JobParts\Resources.cshtml" + #line 36 "..\..\Views\Job\JobParts\Resources.cshtml" Write(ja.Timestamp.ToFuzzy()); @@ -535,7 +353,7 @@ WriteLiteral(">"); WriteLiteral("\r\n \r\n"); - #line 198 "..\..\Views\Job\JobParts\Resources.cshtml" + #line 38 "..\..\Views\Job\JobParts\Resources.cshtml" } @@ -553,198 +371,7 @@ WriteLiteral(">\r\n \r\n - Shadowbox.init({ - skipSetup: true, - modal: true - }); - $(function () { - if (!document.DiscoFunctions) { - document.DiscoFunctions = {}; - } - document.DiscoFunctions.addAttachment = addAttachment; - - $Attachments = $('#Attachments'); - $attachmentOutput = $Attachments.find('.attachmentOutput'); - - $attachmentOutput.find('span.remove').click(removeAttachment); - - $('#dialogUpload').dialog({ - autoOpen: false, - draggable: false, - modal: true, - resizable: false, - width: 860, - height: 550, - close: function () { - silverlightUploadAttachment.content.Navigator.Navigate('/Hidden'); - } - }); - - $('#dialogRemoveAttachment').dialog({ - resizable: false, - height: 140, - modal: true, - autoOpen: false - }); - - var onLoadNavigation = null; - var isLoaded = null; - Silverlight.createObject( - '"); - - - #line 241 "..\..\Views\Job\JobParts\Resources.cshtml" - Write(Links.ClientBin.Disco_Silverlight_AttachmentUpload_xap); - - - #line default - #line hidden -WriteLiteral(@"', - $('#silverlightHostUploadAttachment').get(0), - 'silverlightUploadAttachment', - { width: '840px', height: '500px', background: 'white', version: '4.0.60310.0' }, - { - onLoad: function () { - if (onLoadNavigation) { - silverlightUploadAttachment.content.Navigator.Navigate(onLoadNavigation); - isLoaded = true; - } - } - }, - 'UploadUrl="); - - - #line 253 "..\..\Views\Job\JobParts\Resources.cshtml" - Write(Url.Action(MVC.API.Job.AttachmentUpload(Model.Job.Id, null))); - - - #line default - #line hidden -WriteLiteral(@"' - ); - - $attachmentInput = $Attachments.find('.attachmentInput'); - $attachmentInput.find('.photo').click(function () { - showDialog('/WebCam'); - }); - $attachmentInput.find('.upload').click(function () { - showDialog('/File'); - }); - - silverlightUploadAttachment = $('#silverlightUploadAttachment').get(0); - function showDialog(navigationPath) { - $('#dialogUpload').dialog('open'); - if (isLoaded) { - silverlightUploadAttachment.content.Navigator.Navigate(navigationPath); - } else { - onLoadNavigation = navigationPath; - } - }; - function addAttachment(id, quick) { - var data = { id: id }; - $.ajax({ - url: '"); - - - #line 276 "..\..\Views\Job\JobParts\Resources.cshtml" - Write(Url.Action(MVC.API.Job.Attachment())); - - - #line default - #line hidden -WriteLiteral(@"', - dataType: 'json', - data: data, - success: function (d) { - if (d.Result == 'OK') { - var a = d.Attachment; - - var e = $(''); - - e.attr('data-attachmentid', a.Id).attr('data-mimetype', a.MimeType).attr('href', '"); - - - #line 285 "..\..\Views\Job\JobParts\Resources.cshtml" - Write(Url.Action(MVC.API.Job.AttachmentDownload())); - - - #line default - #line hidden -WriteLiteral("/\' + a.Id);\r\n e.find(\'.icon img\').attr(\'src\', " + -"\'"); - - - #line 286 "..\..\Views\Job\JobParts\Resources.cshtml" - Write(Url.Action(MVC.API.Job.AttachmentThumbnail())); - - - #line default - #line hidden -WriteLiteral("/\' + a.Id);\r\n e.find(\'.comments\').text(a.Comme" + -"nts);\r\n e.find(\'.author\').text(a.Author);\r\n " + -" e.find(\'.timestamp\').text(a.TimestampFuzzy).at" + -"tr(\'title\', a.TimestampFull);\r\n e.find(\'.remo" + -"ve\').click(removeAttachment);\r\n if (!quick)\r\n" + -" e.hide();\r\n " + -" $attachmentOutput.append(e);\r\n if (!qu" + -"ick)\r\n e.show(\'slow\');\r\n " + -" if (a.MimeType.toLowerCase().indexOf(\'image/\') == 0)\r\n " + -" e.shadowbox({ gallery: \'attachments\', player: \'" + -"img\', title: a.Comments });\r\n } else {\r\n " + -" alert(\'Unable to add attachment: \' + d.Result);\r\n " + -" }\r\n },\r\n " + -" error: function (jqXHR, textStatus, errorThrown) {\r\n " + -" alert(\'Unable to add attachment: \' + textStatus);\r\n " + -" }\r\n });\r\n }\r\n " + -" function removeAttachment() {\r\n $this = $(this)." + -"closest(\'a\');\r\n\r\n var data = { id: $this.attr(\'data-attac" + -"hmentid\') };\r\n\r\n var $dialogRemoveAttachment = $(\'#dialog" + -"RemoveAttachment\');\r\n $dialogRemoveAttachment.dialog(\"ena" + -"ble\");\r\n $dialogRemoveAttachment.dialog(\'option\', \'button" + -"s\', {\r\n \"Remove\": function () {\r\n " + -" $dialogRemoveAttachment.dialog(\"disable\");\r\n " + -" $dialogRemoveAttachment.dialog(\"option\", \"buttons\", null);\r\n " + -" $.ajax({\r\n url: \'"); - - - #line 319 "..\..\Views\Job\JobParts\Resources.cshtml" - Write(Url.Action(MVC.API.Job.AttachmentRemove())); - - - #line default - #line hidden -WriteLiteral("\',\r\n dataType: \'json\',\r\n " + -" data: data,\r\n success: function" + -" (d) {\r\n if (d == \'OK\') {\r\n " + -" $this.hide(300).delay(300).queue(function () {\r\n " + -" var $this = $(this);\r\n " + -" if ($this.attr(\'data-mimetype\').toLowerCase(" + -").indexOf(\'image/\') == 0)\r\n S" + -"hadowbox.removeCache(this);\r\n $th" + -"is.remove();\r\n });\r\n " + -" } else {\r\n ale" + -"rt(\'Unable to remove attachment: \' + d);\r\n " + -" }\r\n $dialogRemoveAttachment.dialog(\"clo" + -"se\");\r\n },\r\n " + -" error: function (jqXHR, textStatus, errorThrown) {\r\n " + -" alert(\'Unable to remove attachment: \' + textStatus);\r\n " + -" $dialogRemoveAttachment.dialog(\"close\");\r\n " + -" }\r\n });\r\n " + -" },\r\n \"Cancel\": function () {\r\n " + -" $dialogRemoveAttachment.dialog(\"close\");\r\n " + -" }\r\n });\r\n\r\n $dialogR" + -"emoveAttachment.dialog(\'open\');\r\n\r\n return false;\r\n " + -" }\r\n\r\n $attachmentOutput.children(\'a\').each(func" + -"tion () {\r\n $this = $(this);\r\n if " + -"($this.attr(\'data-mimetype\').toLowerCase().indexOf(\'image/\') == 0)\r\n " + -" $this.shadowbox({ gallery: \'attachments\', player: \'img\', title: " + -"$this.find(\'.comments\').text() });\r\n });\r\n });" + -"\r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n\r\n\r\n Are you sure?\r\n

\r\n\r\n"); +WriteLiteral(">\r\n Are you sure?\r\n

\r\n\r\n +"); } }