示例#1
0
        public configurationController(
            IApplicationLifetime applicationLifetime,
            IWritableOptions <General> general_options,
            IWritableOptions <Database> database_options,
            IWritableOptions <Comments> comment_options,
            IWritableOptions <Smtp> smtp_options,
            IWritableOptions <Media> media_options,
            IWritableOptions <Features> features_options,
            IWritableOptions <Listing> listings_options,
            IWritableOptions <Authentication> authentication_options,
            IWritableOptions <Registration> registration_options,
            IWritableOptions <Aws> aws_options,
            IWritableOptions <Social> social_options,
            IWritableOptions <Contact> contact_options,
            IWritableOptions <Rechapcha> rechapcha_options,
            IWritableOptions <ElasticSearch> elasticsearch_options,
            IWritableOptions <ActiveCompaign> activecompany_options,
            IWritableOptions <Zendesk> zendesk_options,
            IOptions <General> generalSettings,
            IOptions <Comments> commentSettings,
            IOptions <Smtp> smtpSettings,
            IOptions <Media> mediaSettings,
            IOptions <Features> featureSettings,
            IOptions <Listing> listingSettings,
            IOptions <Authentication> authenticationSettings,
            IOptions <Registration> registrationSettings,
            IOptions <Aws> awsSettings,
            IOptions <Social> socialSettings,
            IOptions <Contact> contactSettings,
            IOptions <Rechapcha> rechapchaSettings,
            IOptions <ElasticSearch> elasticSearchSettings,
            IOptions <Zendesk> zendeskSettings,
            IOptions <ActiveCompaign> activeSettings,
            IOptions <Jugnoon.Blogs.Settings.General> blogs_general_Settings,
            IOptions <Jugnoon.Blogs.Settings.Aws> blogs_aws_Settings,
            ApplicationDbContext context

            )
        {
            _context = context;
            // writable injectors
            _database_options       = database_options;
            _general_options        = general_options;
            _comment_options        = comment_options;
            _smtp_options           = smtp_options;
            _media_options          = media_options;
            _features_options       = features_options;
            _listings_options       = listings_options;
            _authentication_options = authentication_options;
            _registration_options   = registration_options;
            _aws_options            = aws_options;
            _social_options         = social_options;
            _contact_options        = contact_options;
            _rechapcha_options      = rechapcha_options;
            _elasticsearch_options  = elasticsearch_options;
            _activecompaign_options = activecompany_options;
            _zendesk_options        = zendesk_options;

            ApplicationLifetime = applicationLifetime;
            // readable injectors
            _generalSettings        = generalSettings.Value;
            _commentSettings        = commentSettings.Value;
            _smtpSettings           = smtpSettings.Value;
            _mediaSettings          = mediaSettings.Value;
            _featureSettings        = featureSettings.Value;
            _listingSettings        = listingSettings.Value;
            _authenticationSettings = authenticationSettings.Value;
            _registrationSettings   = registrationSettings.Value;
            _awsSettings            = awsSettings.Value;

            _socialSettings        = socialSettings.Value;
            _contactSettings       = contactSettings.Value;
            _rechapchaSettings     = rechapchaSettings.Value;
            _elasticSearchSettings = elasticSearchSettings.Value;
            _zendeskSettings       = zendeskSettings.Value;
            _activeSettings        = activeSettings.Value;

            _blogs_general_Settings = blogs_general_Settings.Value;
            _blogs_aws_Settings     = blogs_aws_Settings.Value;
        }
示例#2
0
        public async Task <ActionResult> proc()
        {
            var json  = new StreamReader(Request.Body).ReadToEnd();
            var model = JsonConvert.DeserializeObject <JGN_Blogs>(json);

            if (model.title != null && model.title.Length < 5)
            {
                return(Ok(new { status = "error", message = "Please enter title" }));
            }

            if (model.description == null || model.description == "" || model.description.Length < 10)
            {
                return(Ok(new { status = "error", message = "Please enter proper description" }));
            }

            // validate tags
            if (model.tags != null && Jugnoon.Settings.Configs.FeatureSettings.enable_tags)
            {
                if (!TagsBLL.Validate_Tags(model.tags))
                {
                    return(Ok(new { status = "error", message = "Tags not validated" }));
                }

                // Process tags
                if (model.tags != "")
                {
                    TagsBLL.Process_Tags(_context, model.tags, TagsBLL.Types.Blogs, 0);
                }
            }

            var b_settings = new Jugnoon.Blogs.Settings.General();
            // process categories
            int _isapproved = 1; // enable it bydefault

            if (b_settings.blogPostModeration == 1)
            {
                // Moderator Review Required
                _isapproved = 0;
            }

            //XSS CLEANUP
            string content = "";

            if (model.description != null && model.description != "")
            {
                content = UGeneral.SanitizeText(model.description);
            }


            // normal tags
            if (b_settings.tag_Processing)
            {
                content = BlogScripts.Generate_Auto_Tag_Links(_context, content);
            }
            // normal category
            if (b_settings.category_Processing)
            {
                content = BlogScripts.Generate_Auto_Category_Links(_context, content);
            }

            // blog banner upload functionality
            if (model.cover_url != null && model.cover_url != "")
            {
                if (model.cover_url.StartsWith("data:image"))
                {
                    // base 64 image
                    var    image_url = model.cover_url.Replace("data:image/png;base64,", "");
                    byte[] image     = Convert.FromBase64String(image_url);
                    // create image name
                    var _title = UtilityBLL.ReplaceSpaceWithHyphin(model.title);
                    if (_title.Length > 15)
                    {
                        _title = _title.Substring(0, 15);
                    }
                    string thumbFileName = _title + Guid.NewGuid().ToString().Substring(0, 8) + ".png";

                    var path = SiteConfig.Environment.ContentRootPath + DirectoryPaths.BlogsPhotoDirectoryPath;
                    if (System.IO.File.Exists(path + "" + thumbFileName))
                    {
                        System.IO.File.Delete(path + "" + thumbFileName);
                    }

                    // local storage
                    System.IO.File.WriteAllBytes(path + "" + thumbFileName, image);
                    model.cover_url = await Jugnoon.Helper.Aws.UploadPhoto(_context, thumbFileName, path, Jugnoon.Blogs.Configs.AwsSettings.midthumb_directory_path);
                }
            }
            // normal blog posts upload
            string _publish_path = "";

            // Add information in table
            var filename = new StringBuilder();

            if (model.files.Count > 0)
            {
                foreach (var item in model.files)
                {
                    if (filename.ToString().Length > 0)
                    {
                        filename.Append(",");
                    }
                    filename.Append(item.filename);
                }
            }

            if (filename.ToString() != "")
            {
                _publish_path = AwsCloud.UploadPostCover(filename.ToString(), model.userid);
            }
            else
            {
                _publish_path = filename.ToString();
            }


            if (model.id == 0)
            {
                var blg = new JGN_Blogs();
                blg.categories = model.categories;
                blg.userid     = model.userid;
                if (model.title != null)
                {
                    blg.title = model.title;
                    if (blg.title.Length > 100)
                    {
                        blg.title = blg.title.Substring(0, 99);
                    }
                }
                blg.description = content;
                if (model.tags != null)
                {
                    blg.tags = model.tags;
                    if (blg.tags.Length > 300)
                    {
                        blg.tags = blg.tags.Substring(0, 299);
                    }
                }
                blg.isenabled       = 1; // enabled in start
                blg.isapproved      = (byte)_isapproved;
                blg.picture_caption = model.picture_caption;
                blg.picture_url     = _publish_path; // filename
                blg.cover_url       = model.cover_url;
                blg = await BlogsBLL.Add(_context, blg);

                Setup_Item(blg);

                return(Ok(new { status = "success", record = blg, message = SiteConfig.generalLocalizer["_record_created"].Value }));
            }
            else
            {
                var blg = new JGN_Blogs();
                blg.id     = model.id;
                blg.userid = model.userid;
                if (model.title != null)
                {
                    blg.title = model.title;
                }
                blg.description = content;
                if (model.tags != null)
                {
                    blg.tags = model.tags;
                }
                blg.isapproved      = (byte)_isapproved;
                blg.categories      = model.categories;
                blg.picture_caption = model.picture_caption;
                blg.picture_url     = _publish_path;

                Setup_Item(blg);
                await BlogsBLL.Update(_context, blg);

                return(Ok(new { status = "success", record = blg, message = SiteConfig.generalLocalizer["_record_updated"].Value }));
            }
        }