Dotclear

Changeset 2614:db6f6a1f4f25


Ignore:
Timestamp:
12/11/13 11:35:57 (12 years ago)
Author:
Nicolas <nikrou77@…>
Branch:
default
Message:

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

Files:
37 added
25 deleted
14 edited

Legend:

Unmodified
Added
Removed
  • admin/category.php

    r2566 r2614  
    176176dcPage::open($title, 
    177177     dcPage::jsConfirmClose('category-form'). 
    178      dcPage::jsToolBar(). 
    179178     dcPage::jsLoad('js/_category.js'), 
     179     $core->callBehavior('adminPostEditor'). 
    180180     dcPage::breadcrumb($elements) 
    181181); 
  • admin/comment.php

    r2566 r2614  
    181181dcPage::open(__('Edit comment'), 
    182182     dcPage::jsConfirmClose('comment-form'). 
    183      dcPage::jsToolBar(). 
    184183     dcPage::jsLoad('js/_comment.js'). 
     184     $core->callBehavior('adminPostEditor'). 
    185185     # --BEHAVIOR-- adminCommentHeaders 
    186186     $core->callBehavior('adminCommentHeaders'), 
  • admin/index.php

    r2566 r2614  
    171171-------------------------------------------------------- */ 
    172172dcPage::open(__('Dashboard'), 
    173      dcPage::jsToolBar(). 
    174173     dcPage::jsLoad('js/_index.js'). 
     174     $core->callBehavior('adminPostEditor'). 
    175175     # --BEHAVIOR-- adminDashboardHeaders 
    176176     $core->callBehavior('adminDashboardHeaders'), 
  • admin/js/_category.js

    r2566 r2614  
    22     dotclear.hideLockable(); 
    33 
    4      var tbCategory = new jsToolBar(document.getElementById('cat_desc')); 
    5      tbCategory.draw('xhtml'); 
     4     if ($.isFunction('jsToolBar')) { 
     5          var tbCategory = new jsToolBar(document.getElementById('cat_desc')); 
     6          tbCategory.draw('xhtml'); 
     7     } 
    68}); 
  • admin/js/_comment.js

    r2566 r2614  
    11$(function() { 
    2      if (!document.getElementById) { return; } 
    3  
    4      var tbComment = new jsToolBar(document.getElementById('comment_content')); 
    5      tbComment.draw('xhtml'); 
     2     if ($.isFunction('jsToolBar')) { 
     3          var tbComment = new jsToolBar(document.getElementById('comment_content')); 
     4          tbComment.draw('xhtml'); 
     5     } 
    66 
    77     $('#comment-form input[name="delete"]').click(function() { 
  • admin/js/_index.js

    r1699 r2614  
    22     var f = $('#quick-entry'); 
    33     if (f.length > 0) { 
    4           var contentTb = new jsToolBar($('#post_content',f)[0]); 
    5           contentTb.switchMode($('#post_format',f).val()); 
     4          if ($.isFunction('jsToolBar')) { 
     5               var contentTb = new jsToolBar($('#post_content',f)[0]); 
     6               contentTb.switchMode($('#post_format',f).val()); 
     7          } 
    68 
    79          $('input[name=save]',f).click(function() { 
     
    2123 
    2224          function quickPost(f,status) { 
    23                if (contentTb.getMode() == 'wysiwyg') { 
     25               if ($.isFunction('jsToolBar') && (contentTb.getMode() == 'wysiwyg')) { 
    2426                    contentTb.syncContents('iframe'); 
    2527               } 
     
    5557                         $('#post_title',f).val(''); 
    5658                         $('#post_content',f).val(''); 
    57                          if (contentTb.getMode() == 'wysiwyg') { 
     59                         if ($.isFunction('jsToolBar') &&  (contentTb.getMode() == 'wysiwyg')) { 
    5860                              contentTb.syncContents('textarea'); 
    5961                         } 
  • admin/js/_post.js

    r2556 r2614  
    5151 
    5252$(function() { 
    53      if (!document.getElementById) { return; } 
    54  
    55      if (document.getElementById('edit-entry')) 
    56      { 
    57           // Get document format and prepare toolbars 
    58           var formatField = $('#post_format').get(0); 
    59           var last_post_format = $(formatField).val(); 
    60           $(formatField).change(function() { 
    61                // Confirm post format change 
    62                if(window.confirm(dotclear.msg.confirm_change_post_format_noconvert)){ 
    63                     excerptTb.switchMode(this.value); 
    64                     contentTb.switchMode(this.value); 
    65                     last_post_format = $(this).val(); 
    66                }else{ 
    67                     // Restore last format if change cancelled 
    68                     $(this).val(last_post_format); 
    69                } 
    70  
    71                $('.format_control > *').addClass('hide'); 
    72                $('.format_control:not(.control_no_'+$(this).val()+') > *').removeClass('hide'); 
    73           }); 
    74  
    75           var excerptTb = new jsToolBar(document.getElementById('post_excerpt')); 
    76           var contentTb = new jsToolBar(document.getElementById('post_content')); 
    77           excerptTb.context = contentTb.context = 'post'; 
    78      } 
    79  
    80      if (document.getElementById('comment_content')) { 
    81           var commentTb = new jsToolBar(document.getElementById('comment_content')); 
    82           commentTb.draw('xhtml'); 
    83      } 
    84  
    8553     // Post preview 
    8654     $('#post-preview').modalWeb($(window).width()-40,$(window).height()-40); 
     
    9967               return window.confirm(dotclear.msg.confirm_delete_post); 
    10068          }); 
    101  
    102           // Markup validator 
    103           var v = $('<div class="format_control"><p><a id="a-validator"></a></p><div/>').get(0); 
    104           $('.format_control').before(v); 
    105           var a = $('#a-validator').get(0); 
    106           a.href = '#'; 
    107           a.className = 'button '; 
    108           $(a).click(function() { 
    109  
    110                excerpt_content = $('#post_excerpt').css('display') != 'none' ? $('#post_excerpt').val() : $('#excerpt-area iframe').contents().find('body').html(); 
    111                post_content   = $('#post_content').css('display') != 'none' ? $('#post_content').val() : $('#content-area iframe').contents().find('body').html(); 
    112  
    113                var params = { 
    114                     xd_check: dotclear.nonce, 
    115                     f: 'validatePostMarkup', 
    116                     excerpt: excerpt_content, 
    117                     content: post_content, 
    118                     format: $('#post_format').get(0).value, 
    119                     lang: $('#post_lang').get(0).value 
    120                }; 
    121  
    122                $.post('services.php',params,function(data) { 
    123                     if ($(data).find('rsp').attr('status') != 'ok') { 
    124                          alert($(data).find('rsp message').text()); 
    125                          return false; 
    126                     } 
    127  
    128                     $('.message, .success, .error, .warning-msg').remove(); 
    129  
    130                     if ($(data).find('valid').text() == 1) { 
    131                          var p = document.createElement('p'); 
    132                          p.id = 'markup-validator'; 
    133  
    134                          $(p).addClass('success'); 
    135                          $(p).text(dotclear.msg.xhtml_valid); 
    136                          $('#entry-content h3').after(p); 
    137                          $(p).backgroundFade({sColor: dotclear.fadeColor.beginValidatorMsg, eColor: dotclear.fadeColor.endValidatorMsg, steps: 50},function() { 
    138                                    $(this).backgroundFade({sColor: dotclear.fadeColor.endValidatorMsg, eColor: dotclear.fadeColor.beginValidatorMsg}); 
    139                          }); 
    140                     } else { 
    141                          var div = document.createElement('div'); 
    142                          div.id = 'markup-validator'; 
    143  
    144                          $(div).addClass('error'); 
    145                          $(div).html('<p><strong>' + dotclear.msg.xhtml_not_valid + '</strong></p>' + $(data).find('errors').text()); 
    146                          $('#entry-content h3').after(div); 
    147                          $(div).backgroundFade({sColor: dotclear.fadeColor.beginValidatorErr,eColor: dotclear.fadeColor.endValidatorErr, steps: 50},function() { 
    148                                    $(this).backgroundFade({sColor: dotclear.fadeColor.endValidatorErr, eColor: dotclear.fadeColor.beginValidatorErr}); 
    149                          }); 
    150                     } 
    151  
    152                     if ( $('#post_excerpt').text() != excerpt_content || $('#post_content').text() != post_content ) { 
    153                          var pn = document.createElement('p'); 
    154                          $(pn).addClass('warning-msg'); 
    155                          $(pn).text(dotclear.msg.warning_validate_no_save_content); 
    156                          $('#entry-content h3').after(pn); 
    157                     } 
    158  
    159                     return false; 
    160                }); 
    161  
    162                return false; 
    163           }); 
    164  
    165           a.appendChild(document.createTextNode(dotclear.msg.xhtml_validator)); 
    166  
    167           $('.format_control > *').addClass('hide'); 
    168           $('.format_control:not(.control_no_'+last_post_format+') > *').removeClass('hide'); 
    16969 
    17070          // Hide some fields 
     
    218118          }); 
    219119 
    220           // Load toolbars 
    221           contentTb.switchMode(formatField.value); 
    222           excerptTb.switchMode(formatField.value); 
    223  
    224120          // Replace attachment remove links by a POST form submit 
    225121          $('a.attachment-remove').click(function() { 
     
    232128               } 
    233129               return false; 
    234           }); 
    235  
    236           // Check unsaved changes before XHTML conversion 
    237           var excerpt = $('#post_excerpt').val(); 
    238           var content = $('#post_content').val(); 
    239           $('#convert-xhtml').click(function() { 
    240                if (excerpt != $('#post_excerpt').val() || content != $('#post_content').val()) { 
    241                     return window.confirm(dotclear.msg.confirm_change_post_format); 
    242                } 
    243130          }); 
    244131     }); 
  • admin/media.php

    r2582 r2614  
    7575 
    7676$page_url = 'media.php?popup='.$popup.'&post_id='.$post_id; 
     77$page_url = $core->callBehavior('adminMediaURL',$page_url); 
    7778 
    7879if ($popup) { 
     
    575576          } 
    576577     } else { 
    577           $link = 
    578           'media_item.php?id='.$f->media_id.'&amp;popup='.$popup.'&amp;post_id='.$post_id; 
     578          $link = 'media_item.php?id='.$f->media_id.'&amp;popup='.$popup.'&amp;post_id='.$post_id; 
     579          $link = $core->callBehavior('adminMediaURL',$link); 
    579580     } 
    580581 
  • admin/media_item.php

    r2566 r2614  
    209209if ($popup) { 
    210210     $starting_scripts .= 
    211      dcPage::jsLoad('js/jsToolBar/popup_media.js'); 
     211     $core->callBehavior('adminPopupMedia'); 
    212212} 
    213213call_user_func($open_f,__('Media manager'), 
  • admin/popup_link.php

    r2566 r2614  
    1919$title = !empty($_GET['title']) ? $_GET['title'] : ''; 
    2020 
    21 dcPage::openPopup(__('Add a link'),dcPage::jsLoad('js/jsToolBar/popup_link.js')); 
     21dcPage::openPopup(__('Add a link'),$core->callBehavior('adminPopupLink')); 
    2222 
    2323echo '<h2 class="page-title">'.__('Add a link').'</h2>'; 
  • admin/popup_posts.php

    r2566 r2614  
    4848dcPage::openPopup(__('Add a link to an entry'), 
    4949     dcPage::jsLoad('js/_posts_list.js'). 
    50      dcPage::jsLoad('js/jsToolBar/popup_posts.js')); 
     50     $core->callBehavior('adminPopupPosts')); 
    5151 
    5252echo '<h2 class="page-title">'.__('Add a link to an entry').'</h2>'; 
  • admin/post.php

    r2566 r2614  
    375375dcPage::open($page_title.' - '.__('Entries'), 
    376376     dcPage::jsDatePicker(). 
    377      dcPage::jsToolBar(). 
    378377     dcPage::jsModal(). 
    379378     dcPage::jsMetaEditor(). 
    380379     dcPage::jsLoad('js/_post.js'). 
     380     $core->callBehavior('adminPostEditor'). 
    381381     dcPage::jsConfirmClose('entry-form','comment-form'). 
    382382     # --BEHAVIOR-- adminPostHeaders 
  • inc/admin/lib.dc.page.php

    r2513 r2614  
    589589          '<script type="text/javascript">'."\n". 
    590590          "//<![CDATA[\n". 
     591          'jsToolBar = {}, jsToolBar.prototype = { elements : {} };'."\n". 
    591592          self::jsVar('dotclear.nonce',$GLOBALS['core']->getNonce()). 
    592593          self::jsVar('dotclear.img_plus_src','images/expand.png'). 
     
    828829     } 
    829830 
     831      
    830832     public static function jsToolBar() 
    831833     { 
    832           $res = 
    833           '<link rel="stylesheet" type="text/css" href="style/jsToolBar/jsToolBar.css" />'. 
    834           '<script type="text/javascript" src="js/jsToolBar/jsToolBar.js"></script>'; 
    835  
    836           if (isset($GLOBALS['core']->auth) && $GLOBALS['core']->auth->getOption('enable_wysiwyg')) { 
    837                $res .= '<script type="text/javascript" src="js/jsToolBar/jsToolBar.wysiwyg.js"></script>'; 
    838           } 
    839  
    840           $res .= 
    841           '<script type="text/javascript" src="js/jsToolBar/jsToolBar.dotclear.js"></script>'. 
    842           '<script type="text/javascript">'."\n". 
    843           "//<![CDATA[\n". 
    844           "jsToolBar.prototype.dialog_url = 'popup.php'; ". 
    845           "jsToolBar.prototype.iframe_css = '". 
    846           'body{'. 
    847           'font: 12px "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif;'. 
    848           'color : #000;'. 
    849           'background: #f9f9f9;'. 
    850           'margin: 0;'. 
    851           'padding : 2px;'. 
    852           'border: none;'. 
    853           (l10n::getTextDirection($GLOBALS['_lang']) == 'rtl' ? 'direction:rtl;' : ''). 
    854           '}'. 
    855           'pre, code, kbd, samp {'. 
    856           'font-family:"Courier New",Courier,monospace;'. 
    857           'font-size : 1.1em;'. 
    858           '}'. 
    859           'code {'. 
    860           'color : #666;'. 
    861           'font-weight : bold;'. 
    862           '}'. 
    863           'body > p:first-child {'. 
    864           'margin-top: 0;'. 
    865           '}'. 
    866           "'; ". 
    867           "jsToolBar.prototype.base_url = '".html::escapeJS($GLOBALS['core']->blog->host)."'; ". 
    868           "jsToolBar.prototype.switcher_visual_title = '".html::escapeJS(__('visual'))."'; ". 
    869           "jsToolBar.prototype.switcher_source_title = '".html::escapeJS(__('source'))."'; ". 
    870           "jsToolBar.prototype.legend_msg = '". 
    871           html::escapeJS(__('You can use the following shortcuts to format your text.'))."'; ". 
    872           "jsToolBar.prototype.elements.blocks.options.none = '".html::escapeJS(__('-- none --'))."'; ". 
    873           "jsToolBar.prototype.elements.blocks.options.nonebis = '".html::escapeJS(__('-- block format --'))."'; ". 
    874           "jsToolBar.prototype.elements.blocks.options.p = '".html::escapeJS(__('Paragraph'))."'; ". 
    875           "jsToolBar.prototype.elements.blocks.options.h1 = '".html::escapeJS(__('Level 1 header'))."'; ". 
    876           "jsToolBar.prototype.elements.blocks.options.h2 = '".html::escapeJS(__('Level 2 header'))."'; ". 
    877           "jsToolBar.prototype.elements.blocks.options.h3 = '".html::escapeJS(__('Level 3 header'))."'; ". 
    878           "jsToolBar.prototype.elements.blocks.options.h4 = '".html::escapeJS(__('Level 4 header'))."'; ". 
    879           "jsToolBar.prototype.elements.blocks.options.h5 = '".html::escapeJS(__('Level 5 header'))."'; ". 
    880           "jsToolBar.prototype.elements.blocks.options.h6 = '".html::escapeJS(__('Level 6 header'))."'; ". 
    881           "jsToolBar.prototype.elements.strong.title = '".html::escapeJS(__('Strong emphasis'))."'; ". 
    882           "jsToolBar.prototype.elements.em.title = '".html::escapeJS(__('Emphasis'))."'; ". 
    883           "jsToolBar.prototype.elements.ins.title = '".html::escapeJS(__('Inserted'))."'; ". 
    884           "jsToolBar.prototype.elements.del.title = '".html::escapeJS(__('Deleted'))."'; ". 
    885           "jsToolBar.prototype.elements.quote.title = '".html::escapeJS(__('Inline quote'))."'; ". 
    886           "jsToolBar.prototype.elements.code.title = '".html::escapeJS(__('Code'))."'; ". 
    887           "jsToolBar.prototype.elements.br.title = '".html::escapeJS(__('Line break'))."'; ". 
    888           "jsToolBar.prototype.elements.blockquote.title = '".html::escapeJS(__('Blockquote'))."'; ". 
    889           "jsToolBar.prototype.elements.pre.title = '".html::escapeJS(__('Preformated text'))."'; ". 
    890           "jsToolBar.prototype.elements.ul.title = '".html::escapeJS(__('Unordered list'))."'; ". 
    891           "jsToolBar.prototype.elements.ol.title = '".html::escapeJS(__('Ordered list'))."'; ". 
    892  
    893           "jsToolBar.prototype.elements.link.title = '".html::escapeJS(__('Link'))."'; ". 
    894           "jsToolBar.prototype.elements.link.href_prompt = '".html::escapeJS(__('URL?'))."'; ". 
    895           "jsToolBar.prototype.elements.link.hreflang_prompt = '".html::escapeJS(__('Language?'))."'; ". 
    896  
    897           "jsToolBar.prototype.elements.img.title = '".html::escapeJS(__('External image'))."'; ". 
    898           "jsToolBar.prototype.elements.img.src_prompt = '".html::escapeJS(__('URL?'))."'; ". 
    899  
    900           "jsToolBar.prototype.elements.img_select.title = '".html::escapeJS(__('Media chooser'))."'; ". 
    901           "jsToolBar.prototype.elements.post_link.title = '".html::escapeJS(__('Link to an entry'))."'; ". 
    902  
    903           "jsToolBar.prototype.elements.removeFormat.title = '".html::escapeJS(__('Remove text formating'))."'; "; 
    904  
    905           if (!$GLOBALS['core']->auth->check('media,media_admin',$GLOBALS['core']->blog->id)) { 
    906                $res .= "jsToolBar.prototype.elements.img_select.disabled = true;\n"; 
    907           } 
    908  
    909           $res .= 
    910           "\n//]]>\n". 
    911           "</script>\n"; 
    912  
    913           return $res; 
     834          # Deprecated but we keep this for plugins. 
    914835     } 
    915836 
  • plugins/pages/page.php

    r2511 r2614  
    289289  <?php echo 
    290290  dcPage::jsDatePicker(). 
    291   dcPage::jsToolBar(). 
    292291  dcPage::jsModal(). 
    293292  dcPage::jsLoad('js/_post.js'). 
     293  $core->callBehavior('adminPostEditor'). 
    294294  dcPage::jsConfirmClose('entry-form','comment-form'). 
    295295  # --BEHAVIOR-- adminPageHeaders 
Note: See TracChangeset for help on using the changeset viewer.

Sites map