Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        /// <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);
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
            //    }
            //}
        }
Exemplo n.º 6
0
        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);
        }