Patch #31385 » RM_31385_formating_toolbar_color_tools2_SVN.diff
| public/javascripts/jstoolbar/textile.js | ||
|---|---|---|
| 207 | 207 |
This.encloseSelection('%{background-color:' + color + '}', '%', function(str, prefix, suffix) {
|
| 208 | 208 |
css_tag_start = str.indexOf('%{');
|
| 209 | 209 |
css_tag_end = str.indexOf('}');
|
| 210 |
css_open_tag_length = 2; |
|
| 210 | 211 | |
| 211 | 212 |
if ( (css_tag_start != -1) && (css_tag_end != -1) ) {
|
| 212 | 213 |
// space added by encloseSelection |
| ... | ... | |
| 214 | 215 |
prefix = prefix.substring(1); |
| 215 | 216 |
} |
| 216 | 217 | |
| 217 |
// Already present, replace color
|
|
| 218 |
// Already present ?
|
|
| 218 | 219 |
bgcolor_tag = str.indexOf('%{background-color:');
|
| 219 | 220 |
bgcolor_tag2 = str.indexOf(';background-color:');
|
| 221 | ||
| 220 | 222 |
if (bgcolor_tag != -1) {
|
| 221 |
str = str.replace(/(\%\{background-color\:[A-Za-z0-9#]*)/g, prefix.slice(0, -1));
|
|
| 223 |
// Replace color in first tag |
|
| 224 |
prefix_open = prefix.slice(0, -1); |
|
| 225 |
str = str.replace(/(\%\{background-color\:[A-Za-z0-9#]*)/g, prefix_open);
|
|
| 222 | 226 |
} else if (bgcolor_tag2 != -1) {
|
| 227 |
// Replace color in further tag |
|
| 223 | 228 |
new_bgcolor_tag = ';' + prefix.substring(2).slice(0, -1); |
| 224 | 229 |
str = str.replace(/(;background-color\:[A-Za-z0-9#]*)/g, new_bgcolor_tag); |
| 225 | 230 |
} else {
|
| 226 | 231 |
// Insert bgcolor tag before the others |
| 227 |
new_bgcolor_tag = prefix.substring(2).slice(0, -1);
|
|
| 228 |
end_str = str.substring(css_tag_start + 2)
|
|
| 229 |
begin_str = str.substring(0, css_tag_start + 2);
|
|
| 230 |
str = begin_str + new_bgcolor_tag + ';' + end_str;
|
|
| 232 |
str_before_first_tag = str.substring(0, css_tag_start + css_open_tag_length);
|
|
| 233 |
new_bgcolor_tag = prefix.substring(css_open_tag_length).slice(0, -2);
|
|
| 234 |
str_after_color = str.substring(css_tag_start + css_open_tag_length)
|
|
| 235 |
str = str_before_first_tag + new_bgcolor_tag + ';' + str_after_color;
|
|
| 231 | 236 |
} |
| 232 | 237 |
} else {
|
| 233 | 238 |
str = prefix + str + suffix; |
| ... | ... | |
| 251 | 256 |
This.encloseSelection('%{color:' + color + '}', '%', function(str, prefix, suffix) {
|
| 252 | 257 |
css_tag_start = str.indexOf('%{');
|
| 253 | 258 |
css_tag_end = str.indexOf('}');
|
| 259 |
css_open_tag_length = 2; |
|
| 254 | 260 | |
| 255 | 261 |
if ( (css_tag_start != -1) && (css_tag_end != -1) ) {
|
| 256 | 262 |
// space added by encloseSelection |
| ... | ... | |
| 258 | 264 |
prefix = prefix.substring(1); |
| 259 | 265 |
} |
| 260 | 266 | |
| 261 |
// Already present, replace color
|
|
| 267 |
// Already present ?
|
|
| 262 | 268 |
color_tag = str.indexOf('%{color:');
|
| 263 | 269 |
color_tag2 = str.indexOf(';color:');
|
| 270 | ||
| 264 | 271 |
if (color_tag != -1) {
|
| 265 |
str = str.replace(/(\%\{color\:[A-Za-z0-9#]*)/g, prefix.slice(0, -1));
|
|
| 272 |
// Replace color in first tag |
|
| 273 |
prefix_opened = prefix.slice(0, -1); |
|
| 274 |
str = str.replace(/(\%\{color\:[A-Za-z0-9#]*)/g, prefix_opened);
|
|
| 266 | 275 |
} else if (color_tag2 != -1) {
|
| 276 |
// Replace color in further tag |
|
| 267 | 277 |
new_color_tag = ';' + prefix.substring(2).slice(0, -1); |
| 268 | 278 |
str = str.replace(/(;color\:[A-Za-z0-9#]*)/g, new_color_tag); |
| 269 | 279 |
} else {
|
| 270 | 280 |
// Insert color tag before the others |
| 271 |
new_color_tag = prefix.substring(2).slice(0, -1);
|
|
| 272 |
end_str = str.substring(css_tag_start + 2)
|
|
| 273 |
begin_str = str.substring(0, css_tag_start + 2);
|
|
| 274 |
str = begin_str + new_color_tag + ';' + end_str;
|
|
| 281 |
str_before_first_tag = str.substring(0, css_tag_start + css_open_tag_length);
|
|
| 282 |
new_color_tag = prefix.substring(css_open_tag_length).slice(0, -2);
|
|
| 283 |
str_after_color = str.substring(css_tag_start + css_open_tag_length)
|
|
| 284 |
str = str_before_first_tag + new_color_tag + ';' + str_after_color;
|
|
| 275 | 285 |
} |
| 276 | 286 |
} else {
|
| 277 | 287 |
str = prefix + str + suffix; |
| public/javascripts/jstoolbar/markdown.js | ||
|---|---|---|
| 196 | 196 |
// spacer |
| 197 | 197 |
jsToolBar.prototype.elements.space4 = {type: 'space'}
|
| 198 | 198 | |
| 199 |
// Selection Background Color |
|
| 200 |
jsToolBar.prototype.elements.bgcolor = {
|
|
| 201 |
type: 'button', |
|
| 202 |
title: 'Background Color', |
|
| 203 |
fn: {
|
|
| 204 |
wiki: function() {
|
|
| 205 |
var This = this; |
|
| 206 |
this.colorsMenu(function(color){
|
|
| 207 |
This.encloseSelection('<span style="background-color:' + color + '">', '</span>', function(str, prefix, suffix) {
|
|
| 208 |
css_tag_start = str.indexOf('<span style="');
|
|
| 209 |
css_tag_end = str.indexOf('</span>');
|
|
| 210 |
css_open_tag_length = 13; |
|
| 211 | ||
| 212 |
if ( (css_tag_start != -1) && (css_tag_end != -1) ) {
|
|
| 213 |
// space added by encloseSelection |
|
| 214 |
if (prefix.charAt(0) == ' ') {
|
|
| 215 |
prefix = prefix.substring(1); |
|
| 216 |
} |
|
| 217 | ||
| 218 |
// Already present ? |
|
| 219 |
bgcolor_tag = str.indexOf('<span style="background-color:');
|
|
| 220 |
bgcolor_tag2 = str.indexOf(';background-color:');
|
|
| 221 |
if (bgcolor_tag != -1) {
|
|
| 222 |
// Replace color in first tag |
|
| 223 |
prefix_opened = prefix.slice(0, -2); |
|
| 224 |
str = str.replace(/(\<span style\=\"background-color\:[A-Za-z0-9#]*)/g, prefix_opened); |
|
| 225 |
} else if (bgcolor_tag2 != -1) {
|
|
| 226 |
// Replace color in further tag |
|
| 227 |
new_bgcolor_tag = ';' + prefix.substring(css_open_tag_length).slice(0, -2); |
|
| 228 |
str = str.replace(/(;background-color\:[A-Za-z0-9#]*)/g, new_bgcolor_tag); |
|
| 229 |
} else {
|
|
| 230 |
// Insert bgcolor tag before the others |
|
| 231 |
str_before_first_tag = str.substring(0, css_tag_start + css_open_tag_length); |
|
| 232 |
new_bgcolor_tag = prefix.substring(css_open_tag_length).slice(0, -2); |
|
| 233 |
str_after_color = str.substring(css_tag_start + css_open_tag_length) |
|
| 234 |
str = str_before_first_tag + new_bgcolor_tag + ';' + str_after_color; |
|
| 235 |
} |
|
| 236 |
} else {
|
|
| 237 |
str = prefix + str + suffix; |
|
| 238 |
} |
|
| 239 | ||
| 240 |
return str; |
|
| 241 |
}); |
|
| 242 |
}); |
|
| 243 |
} |
|
| 244 |
} |
|
| 245 |
} |
|
| 246 | ||
| 247 |
// Selection Color |
|
| 248 |
jsToolBar.prototype.elements.color = {
|
|
| 249 |
type: 'button', |
|
| 250 |
title: 'Text Color', |
|
| 251 |
fn: {
|
|
| 252 |
wiki: function() {
|
|
| 253 |
var This = this; |
|
| 254 |
this.colorsMenu(function(color){
|
|
| 255 |
This.encloseSelection('<span style="color:' + color + '">', '</span>', function(str, prefix, suffix) {
|
|
| 256 |
css_tag_start = str.indexOf('<span style="');
|
|
| 257 |
css_tag_end = str.indexOf('</span>');
|
|
| 258 |
css_open_tag_length = 13; |
|
| 259 | ||
| 260 |
if ( (css_tag_start != -1) && (css_tag_end != -1) ) {
|
|
| 261 |
// space added by encloseSelection |
|
| 262 |
if (prefix.charAt(0) == ' ') {
|
|
| 263 |
prefix = prefix.substring(1); |
|
| 264 |
} |
|
| 265 | ||
| 266 |
// Already present ? |
|
| 267 |
color_tag = str.indexOf('<span style="color:');
|
|
| 268 |
color_tag2 = str.indexOf(';color:');
|
|
| 269 | ||
| 270 |
if (color_tag != -1) {
|
|
| 271 |
// Replace color in first tag |
|
| 272 |
prefix_opened = prefix.slice(0, -2); |
|
| 273 |
str = str.replace(/(\<span style\=\"color\:[A-Za-z0-9#]*)/g, prefix_opened); |
|
| 274 |
} else if (color_tag2 != -1) {
|
|
| 275 |
// Replace color in further tag |
|
| 276 |
new_color_tag = ';' + prefix.substring(13).slice(0, -2); |
|
| 277 |
str = str.replace(/(;color\:[A-Za-z0-9#]*)/g, new_color_tag); |
|
| 278 |
} else {
|
|
| 279 |
// Insert color tag before the others |
|
| 280 |
str_before_first_tag = str.substring(0, css_tag_start + css_open_tag_length); |
|
| 281 |
new_color_tag = prefix.substring(css_open_tag_length).slice(0, -2); |
|
| 282 |
str_after_color = str.substring(css_tag_start + css_open_tag_length) |
|
| 283 |
str = str_before_first_tag + new_color_tag + ';' + str_after_color; |
|
| 284 | ||
| 285 |
} |
|
| 286 |
} else {
|
|
| 287 |
str = prefix + str + suffix; |
|
| 288 |
} |
|
| 289 | ||
| 290 |
return str; |
|
| 291 |
}); |
|
| 292 |
}); |
|
| 293 |
} |
|
| 294 |
} |
|
| 295 |
} |
|
| 296 | ||
| 297 |
// spacer |
|
| 298 |
jsToolBar.prototype.elements.space4 = {type: 'space'}
|
|
| 299 | ||
| 199 | 300 |
// wiki page |
| 200 | 301 |
jsToolBar.prototype.elements.link = {
|
| 201 | 302 |
type: 'button', |