Dotclear

source: admin/js/_post.js @ 1824:eed1c6769645

Revision 1824:eed1c6769645, 9.0 KB checked in by kevin@…, 12 years ago (diff)

Ticket #1539 : espace : ultime frontière

Line 
1dotclear.commentExpander = function(line) {
2     var td = line.firstChild;
3
4     var img = document.createElement('img');
5     img.src = dotclear.img_plus_src;
6     img.alt = dotclear.img_plus_alt;
7     img.className = 'expand';
8     $(img).css('cursor','pointer');
9     img.line = line;
10     img.onclick = function() { dotclear.viewCommentContent(this,this.line); };
11
12     td.insertBefore(img,td.firstChild);
13};
14
15dotclear.viewCommentContent = function(img,line) {
16     var commentId = line.id.substr(1);
17
18     var tr = document.getElementById('ce'+commentId);
19
20     if (!tr) {
21          tr = document.createElement('tr');
22          tr.id = 'ce'+commentId;
23          var td = document.createElement('td');
24          td.colSpan = 6;
25          td.className = 'expand';
26          tr.appendChild(td);
27
28          img.src = dotclear.img_minus_src;
29          img.alt = dotclear.img_minus_alt;
30
31          // Get comment content
32          $.get('services.php',{f:'getCommentById',id: commentId},function(data) {
33               var rsp = $(data).children('rsp')[0];
34
35               if (rsp.attributes[0].value == 'ok') {
36                    var comment = $(rsp).find('comment_display_content').text();
37
38                    if (comment) {
39                         $(td).append(comment);
40                         var comment_email = $(rsp).find('comment_email').text();
41                         var comment_site = $(rsp).find('comment_site').text();
42                         var comment_ip = $(rsp).find('comment_ip').text();
43                         var comment_spam_disp = $(rsp).find('comment_spam_disp').text();
44
45                         $(td).append('<p><strong>' + dotclear.msg.website +
46                         '</strong> ' + comment_site + '<br />' +
47                         '<strong>' + dotclear.msg.email + '</strong> ' +
48                         comment_email + '<br />' + comment_spam_disp + '</p>');
49                    }
50               } else {
51                    alert($(rsp).find('message').text());
52               }
53          });
54
55          $(line).toggleClass('expand');
56          line.parentNode.insertBefore(tr,line.nextSibling);
57     }
58     else if (tr.style.display == 'none')
59     {
60          $(tr).toggle();
61          $(line).toggleClass('expand');
62          img.src = dotclear.img_minus_src;
63          img.alt = dotclear.img_minus_alt;
64     }
65     else
66     {
67          $(tr).toggle();
68          $(line).toggleClass('expand');
69          img.src = dotclear.img_plus_src;
70          img.alt = dotclear.img_plus_alt;
71     }
72};
73
74$(function() {
75     if (!document.getElementById) { return; }
76
77     if (document.getElementById('edit-entry'))
78     {
79          // Get document format and prepare toolbars
80          var formatField = $('#post_format').get(0);
81          var last_post_format = $(formatField).val();
82          $(formatField).change(function() {
83               // Confirm post format change
84               if(window.confirm(dotclear.msg.confirm_change_post_format_noconvert)){
85                    excerptTb.switchMode(this.value);
86                    contentTb.switchMode(this.value);
87                    last_post_format = $(this).val();
88               }else{
89                    // Restore last format if change cancelled
90                    $(this).val(last_post_format);
91               }
92               
93               $('.format_control > *').addClass('hide');
94               if( $(this).val() == 'xhtml' ) {
95                    $('.control_xhtml > *').removeClass('hide');
96               } else if ( $(this).val() == 'wiki' ) {
97                    $('.control_wiki > *').removeClass('hide');
98               }
99          });
100
101          var excerptTb = new jsToolBar(document.getElementById('post_excerpt'));
102          var contentTb = new jsToolBar(document.getElementById('post_content'));
103          excerptTb.context = contentTb.context = 'post';
104     }
105
106     if (document.getElementById('comment_content')) {
107          var commentTb = new jsToolBar(document.getElementById('comment_content'));
108     }
109
110     // Post preview
111     $('#post-preview').modalWeb($(window).width()-40,$(window).height()-40);
112
113     // Tabs events
114     $('#edit-entry').onetabload(function() {
115          dotclear.hideLockable();
116
117          // Add date picker
118          var post_dtPick = new datePicker($('#post_dt').get(0));
119          post_dtPick.img_top = '1.5em';
120          post_dtPick.draw();
121
122          // Confirm post deletion
123          $('input[name="delete"]').click(function() {
124               return window.confirm(dotclear.msg.confirm_delete_post);
125          });
126
127          // Markup validator
128          var v = $('<div class="format_control control_xhtml control_wiki"><p><a id="a-validator"></a></p><div/>').get(0);
129          $('.control_wiki').before(v);
130          var a = $('#a-validator').get(0);
131          a.href = '#';
132          a.className = 'button ';
133          $(a).click(function() {
134               
135               excerpt_content = $('#post_excerpt').css('display') != 'none' ? $('#post_excerpt').val() : $('#excerpt-area iframe').contents().find('body').html();
136               post_content    = $('#post_content').css('display') != 'none' ? $('#post_content').val() : $('#content-area iframe').contents().find('body').html();
137               
138               excerpt_content = excerpt_content.split('<p><br></p>').join('');
139               post_content    =    post_content.split('<p><br></p>').join('');
140               
141               var params = {
142                    xd_check: dotclear.nonce,
143                    f: 'validatePostMarkup',
144                    excerpt: excerpt_content,
145                    content: post_content,
146                    format: $('#post_format').get(0).value,
147                    lang: $('#post_lang').get(0).value
148               };
149
150               $.post('services.php',params,function(data) {
151                    if ($(data).find('rsp').attr('status') != 'ok') {
152                         alert($(data).find('rsp message').text());
153                         return false;
154                    }
155
156                    if ($(data).find('valid').text() == 1) {
157                         var p = document.createElement('p');
158                         p.id = 'markup-validator';
159
160                         if ($('#markup-validator').length > 0) {
161                              $('#markup-validator').remove();
162                         }
163
164                         $(p).addClass('message');
165                         $(p).text(dotclear.msg.xhtml_valid);
166                         $('#entry-content h3').after(p);
167                         $(p).backgroundFade({sColor:'#666666',eColor:'#ffcc00',steps:50},function() {
168                                   $(this).backgroundFade({sColor:'#ffcc00',eColor:'#666666'});
169                         });
170                    } else {
171                         var div = document.createElement('div');
172                         div.id = 'markup-validator';
173
174                         if ($('#markup-validator').length > 0) {
175                              $('#markup-validator').remove();
176                         }
177
178                         $(div).addClass('error');
179                         $(div).html('<p><strong>' + dotclear.msg.xhtml_not_valid + '</strong></p>' + $(data).find('errors').text());
180                         $('#entry-content h3').after(div);
181                         $(div).backgroundFade({sColor:'#ffffff',eColor:'#FFBABA',steps:50},function() {
182                                   $(this).backgroundFade({sColor:'#ffbaba',eColor:'#ffffff'});
183                         });
184                    }
185
186                    return false;
187               });
188
189               return false;
190          });
191
192          a.appendChild(document.createTextNode(dotclear.msg.xhtml_validator));
193         
194          $('.format_control > *').addClass('hide');
195          if ( last_post_format == 'xhtml' ) {
196               $('.control_xhtml > *').removeClass('hide');
197          } else if ( last_post_format == 'wiki' ) {
198               $('.control_wiki > *').removeClass('hide');
199          }
200
201          // Hide some fields
202          $('#notes-area label').toggleWithLegend($('#notes-area').children().not('label'),{
203               user_pref: 'dcx_post_notes',
204               legend_click:true,
205               hide: $('#post_notes').val() == ''
206          });
207          $('#create_cat').toggleWithLegend($('#create_cat').parent().children().not('#create_cat'),{
208               // no cookie on new category as we don't use this every day
209               legend_click: true
210          });
211          $('#post_lang').parent().children('label').toggleWithLegend($('#post_lang'),{
212               user_pref: 'dcx_post_lang',
213               legend_click: true
214          });
215          $('#post_password').parent().children('label').toggleWithLegend($('#post_password'),{
216               user_pref: 'dcx_post_password',
217               legend_click: true,
218               hide: $('#post_password').val() == ''
219          });
220          $('#post_status').parent().children('label').toggleWithLegend($('#post_status'),{
221               user_pref: 'dcx_post_status',
222               legend_click: true
223          });
224          $('#post_dt').parent().children('label').toggleWithLegend($('#post_dt').parent().children().not('label'),{
225               user_pref: 'dcx_post_dt',
226               legend_click: true
227          });
228          $('#label_format').toggleWithLegend($('#label_format').parent().children().not('#label_format'),{
229               user_pref: 'dcx_post_format',
230               legend_click: true
231          });
232          $('#cat_id').parent().children('label').toggleWithLegend($('#cat_id'),{
233               user_pref: 'cat_id',
234               legend_click: true
235          });
236          $('#label_comment_tb').toggleWithLegend($('#label_comment_tb').parent().children().not('#label_comment_tb'),{
237               user_pref: 'dcx_comment_tb',
238               legend_click: true
239          });
240          $('#post_url').parent().children('label').toggleWithLegend($('#post_url').parent().children().not('label'),{
241               user_pref: 'post_url',
242               legend_click: true
243          });
244          // We load toolbar on excerpt only when it's ready
245          $('#excerpt-area label').toggleWithLegend($('#excerpt-area').children().not('label'),{
246               user_pref: 'dcx_post_excerpt',
247               legend_click: true,
248               hide: $('#post_excerpt').val() == ''
249          });
250
251          // Load toolbars
252          contentTb.switchMode(formatField.value);
253          excerptTb.switchMode(formatField.value);
254
255          // Replace attachment remove links by a POST form submit
256          $('a.attachment-remove').click(function() {
257               this.href = '';
258               var m_name = $(this).parents('ul').find('li:first>a').attr('title');
259               if (window.confirm(dotclear.msg.confirm_remove_attachment.replace('%s',m_name))) {
260                    var f = $('#attachment-remove-hide').get(0);
261                    f.elements['media_id'].value = this.id.substring(11);
262                    f.submit();
263               }
264               return false;
265          });
266
267          // Check unsaved changes before XHTML conversion
268          var excerpt = $('#post_excerpt').val();
269          var content = $('#post_content').val();
270          $('#convert-xhtml').click(function() {
271               if (excerpt != $('#post_excerpt').val() || content != $('#post_content').val()) {
272                    return window.confirm(dotclear.msg.confirm_change_post_format);
273               }
274          });
275     });
276
277     $('#comments').onetabload(function() {
278          $('.comments-list tr.line').each(function() {
279               dotclear.commentExpander(this);
280          });
281          $('.checkboxes-helpers').each(function() {
282               dotclear.checkboxesHelpers(this);
283          });
284
285          dotclear.commentsActionsHelper();
286     });
287
288     $('#add-comment').onetabload(function() {
289          commentTb.draw('xhtml');
290     });
291});
Note: See TracBrowser for help on using the repository browser.

Sites map