1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
/**
* SCEditor Paragraph Formatting Plugin
* http://www.sceditor.com/
*
* Copyright (C) 2011-2013, Sam Clarke (samclarke.com)
*
* SCEditor is licensed under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*
* @fileoverview SCEditor Paragraph Formatting Plugin
* @author Sam Clarke
* @requires jQuery
*/
(function ($) {
'use strict';
$.sceditor.plugins.format = function () {
var base = this;
/**
* Default tags
* @type {Object}
* @private
*/
var tags = {
p: 'Paragraph',
h1: 'Heading 1',
h2: 'Heading 2',
h3: 'Heading 3',
h4: 'Heading 4',
h5: 'Heading 5',
h6: 'Heading 6',
address: 'Address',
pre: 'Preformatted Text'
};
/**
* Private functions
* @private
*/
var insertTag,
formatCmd;
base.init = function () {
var opts = this.opts,
pOpts = opts.paragraphformat;
// Don't enable if the BBCode plugin is enabled.
if (opts.plugins && opts.plugins.indexOf('bbcode') > -1) {
return;
}
if (pOpts) {
if (pOpts.tags) {
tags = pOpts.tags;
}
if (pOpts.excludeTags) {
$.each(pOpts.excludeTags, function (idx, val) {
delete tags[val];
});
}
}
if (!this.commands.format) {
this.commands.format = {
exec: formatCmd,
txtExec: formatCmd,
tooltip: 'Format Paragraph'
};
}
if (opts.toolbar === $.sceditor.defaultOptions.toolbar) {
opts.toolbar = opts.toolbar.replace(',color,',
',color,format,');
}
};
/**
* Inserts the specified tag into the editor
*
* @param {sceditor} editor
* @param {string} tag
* @private
*/
insertTag = function (editor, tag) {
if (editor.sourceMode()) {
editor.insert('<' + tag + '>', '</' + tag + '>');
} else {
editor.execCommand('formatblock', '<' + tag + '>');
}
};
/**
* Function for the exec and txtExec properties
*
* @param {node} caller
* @private
*/
formatCmd = function (caller) {
var editor = this,
$content = $('<div />');
$.each(tags, function (tag, val) {
$(
'<a class="sceditor-option" href="#">' +
(val.name || val) + '</a>'
).click(function () {
editor.closeDropDown(true);
if (val.exec) {
val.exec(editor);
} else {
insertTag(editor, tag);
}
return false;
})
.appendTo($content);
});
editor.createDropDown(caller, 'format', $content);
};
};
})(jQuery);
|