Page MenuHomePhabricator

Trouble with numbers as pagenames
Closed, ResolvedPublic

Description

I recognised some weired behaviour when trying to store a plain
number as a pagename.

There are some pages in my wiki that are "Objects". The Objects have
a category (Category:Objekt), a template (Template:Objekt) a form
(Form:Objekt), properies and so on. Most of the object-pages are
named like B0100, B0150, B0001 and so on. Some objects are named with
plain numbers like 703150, 745536 ....

On the other hand there are pages that are "Documents" (Dokument).
All the same here : category, template, form. One property of the
documents-pages is the ObjektID (has type::page) wich builds the link
to the object this document belongs to. The ObjectID has an input
field in the Documents-Form (tokens) where the user can pick one or
more of the existing Objects of the Category:Objekt

{{{field|ObjektID|list|values from category=Objekt}}}

The user an pick more then one, so within the Template:Dokument
property and parameter are linked by an arraymap

{{#arraymap:{{{ObjektID|}}}|,|XXX|[[ObjektID::XXX]]| }}

Good news: All this worked fine for some years.

Bad news:

Today I recognised that when selecting a number-name based object in
the ObjektID field like 703350 the page simply stores "3" in ist
semantic database and on the page. When using 703163 it stores "2".

With 702504 it stores "1".
There are no pages named 1, 2, 3 in the wiki and this naturally leads
to redlinks. When entering the correct ObjektID to the page with the
editor this works so I think something must be wrong with the
Form:Dokument or Extension:PageForms itself.

I really do not understand where this comes from. There has never been any problem with the B...-based pagenames and even not with
other number based Pagenames in the past. But now all number-based got messed up.

Here is the summary:

For example : I want to store 703350 to the ObjektID property on the page based on Template:Dokument

  1. Open the form, enter 703350 to the tokens field (nevertheless whicht input type), See 703350 in the form. Save the page.
  1. Look at the page, see 3 where the 703350 should be.
  1. Click "Browse Properties" see 3 at the ObjectID property
  1. Go to the editor (& action=edit) see {{Dokument|ObjektID=3....}} in the editor.
  1. Go back to the form and see 703350 in the ObjektID field.
  1. Go back to the editor, enter {{Dokument|ObjektID=703350....}},save the page
  1. Look at the page, see 703350 where the 703350 should be.
  1. Click "Browse Properties" see 703350 at the ObjectID property
  1. Open the form again and save it without changes
  1. Having back the 3 on all places as before
  1. Doing the same with value B0150 all works as it should.

Luckily the sandbox reproduces exact the same behaviour:

I created a simplyfied example with the following pages:

Category

https://sandbox.semantic-mediawiki.org/wiki/Cat%C3%A9gorie:Dokument

Templates:

https://sandbox.semantic-mediawiki.org/wiki/Mod%C3%A8le:Dokument

https://sandbox.semantic-mediawiki.org/wiki/Mod%C3%A8le:Objekt

Forms:

https://sandbox.semantic-mediawiki.org/wiki/Formulaire:Dokument

Objects:

https://sandbox.semantic-mediawiki.org/wiki/703350

https://sandbox.semantic-mediawiki.org/wiki/B0150

Dokuments

https://sandbox.semantic-mediawiki.org/wiki/Fichier:Doc1.pdf

https://sandbox.semantic-mediawiki.org/wiki/Fichier:Doc2.pdf

The bug goes away when you remove "|values from category=Objekt" in the form definition.