Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CKEditor 3.0 Height

Tags:

ckeditor

Is there a way to set the height of CKEditor 3.0 to a percentage, such as 100%, such that it takes up the whole window?

I am currently using absolute values, but they do not blend well with my UI :(

CKEDITOR.replace('editor1',{
    height: '600px'
});
like image 775
clops Avatar asked Oct 09 '09 22:10

clops


People also ask

How to set height for CKEditor?

The CKEDITOR. config. height option sets the height of the editing area with CKEditor 4 content — it does not include the toolbar or the bottom bar. This configuration option accepts an integer (to denote a value in pixels) or any CSS-defined length unit except percent ( % ) values which are not supported.

How do I make CKEditor smaller?

This plugin allows you to resize the classic editor instance by dragging the resize handle (◢) located in the bottom right (or bottom left in the Right-to-Left mode) corner of the editor. It can be configured to make the editor resizable only in one direction (horizontally, vertically) or in both.

Is CKEditor responsive?

The Bootstrap Visibility plugin for CKEditor extends several dialog windows adding a "Responsive Visibility" tab that allows you to control if various elements should be displayed on different screen sizes.

Where is CKEditor config file?

The main configuration file is named config. js . This file can be found in the root of the CKEditor 4 installation folder.


Video Answer


2 Answers

First add a function for resizing your edtior:

function resizeEditor() {

  var defaultHeight = 300;
  var newHeight = window.innerHeight-150; 
  var height = defaultHeight > newHeight ? defaultHeight: newHeight;

  CKEDITOR.instances.editor1.resize('100%',height);
}

Note: 150 works for me, maybe change the value from 150 to more or less.

Call this from the window onresize Event:

window.onresize = function() {
  resizeEditor();
}

and add the first call to the constructor of your editor:

CKEDITOR.replace('editor1',
  {  
    on:
    {
      instanceReady: function(ev)
      {
        setTimeout(resizeEditor, 500);
      }
    }
  });
like image 106
marco Avatar answered Oct 12 '22 11:10

marco


After a lot of fiddling with this resizing stuff on ckeditor 4 I made up this which works perfectly perfectly for me:

in config.js:

// prevent flashing of resizing by setting the content panel to zero height before it is resized
config.height = '0px';
config.width = '100%'; 

jQuery:

$(document).ready(function(){

    // resize the editor(s) while the instance is ready
    CKEDITOR.on('instanceReady', function() { 
        var textEditHeight      = $(".textPanel").height();
        var ckTopHeight         = $("#cke_1_top").height();
        var ckContentsHeight    = $("#cke_1_contents").height();

        for (var i = 1; i < 10; i++) {
            $("#cke_"+i+"_contents").height( (textEditHeight - ckTopHeight - 10) + "px");

        }
    });

    // resize the editor(s) while resizing the browser
    $(window).resize(function(){
        var textEditHeight      = $(".textPanel").height();
        var ckTopHeight         = $("#cke_1_top").height();
        var ckContentsHeight    = $("#cke_1_contents").height();

        for (var i = 1; i < 10; i++) {
            $("#cke_"+i+"_contents").height( (textEditHeight - ckTopHeight - 10) + "px");
        }
    });

});

I have multiple instances of the editor of the exact same size in tabs, for every language one, hence the for loop. If you have one editor you can leave that line away and use the standard id cke_1_contents.

In this example the heights are taken from the first editors toolbar (cke_1_top) and contentpanel (cke_1_contents). The .textPanel height is the surrounding div were the editor should fit in. I added 10px because I needed that for my layout.

I think it can be a littlebit more efficiënt (it initiates the resizing as many times as there are editors) but for now it is finally working flawlessly in all my recent browsers (ff, ie, chrome and safari).

like image 30
klaaz Avatar answered Oct 12 '22 12:10

klaaz