}
- this.addFiles(Array.prototype.slice.call(this.input.dom.files));
+ this.addFiles(Array.prototype.slice.call(this.input.dom.files), false);
},
- addFiles : function(far) {
+ addFiles : function(far, fire_add) {
+
+ var editor = this.editorcore;
+
if (!far.length) {
+ if (fire_add) {
+ editor.owner.fireEvent('editorevent', editor.owner, false);
+ editor.owner.fireEvent('imageadd', editor.owner, false);
+ }
return;
}
var f = far.pop();
if (!f.type.match(/^image/)) {
- this.addFiles(far);
+ this.addFiles(far, fire_add);
return;
}
var bl = sn && this.editorcore.enableBlocks ? Roo.htmleditor.Block.factory(sn) : false;
- var editor = this.editorcore;
var reader = new FileReader();
reader.addEventListener('load', (function() {
caption_display : 'none' //default to hide captions..
});
editor.insertAtCursor(fig.toHTML());
- editor.owner.fireEvent('editorevent', editor.owner, false);
- editor.owner.fireEvent('imageadd', editor.owner, false);
- this.addFiles(far);
+ this.addFiles(far, true);
return;
}
// just a standard img..
return;
}
editor.insertAtCursor('<img src="' + reader.result +'">');
- editor.owner.fireEvent('editorevent', editor.owner, false);
- editor.owner.fireEvent('imageadd', editor.owner, false);
- this.addFiles(far);
+ this.addFiles(far, true);
}).createDelegate(this));
reader.readAsDataURL(f);
selection.removeAllRanges();
selection.addRange(range);
this.updateToolbar(null, null, null);
+ if (sn.tagName.toUpperCase() == 'FIGURE') {
+ this.editor.fireEvent('imagedelete', this.editor, sn);
+ }
+
+ this.selectedNode = false;
this.editorcore.fireEditorEvent(false);
return;
}
selection.removeAllRanges();
selection.addRange(range);
+ if (sn.tagName.toUpperCase() == 'IMG"') {
+ this.editor.fireEvent('imagedelete', this.editor, sn);
+ }
+
+ this.selectedNode = false;
this.editorcore.fireEditorEvent(false);
* @param {Roo.HtmlEditorCore} this
*/
paste: true,
- /**
- * @event imageadd
- * Fires when on any editor when an image is added (excluding paste)
- * @param {Roo.HtmlEditorCore} this
- */
- imageadd: true ,
- /**
- * @event imagedelete
- * Fires when on any editor when an image is deleted
- * @param {Roo.HtmlEditorCore} this
- */
- imagedelete: true
+
});
this.defaultAutoCreate = {
tag: "textarea",
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
}
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
}
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
},
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
},
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
},
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
}
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
}
],
"returns" : []
},
+ {
+ "name" : "imageadd",
+ "type" : "function",
+ "desc" : "Fires when on any editor when an image is added (excluding paste)",
+ "sig" : "function (_self)\n{\n\n}",
+ "memberOf" : "",
+ "example" : "",
+ "deprecated" : "",
+ "since" : "",
+ "see" : "",
+ "params" : [
+ {
+ "name" : "this",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
+ "desc" : "",
+ "isOptional" : false
+ }
+ ],
+ "returns" : []
+ },
+ {
+ "name" : "imagedelete",
+ "type" : "function",
+ "desc" : "Fires when on any editor when an image is deleted",
+ "sig" : "function (_self, img)\n{\n\n}",
+ "memberOf" : "",
+ "example" : "",
+ "deprecated" : "",
+ "since" : "",
+ "see" : "",
+ "params" : [
+ {
+ "name" : "this",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
+ "desc" : "",
+ "isOptional" : false
+ },
+ {
+ "name" : "img",
+ "type" : "HTMLElement",
+ "desc" : "could also be a figure if blocks are enabled",
+ "isOptional" : false
+ }
+ ],
+ "returns" : []
+ },
+ {
+ "name" : "imageupdated",
+ "type" : "function",
+ "desc" : "Fires when on any editor when an image is changed (excluding paste)",
+ "sig" : "function (_self, img)\n{\n\n}",
+ "memberOf" : "",
+ "example" : "",
+ "deprecated" : "",
+ "since" : "",
+ "see" : "",
+ "params" : [
+ {
+ "name" : "this",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
+ "desc" : "",
+ "isOptional" : false
+ },
+ {
+ "name" : "img",
+ "type" : "HTMLElement",
+ "desc" : "could also be a figure if blocks are enabled",
+ "isOptional" : false
+ }
+ ],
+ "returns" : []
+ },
{
"name" : "initialize",
"type" : "function",
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
}
{
"name" : "paste",
"type" : "function",
- "desc" : "Fires after the user pastes into input",
- "sig" : "function (_self, e)\n{\n\n}",
- "memberOf" : "Roo.bootstrap.form.Input",
+ "desc" : "Fires when press user pastes into the editor",
+ "sig" : "function (_self)\n{\n\n}",
+ "memberOf" : "",
"example" : "",
"deprecated" : "",
"since" : "",
"params" : [
{
"name" : "this",
- "type" : "Roo.form.Field",
+ "type" : "Roo.HtmlEditorCore",
"desc" : "",
"isOptional" : false
- },
- {
- "name" : "e",
- "type" : "Roo.EventObject",
- "desc" : "The event Object",
- "isOptional" : false
}
],
"returns" : []
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
},
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
}
"params" : [],
"returns" : []
},
+ {
+ "name" : "stylesheetsclick",
+ "type" : "function",
+ "desc" : "Fires when press the Sytlesheets button",
+ "sig" : "function (_self)\n{\n\n}",
+ "memberOf" : "",
+ "example" : "",
+ "deprecated" : "",
+ "since" : "",
+ "see" : "",
+ "params" : [
+ {
+ "name" : "this",
+ "type" : "Roo.HtmlEditorCore",
+ "desc" : "",
+ "isOptional" : false
+ }
+ ],
+ "returns" : []
+ },
{
"name" : "sync",
"type" : "function",
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
},
*/
</span><span class="jsdoc-var">Roo.bootstrap.form.HtmlEditor </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">Roo.bootstrap.form.HtmlEditor.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.toolbars</span><span class="jsdoc-syntax">) {
- </span><span class="jsdoc-var">this.toolbars </span><span class="jsdoc-syntax">= [];
- }
- </span><span class="jsdoc-var">this.editorcore </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.HtmlEditorCore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">({ </span><span class="jsdoc-var">owner </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">} , </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">));
</span><span class="jsdoc-var">this.addEvents</span><span class="jsdoc-syntax">({
</span><span class="jsdoc-comment">/**
* @event initialize
* Fires when the editor is fully initialized (including the iframe)
- * @param {HtmlEditor} this
+ * @param {Roo.bootstrap.form.HtmlEditor} this
*/
</span><span class="jsdoc-var">initialize</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
</span><span class="jsdoc-comment">/**
* @event activate
* Fires when the editor is first receives the focus. Any insertion must wait
* until after this event.
- * @param {HtmlEditor} this
+ * @param {Roo.bootstrap.form.HtmlEditor} this
*/
</span><span class="jsdoc-var">activate</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
</span><span class="jsdoc-comment">/**
* @event beforesync
* Fires before the textarea is updated with content from the editor iframe. Return false
* to cancel the sync.
- * @param {HtmlEditor} this
+ * @param {Roo.bootstrap.form.HtmlEditor} this
* @param {String} html
*/
</span><span class="jsdoc-var">beforesync</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
* @event beforepush
* Fires before the iframe editor is updated with content from the textarea. Return false
* to cancel the push.
- * @param {HtmlEditor} this
+ * @param {Roo.bootstrap.form.HtmlEditor} this
* @param {String} html
*/
</span><span class="jsdoc-var">beforepush</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
</span><span class="jsdoc-comment">/**
* @event sync
* Fires when the textarea is updated with content from the editor iframe.
- * @param {HtmlEditor} this
+ * @param {Roo.bootstrap.form.HtmlEditor} this
* @param {String} html
*/
</span><span class="jsdoc-var">sync</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
</span><span class="jsdoc-comment">/**
* @event push
* Fires when the iframe editor is updated with content from the textarea.
- * @param {HtmlEditor} this
+ * @param {Roo.bootstrap.form.HtmlEditor} this
* @param {String} html
*/
</span><span class="jsdoc-var">push</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
</span><span class="jsdoc-comment">/**
* @event editmodechange
* Fires when the editor switches edit modes
- * @param {HtmlEditor} this
+ * @param {Roo.bootstrap.form.HtmlEditor} this
* @param {Boolean} sourceEdit True if source edit, false if standard editing.
*/
</span><span class="jsdoc-var">editmodechange</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
</span><span class="jsdoc-comment">/**
* @event editorevent
* Fires when on any editor (mouse up/down cursor movement etc.) - used for toolbar hooks.
- * @param {HtmlEditor} this
+ * @param {Roo.bootstrap.form.HtmlEditor} this
*/
</span><span class="jsdoc-var">editorevent</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
</span><span class="jsdoc-comment">/**
* @event firstfocus
* Fires when on first focus - needed by toolbars..
- * @param {HtmlEditor} this
+ * @param {Roo.bootstrap.form.HtmlEditor} this
*/
</span><span class="jsdoc-var">firstfocus</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
</span><span class="jsdoc-comment">/**
* @event autosave
* Auto save the htmlEditor value as a file into Events
- * @param {HtmlEditor} this
+ * @param {Roo.bootstrap.form.HtmlEditor} this
*/
</span><span class="jsdoc-var">autosave</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
</span><span class="jsdoc-comment">/**
* @event savedpreview
* preview the saved version of htmlEditor
- * @param {HtmlEditor} this
+ * @param {Roo.bootstrap.form.HtmlEditor} this
*/
- </span><span class="jsdoc-var">savedpreview</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
- </span><span class="jsdoc-syntax">});
+ </span><span class="jsdoc-var">savedpreview</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+ </span><span class="jsdoc-comment">/**
+ * @event stylesheetsclick
+ * Fires when press the Sytlesheets button
+ * @param {Roo.HtmlEditorCore} this
+ */
+ </span><span class="jsdoc-var">stylesheetsclick</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+ </span><span class="jsdoc-comment">/**
+ * @event paste
+ * Fires when press user pastes into the editor
+ * @param {Roo.HtmlEditorCore} this
+ */
+ </span><span class="jsdoc-var">paste</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+ </span><span class="jsdoc-comment">/**
+ * @event imageadd
+ * Fires when on any editor when an image is added (excluding paste)
+ * @param {Roo.bootstrap.form.HtmlEditor} this
+ */
+ </span><span class="jsdoc-var">imageadd</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true </span><span class="jsdoc-syntax">,
+ </span><span class="jsdoc-comment">/**
+ * @event imageupdated
+ * Fires when on any editor when an image is changed (excluding paste)
+ * @param {Roo.bootstrap.form.HtmlEditor} this
+ * @param {HTMLElement} img could also be a figure if blocks are enabled
+ */
+ </span><span class="jsdoc-var">imageupdate</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true </span><span class="jsdoc-syntax">,
+ </span><span class="jsdoc-comment">/**
+ * @event imagedelete
+ * Fires when on any editor when an image is deleted
+ * @param {Roo.bootstrap.form.HtmlEditor} this
+ * @param {HTMLElement} img could also be a figure if blocks are enabled
+ */
+ </span><span class="jsdoc-var">imagedelete</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
+ </span><span class="jsdoc-syntax">});
+ </span><span class="jsdoc-var">Roo.bootstrap.form.HtmlEditor.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.toolbars</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">this.toolbars </span><span class="jsdoc-syntax">= [];
+ }
+
+ </span><span class="jsdoc-var">this.editorcore </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.HtmlEditorCore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">({ </span><span class="jsdoc-var">owner </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">} , </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">));
+
};
}
- </span><span class="jsdoc-var">this.addFiles</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Array.prototype.slice.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.input.dom.files</span><span class="jsdoc-syntax">));
+ </span><span class="jsdoc-var">this.addFiles</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Array.prototype.slice.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.input.dom.files</span><span class="jsdoc-syntax">), </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
},
- </span><span class="jsdoc-var">addFiles </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">far</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">addFiles </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">far</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fire_add</span><span class="jsdoc-syntax">) {
+
+
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">editor </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.editorcore</span><span class="jsdoc-syntax">;
</span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">far.length</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fire_add</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">editor.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'editorevent'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">editor.owner</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">editor.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'imageadd'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">editor.owner</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
+ }
</span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
}
</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">f </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">far.pop</span><span class="jsdoc-syntax">();
</span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">f.type.match</span><span class="jsdoc-syntax">(/^image/)) {
- </span><span class="jsdoc-var">this.addFiles</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">far</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">this.addFiles</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">far</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fire_add</span><span class="jsdoc-syntax">);
</span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
}
</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">bl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sn </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">this.editorcore.enableBlocks </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">Roo.htmleditor.Block.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sn</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">editor </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.editorcore</span><span class="jsdoc-syntax">;
</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">reader </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">FileReader</span><span class="jsdoc-syntax">();
</span><span class="jsdoc-var">reader.addEventListener</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'load'</span><span class="jsdoc-syntax">, (</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
</span><span class="jsdoc-var">bl.image_src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">reader.result</span><span class="jsdoc-syntax">;
</span><span class="jsdoc-comment">//bl.caption = f.name;
</span><span class="jsdoc-var">bl.updateElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sn</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">editor.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'editorevent'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">editor</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">editor.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'editorevent'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">editor.owner</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">editor.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'imageupdate'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">editor.owner</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sn</span><span class="jsdoc-syntax">);
</span><span class="jsdoc-comment">// we only do the first file!! and replace.
</span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
}
</span><span class="jsdoc-var">caption_display </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'none' </span><span class="jsdoc-comment">//default to hide captions..
</span><span class="jsdoc-syntax">});
</span><span class="jsdoc-var">editor.insertAtCursor</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fig.toHTML</span><span class="jsdoc-syntax">());
- </span><span class="jsdoc-var">editor.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'editorevent'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">editor</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">this.addFiles</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">far</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
</span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
}
</span><span class="jsdoc-comment">// just a standard img..
</span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sn </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">sn.tagName.toUpperCase</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-string">'IMG'</span><span class="jsdoc-syntax">) {
</span><span class="jsdoc-var">sn.src </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">reader.result</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-var">editor.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'editorevent'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">editor</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">editor.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'editorevent'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">editor.owner</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">editor.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'imageupdate'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">editor.owner</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sn</span><span class="jsdoc-syntax">);
</span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
}
</span><span class="jsdoc-var">editor.insertAtCursor</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'<img src="' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">reader.result </span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">'">'</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">editor.owner.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'editorevent'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">editor</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">this.addFiles</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">far</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
})</span><span class="jsdoc-var">.createDelegate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">));
</span><span class="jsdoc-var">reader.readAsDataURL</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">);
</span><span class="jsdoc-var">selection.removeAllRanges</span><span class="jsdoc-syntax">();
</span><span class="jsdoc-var">selection.addRange</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">);
</span><span class="jsdoc-var">this.updateToolbar</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sn.tagName.toUpperCase</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-string">'FIGURE'</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">this.editor.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'imagedelete'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.editor</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sn</span><span class="jsdoc-syntax">);
+ }
+
+ </span><span class="jsdoc-var">this.selectedNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
</span><span class="jsdoc-var">this.editorcore.fireEditorEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
</span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
}
</span><span class="jsdoc-var">selection.removeAllRanges</span><span class="jsdoc-syntax">();
</span><span class="jsdoc-var">selection.addRange</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">range</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sn.tagName.toUpperCase</span><span class="jsdoc-syntax">() == </span><span class="jsdoc-string">'IMG"'</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">this.editor.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'imagedelete'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.editor</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sn</span><span class="jsdoc-syntax">);
+ }
+
+ </span><span class="jsdoc-var">this.selectedNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
</span><span class="jsdoc-var">this.editorcore.fireEditorEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
* Fires when press user pastes into the editor
* @param {Roo.HtmlEditorCore} this
*/
- </span><span class="jsdoc-var">paste</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
- </span><span class="jsdoc-syntax">});
+ </span><span class="jsdoc-var">paste</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+
+ });
</span><span class="jsdoc-var">this.defaultAutoCreate </span><span class="jsdoc-syntax">= {
</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"textarea"</span><span class="jsdoc-syntax">,
</span><span class="jsdoc-var">style</span><span class="jsdoc-syntax">:</span><span class="jsdoc-string">'width: ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.width </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'px;height: ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">this.height </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'px;'</span><span class="jsdoc-syntax">,
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
},
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
},
"params" : [],
"returns" : []
},
+ {
+ "name" : "stylesheetsclick",
+ "type" : "function",
+ "desc" : "Fires when press the Sytlesheets button",
+ "sig" : "function (_self)\n{\n\n}",
+ "memberOf" : "",
+ "example" : "",
+ "deprecated" : "",
+ "since" : "",
+ "see" : "",
+ "params" : [
+ {
+ "name" : "this",
+ "type" : "Roo.HtmlEditorCore",
+ "desc" : "",
+ "isOptional" : false
+ }
+ ],
+ "returns" : []
+ },
{
"name" : "initialize",
"type" : "function",
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
}
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
+ "desc" : "",
+ "isOptional" : false
+ }
+ ],
+ "returns" : []
+ },
+ {
+ "name" : "imageadd",
+ "type" : "function",
+ "desc" : "Fires when on any editor when an image is added (excluding paste)",
+ "sig" : "function (_self)\n{\n\n}",
+ "memberOf" : "",
+ "example" : "",
+ "deprecated" : "",
+ "since" : "",
+ "see" : "",
+ "params" : [
+ {
+ "name" : "this",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
}
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
}
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
},
],
"returns" : []
},
+ {
+ "name" : "imagedelete",
+ "type" : "function",
+ "desc" : "Fires when on any editor when an image is deleted",
+ "sig" : "function (_self, img)\n{\n\n}",
+ "memberOf" : "",
+ "example" : "",
+ "deprecated" : "",
+ "since" : "",
+ "see" : "",
+ "params" : [
+ {
+ "name" : "this",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
+ "desc" : "",
+ "isOptional" : false
+ },
+ {
+ "name" : "img",
+ "type" : "HTMLElement",
+ "desc" : "could also be a figure if blocks are enabled",
+ "isOptional" : false
+ }
+ ],
+ "returns" : []
+ },
{
"name" : "beforesync",
"type" : "function",
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
},
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
}
"returns" : []
},
{
- "name" : "savedpreview",
+ "name" : "imageupdated",
"type" : "function",
- "desc" : "preview the saved version of htmlEditor",
- "sig" : "function (_self)\n{\n\n}",
+ "desc" : "Fires when on any editor when an image is changed (excluding paste)",
+ "sig" : "function (_self, img)\n{\n\n}",
"memberOf" : "",
"example" : "",
"deprecated" : "",
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
+ },
+ {
+ "name" : "img",
+ "type" : "HTMLElement",
+ "desc" : "could also be a figure if blocks are enabled",
+ "isOptional" : false
}
],
"returns" : []
},
{
- "name" : "push",
+ "name" : "savedpreview",
"type" : "function",
- "desc" : "Fires when the iframe editor is updated with content from the textarea.",
- "sig" : "function (_self, html)\n{\n\n}",
+ "desc" : "preview the saved version of htmlEditor",
+ "sig" : "function (_self)\n{\n\n}",
"memberOf" : "",
"example" : "",
"deprecated" : "",
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
- "desc" : "",
- "isOptional" : false
- },
- {
- "name" : "html",
- "type" : "String",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
}
"returns" : []
},
{
- "name" : "autosave",
+ "name" : "paste",
"type" : "function",
- "desc" : "Auto save the htmlEditor value as a file into Events",
+ "desc" : "Fires when press user pastes into the editor",
"sig" : "function (_self)\n{\n\n}",
"memberOf" : "",
"example" : "",
"params" : [
{
"name" : "this",
- "type" : "HtmlEditor",
+ "type" : "Roo.HtmlEditorCore",
"desc" : "",
"isOptional" : false
}
"returns" : []
},
{
- "name" : "paste",
+ "name" : "push",
"type" : "function",
- "desc" : "Fires after the user pastes into input",
- "sig" : "function (_self, e)\n{\n\n}",
- "memberOf" : "Roo.bootstrap.form.Input",
+ "desc" : "Fires when the iframe editor is updated with content from the textarea.",
+ "sig" : "function (_self, html)\n{\n\n}",
+ "memberOf" : "",
"example" : "",
"deprecated" : "",
"since" : "",
"params" : [
{
"name" : "this",
- "type" : "Roo.form.Field",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
"desc" : "",
"isOptional" : false
},
{
- "name" : "e",
- "type" : "Roo.EventObject",
- "desc" : "The event Object",
+ "name" : "html",
+ "type" : "String",
+ "desc" : "",
+ "isOptional" : false
+ }
+ ],
+ "returns" : []
+ },
+ {
+ "name" : "autosave",
+ "type" : "function",
+ "desc" : "Auto save the htmlEditor value as a file into Events",
+ "sig" : "function (_self)\n{\n\n}",
+ "memberOf" : "",
+ "example" : "",
+ "deprecated" : "",
+ "since" : "",
+ "see" : "",
+ "params" : [
+ {
+ "name" : "this",
+ "type" : "Roo.bootstrap.form.HtmlEditor",
+ "desc" : "",
"isOptional" : false
}
],
render : function (_self)
{
_this.previewPanel = _self;
+ },
+ imageadd : function(a) {
+ Roo.log(['imageadd', a])
+ },
+ imageupdate : function(a,b) {
+ Roo.log(['imageupdate', a,b])
+ },
+ imagedelete : function(a,b) {
+ Roo.log(['imagedelete', a,b])
}
}
}
* Fires when press user pastes into the editor
* @param {Roo.HtmlEditorCore} this
*/
- paste: true
+ paste: true,
+ /**
+ * @event imageadd
+ * Fires when on any editor when an image is added (excluding paste)
+ * @param {Roo.HtmlEditorCore} this
+ */
+ imageadd: true ,
+ /**
+ * @event imagedelete
+ * Fires when on any editor when an image is deleted
+ * @param {Roo.HtmlEditorCore} this
+ */
+ imagedelete: true
});
this.defaultAutoCreate = {
tag: "textarea",
// Roo/form/HtmlEditor.js
Roo.form.HtmlEditor=function(A){Roo.form.HtmlEditor.superclass.constructor.call(this,A);if(!this.toolbars){this.toolbars=[];}this.editorcore=new Roo.HtmlEditorCore(Roo.apply({owner:this},A));};Roo.extend(Roo.form.HtmlEditor,Roo.form.Field,{clearUp:true,toolbars:false,resizable:false,height:300,width:500,stylesheets:false,cblack:false,cwhite:false,black:false,white:false,allowComments:false,enableBlocks:true,autoClean:true,bodyCls:'',language:'en',frameId:false,validationEvent:false,deferHeight:true,initialized:false,activated:false,onFocus:Roo.emptyFn,iframePad:3,hideMode:'offsets',actionMode:'container',defaultAutoCreate:{tag:"textarea",style:"width:500px;height:300px;",autocomplete:"new-password"}
-,initComponent:function(){this.addEvents({initialize:true,activate:true,beforesync:true,beforepush:true,sync:true,push:true,editmodechange:true,editorevent:true,firstfocus:true,autosave:true,savedpreview:true,stylesheetsclick:true,paste:true});this.defaultAutoCreate={tag:"textarea",style:'width: '+this.width+'px;height: '+this.height+'px;',autocomplete:"new-password"}
-;},createToolbar:function(A){Roo.log("create toolbars");if(!A.toolbars||!A.toolbars.length){A.toolbars=[new Roo.form.HtmlEditor.ToolbarStandard()];}for(var i=0;i<A.toolbars.length;i++){A.toolbars[i]=Roo.factory(typeof(A.toolbars[i])=='string'?{xtype:A.toolbars[i]}
-:A.toolbars[i],Roo.form.HtmlEditor);A.toolbars[i].init(A);}},getSelectedNode:function(){if(this.toolbars.length<2||!this.toolbars[1].tb){return false;}return this.toolbars[1].tb.selectedNode;},onRender:function(ct,A){var _t=this;Roo.form.HtmlEditor.superclass.onRender.call(this,ct,A);
-this.wrap=this.el.wrap({cls:'x-html-editor-wrap',cn:{cls:'x-html-editor-tb'}});this.editorcore.onRender(ct,A);if(this.resizable){this.resizeEl=new Roo.Resizable(this.wrap,{pinned:true,wrap:true,dynamic:true,minHeight:this.height,height:this.height,handles:this.resizable,width:this.width,listeners:{resize:function(r,w,h){_t.onResize(w,h);
+,initComponent:function(){this.addEvents({initialize:true,activate:true,beforesync:true,beforepush:true,sync:true,push:true,editmodechange:true,editorevent:true,firstfocus:true,autosave:true,savedpreview:true,stylesheetsclick:true,paste:true,imageadd:true,imagedelete:true}
+);this.defaultAutoCreate={tag:"textarea",style:'width: '+this.width+'px;height: '+this.height+'px;',autocomplete:"new-password"};},createToolbar:function(A){Roo.log("create toolbars");if(!A.toolbars||!A.toolbars.length){A.toolbars=[new Roo.form.HtmlEditor.ToolbarStandard()];
+}for(var i=0;i<A.toolbars.length;i++){A.toolbars[i]=Roo.factory(typeof(A.toolbars[i])=='string'?{xtype:A.toolbars[i]}:A.toolbars[i],Roo.form.HtmlEditor);A.toolbars[i].init(A);}},getSelectedNode:function(){if(this.toolbars.length<2||!this.toolbars[1].tb){return false;
+}return this.toolbars[1].tb.selectedNode;},onRender:function(ct,A){var _t=this;Roo.form.HtmlEditor.superclass.onRender.call(this,ct,A);this.wrap=this.el.wrap({cls:'x-html-editor-wrap',cn:{cls:'x-html-editor-tb'}});this.editorcore.onRender(ct,A);if(this.resizable){this.resizeEl=new Roo.Resizable(this.wrap,{pinned:true,wrap:true,dynamic:true,minHeight:this.height,height:this.height,handles:this.resizable,width:this.width,listeners:{resize:function(r,w,h){_t.onResize(w,h);
}}});}this.createToolbar(this);if(!this.width){this.setSize(this.wrap.getSize());}if(this.resizeEl){this.resizeEl.resizeTo.defer(100,this.resizeEl,[this.width,this.height]);}this.keyNav=new Roo.KeyNav(this.el,{"tab":function(e){e.preventDefault();var B=this.getValue();
var C=this.el.dom.selectionStart;var D=this.el.dom.selectionEnd;if(!e.shiftKey){this.setValue(B.substring(0,C)+"\t"+B.substring(D));this.el.dom.setSelectionRange(D+1,D+1);return;}var f=B.substring(0,C).split("\t");if(f.pop().length!=0){return;}this.setValue(f.join("\t")+B.substring(D));
this.el.dom.setSelectionRange(C-1,C-1);},"home":function(e){e.preventDefault();var B=this.el.dom.selectionStart;var C=this.getValue().split("\n");if(!C.length){return;}if(e.ctrlKey){this.el.dom.setSelectionRange(0,0);return;}var D=0;for(var i=0;i<C.length;