Dotclear

source: plugins/dcLegacyEditor/js/_post_editor.js @ 2614:db6f6a1f4f25

Revision 2614:db6f6a1f4f25, 4.0 KB checked in by Nicolas <nikrou77@…>, 12 years ago (diff)

Move legacy editor to a plugin. First step for alternate editors.
Addresses #1896

Line 
1$(function() {
2     if ($('#edit-entry').length==0) {return;}
3
4     // Get document format and prepare toolbars
5     var formatField = $('#post_format').get(0);
6     var last_post_format = $(formatField).val();
7     $(formatField).change(function() {
8          // Confirm post format change
9          if(window.confirm(dotclear.msg.confirm_change_post_format_noconvert)){
10               excerptTb.switchMode(this.value);
11               contentTb.switchMode(this.value);
12               last_post_format = $(this).val();
13          }else{
14               // Restore last format if change cancelled
15               $(this).val(last_post_format);
16          }
17
18          $('.format_control > *').addClass('hide');
19          $('.format_control:not(.control_no_'+$(this).val()+') > *').removeClass('hide');
20     });
21
22     var excerptTb = new jsToolBar(document.getElementById('post_excerpt'));
23     var contentTb = new jsToolBar(document.getElementById('post_content'));
24     excerptTb.context = contentTb.context = 'post';
25
26     $('.format_control > *').addClass('hide');
27     $('.format_control:not(.control_no_'+last_post_format+') > *').removeClass('hide');
28
29     if ($('#comment_content').length>0) {
30          var commentTb = new jsToolBar(document.getElementById('comment_content'));
31          commentTb.draw('xhtml');
32     }
33
34     $('#edit-entry').onetabload(function() {
35          // Markup validator
36          var v = $('<div class="format_control"><p><a id="a-validator"></a></p><div/>').get(0);
37          $('.format_control').before(v);
38          var a = $('#a-validator').get(0);
39          a.href = '#';
40          a.className = 'button ';
41          $(a).click(function() {
42
43               excerpt_content = $('#post_excerpt').css('display') != 'none' ? $('#post_excerpt').val() : $('#excerpt-area iframe').contents().find('body').html();
44               post_content   = $('#post_content').css('display') != 'none' ? $('#post_content').val() : $('#content-area iframe').contents().find('body').html();
45
46               var params = {
47                    xd_check: dotclear.nonce,
48                    f: 'validatePostMarkup',
49                    excerpt: excerpt_content,
50                    content: post_content,
51                    format: $('#post_format').get(0).value,
52                    lang: $('#post_lang').get(0).value
53               };
54
55               $.post('services.php',params,function(data) {
56                    if ($(data).find('rsp').attr('status') != 'ok') {
57                         alert($(data).find('rsp message').text());
58                         return false;
59                    }
60
61                    $('.message, .success, .error, .warning-msg').remove();
62
63                    if ($(data).find('valid').text() == 1) {
64                         var p = document.createElement('p');
65                         p.id = 'markup-validator';
66
67                         $(p).addClass('success');
68                         $(p).text(dotclear.msg.xhtml_valid);
69                         $('#entry-content h3').after(p);
70                         $(p).backgroundFade({sColor: dotclear.fadeColor.beginValidatorMsg, eColor: dotclear.fadeColor.endValidatorMsg, steps: 50},function() {
71                              $(this).backgroundFade({sColor: dotclear.fadeColor.endValidatorMsg, eColor: dotclear.fadeColor.beginValidatorMsg});
72                         });
73                    } else {
74                         var div = document.createElement('div');
75                         div.id = 'markup-validator';
76
77                         $(div).addClass('error');
78                         $(div).html('<p><strong>' + dotclear.msg.xhtml_not_valid + '</strong></p>' + $(data).find('errors').text());
79                         $('#entry-content h3').after(div);
80                         $(div).backgroundFade({sColor: dotclear.fadeColor.beginValidatorErr,eColor: dotclear.fadeColor.endValidatorErr, steps: 50},function() {
81                              $(this).backgroundFade({sColor: dotclear.fadeColor.endValidatorErr, eColor: dotclear.fadeColor.beginValidatorErr});
82                         });
83                    }
84
85                    if ( $('#post_excerpt').text() != excerpt_content || $('#post_content').text() != post_content ) {
86                         var pn = document.createElement('p');
87                         $(pn).addClass('warning-msg');
88                         $(pn).text(dotclear.msg.warning_validate_no_save_content);
89                         $('#entry-content h3').after(pn);
90                    }
91
92                    return false;
93               });
94
95               return false;
96          });
97
98          a.appendChild(document.createTextNode(dotclear.msg.xhtml_validator));
99
100          // Load toolbars
101          contentTb.switchMode(formatField.value);
102          excerptTb.switchMode(formatField.value);
103
104          // Check unsaved changes before XHTML conversion
105          var excerpt = $('#post_excerpt').val();
106          var content = $('#post_content').val();
107          $('#convert-xhtml').click(function() {
108               if (excerpt != $('#post_excerpt').val() || content != $('#post_content').val()) {
109                    return window.confirm(dotclear.msg.confirm_change_post_format);
110               }
111          });
112     });
113});
Note: See TracBrowser for help on using the repository browser.

Sites map