Avatar billede Slettet bruger
28. december 2004 - 16:03 Der er 7 kommentarer og
1 løsning

FCKEditor æder events

Hejsa Eksperter, sÃ¥ er jeg her vist med hvad man kan falde for Ã¥rets udfordring (er godt nok ogsÃ¥ pÃ¥ tide, eftersom Ã¥ret er ved at være ovre *s*). Jeg er ved at implementere FCK-Editor (http://www.fckeditor.net/) pÃ¥ et site, og dette gÃ¥r ogsÃ¥ fint, bortset fra at jeg gerne vil ha' tilpasset den til nogle specifikke behov. Editoren har indbygget mulighed for at indsætte smileys / emoticons i den tekst man skriver, men outputtet bliver et -tag, og dette vil jeg ikke ha'. Jeg vil derimod ha at man kan klikke pÃ¥ et ikon af en glad smiley, og sÃ¥ indsættes ':-)'.... MEN, med de forsøg jeg har prøvet, er det som om FCK Editoren consumer de events jeg binder til den - ergo, jeg er ved at være desperat... Her er hvad jeg har prøvet med:  Det textarea (name: "message") jeg prøver at indsætte teksten i en form med navn "messageArea". Indsættelsen af smiley'en foregÃ¥r men en onclick-event pÃ¥ et image (emoticon), bliver kaldt med eksempelvis: onClick="emoticon(':-)');" 100 point til det geni der kan fÃ¥ FCK-editoren til at reagere som jeg ønsker. Og jow, jeg har testet, min metode virker fint (er fra PHPBB) hvis det er pÃ¥ et normalt textarea PÃ¥ forhÃ¥nd tak, Corholio.
Avatar billede Slettet bruger
28. december 2004 - 16:05 #1
Damn... min javascript røg sig en tur, samt tegnsætningen efter Konquerer lige havde leget smart *suk*.

Den kode jeg har er:

                    var editor = new FCKeditor("message", "100%", "200px", "Justdate");
                    editor.basePath = "/js/";
                    editor.ReplaceTextarea();

                    messageArea = document.forms["messageForm"].message;
                    messageArea.onFocus = getActiveText(messageArea);
                    messageArea.onKeyUp = getActiveText(messageArea);
                    messageArea.onSelect = getActiveText(messageArea);
                    messageArea.onClick = getActiveText(messageArea);
                    messageArea.onChange = getActiveText(messageArea);

function emoticon(text) {
                        if (document.messageForm.message.createTextRange && document.messageForm.message.caretPos) {
                            var caretPos = document.messageForm.message.caretPos;
                            caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
                        } else {
                            document.messageForm.message.value  += text;
                        }
                    }

                    function getActiveText(selectedtext) {
                        text = (document.all) ? document.selection.createRange().text : window.getSelection();
                        if (selectedtext.createTextRange) {
                            selectedtext.caretPos = document.selection.createRange().duplicate();
                        }

                        return true;
                    }
Avatar billede nikolajdu Nybegynder
29. december 2004 - 03:27 #2
Du kan bare slå smileys fra i config filen er det ikke meget nemmere ;-)

Hvis du i fckconfig copy/paster :

FCKConfig.ToolbarSets["Default"] = [
    ['Source','-','Save','NewPage','Preview'],
    ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],
    ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
    ['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
    ['OrderedList','UnorderedList','-','Outdent','Indent'],
    ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
    ['Link','Unlink'],
    ['Image','Table','Rule','SpecialChar','Smiley'],
    ['Style','FontFormat','FontName','FontSize'],
    ['TextColor','BGColor'],
    ['About']
] ;

til

FCKConfig.ToolbarSets["MinEditor"] = [
    ['Source','-','Save','NewPage','Preview'],
    ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],
    ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
    ['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
    ['OrderedList','UnorderedList','-','Outdent','Indent'],
    ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
    ['Link','Unlink'],
    ['Image','Table','Rule','SpecialChar'],
    ['Style','FontFormat','FontName','FontSize'],
    ['TextColor','BGColor'],
    ['About']
] ;

Så kan du selv flytte rund på eller slette de knapper du ikke vil have.

Hvis du KUN vil have en glad smiley så længere nede i configfilen kan du vælge præcist hvilke du vil have eller tilføje:

FCKConfig.SmileyImages    = ["regular_smile.gif","sad_smile.gif","wink_smile.gif","teeth_smile.gif","confused_smile.gif","tounge_smile.gif","embaressed_smile.gif","omg_smile.gif","whatchutalkingabout_smile.gif","angry_smile.gif","angel_smile.gif","shades_smile.gif","devil_smile.gif","cry_smile.gif","lightbulb.gif","thumbs_down.gif","thumbs_up.gif","heart.gif","broken_heart.gif","kiss.gif","envelope.gif"] ;

kunne blive til :

FCKConfig.SmileyImages    = ["regular_smile.gif"];
Avatar billede Slettet bruger
29. december 2004 - 11:34 #3
Jo, du har ret...det er nemt, men (må åbenbart ha' formuleret mig forkert):

FCKeditoren indsætter jo smileys som et <image>-element (eftersom det er en WYSIWYG-editor, men jeg vil gerne ha' den til at indsætte ':-)' hvis man klikker på "glad smiley" istedet for. Grunden til dette er at jeg måske på et senere tidspunkt vil ændre mine smileys til nogle andre billeder, uden at være afhængig af at de skal være på samme URL. Jeg vil, når jeg trækker beskeden ud af databasen på parse teksten igennem og erstatte ':-)' med <img>-elementer der passer til min konfiguration.

Håber det gav lidt mere mening denne gang. :-)
Avatar billede nikolajdu Nybegynder
29. december 2004 - 11:44 #4
Du kan jo bare bestemme i config filen hvilke billeder der skal sættes ind. - Det giver ingen mening at lave en box med "tekst-smilies" - Ihvertilfald som jeg tænker det.
Avatar billede Slettet bruger
29. december 2004 - 13:13 #5
Og hvad så hvis jeg om et halvt år bestemmer at omstrukturere stierne på mit site, så skal jeg iterere igennem alle beskederne, opdatere URL's for hver smiley jeg har brugt? Det holder ikke helt.
Avatar billede nikolajdu Nybegynder
29. december 2004 - 17:25 #6
Det er jo ganske nemt at lave stien om - Det ligger jo i linierne lige før. Du kommer jo ikke uden om eget setup ligegyldigt hvilken editor du vælger at bruge.
Avatar billede Slettet bruger
12. januar 2005 - 12:15 #7
Jeg tror du har misforstået mit spørgsmål fuldstændigt... Anyways, ændrede i smiley-dialog-js'en, og fik den til at opføre sig på en sådan måde jeg ville ha'.

Hovedessensen i mit spørgsmål var den, at jeg ikke ville ha' den html der kom ud af editoren til at være bundet op på URL'er.

Jeg lukker her, ellers tak for dine anstrengelser. :-)
Avatar billede gadebarnet Nybegynder
09. februar 2006 - 10:41 #8
hvordan har du fået løst dit tegnsætnings problem?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester