public virtual IEnumerable IndexCustomArticles(PXAdapter adapter) { PXLongOperation.StartOperation(this, delegate() { foreach (var result in WikiArticles.Select()) { string plaintext = null; var _wp = (WikiPage)result[typeof(WikiPage)]; var _wr = (WikiRevision)result[typeof(WikiRevision)]; var _wl = (WikiPageLanguage)result[typeof(WikiPageLanguage)]; if (_wp.IsHtml != true) { WikiReader reader = PXGraph.CreateInstance <WikiReader>(); PXWikiSettings settings = new PXWikiSettings(new PXPage(), reader); PXTxtRenderer renderer = new PXTxtRenderer(settings.Absolute); var ctx = new PXDBContext(settings.Absolute); ctx.Renderer = renderer; plaintext = (_wl.Title ?? "") + Environment.NewLine + PXWikiParser.Parse(_wr.Content, ctx); } else { plaintext = (_wl.Title ?? "") + Environment.NewLine + SearchService.Html2PlainText(_wr.Content); } //Try updating the article in current Company if (!PXDatabase.Update <WikiRevision>( new PXDataFieldAssign("PlainText", PXDbType.NVarChar, plaintext), new PXDataFieldRestrict("PageID", PXDbType.UniqueIdentifier, _wr.PageID), new PXDataFieldRestrict("PageRevisionID", PXDbType.Int, _wr.PageRevisionID), new PXDataFieldRestrict("Language", PXDbType.VarChar, _wr.Language) )) { //Article may be shared. Try updating the article through graph (thus handling the shared record update stratagy) //if article is not updatable an exception may be thrown - ignore. try { ArticleUpdater updater = PXGraph.CreateInstance <ArticleUpdater>(); WikiRevision rev = updater.Revision.Select(_wr.PageID, _wr.PageRevisionID, _wr.Language); rev.PlainText = plaintext; updater.Revision.Update(rev); updater.Persist(); } catch (Exception ex) { PXTrace.WriteInformation("Plain text field could not be updated for article = {0}. Error Message: {1}", _wr.PageID, ex.Message); } } } }); return(adapter.Get()); }
private PXRenderer CreateRenderer(string exportType, PXDBContext settings) { switch (exportType) { case "txt": PXTxtRenderer resultTxt = new PXTxtRenderer(settings); resultTxt.ColsCount = 100; return resultTxt; case "rtf": PXRtfRenderer resultRtf = new PXRtfRenderer(settings); return resultRtf; } return null; }
private PXRenderer CreateRenderer(string exportType, PXDBContext settings) { switch (exportType) { case "txt": PXTxtRenderer resultTxt = new PXTxtRenderer(settings); resultTxt.ColsCount = 100; return(resultTxt); case "rtf": PXRtfRenderer resultRtf = new PXRtfRenderer(settings); return(resultRtf); } return(null); }