Tag-it and copy/paste keywords

It there any option to disable tag-it functionality, I just want to copy-paste keywords (via quicksubmit plugin). Keywords are separated by semicolon (;). I’ve read some of the answers given regarding that problem / bug / feature but I would like to make a quickest possible solution.

I’m using OJS 3.3.0.6.

tnx.

Hi @Vedran_Serbu,

I’m afraid there’s no way around using tag-it for 3.3.0-x, unless you use something better suited to batch imports like the XML import/export toolkit. We’ll hopefully replace tag-it with something better in future releases, as it does have UX limitations.

Regards,
Alec Smecher
Public Knowledge Project Team

1 Like

I’ve found a solution for all those interested - a small program developed in Autohotkey. Program does the following:

  1. As usual, you can copy all keywords from source text with ctrl-c or by selecting and using copy command from Windows.
  2. Place your cursor in keywords field when you’re submitting keywords in OJS. Press CTRL-i . The program should automatically paste all individual keywords. The only condition is that original keywords sholud be separated with comma.
  3. When all keywords are pasted, program inform you that there is no more keywords in clipboard
  4. Repeat

This is original script from autohotkey if you want to compile it by yourself. I can share here an .exe file - ready program that does this, but I dont know any file share service other than google drive share - if it is OK with admins of the forum, I’ll post it here, for now, here is the source:

^i::
    ; Initialize parts array if not already initialized
    if (!initialized) {
        clipboardText := Clipboard
        ; Check if clipboard is empty
        if clipboardText =
        {
            MsgBox, Clipboard is empty.
            return
        }
        ; Split the text by commas and store in parts array
        Loop, Parse, clipboardText, `,
        {
            parts.Push(A_LoopField)
        }
        initialized := true
    }

    ; Check if there are parts to paste
    if (parts.MaxIndex() > 0) {
        ; Get the first part
        part := parts.RemoveAt(1)

        ; Set the clipboard to the first part and paste it
        Clipboard := part
        Sleep, 50 ; Small delay to ensure clipboard is updated
        Send ^v
        Sleep, 50 ; Small delay to ensure paste completes
        Send {Enter} ; Send Enter key after pasting
    } else {
        MsgBox, No more parts to paste. Ready for new content.
        ; Reset the initialization state and clear parts array
        parts := []
        initialized := false
    }
return
1 Like