protected void DoActions(ResolvedAction pdfAction, ResolvedAction cleanAction, PreviewResponseActionArgs e) { Request request = CreateRequestForPreview(e.DocID); if (request.Attachments == null) { string msg = Resources.PREVIEW_ERROR_MESSAGE; string title = Resources.PREVIEW_ERROR_TITLE; MessageBox.Show(msg, title, MessageBoxButtons.OK); return; } List<ResolvedAction> lActions = new List<ResolvedAction>(); if (cleanAction != null) lActions.Add(cleanAction); if (pdfAction != null) lActions.Add(pdfAction); Response response = CreateResponseForPreview(e, lActions.ToArray()); IProgressCallback callback = new PreviewActionProgressCallback(m_uiManager, lActions.Count); EnforceResponse enforceResponse = CallEnforcerForPreview(callback, request, response); if (HasErrors(enforceResponse.Properties)) { string message = TidyErrorMessage(enforceResponse.Properties); WsMessage.ShowMessage(IntPtr.Zero, message, MessageButtons.WsOK, MessageBranding.WsProtect, MessageType.WsErrorIcon, Resources.CleaningError, -1); return; } Attachment attachment = null; foreach (Attachment a in enforceResponse.ModifiedRequest.Attachments) { if (a.Id == e.DocID) { attachment = a; break; } } ViewDoc(attachment); }
protected Response CreateResponseForPreview(PreviewResponseActionArgs e, ResolvedAction[] actions) { Response response = new Response(); response.Contents = new ContentItem[2] { new ContentItem(), new ContentItem() }; bool foundItem0 = false, foundItem1 = false; foreach (ContentItem item in e.UIResponse.Response.Contents) { if (item.Name == m_emailContentName) { response.Contents[0] = item; foundItem0 = true; } else if (item.Id == e.DocID) { response.Contents[1] = item; foundItem1 = true; } if (foundItem0 && foundItem1) { break; } } response.PolicyType = e.UIResponse.Response.PolicyType; response.Properties = e.UIResponse.Response.Properties; response.ResolvedActions = actions; response.ResponseDate = e.UIResponse.Response.ResponseDate; response.Routing = e.UIResponse.Response.Routing; return response; }
void policyClientDialog_PreviewResponseAction(object sender, PreviewResponseActionArgs e) { string reason; if (!e.UIResponse.SynchronizeForPreview(out reason)) { string msg = string.Empty; string title = Resources.ACTION_VALIDATION_FAILED; string[] split = reason.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); if (split.Length == 2) { title = split[split.Length - 2]; msg = split[split.Length - 1]; } else { StringBuilder sb = new StringBuilder(); for (int i = 0; i < split.Length; i++) { sb.AppendLine(split[i]); } msg = sb.ToString(); } MessageBox.Show(msg, title, MessageBoxButtons.OK); return; } ResolvedAction pdfAction = null; ResolvedAction cleanAction = null; bool pdfActionEnabled; e.Actions.TryGetValue("PDF", out pdfActionEnabled); foreach (ResolvedAction action in e.UIResponse.Response.ResolvedActions) { switch (action.Action.ClassName) { case "Workshare.Policy.Actions.PDFUserAction": if (!pdfActionEnabled) { continue; } if (Array.Exists(action.Contents, item => item.Id == e.DocID)) { Workshare.PolicyContent.ActionProperty prop = Array.Find(action.Action.ActionProperties, item => item.Name.Equals(PropertyNames.Execute, StringComparison.InvariantCultureIgnoreCase)); if (prop != null) { prop.Value = "True"; pdfAction = action; } } break; case "Workshare.Policy.Actions.CleanUserAction": case "Workshare.Policy.Actions.PDFCleanUserAction": if (Array.Exists(action.Contents, item => item.Id == e.DocID)) { Workshare.PolicyContent.ActionProperty prop = Array.Find(action.Action.ActionProperties, item => item.Name.Equals(PropertyNames.Execute, StringComparison.InvariantCultureIgnoreCase) && item.Value.Equals("true", StringComparison.InvariantCultureIgnoreCase)); if (prop != null) { cleanAction = action; } } break; default: continue; } if (pdfAction != null && cleanAction != null) { break; // no point in looking further } } if (pdfAction != null || cleanAction != null) { DoActions(pdfAction, cleanAction, e); } }