getkirby / kirby

Kirby's core application folder
https://getkirby.com
Other
1.31k stars 168 forks source link

Asterisk in field label - panel crashes #2995

Closed S1SYPHOS closed 3 years ago

S1SYPHOS commented 3 years ago

Describe the bug

When adding an asterisk to a field label, the panel crashes with The JSON response from the API could not be parsed (for more verbose output, see below).

To Reproduce

  1. Starterkit / Plainkit with v3.5 RC 6
  2. As label text, use something with an asterisk (*) inside, like:
    people:
    label: VIP*s
    type: text

Expected behavior

Seeing the name in the panel like this: VIP*s

Kirby Version
v3.5-rc.6

Console output

Error: The JSON response from the API could not be parsed
    onParserError http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    request http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
app.js:1:22150
    onError http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    request http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
Error: The JSON response from the API could not be parsed
    onParserError http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    request http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    get http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    get http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    load http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    C http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:12
    dispatch http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:12
    dispatch http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:12
    login http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    submit http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    oe http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    n http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    _wrapper http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    Ri http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    Se http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    zi http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    x http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    d http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    jo http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    _update http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    r http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    get http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    or http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    In http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    $mount http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    $mount http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    init http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    h http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    d http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    b http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    d http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    jo http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    _update http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    r http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    get http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    or http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    In http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    $mount http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    $mount http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    init http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    h http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    d http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    jo http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
app.js:1:22150
    onError http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    request http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    get http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    get http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    load http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    C http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:12
    dispatch http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:12
    dispatch http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:12
    login http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    submit http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    oe http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    n http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    _wrapper http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    (Async: EventListener.handleEvent)
    Ri http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    Se http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    zi http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    x http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    d http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    jo http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    _update http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    r http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    get http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    or http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    In http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    $mount http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    $mount http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    init http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    h http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    d http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    b http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    d http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    jo http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    _update http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    r http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    get http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    or http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    In http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    $mount http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    $mount http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    init http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    h http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    d http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    jo http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
Error: The JSON response from the API could not be parsed
    onParserError http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    request http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    get http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    get http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    fetch http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    created http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    oe http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    Bn http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    _init http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    a http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    sn http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    init http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    n http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    h http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    d http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    M http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    A http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    M http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    A http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    jo http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    _update http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    r http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    get http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    run http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    Zn http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    me http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    fe http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    promise callback*se http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    me http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    nr http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    update http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    notify http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    set http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    init http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    init http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    updateRoute http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    transitionTo http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    confirmTransition http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    r http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    r http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    Lt http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    confirmTransition http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    r http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    r http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    h http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    Yt http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    h http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    r http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    r http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    h http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    yy http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    promise callback*yy http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    h http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    r http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    r http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
    h http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:17
app.js:1:22150
TypeError: this.$refs.fatal is undefined
    fatal http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    me http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    fe http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    promise callback*se http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    me http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    $nextTick http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    fatal http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    run http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    Zn http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    me http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    fe http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    promise callback*se http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    me http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    nr http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    update http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    notify http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    set http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    SET_FATAL http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    k http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:12
    commit http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:12
    commit http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:12
    _withCommit http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:12
    commit http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:12
    commit http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:12
    fatal http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    C http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:12
    dispatch http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:12
    dispatch http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:12
    onParserError http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    request http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    get http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    get http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    fetch http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    created http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/app.js:1
    oe http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    Bn http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
    _init http://localhost:3000/media/panel/e6b1ff5f4f82099416eda50b1b2e7e37/js/vendor.js:23
app.js:1:336747

Desktop:

afbora commented 3 years ago

In cases with special characters, it is recommended to double quote the text/string.

people:
  label: "VIP*s"
  type: text
bastianallgeier commented 3 years ago

Yep, that's probably a YAML parser issue.

afbora commented 3 years ago

I reviewed the documents. Using the asterisk as an alias sign. So it's a special symbol used in YAML. YAML Parser(Spyc), on the other hand, searches for alias when this sign is used and throws an error because it cannot find it.

https://yaml.org/spec/1.0/#syntax-alias

Please use with quote "VIP*s"

S1SYPHOS commented 3 years ago

Thanks!