/// <summary>
 /// 获取链接信息
 /// </summary>
 /// <param name="id">链接编号</param>
 public FellowItem GetFellow(int id)
 {
     FellowItem item = new FellowItem();
     int rows = 0;
     using (IDataReader reader = conn.ExecutePager("[Fellow]", "[ID], [Name], [URL], [Explain], [Logo], [Style], [Sorting], [Home], [Show]", string.Format("[ID] = {0}", id), null, null, 1, 1, ref rows))
     {
         while (reader.Read())
         {
             item.ID = reader.GetInt32(0);
             item.Name = reader.GetString(1);
             item.URL = reader.GetString(2);
             item.Explain = reader.GetString(3);
             item.Logo = reader.GetString(4);
             item.Style = reader.GetString(5);
             item.Sorting = reader.GetInt32(6);
             item.Home = reader.GetInt32(7) == 0 ? false : true;
             item.Show = reader.GetInt32(8) == 0 ? false : true;
         }
     }
     return item;
 }
 /// <summary>
 /// 添加一个链接
 /// </summary>
 /// <param name="value">链接资料</param>
 public int InsertFellow(FellowItem value)
 {
     int id = 0;
     _DbParameter[] pars ={
                            new _DbParameter().Set("@Name", DbType.String, value.Name),
                            new _DbParameter().Set("@URL", DbType.String, value.URL),
                            new _DbParameter().Set("@Explain", DbType.String, value.Explain),
                            new _DbParameter().Set("@Logo", DbType.String, value.Logo),
                            new _DbParameter().Set("@Style", DbType.String, value.Style),
                            new _DbParameter().Set("@Sorting", DbType.Int32, value.Sorting),
                            new _DbParameter().Set("@Home", DbType.Int32, value.Home ? 1 : 0),
                            new _DbParameter().Set("@Show", DbType.Int32, value.Show ? 1 : 0)
                        };
     conn.ExecuteNonQuery("INSERT INTO [Fellow] ([Name], [URL], [Explain], [Logo], [Style], [Sorting], [Home], [Show]) VALUES (@Name, @URL, @Explain, @Logo, @Style, @Sorting, @Home, @Show)", pars);
     id = Convert.ToInt32(conn.ExecuteNewField("[Fellow]", null, null));
     return id;
 }
 /// <summary>
 /// 选择链接
 /// </summary>
 /// <param name="intCurPage">当前页码</param>
 /// <param name="btePerPage">分页大小</param>
 /// <param name="home">是否是首页链接</param>
 /// <param name="selAll">是否选择所有数据</param>
 /// <returns>返回页面数据列表</returns>
 public DataList<FellowItem> SelectFellow(int intCurPage, int btePerPage, bool home, bool selAll)
 {
     DataList<FellowItem> list = new DataList<FellowItem>();
     string sqlWhere = string.Empty;
     if (home) { sqlWhere += " AND [Home] <> 0"; }
     if (!selAll) { sqlWhere += " AND [Show] <> 0"; }
     if (!string.IsNullOrEmpty(sqlWhere)) { sqlWhere = "[ID] > 0" + sqlWhere; }
     int rows = 0;
     using (IDataReader reader = conn.ExecutePager("[Fellow]", "[ID], [Name], [URL], [Explain], [Logo], [Style], [Sorting], [Home], [Show]", sqlWhere, "[Sorting]", "ASC", intCurPage, btePerPage, ref rows))
     {
         while (reader.Read())
         {
             FellowItem item = new FellowItem();
             item.ID = reader.GetInt32(0);
             item.Name = reader.GetString(1);
             item.URL = reader.GetString(2);
             item.Explain = reader.GetString(3);
             item.Logo = reader.GetString(4);
             item.Style = reader.GetString(5);
             item.Sorting = reader.GetInt32(6);
             item.Home = reader.GetInt32(7) == 0 ? false : true;
             item.Show = reader.GetInt32(8) == 0 ? false : true;
             list.Add(item);
         }
     }
     list.Number = rows;
     return list;
 }
 /// <summary>
 /// 修改一个链接
 /// </summary>
 /// <param name="value">链接资料</param>
 public int UpdateFellow(FellowItem value)
 {
     int id = 0;
     _DbParameter[] pars ={
                            new _DbParameter().Set("@Name", DbType.String, value.Name),
                            new _DbParameter().Set("@URL", DbType.String, value.URL),
                            new _DbParameter().Set("@Explain", DbType.String, value.Explain),
                            new _DbParameter().Set("@Logo", DbType.String, value.Logo),
                            new _DbParameter().Set("@Style", DbType.String, value.Style),
                            new _DbParameter().Set("@Sorting", DbType.Int32, value.Sorting),
                            new _DbParameter().Set("@Home", DbType.Int32, value.Home ? 1 : 0),
                            new _DbParameter().Set("@Show", DbType.Int32, value.Show ? 1 : 0),
                            new _DbParameter().Set("@ID", DbType.Int32, value.ID)
                        };
     conn.ExecuteNonQuery("UPDATE [Fellow] SET [Name] = @Name, [URL] = @URL, [Explain] = @Explain, [Logo] = @Logo, [Style] = @Style, [Sorting] = @Sorting, [Home] = @Home, [Show] = @Show WHERE [ID] = @ID", pars);
     id = value.ID;
     return id;
 }
 /// <summary>
 /// 提交链接数据
 /// </summary>
 /// <returns>返回发布链接代码</returns>
 public string Post()
 {
     StringBuilder sr = new StringBuilder();
     int id = SiteFun.ToInt(SiteFun.Query("id"));
     FellowData flwData = new FellowData(conn);
     //取得默认值
     FellowItem old = flwData.GetFellow(id);
     if (SiteFun.IsPost)
     {
         FellowItem postVal = new FellowItem();
         postVal.ID = id;
         postVal.Name = SiteFun.Post("name");
         postVal.URL = SiteFun.Post("url");
         postVal.Logo = SiteFun.Post("logo");
         postVal.Explain = SiteFun.Post("explain");
         postVal.Style = SiteFun.Post("style");
         postVal.Sorting = SiteFun.ToInt(SiteFun.Post("sorting"));
         postVal.Home = SiteFun.ToInt(SiteFun.Post("home")) == 0 ? false : true;
         postVal.Show = SiteFun.ToInt(SiteFun.Post("show")) == 0 ? false : true;
         if (string.IsNullOrEmpty(postVal.URL) || flwData.ExistsFellowUrl(postVal.URL, postVal.ID)) { sr.Append(AdminUI.ErrorBox(SiteDat.GetLan("MsgNoUrlOrExists"))); }
         else
         {
             if (string.IsNullOrEmpty(postVal.Name)) { sr.Append(AdminUI.ErrorBox(SiteDat.GetLan("MsgNoName"))); }
             else
             {
                 if (postVal.ID == 0)
                 {
                     postVal.ID = flwData.InsertFellow(postVal);
                     sr.Append(AdminUI.SuccessBox(SiteDat.GetLan("MsgInsertDat"), string.Format("?act=fellow&mode=list&home={0}", postVal.Home ? 1 : 0)));
                 }
                 else
                 {
                     postVal.ID = flwData.UpdateFellow(postVal);
                     sr.Append(AdminUI.SuccessBox(SiteDat.GetLan("MsgUpdateDat"), string.Format("?act=fellow&mode=list&home={0}", postVal.Home ? 1 : 0)));
                 }
                 if (!string.IsNullOrEmpty(postVal.Logo) && SiteFun.ToInt(SiteFun.Post("down")) == 1)
                 {
                     string saveLogoDir = Path.Combine(SiteCfg.Router, "Attach/FellowLogo");
                     if (!Directory.Exists(saveLogoDir)) { Directory.CreateDirectory(saveLogoDir); }
                     //LOGO的后缀还需要处理
                     string saveLogoFile = Path.Combine(saveLogoDir, postVal.ID + ".gif");
                     if (new SiteIO().RemoteDownload(postVal.Logo, saveLogoFile))
                     {
                         postVal.Logo = saveLogoFile.Replace(SiteCfg.Router, SiteCfg.Path).Replace("\\", "/");
                         flwData.UpdateFellow(postVal);
                     }
                 }
             }
         }
         ClearCache();
         old = postVal;
     }
     sr.Append(AdminUI.AdminBoxStart(true));
     sr.Append(HtmlUI.FormStart());
     sr.Append(HtmlUI.TableStart("onCenter"));
     sr.Append(HtmlUI.TrStart());
     sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Name")) + HtmlUI.CreateTd(HtmlUI.Input("name", 20, null, SiteFun.HtmlEncode(old.Name))));
     sr.Append(HtmlUI.TrFinal());
     sr.Append(HtmlUI.TrStart());
     sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("URL")) + HtmlUI.CreateTd(HtmlUI.Input("url", 50, null, SiteFun.HtmlEncode(old.URL))));
     sr.Append(HtmlUI.TrFinal());
     sr.Append(HtmlUI.TrStart());
     sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Logo")) + HtmlUI.CreateTd(HtmlUI.Input("logo", 50, null, SiteFun.HtmlEncode(old.Logo)) + HtmlUI.CheckBoxInput(SiteDat.GetLan("AreYouDown"), "down", 1, false)));
     sr.Append(HtmlUI.TrFinal());
     sr.Append(HtmlUI.TrStart());
     sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Intro")) + HtmlUI.CreateTd(HtmlUI.Input("explain", 50, null, SiteFun.HtmlEncode(old.Explain))));
     sr.Append(HtmlUI.TrFinal());
     sr.Append(HtmlUI.TrStart());
     sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Style")) + HtmlUI.CreateTd(HtmlUI.Input("style", 50, null, SiteFun.HtmlEncode(old.Style))));
     sr.Append(HtmlUI.TrFinal());
     sr.Append(HtmlUI.TrStart());
     sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Sorting")) + HtmlUI.CreateTd(HtmlUI.Input("sorting", 5, null, old.Sorting)));
     sr.Append(HtmlUI.TrFinal());
     sr.Append(HtmlUI.TrStart());
     sr.Append(HtmlUI.CreateTh(SiteDat.GetLan("Virtue")) + HtmlUI.CreateTd(HtmlUI.CheckBoxInput(SiteDat.GetLan("IdxLink"), "home", 1, old.Home) + HtmlUI.CheckBoxInput(SiteDat.GetLan("Show"), "show", 1, old.Show)));
     sr.Append(HtmlUI.TrFinal());
     sr.Append(HtmlUI.TrStart());
     sr.Append(HtmlUI.CreateTh() + HtmlUI.CreateTd(HtmlUI.SubmitButton() + HtmlUI.ResetButton()));
     sr.Append(HtmlUI.TrFinal());
     sr.Append(HtmlUI.TableFinal());
     sr.Append(HtmlUI.FormFinal());
     sr.Append(AdminUI.AdminBoxFinal());
     return sr.ToString();
 }