Extension talk:Semantic Forms Inputs
- [History↑]
Contents
![]() First page |
![]() Previous page |
![]() Next page |
![]() Last page |
Placing a datatimepicker field inside a multiple-instance template does not seem to be supported: When modifying the date of any of the added instances, it always updates the value of the first one. http://scratchpad.referata.com/wiki/Form:Datetimepicker (to verify behavior copy in a site with Semantic Forms Inputs installed)
I have a problem like this. If the form with multiple instance has more than one datepicker, only the first can be used.
Menuselect also not supported in multiple-instance templates. It prints the menu structure instead of creating a menu.
The Menuselect input type is depending on the Semantic TreeView extension. Are there plans to further support this input type or will it be phased out? I guess a note about this should be on this extension's page. Cheers
Semantic TreeView is IMHO not maintainable. Instead I improved the tree format of Extension:SemanticResultFormats. Guess I should also update the menuselect documentation,
I have got an other question abou menuselect: is it possible to select a value the type comma and selcet a second value? Becau in my case the first value is always been overwritten! Thanks for help.
Thank you for the fast answer! What do you recommend instead? More multiselcet fields in a row mapping the same Property? Or maybe change the JavaScript of multiselect? If yes: where?
You could try some other input type, e.g. the twolistboxes input type available in the development version of the extension. You could of course also have several inputs or use a multiple template form. If you want to patch menuselect, have a look at the libs/menuselect.js file.
Dear all,
I'm using the Datepicker from Input formats in a german installation. In the Form I defined "date format=dd.mm.yy" and when using the picker everything is fine. But after saving the form data (I understand that the dates are saved in format YYYY/mm/dd anyway) and calling the result wiki site the date is also shown in YYYY/mm/dd format.
The strange thing is that I already have a similar setup of a Form that is also utilizing the datepicker and this works perfectly well. The date format during entering/editing in the datepicker is in dd.mm.yy format and after saving the dates on the result wiki page are also displayed in the correct dd.mm.yy format.
I could not find any differences regarding the date form fields and template definitions in both cases - therefore I don't have a clue what is going wrong here...
Does anybody have some suggestions?
Many thanks!
You should use the #time parser function from Extension:ParserFunctions. I don't know, why one wiki works while the other doesn't. Look at the source of the wiki pages to see if they really are the same.
Dates are stored like this YYYY/MM/DD. What is the best way to store this date as an ISO-formatted date (YYYY-MM-DD) in the template for this form?
[[Has start date::{{{Start date|}}}]]
I tried #formatdate/#dateformat but didn't get it to work.
[[Has start date::{{#formatdate:{{{Start date|}}}|ISO 8601}}]]
If it is not possible to store the date this way: Is it possible to display dates as YYYY-MM-DD?
Sorry, I don't know any solution.
Used:
[[Has start date::{{#replace:{{{Start date|}}}|/|-}}]]
Hi all! First, a big big thank to all who lets live this great software! And sorry for my english. As a rather unexperimented admin of a unfortunately non-public smw-wiki I don't now where to tune for this problem: The datepicker popup let me choose a date, but it fills in the form-field in a strange way: "TT.November.JJ" instead of "31/10/2012". The saved page contain also the defective string. When I edit a page witch contains already a correct date-string with the datepicker oder the datetimepicker-form, it appears also wrong. But this occurs only if the Language in "my preferences" is set to German. So, English and French works well. See the screenshot on [1]. Contrary, the timpicker-form works well for all languages. This behaviour occurs only since the last upgrading of some extensions, but I don't now exactly of which one. Actually, this is our installation: [2]. Thanks for help!
Sorry for this typo: in the text above, "31/10/2012" should be "2012/10/31" since this is the only accepted format. The described problem still occurs.
Hi Lugant,
I think you caught a version with an error in the German translations. Sorry about that. To fix it please find the file SemanticFormsInputs.i18n.php. There around line 240 you should find the German translations of the dateformat. Please fix them so they look like this:
'semanticformsinputs-dateformatlong' => 'd. MM yy', 'semanticformsinputs-dateformatshort' => 'dd.mm.yy',
Alternatively you can use the current development version (https://gerrit.wikimedia.org/r/gitweb?p=mediawiki/extensions/SemanticFormsInputs.git;a=snapshot;h=refs/heads/master;sf=tgz) which should be stable.
Cheers,
Hi all,
I'm trying to use multiple values for a menuselect field. I tried to use a arraymap as Semantic Forms but it doesn't work. I don't know if it's possible but if it's case a help will be welcome. Thanks in advance
I share my little progress despite I don't have what I would want. May be I can have a feedback that can help me!
I use a template and with the call
{{{for template|MyTemplate|multiple}}}
I can have the number of fields I want. But the problem is since I specify values with a menuselect and when I edit the page for the first time values do not appear and if I enter values by my hand it doesn't considere it!
I'm working on, if I have a solution I will share wiht you but if somebody has an idea it is welcome
Cheers.
the previous post is mine! I forgot to identify myself
Hi. I am not sure I understand the problem. Could you explain a bit more? Maybe using a concrete example?
Here is an example
{{{for template|InfrastructureType|multiple}}}
{{{field|Infrastructure type|input type=menuselect |size=75
|structure=
*Cultural Building
*School
*Hospital
}}}
{{{end template}}}
the problem is when I create a page with this template the scrolling list doesn't display
The download link in the Infobox seems to point to a completely different extension.. "Lingo?"
Hi, I'm having trouble getting SFI to work at all on my site. I have it installed (confirmed by the Version page), as well as MediaWiki (1.18.1), Semantic MediaWiki (Version 1.7.1), Semantic Forms (Version 2.4.2), etc. However, when I try adding SFI fields (I copied the Datepicker, Timepicker, and Menuselect examples exactly), it's as though SFI isn't installed at all, I just get the regular text input field, (and a list below it for menuselect). I do get a Javascript error
jQuery("#sfForm").data("SemanticForms") is undefined,
but I'm not sure it's related, as I get the same error sometimes when there aren't any SFI fields on the page. I've tried the development version as well, and it doesn't seem to change anything.
I'm pretty much out of ideas; any help appreciated!
Hi. The JavaScript error is related in that it crashes JavaScript. All the SFI inputs are designed to fall back to some standard input in case JavaScript is not available. That is what you see. Do you by any chance use a custom skin?
I'm using the 'danger' skin, but I just tested it in 'standard' and 'vector' and got the same results.
Thanks for your reply!
On further investigation, the Javascript error only occurs when I 'Preview' a form - it isn't caused by the SFI field, and when I just save the form, with the field, without preview, there are no Javascript errors, and the datepicker and datetimepicker work! However, the menuselect field, which is what I really want to use, still doesn't. When the extension page says This does currently only work in the development version on SVN. does that refer to the whole menuselect field, or just linking internally?
Up until yesterday I would have said, that sentence should be dropped. I tried it yesterday on an 1.18.3 mediawiki and it seemed to work. Can you try if it works on http://scratchpad.referata.com?
I get the same behavior as I do on my site. Maybe I'm using it wrong? I'm still copying the example: http://scratchpad.referata.com/wiki/Special:FormEdit/ActiveFormTest/Test_Page
Hi Stephan and all the developers! Would you mind to write sometime a tiny manual on how to program new Form Input?
Hi Yury, a very short manual would probably be something like 1. Create a subclass of SFFormInput, e.g. call it MyNewInputClass 2. Register your new input like this: $sfgFormPrinter->registerInputType( 'MyNewInputClass' );
There are a few things to be aware of (e.g. the expected name attribute of the html input elements), but this is the basic idea. I think the SFI code improved a lot lately, so it should be possible to follow what is done there. E.g. have a look at the timepicker code. And if you come up with an input, that could be useful for others, consider contributing it!
Cheers,
I have almost finished with my FormsInput for picking multiple elements so I'll be able to expand your instructions a little bit. I still don't understand some things, would you mind to help me with them?
- the name attribute of the form input sometimes have brackets like in it like this: input3[].
- On the other hand sometimes we add an additional hidden element like
.
Html::hidden($name . '[is_list]', 1)
- And thirdly we have the method canHandleLists() to override.
It seems that all three thing are indicating that the form input can handle lists, but it's pretty weird to see three different pieces of code trying to say the same thing. :-)
Just noticed in the code that the timepicker is a custom jquery-ui that uses fadeIn/fadeOut, I personally think this should be replaced by show/hide with a shorter timeout as it makes selection very slow. Maybe a better UI should be provided as mobile device will have hard time using this as it is really high in height.
Hi TiCPU, show/hide would mean to have no timeout at all. Balancing the number of available choices with the need to have something that allows choosing the time with a minimum of mouse clicks/mouse mileage is challenging. If you have ideas on how an improved UI could work, I would be very interested.
Cheers,
Maybe a simple dropbox would be enough, as you can configure the increments and start/stop time, most user will use the scroll wheel and mobile will use their dropbox.
I tried using show/hide instead of fadein/out here and it works fine, I then changed the timeout from 400 show / 400 hide to 20 show / 100 hide with nice results, no more delay.
Hi, I'm having a strange problem. Datepicker doesn't show in a wiki that is the same as far as I can see as another wiki where the datepicker works fine. I can't figure out where it goes wrong.
Both wiki's are the same in the sense that they have the same versions of MW (1.18.2), SMW (1.7.1), SF (2.4.2) and SFI (0.5), same preferences and same LocalSettings (as far as relevant).
Differences are that the wiki with datepicker showing is older and has been upgraded several times. The other one is a first installation with these versions. Other difference is that the ok wiki has a newer php version: 5.3.2 vs 5.2.11 for the nok wiki.
Hi, jquery script located in the cache before SF upgraded. Try using the development version of Semantic Forms Inputs.
See Thread:Extension talk:Semantic Forms Inputs/jquery-ui files moved from SF to SMW. This work for me.
Hi,
I noticed Semantic Forms Inputs still uses the former location of the jquery-ui files, namely $sfgScriptPath.
Since the files have moved to the SMW core extension, this seems to fix the problem: (in SemanticFormsInputs/includes/SFI_DatePicker.php)
- global $sfgScriptPath, $sfigSettings; + global $sfgScriptPath, $sfigSettings, $smwgScriptPath; - $wgOut->addExtensionStyle( $sfgScriptPath . '/skins/jquery-ui/base/jquery.ui.datepicker.css' ); - $wgOut->addExtensionStyle( $sfgScriptPath . '/skins/jquery-ui/base/jquery.ui.theme.css' ); - $wgOut->addScript( '<script type="text/javascript" src="' . $sfgScriptPath . '/libs/jquery-ui/jquery.ui.datepicker.min.js"></script> ' ); + $wgOut->addExtensionStyle( $smwgScriptPath . '/skins/jquery-ui/base/jquery.ui.datepicker.css' ); + $wgOut->addExtensionStyle( $smwgScriptPath . '/skins/jquery-ui/base/jquery.ui.theme.css' ); + $wgOut->addScript( '<script type="text/javascript" src="' . $smwgScriptPath . '/libs/jquery-ui/jquery.ui.datepicker.min.js"></script> ' );
Thanks for your efforts. Nice to see people care for this extension enough to actually dig through the code.
SFI got some rework in the development version available from SVN that includes basing it entirely on the ResourceLoader and removing the sfgScriptPath dependency. Note, that smwgScriptPath is also not needed, as the datepicker is available directly from the jQuery modules included with MW.
Long story short: Try using the development version.
Cheers,
Forms with datepicker cannot be loaded. I am getting the following PHP errors:
PHP Notice: Undefined variable: wgLang in <extension_path>/SemanticFormsInputs/includes/SFI_DatePicker.php on line 177, referer: <referer_url> PHP Fatal error: Call to a member function getCode() on a non-object in <extension_path>/SemanticFormsInputs/includes/SFI_DatePicker.php on line 177, referer: <referer_url>
I have commented out all other extensions except for Semantic Bundle extensions.
Running: MW 18.1, SF 2.4.1, SFI 1.7.1 and latest SVN update of other Semantic Bundle extensions
Hi, I've just installed Inputs and I'm having a problem with the datepicker. The year selection seems to be fixed in a 10 year period either side of the default (or last selected) year. Scrolling thru to years not appearing in the list is not possible. MW 1.18, SF 2.3.1, SFI 0.5, SMW 1.6.1.
Fault is not dependednt on the "first date =" variable
I've tried IE on XP an Firefox on Mac OSX, same result.
Is it a bug or a problem with my settings somewhere?
Cheers - Scott
You are right. What would be the expected behaviour, though?
Sorry for the delayed reply, been rather busy of late...
I would expect it to keep scrolling back/forward through the years until you stopped pressing the up or down arrow. One of the forms I am using it in is to input a vehicle's year of manufacture. When someone begins to fill out the form and selects the year then they can only scroll back as far as 2001. This may confuse some into thinking that they cannot enter a date prior to that.
I would like it to work a bit differently than you proposed (e.g. like this, preferably with a click-and-hold feature for fast forward/backward), but I agree, that something like that would be a really nice feature. The problem is, it would require a change to the jQuery datepicker code, which is out of the scope of this extension. I will note it as a feature request, but better don't hold your breath on it.
If you are really intent on having this, you would have to drive it. I.e get someone at jqueryui.com to implement your feature and then kick me again to use it.
(What I probably could do is give you some option where you could set the years shown in the dropdown.)
Either way would work. I'd be surprised if it's hard to fix the existing control though. When you click on the year control, if you select the earliest year in the list the control disappears and shows the year selected. The next time you click on the control the year previously selected is centred in the list and you can go back another ten years. The control can eventually be 'hacked' to get back to the year that you want, you just can't get there via the scroll buttons.
Regular Expression for validating that Form Inputs don't contain special characters
Hi,
I spent weeks trying to find how to do this - so I thought it would be a good idea to tell other people.
Here's a form input with regular expression, that validates that there are no
{{, }} or |
characters in the field:
(Ref https://bugzilla.wikimedia.org/show_bug.cgi?id=30042 and http://wikimedia.7.n6.nabble.com/Semantic-Forms-Need-better-input-checking-td555083.html)
{{{field|Description
| input type=regexp
|base type=regexp
|or char=;
|regexp=/(?:^\{\{VALIDATIONOFF\}\};^(?:(?!\{\{;\}\}).)*$)/
|message=Dont use }} or {{ without making sure that you always have a matched pair of brackets. To bypass this warning please put { {VALIDATIONOFF} }; at the very beginning of your input (without the spaces).
|base prefix=filter2
|filter2.regexp=/\!/
|filter2.inverse
|filter2.message=Don't use a pipe {{!}} in the input. Use { {!} } instead (without the spaces and not inside <pre>)
|filter2.base type=textarea
|rows=10|cols=100|autogrow
}}}
Hi, the /qqq section is somehow diveded into two parts and thus contains double entries. Cheers
It would be handy if the date and time pickers could support second resolution. Is there any reason to not support second resolution in hh:mm:ss?
The docs are quite nice, except that you cannot get an idea of what a certain input looks like at a glance. Having some screenshot for each input would greatly help that. And maybe with each screenshot a link to some example.
With SF's input type=date or datetime it's possible to specify 'default=now', and it'll fill in the current time, is this also possible with date(time)picker? 'default=2013/04/25' in the form definition does not work, since the #time parser functions does not get evaluated.
I'm afraid it is not possible with either of them. The default value is handed down to the input type in the same parameter as the current value, there is no possibility to distinguish between them so I can't decide when to parse and when not. The solution lies with SF here. You might vote on this or this bug or (more effectively) discuss it with Yaron directly.
It's not clear to me that this requires any change from SF - it might just need a fix in SFI. F.trott and I talked about the issue "offline", but now I don't remember what the conclusion was.
I do. :)
The point is, SFI could parse the current/default value given as a parameter to the input. But then it would also parse any user input a user might have done earlier. E.g. lets say it would indeed parse the value. Along comes some user thinking that "{{#time:...}}" would be a good thing to put into that field - would result in a valid date after all. This user would fully and rightly expect that "{{#time:...}}" appears verbatim in the page. It even would after the first edit. Then on the second edit the datepicker would parse that string and save it, i.e. it would replace the parser command by a static value.
Patrick, could you try updating to the last SVN version of SF and using default={{#time:Y/m/d}}? (You will need Extension:ParserFunctions if you don't have it yet.) The "default" parameter should get parsed now. It's still brand new, so any bug reports would be welcome.
just tried that, but the date doesn't get parsed inside the form field. I'm using SF 2.2.1, SFI 0.4.2 alpha, parser functions 1.4.0
Hmm, should work.
What exactly do you specify as the default and what is displayed in the form?
And does it work if you use a different input type, e.g. text?
Using default with the parser worked for me. Remember that if you use a parser within a field declaration make sure it is not the last parameter specified, or if it is, place the 3 field closing curly braces on the next new line, otherwise it will break the field; for example:
- WRONG:
{{{field|bulletin_date|mandatory|input type=datetimepicker|default={{#time:Y/m/d}}}}} - RIGHT:
{{{field|bulletin_date|mandatory|default={{#time:Y/m/d}}|input type=datetimepicker}}} - RIGHT:
{{{field|bulletin_date|mandatory|input type=datetimepicker|default={{#time:Y/m/d}}
}}}
Cheers.
![]() First page |
![]() Previous page |
![]() Next page |
![]() Last page |



