Forum Ametys

Forum de la communauté Ametys

You are not logged in.

#1 21/05/2013 15:58:19

Le Bechec
Guest
Registered: 13/12/2010
Posts: 92

Problème sur un formulaire

Bonjour,

un de nos utilisateurs a voulu créer un formulaire avec plusieurs champs date (règle date) mais cela ne marche pas correctement. En prévisualisation, un deuxième champ apparaît (non éditable) en plus du champ typé.

Est-ce du à une mauvaise utilisation de notre part ou est-ce un bug ?

J'ai fait un test sur votre instance de démo (page test) et le résultat est le même (nous utilisons le skin par défaut pour ce site). D'autre part, les champs typés "heure" et "date et heure" font apparaître des champs sans contrôle de saisie ?

Merci pour votre aide.

Jean-Marie

Last edited by Le Bechec (21/05/2013 16:06:42)

Offline

#2 21/05/2013 16:36:34

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Problème sur un formulaire

Bonjour,

oui ça a été un bug de la charte de démo.
c'est dû au composant jqtransform.js qui sert à rendre plus jolis les formulaires.

vous pouvez soit le désactiver, soit réappliquer la même correction (auquel cas je pourrais vous retrouver la correction)


Raphael Franchet
Expert Ametys

Offline

#3 21/05/2013 16:42:33

Le Bechec
Guest
Registered: 13/12/2010
Posts: 92

Re: Problème sur un formulaire

Ok merci, je veux bien le correctif, nous avons plusieurs sites qui utilisent ce skin.

Bonne soirée,

Jean-Marie

Offline

#4 21/05/2013 18:24:12

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Problème sur un formulaire

Je ne suis plus très certain de la correction.
Pouvez-vous commencer par mettre à jour le js de jqtransform avec celui-ci ? 

et me dire si ça va mieux


Raphael Franchet
Expert Ametys

Offline

#5 22/05/2013 09:31:10

Le Bechec
Guest
Registered: 13/12/2010
Posts: 92

Re: Problème sur un formulaire

Bonjour Raphaël,

j'ai essayé avec le nouveau fichier js mais le bug est toujours là (et effectivement, en désactivant le .js le bug disparaît)

Jean-Marie

Offline

#6 22/05/2013 11:19:36

Raphaël Franchet
Expert Team
From: Toulouse
Registered: 10/08/2010
Posts: 1,111

Re: Problème sur un formulaire

Alors, du coup j'ai cherché et retrouvé le coupable.
Il s'agit du plugin "forms". Le bug est le FORMS-160 corrigé pour la future 1.5.0 du plugins forms.
Le problème c'est que cette version n'est pas compatible avec la 3.4 du noyau mais seulement avec la nouvelle 3.5 à sortir.

Vous pouvez corriger le problème directement au sein de vos skins en intervenant sur le fichier docbook2html.xsl dans le répertoire stylesheets de votre skin et y mettre ceci

    <xsl:template match="html:input" priority="10">
        <div class="input">
            <xsl:if test="@width">
                <xsl:attribute name="style">width: <xsl:value-of select="@width"/>px;</xsl:attribute>
            </xsl:if>
            
            <input>
                <xsl:copy-of select="@id" />
                <xsl:copy-of select="@name" />
                <xsl:copy-of select="@type" />
                <xsl:copy-of select="@value" />
                
                <xsl:if test="@width">
                    <xsl:attribute name="style">width: <xsl:value-of select="@width"/>px;</xsl:attribute>
                </xsl:if>
            
                <xsl:if test="@width and @type='file'">
                    <!-- for input type=file were width may no apply -->
                    <xsl:attribute name="size">
                        <xsl:variable name="shouldbe" select="ceiling((number(@width) - 104) div 6)"/>
                        <xsl:choose>
                            <xsl:when test="$shouldbe &lt; 1"><xsl:text>1</xsl:text></xsl:when>
                            <xsl:otherwise><xsl:value-of select="$shouldbe"/></xsl:otherwise>
                        </xsl:choose>
                    </xsl:attribute>
                </xsl:if>
                
                <xsl:if test="@checked = 'true'"><xsl:attribute name="checked">checked</xsl:attribute></xsl:if>
                <xsl:if test="@maxvalue and (@type = 'password' or (@type = 'text' and (@regexptype = '' or @regexptype = 'text' or @regexptype = 'email' or @regexptype = 'phone' or @regexptype = 'custom')))"><xsl:attribute name="maxlength"><xsl:value-of select="@maxvalue"/></xsl:attribute></xsl:if>
                <xsl:if test="@type = 'text' and @regexptype = 'date'"><xsl:attribute name="maxlength">10</xsl:attribute></xsl:if>
                <xsl:if test="@type = 'text' and @regexptype = 'time'"><xsl:attribute name="maxlength">5</xsl:attribute></xsl:if>
                <xsl:if test="@type = 'text' and @regexptype = 'datetime'"><xsl:attribute name="maxlength">16</xsl:attribute></xsl:if>
            </input>
        </div>
        <div class="field-end"/>
        
        <xsl:if test="@type = 'text' and @regexptype = 'date'">
            <script type="text/javascript">
                var odp = $j("#<xsl:value-of select="@id"/>");
                var ndp = odp.clone();
                ndp.attr('id', ndp.attr('id') + '-clone');
                ndp.attr('name', null);
                ndp.attr('value', '');
                if (odp.attr("value") != "")
                {
                    $j(document).ready(function () 
                    {
                        var existingDateAsString =  odp.attr("value");
                        var existingDate = $j.datepicker.parseDate('yy-mm-dd', existingDateAsString);
                        var reformatedDateAsString = $j.datepicker.formatDate('d MM yy', existingDate); 
                        ndp.attr('value', reformatedDateAsString);
                    });
                }
                ndp.attr('readonly', 'readonly');
                ndp.appendTo(odp.parent());
                odp.css('visibility', 'hidden');
                odp.css('position', 'absolute');
                odp.css('top', '-1000px');
                odp.css('left', '-1000px');
                
                var opt = { dateFormat: 'd MM yy', altFormat: 'yy-mm-dd', altField: '#<xsl:value-of select="@id"/>'};
                <xsl:if test="@minvalue and @minvalue != ''">
                     opt.minDate = new Date(<xsl:value-of select="substring-before(@minvalue, '-')"/>, <xsl:value-of select="substring-before(substring-after(@minvalue, '-'),'-')"/> - 1, <xsl:value-of select="substring-after(substring-after(@minvalue, '-'),'-')"/>, 0, 0, 0);
                </xsl:if>
                <xsl:if test="@maxvalue and @maxvalue != ''">
                     opt.maxDate = new Date(<xsl:value-of select="substring-before(@maxvalue, '-')"/>, <xsl:value-of select="substring-before(substring-after(@maxvalue, '-'),'-')"/> - 1, <xsl:value-of select="substring-after(substring-after(@maxvalue, '-'),'-')"/>, 0, 0, 0);
                </xsl:if>
                
                ndp.datepicker(opt);
            </script>
        </xsl:if>
        
        <xsl:variable name="name" select="@name"/>
        <xsl:if test="@confirmation = 'true'">
            <div class="input">
                <xsl:attribute name="style">margin-top: 5px; <xsl:if test="@width">width: <xsl:value-of select="@width"/>px;</xsl:if></xsl:attribute>

                <input name="{@name}_confirmation" id="{@id}_confirmation">
                    <xsl:copy-of select="@type" />
                    <xsl:copy-of select="@value" />
                    
                    <xsl:if test="@width and @type='file'">
                        <!-- for input type=file were width may no apply -->
                        <xsl:attribute name="size">
                            <xsl:variable name="shouldbe" select="ceiling((number(@width) - 104) div 6)"/>
                            <xsl:choose>
                                <xsl:when test="$shouldbe &lt; 1"><xsl:text>1</xsl:text></xsl:when>
                                <xsl:otherwise><xsl:value-of select="$shouldbe"/></xsl:otherwise>
                            </xsl:choose>
                        </xsl:attribute>
                    </xsl:if>
                    
                    <xsl:attribute name="style"><xsl:if test="@width">width: <xsl:value-of select="@width"/>px;</xsl:if></xsl:attribute>
            
                    <xsl:if test="@checked = 'true'"><xsl:attribute name="checked">checked</xsl:attribute></xsl:if>
                    <xsl:if test="@maxvalue and (@type = 'password' or (@type = 'text' and (@regexptype = '' or @regexptype = 'text' or @regexptype = 'email' or @regexptype = 'phone' or @regexptype = 'custom')))"><xsl:attribute name="maxlength"><xsl:value-of select="@maxvalue"/></xsl:attribute></xsl:if>
                    <xsl:if test="@type = 'text' and @regexptype = 'date'"><xsl:attribute name="maxlength">10</xsl:attribute></xsl:if>
                    <xsl:if test="@type = 'text' and @regexptype = 'time'"><xsl:attribute name="maxlength">5</xsl:attribute></xsl:if>
                    <xsl:if test="@type = 'text' and @regexptype = 'datetime'"><xsl:attribute name="maxlength">16</xsl:attribute></xsl:if>
                </input>
            </div>
            <div class="field-end"/>
        </xsl:if>
    </xsl:template>

Raphael Franchet
Expert Ametys

Offline

#7 22/05/2013 11:22:48

Le Bechec
Guest
Registered: 13/12/2010
Posts: 92

Re: Problème sur un formulaire

Ok merci !

Jean-Marie

Offline

Board footer

Powered by FluxBB