I have a Django web app which has various instances of ck-editor instances 
on a web page.By using on blur event I am saving whole of data of the 
instance in the database -

{% for editor in editors %}
<div id="{{editor.ck_id}}" name="{{editor.ck_id}}">
</div>
{% endfor %}

<script>
{% for editor in editors %}
   CKEDITOR.appendTo("{{editor.ck_id}}" ,
    {
        on: {
            blur: function(event){
                var data = event.editor.getData();
                console.log("data of {{editor.ck_id}} is " + data);

                 var request = $.ajax({
                     url: "/editor/save/",
                     type: "GET",
                     data: {
                         content : data,
                         content_id : "{{editor.ck_id}}"
                    },
                     dataType: "html"
                 });
            }
        }

    },


    "{{editor.data}}"
    );
{% endfor %}


Here ck_id and data are the two database fields of ckeditors.Django model 
is -

from django.db import models

class ckeditor(models.Model):
    ck_id = models.CharField(max_length=100,null=False,blank=False)
    data = models.TextField(null=True,blank=True)


I have stored editor's data as a text field.Now suppose I write this on one 
instance of ckeditor -

Tony Stark

     is Iron man.


Editor Image is -

<https://lh3.googleusercontent.com/-mDDD6-47674/VZHVu-OEqzI/AAAAAAAAAGM/9HkpIO2xGyQ/s1600/editor.png>




Editor source is - 

<https://lh3.googleusercontent.com/-lK0D9xWixCo/VZHV2GoouPI/AAAAAAAAAGU/VomS40FbTDs/s1600/editor_source.png>

It's weird that ck-editor does not have 
tag in source code(HTML format).Now when AJAX call is made I handle it like 
this -

def save(request):
if request.method == 'GET':
    editor_data = request.GET['content']
    editor_id = request.GET['content_id']

    print "data received"
    print "editor data is %s" %(editor_data)
    print "editor id is %s" %(editor_id)
else:
    print "No Data received"

editor = ckeditor.objects.get(ck_id=editor_id)
editor.data = editor_data
editor.save()


In database data looks like this -

<https://lh3.googleusercontent.com/-6E80Nzi9IVA/VZHWDit8GUI/AAAAAAAAAGc/Gy8JBNPzpGA/s1600/database.png>

One can see that the html is rendered as text field in the database.Now 
however when I query editor's data in python shell it shows like this -

<https://lh3.googleusercontent.com/-pBcwsipxYUU/VZHWKfIDtBI/AAAAAAAAAGk/bZF07Jox4EE/s1600/shell.png>

One can see now that since it was a text field it has filled some '\n' tags 
in between.

Now When I re start the server and set the data of every ck-editor instance 
again then this exception is raised -

Uncaught SyntaxError: Unexpected token ILLEGAL



This happened because the text(editor's data) which I sent got converted 
into illegal tokens.Do I need to convert text which I am sending into valid 
html or do I need to encode/decode that text?

Now my question is how to go about this complete procedure of fetching 
editor's data,storing it in database and then again reset data on 
restarting server. I have posted this question on several forums but many 
people have got no clue of what I am asking?

CK-EDITOR team has proudly mentioned that their community has been shifted 
to SO but I have got no replies from them either. I guess they only give 
support when user buys their license which costs 299$.

Can anybody please help me out in this? I am literally lost all hopes.I am 
getting no help for last 1 week and probably I will get some help this time 
around.

Thanks.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/02d4646d-2435-45e4-8ee6-8859b09c8451%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to