public override object Do(PanelContext data) { string tag = data.Objects["tag"] as string; List <DataKey> dataKeys = data.State as List <DataKey>; if (!String.IsNullOrEmpty(tag) && dataKeys != null) { foreach (DataKey key in dataKeys) { string id = key["ID"] as string; Article a = ArticleHelper.GetArticle(id, null); if (a != null) { a.Tags += String.Format("'{0}'", tag); if (!String.IsNullOrEmpty(a.ModelXml)) { DataSet ds = BaseDataProvider.CreateDataSet(data.Model); BaseDataProvider.ReadXml(ds, a.ModelXml); if (ds.Tables[data.Table.Name].Rows.Count > 0 && ds.Tables[data.Table.Name].Columns.Contains("Tags")) { ds.Tables[data.Table.Name].Rows[0]["Tags"] = a.Tags; a.ModelXml = BaseDataProvider.GetXml(ds); } } AddTagToSingleTable(data, id, a.Tags); ArticleHelper.UpdateArticle(a, new string[] { "Tags", "ModelXml" }); } } } UIHelper.SendMessage("添加标签成功"); CacheRecord.Create(data.ModelName).Release(); return(false); }
public override object Do(PanelContext data) { try { List <DataKey> dataKeys = data.State as List <DataKey>; if (dataKeys != null) { foreach (DataKey key in dataKeys) { string id = key["ID"] as string; Article a = ArticleHelper.GetArticle(id, null); if (a != null && a.State != 2) { a.State = 0; if (!String.IsNullOrEmpty(a.ModelXml)) { DataSet ds = BaseDataProvider.CreateDataSet(data.Model); BaseDataProvider.ReadXml(ds, a.ModelXml); if (ds.Tables[data.Table.Name].Rows.Count > 0 && ds.Tables[data.Table.Name].Columns.Contains("State")) { ds.Tables[data.Table.Name].Rows[0]["State"] = 0; a.ModelXml = BaseDataProvider.GetXml(ds); } } if (DbHelper.CheckTableExits(data.Table.Name)) { DbHelper.ExecuteSql(String.Format("UPDATE [{0}] SET [State]=0 WHERE [ID]='{1}'", data.Table.Name, id)); } ArticleHelper.UpdateArticle(a, new string[] { "State", "ModelXml" }); } } } UIHelper.SendMessage("取消发布成功"); CacheRecord.Create(data.ModelName).Release(); } catch (Exception ex) { UIHelper.SendError("取消发布失败:" + ex.Message); } return(null); }
/// <summary> /// 更新模型xml /// </summary> /// <returns></returns> public static void UpdataModel(IQueryCondition condition) { string ModelXml = condition.HasModelXml; //数据模型信息 if (!string.IsNullOrEmpty(ModelXml) && condition.OperType == Enum_operType.Update) { List <string> list = new List <string>(condition.Fields); list.Add(ModelXml); if (!list.Contains(condition.PriMaryKeyName)) { list.Add(condition.PriMaryKeyName); //加上主键 } MoldPanel mp = new MoldPanel(); PanelContext data = mp.GetPanelContext(condition.ModelName, "list"); //设置为List类型(暂时写死) Criteria criteria = new Criteria(CriteriaType.None); criteria.Mode = CriteriaMode.Or; foreach (var item in condition.ID.Split(',')) { criteria.AddOr(CriteriaType.Equals, condition.PriMaryKeyName, item); } TableInfo tableinfo = new TableInfo(data.Model.Type.ToString()); var tablelist = getDataBase(tableinfo).IDatabase.GetDtByCondition <TableInfo>(data.Model.Type.ToString(), criteria, list.ToArray()); //获取对应字段,的table信息 DataTable dt = null != tablelist ? tablelist[0].Table : null; condition.OperType = Enum_operType.Update; //设为修改类型 foreach (DataRow item in dt.Rows) { if (item[ModelXml] != DBNull.Value && item != null) { List <FieldsDic> Fileds = new List <FieldsDic>(); // 最终字典 DataSet ds = BaseDataProvider.CreateDataSet(data.Model); //穿件数据集 BaseDataProvider.ReadXml(ds, item[ModelXml].ToString()); var files = condition.ConditionDic; //获取到的字典 if (!files.Exists(delegate(FieldsDic f) { if (string.Compare(f.Key, ModelXml, true) == 0) { return(true); } else { return(false); } })) //添加XML扩展字段 { files.Add(new FieldsDic(ModelXml, string.Empty)); } foreach (var file in files) { if (!file.Key.ToUpper().Equals(condition.PriMaryKeyName) && ds.Tables[data.Table.Name].Columns.Contains(file.Key)) { ds.Tables[data.Table.Name].Rows[0][file.Key] = file.Value; //赋值 if (!Fileds.Exists(delegate(FieldsDic f) { if (string.Compare(f.Key, condition.HasModelXml, true) == 0) { return(true); } else { return(false); } })) { files.Add(new FieldsDic(file.Key, file.Value)); } } } Fileds.Find(delegate(FieldsDic f) { if (string.Compare(f.Key, ModelXml, true) == 0) { f.Value = BaseDataProvider.GetXml(ds); //拿到XML 赋值 return(true); } else { return(false); } }); TableInfo ti = new TableInfo(data.Model.Type.ToString(), item[condition.PriMaryKeyName].ToString(), Fileds); list.Remove(condition.PriMaryKeyName); TryUpData(condition, list, ti, data.Model.Type.ToString(), true); } } QueryCondition.SetMessage(condition, "模型字段:" + condition.HasModelXml, false, "修改", string.Empty, dt.Rows.Count); } }
public override object Do(PanelContext data) { string oid = data.Objects["oid"] as string; if (We7Helper.IsEmptyID(oid)) { throw new Exception("不能移动到根栏目"); } ChannelHelper chHelper = HelperFactory.GetHelper <ChannelHelper>(); Channel channel = chHelper.GetChannel(oid, null); if (channel == null) { throw new Exception("当前栏目不存在"); } if (channel.ModelName != data.ModelName) { throw new Exception("移动到的栏目类型与当前栏目类型不一致"); } if (!string.IsNullOrEmpty(oid)) { List <DataKey> dataKeys = data.State as List <DataKey>; foreach (DataKey key in dataKeys) { string id = key["ID"] as string; Article a = ArticleHelper.GetArticle(id); if (a != null) { DataSet ds = BaseDataProvider.CreateDataSet(data.Model); BaseDataProvider.ReadXml(ds, a.ModelXml); if (ds.Tables[data.Table.Name].Rows.Count > 0) { DataRow row = ds.Tables[data.Table.Name].Rows[0]; a.OwnerID = oid; if (row.Table.Columns.Contains("OwnerID")) { row["OwnerID"] = oid; } Channel ch = ChannelHelper.GetChannel(oid, null); if (ch != null) { a.ChannelFullUrl = ch.FullUrl; if (row.Table.Columns.Contains("ChannelFullUrl")) { row["ChannelFullUrl"] = a.ChannelFullUrl; } a.ChannelName = ch.FullPath; if (row.Table.Columns.Contains("ChannelName")) { row["ChannelName"] = a.ChannelName; } a.FullChannelPath = ch.FullFolderPath; if (row.Table.Columns.Contains("FullChannelPath")) { row["FullChannelPath"] = a.FullChannelPath; } } a.ModelXml = BaseDataProvider.GetXml(ds); } } if (DbHelper.CheckTableExits(data.Table.Name)) { DbHelper.ExecuteSql(String.Format("UPDATE [{0}] SET [OwnerID]='{2}' WHERE [ID]='{1}'", data.Table.Name, id, oid)); } ArticleHelper.UpdateArticle(a, new string[] { "ID", "OwnerID", "ChannelFullUrl", "ChannelName", "FullChannelPath", "ModelXml" }); // 往全文检索里更新数据 ArticleIndexHelper.InsertData(id, 1); } } UIHelper.SendMessage("移动成功"); CacheRecord.Create(data.ModelName).Release(); return(null); }
protected void bttnUpgrade_Click(object sender, EventArgs e) { int total = 0, success = 0, error = 0, jump = 0, empty = 0; List <Article> list = ArticleHelper.GetAllArticle(); foreach (Article a in list) { try { if (!String.IsNullOrEmpty(a.ModelName)) { total++; if (a.ModelName.Contains("Course.")) { jump++; Log("****************************跳过一条记录*****************************"); continue; } if (String.IsNullOrEmpty(a.ModelXml)) { empty++; ArticleHelper.DeleteArticle(a.ID); Log("+++++++++++++++++++++++++++删除一条空记录+++++++++++++++++++++"); continue; } List <string> fields = new List <string>(); ModelInfo model = ModelHelper.GetModelInfo("Course." + a.ModelName); DataSet ds = BaseDataProvider.CreateDataSet(model); a.ModelName = model.ModelName; a.TableName = model.DataSet.Tables[0].Name; a.ModelConfig = File.ReadAllText(ModelHelper.GetModelPath(a.ModelName)); StringBuilder sb = new StringBuilder(); StringWriter writer = new StringWriter(sb); ds.WriteXmlSchema(writer); a.ModelSchema = sb.ToString(); fields.AddRange(new string[] { "ModelName", "TableName", "ModelConfig", "ModelSchema", "ModelXml" }); XmlDocument doc = new XmlDocument(); doc.LoadXml(a.ModelXml); DataRow row = ds.Tables[0].NewRow(); ds.Tables[0].Rows.Add(row); foreach (We7DataColumn dc in model.DataSet.Tables[0].Columns) { if (dc.Direction == ParameterDirection.ReturnValue) { continue; } List <string> exclude = new List <string>() { "OwnerID", "State", "IsShow", "Source", "ContentType" }; if (exclude.Contains(dc.Mapping)) { continue; } if (dc.Mapping == "ID") { row[dc.Name] = a.ID; continue; } XmlElement xe = doc.SelectSingleNode("//" + dc.Name) as XmlElement; if (xe != null) { object value = TypeConverter.StrToObjectByTypeCode(xe.InnerText.Trim(), dc.DataType); if (dc.Direction == ParameterDirection.Output || dc.Direction == ParameterDirection.InputOutput) { string mapping = String.IsNullOrEmpty(dc.Mapping) ? dc.Name : dc.Mapping; PropertyInfo pro = a.GetType().GetProperty(mapping); if (pro != null) { fields.Add(mapping); pro.SetValue(a, value, null); } } if (dc.Direction == ParameterDirection.InputOutput || dc.Direction == ParameterDirection.Input) { row[dc.Name] = value; } } } StringBuilder sb2 = new StringBuilder(); StringWriter reader2 = new StringWriter(sb2); ds.WriteXml(reader2); a.ModelXml = sb2.ToString(); ArticleHelper.UpdateArticle(a, fields.ToArray()); success++; Log("#################################更新成功#################################"); } } catch (Exception ex) { Log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!更新失败!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); Log(ex.Source); Log(ex.Message); Log(ex.StackTrace); error++; } } Log("###################################---------当前操作共" + total + "条记录,成功" + success + "条,失败" + error + "条,跳过" + jump + "条,空记录" + empty + "条------------############################"); //IDatabase db = ArticleHelper.Assistant.GetDatabases()["We7.CMS.Common"]; //SqlStatement sqlstatement = new SqlStatement(); //sqlstatement.SqlClause = "SELECT * FROME [Article]"; //sqlstatement.CommandType = CommandType.Text; //db.DbDriver.FormatSQL(sqlstatement); //DataTable dt = new DataTable(); //using (IConnection conn = db.CreateConnection()) //{ // dt = conn.Query(sqlstatement); //} //foreach (DataRow row in dt.Rows) //{ // string modelName=row["ModelName"] as string; // if (!String.IsNullOrEmpty(modelName)) // { // ModelInfo model=ModelHelper.GetModelInfo("Course." + modelName); // ArticleHelper.UpdateArticle(null,null); // } //} }
public override object Do(PanelContext data) { string oid = data.Objects["oid"] as string; if (We7Helper.IsEmptyID(oid)) { throw new Exception("不能添加到根栏目"); } if (!string.IsNullOrEmpty(oid)) { Channel targetChannel = HelperFactory.GetHelper <ChannelHelper>().GetChannel(oid, null); //if (targetChannel != null && !String.IsNullOrEmpty(targetChannel.ModelName)) if (targetChannel != null) { //ModelInfo modelInfo = ModelHelper.GetModelInfo(targetChannel.ModelName); //We7DataTable dt = modelInfo.DataSet.Tables[0]; List <DataKey> dataKeys = data.State as List <DataKey>; foreach (DataKey key in dataKeys) { string id = key["ID"] as string; //SingleTableLinkTo(data, dt, id); Article a = ArticleHelper.GetArticle(id); if (a != null) { DataSet ds = BaseDataProvider.CreateDataSet(data.Model); DataRow row = ds.Tables[data.Table.Name].NewRow(); ds.Tables[data.Table.Name].Rows.Add(row); a.OwnerID = oid; if (row.Table.Columns.Contains("OwnerID")) { row["OwnerID"] = oid; } if (row.Table.Columns.Contains("Title")) { row["Title"] = a.Title; } if (row.Table.Columns.Contains("Description")) { row["Description"] = a.Description; } a.ContentType = (int)TypeOfArticle.LinkArticle; if (row.Table.Columns.Contains("ContentType")) { row["ContentType"] = a.ContentType; } a.ContentUrl = GetContentUrl(a); if (row.Table.Columns.Contains("ContentUrl")) { row["ContentUrl"] = a.ContentUrl; } a.Content = ""; if (row.Table.Columns.Contains("Content")) { row["Content"] = ""; } a.SourceID = a.ID; if (row.Table.Columns.Contains("SourceID")) { row["SourceID"] = a.ID; } a.Updated = DateTime.Now; if (row.Table.Columns.Contains("Updated")) { row["Updated"] = a.Updated; } a.Created = DateTime.Now; if (row.Table.Columns.Contains("Created")) { row["Created"] = a.Created; } a.Overdue = DateTime.Now.AddYears(2); if (row.Table.Columns.Contains("Overdue")) { row["Overdue"] = a.Overdue; } Channel ch = ChannelHelper.GetChannel(oid, null); if (ch != null) { a.ChannelFullUrl = ch.FullUrl; if (row.Table.Columns.Contains("ChannelFullUrl")) { row["ChannelFullUrl"] = a.ChannelFullUrl; } a.ChannelName = ch.FullPath; if (row.Table.Columns.Contains("ChannelName")) { row["ChannelName"] = a.ChannelName; } a.FullChannelPath = ch.FullFolderPath; if (row.Table.Columns.Contains("FullChannelPath")) { row["FullChannelPath"] = a.FullChannelPath; } a.State = ch.Process != null && ch.Process == "1" ? 2 : a.State; if (row.Table.Columns.Contains("State")) { row["State"] = a.State; } } a.ID = We7Helper.CreateNewID(); if (row.Table.Columns.Contains("ID")) { row["ID"] = a.ID; } a.ModelXml = BaseDataProvider.GetXml(ds); ArticleHelper.AddArticle(a); // 往全文检索里更新数据 ArticleIndexHelper.InsertData(a.ID, 0); } } } } return(null); }