SitePreview.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427
  1. Namespace.register("U.MD.O.W.SP");
  2. U.MD.O.W.SP.FILEINFO = null;
  3. window.onload = function () {
  4. //加载1473数据
  5. U.UF.CD.loadPageCrossDomain(function () {
  6. });
  7. //获取站点信息
  8. U.MD.O.W.SP.sitePreviewInit();
  9. U.MD.O.W.SP.LoadDiskDate();
  10. if (window.location.hash) {//如果是长链接则显示域名设置提示
  11. $(".U_MD_O_W_SP_Fixed_dnReset")[0].style.display = "block";
  12. } else {
  13. $(".U_MD_O_W_SP_Fixed_dnReset")[0].style.display = "none";
  14. $('.U_MD_O_W_SP_ToolsBar')[0].style.display = "block";
  15. }
  16. }
  17. /**
  18. * 网站预览初始化
  19. */
  20. U.MD.O.W.SP.sitePreviewInit = function () {
  21. var _pathname = window.location.pathname, //获取网站地址
  22. _domename = U.UF.C.queryString("fid") || _pathname.split("/")[1]; //进行域名分离
  23. //获取网页内容
  24. if (_domename) {
  25. U.A.Request("http://cd.1473.cn/php", ["db.1473.cn", "UseStudio_DNS", "GetFileIdToDomain", _domename], function (r) { //获取文件信息
  26. var _value = r.value
  27. U.MD.O.W.SP.uwOpen(_value[0].FileId); //进入获取文档信息
  28. U.MD.O.W.SP.initReply(); //加载评论系统
  29. //console.log(window.location.hash);
  30. //console.log(U.MD.O.W.SP.FILEINFO.UserID);
  31. //console.log(US.userInfo.userid);
  32. /*if (window.location.hash) {
  33. $(".U_MD_O_W_SP_Fixed_dnReset")[0].style.display = "block";
  34. } else {
  35. $(".U_MD_O_W_SP_Fixed_dnReset")[0].style.display = "none";
  36. }*/
  37. });
  38. }
  39. }
  40. /**
  41. * 获取uw文件数据
  42. *
  43. * @fileid {string} 文档id
  44. */
  45. U.MD.O.W.SP.uwOpen = function (fileid) {
  46. //通过文档id获取文档信息
  47. U.A.Request(US.CD, [US.DB, "UseStudio_Disk", "GetFileById", fileid], function (r) {
  48. r = r.value;
  49. // if (r[0].UsOffice.indexOf("?") > -1) {
  50. // alert('str中包含bc字符串');
  51. // }
  52. // r[0].UsOffice = r[0].UsOffice.replace("<span>?</span>", "");
  53. // r[0].UsOffice = r[0].UsOffice.replace("<span>?</span>", "");
  54. console.log(r[0].UsOffice);
  55. if (r[0]) {
  56. //设置全局变量
  57. U.MD.O.W.SP.FILEINFO = r[0];
  58. //有内容直接加载内容
  59. if (r[0].UsOffice !== undefined && r[0].UsOffice != null) {
  60. U.MD.O.W.SP.uwOpen.asyn(r[0]);
  61. }
  62. //如果没有内容则去office下载内容
  63. else if (['doc', 'docx'].indexOf(r[0].UserFilesExtendName.toLocaleLowerCase()) > -1) {
  64. //初始化内容处理
  65. U.A.Request("http://office.1473.cn/Officetohtml.ashx", ["Open", r[0].UserFilesExtendName, r[0].UserFilesServerName], function (r) {
  66. var _fileinfo = r.context[1]; //获取文档信息
  67. if (r.value != undefined) {
  68. //设置文档内容
  69. r = r.value;
  70. _fileinfo.UsOffice = r.value.getBodyHtml().replace(/src=[\'\"]?([^\'\"]*)[\'\"]?/ig, function (str1, str2) {
  71. return "src=\"http://office.1473.cn/usoffice/" + str2 + "\"";
  72. });
  73. //加载文档信息
  74. U.MD.O.W.SP.uwOpen.asyn(_fileinfo);
  75. }
  76. else {
  77. U.Alert("文档已丢失。。。");
  78. }
  79. }, [null, r[0]]);
  80. }
  81. else {
  82. U.Alert("该文件无法打开");
  83. }
  84. }
  85. else {
  86. U.Alert("文档已丢失。。。");
  87. }
  88. });
  89. }
  90. /**
  91. * 获取uw文件数据
  92. *
  93. * @fileid {string} 文档id
  94. */
  95. U.MD.O.W.SP.uwOpen.asyn = function (fileinfo) {
  96. //判断_value.UsOffice是否为null
  97. if (!fileinfo.UsOffice && typeof (fileinfo.UsOffice) != "undefined" && fileinfo.UsOffice != 0) {
  98. fileinfo.UsOffice = " "; //显示为空
  99. }
  100. //导航模式的处理
  101. if (fileinfo.UserFilesExtendName.toLowerCase() == 'un') {
  102. $('body').addClass('U_MD_O_W_SP_Nav');
  103. $('.U_MD_O_W_SP_Head_Main_Logo span')[0].innerText = fileinfo.UserFilesName;
  104. U.MD.O.W.SP.modelDataCreate(fileinfo);
  105. }
  106. //普通模式的处理
  107. else {
  108. $('.U_MD_O_W_SP_Head')[0].style.display = 'block'; //显示元素
  109. $('.U_MD_O_W_SP_Tool')[0].style.display = 'block'; //显示元素
  110. $("#U_MD_O_W_SP_Editor")[0].innerHTML = fileinfo.UsOffice.unEscapeQuotes(); //文档内容格式化
  111. var _len = $("#U_MD_O_W_SP_Editor")[0].childNodes[0].children.length;
  112. for (var i = 0; i < _len; i++) {
  113. if ($("#U_MD_O_W_SP_Editor")[0].childNodes[0].children[i].innerText === "?") {
  114. $("#U_MD_O_W_SP_Editor")[0].childNodes[0].children[i].innerText = '';
  115. }
  116. else if ($("#U_MD_O_W_SP_Editor")[0].childNodes[0].children[i].innerText === " ") {
  117. $("#U_MD_O_W_SP_Editor")[0].childNodes[0].children[i].innerText = '';
  118. }
  119. }
  120. $(".U_MD_O_W_SP_Title")[0].innerText = fileinfo.UserFilesName; //文档名
  121. U.MD.O.W.SP.bindInit(fileinfo); //进入事件绑定
  122. }
  123. $$("meta", { name: "title", content: fileinfo.UserFilesName }, $('head')[0]);
  124. U.MD.O.W.SP.backTop();
  125. $('.U_MD_O_W_SP_ToolsBar')[0].onclick = function () {
  126. U.MD.O.W.SP.isLogin(fileinfo);
  127. }
  128. $('#U_MD_O_W_SP_Editor').bind('click', function (event) { U.MD.O.W.SP.pictureClick(event) }); //设置图片点击
  129. $('.U_MD_O_W_SP_Content').bind('mousedown', U.UF.EV.stopBubble); //阻止层级冒泡
  130. }
  131. U.MD.O.W.SP.eidtor = function (fileinfo) {
  132. if (US.userInfo.userid == fileinfo.UserID || (Guid.IsGuid(fileinfo.UserDirectoryEncrypt) && U.Json.select(US.friend.group, { GroupManageID: fileinfo.UserDirectoryEncrypt })[0])) {
  133. var _fileinfo = {
  134. UserId: fileinfo.UserID,
  135. GroupID: fileinfo.UserDirectoryEncrypt,
  136. UserDirectoryID: fileinfo.UserFilesID,
  137. UserallDirectoryName: fileinfo.UserFilesName,
  138. UserDirectoryExtendType: fileinfo.UserFilesExtendName
  139. }
  140. U.MD.O.word(US.userInfo, _fileinfo);
  141. } else {
  142. U.Alert("无编辑权限");
  143. }
  144. }
  145. U.MD.O.W.SP.isLogin = function (fileinfo) {
  146. if (!US.userInfo.userid) {
  147. U.MD.U.L.login(function () { U.MD.O.W.SP.eidtor(fileinfo) });
  148. } else {
  149. U.MD.O.W.SP.eidtor(fileinfo)
  150. }
  151. }
  152. /**
  153. * 文档模板生成
  154. * 把你的代码放在这个函数里面
  155. */
  156. U.MD.O.W.SP.modelDataCreate = function (fileinfo) {
  157. var _li, data = JSON.parse(fileinfo.UsOffice); //字符串转换为JSON对象
  158. for (var i = 0; i < data.nav.length; i++) { //循环数据
  159. _li = i == 0 ? $$("li", { innerHTML: data.nav[i].name, className: 'DataLi_active' }, $(".U_MD_O_W_SP_Header_DataUl")[0]) : $$("li", { innerHTML: data.nav[i].name }, $(".U_MD_O_W_SP_Header_DataUl")[0]); //创建li元素
  160. //初始化导航的处理
  161. _li.onclick = U.UF.C.closure(function (i) { //绑定点击事件
  162. //根据导航获取信息
  163. U.A.Request(US.CD, [US.DB, "UseStudio_Office", "GetNavPageContent", data.nav[i].pageId], function (r) { //请求数据库获取值
  164. var _el = $('#U_MD_O_W_SP_Editor')[0], //获取输出元素
  165. _listLi = $('.U_MD_O_W_SP_Header_DataUl').find('.DataLi_active'); //获取选中元素
  166. //有选中的元素 然后 清空class
  167. if (_listLi.length) {
  168. (_listLi[0].className = '');
  169. }
  170. $('.U_MD_O_W_SP_Header_DataUl').find('li')[i].className = 'DataLi_active'; //给点击的元素的class加
  171. _el.innerHTML = r.value[0].content.unEscapeQuotes(); //对数据过滤然后输出
  172. });
  173. }, [i]);
  174. //点击第一个元素
  175. if (i == 0) {
  176. _li.click();
  177. }
  178. }
  179. }
  180. /**
  181. * 事件绑定
  182. *
  183. * @fileinfo {object} 文档信息
  184. */
  185. U.MD.O.W.SP.bindInit = function (fileinfo) {
  186. var _shareEl = $('#U_MD_O_W_SP_Tool_ShareBtn')[0], //分享按钮
  187. _saveEl = $('#U_MD_O_W_SP_Tool_SaveBtn')[0], //保存到我的云盘按钮
  188. _showShareEl = U.MD.O.W.SP.shareFile(fileinfo, _shareEl), //打印分享的布局并返回户元素
  189. _winWidth;
  190. _saveEl.onclick = function () {
  191. U.MD.O.W.SP.saveSpecifiedFolder(fileinfo);
  192. }
  193. }
  194. /**
  195. * 事件绑定
  196. *
  197. * @fileinfo {object} 文档信息
  198. */
  199. U.MD.O.W.SP.backTop = function () {
  200. var _container = $('.U_MD_O_W_SP_ToolsBar_Container'),
  201. _topEl = $('.U_MD_O_W_SP_Top_Icon')[0], //滚动置顶按钮
  202. _winScrollTop, _clientheight;
  203. window.onscroll = function () {
  204. _winScrollTop = document.documentElement.scrollTop; //浏览器窗口到顶部的距离
  205. _clientheight = document.documentElement.clientHeight;
  206. if (_winScrollTop >= 100) { //距离大于等于100px显示按钮
  207. if (_topEl.style.display == 'none') //隐藏
  208. _topEl.style.display = 'block'; //显示
  209. // _topEl.style.top = document.body.clientHeight + _winScrollTop - 200 + 'px'; //显示位置
  210. } else if (_winScrollTop < 100 && _topEl.style.display == 'block') { //显示
  211. _topEl.style.display = 'none'; //隐藏
  212. }
  213. if (_clientheight + _winScrollTop >= _container[0].offsetTop + _container[1].offsetHeight) {
  214. //_container.css('position', 'relative', 1);
  215. _container.css('position', 'fixed', 1);
  216. } else {
  217. _container.css('position', 'fixed', 1);
  218. }
  219. }
  220. window.onscroll();
  221. // $(window).bind({ scroll: function () {
  222. // })
  223. _topEl.onclick = function () {
  224. U.MD.O.W.SP.topAnimate(document.documentElement, 0)
  225. }
  226. }
  227. /**
  228. * 置顶动画
  229. *
  230. * @ele {element} 移动元素
  231. * @target {number} 目标点
  232. */
  233. U.MD.O.W.SP.topAnimate = function (ele, target) {
  234. clearInterval(ele.timer); //清楚历史定时器
  235. ele.timer = setInterval(function () {
  236. //获取步长 确定移动方向(正负值) 步长应该是越来越小的,缓动的算法。
  237. var step = (target - ele.scrollTop) / 10;
  238. //对步长进行二次加工(大于0向上取整,小于0项下取整)
  239. step = step > 0 ? Math.ceil(step) : Math.floor(step);
  240. //动画原理: 目标位置 = 当前位置 + 步长
  241. ele.scrollTop = ele.scrollTop + step;
  242. //检测缓动动画有没有停止
  243. if (Math.abs(target - ele.scrollTop) <= Math.abs(step)) {
  244. ele.scrollTop = target; //直接移动指定位置
  245. clearInterval(ele.timer);
  246. }
  247. }, 16);
  248. }
  249. /**
  250. * 分享功能
  251. *
  252. * @fileInfo {object} 文档信息
  253. * @parentel {element} 添加的元素
  254. */
  255. U.MD.O.W.SP.shareFile = function (fileinfo, parentel) {
  256. var _content = $$('div', { className: "U_MD_O_W_SP_ShareBox" }), //创建最外层元素
  257. _shareTitle = $$('div', { className: "U_MD_O_W_SP_ShareTitle" }, _content), //分享小标题
  258. _shareBorder = $$('div', { className: "U_MD_O_W_SP_ShareBorder" }, _content), //分割线
  259. _wechat = $$('div', { className: "shareBlock" }, _content), //微信好友分享按钮
  260. _qq = _wechat.cloneNode(), //克隆元素
  261. _xin = _wechat.cloneNode(); //克隆元素
  262. $$('span', { innerText: "分享" }, _shareTitle); //创建文字
  263. $$('img', { src: "/img/xinlangRed.png", style: { width: '24px'} }, _xin); //创建图片
  264. $$('img', { src: "/img/qq.png", style: { width: '24px'} }, _qq); //创建图片
  265. $$('img', { src: "/img/wechat.png", style: { width: '24px'} }, _wechat); //创建图片
  266. $$('div', { innerText: "新浪微博" }, _xin); //创建文字
  267. $$('div', { innerText: "微信好友" }, _wechat); //创建文字
  268. $$('div', { innerText: "QQ好友" }, _qq); //创建文字
  269. $$('div', { className: "U_MD_O_W_SP_ShareBorder" }, _content); //分割线
  270. _wechat.className += " U_MD_O_W_SP_WeChat"; //加class
  271. _content.appendChild(_qq); //添加至最元素
  272. $$('div', { className: "U_MD_O_W_SP_ShareBorder" }, _content); //分割线
  273. _content.appendChild(_xin); //添加至最元素
  274. _qq.onclick = function () { //绑定点击事件
  275. var _title = "这个文档超赞的,赶快分享给大家吧!【" + fileinfo.Username + "--分享自-互联办公】"; //设置文本
  276. U.UF.OT.qqFriendShare('', _title); //调用qq好友分享的接口
  277. }
  278. _xin.onclick = function () {//绑定点击事件
  279. var _title = "这个文档超赞的,赶快分享给大家吧!【" + fileinfo.Username + "--分享自-互联办公】"; //设置文本
  280. U.UF.OT.weiboShare('', _title); //调用微博分享的接口
  281. }
  282. U.UF.OT.weChatShareCode(_wechat); //调用微信分享的接口
  283. parentel.appendChild(_content);
  284. return _content; //返回元素
  285. }
  286. /**
  287. * 保存我的云盘
  288. *
  289. * @fileinfo {object} 文档信息
  290. */
  291. U.MD.O.W.SP.saveSpecifiedFolder = function () {
  292. var _loginChecked = U.MD.U.L.isLogin(); //拿到登录状态值
  293. if (!_loginChecked) { //判断是否登录
  294. var _form = !Object.getOwnPropertyNames(US.disk.Disks).length && U.MD.DK.initDisk(US.userInfo.userid, 'f6d7a4b6-e34c-4964-beed-24187b2cb1ba'); //拿到网盘的窗体
  295. _form && (_form.style.display = 'none'); //隐藏窗体
  296. if (Object.getOwnPropertyNames(US.disk.Disks).length) { //判断US.disk.Disks常量是否有值
  297. var _guid = Guid.newGuid(); //生成GUID
  298. U.MD.DK.VW.chosenSaveFile(U.MD.O.W.SP.FILEINFO.UserFilesExtendName.toLowerCase(), _guid, U.MD.O.W.SP.FILEINFO.UserFilesName, function (fileinfo) { //调用选择保存文件弹窗位置的接口
  299. var _fileInfo = fileinfo; //文档信息
  300. U.A.Request(US.CD, [US.DB, "UseStudio_Disk", "SaveFileContent", fileinfo.UserDirectoryID, U.MD.O.W.SP.FILEINFO.UsOffice, fileinfo.UserallDirectoryname || U.MD.O.W.SP.FILEINFO.UserFilesName], function (r) { //将文档数据存储至数据库
  301. var _foldername = ''; //定义
  302. for (var i = 0; i < US.disk.initTree.length; i++) { //循环判断用户保存到那个文件夹下
  303. if (US.disk.initTree[i][0] == _fileInfo.UserDirectoryParentID) {
  304. _foldername = US.disk.initTree[i][4];
  305. break;
  306. }
  307. }
  308. if (r.value) { //判断数据库返回值判断是否插入成功
  309. U.Alert("以保存到云盘【" + _foldername + "】目录下!"); //提示用户
  310. } else {
  311. U.Alert("文档保存失败!") //提示用户
  312. }
  313. });
  314. });
  315. } else {
  316. U.alert('数据加载中...'); //提示用户
  317. }
  318. } else {
  319. U.alert('登录失败!'); //提示用户
  320. };
  321. }
  322. /**
  323. * 初始化加载评论
  324. *
  325. */
  326. U.MD.O.W.SP.initReply = function () {
  327. var _el = $(".U_MD_O_W_SP_Reply")[0];
  328. U.MD.R.reply({ 'type': true, 'el': _el, 'pid': "36341f7e-77a9-11e8-b499-005056b350a4" });
  329. }
  330. /**
  331. * 图片点击
  332. * @param event {object} 事件源
  333. */
  334. U.MD.O.W.SP.pictureClick = function (event) {
  335. var _nowel = event.target; //获取点击元素
  336. //判断是否为图片点击
  337. if (_nowel.tagName.toLocaleLowerCase() == "img") {
  338. var _mark; //设置记录
  339. var _arr = []; //定义图片路径数组
  340. var _imgels = $('#U_MD_O_W_SP_Editor img'); //获取所有图片元素
  341. for (i = 0; i < _imgels.length; i++) { //循环记录
  342. _arr.push(_imgels[i].src); //添加路径
  343. if (_imgels[i] == _nowel) { //判断当前点击元素为第几个
  344. _mark = i; //记录位置
  345. }
  346. }
  347. U.MD.UI.picture(_arr, _mark); //调用图片控件
  348. }
  349. }
  350. U.MD.O.W.SP.dnReset = function (el) {
  351. var _wordinfo = U.MD.O.W.SP.FILEINFO;
  352. var _type = U.MD.O.W.SP.FILEINFO.UserFilesExtendName == 'uw' ? 'word' : 'word';
  353. if (el == "cancel") {
  354. $(".U_MD_O_W_SP_Fixed_dnReset")[0].style.display = "none";
  355. //$('.U_MD_O_W_SP_ToolsBar')[0].style.display = "block";
  356. } else {
  357. if ($('#U_MD_DM_B_Manage_Pop')[0]) {
  358. $('#U_MD_DM_B_Manage_Pop')[0].style.display = "block";
  359. } else {
  360. if (US.userInfo.userid) {
  361. top.U.MD.DS.dnsInit(_wordinfo, _type);
  362. } else {
  363. U.MD.O.W.SP.LoadDiskDate();
  364. }
  365. }
  366. }
  367. //提示消失时显示加入修改按钮
  368. if ($(".U_MD_O_W_SP_Fixed_dnReset")[0].style.display == "none") {
  369. $('.U_MD_O_W_SP_ToolsBar')[0].style.display = "block";
  370. }else {
  371. $('.U_MD_O_W_SP_ToolsBar')[0].style.display = "none";
  372. }
  373. }
  374. U.MD.O.W.SP.LoadDiskDate = function () {
  375. if (JSON.stringify(US.disk.Disks) === '{}') {
  376. U.MD.U.L.login(function () {
  377. var _form = U.MD.DK.initDisk(US.userInfo.userid, "f6d7a4b6-e34c-4964-beed-24187b2cb1ba");
  378. setTimeout(function () {
  379. _form.style.display = 'none';
  380. }, 0);
  381. });
  382. }
  383. $('#U_D_' + US.userInfo.userid).length && ($('#U_D_' + US.userInfo.userid)[0].style.display = 'none');
  384. }