source: publico/ILSAPL/trunk/skins/sk_sapl/javascript/jquery.cleditor.js.dtml @ 7608

Última Alteração nesse arquivo desde 7608 foi 7608, incluída por gustavolepri, 6 anos atrás

correção do bug no momento de salvar o expediente

File size: 27.8 KB
Linha 
1(function($){
2    $.cleditor={
3        defaultOptions:{
4            width:500,
5            height:250,
6            controls:
7                "bold italic underline strikethrough subscript superscript | font size "+
8                    "style | color highlight removeformat | bullets numbering | outdent "+
9                    "indent | alignleft center alignright justify | undo redo | "+
10                    "rule image link unlink | cut copy paste pastetext | print source",
11            colors:
12                "FFF FCC FC9 FF9 FFC 9F9 9FF CFF CCF FCF "+
13                    "CCC F66 F96 FF6 FF3 6F9 3FF 6FF 99F F9F "+
14                    "BBB F00 F90 FC6 FF0 3F3 6CC 3CF 66C C6C "+
15                    "999 C00 F60 FC3 FC0 3C0 0CC 36F 63F C3C "+
16                    "666 900 C60 C93 990 090 399 33F 60C 939 "+
17                    "333 600 930 963 660 060 366 009 339 636 "+
18                    "000 300 630 633 330 030 033 006 309 303",
19            fonts:
20                "Arial,Arial Black,Comic Sans MS,Courier New,Narrow,Garamond,"+
21                    "Georgia,Impact,Sans Serif,Serif,Tahoma,Trebuchet MS,Verdana",
22            sizes:
23                "1,2,3,4,5,6,7",
24            styles:
25                [["Parágrafo","<p>"],["Cabeçalho 1","<h1>"],["Cabeçalho 2","<h2>"],
26                    ["Cabeçalho 3","<h3>"],["Cabeçalho 4","<h4>"],["Cabeçalho 5","<h5>"],
27                    ["Cabeçalho 6","<h6>"]],
28            useCSS:false,
29            docType:
30                '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">',
31            docCSSFile:
32                "",
33            bodyStyle:
34                "margin:4px; font:12px Arial, Verdana, Helvetica, sans-serif; color: #444; cursor:text"
35        },
36        buttons:{
37            init:
38                "bold,Negrito,|"+
39                    "italic,Itálico,|"+
40                    "underline,Sublinhado,|"+
41                    "strikethrough,Tachado,|"+
42                    "subscript,Subscrito,|"+
43                    "superscript,Sobrescrito,|"+
44                    "font,Fonte,fontname,|"+
45                    "size,Tamanho da Fonte,fontsize,|"+
46                    "style,Estilo,formatblock,|"+
47                    "color,Cor da Fonte,forecolor,|"+
48                    "highlight,Cor de Destaque,hilitecolor,color|"+
49                    "removeformat,Remover Formatação,|"+
50                    "bullets,Marcadores,insertunorderedlist|"+
51                    "numbering,Lista Numerada,insertorderedlist|"+
52                    "outdent,Diminuir Recuo,|"+
53                    "indent,Aumentar Recuo,|"+
54                    "alignleft,Alinhar à Esquerda,justifyleft|"+
55                    "center,Centralizar,justifycenter|"+
56                    "alignright,Alinhar à Direita,justifyright|"+
57                    "justify,Justificar,justifyfull|"+
58                    "undo,Desfazer,|"+
59                    "redo,Refazer,|"+
60                    "rule,Inserir Linha Horizontal,inserthorizontalrule|"+
61                    "image,Inserir Imagem,insertimage,url|"+
62                    "link,Inserir Link,createlink,url|"+
63                    "unlink,Remover Link,|"+
64                    "cut,Recortar,|"+
65                    "copy,Copiar,|"+
66                    "paste,Colar,|"+
67                    "pastetext,Colar como Texto,inserthtml,|"+
68                    "print,Imprimir,|"+
69                    "source,Código-fonte"
70        },
71        imagesPath:function(){return imagesPath();}
72    };
73    $.fn.cleditor=function(options){
74        var $result=$([]);
75        this.each(function(idx,elem){
76            if(elem.tagName=="TEXTAREA"){
77                var data=$.data(elem,CLEDITOR);
78                if(!data)data=new cleditor(elem,options);
79                $result=$result.add(data);
80            }
81        });
82        return $result;
83    };
84    var
85        BACKGROUND_COLOR="backgroundColor",
86        BUTTON="button",
87        BUTTON_NAME="buttonName",
88        CHANGE="change",
89        CLEDITOR="cleditor",
90        CLICK="click",
91        DISABLED="disabled",
92        DIV_TAG="<div>",
93        TRANSPARENT="transparent",
94        UNSELECTABLE="unselectable",
95        MAIN_CLASS="cleditorMain",
96        TOOLBAR_CLASS="cleditorToolbar",
97        GROUP_CLASS="cleditorGroup",
98        BUTTON_CLASS="cleditorButton",
99        DISABLED_CLASS="cleditorDisabled",
100        DIVIDER_CLASS="cleditorDivider",
101        POPUP_CLASS="cleditorPopup",
102        LIST_CLASS="cleditorList",
103        COLOR_CLASS="cleditorColor",
104        PROMPT_CLASS="cleditorPrompt",
105        MSG_CLASS="cleditorMsg",
106        ie=$.browser.msie,
107        ie6=/msie\s6/i.test(navigator.userAgent),
108        iOS=/iphone|ipad|ipod/i.test(navigator.userAgent),
109        popups={},
110        documentClickAssigned,
111        buttons=$.cleditor.buttons;
112    $.each(buttons.init.split("|"),function(idx,button){
113        var items=button.split(","),name=items[0];
114        buttons[name]={
115            stripIndex:idx,
116            name:name,
117            title:items[1]===""?name.charAt(0).toUpperCase()+name.substr(1):items[1],
118            command:items[2]===""?name:items[2],
119            popupName:items[3]===""?name:items[3]
120        };
121    });
122    delete buttons.init;
123    cleditor=function(area,options){
124        var editor=this;
125        editor.options=options=$.extend({},$.cleditor.defaultOptions,options);
126        var $area=editor.$area=$(area)
127            .hide()
128            .data(CLEDITOR,editor)
129            .blur(function(){
130                updateFrame(editor,true);
131            });
132        var $main=editor.$main=$(DIV_TAG)
133            .addClass(MAIN_CLASS)
134            .width(options.width)
135            .height(options.height);
136        var $toolbar=editor.$toolbar=$(DIV_TAG)
137            .addClass(TOOLBAR_CLASS)
138            .appendTo($main);
139        var $group=$(DIV_TAG)
140            .addClass(GROUP_CLASS)
141            .appendTo($toolbar);
142        $.each(options.controls.split(" "),function(idx,buttonName){
143            if(buttonName==="")return true;
144            if(buttonName=="|"){
145                var $div=$(DIV_TAG)
146                    .addClass(DIVIDER_CLASS)
147                    .appendTo($group);
148                $group=$(DIV_TAG)
149                    .addClass(GROUP_CLASS)
150                    .appendTo($toolbar);
151            }
152            else{
153                var button=buttons[buttonName];
154                var $buttonDiv=$(DIV_TAG)
155                    .data(BUTTON_NAME,button.name)
156                    .addClass(BUTTON_CLASS)
157                    .attr("title",button.title)
158                    .bind(CLICK,$.proxy(buttonClick,editor))
159                    .appendTo($group)
160                    .hover(hoverEnter,hoverLeave);
161                var map={};
162                if(button.css)map=button.css;
163                else if(button.image)map.backgroundImage=imageUrl(button.image);
164                if(button.stripIndex)map.backgroundPosition=button.stripIndex*-24;
165                $buttonDiv.css(map);
166                if(ie)
167                    $buttonDiv.attr(UNSELECTABLE,"on");
168                if(button.popupName)
169                    createPopup(button.popupName,options,button.popupClass,
170                        button.popupContent,button.popupHover);
171            }
172        });
173        $main.insertBefore($area)
174            .append($area);
175        if(!documentClickAssigned){
176            $(document).click(function(e){
177                var $target=$(e.target);
178                if(!$target.add($target.parents()).is("."+PROMPT_CLASS))
179                    hidePopups();
180            });
181            documentClickAssigned=true;
182        }
183        if(/auto|%/.test(""+options.width+options.height))
184            $(window).resize(function(){refresh(editor);});
185        refresh(editor);
186    };
187    var fn=cleditor.prototype,
188        methods=[
189            ["clear",clear],
190            ["disable",disable],
191            ["execCommand",execCommand],
192            ["focus",focus],
193            ["hidePopups",hidePopups],
194            ["sourceMode",sourceMode,true],
195            ["refresh",refresh],
196            ["select",select],
197            ["selectedHTML",selectedHTML,true],
198            ["selectedText",selectedText,true],
199            ["showMessage",showMessage],
200            ["updateFrame",updateFrame],
201            ["updateTextArea",updateTextArea]
202        ];
203    $.each(methods,function(idx,method){
204        fn[method[0]]=function(){
205            var editor=this,args=[editor];
206            for(var x=0;x<arguments.length;x++){args.push(arguments[x]);}
207            var result=method[1].apply(editor,args);
208            if(method[2])return result;
209            return editor;
210        };
211    });
212    fn.change=function(handler){
213        var $this=$(this);
214        return handler?$this.bind(CHANGE,handler):$this.trigger(CHANGE);
215    };
216    function buttonClick(e){
217        var editor=this,
218            buttonDiv=e.target,
219            buttonName=$.data(buttonDiv,BUTTON_NAME),
220            button=buttons[buttonName],
221            popupName=button.popupName,
222            popup=popups[popupName];
223        if(editor.disabled||$(buttonDiv).attr(DISABLED)==DISABLED)
224            return;
225        var data={
226            editor:editor,
227            button:buttonDiv,
228            buttonName:buttonName,
229            popup:popup,
230            popupName:popupName,
231            command:button.command,
232            useCSS:editor.options.useCSS
233        };
234        if(button.buttonClick&&button.buttonClick(e,data)===false)
235            return false;
236        if(buttonName=="source"){
237            if(sourceMode(editor)){
238                delete editor.range;
239                editor.$area.hide();
240                editor.$frame.show();
241                buttonDiv.title=button.title;
242            }
243            else{
244                editor.$frame.hide();
245                editor.$area.show();
246                buttonDiv.title="Show Rich Text";
247            }
248            setTimeout(function(){refreshButtons(editor);},100);
249        }
250        else if(!sourceMode(editor)){
251            if(popupName){
252                var $popup=$(popup);
253                if(popupName=="url"){
254                    if(buttonName=="link"&&selectedText(editor)===""){
255                        showMessage(editor,"É necessário selecionar o texto para inserir um link.",buttonDiv);
256                        return false;
257                    }
258                    $popup.children(":button")
259                        .unbind(CLICK)
260                        .bind(CLICK,function(){
261                            var $text=$popup.find(":text"),
262                                url=$.trim($text.val());
263                            if(url!=="")
264                                execCommand(editor,data.command,url,null,data.button);
265                            $text.val("http://");
266                            hidePopups();
267                            focus(editor);
268                        });
269                }
270                else if(popupName=="pastetext"){
271                    $popup.children(":button")
272                        .unbind(CLICK)
273                        .bind(CLICK,function(){
274                            var $textarea=$popup.find("textarea"),
275                                text=$textarea.val().replace(/\n/g,"<br />");
276                            if(text!=="")
277                                execCommand(editor,data.command,text,null,data.button);
278                            $textarea.val("");
279                            hidePopups();
280                            focus(editor);
281                        });
282                }
283                if(buttonDiv!==$.data(popup,BUTTON)){
284                    showPopup(editor,popup,buttonDiv);
285                    return false;
286                }
287                return;
288            }
289            else if(buttonName=="print")
290                editor.$frame[0].contentWindow.print();
291            else if(!execCommand(editor,data.command,data.value,data.useCSS,buttonDiv))
292                return false;
293        }
294        focus(editor);
295    }
296    function hoverEnter(e){
297        var $div=$(e.target).closest("div");
298        $div.css(BACKGROUND_COLOR,$div.data(BUTTON_NAME)?"#FFF":"#FFC");
299    }
300    function hoverLeave(e){
301        $(e.target).closest("div").css(BACKGROUND_COLOR,"transparent");
302    }
303    function popupClick(e){
304        var editor=this,
305            popup=e.data.popup,
306            target=e.target;
307        if(popup===popups.msg||$(popup).hasClass(PROMPT_CLASS))
308            return;
309        var buttonDiv=$.data(popup,BUTTON),
310            buttonName=$.data(buttonDiv,BUTTON_NAME),
311            button=buttons[buttonName],
312            command=button.command,
313            value,
314            useCSS=editor.options.useCSS;
315        if(buttonName=="font")
316            value=target.style.fontFamily.replace(/"/g,"");
317        else if(buttonName=="size"){
318            if(target.tagName=="DIV")
319                target=target.children[0];
320            value=target.innerHTML;
321        }
322        else if(buttonName=="style")
323            value="<"+target.tagName+">";
324        else if(buttonName=="color")
325            value=hex(target.style.backgroundColor);
326        else if(buttonName=="highlight"){
327            value=hex(target.style.backgroundColor);
328            if(ie)command='backcolor';
329            else useCSS=true;
330        }
331        var data={
332            editor:editor,
333            button:buttonDiv,
334            buttonName:buttonName,
335            popup:popup,
336            popupName:button.popupName,
337            command:command,
338            value:value,
339            useCSS:useCSS
340        };
341        if(button.popupClick&&button.popupClick(e,data)===false)
342            return;
343        if(data.command&&!execCommand(editor,data.command,data.value,data.useCSS,buttonDiv))
344            return false;
345        hidePopups();
346        focus(editor);
347    }
348    function checksum(text)
349    {
350        var a=1,b=0;
351        for(var index=0;index<text.length;++index){
352            a=(a+text.charCodeAt(index))%65521;
353            b=(b+a)%65521;
354        }
355        return(b<<16)|a;
356    }
357    function clear(editor){
358        editor.$area.val("");
359        updateFrame(editor);
360    }
361    function createPopup(popupName,options,popupTypeClass,popupContent,popupHover){
362        if(popups[popupName])
363            return popups[popupName];
364        var $popup=$(DIV_TAG)
365            .hide()
366            .addClass(POPUP_CLASS)
367            .appendTo("body");
368        if(popupContent)
369            $popup.html(popupContent);
370        else if(popupName=="color"){
371            var colors=options.colors.split(" ");
372            if(colors.length<10)
373                $popup.width("auto");
374            $.each(colors,function(idx,color){
375                $(DIV_TAG).appendTo($popup)
376                    .css(BACKGROUND_COLOR,"#"+color);
377            });
378            popupTypeClass=COLOR_CLASS;
379        }
380        else if(popupName=="font")
381            $.each(options.fonts.split(","),function(idx,font){
382                $(DIV_TAG).appendTo($popup)
383                    .css("fontFamily",font)
384                    .html(font);
385            });
386        else if(popupName=="size")
387            $.each(options.sizes.split(","),function(idx,size){
388                $(DIV_TAG).appendTo($popup)
389                    .html("<font size="+size+">"+size+"</font>");
390            });
391        else if(popupName=="style")
392            $.each(options.styles,function(idx,style){
393                $(DIV_TAG).appendTo($popup)
394                    .html(style[1]+style[0]+style[1].replace("<","</"));
395            });
396        else if(popupName=="url"){
397            $popup.html('Enter URL:<br><input type=text value="http://" size=35><br><input type=button value="Submit">');
398            popupTypeClass=PROMPT_CLASS;
399        }
400        else if(popupName=="pastetext"){
401            $popup.html('Cole aqui o texto formato e pressione o botão<br /><textarea cols=40 rows=3></textarea><br /><input type=button value=Inserir>');
402            popupTypeClass=PROMPT_CLASS;
403        }
404        if(!popupTypeClass&&!popupContent)
405            popupTypeClass=LIST_CLASS;
406        $popup.addClass(popupTypeClass);
407        if(ie){
408            $popup.attr(UNSELECTABLE,"on")
409                .find("div,font,p,h1,h2,h3,h4,h5,h6")
410                .attr(UNSELECTABLE,"on");
411        }
412        if($popup.hasClass(LIST_CLASS)||popupHover===true)
413            $popup.children().hover(hoverEnter,hoverLeave);
414        popups[popupName]=$popup[0];
415        return $popup[0];
416    }
417    function disable(editor,disabled){
418        if(disabled){
419            editor.$area.attr(DISABLED,DISABLED);
420            editor.disabled=true;
421        }
422        else{
423            editor.$area.removeAttr(DISABLED);
424            delete editor.disabled;
425        }
426        try{
427            if(ie)editor.doc.body.contentEditable=!disabled;
428            else editor.doc.designMode=!disabled?"on":"off";
429        }
430        catch(err){}
431        refreshButtons(editor);
432    }
433    function execCommand(editor,command,value,useCSS,button){
434        restoreRange(editor);
435        if(!ie){
436            if(useCSS===undefined||useCSS===null)
437                useCSS=editor.options.useCSS;
438            editor.doc.execCommand("styleWithCSS",0,useCSS.toString());
439        }
440        var success=true,description;
441        if(ie&&command.toLowerCase()=="inserthtml")
442            getRange(editor).pasteHTML(value);
443        else{
444            try{success=editor.doc.execCommand(command,0,value||null);}
445            catch(err){description=err.description;success=false;}
446            if(!success){
447                if("cutcopypaste".indexOf(command)>-1)
448                    showMessage(editor,"Por questão de segurança, seu browser não suporta o comando "+
449                        command+". Tente utilizar as teclas de atalho ou menu contextual em vez disso.",
450                        button);
451                else
452                    showMessage(editor,
453                        (description?description:"Error executing the "+command+" command."),
454                        button);
455            }
456        }
457        refreshButtons(editor);
458        return success;
459    }
460    function focus(editor){
461        setTimeout(function(){
462            if(sourceMode(editor))editor.$area.focus();
463            else editor.$frame[0].contentWindow.focus();
464            refreshButtons(editor);
465        },0);
466    }
467    function getRange(editor){
468        if(ie)return getSelection(editor).createRange();
469        return getSelection(editor).getRangeAt(0);
470    }
471    function getSelection(editor){
472        if(ie)return editor.doc.selection;
473        return editor.$frame[0].contentWindow.getSelection();
474    }
475    function hex(s){
476        var m=/rgba?\((\d+), (\d+), (\d+)/.exec(s),
477            c=s.split("");
478        if(m){
479            s=(m[1]<<16|m[2]<<8|m[3]).toString(16);
480            while(s.length<6)
481                s="0"+s;
482        }
483        return"#"+(s.length==6?s:c[1]+c[1]+c[2]+c[2]+c[3]+c[3]);
484    }
485    function hidePopups(){
486        $.each(popups,function(idx,popup){
487            $(popup)
488                .hide()
489                .unbind(CLICK)
490                .removeData(BUTTON);
491        });
492    }
493    function imagesPath(){
494        var cssFile="jquery.cleditor.css",
495            href=$("link[href$='"+cssFile+"']").attr("href");
496        return href.substr(0,href.length-cssFile.length)+"images/";
497    }
498    function imageUrl(filename){
499        return"url("+imagesPath()+filename+")";
500    }
501    function refresh(editor){
502        var $main=editor.$main,
503            options=editor.options;
504        if(editor.$frame)
505            editor.$frame.remove();
506        var $frame=editor.$frame=$('<iframe frameborder="0" src="javascript:true;">')
507            .hide()
508            .appendTo($main);
509        var contentWindow=$frame[0].contentWindow,
510            doc=editor.doc=contentWindow.document,
511            $doc=$(doc);
512        doc.open();
513        doc.write(
514            options.docType+
515                '<html>'+
516                ((options.docCSSFile==='')?'':'<head><link rel="stylesheet" type="text/css" href="'+options.docCSSFile+'" /></head>')+
517                '<body style="'+options.bodyStyle+'"></body></html>'
518        );
519        doc.close();
520        if(ie)
521            $doc.click(function(){focus(editor);});
522        updateFrame(editor);
523        if(ie){
524            $doc.bind("beforedeactivate beforeactivate selectionchange keypress",function(e){
525                if(e.type=="beforedeactivate")
526                    editor.inactive=true;
527                else if(e.type=="beforeactivate"){
528                    if(!editor.inactive&&editor.range&&editor.range.length>1)
529                        editor.range.shift();
530                    delete editor.inactive;
531                }
532                else if(!editor.inactive){
533                    if(!editor.range)
534                        editor.range=[];
535                    editor.range.unshift(getRange(editor));
536                    while(editor.range.length>2)
537                        editor.range.pop();
538                }
539            });
540            $frame.focus(function(){
541                restoreRange(editor);
542            });
543        }
544        ($.browser.mozilla?$doc:$(contentWindow)).blur(function(){
545            updateTextArea(editor,true);
546        });
547        $doc.click(hidePopups)
548            .bind("keyup mouseup",function(){
549                refreshButtons(editor);
550            });
551        if(iOS)editor.$area.show();
552        else $frame.show();
553        $(function(){
554            var $toolbar=editor.$toolbar,
555                $group=$toolbar.children("div:last"),
556                wid=$main.width();
557            var hgt=$group.offset().top+$group.outerHeight()-$toolbar.offset().top+1;
558            $toolbar.height(hgt);
559            hgt=(/%/.test(""+options.height)?$main.height():parseInt(options.height))-hgt;
560            $frame.width(wid).height(hgt);
561            editor.$area.width(wid).height(ie6?hgt-2:hgt);
562            disable(editor,editor.disabled);
563            refreshButtons(editor);
564        });
565    }
566    function refreshButtons(editor){
567        if(!iOS&&$.browser.webkit&&!editor.focused){
568            editor.$frame[0].contentWindow.focus();
569            window.focus();
570            editor.focused=true;
571        }
572        var queryObj=editor.doc;
573        if(ie)queryObj=getRange(editor);
574        var inSourceMode=sourceMode(editor);
575        $.each(editor.$toolbar.find("."+BUTTON_CLASS),function(idx,elem){
576            var $elem=$(elem),
577                button=$.cleditor.buttons[$.data(elem,BUTTON_NAME)],
578                command=button.command,
579                enabled=true;
580            if(editor.disabled)
581                enabled=false;
582            else if(button.getEnabled){
583                var data={
584                    editor:editor,
585                    button:elem,
586                    buttonName:button.name,
587                    popup:popups[button.popupName],
588                    popupName:button.popupName,
589                    command:button.command,
590                    useCSS:editor.options.useCSS
591                };
592                enabled=button.getEnabled(data);
593                if(enabled===undefined)
594                    enabled=true;
595            }
596            else if(((inSourceMode||iOS)&&button.name!="source")||
597                (ie&&(command=="undo"||command=="redo")))
598                enabled=false;
599            else if(command&&command!="print"){
600                if(ie&&command=="hilitecolor")
601                    command="backcolor";
602                if(!ie||command!="inserthtml"){
603                    try{enabled=queryObj.queryCommandEnabled(command);}
604                    catch(err){enabled=false;}
605                }
606            }
607            if(enabled){
608                $elem.removeClass(DISABLED_CLASS);
609                $elem.removeAttr(DISABLED);
610            }
611            else{
612                $elem.addClass(DISABLED_CLASS);
613                $elem.attr(DISABLED,DISABLED);
614            }
615        });
616    }
617    function restoreRange(editor){
618        if(ie&&editor.range)
619            editor.range[0].select();
620    }
621    function select(editor){
622        setTimeout(function(){
623            if(sourceMode(editor))editor.$area.select();
624            else execCommand(editor,"selectall");
625        },0);
626    }
627    function selectedHTML(editor){
628        restoreRange(editor);
629        var range=getRange(editor);
630        if(ie)
631            return range.htmlText;
632        var layer=$("<layer>")[0];
633        layer.appendChild(range.cloneContents());
634        var html=layer.innerHTML;
635        layer=null;
636        return html;
637    }
638    function selectedText(editor){
639        restoreRange(editor);
640        if(ie)return getRange(editor).text;
641        return getSelection(editor).toString();
642    }
643    function showMessage(editor,message,button){
644        var popup=createPopup("msg",editor.options,MSG_CLASS);
645        popup.innerHTML=message;
646        showPopup(editor,popup,button);
647    }
648    function showPopup(editor,popup,button){
649        var offset,left,top,$popup=$(popup);
650        if(button){
651            var $button=$(button);
652            offset=$button.offset();
653            left=--offset.left;
654            top=offset.top+$button.height();
655        }
656        else{
657            var $toolbar=editor.$toolbar;
658            offset=$toolbar.offset();
659            left=Math.floor(($toolbar.width()-$popup.width())/2)+offset.left;
660            top=offset.top+$toolbar.height()-2;
661        }
662        hidePopups();
663        $popup.css({left:left,top:top})
664            .show();
665        if(button){
666            $.data(popup,BUTTON,button);
667            $popup.bind(CLICK,{popup:popup},$.proxy(popupClick,editor));
668        }
669        setTimeout(function(){
670            $popup.find(":text,textarea").eq(0).focus().select();
671        },100);
672    }
673    function sourceMode(editor){
674        return editor.$area.is(":visible");
675    }
676    function updateFrame(editor,checkForChange){
677        var code=editor.$area.val(),
678            options=editor.options,
679            updateFrameCallback=options.updateFrame,
680            $body=$(editor.doc.body);
681        if(updateFrameCallback){
682            var sum=checksum(code);
683            if(checkForChange&&editor.areaChecksum==sum)
684                return;
685            editor.areaChecksum=sum;
686        }
687        var html=updateFrameCallback?updateFrameCallback(code):code;
688        html=html.replace(/<(?=\/?script)/ig,"&lt;");
689        if(options.updateTextArea)
690            editor.frameChecksum=checksum(html);
691        if(html!=$body.html()){
692            $body.html(html);
693            $(editor).triggerHandler(CHANGE);
694        }
695    }
696    function updateTextArea(editor,checkForChange){
697        var html=$(editor.doc.body).html(),
698            options=editor.options,
699            updateTextAreaCallback=options.updateTextArea,
700            $area=editor.$area;
701        if(updateTextAreaCallback){
702            var sum=checksum(html);
703            if(checkForChange&&editor.frameChecksum==sum)
704                return;
705            editor.frameChecksum=sum;
706        }
707        var code=updateTextAreaCallback?updateTextAreaCallback(html):html;
708        if(options.updateFrame)
709            editor.areaChecksum=checksum(code);
710        if(code!=$area.val()){
711            $area.val(code);
712            $(editor).triggerHandler(CHANGE);
713        }
714    }
715})(jQuery);
716var is={
717    ie:navigator.appName=='Microsoft Internet Explorer',
718    java:navigator.javaEnabled(),
719    ns:navigator.appName=='Netscape',
720    ua:navigator.userAgent.toLowerCase(),
721    version:parseFloat(navigator.appVersion.substr(21))||
722        parseFloat(navigator.appVersion),
723    win:navigator.platform=='Win32'
724}
725is.mac=is.ua.indexOf('mac')>=0;
726if(is.ua.indexOf('opera')>=0){
727    is.ie=is.ns=false;
728    is.opera=true;
729}
730if(is.ua.indexOf('gecko')>=0){
731    is.ie=is.ns=false;
732    is.gecko=true;
733}
Note: Veja TracBrowser para ajuda no uso do navegador do trac.
 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.