You are not logged in.
Pages: 1
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
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
Ok merci, je veux bien le correctif, nous avons plusieurs sites qui utilisent ce skin.
Bonne soirée,
Jean-Marie
Offline
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
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
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 < 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 < 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
Ok merci !
Jean-Marie
Offline
Pages: 1