Esempio n. 1
0
        void url_Extract(string url)
        {
            string       dom = url.getDomainFromURL();
            SearchResult rs  = db.FindItemByContainFieldValue(new CNSPLIT()
            {
                SITE = dom
            }, "SITE", 1000, 1);

            if (rs == null || rs.Total == 0)
            {
                url_buildConfig(url);
            }
            else
            {
                string Content = url.getContentTextFromURL();
                var    ls      = ((IList)rs.Message).Convert <CNSPLIT>().ToArray();

                CNSPLIT     config = (CNSPLIT)ls[0];
                IndexLine[] a      = Content.Split(new string[] { Environment.NewLine }, StringSplitOptions.None).Select(x => x.Trim()).Where(x => x.Length > 1).Select((x, k) => new IndexLine(k, x)).ToArray();
                int         pLast  = a.getIndex(new ConfigItem()
                {
                    Text = config.TEXT_LAST, SkipLine = config.SKIP_LINE_BOTTOM
                }, -1),
                            pFirst = a.getIndex(new ConfigItem()
                {
                    Text = config.TEXT_FIRST, SkipLine = config.SKIP_LINE_TOP
                }, pLast);
                if (pFirst == -1 || pLast == -1)
                {
                    //MessageBox.Show("Config wrong, can not find position first or last of data content");
                    url_buildConfig(url, Content);
                    return;
                }
                string[] con  = a.Where(x => x.Index > pFirst && x.Index < pLast).Select(x => x.Line).ToArray();
                string   data = string.Join(Environment.NewLine, con);

                //CmsExtract cms = data.get_CmsExtract(url, config, "");
                new Thread(new ParameterizedThreadStart((x) =>
                {
                    new FormELDocAdd(url, x.ToString(), new string[] { }).ShowDialog();
                })).Start(data);
            }
        }
Esempio n. 2
0
        public void addButton_WebCopy()
        {
            var b = new ToolStripButton();

            b.Image       = ___HtmlEditorResource.GetImageIcon("web.gif");
            b.ToolTipText = "Copy from URL Website";
            b.Click      += (se, ev) =>
            {
                string urc = Clipboard.GetText(TextDataFormat.Text);
                if (!string.IsNullOrEmpty(urc) && !urc.ToLower().StartsWith("http"))
                {
                    urc = "";
                }
                var url = Interaction.InputBox("Please enter an site url", "URL", urc, 99, 99);
                if (!string.IsNullOrEmpty(url))
                {
                    // Set cursor as hourglass
                    Cursor.Current = Cursors.WaitCursor;

                    string       dom = url.getDomainFromURL();
                    SearchResult rs  = db.FindItemByContainFieldValue(new CNSPLIT()
                    {
                        SITE = dom
                    }, "SITE", 1000, 1);
                    if (rs == null || rs.Total == 0)
                    {
                        var fc = new FormDataSplitConfig(db, url);
                        fc.OnSubmit += (config, htm, content) =>
                        {
                            CmsExtract cms = content.get_CmsExtract(url, config, htm);
                            this.Html       = cms.ContentHtml;
                            this.cmsExtract = cms;
                            fillFormCMS(cms);
                            fc.Close();
                        };
                        fc.ShowDialog();
                    }
                    else
                    {
                        string Content = url.getContentTextFromURL();
                        var    ls      = ((IList)rs.Message).Convert <CNSPLIT>().ToArray();

                        CNSPLIT     config = (CNSPLIT)ls[0];
                        IndexLine[] a      = Content.Split(new string[] { Environment.NewLine }, StringSplitOptions.None).Select(x => x.Trim()).Where(x => x != "").Select((x, k) => new IndexLine(k, x)).ToArray();
                        //int pLast = a.getIndex(config.TEXT_LAST, -1), pFirst = a.getIndex(config.TEXT_FIRST, pLast);
                        int pLast = a.getIndex(new ConfigItem()
                        {
                            Text = config.TEXT_LAST, SkipLine = config.SKIP_LINE_BOTTOM
                        }, -1),
                            pFirst = a.getIndex(new ConfigItem()
                        {
                            Text = config.TEXT_FIRST, SkipLine = config.SKIP_LINE_TOP
                        }, pLast);
                        if (pFirst == -1 || pLast == -1)
                        {
                            MessageBox.Show("Config wrong, can not find position first or last of data content");
                            return;
                        }
                        string[] con  = a.Where(x => x.Index > pFirst && x.Index < pLast).Select(x => x.Line).ToArray();
                        string   data = string.Join(Environment.NewLine, con);

                        CmsExtract cms = data.get_CmsExtract(url, config, "");
                        this.Html       = cms.ContentHtml;
                        this.cmsExtract = cms;
                        fillFormCMS(cms);
                    }

                    // Set cursor as default arrow
                    Cursor.Current = Cursors.Default;
                }
            };
            this.AddToolbarItem(b);
        }
        public FormDataSplitConfig(IDataFile _db, string url, string content_ = "")
            : base("CONFIG", true)
        {
            db     = _db;
            Domain = url.getDomainFromURL();
            if (content_ != "")
            {
                Content = content_;
            }
            else
            {
                Content = url.getContentTextFromURL();
            }
            ClientSize = new System.Drawing.Size(fWidth, fHeight);

            #region [ === UI === ]

            Panel main = new Panel()
            {
                BackColor = Color.WhiteSmoke, Dock = DockStyle.Fill, Padding = new Padding(10)
            };

            Panel box_Domain = new Panel()
            {
                Height = 30, Dock = DockStyle.Top, Padding = new Padding(0, 5, 0, 5)
            };
            Label lbl_Domain = new Label()
            {
                Width = 100, Dock = DockStyle.Left, Text = "Domain", TextAlign = ContentAlignment.MiddleRight, Padding = new Padding(0, 0, 10, 0)
            };
            txt_Domain = new TextBoxCustom()
            {
                Text = url.getDomainFromURL(), Dock = DockStyle.Fill, BorderStyle = BorderStyle.FixedSingle
            };
            box_Domain.Controls.AddRange(new Control[] { lbl_Domain, txt_Domain });
            txt_Domain.BringToFront();

            Panel box_URL = new Panel()
            {
                Height = 30, Dock = DockStyle.Top, Padding = new Padding(0, 5, 0, 5)
            };
            Label lbl_URL = new Label()
            {
                Width = 100, Dock = DockStyle.Left, Text = "URL", TextAlign = ContentAlignment.MiddleRight, Padding = new Padding(0, 0, 10, 0)
            };
            txt_URL = new TextBoxCustom()
            {
                Text = url, Dock = DockStyle.Fill, BorderStyle = BorderStyle.FixedSingle
            };
            box_URL.Controls.AddRange(new Control[] { txt_URL, lbl_URL });

            Panel box_Content = new Panel()
            {
                Height = 300, Dock = DockStyle.Fill, Padding = new Padding(0, 5, 0, 5)
            };
            Label lbl_Content = new Label()
            {
                Width = 100, Dock = DockStyle.Left, Text = "Content", TextAlign = ContentAlignment.TopRight, Padding = new Padding(0, 0, 10, 0)
            };
            txt_Content = new TextBoxCustom()
            {
                Text = Content, Tag = Content, Dock = DockStyle.Fill, Multiline = true, ScrollBars = ScrollBars.Both, WordWrap = true, BorderStyle = BorderStyle.FixedSingle
            };
            box_Content.Controls.AddRange(new Control[] { txt_Content, lbl_Content });

            Panel box_Text = new Panel()
            {
                Dock = DockStyle.Bottom, Height = 120
            };
            Panel box_TextFirst = new Panel()
            {
                Dock = DockStyle.Right, Width = fWidth / 2 - 200
            };
            txt_TextFirst = new ucDataSplitConfig("___ Text First ___", "Title")
            {
                Dock = DockStyle.Top, Height = 20
            };
            list_TextFirst = new ListBox()
            {
                Dock = DockStyle.Fill, BorderStyle = BorderStyle.FixedSingle,
            };
            box_TextFirst.Controls.AddRange(new Control[] { list_TextFirst, txt_TextFirst });

            Panel box_TextLast = new Panel()
            {
                Dock = DockStyle.Right, Width = fWidth / 2 - 200
            };
            txt_TextLast = new ucDataSplitConfig("___ Text Last ___", "Signature")
            {
                Dock = DockStyle.Top, Height = 20
            };
            list_TextLast = new ListBox()
            {
                Dock = DockStyle.Fill, BorderStyle = BorderStyle.FixedSingle,
            };
            box_TextLast.Controls.AddRange(new Control[] { list_TextLast, txt_TextLast });

            Button btn_TextFirst_Add = new Button()
            {
                Text = "Add Config", Dock = DockStyle.Right, Width = 50
            };
            Button btn_TextFirst_Remove = new Button()
            {
                Text = "Remove Config", Dock = DockStyle.Right, Width = 60
            };
            Button btn_TextTestConfig = new Button()
            {
                Text = "Test Config", Dock = DockStyle.Right, Width = 60
            };
            Button btn_TextResetContent = new Button()
            {
                Text = "Reset Content", Dock = DockStyle.Right, Width = 60
            };

            box_Text.Controls.AddRange(new Control[] {
                btn_TextTestConfig,
                new Label()
                {
                    Dock = DockStyle.Right, AutoSize = false, Width = 10, Height = 40
                },
                btn_TextResetContent,
                new Label()
                {
                    Dock = DockStyle.Right, AutoSize = false, Width = 10, Height = 40
                },
                box_TextFirst,
                new Label()
                {
                    Dock = DockStyle.Right, AutoSize = false, Width = 10, Height = 40
                },
                box_TextLast,
                new Label()
                {
                    Dock = DockStyle.Right, AutoSize = false, Width = 10, Height = 40
                },
                btn_TextFirst_Add,
                new Label()
                {
                    Dock = DockStyle.Right, AutoSize = false, Width = 10, Height = 10
                },
                btn_TextFirst_Remove,
            });

            Panel box_Footer = new Panel()
            {
                Height = 30, Dock = DockStyle.Bottom, Padding = new Padding(0, 10, 0, 0)
            };
            Button btn_Submit = new Button()
            {
                Dock = DockStyle.Right, Text = "SUBMIT"
            };
            box_Footer.Controls.AddRange(new Control[] { btn_Submit });

            main.Controls.AddRange(new Control[] { box_Footer, box_Text, box_Content, box_URL, box_Domain });
            this.Controls.Add(main);
            box_Footer.SendToBack();
            box_Content.BringToFront();
            this.PanelHeader_SendToBack();

            #endregion

            list_TextFirst.Format += listBox_Format;
            list_TextLast.Format  += listBox_Format;

            SearchResult rs = db.FindItemByContainFieldValue(new CNSPLIT()
            {
                SITE = Domain
            }, "SITE", 1000, 1);
            if (rs != null && rs.Status && rs.Total > 0)
            {
                var a  = ((IList)rs.Message).Convert <CNSPLIT>();
                var af = a.Select(x => x.SKIP_LINE_TOP.ToString() + " | " + x.TEXT_FIRST).ToArray();
                var al = a.Select(x => x.SKIP_LINE_BOTTOM.ToString() + " | " + x.TEXT_LAST).ToArray();

                var lks = a.AsQueryable().Select <long>(rs.FieldSyncEdit).Cast <long>().ToArray();

                for (int i = 0; i < lks.Length; i++)
                {
                    list_TextFirst.Items.Add(new ComboboxItem()
                    {
                        Text = af[i], Value = lks[i]
                    });
                    list_TextLast.Items.Add(new ComboboxItem()
                    {
                        Text = al[i], Value = lks[i]
                    });
                }

                //list_TextFirst.Items.AddRange(af);
                //list_TextLast.Items.AddRange(al);
            }

            #region [ === EVENT === ]

            list_TextFirst.SelectedIndexChanged += (se, ev) => list_Split_Choose(list_TextFirst.SelectedIndex);
            list_TextLast.SelectedIndexChanged  += (se, ev) => list_Split_Choose(list_TextLast.SelectedIndex);

            btn_TextFirst_Add.Click    += (se, ev) => config_Add();
            btn_TextFirst_Remove.Click += (se, ev) => config_Remove();
            btn_TextResetContent.Click += (se, ev) => { txt_Content.Text = txt_Content.Tag as string; };
            btn_TextTestConfig.Click   += (se, ev) => config_Test();
            btn_Submit.Click           += (se, ev) => submit();

            #endregion
        }