ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Changeset 5764


Ignore:
Timestamp:
Mar 15, 2008, 5:18:32 AM (12 years ago)
Author:
ebihara
Message:

#333:フォントサイズ変更以外の文字装飾に対応(エディタ側)

Location:
OpenPNE/branches/work/ebihara/prj_deco_diary/public_html/js
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • OpenPNE/branches/work/ebihara/prj_deco_diary/public_html/js/pne.js

    r5745 r5764  
    2929        theme_advanced_buttons1 : "openpne_b,openpne_u,openpne_s,openpne_i,openpne_large,openpne_small,openpne_color,openpne_album,openpne_emoji_docomo,openpne_emoji_au,openpne_emoji_softbank",
    3030        theme_advanced_buttons2 : "",
    31         theme_advanced_buttons3 : ""
     31        theme_advanced_buttons3 : "",
     32        valid_elements : "b,u,s,i,span[style],font[color]"
    3233    });
    3334}
  • OpenPNE/branches/work/ebihara/prj_deco_diary/public_html/js/tiny_mce/plugins/openpne/editor_plugin.js

    r5751 r5764  
    66
    77(function() {
    8         tinymce.create('tinymce.plugins.OpenPNEPlugin', {
    9                 init : function(ed, url) {
     8    tinymce.create('tinymce.plugins.OpenPNEPlugin', {
     9        init : function(ed, url) {
     10            var t = this;
     11
     12            // change the editor setting
     13            ed.settings.inline_styles = false;
     14            ed.settings.skin_variant = url + "openpne.css";
    1015
    1116            // command
    12                         ed.addCommand('mceOpenPNE_b', function() {
     17            ed.addCommand('mceOpenPNE_b', function() {
    1318                tinyMCE.execCommand("Bold");
    14                         });
    15                         ed.addCommand('mceOpenPNE_u', function() {
     19            });
     20            ed.addCommand('mceOpenPNE_u', function() {
    1621                tinyMCE.execCommand("Underline");
    17                         });
    18                         ed.addCommand('mceOpenPNE_s', function() {
     22            });
     23            ed.addCommand('mceOpenPNE_s', function() {
    1924                tinyMCE.execCommand("Strikethrough");
    20                         });
    21                         ed.addCommand('mceOpenPNE_i', function() {
     25            });
     26            ed.addCommand('mceOpenPNE_i', function() {
    2227                tinyMCE.execCommand("Italic");
    23                         });
    24                         ed.addCommand('mceOpenPNE_large', function() {
     28            });
     29            ed.addCommand('mceOpenPNE_large', function() {
    2530                tinyMCE.execCommand("Fontsize", false, 7);
    26                         });
    27                         ed.addCommand('mceOpenPNE_small', function() {
     31            });
     32            ed.addCommand('mceOpenPNE_small', function() {
    2833                tinyMCE.execCommand("Fontsize", false, 2);
    29                         });
     34            });
    3035            ed.addCommand('mceOpenPNE_color', function() {
    31                                 ed.windowManager.open({
    32                                         file : url + "/font_color_table.html",
    33                                         width : 320,
    34                                         height : 120,
    35                                         inline : 1
    36                                 });
     36                var color = "";
     37                tinyMCE.execCommand('mceColorPicker', true, {
     38                    func : function(c) {
     39                        tinyMCE.execCommand("Forecolor", false, c);
     40                    }
     41                });
    3742            });
    3843            ed.addCommand('mceOpenPNE_emoji_docomo', function() {
    39                                 ed.windowManager.open({
    40                                         file : url + "/emoji_docomo_table.html",
    41                                         width : 320,
    42                                         height : 120,
    43                                         inline : 1
    44                                 });
     44                ed.windowManager.open({
     45                    file : url + "/emoji_docomo_table.html",
     46                    width : 320,
     47                    height : 120,
     48                    inline : 1
     49                });
    4550            });
    4651
    4752            // button
    48                         ed.addButton('openpne_b', {
    49                                 title : 'Bold',
    50                                 cmd : 'mceOpenPNE_b',
    51                         });
    52                         ed.addButton('openpne_u', {
    53                                 title : 'Underline',
    54                                 cmd : 'mceOpenPNE_u',
    55                         });
    56                         ed.addButton('openpne_s', {
    57                                 title : 'Strikethrough',
    58                                 cmd : 'mceOpenPNE_s',
    59                         });
    60                         ed.addButton('openpne_i', {
    61                                 title : 'Italic',
    62                                 cmd : 'mceOpenPNE_i',
    63                         });
    64                         ed.addButton('openpne_large', {
    65                                 title : 'Large Font',
    66                                 cmd : 'mceOpenPNE_large',
    67                         });
    68                         ed.addButton('openpne_small', {
    69                                 title : 'Small Font',
    70                                 cmd : 'mceOpenPNE_small',
    71                         });
    72                         ed.addButton('openpne_color', {
    73                                 title : 'Font color',
    74                                 cmd : 'mceOpenPNE_color',
    75                         });
    76                         ed.addButton('openpne_emoji_docomo', {
    77                                 title : 'Insert DoCoMo emoji',
    78                                 cmd : 'mceOpenPNE_emoji_docomo',
    79                         });
     53            ed.addButton('openpne_b', {title : 'Bold', cmd : 'mceOpenPNE_b'});
     54            ed.addButton('openpne_u', {title : 'Underline', cmd : 'mceOpenPNE_u'});
     55            ed.addButton('openpne_s', {title : 'Strikethrough', cmd : 'mceOpenPNE_s'});
     56            ed.addButton('openpne_i', {title : 'Italic', cmd : 'mceOpenPNE_i'});
     57            ed.addButton('openpne_large', {title : 'Large Font', cmd : 'mceOpenPNE_large'});
     58            ed.addButton('openpne_small', {title : 'Small Font', cmd : 'mceOpenPNE_small'});
     59            ed.addButton('openpne_color', {title : 'Font color', cmd : 'mceOpenPNE_color'});
     60/*            ed.addButton('openpne_emoji_docomo', {
     61                title : 'Insert DoCoMo emoji',
     62                cmd : 'mceOpenPNE_emoji_docomo',
     63            });*/
    8064
    8165            // event
    82                         ed.onBeforeSetContent.add(function(ed, o) {
    83                         });
    84                         ed.onPostProcess.add(function(ed, o) {
    85                         });
    86                 },
     66            ed.onBeforeSetContent.add(function(ed, o) {  // To preview mode
     67                o.content = t._textToPreview(o.content);
     68            });
     69            ed.onPostProcess.add(function(ed, o) {  // To text mode
     70                if (o.save) {
     71                    o.content = t._previewToText(o.content);
     72                }
     73            });
     74            ed.onChange.add(function(ed, l) { // for debug
     75                console.debug(l.content);
     76            });
     77        },
    8778
    88                 createControl : function(n, cm) {
    89                         return null;
    90                 },
     79        createControl : function(n, cm) {
     80            return null;
     81        },
    9182
    92                 getInfo : function() {
    93                         return {
    94                                 longname : 'OpenPNE plugin',
    95                                 author : 'Kousuke Ebihara',
    96                                 version : "1.0"
    97                         };
     83        getInfo : function() {
     84            return {
     85                longname : 'OpenPNE plugin',
     86                author : 'Kousuke Ebihara',
     87                version : "1.0"
     88            }
     89        },
     90
     91        _addHTMLTagToSelection : function(editor, start, end) {
     92            var selection = editor.selection.getContent();
     93            tinyMCE.execCommand("mceInsertContent", false, start + selection + end);
     94        },
     95
     96        _previewToText : function(s) {
     97            s = tinymce.trim(s);
     98
     99            function rep(re, str) {
     100                s = s.replace(re, str);
     101            };
     102
     103console.debug("previewToText Before", s);
     104            rep(/<font color=\"(#[0-9a-f]{3,6})\">(.*?)<\/font>/gi,"<op:color:$1>$2</op:color>");
     105            rep(/<(b|u|s|i)>/gi,"<op:$1>");
     106            rep(/<\/(b|u|s|i)>/gi,"</op:$1>");
     107            rep(/<br \/>/gi,"\n");
     108            rep(/<br\/>/gi,"\n");
     109            rep(/<br>/gi,"\n");
     110            rep(/<p>/gi,"");
     111            rep(/<\/p>/gi,"\n");
     112            rep(/&nbsp;/gi," ");
     113            rep(/&quot;/gi,"\"");
     114            rep(/&lt;/gi,"<");
     115            rep(/&gt;/gi,">");
     116            rep(/&amp;/gi,"&");
     117console.debug("previewToText After", s);
     118            return s;
     119        },
     120
     121        _textToPreview : function(s) {
     122            s = tinymce.trim(s);
     123
     124            function rep(re, str) {
     125                s = s.replace(re, str);
     126            };
     127
     128console.debug("textToPreview Before", s);
     129            rep(/</gi,"&lt;");
     130            rep(/>/gi,"&gt;");
     131            rep(/\n/gi,"<br />");
     132            rep(/&lt;op:color:?(.*?)&gt;(.*?)&lt;\/op:color&gt;/gi,"<font color=\"$1;\">$2</font>");
     133            rep(/&lt;op:large&gt;(.*?)&lt;\/op:large&gt;/gi,"<font size=\"7\">$1</span>");
     134            rep(/&lt;op:small&gt;(.*?)&lt;\/op:small&gt;/gi,"<font size=\"2\">$1</span>");
     135            rep(/&lt;op:(b|u|s|i)&gt;/gi,"<$1>");
     136            rep(/&lt;\/op:(b|u|s|i)&gt;/gi,"</$1>");
     137console.debug("textToPreview After", s);
     138            return s;
    98139        }
    99         });
     140    });
    100141
    101         // Register plugin
    102         tinymce.PluginManager.add('openpne', tinymce.plugins.OpenPNEPlugin);
     142    // Register plugin
     143    tinymce.PluginManager.add('openpne', tinymce.plugins.OpenPNEPlugin);
    103144})();
Note: See TracChangeset for help on using the changeset viewer.