2017-11-23 19 views
0

콘텐츠의 수정 URL을 백엔드에서 문자열로 가져 오려고하는데 catch는 내가 워크 플로우 작업에 포함되어 있으므로 할 수 없습니다. Url.Action ... 또는 Url.ItemEditLink ... 또는 다른 UrlHelpers를 컨트롤러 또는 뷰인 것처럼 사용하십시오. 또한 워크 플로우 내부에 있지만 필요한 컨텐트는 workflowContext 또는 activityContext의 일부가 아니므로 해당 컨텍스트 나 토큰 중 하나를 사용할 수 없습니다.UrlHelpers 또는 Orchard 토큰이없는 문자열로 콘텐츠 편집 URL 가져 오기

콘텐츠 메타 데이터와 사이트 baseUrl을 가져 와서 수동으로 빌드하려고하면 해결책이 될 수 있지만이 방법은 오류가 발생하기 쉽습니다.

감사합니다.

public class MyClass : Task 
{ 
    private readonly RequestContext _requestContext; 
    ... 

    public MyActivity(RequestContext requestContext, ...) 
    { 
     _requestContext = requestContext; 
     ... 
    } 

    ... 

    public override IEnumerable<LocalizedString> Execute(WorkflowContext workflowContext, ActivityContext activityContext) 
    { 
     var content = ... get using ID 
     var helper = new UrlHelper(_requestContext); 
     var baseurl = new Uri(_orchardServices.WorkContext.CurrentSite.BaseUrl); 
     Uri completeurl = new Uri(baseurl, helper.ItemDisplayUrl(content)); 

     yield return T("Done"); 
    } 
} 

가 실제로 반 수동으로 열린 우리당을 구축 할 것을 밝혀,하지만이 방법으로 문제가 없었어요 :

+0

전자 메일 메시지 본문에 URL이 필요합니까? – Lawyerson

+0

예.하지만 URL이 필요한 컨텐트는 워크 플로우 또는 현재 컨텍스트의 일부가 아니므로 사용할 수있는 토큰이 없습니다. 기본적으로 전자 메일 활동과 동일한 활동이 있지만 백엔드에서 본문을 만들고 URL을 포함해야합니다. – Velair

+0

개인적으로이 작업을 수행하지 않았으므로 완전한 대답을 제공 할 수는 없지만 사용자 지정 토큰을 사용하여 원하는 컨텐트 항목을 가져 와서 기존 EditUrl 및 AbsoluteUrl 토큰과 연결할 수 있습니다. http://arkleseizure.net/custom-tokens-in-orchard-cms – Lawyerson

답변

1

이 내가 활동에서 열린 우리당을 구축하는 방법이다. Orchard 내에서 탐색을 위해 ItemDisplayUrl 만 사용할 수 있습니다. 문자열이 외부 프로그램 (Slack)으로 전송되기 때문에 전체 URL을 얻어야했습니다.