예제 #1
0
        /// <summary>
        /// 获取编辑区内容,根据不同类型来做处理,然后交给子类再加工
        /// </summary>
        /// <returns>编辑区html</returns>
        private string GetModuleEditBox()
        {
            switch (_module.ModuleType)
            {
            case ModuleType.Remote:                     //do nothing
                return("");

            case ModuleType.Rss:
                return(GetRssEditBox());

            case ModuleType.Error:                     //do nothing
                return("");
            }
            return(ModuleXmlHelper.GetUserPrefsTable(_userPrefCollection, new UserPrefsSaved(_module.UserPref)));
        }
예제 #2
0
        /// <summary>
        /// 获得模块提交数据
        /// </summary>
        /// <param name="httpContext">当前httpContext对象</param>
        /// <returns>返回重新加载的内容(保留功能,下个版本改进)</returns>
        public virtual string GetModulePost(HttpContext httpContext)
        {
            string upPrefix = "m_" + Module.ModuleID + "_up_";
            string valKey   = "m_" + Module.ModuleID + "_val";
            string val      = "";

            Hashtable ht = new Hashtable();

            foreach (DictionaryEntry de in ModuleXmlHelper.LoadUserPrefsSaved(_module.UserPref))
            {
                ht[de.Key] = de.Value;
            }

            NameValueCollection nvc = httpContext.Request.QueryString;

            foreach (string s in nvc.Keys)
            {
                //需要重构,只有当跟默认值不同并且存在当前s的键才可以插入。
                if (s.StartsWith(upPrefix))
                {
                    ht[s.Replace(upPrefix, string.Empty)] = Utils.RemoveHtml(nvc[s].Replace("\"", "&quot;"));
                }

                if (s == valKey)
                {
                    val = nvc[s];
                }
            }
            _module.UserPref = ModuleXmlHelper.GetXmlFromHashTable(ht);
            if (Utils.IsNumeric(val))
            {
                _module.Val = Utils.StrToInt(val, 3);
            }

            Spaces.UpdateModule(_module);
            return("");
        }
예제 #3
0
        private void BindGridData()
        {
            DataTable dt = new DataTable();

            dt.Columns.Add("moduledefname");
            dt.Columns.Add("moduledefcatelog");
            dt.Columns.Add("moduledeftype");
            dt.Columns.Add("hadindb");
            dt.Columns.Add("url");
            dt.Columns.Add("modulestatus");
            dt.Columns.Add("moduledefop");
            DNTCache.GetCacheService().RemoveObject("/Space/ModuleDefList");
            XmlDocument xml = new XmlDocument();

            try
            {
                xml.Load(listfilename);
            }
            catch
            {
                base.RegisterStartupScript("", "<script>alert('缺少对列表文件的访问权限或者列表文件不存在');window.location.href='space_moduledefmanage.aspx';</script>");
                return;
            }

            XmlNodeList xnl = xml.GetElementsByTagName("Gadget");

            //枚举xml文件列表
            string[] files = Directory.GetFiles(moduledefpath, "*.xml");
            foreach (string file in files)
            {
                DataRow dr        = dt.NewRow();
                string  moduleurl = Path.GetFileName(file);
                XmlNode node      = HadInList(moduleurl, xnl);
                dr["url"] = moduleurl;
                //<a href="space_editmoduledef.aspx?url=<%#DataBinder.Eval(Container, "DataItem.url")%>">编辑</a>
                //				<a runat="server" id="enablemoduledef" href="###" onclick="document.getElementById('url<%#DataBinder.Eval(Container, "DataItem.url").ToString()%>').checked=true;submitDeleteApply();">置为无效</a>

                if (node != null)
                { //已经在列表使用中的模块
                    dr["moduledefop"] = string.Format("<a href=\"space_editmoduledef.aspx?url={0}\">编辑</a>&nbsp;<a href=\"#\" onclick=\"document.getElementById('url{0}').checked=true;submitDeleteApply();\">置为无效</a>", moduleurl);
                    if (moduleurl.StartsWith("builtin_"))
                    { //内置模块
                        ModuleDefInfo mdi = SpaceProvider.GetModuleDefInfoByUrl(moduleurl);
                        try
                        {
                            Activator.CreateInstance(Type.GetType(mdi.BussinessController, false, true));
                            dr["modulestatus"] = "<img title='模块可以正常工作' alt='模块可以正常工作' src='../images/state2.gif' />";
                        }
                        catch
                        { //本模块逻辑控制反射失败
                            dr["modulestatus"] = "<img title='模块当前无法正常工作' alt='模块当前无法正常工作' src='../images/state1.gif' />";
                            dr["moduledefop"]  = string.Format("<a href=\"?mod=refresh&url={0}\">刷新</a>&nbsp;<a href=\"#\" onclick=\"document.getElementById('url{0}').checked=true;submitDeleteApply();\">置为无效</a>", moduleurl);
                        }
                        dr["moduledeftype"] = "内置模块";
                    }
                    else
                    { //外置模块
                        dr["modulestatus"]  = "<img title='模块可以正常工作' alt='模块可以正常工作' src='../images/state2.gif' />";
                        dr["moduledeftype"] = "外置模块";
                    }

                    dr["moduledefname"]    = string.Format("{0}({1})", node.Attributes["name"].Value, node.Attributes["url"].Value);
                    dr["moduledefcatelog"] = node.ParentNode.Attributes["name"].Value;

                    dt.Rows.Add(dr);
                }
                else
                { //未被使用的模块
                    dr["modulestatus"] = "<img title='尚未启用的模块' alt='尚未启用的模块' src='../images/state3.gif' />";
                    ModulePref mp = ModuleXmlHelper.LoadModulePref(file);
                    if (moduleurl.StartsWith("builtin_"))
                    {
                        dr["moduledeftype"] = "内置模块";
                    }
                    else
                    {
                        dr["moduledeftype"] = "外置模块";
                    }
                    if (mp != null)
                    {
                        dr["moduledefname"]    = string.Format("{0}({1})", mp.Title.StartsWith("_") ? moduleurl : mp.Title, moduleurl);
                        dr["moduledefcatelog"] = mp.Category == string.Empty ? "其他" : mp.Category;
                        dr["moduledefop"]      = string.Format("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a runat=\"server\" href=\"###\" onclick=\"document.getElementById('url{0}').checked=true;submitAddApply();\">置为有效</a>", moduleurl);
                        dt.Rows.Add(dr);
                    }
                }
            }

            this.DataGrid1.TableHeaderName   = "现有模块";
            this.DataGrid1.AllowPaging       = false;
            this.DataGrid1.AllowCustomPaging = false;
            this.DataGrid1.DataKeyField      = "url";
            this.DataGrid1.DataSource        = dt;
            this.DataGrid1.DataBind();
        }
예제 #4
0
        protected void AddApply_Click(object sender, EventArgs e)
        {
            if (this.CheckCookie())
            {
                string[]    urllist       = DNTRequest.GetString("url").Split(',');
                bool        hasemptyvalue = false;
                XmlDocument xml           = new XmlDocument();
                try
                {
                    xml.Load(listfilename);
                }
                catch
                {
                    base.RegisterStartupScript("", "<script>alert('缺少对列表文件的访问权限或者列表文件不存在');window.location.href='space_moduledefmanage.aspx';</script>");
                    return;
                }
                XmlNodeList xnlGadgets = xml.GetElementsByTagName("Gadget");
                BindGridData();
                foreach (string url in urllist)
                {
                    foreach (DataGridItem dgi in DataGrid1.Items)
                    {
                        if (dgi.ItemType == ListItemType.AlternatingItem || dgi.ItemType == ListItemType.Item)
                        {
                            if (url != DataGrid1.DataKeys[dgi.ItemIndex].ToString() || HadInList(url, xnlGadgets) != null)
                            {
                                continue;
                            }

                            string category   = DataGrid1.Items[dgi.ItemIndex].Cells[3].Text;
                            string modulename = DataGrid1.Items[dgi.ItemIndex].Cells[2].Text.Substring(0, DataGrid1.Items[dgi.ItemIndex].Cells[2].Text.LastIndexOf("("));; //DataGrid1.GetControlValue(dgi.ItemIndex, "moduledefname");

                            if (category == string.Empty || modulename == string.Empty)
                            {
                                hasemptyvalue = true;
                                continue;
                            }

                            //分类节点如果不存在则创建
                            XmlNodeList xnl          = xml.GetElementsByTagName("Category");
                            XmlNode     categorynode = GetCategoryNode(category, xnl);

                            if (categorynode == null)
                            {
                                categorynode = xml.CreateNode(XmlNodeType.Element, "Category", "");
                                XmlAttribute xa = xml.CreateAttribute("name");
                                xa.Value = category;
                                categorynode.Attributes.Append(xa);
                                xml.DocumentElement.AppendChild(categorynode);
                            }
                            //添加至列表文件
                            XmlNode      node   = xml.CreateNode(XmlNodeType.Element, "Gadget", "");
                            XmlAttribute xanode = xml.CreateAttribute("name");
                            xanode.Value = modulename;
                            node.Attributes.Append(xanode);
                            xanode       = xml.CreateAttribute("url");
                            xanode.Value = url;
                            node.Attributes.Append(xanode);

                            categorynode.AppendChild(node);
                            try
                            {
                                xml.Save(listfilename);
                            }
                            catch
                            {
                                base.RegisterStartupScript("", "<script>alert('缺少对列表文件的访问权限或者列表文件不存在');window.location.href='space_moduledefmanage.aspx';</script>");
                                return;
                            }
                            if (url.StartsWith("builtin_"))
                            { //内置模块添加至数据库
                                ModulePref mp = ModuleXmlHelper.LoadModulePref(Utils.GetMapPath(BaseConfigs.GetForumPath + "space/modules/" + url));
                                if (mp != null)
                                {
                                    ModuleDefInfo mdi = new ModuleDefInfo();
                                    mdi.ModuleName          = modulename;
                                    mdi.CacheTime           = 0;
                                    mdi.BussinessController = mp.Controller;
                                    mdi.ConfigFile          = url;
                                    SpaceProvider.AddModuleDefInfo(mdi);
                                }
                            }
                        }
                    }
                }
                if (hasemptyvalue)
                {
                    base.RegisterStartupScript("", "<script>alert('模块名称或分类名称为空的模块未被添加');window.location.href='space_moduledefmanage.aspx';</script>");
                }

                base.RegisterStartupScript("", "<script>window.location.href='space_moduledefmanage.aspx';</script>");
                BindGridData();
            }
        }