U.CD.Right.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575
  1. Namespace.register("U.CD.RT");
  2. //注册右边个人项目栏js。把右边的树的js全部搬到这个地方。
  3. ///
  4. U.CD.RT.Init = function () {
  5. }
  6. //-------------------------------------------------------------右边树目录的创建----------------------------------------------------------------
  7. //当获取用户数据后装载用户的右边树节点。第一个参数是后台返回数据,第二个参数为当前选择的项目,如果没有这个参数,则默认显示第一个项目
  8. U.CD.RT.LUDataAsyn = function (r) {
  9. U.CD.LO.OpenZY();
  10. //打开资源管理器
  11. var _ld = r.context[0];
  12. (_ld) && (_ld.parentNode.removeChild(_ld));
  13. var i, _pnum = 0;
  14. if (r.value == "" || r.value == "null") {
  15. //添加改用户的基本信息,后台会判断是否为合法用户,用在后台传递认证的方式已经解决。
  16. //U.ACD.Request(U.CD.AjaxUrl, ([type, userid, node.ID, node.Deep, Guid.newGuid(), input.value]), U.CD.RT.CP_OKAsyn, ([""]));
  17. U.UI.Confirm("没取到该用户数据,确认重新获取!", [U.CD.U.LUData, ([US.userinfo])], "");
  18. return;
  19. }
  20. //这个要注释。这是基本数据结构,他的合理性牵涉到前台所有代码的规范性。
  21. //var _u = eval("(" + r.value + ")"); //由于r.value带了双引号,必须按照这种方式进行转换。比较奇特。
  22. var _u = r.value;
  23. //由于r.value带了双引号,必须按照这种方式进行转换。比较奇特。
  24. U.CD.U.CUser = U.CD.U.AUsers[_u.UserID] = _u;
  25. //集合加数组功能。//添加进用户集合中。同时赋予当前操作用户。
  26. var L = _u.TNode[0].TNode;
  27. //这要注释。TNode代表用户项目目录的标识。第一个TNode代表了根目录。第二个TNode代表了根目录的所有孩子节点。
  28. //右边树目录区域,上面为资源管理器,下边为树目录。
  29. var _mdiv = $("#UCD_RTree")[0];
  30. _mdiv.innerHTML = "";
  31. //清空以前用户数据。
  32. //设置资源管理器样式
  33. var _zygl = $$("div", {
  34. "className": "UCD_RT_Root"
  35. }, _mdiv);
  36. //资源管理器
  37. // var _gl = $$("div", { "className": "UCD_RT_Root_TJ" }, _zygl);
  38. // for (i = 0; i < L.length; i++) { if (!L[i].IsDelete) _pnum++; } //统计项目个数
  39. $$("div", {
  40. "className": "UCD_RT_Root_TJ_NR",
  41. "innerHTML": "资源管理器"
  42. }, _zygl);
  43. $$("div", {
  44. "className": "UCD_TT_T_X",
  45. "onclick": [[U.CD.LO.CloseZY]],
  46. "style": {
  47. "margin": "3px"
  48. },
  49. }, _zygl);
  50. // var _zy = $$("div", { "className": "UCD_RT_Root_ZY" }, _zygl);
  51. // $$("div", { "className": "UCD_RT_Root_Z", "innerHTML": "资源管理器" }, _zy);
  52. //如果用户已经登录,才能有创建项目按钮
  53. // if (U.CD.U.IsUSelf())
  54. // $$("div", { "className": "UCD_RT_Root_C", "innerHTML": "创建项目", "onclick": [[U.CD.RT.CProject, ([_u.UserID, _u.TNode[0]])]] }, _zy); //创建项目按钮
  55. //如果是查看其它人的资料,需要屏蔽树的操作菜单,屏蔽掉保存按钮,屏蔽掉用户登录。关闭示例项目
  56. if (!U.CD.U.IsUSelf())
  57. U.CD.Url.ForbUser();
  58. ///清理掉以前项目的所有数据。
  59. //如果传递了项目id,则选中该项目,否则,选取第一个项目。 ///装载现有项目的数据。实现选中当前项目和当前文件的功能。
  60. //因为有些节点被删除了,IsDelete=true。不能作为第一个节点。按道理数据库就不应该筛选出来,以后再搞!!!!
  61. var _cp = r.context[1], _sel, _cso;
  62. //定义当前选中的节点,
  63. //此处需要清空数组,那么清空数组功能需要放在UC去实现。参考1473上面贴出的文章。
  64. if (_cp) {
  65. for (i = 0; i < L.length; i++) {
  66. if (L[i].ID == _cp) {
  67. _sel = L[i];
  68. L = [];
  69. L.push(_sel);
  70. break;
  71. }
  72. }
  73. } else {
  74. for (i = 0; i < L.length; i++) {
  75. if (!L[i].IsDelete) {
  76. _sel = L[i];
  77. break;
  78. }
  79. }
  80. }
  81. //创建树的总面板。
  82. var TreeDiv = $$("div", {
  83. "id": "UCD_RT_Tree"
  84. }, _mdiv)
  85. for (i = 0; i < L.length; i++) {
  86. U.CD.RT.F_L_Node(L[i], _u.UserID, TreeDiv);
  87. }
  88. //遍历每个节点。 //生成右边树结构。
  89. //指定当前项目和文件
  90. if (!_sel)
  91. return;
  92. //如果找不到项目,则返回
  93. _cso = TreeDiv.getElementsByTagName("div")["UCD_Tree" + _sel.ID];
  94. //找到树节点。
  95. if (_sel)
  96. U.CD.RT.SM(_cso, _u.UserID, _sel);
  97. //如果有子项目,展开第一个项目。
  98. //选中第一个文件节点。也要循环判断是否删除了。晕,以后一定后台解决此问题。
  99. var _ffile = null;
  100. for (i = 0; i < _sel.TNode.length; i++) {
  101. if (!_sel.TNode[i].IsDelete && _sel.TNode[i].Type == "file") {
  102. _ffile = _sel.TNode[i];
  103. break;
  104. }
  105. }
  106. if (_ffile) {
  107. _ffile.Content = unescape(_ffile.Content);
  108. U.CD.R.LoadFC(_ffile);
  109. }
  110. if (_ffile && _ffile.Name)
  111. document.title = _ffile.Name;
  112. //设置网页标题
  113. }
  114. //不知道什么原因,有可能mongodb,mysql不稳定,有时候取不到数据,此函数刷新页面,重新获取数据
  115. //U.CD.RT.LUDReload = function () { U.CD.Init(); }
  116. //右边子元素
  117. U.CD.RT.CLV = function (L, UDOD, UUID) {
  118. var _UDFD = document.createDocumentFragment();
  119. for (var i = 0; i < L.length; i++) {
  120. U.CD.RT.F_L_Node(L[i], UUID, _UDFD);
  121. //遍历每个节点。
  122. }
  123. UDOD.appendChild(_UDFD);
  124. }
  125. //每个节点的信息。,参数1为单个节点node,参数2为用户id,参数3为所有节点的文档碎片。
  126. U.CD.RT.F_L_Node = function (node, UUID, _UDFD) {
  127. var _UDIC, _UDTD, UDSD, _UDA;
  128. if (node.IsDelete)
  129. return;
  130. //不列出已经删除的节点。
  131. if (node.Deep == "2") {
  132. _UDIC = "UCD_RT_ProIcon";
  133. }//项目图标。
  134. else {
  135. _UDIC = "UCD_RT_FolderIcon";
  136. }
  137. //文件夹图标。
  138. if (node.Type == "file") {
  139. if (U.UP.IsImg(node.Name))
  140. _UDIC = "UCD_RT_USTreeAlbumIcon";
  141. else
  142. _UDIC = "UCD_RT_FileIcon";
  143. }
  144. //文件图标
  145. _UDTD = $$("div", {
  146. "className": "UCD_RT_USTreecontainA",
  147. "onclick": [[U.M.StopBubble], [U.CD.RT.DBC, ([node.ID])]]
  148. }, _UDFD);
  149. _UDSD = $$("div", {
  150. "className": "UCD_RT_USTTitle",
  151. "id": "UCD_Tree" + node.ID,
  152. "onclick": [U.CD.RT.SM, (["retElement", UUID, node])]
  153. }, _UDTD);
  154. $$("div", {
  155. "className": "UCD_RT_DiskGE UCD_RT_I_D_E UCD_RT_USTreesign"
  156. }, _UDSD);
  157. _UDA = $$("a", {
  158. "className": "UCD_RT_USTreeusestudiodisktreeA",
  159. "title": node.Name
  160. }, _UDSD);
  161. //if (U.CD.U.IsUSelf())
  162. U.CD.RT.F_OP(_UDSD, UUID, node);
  163. //如果用户已经登录、增加一个增删查改功能
  164. $$("i", {
  165. "className": "UCD_RT_Icon " + _UDIC
  166. }, _UDA);
  167. $$("span", {
  168. "innerHTML": node.Name
  169. }, _UDA);
  170. }
  171. //文件夹和文件操作面板
  172. U.CD.RT.F_OP = function (_UDTD, userid, node) {
  173. var _ZSCG = $$("div", {
  174. "className": "UCD_RT_ZSCG"
  175. }, _UDTD);
  176. var _c;
  177. if (node.Type == "folder") {
  178. _c = $$("div", {
  179. "className": "UCD_RT_ZSCG_T",
  180. "title": "发布项目!",
  181. "innerHTML": "✿",
  182. "onclick": [[U.M.StopBubble], [U.CD.RT.Panel, (["retElement", userid, node])]]
  183. }, _ZSCG);
  184. //统一设置面板
  185. } else
  186. _c = $$("div", {
  187. "className": "UCD_RT_ZSCG_T",
  188. style: {
  189. "margin-left": "-10px"
  190. },
  191. "title": "发布项目!",
  192. "innerHTML": "✿",
  193. "onclick": [[U.M.StopBubble], [U.CD.RT.Panel, (["retElement", userid, node])]]
  194. }, _ZSCG);
  195. //统一设置面板
  196. }
  197. //伸展树形目录。
  198. U.CD.RT.SM = function (SO, UUID, node) {
  199. if (node.Type == "folder") {
  200. U.CD.U.CUser.CurrentSO = SO.parentNode;
  201. U.CD.U.CUser.CurrentNode = node;
  202. }
  203. //记录当前单击文件夹节点
  204. var _pre = U.CD.U.CUser.PreClickNode;
  205. if (_pre)
  206. _pre.style.backgroundcolor = "white";
  207. //清除上次单击节点的样式。
  208. if (node.Type == "file") {
  209. node.Content = unescape(node.Content);
  210. U.CD.R.LoadFC(node);
  211. return;
  212. }
  213. //如果单击的是文件,打开文件。
  214. var _UDOB = $("div", SO)[0];
  215. //获取点击目录里的a标签 修改里的样式和获取id
  216. var _L = $("div", SO.parentNode).length - 3;
  217. //获取张开的孩子,增加一个功能就要修改这里,,要有统一处理方案。
  218. var _CT = "UCD_RT_DiskGE UCD_RT_I_D_E UCD_RT_USTreesign";
  219. //伸张的样式
  220. if (_L > 1) {
  221. SO.parentNode.removeChild(SO.parentNode.lastChild);
  222. }//未伸展
  223. else {
  224. //伸展
  225. //var _VA = U.CD.U.CUser.TNode.Select({ "ID": UDID })[0].TNode; //选取需要展示的数据。 U.Entity还需要继续改写。。。
  226. var _VA = node.TNode;
  227. //获取节点的子节点,选取需要展示的数据。 U.Entity还需要继续改写。。。
  228. if (_VA != null) {
  229. U.CD.RT.LV(_VA, SO.parentNode, UUID);
  230. _CT = "UCD_RT_DiskGE UCD_RT_I_D_S UCD_RT_USTreesign";
  231. }
  232. //展开所有的子目录
  233. }
  234. _UDOB.className = _CT;
  235. //伸缩的杨思
  236. U.CD.RT.VM(SO, UUID, node);
  237. //改变单击的样式
  238. }
  239. //这里是说明右边的树形栏视图
  240. U.CD.RT.LV = function (L, UDD, UUID) {
  241. var _UDOD = $$("div", {
  242. "style": {
  243. "marginLeft": "10px"
  244. }
  245. }, UDD);
  246. U.CD.RT.CLV(L, _UDOD, UUID);
  247. }
  248. //单击菜单时的效果 伸缩时候的点击元素效果
  249. U.CD.RT.VM = function (SO, userid, node) {
  250. //if (US.Disk.diskfileTree[1][5]) { $(US.Disk.diskfileTree[1][5]); US.Disk.diskfileTree[1][5].style.border = "0"; US.Disk.diskfileTree[1][5].style.backgroundColor = ""; } //删除上次点击左边菜单变化的a标签
  251. SO.style.backgroundColor = "rgb(234, 234, 234)";
  252. //颜色变化
  253. U.CD.U.CUser.PreClickNode = SO;
  254. //把变化的对象放入 下次点击清理
  255. //记录当前选中节点,以便新建文件时使用,其他地方也可以使用。此处需要找孩子节点才方便,否则,需要修改程序。
  256. //if (node.Deep == 2) { U.CD.U.CUser.CurrentSO = SO.parentNode; U.CD.U.CUser.CurrentNode = node; }//为啥要深度等于2?
  257. }
  258. U.CD.RT.DBC = function () { }
  259. //-----------------------------------------------------------新建一个项目,或者文件夹。---------------------------------------------------
  260. //新建控制面板。
  261. U.CD.RT.Panel = function (SO, userid, node) {
  262. var _UDUP = $("#UCD_RT_FUP")[0]
  263. , _UDUT = $("#UCD_RT_FUPCT")[0];
  264. //获取命令窗口
  265. var _NR = $("#UCD_RT_FUPCC")[0];
  266. _NR.innerHTML = "";
  267. //获取内容窗口
  268. _UDUT.innerHTML = "当前目录:<span>" + node.Name + "</span>。";
  269. //如果是文件夹或者项目则创建相应菜单,否则是文件,创建相应菜单。
  270. if (node.Type == "folder") {
  271. //暂时做到这样,以后再加图标,美化界面
  272. $$("div", {
  273. "className": "UCD_RT_Com",
  274. "innerHTML": "新建子文件夹",
  275. "onclick": [[U.M.StopBubble], [U.CD.RT.CP_CF, ([SO, userid, node])]]
  276. }, _NR);
  277. //新建文件夹
  278. $$("div", {
  279. "className": "UCD_RT_Com",
  280. "innerHTML": "修改文件夹",
  281. "onclick": [[U.M.StopBubble], [U.CD.RT.CP_M, ([SO, userid, node])]]
  282. }, _NR);
  283. //修改
  284. $$("div", {
  285. "className": "UCD_RT_Com",
  286. "innerHTML": "删除文件夹",
  287. "onclick": [[U.M.StopBubble], [U.CD.RT.CP_DF, ([SO, userid, node])]]
  288. }, _NR);
  289. //删除
  290. $$("div", {
  291. "className": "UCD_RT_Com",
  292. "innerHTML": "新建文件",
  293. "onclick": [[U.M.StopBubble], [U.CD.RT.CP_NF, ([SO, userid, node])]]
  294. }, _NR);
  295. //新建文件
  296. var _up = $$("div", {
  297. "className": "UCD_RT_Com UCD_RT_TreeIcon",
  298. "innerHTML": "上传照片"
  299. }, _NR);
  300. //上传图片
  301. $$("input", {
  302. "id": "UCD_RT_Com_Up",
  303. "name": "UCD_RT_Com_Up",
  304. "type": "file",
  305. "multiple": "true",
  306. "accept": "image/gif,image/jpeg,image/png",
  307. "onchange": [[U.CD.O.TreeUPFile, (["retElement"])]]
  308. }, _up);
  309. if (node.Deep == 2)
  310. $$("div", {
  311. "className": "UCD_RT_Com",
  312. "innerHTML": "发布项目和作业",
  313. "onclick": [[U.M.StopBubble], [U.CD.SL.Publish, ([SO, userid, node])]]
  314. }, _NR);
  315. //上传图片
  316. } else {
  317. $$("div", {
  318. "className": "UCD_RT_Com",
  319. "innerHTML": "修改文件名",
  320. "onclick": [[U.M.StopBubble], [U.CD.RT.CP_M, ([SO, userid, node])]]
  321. }, _NR);
  322. //修改文件名
  323. $$("div", {
  324. "className": "UCD_RT_Com",
  325. "innerHTML": "删除文件",
  326. "onclick": [[U.M.StopBubble], [U.CD.RT.CP_DF, ([SO, userid, node])]]
  327. }, _NR);
  328. //删除文件
  329. }
  330. if (_UDUP.style.display == "none") {
  331. U.D.PopupWindow(_UDUP);
  332. }
  333. //onclick直接响应
  334. }
  335. //创建一个项目,从根节点创建,SO代表根节点。userid用户id,node是节点信息
  336. U.CD.RT.CProject = function (userid, node) {
  337. //使用统一的创建对话框,减少代码量,传递不同的回调处理函数。js太智能。
  338. U.CD.RT.NDialog("创建新项目", U.CD.RT.CP_OK, ([$("#UCD_RT_Tree")[0], userid, node, "Add_Folder"]));
  339. }
  340. //新建一个文件夹,从子节点创建
  341. U.CD.RT.CP_CF = function (SO, userid, node) {
  342. U.CD.RT.NDialog("新建文件夹", U.CD.RT.CP_OK, ([SO, userid, node, "Add_Folder"]));
  343. }
  344. //新建一个文件。
  345. U.CD.RT.CP_NF = function (SO, userid, node) {
  346. U.CD.RT.NDialog("新建文件,请自己添加扩展名!", U.CD.RT.CP_OK, ([SO, userid, node, "Add_File"]));
  347. }
  348. U.CD.RT.Display = function () {
  349. $("#UCD_RT_FUP")[0].style.display = "none";
  350. }
  351. //新建项目或者文件夹或者修改公用弹出对话框函数。//参数1为Title,参数2为异步回调函数,参数3为异步函数参数数组。
  352. U.CD.RT.NDialog = function (T, C, P) {
  353. var _UFFD = $$("div", {
  354. "className": "UCD_TR_CP"
  355. });
  356. //调用主项目对话框,并构建一个显示用的Div。
  357. $$("div", {
  358. "className": "UCD_TR_CP_T",
  359. "innerHTML": "您操作的当前目录为:<span style='color:red;'>" + P[2].Name + "</span>"
  360. }, _UFFD);
  361. //项目名称输入input
  362. $$("div", {
  363. "className": "UCD_TR_CP_MS",
  364. "innerHTML": "请输入名称:"
  365. }, _UFFD);
  366. //项目名称输入input
  367. var _p = $$("input", {
  368. "className": "UCD_RT_CP_Input"
  369. }, _UFFD);
  370. P.push(_p);
  371. //追加input为参数数组。居然后面函数参数的能自动拆分此数组?
  372. //创建项目一定是在根元素下面。
  373. var _CUM = new U.UI.Dialog(T, {
  374. "width": "350px"
  375. }, null, U.M.apply(_UFFD, [[C, P]]), _UFFD);
  376. //js太智能了,可以自由拼凑参数!
  377. U.D.PopupWindow(_CUM.Create());
  378. }
  379. //创建项目、文件夹、文件的函数,
  380. //参数为SO 为触发事件的页面元素,用户id ,node为父亲节点,input为新节点的input,不能直接传值,type为类型,文件或者目录,
  381. U.CD.RT.CP_OK = function (SO, userid, node, type, input, content) {
  382. //节点基本信息,名字和id,id由前台生成。
  383. var _fname = input.value, _fid = Guid.newGuid(), _nnode;
  384. if (!U.CD.RT.VName(userid, _fname, type)) {
  385. alert("名字不符合规范或者存在同名文件!");
  386. return;
  387. }
  388. //前台添加一个节点,数组中也要添加节点。
  389. if (type == "Add_File")
  390. _nnode = {
  391. "Name": _fname,
  392. "CreateDate": new Date(),
  393. "Type": "file",
  394. "Content": "",
  395. "ID": _fid,
  396. "Deep": parseInt(node.Deep) + 1,
  397. "IsPublic": true
  398. };
  399. else
  400. _nnode = {
  401. "Name": _fname,
  402. "CreateDate": new Date(),
  403. "Type": "folder",
  404. "ID": _fid,
  405. "Deep": parseInt(node.Deep) + 1,
  406. "TNode": [],
  407. "IsPublic": true
  408. };
  409. var L = [];
  410. L.push(_nnode);
  411. //追加一个节点,传递几个参数就追加几个。这种方式不科学,以后再改。因为硬盘是这样写的。
  412. //如果不是根目录,或者className不是SO本身,需要找到添加子文件夹的父亲元素。
  413. if (node.Deep > 1 && SO.className != "UCD_RT_USTreecontainA")
  414. SO = SO.parentNode.parentNode.parentNode;
  415. node.TNode.push(_nnode);
  416. //同时向前台json中追加数据,没有json树真麻烦啊。。做json树操作是一定的。
  417. if (node.Deep == "1")
  418. U.CD.RT.CLV(L, $("#UCD_RT_Tree")[0], userid);
  419. //根节点添加孩子节点,不会有margin右移操作
  420. //向前台追加树结点。//如果连续追加多个,会多出很多margin:10px父亲节点,会出问题。
  421. else if (SO.childNodes.length == 2) {
  422. U.CD.RT.CLV(L, SO.lastChild, userid);
  423. ;
  424. } else {
  425. U.CD.RT.LV(L, SO, userid);
  426. }
  427. //记录当前选中节点,以便新建文件时使用,其他地方也可以使用。此处需要找孩子节点才方便,否则,需要修改程序。
  428. if (_nnode.Deep == 2) {
  429. U.CD.U.CUser.CurrentSO = SO.lastChild;
  430. U.CD.U.CUser.CurrentNode = _nnode;
  431. }
  432. //后台添加一个节点。传递了用户id,根元素id,根元素深度,新节点guid,新节点名字。
  433. U.ACD.Request(U.CD.AjaxUrl, ([type, userid, node.ID, node.Deep, _nnode.ID, _nnode.Name]), U.CD.RT.CP_OKAsyn, ([""]));
  434. }
  435. //添加项目异步。是否添加成功或者失败,异步回调函数
  436. U.CD.RT.CP_OKAsyn = function (r) {
  437. if (r.value == "false" || r.value == "") {
  438. alert("添加失败,点此反馈信息");
  439. return;
  440. }
  441. //var _node = eval("(" + r.value + ")"); //如果是文件添加成功,则刷新代码页面。
  442. var _node = r.value;
  443. //如果是文件添加成功,则刷新代码页面。
  444. //如果是文件夹,则把焦点至于当前文件夹
  445. //更新树节点。否则树和节点不同步。
  446. if (_node.Type == "file") {
  447. U.CD.R.LoadFC(_node);
  448. //刷新代码和视图,选项卡,换行窗口。
  449. }
  450. alert("添加成功");
  451. }
  452. //--------------------------------------------------------------------删除功能确认----------------------------------------------------
  453. U.CD.RT.CP_DF = function (SO, userid, node) {
  454. //L = L.Select({ "ID": id })[0]; //查找到指定节点。//从数据库删除,通过id如何查找其父亲节点?这是一个问题,U.E.Entity应该能够解决此问题。
  455. U.UI.Confirm("你确定删除 <span style='color:blue;'>" + node.Name + "</span>分组吗?", [U.CD.RT.CP_D, ([SO, userid, node])], "");
  456. var len = document.getElementsByClassName('UD_SYF_S UD_SYKO').length;
  457. var len_t = document.getElementsByClassName('UD_SYF_ST').length;
  458. var len_th = document.getElementsByClassName('UD_SYF_SS UD_SYI').length;
  459. var len_f = document.getElementsByClassName('U_UI_OBY').length;
  460. /*for(var izus = 0;izus<len;izus++){
  461. document.getElementsByClassName('UD_SYF_S UD_SYKO')[izus].style.cssText="box-shadow: 0 0 0px 0px #fff;display:block;width: auto;height: auto;min-width: 300px;display: block;left: 578.5px;top: 400px;z-index: 9999;border-radius:0;-webkit-border-radius:0;"
  462. }*/
  463. for (var izuss = 0; izuss < len_t; izuss++) {
  464. document.getElementsByClassName('UD_SYF_ST')[izuss].style.cssText = "background: url(../images/navigation.png);box-shadow: rgb(136, 136, 136) 0px 1px 2px;height:18px";
  465. }
  466. for (var j = 0; j < len_th; j++) {
  467. document.getElementsByClassName('UD_SYF_SS UD_SYI')[j].style.cssText = "width: 18px;height: 17px;margin-right: 6px;margin-top: 3px;";
  468. }
  469. for (var z = 0; z < len_f; z++) {
  470. document.getElementsByClassName('U_UI_OBY')[z].onmouseover = function () {
  471. this.style.background = "#3b3b3b";
  472. }
  473. document.getElementsByClassName('U_UI_OBY')[z].onmouseout = function () {
  474. this.style.background = "#bbb";
  475. }
  476. }
  477. }
  478. //删除功能
  479. U.CD.RT.CP_D = function (SO, userid, node) {
  480. //首先前台删除该节点//找到节点位置
  481. SO = SO.parentNode.parentNode.parentNode;
  482. SO.parentNode.removeChild(SO);
  483. U.ACD.Request(U.CD.AjaxUrl, (["Delete_Folder", userid, "0", node.ID]), U.CD.RT.CP_DAsyn, (["", node]));
  484. U.CD.RT.Display();
  485. }
  486. //删除功能异步函数。
  487. U.CD.RT.CP_DAsyn = function (r) {
  488. var node = r.context[1];
  489. if (r.value) {
  490. //清理Tab和代码栏目
  491. var _UFUL = $("#UCD_CT_Top_Tab")[0].getElementsByTagName("ul")[0];
  492. //获取Tab栏
  493. var UFLI = _UFUL.getElementsByTagName("li")["Tab" + node.ID];
  494. //如果找到了节点,关闭节点,否则,直接提示删除。
  495. if (UFLI) {
  496. U.CD.CloseEdit(_UFUL, UFLI, node);
  497. alert("删除节点" + node.Name + "成功!");
  498. } else
  499. alert("删除成功");
  500. } else
  501. alert("删除失败");
  502. }
  503. //----------------------------------------------------------------------修改功能----------------------------------------------------
  504. U.CD.RT.CP_M = function (SO, userid, node) {
  505. U.CD.RT.NDialog("修改操作!!!", U.CD.RT.CP_MOK, ([SO, userid, node]));
  506. }
  507. //修改操作
  508. U.CD.RT.CP_MOK = function (SO, userid, node, input) {
  509. var _fname = input.value;
  510. //只能传递input,否则是空值。
  511. if (!U.CD.RT.VName(userid, _fname)) {
  512. alert("名字不符合规范或者存在同名文件!");
  513. return;
  514. }
  515. SO.parentNode.parentNode.getElementsByTagName("span")[0].innerHTML = _fname;
  516. //修改名称。
  517. U.ACD.Request(U.CD.AjaxUrl, (["Update_Folder", userid, "0", node.ID, _fname]), U.CD.RT.CP_MOKAsyn, ([""]));
  518. U.CD.RT.Display();
  519. }
  520. U.CD.RT.CP_MOKAsyn = function (r) {
  521. r.value ? alert("修改成功") : alert("修改失败");
  522. }
  523. //---------------------------------公用函数--------------------------------------------
  524. //检查名字是否符合规范,在当前文件夹中是否存在同名文件
  525. U.CD.RT.VName = function (userid, _fname, type) {
  526. var _ut = U.CD.U.AUsers[userid];
  527. //找到用户在用户集合中的树信息。
  528. //if (type == "Add_File") { if (!U.MS.FileName.test(_fname)) return false; } //如果是文件,则匹配文件名。文件名还是允许输入中文,不然新手很不习惯。//else {
  529. if (!U.MS.ZWFileName.test(_fname))
  530. return false;
  531. //借用了登陆注册的正则表达式,检验名字是否符合规范。
  532. //U.E.Entity需要继续改写,此处要改写,没判断删除的文件夹
  533. if (_$(_ut.TNode).FindOne({
  534. "Name": _fname,
  535. "IsDelete": false
  536. }))
  537. return false;
  538. return true;
  539. }