diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb index e65fe174e..58935dd11 100644 --- a/app/helpers/users_helper.rb +++ b/app/helpers/users_helper.rb @@ -258,4 +258,24 @@ module UsersHelper end return result end + + #获取用户参与的公开的课程列表 + def user_public_course_list user + membership = user.coursememberships.all#@user.coursememberships.all(:conditions => Course.visible_condition(User.current)) + membership.sort! {|older, newer| newer.created_on <=> older.created_on } + memberships = [] + membership.collect { |e| + memberships.push(e) + } + ## 判断课程是否过期 [需封装] + memberships_doing = [] + memberships_done = [] + memberships.map { |e| + if course_endTime_timeout?(e.course) + memberships_done.push e + else + memberships_doing.push e + end + } + end end diff --git a/app/views/boards/_course_show.html.erb b/app/views/boards/_course_show.html.erb index c9f78d8e1..25d35d407 100644 --- a/app/views/boards/_course_show.html.erb +++ b/app/views/boards/_course_show.html.erb @@ -1,12 +1,12 @@ - + - + "}]},{type:"vbox",padding:1,children:[{type:"text",id:"txtBorder",requiredContent:"img{border-width}",width:"60px",label:c.lang.image.border,"default":"",onKeyUp:function(){g(this.getDialog())}, -onChange:function(){i.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(c.lang.image.validateBorder),setup:function(a,b){if(a==f){var d;d=(d=(d=b.getStyle("border-width"))&&d.match(/^(\d+px)(?: \1 \1 \1)?$/))&&parseInt(d[1],10);isNaN(parseInt(d,10))&&(d=b.getAttribute("border"));this.setValue(d)}},commit:function(a,b,d){var c=parseInt(this.getValue(),10);a==f||4==a?(isNaN(c)?!c&&this.isChanged()&&b.removeStyle("border"):(b.setStyle("border-width",CKEDITOR.tools.cssLength(c)), -b.setStyle("border-style","solid")),!d&&a==f&&b.removeAttribute("border")):8==a&&(b.removeAttribute("border"),b.removeStyle("border-width"),b.removeStyle("border-style"),b.removeStyle("border-color"))}},{type:"text",id:"txtHSpace",requiredContent:"img{margin-left,margin-right}",width:"60px",label:c.lang.image.hSpace,"default":"",onKeyUp:function(){g(this.getDialog())},onChange:function(){i.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(c.lang.image.validateHSpace), -setup:function(a,b){if(a==f){var d,c;d=b.getStyle("margin-left");c=b.getStyle("margin-right");d=d&&d.match(o);c=c&&c.match(o);d=parseInt(d,10);c=parseInt(c,10);d=d==c&&d;isNaN(parseInt(d,10))&&(d=b.getAttribute("hspace"));this.setValue(d)}},commit:function(a,b,c){var e=parseInt(this.getValue(),10);a==f||4==a?(isNaN(e)?!e&&this.isChanged()&&(b.removeStyle("margin-left"),b.removeStyle("margin-right")):(b.setStyle("margin-left",CKEDITOR.tools.cssLength(e)),b.setStyle("margin-right",CKEDITOR.tools.cssLength(e))), -!c&&a==f&&b.removeAttribute("hspace")):8==a&&(b.removeAttribute("hspace"),b.removeStyle("margin-left"),b.removeStyle("margin-right"))}},{type:"text",id:"txtVSpace",requiredContent:"img{margin-top,margin-bottom}",width:"60px",label:c.lang.image.vSpace,"default":"",onKeyUp:function(){g(this.getDialog())},onChange:function(){i.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(c.lang.image.validateVSpace),setup:function(a,b){if(a==f){var c,e;c=b.getStyle("margin-top");e= -b.getStyle("margin-bottom");c=c&&c.match(o);e=e&&e.match(o);c=parseInt(c,10);e=parseInt(e,10);c=c==e&&c;isNaN(parseInt(c,10))&&(c=b.getAttribute("vspace"));this.setValue(c)}},commit:function(a,b,c){var e=parseInt(this.getValue(),10);a==f||4==a?(isNaN(e)?!e&&this.isChanged()&&(b.removeStyle("margin-top"),b.removeStyle("margin-bottom")):(b.setStyle("margin-top",CKEDITOR.tools.cssLength(e)),b.setStyle("margin-bottom",CKEDITOR.tools.cssLength(e))),!c&&a==f&&b.removeAttribute("vspace")):8==a&&(b.removeAttribute("vspace"), -b.removeStyle("margin-top"),b.removeStyle("margin-bottom"))}},{id:"cmbAlign",requiredContent:"img{float}",type:"select",widths:["35%","65%"],style:"width:90px",label:c.lang.common.align,"default":"",items:[[c.lang.common.notSet,""],[c.lang.common.alignLeft,"left"],[c.lang.common.alignRight,"right"]],onChange:function(){g(this.getDialog());i.call(this,"advanced:txtdlgGenStyle")},setup:function(a,b){if(a==f){var c=b.getStyle("float");switch(c){case "inherit":case "none":c=""}!c&&(c=(b.getAttribute("align")|| -"").toLowerCase());this.setValue(c)}},commit:function(a,b,c){var e=this.getValue();if(a==f||4==a){if(e?b.setStyle("float",e):b.removeStyle("float"),!c&&a==f)switch(e=(b.getAttribute("align")||"").toLowerCase(),e){case "left":case "right":b.removeAttribute("align")}}else 8==a&&b.removeStyle("float")}}]}]},{type:"vbox",height:"250px",children:[{type:"html",id:"htmlPreview",style:"width:95%;",html:"
"+CKEDITOR.tools.htmlEncode(c.lang.common.preview)+'
'+(c.config.image_previewText||"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.")+ -"
"}]}]}]},{id:"Link",requiredContent:"a[href]",label:c.lang.image.linkTab,padding:0,elements:[{id:"txtUrl",type:"text",label:c.lang.common.url,style:"width: 100%","default":"",setup:function(a,b){if(2==a){var c=b.data("cke-saved-href");c||(c=b.getAttribute("href"));this.setValue(c)}},commit:function(a,b){if(2==a&&(this.getValue()||this.isChanged())){var d=decodeURI(this.getValue());b.data("cke-saved-href",d);b.setAttribute("href",d);if(this.getValue()||!c.config.image_removeLinkByEmptyURL)this.getDialog().addLink= -!0}}},{type:"button",id:"browse",filebrowser:{action:"Browse",target:"Link:txtUrl",url:c.config.filebrowserImageBrowseLinkUrl},style:"float:right",hidden:!0,label:c.lang.common.browseServer},{id:"cmbTarget",type:"select",requiredContent:"a[target]",label:c.lang.common.target,"default":"",items:[[c.lang.common.notSet,""],[c.lang.common.targetNew,"_blank"],[c.lang.common.targetTop,"_top"],[c.lang.common.targetSelf,"_self"],[c.lang.common.targetParent,"_parent"]],setup:function(a,b){2==a&&this.setValue(b.getAttribute("target")|| -"")},commit:function(a,b){2==a&&(this.getValue()||this.isChanged())&&b.setAttribute("target",this.getValue())}}]},{id:"Upload",hidden:!0,filebrowser:"uploadButton",label:c.lang.image.upload,elements:[{type:"file",id:"upload",label:c.lang.image.btnUpload,style:"height:40px",size:38},{type:"fileButton",id:"uploadButton",filebrowser:"info:txtUrl",label:c.lang.image.btnUpload,"for":["Upload","upload"]}]},{id:"advanced",label:c.lang.common.advancedTab,elements:[{type:"hbox",widths:["50%","25%","25%"], -children:[{type:"text",id:"linkId",requiredContent:"img[id]",label:c.lang.common.id,setup:function(a,b){a==f&&this.setValue(b.getAttribute("id"))},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("id",this.getValue())}},{id:"cmbLangDir",type:"select",requiredContent:"img[dir]",style:"width : 100px;",label:c.lang.common.langDir,"default":"",items:[[c.lang.common.notSet,""],[c.lang.common.langDirLtr,"ltr"],[c.lang.common.langDirRtl,"rtl"]],setup:function(a,b){a==f&&this.setValue(b.getAttribute("dir"))}, -commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("dir",this.getValue())}},{type:"text",id:"txtLangCode",requiredContent:"img[lang]",label:c.lang.common.langCode,"default":"",setup:function(a,b){a==f&&this.setValue(b.getAttribute("lang"))},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("lang",this.getValue())}}]},{type:"text",id:"txtGenLongDescr",requiredContent:"img[longdesc]",label:c.lang.common.longDescr,setup:function(a,b){a==f&&this.setValue(b.getAttribute("longDesc"))}, -commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("longDesc",this.getValue())}},{type:"hbox",widths:["50%","50%"],children:[{type:"text",id:"txtGenClass",requiredContent:"img(cke-xyz)",label:c.lang.common.cssClass,"default":"",setup:function(a,b){a==f&&this.setValue(b.getAttribute("class"))},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("class",this.getValue())}},{type:"text",id:"txtGenTitle",requiredContent:"img[title]",label:c.lang.common.advisoryTitle, -"default":"",onChange:function(){g(this.getDialog())},setup:function(a,b){a==f&&this.setValue(b.getAttribute("title"))},commit:function(a,b){a==f?(this.getValue()||this.isChanged())&&b.setAttribute("title",this.getValue()):4==a?b.setAttribute("title",this.getValue()):8==a&&b.removeAttribute("title")}}]},{type:"text",id:"txtdlgGenStyle",requiredContent:"img{cke-xyz}",label:c.lang.common.cssStyle,validate:CKEDITOR.dialog.validate.inlineStyle(c.lang.common.invalidInlineStyle),"default":"",setup:function(a, -b){if(a==f){var c=b.getAttribute("style");!c&&b.$.style.cssText&&(c=b.$.style.cssText);this.setValue(c);var e=b.$.style.height,c=b.$.style.width,e=(e?e:"").match(k),c=(c?c:"").match(k);this.attributesInStyle={height:!!e,width:!!c}}},onChange:function(){i.call(this,"info:cmbFloat info:cmbAlign info:txtVSpace info:txtHSpace info:txtBorder info:txtWidth info:txtHeight".split(" "));g(this)},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("style",this.getValue())}}]}]}}; -CKEDITOR.dialog.add("image",function(c){return r(c,"image")});CKEDITOR.dialog.add("imagebutton",function(c){return r(c,"imagebutton")})})(); \ No newline at end of file + */ +(function () { + var r = function (c, j) { + function r() { + var a = arguments, b = this.getContentElement("advanced", "txtdlgGenStyle"); + b && b.commit.apply(b, a); + this.foreach(function (b) { + b.commit && "txtdlgGenStyle" != b.id && b.commit.apply(b, a) + }) + } + + function i(a) { + if (!s) { + s = 1; + var b = this.getDialog(), d = b.imageElement; + if (d) { + this.commit(f, d); + for (var a = [].concat(a), e = a.length, c, g = 0; g < e; g++)(c = b.getContentElement.apply(b, a[g].split(":"))) && c.setup(f, d) + } + s = 0 + } + } + + var f = 1, k = /^\s*(\d+)((px)|\%)?\s*$/i, v = /(^\s*(\d+)((px)|\%)?\s*$)|^$/i, o = /^\d+px$/, + w = function () { + var a = this.getValue(), b = this.getDialog(), d = a.match(k); + d && ("%" == d[2] && l(b, !1), a = d[1]); + b.lockRatio && (d = b.originalElement, "true" == d.getCustomData("isReady") && ("txtHeight" == this.id ? (a && "0" != a && (a = Math.round(d.$.width * (a / d.$.height))), isNaN(a) || b.setValueOf("info", "txtWidth", a)) : (a && "0" != a && (a = Math.round(d.$.height * (a / d.$.width))), isNaN(a) || b.setValueOf("info", "txtHeight", a)))); + g(b) + }, g = function (a) { + if (!a.originalElement || !a.preview)return 1; + a.commitContent(4, a.preview); + return 0 + }, s, l = function (a, b) { + if (!a.getContentElement("info", "ratioLock"))return null; + var d = a.originalElement; + if (!d)return null; + if ("check" == b) { + if (!a.userlockRatio && "true" == d.getCustomData("isReady")) { + var e = a.getValueOf("info", "txtWidth"), c = a.getValueOf("info", "txtHeight"), d = 1E3 * d.$.width / d.$.height, f = 1E3 * e / c; + a.lockRatio = !1; + !e && !c ? a.lockRatio = !0 : !isNaN(d) && !isNaN(f) && Math.round(d) == Math.round(f) && (a.lockRatio = !0) + } + } else void 0 != b ? a.lockRatio = b : (a.userlockRatio = 1, a.lockRatio = !a.lockRatio); + e = CKEDITOR.document.getById(p); + a.lockRatio ? + e.removeClass("cke_btn_unlocked") : e.addClass("cke_btn_unlocked"); + e.setAttribute("aria-checked", a.lockRatio); + CKEDITOR.env.hc && e.getChild(0).setHtml(a.lockRatio ? CKEDITOR.env.ie ? "■" : "▣" : CKEDITOR.env.ie ? "□" : "▢"); + return a.lockRatio + }, x = function (a) { + var b = a.originalElement; + if ("true" == b.getCustomData("isReady")) { + var d = a.getContentElement("info", "txtWidth"), e = a.getContentElement("info", "txtHeight"); + d && d.setValue(b.$.width); + e && e.setValue(b.$.height) + } + g(a) + }, y = function (a, b) { + function d(a, b) { + var d = a.match(k); + return d ? + ("%" == d[2] && (d[1] += "%", l(e, !1)), d[1]) : b + } + + if (a == f) { + var e = this.getDialog(), c = "", g = "txtWidth" == this.id ? "width" : "height", h = b.getAttribute(g); + h && (c = d(h, c)); + c = d(b.getStyle(g), c); + this.setValue(c) + } + }, t, q = function () { + var a = this.originalElement; + a.setCustomData("isReady", "true"); + a.removeListener("load", q); + a.removeListener("error", h); + a.removeListener("abort", h); + CKEDITOR.document.getById(m).setStyle("display", "none"); + this.dontResetSize || x(this); + this.firstLoad && CKEDITOR.tools.setTimeout(function () { + l(this, "check") + }, + 0, this); + this.dontResetSize = this.firstLoad = !1 + }, h = function () { + var a = this.originalElement; + a.removeListener("load", q); + a.removeListener("error", h); + a.removeListener("abort", h); + a = CKEDITOR.getUrl(CKEDITOR.plugins.get("image").path + "images/noimage.png"); + this.preview && this.preview.setAttribute("src", a); + CKEDITOR.document.getById(m).setStyle("display", "none"); + l(this, !1) + }, n = function (a) { + return CKEDITOR.tools.getNextId() + "_" + a + }, p = n("btnLockSizes"), u = n("btnResetSize"), m = n("ImagePreviewLoader"), A = n("previewLink"), + z = n("previewImage"); + return{title: c.lang.image["image" == j ? "title" : "titleButton"], minWidth: 420, minHeight: 360, onShow: function () { + this.linkEditMode = this.imageEditMode = this.linkElement = this.imageElement = !1; + this.lockRatio = !0; + this.userlockRatio = 0; + this.dontResetSize = !1; + this.firstLoad = !0; + this.addLink = !1; + var a = this.getParentEditor(), b = a.getSelection(), d = (b = b && b.getSelectedElement()) && a.elementPath(b).contains("a", 1); + CKEDITOR.document.getById(m).setStyle("display", "none"); + t = new CKEDITOR.dom.element("img", a.document); + this.preview = CKEDITOR.document.getById(z); + this.originalElement = a.document.createElement("img"); + this.originalElement.setAttribute("alt", ""); + this.originalElement.setCustomData("isReady", "false"); + if (d) { + this.linkElement = d; + this.linkEditMode = !0; + var c = d.getChildren(); + if (1 == c.count()) { + var g = c.getItem(0).getName(); + if ("img" == g || "input" == g)this.imageElement = c.getItem(0), "img" == this.imageElement.getName() ? this.imageEditMode = "img" : "input" == this.imageElement.getName() && (this.imageEditMode = "input") + } + "image" == j && + this.setupContent(2, d) + } + if (this.customImageElement)this.imageEditMode = "img", this.imageElement = this.customImageElement, delete this.customImageElement; else if (b && "img" == b.getName() && !b.data("cke-realelement") || b && "input" == b.getName() && "image" == b.getAttribute("type"))this.imageEditMode = b.getName(), this.imageElement = b; + this.imageEditMode ? (this.cleanImageElement = this.imageElement, this.imageElement = this.cleanImageElement.clone(!0, !0), this.setupContent(f, this.imageElement)) : this.imageElement = a.document.createElement("img"); + l(this, !0); + CKEDITOR.tools.trim(this.getValueOf("info", "txtUrl")) || (this.preview.removeAttribute("src"), this.preview.setStyle("display", "none")) + }, onOk: function () { + if (this.imageEditMode) { + var a = this.imageEditMode; + "image" == j && "input" == a && confirm(c.lang.image.button2Img) ? (this.imageElement = c.document.createElement("img"), this.imageElement.setAttribute("alt", ""), c.insertElement(this.imageElement)) : "image" != j && "img" == a && confirm(c.lang.image.img2Button) ? (this.imageElement = c.document.createElement("input"), + this.imageElement.setAttributes({type: "image", alt: ""}), c.insertElement(this.imageElement)) : (this.imageElement = this.cleanImageElement, delete this.cleanImageElement) + } else"image" == j ? this.imageElement = c.document.createElement("img") : (this.imageElement = c.document.createElement("input"), this.imageElement.setAttribute("type", "image")), this.imageElement.setAttribute("alt", ""); + this.linkEditMode || (this.linkElement = c.document.createElement("a")); + this.commitContent(f, this.imageElement); + this.commitContent(2, this.linkElement); + this.imageElement.getAttribute("style") || this.imageElement.removeAttribute("style"); + this.imageEditMode ? !this.linkEditMode && this.addLink ? (c.insertElement(this.linkElement), this.imageElement.appendTo(this.linkElement)) : this.linkEditMode && !this.addLink && (c.getSelection().selectElement(this.linkElement), c.insertElement(this.imageElement)) : this.addLink ? this.linkEditMode ? c.insertElement(this.imageElement) : (c.insertElement(this.linkElement), this.linkElement.append(this.imageElement, !1)) : c.insertElement(this.imageElement) + }, + onLoad: function () { + "image" != j && this.hidePage("Link"); + var a = this._.element.getDocument(); + this.getContentElement("info", "ratioLock") && (this.addFocusable(a.getById(u), 5), this.addFocusable(a.getById(p), 5)); + this.commitContent = r + }, onHide: function () { + this.preview && this.commitContent(8, this.preview); + this.originalElement && (this.originalElement.removeListener("load", q), this.originalElement.removeListener("error", h), this.originalElement.removeListener("abort", h), this.originalElement.remove(), this.originalElement = !1); + delete this.imageElement + }, contents: [ + {id: "info", label: c.lang.image.infoTab, accessKey: "I", elements: [ + {type: "vbox", padding: 0, children: [ + {type: "hbox", widths: ["280px", "110px"], align: "right", children: [ + {id: "txtUrl", type: "text", label: c.lang.common.url, required: !0, onChange: function () { + var a = this.getDialog(), b = this.getValue(); + if (0 < b.length) { + var a = this.getDialog(), d = a.originalElement; + a.preview.removeStyle("display"); + d.setCustomData("isReady", "false"); + var c = CKEDITOR.document.getById(m); + c && c.setStyle("display", + ""); + d.on("load", q, a); + d.on("error", h, a); + d.on("abort", h, a); + d.setAttribute("src", b); + t.setAttribute("src", b); + a.preview.setAttribute("src", t.$.src); + g(a) + } else a.preview && (a.preview.removeAttribute("src"), a.preview.setStyle("display", "none")) + }, setup: function (a, b) { + if (a == f) { + var d = b.data("cke-saved-src") || b.getAttribute("src"); + this.getDialog().dontResetSize = !0; + this.setValue(d); + this.setInitValue() + } + }, commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) ? (b.data("cke-saved-src", this.getValue()), b.setAttribute("src", + this.getValue())) : 8 == a && (b.setAttribute("src", ""), b.removeAttribute("src")) + }, validate: CKEDITOR.dialog.validate.notEmpty(c.lang.image.urlMissing)}, + {type: "button", id: "browse", style: "display:inline-block;margin-top:10px;", align: "center", label: c.lang.common.browseServer, hidden: !0, filebrowser: "info:txtUrl"} + ]} + ]}, + {id: "txtAlt", type: "text", label: c.lang.image.alt, accessKey: "T", "default": "", onChange: function () { + g(this.getDialog()) + }, setup: function (a, b) { + a == f && this.setValue(b.getAttribute("alt")) + }, commit: function (a, b) { + a == f ? (this.getValue() || this.isChanged()) && b.setAttribute("alt", this.getValue()) : 4 == a ? b.setAttribute("alt", this.getValue()) : 8 == a && b.removeAttribute("alt") + }}, + {type: "hbox", children: [ + {id: "basic", type: "vbox", children: [ + {type: "hbox", requiredContent: "img{width,height}", widths: ["50%", "50%"], children: [ + {type: "vbox", padding: 1, children: [ + {type: "text", width: "45px", id: "txtWidth", label: c.lang.common.width, onKeyUp: w, onChange: function () { + i.call(this, "advanced:txtdlgGenStyle") + }, validate: function () { + var a = this.getValue().match(v); + (a = !!(a && 0 !== parseInt(a[1], 10))) || alert(c.lang.common.invalidWidth); + return a + }, setup: y, commit: function (a, b, d) { + var c = this.getValue(); + a == f ? (c ? b.setStyle("width", CKEDITOR.tools.cssLength(c)) : b.removeStyle("width"), !d && b.removeAttribute("width")) : 4 == a ? c.match(k) ? b.setStyle("width", CKEDITOR.tools.cssLength(c)) : (a = this.getDialog().originalElement, "true" == a.getCustomData("isReady") && b.setStyle("width", a.$.width + "px")) : 8 == a && (b.removeAttribute("width"), b.removeStyle("width")) + }}, + {type: "text", id: "txtHeight", + width: "45px", label: c.lang.common.height, onKeyUp: w, onChange: function () { + i.call(this, "advanced:txtdlgGenStyle") + }, validate: function () { + var a = this.getValue().match(v); + (a = !!(a && 0 !== parseInt(a[1], 10))) || alert(c.lang.common.invalidHeight); + return a + }, setup: y, commit: function (a, b, d) { + var c = this.getValue(); + a == f ? (c ? b.setStyle("height", CKEDITOR.tools.cssLength(c)) : b.removeStyle("height"), !d && b.removeAttribute("height")) : 4 == a ? c.match(k) ? b.setStyle("height", CKEDITOR.tools.cssLength(c)) : (a = this.getDialog().originalElement, + "true" == a.getCustomData("isReady") && b.setStyle("height", a.$.height + "px")) : 8 == a && (b.removeAttribute("height"), b.removeStyle("height")) + }} + ]}, + {id: "ratioLock", type: "html", style: "margin-top:30px;width:40px;height:40px;", onLoad: function () { + var a = CKEDITOR.document.getById(u), b = CKEDITOR.document.getById(p); + a && (a.on("click", function (a) { + x(this); + a.data && a.data.preventDefault() + }, this.getDialog()), a.on("mouseover", function () { + this.addClass("cke_btn_over") + }, a), a.on("mouseout", function () { + this.removeClass("cke_btn_over") + }, + a)); + b && (b.on("click", function (a) { + l(this); + var b = this.originalElement, c = this.getValueOf("info", "txtWidth"); + if (b.getCustomData("isReady") == "true" && c) { + b = b.$.height / b.$.width * c; + if (!isNaN(b)) { + this.setValueOf("info", "txtHeight", Math.round(b)); + g(this) + } + } + a.data && a.data.preventDefault() + }, this.getDialog()), b.on("mouseover", function () { + this.addClass("cke_btn_over") + }, b), b.on("mouseout", function () { + this.removeClass("cke_btn_over") + }, b)) + }, html: '
' + c.lang.image.lockRatio + '' + c.lang.image.resetSize + "
"} + ]}, + {type: "vbox", padding: 1, children: [ + {type: "text", id: "txtBorder", requiredContent: "img{border-width}", width: "60px", label: c.lang.image.border, "default": "", onKeyUp: function () { + g(this.getDialog()) + }, + onChange: function () { + i.call(this, "advanced:txtdlgGenStyle") + }, validate: CKEDITOR.dialog.validate.integer(c.lang.image.validateBorder), setup: function (a, b) { + if (a == f) { + var d; + d = (d = (d = b.getStyle("border-width")) && d.match(/^(\d+px)(?: \1 \1 \1)?$/)) && parseInt(d[1], 10); + isNaN(parseInt(d, 10)) && (d = b.getAttribute("border")); + this.setValue(d) + } + }, commit: function (a, b, d) { + var c = parseInt(this.getValue(), 10); + a == f || 4 == a ? (isNaN(c) ? !c && this.isChanged() && b.removeStyle("border") : (b.setStyle("border-width", CKEDITOR.tools.cssLength(c)), + b.setStyle("border-style", "solid")), !d && a == f && b.removeAttribute("border")) : 8 == a && (b.removeAttribute("border"), b.removeStyle("border-width"), b.removeStyle("border-style"), b.removeStyle("border-color")) + }}, + {type: "text", id: "txtHSpace", requiredContent: "img{margin-left,margin-right}", width: "60px", label: c.lang.image.hSpace, "default": "", onKeyUp: function () { + g(this.getDialog()) + }, onChange: function () { + i.call(this, "advanced:txtdlgGenStyle") + }, validate: CKEDITOR.dialog.validate.integer(c.lang.image.validateHSpace), + setup: function (a, b) { + if (a == f) { + var d, c; + d = b.getStyle("margin-left"); + c = b.getStyle("margin-right"); + d = d && d.match(o); + c = c && c.match(o); + d = parseInt(d, 10); + c = parseInt(c, 10); + d = d == c && d; + isNaN(parseInt(d, 10)) && (d = b.getAttribute("hspace")); + this.setValue(d) + } + }, commit: function (a, b, c) { + var e = parseInt(this.getValue(), 10); + a == f || 4 == a ? (isNaN(e) ? !e && this.isChanged() && (b.removeStyle("margin-left"), b.removeStyle("margin-right")) : (b.setStyle("margin-left", CKEDITOR.tools.cssLength(e)), b.setStyle("margin-right", CKEDITOR.tools.cssLength(e))), + !c && a == f && b.removeAttribute("hspace")) : 8 == a && (b.removeAttribute("hspace"), b.removeStyle("margin-left"), b.removeStyle("margin-right")) + }}, + {type: "text", id: "txtVSpace", requiredContent: "img{margin-top,margin-bottom}", width: "60px", label: c.lang.image.vSpace, "default": "", onKeyUp: function () { + g(this.getDialog()) + }, onChange: function () { + i.call(this, "advanced:txtdlgGenStyle") + }, validate: CKEDITOR.dialog.validate.integer(c.lang.image.validateVSpace), setup: function (a, b) { + if (a == f) { + var c, e; + c = b.getStyle("margin-top"); + e = + b.getStyle("margin-bottom"); + c = c && c.match(o); + e = e && e.match(o); + c = parseInt(c, 10); + e = parseInt(e, 10); + c = c == e && c; + isNaN(parseInt(c, 10)) && (c = b.getAttribute("vspace")); + this.setValue(c) + } + }, commit: function (a, b, c) { + var e = parseInt(this.getValue(), 10); + a == f || 4 == a ? (isNaN(e) ? !e && this.isChanged() && (b.removeStyle("margin-top"), b.removeStyle("margin-bottom")) : (b.setStyle("margin-top", CKEDITOR.tools.cssLength(e)), b.setStyle("margin-bottom", CKEDITOR.tools.cssLength(e))), !c && a == f && b.removeAttribute("vspace")) : 8 == a && (b.removeAttribute("vspace"), + b.removeStyle("margin-top"), b.removeStyle("margin-bottom")) + }}, + {id: "cmbAlign", requiredContent: "img{float}", type: "select", widths: ["35%", "65%"], style: "width:90px", label: c.lang.common.align, "default": "", items: [ + [c.lang.common.notSet, ""], + [c.lang.common.alignLeft, "left"], + [c.lang.common.alignRight, "right"] + ], onChange: function () { + g(this.getDialog()); + i.call(this, "advanced:txtdlgGenStyle") + }, setup: function (a, b) { + if (a == f) { + var c = b.getStyle("float"); + switch (c) { + case "inherit": + case "none": + c = "" + } + !c && (c = (b.getAttribute("align") || + "").toLowerCase()); + this.setValue(c) + } + }, commit: function (a, b, c) { + var e = this.getValue(); + if (a == f || 4 == a) { + if (e ? b.setStyle("float", e) : b.removeStyle("float"), !c && a == f)switch (e = (b.getAttribute("align") || "").toLowerCase(), e) { + case "left": + case "right": + b.removeAttribute("align") + } + } else 8 == a && b.removeStyle("float") + }} + ]} + ]}, + {type: "vbox", height: "250px", children: [ + {type: "html", id: "htmlPreview", style: "width:95%;", html: "
" + CKEDITOR.tools.htmlEncode(c.lang.common.preview) + '
' + (c.config.image_previewText || "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.") + + "
"} + ]} + ]} + ]}, + {id: "Link", requiredContent: "a[href]", label: c.lang.image.linkTab, padding: 0, elements: [ + {id: "txtUrl", type: "text", label: c.lang.common.url, style: "width: 100%", "default": "", setup: function (a, b) { + if (2 == a) { + var c = b.data("cke-saved-href"); + c || (c = b.getAttribute("href")); + this.setValue(c) + } + }, commit: function (a, b) { + if (2 == a && (this.getValue() || this.isChanged())) { + var d = decodeURI(this.getValue()); + b.data("cke-saved-href", d); + b.setAttribute("href", d); + if (this.getValue() || !c.config.image_removeLinkByEmptyURL)this.getDialog().addLink = !0 + } + }}, + {type: "button", id: "browse", filebrowser: {action: "Browse", target: "Link:txtUrl", url: c.config.filebrowserImageBrowseLinkUrl}, style: "float:right", hidden: !0, label: c.lang.common.browseServer}, + {id: "cmbTarget", type: "select", requiredContent: "a[target]", label: c.lang.common.target, "default": "", items: [ + [c.lang.common.notSet, ""], + [c.lang.common.targetNew, "_blank"], + [c.lang.common.targetTop, "_top"], + [c.lang.common.targetSelf, "_self"], + [c.lang.common.targetParent, "_parent"] + ], setup: function (a, b) { + 2 == a && this.setValue(b.getAttribute("target") || + "") + }, commit: function (a, b) { + 2 == a && (this.getValue() || this.isChanged()) && b.setAttribute("target", this.getValue()) + }} + ]}, + {id: "Upload", hidden: !0, filebrowser: "uploadButton", label: c.lang.image.upload, elements: [ + {type: "file", id: "upload", label: c.lang.image.btnUpload, style: "height:40px", size: 38}, + {type: "fileButton", id: "uploadButton", filebrowser: "info:txtUrl", label: c.lang.image.btnUpload, "for": ["Upload", "upload"]} + ]}, + {id: "advanced", label: c.lang.common.advancedTab, elements: [ + {type: "hbox", widths: ["50%", "25%", "25%"], + children: [ + {type: "text", id: "linkId", requiredContent: "img[id]", label: c.lang.common.id, setup: function (a, b) { + a == f && this.setValue(b.getAttribute("id")) + }, commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) && b.setAttribute("id", this.getValue()) + }}, + {id: "cmbLangDir", type: "select", requiredContent: "img[dir]", style: "width : 100px;", label: c.lang.common.langDir, "default": "", items: [ + [c.lang.common.notSet, ""], + [c.lang.common.langDirLtr, "ltr"], + [c.lang.common.langDirRtl, "rtl"] + ], setup: function (a, b) { + a == f && this.setValue(b.getAttribute("dir")) + }, + commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) && b.setAttribute("dir", this.getValue()) + }}, + {type: "text", id: "txtLangCode", requiredContent: "img[lang]", label: c.lang.common.langCode, "default": "", setup: function (a, b) { + a == f && this.setValue(b.getAttribute("lang")) + }, commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) && b.setAttribute("lang", this.getValue()) + }} + ]}, + {type: "text", id: "txtGenLongDescr", requiredContent: "img[longdesc]", label: c.lang.common.longDescr, setup: function (a, b) { + a == f && this.setValue(b.getAttribute("longDesc")) + }, + commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) && b.setAttribute("longDesc", this.getValue()) + }}, + {type: "hbox", widths: ["50%", "50%"], children: [ + {type: "text", id: "txtGenClass", requiredContent: "img(cke-xyz)", label: c.lang.common.cssClass, "default": "", setup: function (a, b) { + a == f && this.setValue(b.getAttribute("class")) + }, commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) && b.setAttribute("class", this.getValue()) + }}, + {type: "text", id: "txtGenTitle", requiredContent: "img[title]", label: c.lang.common.advisoryTitle, + "default": "", onChange: function () { + g(this.getDialog()) + }, setup: function (a, b) { + a == f && this.setValue(b.getAttribute("title")) + }, commit: function (a, b) { + a == f ? (this.getValue() || this.isChanged()) && b.setAttribute("title", this.getValue()) : 4 == a ? b.setAttribute("title", this.getValue()) : 8 == a && b.removeAttribute("title") + }} + ]}, + {type: "text", id: "txtdlgGenStyle", requiredContent: "img{cke-xyz}", label: c.lang.common.cssStyle, validate: CKEDITOR.dialog.validate.inlineStyle(c.lang.common.invalidInlineStyle), "default": "", setup: function (a, b) { + if (a == f) { + var c = b.getAttribute("style"); + !c && b.$.style.cssText && (c = b.$.style.cssText); + this.setValue(c); + var e = b.$.style.height, c = b.$.style.width, e = (e ? e : "").match(k), c = (c ? c : "").match(k); + this.attributesInStyle = {height: !!e, width: !!c} + } + }, onChange: function () { + i.call(this, "info:cmbFloat info:cmbAlign info:txtVSpace info:txtHSpace info:txtBorder info:txtWidth info:txtHeight".split(" ")); + g(this) + }, commit: function (a, b) { + a == f && (this.getValue() || this.isChanged()) && b.setAttribute("style", this.getValue()) + }} + ]} + ]} + }; + CKEDITOR.dialog.add("image", function (c) { + return r(c, "image") + }); + CKEDITOR.dialog.add("imagebutton", function (c) { + return r(c, "imagebutton") + }) +})(); \ No newline at end of file