U.Txt.js 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. /*
  2. 问题:
  3. 1、txt的问题变化 键盘处理流程
  4. */
  5. Namespace.register("U.D.Txt"); //txt命名空间
  6. //#region 初始化命名空间
  7. //打开txt
  8. U.D.Txt.Txt = function (UDE, UGE) {
  9. var i, _UDTD, _UDSD, _UDCD, _UDND, _UDKD,
  10. _USN = UDE["UserallDirectoryName"],
  11. _UIF = US.userInfo,
  12. _UDOD = $("#UD_SYTX"),
  13. _UDAD = _UDOD.childg(),
  14. _UGE = US.Disk.Disks[_userid],
  15. _UDID = UDE.UserDirectoryParentID || (UGE ? UGE[1][1] : ""),
  16. _userid = UDE.UserId || (_UGE ? _UGE[1][0].UserId : _UIF.UserId),
  17. _UIMG = UDE.UserThumbnailImageHead || (_UGE ? _UGE[1][0].UserThumbnailImageHead : _UIF.UserThumbnailImageHead);
  18. if ((_UDCD = $("#UT_" + (UDE.UserDirectoryID || UDE.id)))[0]) { _UDCD.Center(); return _UDCD[0]; }
  19. else { //生成值
  20. _UDTD = $(_UDAD[0]).clone(true); _UDSD = $(_UDAD[1]).clone(true);
  21. _UDCD = $("div", _UDTD);
  22. _UDCD[2].innerHTML = UDE.UserName || UDE.UserNickName || "请登录";
  23. _UDCD[3].innerHTML = _UGE ? "所有云文件" + _UGE[1][0]["FilesCount"] : "";
  24. $($("img", _UDCD[1])[0] || $$("img", {}, _UDCD[1])).addAttrArray({ "onerror": U.M.ImgError, "src": U.M.GetImgU(_UIMG), "onclick": [[U.M.StopBubble], [U.D.DT.YYDK, ["Disk", { "userid": _userid, "directoryid": US.FG}]]] });
  25. (_USN) && ($("input", _UDTD)[0].value = _USN.substr(0, (_UL = _USN.lastIndexOf(".")) > 0 ? _UL : _USN.length)); for (i = 0; i < 2; i++) { (_UDCD = $(i ? _UDSD : _UDTD).find(i ? "textarea" : "input")[0]).defaultValue = _UDCD.value; }
  26. _UDCD = U.UI.Form({ id: "UT_" + (UDE.UserDirectoryID || UDE.id),
  27. close: { onclick: U.M.apply(this, [[U.D.Txt.TxtClose, [UDE, _userid, _UDID]]]) },
  28. resize: U.D.Txt.TxtSize, style: { width: "800px", height: "500px" },
  29. content: _UDSD[0], title: _UDTD, bst: { style: { overflow: "hidden"} }
  30. });
  31. //加载数据
  32. _UDND = U.D.Txt.TxtCreate(UDE, _userid, _UDID, _UDCD);
  33. (_UDKD = _UDSD.find("select")).Aattr({ onchange: [[U.D.Txt.TxtZT, [_UDKD[0], _UDND[0]]]] }, 0);
  34. U.OU.CreateWordSize(_UDKD[0]);
  35. U.D.E.codeDetect({ cb: U.M.apply(null, [[U.D.Txt.CZJP, [_UDND[1]]]]),
  36. el: [_UDSD[0], $("input", _UDTD)[0]]
  37. });
  38. return _UDCD.be;
  39. }
  40. }
  41. //读取txt
  42. U.D.Txt.ReadTxt = function (UDE, UDOD) {
  43. UDOD = $(UDOD);
  44. var _UDID = UDOD.find("input")[0],
  45. _UDTD = UDOD.find("textarea")[0];
  46. _UDTD.focus();
  47. if (UDE && UDE.UserDirectoryID) {
  48. if (UDE.UsOffice != null) {
  49. _UDTD.value = UDE.UsOffice;
  50. }
  51. else {
  52. if (UDE.UserFilesServerName) {
  53. U.A.Request(US.Auth, ["OpenTxtFile", UDE.UserFilesServerName], U.D.Txt.AsynReadTxt, [[_UDTD, true], _UDTD, UDE]);
  54. }
  55. else {
  56. U.A.Request(US.Auth, ["GetFileContent", UDE.UserDirectoryID], U.D.Txt.AsynReadTxt, [[_UDTD, true], _UDTD, UDE]);
  57. }
  58. }
  59. }
  60. }
  61. //读取文件异步
  62. U.D.Txt.AsynReadTxt = function (r) {
  63. var context = r.context,
  64. _UDOD = context[1],
  65. _UDE = context[2];
  66. _UDOD.value = _UDE.UsOffice = r = r.value.UsOffice || "";
  67. }
  68. //#endregion
  69. //#region 关闭窗体
  70. //关闭txt
  71. U.D.Txt.TxtClose = function (UDE, userid, UDID, UDOD) {
  72. UDOD = $(UDOD);
  73. var _UCB,
  74. _userid = US.userInfo.userid,
  75. _UDTD = UDOD.find("textarea")[0],
  76. _UDID = UDOD.find("input")[0],
  77. _UFN = _UDID.value,
  78. _UTH = _UDTD.value,
  79. _UTF = (!UDE || !UDE.UserDirectoryID),
  80. _UDN = UDE.UserallDirectoryName.replace("." + UDE.UserDirectoryExtendType, "");
  81. if (_userid && (!UDE || _userid == UDE.UserId)) {
  82. if (UDE && UDE.UserDirectoryID && _UDN != _UFN && U.MS.ZWFileName.test(_UFN)) {
  83. U.Dk.RE.MFN(UDE, _UFN, null, US.userInfo.userid);
  84. } //保存文件同时修改文件名
  85. else if ((_UFN != _UDID.defaultValue || _UTH != _UDTD.defaultValue) && (_UFN != _UDN || _UTH != UDE.UsOffice)) { //内容更变处理
  86. _UCB = _UTF ? U.M.apply(null, [[U.D.Txt.TxtCloseCT, [UDOD[0], _UDTD, _UDID]]]) : U.M.apply(null, [[U.D.CloseWindow, [UDOD[0]]]]); //设置回调
  87. U.UI.Confirm("是否保存内容", [U.M.apply(null, [[U.D.Txt.BCTxt, [UDE, userid, UDID, UDOD[0], _UCB, true]]])], [_UCB]); return false;
  88. }
  89. }
  90. (_UTF) && (U.D.Txt.TxtCloseCT(UDOD[0], _UDTD, _UDID)); //关闭窗体使用
  91. }
  92. //关闭窗体
  93. U.D.Txt.TxtCloseCT = function (UDOD, UDTD, UDID) {
  94. UDTD.value = "点击编辑内容..."; UDID.value = "未命名文档(点击编辑)..."; U.D.CloseWindow(UDOD);
  95. }
  96. //#endregion
  97. //#region 文件新建保存
  98. //保存异步
  99. U.D.Txt.AsynBCTxt = function (UTH, UDOD, UCE, URE) {
  100. if (UCE && URE) {
  101. U.Dk.LE.USOS(UCE[1].UserDirectoryID, UTH);
  102. $(UDOD).find("input")[0].value = UCE[1].UserallDirectoryName;
  103. }
  104. }
  105. //txt新建
  106. U.D.Txt.XJTxt = function (UDE, userid, UDID, UDOD) {
  107. var _UDID, _UDTD, _UDID, _UDOD;
  108. if (UDOD && (UDOD = $(UDOD)) && UDE.UserDirectoryID || ((_UDTD = _UDOD.find("textarea")[0]) && (_UDID = _UDOD.find("input")[0]) && _UDID.value && _UDTD.value && _UDID.defaultValue != _UDID.value && _UDTD.defaultValue != _UDTD.value)) { //提示保存文件
  109. U.UI.Confirm("是否保存内容", [U.D.Txt.BCTxt, [UDE, userid, UDID, UDOD, U.M.apply(this, [[U.D.Txt.AsynXJTxt, [userid, UDID, UDOD, UDE]]]), true]]);
  110. }
  111. else {
  112. _UDTD = $(UDOD).childg(0)[1];
  113. _UDTD = $(_UDTD).childg(0, 0);
  114. _UDID = Guid.newGuid(); $("#UT_" + (UDE.UserDirectoryID || UDE.id))[0].ID = "UT_" + _UDID; U.D.Txt.TxtCreate({ UserallDirectoryName: "", id: _UDID }, userid, UDID, { body: _UDTD[0], be: UDOD, content: UDOD.Child()[0] });
  115. }
  116. }
  117. //新建异步
  118. U.D.Txt.AsynXJTxt = function (userid, UDID, UDOD, UDE, UTF) {
  119. if (UTF !== false) {
  120. var _UDOD = $(UDOD),
  121. _UDID = _UDOD.find("input")[0],
  122. _UDTD = _UDOD.find("textarea")[0];
  123. _UDID.value = _UDID.defaultValue;
  124. _UDTD.value = _UDTD.defaultValue;
  125. U.D.Txt.XJTxt(UDE);
  126. }
  127. }
  128. //txt保存
  129. U.D.Txt.BCTxt = function (UDE, userid, UDID, UDOD, UCB, UTF) {
  130. var _UTF = (!UDE || !UDE.UserDirectoryID),
  131. _UDOD = $(UDOD),
  132. _UDTD = _UDOD.find("textarea")[0],
  133. _UDID = _UDOD.find("input")[0],
  134. _UHT = _UDTD.value,
  135. _UIN = _UDID.value,
  136. _userid = US.userInfo.userid;
  137. if (!U.U.L.isLogin(3) && (_UTF || UDE.UserId == _userid)) { //登录保存使用
  138. if (!U.MS.ZWFileName.test(_UIN) && _UDID.defaultValue != _UIN) {
  139. U.Alert("文件名不符合");
  140. _UDID.focus(); _UDID.select();
  141. } //文件名输入区域
  142. else if (!UTF || (_UHT && _UIN && (_UDID.defaultValue != _UIN || _UDTD.defaultValue != _UHT))) { //内容保存
  143. (_UIN == _UDID.defaultValue) && (_UIN = "");
  144. (_UHT == _UDID.defaultValue) && (_UHT = ""); // (!_UTF) && (U.Dk.DiskOperatingSwitch(userid));
  145. U.Ut.AddObj(UDE, U.Dk.LE.USOS(UDE.UserDirectoryID ? UDE : UDE.id, _UHT, "txt", [[U.D.Txt.AsynBCTxt, [_UHT, _UDOD]], [UCB]], null, UDID, _UIN)); UDOD.id = "UT_" + UDE.UserDirectoryID; return false;
  146. }
  147. }
  148. else {
  149. U.Alert("他人文件拒绝访问");
  150. }
  151. (UCB) && (UCB(false)); return true;
  152. }
  153. //#endregion
  154. //#region 附加功能处理
  155. //键盘特殊操作
  156. U.D.Txt.CZJP = function (UDOD, UDE, UDTD) {
  157. if (UDE == "save") { UDOD[1].onclick(); } //保存设置
  158. }
  159. //txt字体变化
  160. U.D.Txt.TxtZT = function (UDOD, UDTD) {
  161. var _UST = UDTD.value,
  162. _UDND = document.createTextNode(" ");
  163. $(UDTD).addAttrArray({ style: { fontSize: UDOD.value + "px"} }).append(_UDND);
  164. $(_UDND).remove();
  165. }
  166. //txt创建处理
  167. U.D.Txt.TxtCreate = function (UDE, userid, UDID, UCE) {
  168. var _USE = [U.D.Txt.TxtSize(null, null, UCE.body),
  169. U.D.Txt.TxtEvent(UDE, userid, UDID, UCE.content)];
  170. U.D.Txt.ReadTxt(UDE, UCE.be); return _USE;
  171. }
  172. //txt大小处理
  173. U.D.Txt.TxtSize = function (UDOD, UDTD, UDSD) {
  174. var _UDOD = $(UDSD).childg(0)[0];
  175. _UDOD = $(_UDOD).childg(0)[1];
  176. $(_UDOD).css({ "height": UDSD.offsetHeight - 51 + "px", "width": UDSD.offsetWidth - 20 + "px" });
  177. return _UDOD;
  178. }
  179. //txt事件赋值
  180. U.D.Txt.TxtEvent = function (UDE, userid, UDID, UDOD) {
  181. var i, _UDMD, _UDAD = $(UDOD).Child(),
  182. _UDCD = $(_UDAD[0]).childg();
  183. $("&*", _UDCD).addAttrArray({ "unselectable": "on" });
  184. for (i = 0; i < _UDCD.length - 1; i++) {//新建保存
  185. _UDCD.addAttrArray({ "onmousedown": U.M.StopBubble, "onclick": [[i ? U.D.Txt.BCTxt : U.D.Txt.XJTxt, [UDE, userid, UDID, $(UDOD).Parent(3)]]] }, i);
  186. }
  187. return _UDCD;
  188. }