btn('align-left', 'justifyleft',true);
btn('align-center', 'justifycenter',true);
btn('align-right' , 'justifyright',true);
- btn('link', false, true, function(btn) {
- var url = this.selectedNode && this.selectedNode.tagName.toUpperCase() == 'A' ?
- this.selectedNode.getAttribute('href') : '';
-
- Roo.bootstrap.MessageBox.show({
- title : "Add / Edit Link URL",
- msg : "Enter the URL for the link",
- buttons: Roo.bootstrap.MessageBox.OKCANCEL,
- minWidth: 250,
- scope : this,
- prompt:true,
- multiline: false,
- modal : true,
- value : url,
- fn: function(pressed, newurl) {
- if (pressed != 'ok') {
- return;
- }
- if (url != '') {
- this.selectedNode.setAttribute('href', newurl);
- return;
- }
- if(newurl && newurl .match(/http(s):\/\/.+/)) {
- this.editorcore.relayCmd('createlink', newurl);
- }
- }
- });
- });
+ btn('link', false, true, this.onLinkClick);
+
+
+ btn('image', false, true, this.onImageClick);
btn('list','insertunorderedlist',true);
btn('list-ol','insertorderedlist',true);
},
+ onImageClick : function()
+ {
+ if (this.input) {
+ this.input.un('change', this.onFileSelected, this);
+ }
+ this.input = Roo.get(document.body).createChild({
+ tag: 'input',
+ type : 'file',
+ style : 'display:none',
+ multiple: 'multiple'
+ });
+ this.input.on('change', this.onFileSelected, this);
+ this.input.dom.click();
+ },
+
+ onFileSelected : function(e)
+ {
+ e.preventDefault();
+
+ if(typeof(this.input.dom.files) == 'undefined' || !this.input.dom.files.length){
+ return;
+ }
+
+
+ this.addFiles(Array.prototype.slice.call(this.input.dom.files));
+ },
+
+ addFiles : function(far) {
+
+ if (!far.length) {
+ return;
+ }
+
+ var f = far.pop();
+
+ if (!f.type.match(/^image/)) {
+ this.addFiles(far);
+ return;
+ }
+
+ var sn = this.selectedNode;
+
+ var bl = sn && this.editorcore.enableBlocks ? Roo.htmleditor.Block.factory(sn) : false;
+
+ var editor = this.editorcore;
+
+ var reader = new FileReader();
+ reader.addEventListener('load', (function() {
+ if (bl) {
+ bl.image_src = reader.result;
+ //bl.caption = f.name;
+ bl.updateElement(sn);
+ editor.owner.fireEvent('editorevent', editor, false);
+ // we only do the first file!! and replace.
+ return;
+ }
+ if (this.editorcore.enableBlocks) {
+ var fig = new Roo.htmleditor.BlockFigure({
+ image_src : reader.result,
+ caption : '',
+ caption_display : 'none' //default to hide captions..
+ });
+ editor.insertAtCursor(fig.toHTML());
+ editor.owner.fireEvent('editorevent', editor, false);
+ return;
+ }
+ // just a standard img..
+ if (sn && sn.tagName.toUpperCase() == 'IMG') {
+ sn.src = reader.result;
+ editor.owner.fireEvent('editorevent', editor, false);
+ return;
+ }
+ editor.insertAtCursor('<img src="' + reader.result +'">');
+ editor.owner.fireEvent('editorevent', editor, false);
+
+ }).createDelegate(this));
+ reader.readAsDataURL(f);
+
+
+ },
+
onBtnClick : function(id)
{
this.editorcore.focus();
},
+ onLinkClick : function(btn) {
+ var url = this.selectedNode && this.selectedNode.tagName.toUpperCase() == 'A' ?
+ this.selectedNode.getAttribute('href') : '';
+
+ Roo.bootstrap.MessageBox.show({
+ title : "Add / Edit Link URL",
+ msg : "Enter the URL for the link",
+ buttons: Roo.bootstrap.MessageBox.OKCANCEL,
+ minWidth: 250,
+ scope : this,
+ prompt:true,
+ multiline: false,
+ modal : true,
+ value : url,
+ fn: function(pressed, newurl) {
+ if (pressed != 'ok') {
+ this.editorcore.focus();
+ return;
+ }
+ if (url != '') {
+ this.selectedNode.setAttribute('href', newurl);
+ return;
+ }
+ if(newurl && newurl .match(/http(s):\/\/.+/)) {
+ this.editorcore.relayCmd('createlink', newurl);
+ }
+ this.editorcore.focus();
+ }
+ });
+ },
/**
* Protected method that will not generally be called directly. It triggers
* a toolbar update by reading the markup state of the current selection in the editor.