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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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