public ActionResult ClonePartialProduct( [FromBody] ClonePartialProductRequest request, bool isLive = false) { if (!ModelState.IsValid) { return BadRequest(); } Content rootContent = _contentDefinitionService .GetDefinitionById(request.ProductDefinitionId, isLive); Content partialContent = _editorPartialContentService .FindContentByPath(rootContent, request.ContentPath); Content cloneContent = _editorPartialContentService .FindContentByPath(rootContent, request.ContentPath, forClone: true); int clonedProdictId = _cloneBatchAction .CloneProduct(request.CloneArticleId, cloneContent.DeepCopy(), null) .Value; ArticleObject articleObject = LoadProductGraph(partialContent, clonedProdictId, isLive); string productJson = JsonConvert.SerializeObject(articleObject); return Content(productJson, "application/json"); }
public ActionResult LoadProductRelation( [FromBody] LoadProductRelationRequest request, bool isLive = false) { if (!ModelState.IsValid) { return(BadRequest()); } Content rootContent = _contentDefinitionService .GetDefinitionById(request.ProductDefinitionId, isLive); Content relationContent = _editorPartialContentService .FindContentByPath(rootContent, request.ContentPath) .ShallowCopy(); Field relationField = relationContent.Fields .Single(f => f.FieldName == request.RelationFieldName); relationContent.Fields.Clear(); relationContent.Fields.Add(relationField); ArticleObject parentObject = LoadProductGraph(relationContent, request.ParentArticleId, isLive); object relationObject = parentObject?[request.RelationFieldName]; string relationJson = JsonConvert.SerializeObject(relationObject); return(Content(relationJson, "application/json")); }
public ContentResult GetEditorData(int productDefinitionId, int articleId, bool isLive = false) { Content rootContent = _contentDefinitionService.GetDefinitionById(productDefinitionId, isLive); ArticleObject articleObject = LoadProductGraph(rootContent, articleId, isLive); string dataJson = JsonConvert.SerializeObject(articleObject); return(Content(dataJson, "application/json")); }
public void OpenChannel(ArticleObject item) { try { MainContext.ShowUserChannelFragment(item.UserData, item.UserId.ToString()); } catch (Exception e) { Console.WriteLine(e); } }
private void GetDataArticles() { try { ArticleData = JsonConvert.DeserializeObject <ArticleObject>(Intent.GetStringExtra("ItemArticle")); if (ArticleData != null) { ArticleId = ArticleData.Id.ToString(); GlideImageLoader.LoadImage(this, ArticleData.Image, ImageBlog, ImageStyle.CenterCrop, ImagePlaceholders.Drawable); SupportActionBar.Title = Methods.FunString.DecodeString(ArticleData.Title); TxtTitle.Text = Methods.FunString.DecodeString(ArticleData.Title); TxtViews.Text = ArticleData.Views + " " + GetText(Resource.String.Lbl_Views); LikeCount.Text = ArticleData.Likes.ToString(); UnlikeNumber.Text = ArticleData.Dislikes.ToString(); DateTimeTextView.Text = ArticleData.TextTime; string name = Methods.FunString.DecodeString(CategoriesController.ListCategories?.FirstOrDefault(a => a.Id == (ArticleData.Category))?.Name); if (string.IsNullOrEmpty(name)) { name = GetString(Resource.String.Lbl_Unknown); } CategoryName.Text = GetText(Resource.String.Lbl_Category) + " : " + name; string style = AppSettings.SetTabDarkTheme ? "<style type='text/css'>body{color: #fff; background-color: #444;}</style>" : "<style type='text/css'>body{color: #444; background-color: #fff;}</style>"; var content = Html.FromHtml(ArticleData.Text, FromHtmlOptions.ModeCompact).ToString(); string data = "<!DOCTYPE html>"; data += "<head><title></title>" + style + "</head>"; data += "<body>" + content + "</body>"; data += "</html>"; TxtHtml.SetWebViewClient(new WebViewClient()); TxtHtml.Settings.LoadsImagesAutomatically = true; TxtHtml.Settings.JavaScriptEnabled = true; TxtHtml.Settings.JavaScriptCanOpenWindowsAutomatically = true; TxtHtml.Settings.SetLayoutAlgorithm(WebSettings.LayoutAlgorithm.TextAutosizing); TxtHtml.Settings.DomStorageEnabled = true; TxtHtml.Settings.AllowFileAccess = true; TxtHtml.Settings.DefaultTextEncodingName = "utf-8"; TxtHtml.LoadDataWithBaseURL(null, data, "text/html", "UTF-8", null); } } catch (Exception e) { Console.WriteLine(e); } }
public ActionResult ClonePartialProductPrototype( [FromBody] ClonePartialProductPrototypeRequest request, bool isLive = false) { if (!ModelState.IsValid) { return BadRequest(); } Content rootContent = _contentDefinitionService .GetDefinitionById(request.ProductDefinitionId, isLive); Content relationContent = _editorPartialContentService .FindContentByPath(rootContent, request.ContentPath); EntityField relationField = (EntityField)relationContent.Fields .Single(f => f.FieldName == request.RelationFieldName); Content cloneContent = relationField.CloneDefinition ?? relationField.Content; var qpFiels = _fieldService.Read(relationField.FieldId); int backwardFieldId = relationField is BackwardRelationField ? relationField.FieldId : qpFiels.BackRelationId.Value; int clonePrototypeId = 0; if (!String.IsNullOrWhiteSpace(relationField.ClonePrototypeCondition)) { clonePrototypeId = _articleService .Ids(relationField.Content.ContentId, null, filter: relationField.ClonePrototypeCondition) .FirstOrDefault(); } if (clonePrototypeId == 0) { throw new InvalidOperationException( $"Unable to receive prototype for product creating: contentId={relationField.Content.ContentId}"); } int clonedProdictId = _cloneBatchAction .CloneProduct(clonePrototypeId, cloneContent.DeepCopy(), new Dictionary<string, string> { ["FieldId"] = backwardFieldId.ToString(), ["ArticleId"] = request.ParentArticleId.ToString(), }) .Value; ArticleObject articleObject = LoadProductGraph(relationField.Content, clonedProdictId, isLive); string productJson = JsonConvert.SerializeObject(articleObject); return Content(productJson, "application/json"); }
private void Initialize(ArticlesAdapterViewHolder holder, ArticleObject item) { try { GlideImageLoader.LoadImage(ActivityContext, !string.IsNullOrEmpty(item.Image) ? item.Image : "blackdefault", holder.Image, ImageStyle.CenterCrop, ImagePlaceholders.Drawable); GlideImageLoader.LoadImage(ActivityContext, !string.IsNullOrEmpty(item.UserData?.Avatar) ? item.UserData.Avatar : "no_profile_image_circle", holder.UserImageProfile, ImageStyle.CircleCrop, ImagePlaceholders.Drawable); var color = Methods.FunString.RandomColor(); holder.Category.SetBackgroundColor(Color.ParseColor(color)); CategoryColor.Add(item.Id, color); string id = item.Url.Split('/').Last(); string name = Methods.FunString.DecodeString(CategoriesController.ListCategories?.FirstOrDefault(a => a.Id == (item.Category))?.Name); if (string.IsNullOrEmpty(name)) { name = ActivityContext.GetString(Resource.String.Lbl_Unknown); } holder.Category.Text = name; holder.Description.Text = Methods.FunString.DecodeString(item.Description); holder.Title.Text = Methods.FunString.DecodeString(item.Title); holder.Username.Text = Methods.FunString.DecodeString(item.UserData?.Name); holder.ViewMore.Text = ActivityContext.GetText(Resource.String.Lbl_ReadMore) + " >"; //READ MORE > holder.Time.Text = Methods.FunString.DecodeString(item.TextTime); if (!holder.UserItem.HasOnClickListeners) { holder.UserItem.Click += (sender, args) => { try { AFragment.OpenChannel(item); } catch (Exception e) { Console.WriteLine(e); } } } ; } catch (Exception e) { Console.WriteLine(e); } }
private void Initialize(BlogAdapterViewHolder holder, ArticleObject item) { try { GlideImageLoader.LoadImage(ActivityContext, !string.IsNullOrEmpty(item.Thumbnail) ? item.Thumbnail : "blackdefault", holder.Image, ImageStyle.CenterCrop, ImagePlaceholders.Drawable); holder.Title.Text = Methods.FunString.DecodeString(item.Title); holder.Time.Text = item.CreatedAt; //holder.Category.Text = CategoriesController.GetCategoryName(item.Category, ""); //wael } catch (Exception e) { Console.WriteLine(e); } }
private void GetDataArticles() { try { ArticleData = JsonConvert.DeserializeObject <ArticleObject>(Intent.GetStringExtra("itemObject")); if (ArticleData != null) { ArticleId = ArticleData.Id; GlideImageLoader.LoadImage(this, ArticleData.Thumbnail, ImageBlog, ImageStyle.CenterCrop, ImagePlaceholders.Drawable); SupportActionBar.Title = Methods.FunString.DecodeString(ArticleData.Title); TxtTitle.Text = Methods.FunString.DecodeString(ArticleData.Title); TxtViews.Text = ArticleData.View + " " + GetText(Resource.String.Lbl_Views); //SharedCount.Text = ArticleData.Shared.ToString(); DateTimeTextView.Text = ArticleData.CreatedAt; //CategoryName.Text = GetText(Resource.String.Lbl_Category) + " : " + CategoriesController.GetCategoryName(ArticleData.Category, ""); string style = AppSettings.SetTabDarkTheme ? "<style type='text/css'>body{color: #fff; background-color: #444;}</style>" : "<style type='text/css'>body{color: #444; background-color: #fff;}</style>"; var content = Html.FromHtml(ArticleData.Content, FromHtmlOptions.ModeCompact).ToString(); string data = "<!DOCTYPE html>"; data += "<head><title></title>" + style + "</head>"; data += "<body>" + content + "</body>"; data += "</html>"; TxtHtml.SetWebViewClient(new WebViewClient()); TxtHtml.Settings.LoadsImagesAutomatically = true; TxtHtml.Settings.JavaScriptEnabled = true; TxtHtml.Settings.JavaScriptCanOpenWindowsAutomatically = true; TxtHtml.Settings.SetLayoutAlgorithm(WebSettings.LayoutAlgorithm.NarrowColumns); TxtHtml.Settings.DomStorageEnabled = true; TxtHtml.Settings.AllowFileAccess = true; TxtHtml.Settings.DefaultTextEncodingName = "utf-8"; TxtHtml.LoadDataWithBaseURL(null, data, "text/html", "UTF-8", null); } } catch (Exception e) { Console.WriteLine(e); } }
public async Task <Article> UpdateArticleAsync(Article article, string token, CancellationToken cancellationToken = default) { var body = new ArticleObject { Article = article }; var requestBody = JsonSerializer.Serialize(body, _jsonSerializerOptions); var httpRequest = new HttpRequestMessage(HttpMethod.Put, new Uri($"api/articles/{article.Slug}", UriKind.Relative)) { Content = new StringContent(requestBody, Encoding.UTF8, "application/json") }; httpRequest.Headers.Add("Authorization", $"Token {token}"); var response = await HandleRequest <ArticleObject>(httpRequest, cancellationToken); return(response.Article); }
protected ArticleObject LoadProductGraph(Content content, int articleId, bool isLive) { var productDefinition = new ProductDefinition { StorageSchema = content }; Article article = _productService.GetProductById(articleId, isLive, productDefinition); if (article == null) { return(null); } IArticleFilter filter = isLive ? ArticleFilter.LiveFilter : ArticleFilter.DefaultFilter; ArticleObject articleObject = _editorDataService.ConvertArticle(article, filter, new HashSet <Article>()); return(articleObject); }
public ActionResult SavePartialProduct( [FromBody] SavePartialProductRequest request, bool isLive = false) { if (!ModelState.IsValid) { return new BadRequestResult(); } Content rootContent = _contentDefinitionService .GetDefinitionById(request.ProductDefinitionId, isLive); Content partialContent = _editorPartialContentService .FindContentByPath(rootContent, request.ContentPath); Article partialProduct = _editorDataService .DeserializeProduct(request.PartialProduct, partialContent); var partialDefinition = new ProductDefinition { StorageSchema = partialContent }; try { // TODO: what about validation ? InsertData[] insertData = _productUpdateService.Update(partialProduct, partialDefinition, isLive); var idMappings = insertData.Select(data => new { ClientId = data.OriginalArticleId, ServerId = data.CreatedArticleId, }); int partialProductId = partialProduct.Id; if (partialProductId <= 0) { partialProductId = insertData .Single(data => data.OriginalArticleId == partialProduct.Id) .CreatedArticleId; } ArticleObject articleObject = LoadProductGraph(partialContent, partialProductId, isLive); string responseJson = JsonConvert.SerializeObject(new { IdMappings = idMappings, PartialProduct = articleObject, }); return Content(responseJson, "application/json"); } catch (ProductUpdateConcurrencyException) { ArticleObject articleObject = LoadProductGraph(partialContent, partialProduct.Id, isLive); string productJson = JsonConvert.SerializeObject(articleObject); return new ContentResult { Content = productJson, StatusCode = (int)HttpStatusCode.Conflict, ContentType = "application/json" }; } }
public override IProductDataSource GetExtensionContainer(string fieldName, string extensionContentName) { // при десериализации для редактора используем объект [$"{fieldName}_Extension"][extensionContentName] return(GetContainer(ArticleObject._Extension(fieldName)).GetContainer(extensionContentName)); }