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); } }
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 }