Exemple #1
0
		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);
		}
Exemple #2
0
		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;
		}
Exemple #3
0
		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);
			}
		}