//运行程序的js,主要功能设计编制好的代码进行运行。 Namespace.register("U.CD.R"); //注册运行js //U.CD.U.CUser.CTab 保存了上一次的Tab栏数据 //根据文件id装载文件,Tab窗口等。右键菜单单击文件时用到。文件id作为树节点id,需要修改为加UCD_RT前缀,表示此项目右键菜单。 U.CD.R.LoadFC = function (node) { //如果是图片类型,则直接显示图片 if (U.UP.IsImg(node.Name)) { var _f = US.fs + node.Content.split("|")[1], _e = US.fs + node.Content.split("|")[0]; //拆分出缩略图和原图。 var _if = $("#UCD_CT_SM_IF")[0].contentWindow.document.body; //U.Img.Create([{ 'Thm': _e, 'Img': _f }]); var _img = $$("img", { "src": _f, "onerror": [U.MD.C.imgError, (["this", 2])] }); _if.innerHTML = ""; _if.appendChild(_img); $$("div", { "onselectstart": function () { return true; }, "innerHTML": "图片路径:" + _f + "
缩略图路径:" + _e }, _if); return; } //如果node.Conteng!="" 或者node.Content只有1行,或者node.Contet.split("!")是2个。则表明是上传的文件,弹出提示,非图片文件不能展示,请持续关注后续版本。 if (node.Content.split("|").length == 2 && node.Content.replace(/\r\n/g, '\n').split('\n').length == 1) { alert("未知文件类型,非图片文件不能展示,请持续关注后续版本"); return; } if (!U.CD.ExistTab(node)) { U.CD.R.CreateTab(node); } //如果不存在Tab栏中,则创建上部Tab栏。 // U.CD.Url.Param(["#!", node.ID + "|" + (node.UserId || US.userInfo.UserId)]); // document.location.hash = "#!/" + encodeURI(node.ID + "|" + (node.UserId || US.userInfo.UserId)); document.location.hash = "#!/" + node.ID; //给评论按钮赋值 $("#UCD_CT_IF_PL")[0].onclick = function () { U.CD.OU.Reply(node.ID); } } //------------------------------------------------------------------------------上部TAb切换区域------------------------------------------------------------- //关闭一个编程窗口? U.CD.CloseEdit = function (UFUL, UFLI, UTREE) { var _l = UFUL.getElementsByTagName("div"); //如果移除的是当前节点的值,把第一个节点置为当前节点,并且刷新数据,如果移除的节点是第一个,并且是当前节点,则把第二个节点置为第一个。,如果全部移除完毕,则清空数据? if (UFLI == U.CD.U.CUser.CTab) { //如果只有1个节点,则把Tab置空,把内容置空,写得比较累赘,一会再修改。 if (_l.length == 1) { U.CD.R.ClearTab(); $("#UCD_CT_IF_PL")[0].onclick = function () { U.CD.OU.Reply(U.CD.RPID); } //给评论按钮赋值 return; } if (UFLI === _l[0]) { if (_l[2]) { U.CD.ExistTab(_l[2].Data); _l[2].Data.className += " ON"; UFUL.removeChild(UFLI); return; } else { alert("至少要有一个页面"); // U.CD.CD.Init(); return; } } UFLI.previousSibling.className += " ON"; U.CD.U.CUser.CTab = UFLI.previousSibling; U.CD.R.FlushCodePage(UFLI.previousSibling.Data); UFUL.removeChild(UFLI); //如果移除的节点是第一个,则把第二个节点置为第一个。否则,把第一个节点置为当前节点。 // if (ufli == _l[0]) { u.cd.existtab(_l[1].data); } // else { u.cd.existtab(_l[0].data); } }; UFUL.removeChild(UFLI); //在ul中移除该节点。 } //清空Tab切换栏。会多处调用,独立为一个函数 U.CD.R.ClearTab = function () { if (U.CD.U.CUser) U.CD.U.CUser.CTab = null; //$("#UCD_CT_Code_CT")[0].innerHTML = ""; $("#UCD_CT_HH_CT")[0].innerHTML = ""; U.CD.CD.Init(); //U.CD.CD.ExecIF($("#UCD_CT_Code_CT")[0]); // $("#UCD_CT_Top_Tab")[0].getElementsByTagName("ul")[0].innerHTML = ""; $("#UCD_CT_Top_Tab_Ul")[0].innerHTML = "" } //判断是否已经存在一个Tab标签,如果存在,则直接切换。?切换上部选项卡时没有保存以前选项卡的内容。 U.CD.ExistTab = function (node) { var _value = false; //初始值,用于判断是否存在该选项卡。存在选项卡,置为true var _tab = $("#UCD_CT_Top_Tab")[0]; // 后面可能需要修改这个tab 这里,因为这是全体公用的. -TODO:4.10 var _l = _tab.getElementsByTagName("div"); for (var i = 0; i < _l.length; i++) { //如果找到,返回li节点,数据保存在li节点中的Data属性中。,晕了,一直以名字来匹配,改用id if (_l[i].id == "Tab" + node.ID) { //_l[i].style.border = "2px solid green"; _value = true; //改变选择Tab的样式。 _l[i].classList.add("ON"); _value = true; //改变选择Tab的样式。 //切换Tab时,需要保存上一个Tab的结果,和冒泡排序交换值差不多。 // if (U.CD.U.CUser.CTab) { _l["Tab" + U.CD.U.CUser.CTab.Data.ID].Data.Content = $("#UCD_CT_Code_CT")[0].innerHTML; //保存上一次在代码窗口编辑的值到上一个Tab中。 // } U.CD.R.FlushCodePage(_l[i].Data); //给代码窗口赋予值。 U.CD.U.CUser.CTab = _l[i]; //把切换到的li设置为当前。 } else { _l[i].classList.remove("ON"); } if (_l.length === 4) { for (var xxx in _l) {//不会做啊。。。 if (xxx.indexOf("Tab") == 0) {//开头遇见 break; } } _l[xxx].Data.Content = $("#UCD_CT_Code_CT")[0].innerHTML; //_l["Tab" + U.CD.U.CUser.CTab.Data.ID].Data.Content = $("#UCD_CT_Code_CT")[0].innerHTML; } } return _value; // var _value = false; //初始值,用于判断是否存在该选项卡。存在选项卡,置为true。 // var _ul = $("#UCD_CT_Top_Tab")[0].getElementsByTagName("ul")[0]; //获取选项卡ul标签。 // var _l = _ul.getElementsByTagName("li"); //获取ul下面所有li标签。 // for (var i = 0; i < _l.length; i++) { // //如果找到,返回li节点,数据保存在li节点中的Data属性中。,晕了,一直以名字来匹配,改用id // if (_l[i].id == "Tab" + node.ID) { // //_l[i].style.border = "2px solid green"; _value = true; //改变选择Tab的样式。 // _l[i].style.backgroundColor = "white"; _value = true; //改变选择Tab的样式。 // //切换Tab时,需要保存上一个Tab的结果,和冒泡排序交换值差不多。 // if (U.CD.U.CUser.CTab) _l["Tab" + U.CD.U.CUser.CTab.Data.ID].Data.Content = U.CD.Editor.getValue(); //保存上一次在代码窗口编辑的值到上一个Tab中。 // /* ::迭代 // if (U.CD.U.CUser.CTab) _l["Tab" + U.CD.U.CUser.CTab.Data.ID].Data.Content = U.CD.Editor.getValue(); //保存上一次在代码窗口编辑的值到上一个Tab中。 // */ // U.CD.R.FlushCodePage(_l[i].Data); //给代码窗口赋予值。 // U.CD.U.CUser.CTab = _l[i]; //把切换到的li设置为当前。 // } // else { _l[i].style.backgroundColor = "#ccc"; } // } // return _value; } //创建代码区域的Tab栏切换效果。 U.CD.R.CreateTab = function (node) { var _UFUL = $("#UCD_CT_Top_Tab_Ul")[0]; //如果切换选项卡超过了7条数据,则删除第一条。这逻辑不对,应该是隐藏前面的,并做一个按钮能够浏览所有的。 //U.CD.R.MoreTab(_ul); //超过7个节点的处理, ////向后面追加新的Tab栏。 //var _UFUL = $("#UCD_CT_Top_Tab")[0].getElementsByTagName("ul")[0]; //获取Tab栏 ////向Tab栏追加一个标签。 if ($("#UCD_Tree" + node.ID)[0]) { U.CD.RT.VM($("#UCD_Tree" + node.ID)[0], US.userInfo["OnUserId"], node); //改变单击的样式 } // U.CD.RT.VM($("#UCD_Tree" + US.userInfo["OnUserId"])[0], US.userInfo["OnUserId"], node); //改变单击的样式 if (U.CD.ExistTab(node)) { return; } var _UFLI = $$("div", { "class": "UCD_CT_Tips_T UCD_Bar ON", "id": "Tab" + node.ID, "onclick": [U.CD.R.LoadFC, ([node])] }, _UFUL); $$('span', { className: 'UCD_Bar_Text', innerHTML: node.Name }, _UFLI); //$$("span", { "innerHTML": "x", "onclick": [[U.UF.EV.stopBubble], [U.CD.CloseEdit, ([_UFUL, _UFLI, node])]] }, _UFLI); node.Content = unescape(node.Content); //解码 _UFLI.Data = node; //保存数据到新属性中。 U.CD.U.CUser.CTab = _UFLI; //把新创建的Tab加入当前。 setTimeout(function () { U.CD.R.FlushCodePage(node); //刷新代码和视图页面。 }); ////$$("a", { "className": "UCD_RT_TreeIcon UCD_CT_Top_Tab_Close", "title": "close", "onmouseover": [[alert, (["123"])]], "onclick": [[U.UF.EV.stopBubble], [U.CD.CloseEdit, ([_UFUL, _UFLI, node])]] }, _UFLI); $$("div", { "className": "UCD_CT_Top_Tab_Close", "innerHTML": "×", "onclick": [[U.UF.EV.stopBubble], [U.CD.CloseEdit, ([_UFUL, _UFLI, node])]] }, _UFLI); ////给当前正在使用的Tab赋内容。以保存每个代码视图。代码不多,但毕竟难懂。 //if (U.CD.U.CUser.CTab) _ul.getElementsByTagName("li")["Tab" + U.CD.U.CUser.CTab.Data.ID].Data.Content = $("#UCD_CT_Code_CT")[0].innerHTML; //保存代码区域代码到。 //最好能做到Tab和Code和视图关联。暂时不做这个 // //如果切换选项卡超过了7条数据,则删除第一条。这逻辑不对,应该是隐藏前面的,并做一个按钮能够浏览所有的。 // var _ul = $("#UCD_CT_Top_Tab")[0].getElementsByTagName("ul")[0]; // U.CD.R.MoreTab(_ul); //超过7个节点的处理, // //向后面追加新的Tab栏。 // var _UFUL = $("#UCD_CT_Top_Tab")[0].getElementsByTagName("ul")[0]; //获取Tab栏 // //向Tab栏追加一个标签。 // var _UFLI = $$("li", { "style": { "background-color": "white" }, "id": "Tab" + node.ID }, _UFUL); // $$("span", { "innerHTML": node.Name, "title": node.Name, "onclick": [U.CD.R.LoadFC, ([node])] }, _UFLI); // //$$("a", { "className": "UCD_RT_TreeIcon UCD_CT_Top_Tab_Close", "title": "close", "onmouseover": [[alert, (["123"])]], "onclick": [[U.UF.EV.stopBubble], [U.CD.CloseEdit, ([_UFUL, _UFLI, node])]] }, _UFLI); // var _UFIMGX = $$("div", { "className": "UCD_CT_Top_Tab_Close", "onclick": [[U.UF.EV.stopBubble], [U.CD.CloseEdit, ([_UFUL, _UFLI, node])]] }, _UFLI); // $$("img", { "src": "images/u_X.png" }, _UFIMGX); // //给当前正在使用的Tab赋内容。以保存每个代码视图。代码不多,但毕竟难懂。 // if (U.CD.U.CUser.CTab) _ul.getElementsByTagName("li")["Tab" + U.CD.U.CUser.CTab.Data.ID].Data.Content = U.CD.Editor.getValue(); //保存代码区域代码到。 // //node.Content = unescape(node.Content); //解码 // _UFLI.Data = node; //保存数据到新属性中。 // U.CD.U.CUser.CTab = _UFLI; //把新创建的Tab加入当前。 // U.CD.R.FlushCodePage(_UFLI.Data); //刷新代码和视图页面。 // //最好能做到Tab和Code和视图关联。暂时不做这个 } //超过7个节点单独一个函数,以后可能还会完善。 U.CD.R.MoreTab = function (_ul) { var n = Math.floor($("#UCD_CT")[0].clientWidth / 160); //根据用户的屏幕分辨率设置最大打开文件数量,li的宽度为140px if (_ul.getElementsByTagName("li").length >= n) { //当窗口数量大于7时,此时需要移除最前面的节点,如果最前面的节点刚好是当前节点,则把当前节点置为第二个。 var _c = _ul.getElementsByTagName("li")[0]; if (_c == U.CD.U.CUser.CTab) { U.CD.U.CUser.CTab = _ul.getElementsByTagName("li")[1]; } _ul.removeChild(_c); } } //点击右边用户树目录时,创建代码页面。 U.CD.R.FlushCodePage = function (node) { //如果代码窗口值为""。则赋予RS.htm文件内容,以免报错。 if (node.Content == "") U.CD.CD.Init(node); //调用根据结果窗口刷新代码区域函数,获得初始值。有问题,不是初始化,一会再改。 else { U.CD.CD.DisNode(node); U.CD.CD.ExecIF($('#UCD_CT_Code_CT')[0]); } //给代码窗口赋值,只能通过给代码窗口赋值,然后获取代码窗口innerText,才能最简单的得到给iframe打印的值,否则会带html标签到iframe。 } U.CD.R.Save = function (node) { $("#UCD_TOP_L_BC")[0].onclick = function () { var _c = U.CD.U.IsUSelf(); //获取用户登录Cookie. _c.userid _c.username _c.Loginid if (!_c) { U.CD.U.LoginApply(); return; } //如果未登录,弹出登录窗口。 //如果没有传递节点名字,需要引导用户创建项目。创建文件 if (!node) { //如果树节点中有项目,则建立在当前选中项目下面(这样太复杂),建立在第一个项目下面,如果没有项目,则提示用户将新建项目,并新建一个文件。这样太复杂了。 var _p = U.CD.U.CUser.TNode[0].TNode, _current = null, _nr; _current = U.CD.U.CUser.CurrentNode//当前项目节点 //for (var i = 0; i < _p.length; i++) { if (!_p[i].IsDelete) { _current = _p[i]; break; } } //找到第一个项目 if (_current) { //此处还需要进一步修正,能够不用innerHTML最好。 _nr = "
该文件已经自动选取了项目!
"; _nr += "
确认将建立新的index.htm文件在'" + _current.Name + "'项目中.
"; _nr += "
取消不做任何操作.建议在项目面板中新建文件。
"; U.UF.UI.Confirm(_nr, [U.CD.R.SaveNewFile, ([_current, _c])], ""); } else { U.UF.UI.Confirm("
您还未创建过项目!
确认将建立一个名为Test的项目,取消不做任何操作
", [U.CD.R.SaveNewFolder, ([_c])], ""); } return; } //mongodb保存不了html标记,先编码。取出后解码。。由于情况比较特殊,输入内容有回车换行,这些html会自动转换,但又生成了很多div作为换行。所以是矛盾的,只能编码,解码 /* ::迭代 var _innertext = escape($("#UCD_CT_Code_CT")[0].innerHTML); //获取代码区域内容,如果获取innerText,会取消掉回车换行符合? //*/ //alert(US.userInfo.UserId); // var _innertext = U.CD.Editor.getValue(); var _innertext = escape($("#UCD_CT_Code_CT")[0].innerHTML); //获取代码区域内容,如果获取innerText,会取消掉回车换行符合? U.ACD.Request(U.CD.AjaxUrl, (["Update_FileContent", _c.userid, node.Deep, node.ID, _innertext]), U.CD.R.SaveAsyn, (["", node])); //保存代码。userid从cookie取 } } ////------------------------------------------------------保存功能,由于会打开多个文件,所以onclick的值会不停变化。--------------------------------------------------- //U.CD.R.Save = function (node) { // $("#UCD_TOP_L_BC")[0].onclick = function () { // var _c = U.CD.U.IsUSelf(); //获取用户登录Cookie. _c.userid _c.username _c.Loginid // if (!_c) { U.CD.U.LoginApply(); return; } //如果未登录,弹出登录窗口。 // //如果没有传递节点名字,需要引导用户创建项目。创建文件 // if (!node) { // //如果树节点中有项目,则建立在当前选中项目下面(这样太复杂),建立在第一个项目下面,如果没有项目,则提示用户将新建项目,并新建一个文件。这样太复杂了。 // var _p = U.CD.U.CUser.TNode[0].TNode, _current = null, _nr; // _current = U.CD.U.CUser.CurrentNode//当前项目节点 // //for (var i = 0; i < _p.length; i++) { if (!_p[i].IsDelete) { _current = _p[i]; break; } } //找到第一个项目 // if (_current) { // //此处还需要进一步修正,能够不用innerHTML最好。 // _nr = "
该文件已经自动选取了项目!
"; // _nr += "
确认将建立新的index.htm文件在'" + _current.Name + "'项目中.
"; // _nr += "
取消不做任何操作.建议在项目面板中新建文件。
"; // U.CD.O.Alert("新建文件", _nr, [U.CD.R.SaveNewFile, ([_current, _c])]); // } // else { // U.CD.O.Alert("新建项目", "
您还未创建过项目!
确认将建立一个名为Test的项目,取消不做任何操作
", [U.CD.R.SaveNewFolder, ([_c])], ""); // } // return; // } // //mongodb保存不了html标记,先编码。取出后解码。。由于情况比较特殊,输入内容有回车换行,这些html会自动转换,但又生成了很多div作为换行。所以是矛盾的,只能编码,解码 // var _innertext = escape($("#UCD_CT_Code_CT")[0].innerHTML); //获取代码区域内容,如果获取innerText,会取消掉回车换行符合? // //alert(US.userInfo.UserId); // U.A.Request(U.CD.AjaxUrl, (["Update_FileContent", _c.userid, node.Deep, node.ID, _innertext]), U.CD.R.SaveAsyn, (["", node])); //保存代码。userid从cookie取 // //loading 后面改 // alert("保存成功"); // } // // $("#UCD_TOP_L_BC")[0].onclick = function () { // // var _c = U.CD.U.IsUSelf(); //获取用户登录Cookie. _c.userid _c.username _c.Loginid // // if (!_c) { U.CD.U.LoginApply(); return; } //如果未登录,弹出登录窗口。 // // //如果没有传递节点名字,需要引导用户创建项目。创建文件 // // if (!node) { // // //如果树节点中有项目,则建立在当前选中项目下面(这样太复杂),建立在第一个项目下面,如果没有项目,则提示用户将新建项目,并新建一个文件。这样太复杂了。 // // var _p = U.CD.U.CUser.TNode[0].TNode, _current = null, _nr; // // _current = U.CD.U.CUser.CurrentNode//当前项目节点 // // //for (var i = 0; i < _p.length; i++) { if (!_p[i].IsDelete) { _current = _p[i]; break; } } //找到第一个项目 // // if (_current) { // // //此处还需要进一步修正,能够不用innerHTML最好。 // // _nr = "
该文件已经自动选取了项目!
"; // // _nr += "
确认将建立新的index.htm文件在'" + _current.Name + "'项目中.
"; // // _nr += "
取消不做任何操作.建议在项目面板中新建文件。
"; // // U.UF.UI.Confirm(_nr, [U.CD.R.SaveNewFile, ([_current, _c])], ""); // // } // // else { // // U.UF.UI.Confirm("
您还未创建过项目!
确认将建立一个名为Test的项目,取消不做任何操作
", [U.CD.R.SaveNewFolder, ([_c])], ""); // // } // // return; // // } // // //mongodb保存不了html标记,先编码。取出后解码。。由于情况比较特殊,输入内容有回车换行,这些html会自动转换,但又生成了很多div作为换行。所以是矛盾的,只能编码,解码 // // /* ::迭代 // // var _innertext = escape($("#UCD_CT_Code_CT")[0].innerHTML); //获取代码区域内容,如果获取innerText,会取消掉回车换行符合? // // //*/ // // //alert(US.userInfo.UserId); // // var _innertext = U.CD.Editor.getValue(); // // U.ACD.Request(U.CD.AjaxUrl, (["Update_FileContent", _c.userid, node.Deep, node.ID, _innertext]), U.CD.R.SaveAsyn, (["", node])); //保存代码。userid从cookie取 // // } //} //保存功能异步函数 U.CD.R.SaveAsyn = function (r) { var i, node = r.context[1]; //得到上下文节点。 if (r.value) { var _l = $("#UCD_CT_Top_Tab")[0].getElementsByTagName("ul")[0].getElementsByTagName("li"); //获取ul下面所有li标签。//更新li节点信息。 for (i = 0; i < _l.length; i++) { if (_l[i].id == "Tab" + node.ID) { _l[i].Data.Content = node.Content; alert("保存" + node.Name + "成功"); return; } } } else { alert("保存失败"); } } //新用户登录后单击保存按钮自动创建一个名为Test的项目和一个名为index.htm的文件。 U.CD.R.SaveNewFolder = function (_c) { var node = { "Name": "Test", "CreateDate": new Date(), "Type": "folder", "ID": Guid.newGuid(), "Deep": 2, "TNode": [], "IsPublic": true, "IsDelete": false }; ; //创建一个名为Test的项目.深度默认为2 var root = U.CD.U.CUser.TNode[0]; //U.CD.U.CUser未保存用户信息,不知道对后期有什么影响。获取该用户的节点信息,里面保存了根节点信息 U.ACD.Request(U.CD.AjaxUrl, (["Add_Folder", _c.userid, root.ID, root.Deep, node.ID, node.Name, U.CD.USLang]), U.CD.R.SaveNewFile, (["", _c])); } //文件夹创建后建立文件,两种情况,一种是已经有文件夹创建文件,多传递了u参数,另外一种是后台创建新项目后返回的r值。 U.CD.R.SaveNewFile = function (r, u) { var _c, _pnode, node; //直接使用传递的用户信息。//直接使用传递的当前项目信息。 if (u) { _c = u; _pnode = r; } else { //如果创建文件夹成功,继续创建文件//context保存了参数信息,不知道能否是集合,测试一下。强大,能返回集合。context[0]保存的是loadingdiv。//获取创建的文件夹节点 if (r.value != "false") { _c = r.context[1]; //_pnode = eval("(" + r.value + ")"); _pnode = r.value; } else { alert("自动创建项目异常!"); return; } } node = { "Name": "index.htm", "CreateDate": new Date(), "Type": "file", "ID": Guid.newGuid(), "Deep": parseInt(_pnode.Deep) + 1, "IsPublic": true }; U.ACD.Request(U.CD.AjaxUrl, (["Add_File", _c.userid, _pnode.ID, _pnode.Deep, node.ID, node.Name]), U.CD.R.SaveNewOK, (["", _c, _pnode, u])); //继续添加文件,把项目也传递进去,以便前台添加 } //添加项目和文件成功。 U.CD.R.SaveNewOK = function (r) { if (r.value != "false") { var _c = r.context[1]; //用户信息 var _pnode = r.context[2]; //获取项目 var u = r.context[3]; //是否是在现有项目下新建文件,不传递表示又创建项目又创建文件。 //var _file = eval("(" + r.value + ")"); //获取文件 var _file = r.value; //获取文件 _pnode.TNode.length = 0; //清空数组,追加一个文件 _pnode.TNode.push(_file); //追加文件到项目中 //如果没有项目信息,则追加项目,追加文件。否则,只追加文件 if (!u) { U.CD.RT.F_L_Node(_pnode, _c.userid, $("#UCD_RT_Tree")[0]); //追加项目 U.CD.RT.LV(_pnode.TNode, $("#UCD_RT_Tree")[0].firstChild, _c.userid); //参数1为节点集合,参数2为节点的元素,参数3为用户id,创建文件需要树型右移操作。 //U.CD.U.CUser.CurrentSO = $("#UCD_RT_Tree")[0].firstChild; //不知道是否正确 U.CD.U.CUser.CurrentNode = _pnode; //指定当前项目 } else { U.CD.RT.LV(_pnode.TNode, $("#UCD_RT_Tree")[0].firstChild, _c.userid); //参数1为节点集合,参数2为节点的元素,参数3为用户id,创建文件需要树型右移操作。 } //同时选中文件 U.CD.R.LoadFC(_file); //刷新代码和视图,选项卡,换行窗口。 alert("初始化用户文件成功"); } else alert("初始化用户数据失败"); } //-----------------------------------------------------------新建项目---------------------------------------------- U.CD.R.NewPro = function () { if (!U.MD.U.L.DLTC(3)) { U.CD.RT.CProject(US.userInfo.UserId, U.CD.U.CUser.TNode[0]); } // var _c = U.CD.U.IsUSelf(); //获取用户登录Cookie. _c.userid _c.username _c.Loginid // if (!_c) { U.CD.U.LoginApply(); return; } //如果未登录,弹出登录窗口。。 // } //---------------------------------------------------------------新建文件--------------------------------------------------------- U.CD.R.NewFile = function () { var _c = U.CD.U.IsUSelf(); //获取用户登录Cookie. _c.userid _c.username _c.Loginid if (!_c) { U.CD.U.LoginApply(); return; } //如果未登录,弹出登录窗口。。 //首先选取项目,如果没有项目,提醒用户创建项目 if (U.CD.U.CUser.TNode[0].TNode.length > 0) { //var SO = $(".UCD_RT_ZSCG_T", U.CD.U.CUser.CurrentSO)[0];//根据类名获取元素的函数,暂时用其他方法解决 if (U.CD.U.CUser.CurrentSO == undefined) { U.Alert('请在添加项目后在新建'); } U.CD.RT.CP_NF(U.CD.U.CUser.CurrentSO, _c.userid, U.CD.U.CUser.CurrentNode); //alert("人手不够,此功能以后开放!请在右边树里面中单击操作面板建立文件!!!!!"); } else { U.CD.RT.CProject(_c.userid, U.CD.U.CUser.TNode[0]); } } //--------------------------------------------------------------------------------------运行功能-------------------------------------------------------------------- //设置新窗体打开 U.CD.R.OpenRun = function () { var s = U.CD.CD.ExecIFText($("#UCD_CT_Code_CT")[0]); var _ta = $$("textarea", { "value": s }); //为了解决chrome浏览器敲入nbsp出现的问题,用textarea过滤,但还是不行。等以后再解决了。 s = _ta.value; var _w = window.open("javascript:void((function(){document.open();document.domain='1473.cn';document.close()})())", "_blank", ''); var _new = _w.document.open('text/html', 'replace'); _w.opener = null; // 防止代码对页面修改 _new.write(s); _new.close(); // var s = U.CD.CD.ExecIFText({ 'innerText': U.CD.Editor.getValue() }); //获取编辑内容 // var _ta = $$("textarea", { "value": s }); //为了解决chrome浏览器敲入nbsp出现的问题,用textarea过滤,但还是不行。等以后再解决了。 // s = _ta.value; // var _w = window.open("javascript:void((function(){document.open();document.domain='1473.cn';document.close()})())", "_blank", ''); // var _new = _w.document.open('text/html', 'replace'); // _w.opener = null; // 防止代码对页面修改 // // _new.write(s); // _new.close(); } //停止运行结果窗口 U.CD.R.Stop = function () { if ($("#UCD_RUN")[0]) $("#UCD_RUN")[0].style.display = 'none'; } //如果存在UCD_RUN,关闭它。 //_i.src = "javascript:void((function(){document.open();document.domain='1473.cn';document.close()})())"; //一定要指定一个链接,为空都行,否则不会触发异步。 //小非模态窗口,只需要传递中间内容,即可生成一个窗口。s表示窗体中内容,title表示窗口标题,i表示窗口唯一id,c表示内容文字颜色,w是宽度,h是高度 U.UF.UI.SUForms = function (s, title, i, c, w, h) { //窗体函数不支持坐标,还需要修正。窗口的样式position:absolute; display:block;需要内置进去 var l = (document.body.clientWidth - w) / 2, t = (document.body.clientHeight - h - 50) / 2; var SEW = [1, t, l, w, h, i, title, "", s, "no", false, false, false, c, true]; var _f = { "Embed": SEW[0], "Top": SEW[1], "Left": SEW[2], "Width": SEW[3], "Height": SEW[4], "ContainerId": SEW[5], "titleName": SEW[6], "ContentId": SEW[7], "Content": SEW[8], "hasScroll": SEW[9], "hasMax": SEW[10], "hasMin": SEW[11], "hasDraw": SEW[12], "CStyle": SEW[13], "IsR": SEW[14] }; var _r = U.UF.UI.UForms(_f, document.body); //向body追加窗体。 } //---------------------------------------------------------------------------自定义窗体------------------------------------------------------------------------------- //窗体初始化 //暂有传参{ "Embed": 是否是Iframe, "Top": 偏移高, "Left": 偏移左, "Width": 长度, "Height": 高度, "ContainerId": id, "titleName": 标题, "ContentId": 内容区Id, "Content": 内容, "hasScroll": 内容区是否滚动, "hasMax": 是否允许放大, "hasMin": 是否允许缩小, "hasDraw": 是否拉伸, "CStyle": 内容区样式, "IsR": 关闭是否移除 } U.UF.UI.UForms = function (USW, UDPD) { var i, _UDOD, _UDTD, _UDSD, _UDCD, _UDED, _UECV, _UZC = /%/, UDGE = [["UD_W_WT_H", "up"], ["UD_W_WT_HL", "topRight"], ["UD_W_WT_HR", "topleft"], ["UD_W_WT_ML", "left"], ["UD_W_WT_MR", "right"], ["UD_W_WT_B", "down"], ["UD_W_WT_BL", "bottomLeft"], ["UD_W_WT_BR", "bottomRight"]]; (_UZC.test(USW.Width)) && (USW.Width = US.Width * (parseInt(USW.Width) / 100)); (_UZC.test(USW.Height)) && (USW.Height = US.Height * (parseInt(USW.Height) / 100)); (_UZC.test(USW.Top)) && (USW.Top = US.Height * (parseInt(USW.Top) / 100)); (_UZC.test(USW.Left)) && (USW.Left = US.Width * (parseInt(USW.Left) / 100)); _UDOD = $$("div", { "className": "UD_W UD_UIU", "id": USW.ContainerId, "style": { "width": USW.Width + "px", "height": USW.Height + "px", "left": USW.Left + "px", "top": USW.Top + "px"} }); $$("div", { "className": "UD_ICON UD_ICONl" }, _UDOD); _UDTD = $$("div", { "className": "UD_WIMG UD_W_TB", "style": { "width": (USW.Width - 30) + "px" }, "onmousedown": [[U.D.DragMouseDown, ([_UDOD])]] }, _UDOD); $$("span", { "className": "UD_W_TB_T", "innerHTML": USW.titleName }, _UDTD); _UDSD = $$("div", { "className": "UD_W_TB_WM" }, _UDTD); $$("span", { "title": "关闭", "className": "UD_ICON UD_W_TB_WM_Close", "onmousedown": U.UF.EV.stopBubble, "onclick": [[(U.D.Tb ? U.D.Tb.PopupWinClose : U.D.CloseWindow), ([_UDOD, (USW.IsR ? "remove" : "")])]] }, _UDSD); (USW.hasMax) && ($$("span", { "title": "最大化", "className": "UD_ICON UD_W_TB_WM_Max", "onmousedown": U.UF.EV.stopBubble, "onclick": [[U.D.Windowmaximize, ([_UDOD])]] }, _UDSD)); (USW.hasMin) && ($$("span", { "title": "最小化", "className": "UD_ICON UD_W_TB_WM_Min", "onmousedown": U.UF.EV.stopBubble, "onclick": [[U.D.WindowMin, ([_UDOD])]] }, _UDSD)); $$("div", { "className": "UD_ICON UD_ICONR" }, _UDOD); _UDCD = $$("div", { "className": "UD_WIMG UD_ICONz", "onmousedown": U.UF.EV.stopBubble }, _UDOD); //, "style": { "height": USW.Height - 36 + "px" } _UDED = $$("div", { "id": USW.ContainerId + 'Content', "className": "UD_W_WC", "style": { "cssText": "height:100%;" + USW.CStyle} }, _UDCD); _UECV = { "with": [{ "Element": _UDCD, "hdiffer": -36 }, { "Element": _UDTD, "hdiffer": 0, "wdiffer": -30}], 'upf': [[U.M.apply($("span", _UDTD)[0], "retElement.style.marginLeft = (retElement.parentNode.parentNode.clientWidth - retElement.clientWidth) / 2 + 'px';")]] }; if (USW.Embed == 0) { $$("iframe", { "id": USW.ContentId, "name": USW.ContentId, "frameborder": 0, "scrolling": USW.hasScroll, "src": USW.Content, "width": "100%", "height": "100%" }, _UDED); } else { if (typeof USW.Content == "object") { _UDED.appendChild(USW.Content); } else { _UDED.innerHTML = USW.Content; } } if (USW.hasDraw) { for (i = 0; i < UDGE.length; i++) { $$("span", { "className": UDGE[i][0], "onmousedown": [[U.D.Chatdrag, ([_UDOD, UDGE[i][1], _UECV])]] }, _UDOD); } } (UDPD) && (UDPD.appendChild(_UDOD)); return _UDOD; } //。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。无用的函数。。。。。。。。。。。。。。。。。。。。。 //大窗口运行html效果。老函数,暂时没用了。 U.CD.R.run = function () { //判断UCD_IF是否存在, 存在则刷新iframe,不存在创建窗口 var _i; //定义一个变量,保存创建的结果iframe窗口 if ($("#UCD_IF")[0]) { _i = $("#UCD_IF")[0]; } else { var _c = $$("div", { "id": "UCD_RUN" }, document.body); //创建一个运行窗口的div var _t = $$("div", { "className": "UCD_RUN_Head" }, _c); //头部信息 $$("div", { "className": "UCD_RUN_Refesh", "innerHTML": "重新运行" }, _t); //给头部信息赋予一个刷新按钮,即再次运行 $$("div", { "className": "UCD_RUN_Close", "innerHTML": "关闭", "onclick": function () { _c.style.display = 'none' } }, _t); //给div赋予一个关闭按钮 var _i = $$("iframe", { "className": "UCD_RUN_Iframe", "id": "UCD_IF" }, _c); //添加显示结果的iframe。 //_i.src = "javascript:void((function(){document.open();document.domain='1473.cn';document.close()})())"; //一定要指定一个链接,为空都行,否则不会触发异步。 } $("#UCD_RUN")[0].style.display = "block"; //把结果窗口置为可见。 var _i = $("#UCD_IF")[0]; _i.src = "RS.htm"; //刷新结果iframe窗口,这个是大窗口运行结果。和小窗口的不一样 U.MD.IframeLoad(_i, [[U.CD.CD.ILAsync, ([_i, $("#UCD_CT_Code_CT")[0]])]]); ; }