U.CD.SL.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352
  1. Namespace.register("U.CD.SL"); //注册示例项目区域
  2. U.CD.SL.MySQL = "mysql"; //后台据此判断是到mongodb还是mysql。type是命令类型
  3. U.CD.SL.Data = null; //保存示例中的数据,避免数据库频繁刷新。
  4. U.CD.SL.PrePD = null; //保存了示例项目中评论和大图2个按钮,在onmouseover中切换状态。
  5. //示例项目
  6. U.CD.SL.Init = function () {
  7. // if (!$("#UCD_SL_N_F_R")[0].childNodes.length) U.D.AD.BDGG($("#UCD_SL_N_F_R")[0], '897767'); //百度广告,外部js加载不成功,导致本网站js不能运行,奇怪了
  8. //暂时做几个功能,以后扩充。
  9. //var _lans = $("#UCD_SL_N_F")[0].getElementsByTagName("div"), i;
  10. //for (i = 0; i < _lans.length; i++) { if (_lans[i].innerHTML != "HTML5语言") _lans[i].onclick = U.M.apply(this, [[alert, (["有空看看http://www.1473.cn,有惊喜!"])]]) }
  11. // var _s = $("#UCD_SL")[0];
  12. // //_s.style.width = document.body.clientWidth * 0.67 + "px"; //设置展示区域宽度
  13. // _s.style.width = "1000px";
  14. // _s.style.left = (document.body.clientWidth - parseInt(_s.style.width)) / 2 + "px"; //宽度居中
  15. // _s.style.height = document.body.clientHeight - 20 - 20 - 80 + "px"; //减去头部和尾部高度
  16. // _s.style.display = "block"; //显示或隐藏
  17. var UCD_SL_T_Width, UCD_SL_T_Left, UCD_SL_T_height;
  18. UCD_SL_T_Width = "1000px";
  19. UCD_SL_T_Left = (document.body.clientWidth - parseInt(UCD_SL_T_Width)) / 2 + "px";
  20. UCD_SL_T_height = document.body.clientHeight - 20 - 20 - 80 + "px";
  21. U.UF.UI.Form({ id: "UCD_SL_T", style: { "width": UCD_SL_T_Width, "left": UCD_SL_T_Left, "top": "5%", "height": UCD_SL_T_height }, title: "成功案例" })
  22. $("#UCD_SL_T .UD_SYF_SCO").append($(".UCD_SL_N_T")[0]);
  23. $("#UCD_SL_T .UD_SYF_SCO").append($(".UCD_SL_NN")[0]);
  24. //$("#UCD_SL_N_N")[0].style.height = _s.clientHeight - 100 + "px";
  25. //选取数据库所有数据,参数1表示滚动加载的页数,以后再修正为滚动加载,数据库默认1次加载500条。
  26. //为了避免频繁加载,结果需要保存到全局变量中。
  27. if (!U.CD.SL.Data || true) {// 加个true 刷新案例
  28. //try catch不成功?以后再搞
  29. try {
  30. //第一个参数:请求的后台地址。第二个参数是一个数组(数据库名字,存储过程名字,后面的都是存储过程的参数)
  31. //第三个参数是回调函数。第四个是回调参数。
  32. U.ACD.Request(U.CD.AjaxUrl, ([U.CD.SL.MySQL, "Select_All", 1, U.CD.USLang]), U.CD.SL.Display, ([""]));
  33. }
  34. catch (e) { alert("数据库连接暂时不成功,但不影响客户端操作"); }
  35. }
  36. }
  37. //弹出切换语言窗口
  38. U.CD.SL.L = function () {
  39. // var _b = $("#UCD_L_C")[0];
  40. // _b.style.width = "537px";
  41. // _b.style.left = (document.body.clientWidth - parseInt(_b.style.width)) / 2 + "px"; //宽度居中
  42. // // _b.style.height = document.body.clientHeight - 20 - 20 - 430 + "px"; //减去头部和尾部高度
  43. // _b.style.display = "block"; //显示或隐藏
  44. if ($("#test")[0]) {
  45. $("#test")[0].style.display = "block"
  46. } else {
  47. U.UF.UI.Form({ id: "test", "class": "UCD_L_C", style: { "width": "537px", "left": "698px", "height": "298px", "top": "256px" }, title: "云端切换语言" });
  48. $("#test .UD_SYF_SCO")[0].appendChild($(".UCD_SL_C_N")[0]);
  49. $("#test .UD_SYF_SCO")[0].style.overflow = "hidden";
  50. $("#UCD_L_C")[0].style.display = "none";
  51. }
  52. }
  53. //展示数据库中发布的项目
  54. U.CD.SL.Display = function (r) {
  55. if (r.value == "") { U.CD.SL.Init(); }
  56. var _r = U.CD.SL.Data = r.value[0]; //获取mysql数据库返回的数据。
  57. U.CD.SL.DisFlow(_r);
  58. }
  59. U.CD.SL.DisFlow = function (_r) {
  60. var _nr = $("#UCD_SL_N_N")[0], i, j, _l; //_l流式布局个数定义
  61. var userId = U.M.Cookies.get("usestudiosso") && U.M.Cookies.get("usestudiosso").split("&").filter(function (v) { return v.indexOf("userid") != -1 }); //当前登录用户的id
  62. userId && (userId = userId[userId.length - 1].split("=")[1]);
  63. $("#UCD_SL_N_N")[0].innerHTML = ""; //清空div
  64. if (!_r.length) _nr.innerHTML = "<div class='UCD_SL_TS' onclick='U.CD.U.LoginApply()'>暂时无人添加示例,您可以来添加哦,分享是一种美德,点此分享!</div>";
  65. _l = U.CD.SL.Flowlayout(_nr, 140, 7); //返回列数,如果已经做了流式布局,下一次进来不再调用此函数。
  66. var a = _r, len = a.length, tp;
  67. for (i = 0; i < len; i++) {
  68. for (j = i; j < len; j++) {
  69. if (Date.parse(a[i].CreateDate) < Date.parse(a[j].CreateDate)) {//按时间排序 降序
  70. tp = a[i];
  71. a[i] = a[j];
  72. a[j] = tp;
  73. }
  74. }
  75. }
  76. _r = a;
  77. for (i = 0; i < _r.length; i++) {
  78. var _p = $("#UCD_SL_N_N")[0]; //找到流式布局点,追加相应元素,这是技巧,为了兼容Chrome,使用了Uq方法获取孩子节点 .Child()[i % _l]
  79. //var _src = "http://www.1473.cn/img/usestudiobackgroudnimage/beta1/bg1(1).jpg";
  80. var _a = $$("div", { "className": "UCD_SL_N_N_C", "onmouseover": [[U.CD.SL.DisReply, (["retElement", _r[i]])]], "onclick": [[U.CD.SL.DisOther, ([_r[i]])]] }, _p); //单个样式
  81. $$("img", { "className": "UCD_SL_N_N_C_I", "src": _r[i].DImg, "onerror": [U.MD.C.imgError, (["this", 1])] }, _a); //图像样式
  82. var _b = $$("div", { "className": "UCD_SL_N_N_C_RD" }, _a); //评论,大图样式
  83. var pl = $$("div", { "className": "UCD_SL_N_N_C_R" }, _b); //评论样式
  84. $$("img", { "src": "../images/cgal_dt.png", "onclick": [[U.UF.EV.stopBubble], [U.Img.Create, ([{ 'Img': _r[i].DImg, 'Thm': _r[i].DSmallImg}])]] }, pl);
  85. //"onclick": [[U.UF.EV.stopBubble], [U.Img.Create, ([{ 'Img': _r[i].DImg, 'Thm': _r[i].DSmallImg}])]]
  86. //"onclick": [[U.UF.EV.stopBubble], [U.CD.OU.Reply, ([_r[i].DID])]]
  87. //如果是管理员账号,则添加一个发布审核按钮。
  88. /*if (U.CD.U.IsUSelf().userid == "baa5e5ae-0fc2-4eab-ba44-cd993d6ce5a1")
  89. $$("div", { "className": "UCD_SL_N_N_C_S", "innerHTML": "审核", "onclick": [[U.UF.EV.stopBubble], [U.CD.SL.VerConfirm, ([_r[i]])]] }, _b); //评论样式*/
  90. var dt = $$("div", { "className": "UCD_SL_N_N_C_D" }, _b); //大图样式
  91. $$("img", { "src": "../images/cgal_pl.png", "onclick": [[U.UF.EV.stopBubble], [U.CD.OU.Reply, ([_r[i].DID])]] }, dt);
  92. _r[i].DBrief = _r[i].DBrief.replace(/\r\n/g, '<br/>'); //换行符号处理
  93. $$("div", { "className": "UCD_SL_N_N_C_T", "title": _r[i].DName, "innerHTML": _r[i].DName }, _a); //标题样式
  94. $$("div", { "className": "UCD_SL_N_N_C_N", "innerHTML": _r[i].DBrief }, _a); //内容样式
  95. if (userId && (userId == _r[i].UserID)) {//只有用户自己的案例才可以修改
  96. $$("div", { "className": "UCD_SL_N_N_C_XG", "onclick": [[U.UF.EV.stopBubble], [U.CD.SL.Publish, [null, US.userInfo.UserId, _r[i]]]] }, _b); //修改
  97. $$("div", { "className": "UCD_SL_N_N_C_SC", "onclick": [[U.UF.EV.stopBubble], [function (id, div) {//删除的函数
  98. U.UF.UI.Confirm("确定要删除吗?", [function (id, div) { //confirm
  99. var rt = U.ACD.Request(U.CD.AjaxUrl, ([U.CD.SL.MySQL, "Develop_delete_example", id]), 0, ([""])); //删除数据库案例
  100. if (rt.value.affectedRows == 1) {//影响行数
  101. $(div).remove(); //把div删除了
  102. U.Alert("删除成功!"); //弹个框
  103. }
  104. }, ([id, div])], [function () { }, ([])]);
  105. }, [_r[i].DID, _a]]]//id和div传进去
  106. }, _b); //删除
  107. }
  108. //U.ACD.Request(U.CD.AjaxUrl, ([U.CD.SL.MySQL, "Select_All", 1, U.CD.USLang]), U.CD.SL.Display, ([""]));
  109. }
  110. }
  111. //精华,提问,等切换区域
  112. U.CD.SL.Type = function (t) {
  113. //如果前台有数据,切换时筛选数据
  114. var d = U.CD.SL.Data, n = d.length, i, _r = [];
  115. if (d) {
  116. for (i = 0; i < n; i++) {
  117. if (d[i].DType == t)
  118. _r.push(d[i]);
  119. }
  120. }
  121. $("#UCD_SL_N_N")[0].innerHTML = "";
  122. U.CD.SL.DisFlow(_r);
  123. }
  124. //搜索函数
  125. U.CD.SL.Sou = function (o) {
  126. var s = o.parentNode.getElementsByTagName("input")[0].value;
  127. var d = U.CD.SL.Data, n = d.length, i, _r = [];
  128. if (d) {
  129. for (i = 0; i < n; i++) {
  130. if (d[i].DName.indexOf(s) > -1)
  131. _r.push(d[i]);
  132. }
  133. }
  134. $("#UCD_SL_N_N")[0].innerHTML = "";
  135. U.CD.SL.DisFlow(_r);
  136. }
  137. //回车搜索
  138. U.CD.SL.SouEnter = function (o) {
  139. if (event.keyCode == 13) {
  140. var s = o.parentNode.getElementsByTagName("input")[0].value;
  141. var d = U.CD.SL.Data, n = d.length, i, _r = [];
  142. if (d) {
  143. for (i = 0; i < n; i++) {
  144. if (d[i].DName.indexOf(s) > -1)
  145. _r.push(d[i]);
  146. }
  147. }
  148. $("#UCD_SL_N_N")[0].innerHTML = "";
  149. U.CD.SL.DisFlow(_r);
  150. }
  151. }
  152. //鼠标移动到相关条目时弹出查看该项目评论信息。
  153. U.CD.SL.DisReply = function (SO, r) {
  154. //给SO添加2个div,用来查看评论和大图
  155. var _s, i;
  156. if (U.CD.SL.PrePD) { if (U.CD.SL.PrePD.childNodes[1]) { _s = U.CD.SL.PrePD.childNodes[1].childNodes; for (i = 0; i < _s.length; i++) { _s[i].style.display = "none"; } } }
  157. _s = SO.childNodes[1].childNodes; for (i = 0; i < _s.length; i++) { _s[i].style.display = "block"; }
  158. U.CD.SL.PrePD = SO;
  159. }
  160. //弹出审核确认取消框。
  161. U.CD.SL.VerConfirm = function (r) {
  162. U.UF.UI.Confirm("你确定取消<span style='color:blue;'>" + r.DName + "</span>在首页中的显示吗?", [U.CD.SL.Verify, ([r])], "");
  163. }
  164. //去数据库通过审核,展示在前台供其他用户查看项目。
  165. U.CD.SL.Verify = function (r) {
  166. U.ACD.Request(U.CD.AjaxUrl, ([U.CD.SL.MySQL, "Add_Develop", r.DID, r.UserID, r.UserName, r.DName, r.DBrief, r.DSmallImg, r.DImg, r.DPrice, "0"]), U.CD.SL.VerifyAsyn, ([""]));
  167. }
  168. //数据库是否成功
  169. U.CD.SL.VerifyAsyn = function (r) {
  170. r.value[0].length ? alert("审核成功") : alert("审核失败");
  171. }
  172. //展示其他人的项目。
  173. U.CD.SL.DisOther = function (u) {
  174. //window.open("http://d.1473.cn/" + "#!/" + encodeURI(u.DID + "|" + u.UserID));
  175. $("#UCD_SL_T")[0].style.display = "none";
  176. U.CD.Url.Param(["#!", u.DID + "|" + u.UserID]); //采用本窗口加载模式
  177. }
  178. //前端后端切换
  179. U.CD.SL.Change = function (l) {
  180. U.UF.UI.Confirm("<div style='margin-top:-20px; margin-left:20px;font-size:16px;text-align:left;color:red;'>你确定切换到" + l + "后端吗?</br>前端:包括HTML,CSS,Javascript等知识.</br>后端:包括C语言,PHP语言,Ruby语言等.</div>", [U.CD.SL.ChangeAsyn, ([l])], "");
  181. }
  182. U.CD.SL.ChangeAsyn = function (l) { window.open("http://c.1473.cn/" + "#!/" + l); } //异步采用新窗口模式
  183. //流式布局函数,封装起来,以后给UC。参数1为大的元素,参数2为小元素的宽度,各个小元素的margin,此函数返回值为列数
  184. U.CD.SL.Flowlayout = function (NR, W, M) {
  185. // var _a = NR.clientWidth, i; //大容器宽度
  186. // var _num = Math.floor(_a / (W + 2 * M)); //小元素宽度
  187. // //添加列数到大元素
  188. // for (i = 0; i < _num; i++) {
  189. // $$("div", { "style": { "width": W + "px", "margin": M + "px" }, "className": "UCD_SL_N_N_L" }, NR); //追加流式布局的包容器
  190. // }
  191. // return _num;
  192. var _a = NR.clientWidth, i; //大容器宽度
  193. var _num = Math.floor(_a / (W + 2 * M)); //小元素宽度
  194. //添加列数到大元素
  195. for (i = 0; i < 5; i++) {
  196. $$("div", { "style": { "width": "185px", "margin-right": "10px" }, "className": "UCD_SL_N_N_L" }, NR); //追加流式布局的包容器
  197. }
  198. return _num;
  199. }
  200. //-------------------------------------------------------------------发布项目到首页区域-----------------------------------------------------
  201. //发布一个项目,会添加到示例项目区域。
  202. U.CD.SL.Publish = function (SO, userid, node) {
  203. //到数据库查询是否已经发不过。
  204. U.ACD.Request(U.CD.AjaxUrl, ([U.CD.SL.MySQL, "Select_One", node.ID]), U.CD.SL.ISPub, (["", SO, userid, node]));
  205. }
  206. //--------------------------------------UJ框架RadioList控件-------------------------------------------------
  207. //S是一个json,表示多个Checkbox的内容,D表示需要生成checkbox的父亲元素,比如一个div
  208. //调用方法。//var ra = U.UF.UI.RadioList($("#UCD_FB_N_CK_CK")[0], { "TW": "提问", "ZY": "作业", "JH": "精华", "CT": "控件" });
  209. //取值方法 ra.value();可以获取用户选择的值。
  210. U.UF.UI.RadioList = function (D, S) {
  211. var T = new U.UF.UI.RadioListT(D, S);
  212. T.init(); //初始化单选按钮组。
  213. return T;
  214. }
  215. U.UF.UI.RadioListT = function (D, S) {
  216. if (U.M.GetType(S) != "Object") return; //如果不是数组,返回
  217. D.innerHTML = ""; //清空以前的
  218. this.D = D; this.S = S; this.A = []; //所有checkbox元素,用于选择, //返回选中的Checkbox。
  219. }
  220. U.UF.UI.RadioListT.prototype = {
  221. init: function () {
  222. var S = this.S, p, c; //得到Checkbox长度,p为span,c为checkbox
  223. for (var s in S) {
  224. if (S.hasOwnProperty(s)) {
  225. p = $$("div", { "innerHTML": S[s], "style": { "cssText": "margin-left:5px;"} }, this.D);
  226. c = $$("input", { "type": "radio", "value": s, "onclick": [this.radiochecked, ([this, "retElement"])] }, p);
  227. this.A.push(c);
  228. }
  229. }
  230. this.A[0].checked = true;
  231. },
  232. //选中函数,其他全部不选中,单击的元素选中。r为保证作用域,"retElement"表示radio元素本身。
  233. radiochecked: function (r, o) {
  234. var i; for (i = 0; i < r.A.length; i++) r.A[i].checked = false; o.checked = true;
  235. },
  236. //返回被选中的值
  237. value: function () {
  238. var i; for (i = 0; i < this.A.length; i++) if (this.A[i].checked == true) return this.A[i].value;
  239. return this.A[0].value; //默认返回第一个元素
  240. }
  241. }
  242. //检测以前是否发布过的异步函数
  243. U.CD.SL.ISPub = function (r) {
  244. //清空以前数据
  245. var SO = r.context[1], userid = r.context[2], node = r.context[3]; //得到传递的参数
  246. var _r = r.value[0]; //得到数据库的值。
  247. //如果没获取到数据,表示没发不过,所有选项清空,否则,表示修改,把数据库的值赋予各个选项。
  248. if (_r.length == 0) { $("#UCD_FB_N_N_Name")[0].value = "", $("#UCD_FB_N_N_T")[0].value = "", $("#UCD_FB_NR_IMG")[0].value = "", $("#UCD_FB_N_N_P")[0].value = ""; }
  249. else { _r = _r[0]; $("#UCD_FB_N_N_Name")[0].value = _r.DName, $("#UCD_FB_N_N_T")[0].value = _r.DBrief, $("#UCD_FB_NR_IMG")[0].src = _r.DSmallImg, $("#UCD_FB_N_N_P")[0].value = _r.DPrice; }
  250. // var _UDUP = $("#UCD_FB")[0]; //获取命令窗口
  251. //var _NR = $("#UCD_FB_N_N")[0]; _NR.innerHTML = ""; //获取内容窗口
  252. if (_r.DName) $("#UCD_FB_N_T")[0].innerHTML = "您已经发不过" + node.Name + "了?但还可以修改相应信息";
  253. else $("#UCD_FB_N_T")[0].innerHTML = "您将要发布" + node.Name + "吗?此项目将对所有人可见!";
  254. $("#UCD_FB_N_N_Name")[0].value = node.Name; //给标题赋值
  255. //生成CheckBoxList
  256. var ra = U.UF.UI.RadioList($("#UCD_FB_N_CK_CK")[0], U.CD.DType);
  257. $("#UCD_FB_NR_IMG")[0].onclick = U.M.apply(this, [[U.UF.EV.stopBubble], [U.Img.Create, [([{ 'Thm': _r.DSmallImg, 'Img': _r.DImg}])]]]);
  258. $("#UCD_FB_N_N_N_S")[0].onclick = U.M.apply(this, [[U.CD.SL.PSubmit, ([SO, userid, node, ra])]]); //给提交按钮赋值
  259. if (!$("#UCD_FB2")[0]) {
  260. U.UF.UI.Form({ id: "UCD_FB2", style: { "width": "537px", "left": "690px", "top": "200px", "height": "537px" }, title: "发布项目窗口." });
  261. $("#UCD_FB2 .UD_SYF_SC")[0].childNodes[0].remove()
  262. $("#UCD_FB2 .UD_SYF_SC")[0].append($(".UCD_FB_N")[0]);
  263. } else {
  264. $("#UCD_FB2")[0].style.display = "block";
  265. }
  266. // if (_UDUP.style.display == "none") { U.D.PopupWindow(_UDUP); } //onclick直接响应
  267. }
  268. //单击发布按钮,发布到mysql
  269. U.CD.SL.PSubmit = function (SO, userid, node, ra) {
  270. var _c = U.CD.U.IsUSelf(); //获取用户登录Cookie. _c.userid _c.username _c.Loginid
  271. if (!_c) { U.CD.U.LoginApply(); return; } //如果未登录,弹出登录窗口。
  272. //_n名字 _b简介 -i图片 _p价格。
  273. var _n = $("#UCD_FB_N_N_Name")[0].value, _b = $("#UCD_FB_N_N_T")[0].value;
  274. var _s = $("#UCD_FB_NR_IMG")[0].title; _i = $("#UCD_FB_NR_IMG")[0].src, _p = $("#UCD_FB_N_N_P")[0].value;
  275. var username = _c.username; //cookie中的用户名
  276. if (!$("#UCD_FB_N_N_Name")[0].value) { U.Alert("项目名称不能为空!"); return; } //项目名称不可以为空
  277. //id为项目id,存储在mongodb中,
  278. //提交到数据库,ra.value()表示提交到精华区域、学习区域的类型, U.CD.USLang表示提交到哪一个语言。"1"表示发布到首页。
  279. U.ACD.Request(U.CD.AjaxUrl, ([U.CD.SL.MySQL, "Add_Develop", node.ID, userid, username, _n, _b, _s, _i, _p, "1", U.CD.USLang, ra.value()]), U.CD.SL.PSubAsyn, ([""]));
  280. }
  281. //发布成功后异步函数。
  282. U.CD.SL.PSubAsyn = function (r) {
  283. r.value[0].length ? alert("发布项目成功") : alert("发布项目失败");
  284. }
  285. //新用户发布自己的项目
  286. U.CD.SL.PubPro = function () {
  287. var _c = U.CD.U.IsUSelf(); //获取用户登录Cookie. _c.userid _c.username _c.Loginid
  288. if (!_c) { U.CD.U.LoginApply(); return; } //如果未登录,弹出登录窗口。
  289. U.CD.SL.SelPro();
  290. // alert("请在右边项目区域单击操作图标,发布自己的项目,谢谢!!!!");
  291. // U.CD.RT.CProject(_c.userid, U.CD.U.CUser.TNode[0]);
  292. // U.CD.RT.Panel();
  293. }
  294. U.CD.SL.SelPro = function (node, UUID) {
  295. if (node != undefined) {
  296. var DetailsFrame = document.getElementById("UCD_SLPublish").getElementsByClassName("UD_SYF_SCO")[0];
  297. U.CD.RT.F_L_Node(node, UUID, DetailsFrame);
  298. $("#UCD_SLPublish")[0].style.display = "none";
  299. } else {
  300. $("#UCD_SLPublish")[0].style.display = "block";
  301. U.D.PopupWindow($("#UCD_SLPublish")[0]);
  302. }
  303. }