editor.on("newword:composer") question #221

Open
violacase opened this Issue Mar 7, 2013 · 5 comments

Comments

Projects
None yet
2 participants

I'm trying to extend wysihtml5 so it can be used as a 'bridge'-(the card game) editor.

Goal:
If the user types a 2-characters combination like ' /h ' the phrase should automagically being converted to a red heart card suit symbol.
With editor.on("newword:composer") I know a word has been typed so I should be able to filter the combinations I would like to act on.

I studied all the documentation but can't find the answers for the following questions:
How do I get the instance of that last typed word?
How do I replace that with my own HTML?

(Lot's of I's... Sorry)

Hi, Thanks for your answer!

After some trying I now have the following working code.

editor = new $('textarea').wysihtml5({
    "events": {
           "newword:composer": function() {
            text = editor.val();
        myfilter = text.indexOf('/h');
        if (myfilter>-1) {
           text = text.replace ('/h', 'my HTML ');
          this.clear().composer.commands.exec("insertHTML", text');
        }
       }
    }
});

violacase closed this Mar 27, 2013

I closed this issue too soon...

A new problem has arrived:

After running the above code the input cursor (the carot) is being placed at the end of the entire textarea string. This is not what I want because input typing and pasting can occur anywhere in the textarea. Any idea how we can place/focus the cursor directly after the inserted substring?

violacase reopened this Mar 27, 2013

I had the same problem too.
I checked and there are a similar error with CTRL+Z feature.
I don't solve it yet.
xing/wysihtml5#81

That's a pitty germanotm...
What we need is a better focus() function. It's easy to calculate where the offset is before/after inserting or deleting text.
A function like FocusMouseCursor(index) or just focus(bool[,index]) is all we need...
Maybe it's possible to hack some behaviour? https://gist.github.com/mathiasbynens/326491

Back to the basics.

What we need is this:
The event 'newword:composer' should give the offset index of the 'new word' in the textarea string.

For taking action on this event we should be able to use the following commands :

myHTML = "

Hello world

"; onNewWord.deleteNewWord(); onNewWord.insert(myHTML); index += strlen(myHTML); onNewWord.focus(bool, index);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment