| 54 | .textarea-toolbar { |
| 55 | margin-top: 0.3em; |
| 56 | margin-left: 0.2em; |
| 57 | border: solid #d7d7d7; |
| 58 | border-width: 1px 1px 1px 0; |
| 59 | height: 18px; |
| 60 | width: 52px; |
| 61 | } |
| 62 | .textarea-toolbar :link, .textarea-toolbar :visited { |
| 63 | background: transparent url(raw-attachment/wiki/TicketDescriptionTemplates/toolbar.png) no-repeat; |
| 64 | border: 1px solid #fff; |
| 65 | border-left-color: #d7d7d7; |
| 66 | cursor: default; |
| 67 | display: block; |
| 68 | float: left; |
| 69 | width: 24px; |
| 70 | height: 16px; |
| 71 | } |
| 72 | .textarea-toolbar :link:hover, .textarea-toolbar :visited:hover { |
| 73 | ckground-color: transparent; |
| 74 | border: 1px solid #fb2; |
| 75 | } |
| 76 | .textarea-toolbar a#em { background-position: 0 0 } |
| 77 | .textarea-toolbar a#strong { background-position: 0 -16px } |
| 215 | |
| 216 | function addToolbarButton(toolbar, id, title, click_fn) { |
| 217 | var a = document.createElement("a"); |
| 218 | a.href = "#"; |
| 219 | a.id = id; |
| 220 | a.title = title; |
| 221 | a.onclick = function() { |
| 222 | if ($(toolbar.target_textarea).prop("disabled") === false && |
| 223 | $(toolbar.target_textarea).prop("readonly") === false) { |
| 224 | try { click_fn() } catch (e) {} |
| 225 | } |
| 226 | return false; |
| 227 | }; |
| 228 | a.tabIndex = 400; |
| 229 | toolbar.appendChild(a); |
| 230 | } |
| 231 | |
| 232 | function encloseSelection(textarea, prefix, suffix) { |
| 233 | textarea.focus(); |
| 234 | var start, end, sel, scrollPos, subst; |
| 235 | if (document.selection != undefined) { |
| 236 | sel = document.selection.createRange().text; |
| 237 | } else if (textarea.setSelectionRange != undefined) { |
| 238 | start = textarea.selectionStart; |
| 239 | end = textarea.selectionEnd; |
| 240 | scrollPos = textarea.scrollTop; |
| 241 | sel = textarea.value.substring(start, end); |
| 242 | } |
| 243 | if (sel.match(/ $/)) { |
| 244 | sel = sel.substring(0, sel.length - 1); |
| 245 | suffix = suffix + " "; |
| 246 | } |
| 247 | subst = prefix + sel + suffix; |
| 248 | if (document.selection != undefined) { |
| 249 | var range = document.selection.createRange().text = subst; |
| 250 | textarea.caretPos -= suffix.length; |
| 251 | } else if (textarea.setSelectionRange != undefined) { |
| 252 | textarea.value = textarea.value.substring(0, start) + subst + textarea.value.substring(end); |
| 253 | if (sel) { |
| 254 | textarea.setSelectionRange(start + subst.length, start + subst.length); |
| 255 | } else { |
| 256 | textarea.setSelectionRange(start + prefix.length, start + prefix.length); |
| 257 | } |
| 258 | textarea.scrollTop = scrollPos; |
| 259 | } |
| 260 | } |
| 261 | |
| 262 | $("textarea.toolbar").each(function(index, element) { |
| 263 | if ($(element).prev('div.textarea-toolbar').length == 0) { |
| 264 | $(element).before('<div class="textarea-toolbar"></div>'); |
| 265 | var toolbar = $(element).prev('div.textarea-toolbar').get(0); |
| 266 | toolbar.target_textarea = element; |
| 267 | addToolbarButton(toolbar, "strong", "插入 C 代码块", function() {encloseSelection(element, "\n{{{#!c\n", "\n}}}\n");}); |
| 268 | addToolbarButton(toolbar, "em", "插入 C++ 代码块", function() {encloseSelection(element, "\n{{{#!cpp\n", "\n}}}\n");}); |
| 269 | } |
| 270 | }); |