clevertech / YiiBooster

YiiBooster
BSD 2-Clause "Simplified" License
544 stars 306 forks source link

Adding datePicker from two models #499

Closed mikemix closed 10 years ago

mikemix commented 11 years ago

When I add three datePickers, one from one model, two from another, all three datepickers are ignoring language settings and just show up the default calendar view (in default English instead of Polish).

When I remove one datepicker from any model so that only one is used, the datepickers behave correctly.

magefad commented 11 years ago

Which version?

mikemix commented 11 years ago

Latest

magefad commented 11 years ago

1.0.6 1.0.7 1.0.8

mikemix commented 11 years ago

Right :D It's 1.0.6.

magefad commented 11 years ago

Try 1.0.7. Work for me in 1.0.7

mikemix commented 11 years ago

No luck :/

magefad commented 11 years ago

post you codes

mikemix commented 11 years ago

View code, html output?

magefad commented 11 years ago

Widget run first, then html etc.

mikemix commented 11 years ago
<?php
/**
 * view.php
 * 
 * @var $this CController
 * @var $form TbActiveForm
 * @var $oryginalna UmowaWewnetrzna|UmowaZewnetrzna
 * @var $umowa UmowaAneks
 * @var $aneks Aneks
 * @var $strony array
 */

$this->breadcrumbs=array(
    'Umowy'=>array('index'),
    $umowa->getNumer()=>UmowaUrl::view($umowa),
    'Aneksuj umowę'
);

$this->menu=array(
    array('label'=>'Powrót do umowy', 'url'=>UmowaUrl::view($umowa)),
);

$this->mainTitle='Aneksowanie umowy';
?>

<h3>Nowy aneks do umowy <?php echo CHtml::encode($umowa->getNumer()); ?></h3>

<?php $form=$this->beginWidget('bootstrap.widgets.TbActiveForm', array(
    'id'=>'aneks-form',
    'htmlOptions'=>array(
        'class'=>'form well',
    ),
));

echo $form->errorSummary(array($umowa, $aneks));
?>

    <table style="width:80%">
        <tr>
            <td>
                <?php echo $form->textFieldRow($aneks, 'numer_kolejny', array(
                'class'=>'code span1',
                'readonly'=>true,
            )); ?>
            </td>
            <td>
                <?php echo $form->textFieldRow($aneks, 'numer', array(
                'class'=>'code', 'style'=>'width:115px'
            )); ?>
            </td>
            <td>
                <?php echo $form->datepickerRow($aneks, 'data_aneks',
                array(
                    'class'=>'code',
                    'prepend'=>'<i class="icon-calendar"></i>',
                    'options'=>array('format'=>'yyyy-mm-dd')
                )
            ); ?>
            </td>
        </tr>
    </table>

<hr/>

<table style="width:100%">
    <tr>
        <th>Aktualne dane</th><th>Wartość po aneksowaniu</th>
    </tr>
    <tr>
        <td valign="top">
            <?php echo $form->textFieldRow($oryginalna, 'strona_id', array(
                'value'=>$oryginalna->strona->nazwa,
                'readonly'=>'readonly'
            )); ?>
        </td>
        <td>
            <?php
            echo $form->dropDownListRow($umowa,'strona_id', $strony, array('style'=>'width:245px'));
            echo CHtml::tag('br');
            $this->widget('StronaUmowyAjax', array(
                'label' => 'Nowa strona umowy',
                'formUrl' => $this->createUrl('strona/create'),
                'update' => array($umowa, 'strona_id'),
                'visible' => Yii::app()->user->checkAccess('Strona:Create')
            )); ?>
        </td>
    </tr>
    <tr>
        <td valign="top">
            <?php echo $form->textFieldRow($oryginalna, 'data_zakonczenia', array(
                'hint'=>'Brak daty oznacza umowę na czas nieokreślony.', 'class'=>'code',
                'prepend'=>'<i class="icon-calendar"></i>',
                'readonly'=>'readonly'
        )); ?>
        </td>
        <td>
            <?php echo $form->datepickerRow($umowa, 'data_zakonczenia',
            array(
                'hint'=>'Brak daty oznacza umowę na czas nieokreślony.', 'class'=>'code',
                'prepend'=>'<i class="icon-calendar"></i>',
                'options'=>array('format'=>'yyyy-mm-dd')
            )
        ); ?>
        </td>
    </tr>
    <tr>
        <td>
            <?php echo $form->textAreaRow($oryginalna, 'przedmiot', array(
            'style'=>'width:250px',
            'readonly'=>'readonly',
            'rows'=>8
        )); ?>
        </td>
        <td>
            <?php echo $form->textAreaRow($umowa, 'przedmiot', array(
                'style'=>'width:320px',
                'rows'=>8
            )); ?>
        </td>
    </tr>
    <tr>
        <td valign="top">
            <?php echo $form->textFieldRow($oryginalna,'x_dni',array(
                'maxlength'=>3,
                'class'=>'code field-x_dni',
                'readonly'=>'readonly'
            )); ?>
            <div>
                <?php $this->widget('UmowaRozliczanieCheckboxes', array(
                'form'=>$form,
                'umowa'=>$oryginalna,
                'readonly'=>true,
            )); ?>
            </div>
        </td>
        <td>
            <?php echo $form->textFieldRow($umowa,'x_dni',array('maxlength'=>3, 'class'=>'code field-x_dni')); ?>
            <div>
            <?php $this->widget('UmowaRozliczanieCheckboxes', array(
                'form'=>$form,
                'umowa'=>$umowa,
            )); ?>
            </div>
        </td>
    </tr>
    <tr>
        <td colspan="2">
            <?php echo $form->textAreaRow($umowa, 'uwagi', array('class'=>'span-16', 'rows'=>2)); ?>
        </td>
    </tr>
</table>

    <div class="form-actions">
        <?php $this->widget('bootstrap.widgets.TbButton', array(
        'buttonType'=>'submit','type'=>'primary',
        'label'=>'Dodaj aneks',
        'icon'=>'ok'
    ));?>
    </div>

<?php $form=$this->endWidget('bootstrap.widgets.TbActiveForm'); ?>

Two models: beztytuu

One model: beztytuu

mikemix commented 11 years ago

HTML output:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <link rel="stylesheet" type="text/css" href="/umowy/css/main.css" />
    <link rel="stylesheet" type="text/css" href="/umowy/css/custom.css" />
    <link rel="stylesheet" type="text/css" href="/umowy/css/print.css" media="print" />

    <script type="text/javascript" src="/umowy/js/jquery-1.8.2.min.js"></script>
    <script type="text/javascript" src="/umowy/js/site-global.js"></script>

    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css" href="/umowy/assets/b918fd3b/css/bootstrap.css" />
<link rel="stylesheet" type="text/css" href="/umowy/assets/b918fd3b/css/bootstrap-responsive.css" />
<link rel="stylesheet" type="text/css" href="/umowy/assets/b918fd3b/css/bootstrap-yii.css" />
<link rel="stylesheet" type="text/css" href="/umowy/assets/b918fd3b/css/jquery-ui-bootstrap.css" />
<link rel="stylesheet" type="text/css" href="/umowy/assets/b918fd3b/css/bootstrap-notify.css" />
<link rel="stylesheet" type="text/css" href="/umowy/assets/b918fd3b/css/bootstrap-datepicker.css" />
<script type="text/javascript" src="/umowy/assets/b918fd3b/js/bootstrap.bootbox.min.js"></script>
<script type="text/javascript" src="/umowy/assets/b918fd3b/js/bootstrap.notify.js"></script>
<script type="text/javascript" src="/umowy/assets/b918fd3b/js/bootstrap.js"></script>
<title>Asystent umów cywilno-prawnych | ZGRP - Aneks Umowa</title>
</head>

<body>

<div class="container" id="page">
    <div id="szukaj-dialog">
<form action="/umowy/index.php?r=umowa/szukaj" method="GET">
<div style="display:none"><input type="hidden" value="umowa/szukaj" name="r" /></div><input class="code" type="text" value="" name="barcode" id="barcode" /></form></div><div class="navbar navbar-inverse navbar-fixed-top"><div class="navbar-inner"><div class="container"><a class="btn btn-navbar" data-toggle="collapse" data-target="#yii_bootstrap_collapse_0"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a><a href="http://www.zgrp.pl" class="brand">Związek Gmin Regionu Płockiego</a><div class="nav-collapse collapse" id="yii_bootstrap_collapse_0"><ul id="yw4" class="nav"><li><a href="/umowy/index.php?r=site/index">Strona główna</a></li><li><a href="/umowy/index.php?r=umowa/index">Znajdź umowę</a></li><li><a href="/umowy/index.php?r=site/logout">Wyloguj się</a></li></ul><p class="navbar-text pull-right">Iwona Osowska<ul class="pull-right nav" id="yw5"><li><a href="/umowy/index.php?r=umowa/index">Tablica</a></li><li class="divider-vertical"></li><li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href="/umowy/index.php?r=site/index">Moduły <span class="caret"></span></a><ul id="yw6" class="dropdown-menu"><li class="dropdown-submenu"><a tabindex="-1" href="/umowy/index.php?r=umowa/index">Umowy</a><ul id="yw7" class="dropdown-menu"><li><a tabindex="-1" href="/umowy/index.php?r=umowa/createIn">Nowa wewnętrzna</a></li><li><a tabindex="-1" href="/umowy/index.php?r=umowa/createOut">Nowa zewnętrzna</a></li></ul></li><li class="dropdown-submenu"><a tabindex="-1" href="/umowy/index.php?r=rejestr/index">Rejestry</a><ul id="yw8" class="dropdown-menu"><li><a tabindex="-1" href="/umowy/index.php?r=rejestr/create">Nowy rejestr</a></li></ul></li><li class="dropdown-submenu"><a tabindex="-1" href="/umowy/index.php?r=departament/index">Departamenty</a><ul id="yw9" class="dropdown-menu"><li><a tabindex="-1" href="/umowy/index.php?r=departament/create">Nowy departament</a></li></ul></li><li class="dropdown-submenu"><a tabindex="-1" href="/umowy/index.php?r=strona/index">Strony</a><ul id="yw10" class="dropdown-menu"><li><a tabindex="-1" href="/umowy/index.php?r=strona/create">Nowa strona</a></li></ul></li><li class="dropdown-submenu"><a tabindex="-1" href="/umowy/index.php?r=rola/index">Role</a><ul id="yw11" class="dropdown-menu"><li><a tabindex="-1" href="/umowy/index.php?r=rola/create">Nowa rola</a></li></ul></li><li class="dropdown-submenu"><a tabindex="-1" href="/umowy/index.php?r=uzytkownik/index">Użytkownicy</a><ul id="yw12" class="dropdown-menu"><li><a tabindex="-1" href="/umowy/index.php?r=uzytkownik/create">Nowy użytkownik</a></li></ul></li></ul></li></ul></div></div></div></div>
    <div class="container" style="margin-top:80px">
        <ul class="breadcrumbs breadcrumb"><li><a href="/umowy/index.php">Start</a><span class="divider">/</span></li><li><a href="/umowy/index.php?r=umowa/index">Umowy</a><span class="divider">/</span></li><li><a href="/umowy/index.php?r=umowa/view&amp;id=42">2/2013</a><span class="divider">/</span></li><li class="active">Aneksuj umowę</li></ul>
        <div class="container">
    <div class="span-22">
        <div id="content">

<h3>Nowy aneks do umowy 2/2013</h3>

<form class="form well form-vertical" id="aneks-form" action="/umowy/index.php?r=umowa/aneks&amp;id=42" method="post">
    <table style="width:80%">
        <tr>
            <td>
                <label for="Aneks_numer_kolejny">Kolejny numer aneksu</label><input class="code span1" readonly="readonly" name="Aneks[numer_kolejny]" id="Aneks_numer_kolejny" type="text" value="1" />
            </td>
            <td>
                <label for="Aneks_numer" class="required">Pełny numer aneksu <span class="required">*</span></label><input class="code" style="width:115px" name="Aneks[numer]" id="Aneks_numer" type="text" value="A/1/2/2013" />
            </td>
            <td>
                <label for="Aneks_data_aneks" class="required">Data aneksu <span class="required">*</span></label><div class="input-prepend"><span class="add-on"><i class="icon-calendar"></i></span><input class="code" type="text" autocomplete="off" name="Aneks[data_aneks]" id="Aneks_data_aneks" /></div>
            </td>
        </tr>
    </table>

<hr/>

<table style="width:100%">
    <tr>
        <th>Aktualne dane</th><th>Wartość po aneksowaniu</th>
    </tr>
    <tr>
        <td valign="top">
            <label for="UmowaWewnetrzna_strona_id" class="required">Strona umowy <span class="required">*</span></label><input value="Karolina Kowalkowska" readonly="readonly" name="UmowaWewnetrzna[strona_id]" id="UmowaWewnetrzna_strona_id" type="text" />
        </td>
        <td>
            <label for="UmowaAneks_strona_id" class="required">Strona umowy <span class="required">*</span></label><select style="width:245px" name="UmowaAneks[strona_id]" id="UmowaAneks_strona_id">
<option value="4">Company name</option>
</select>
<br /><div id="strona-dialog">
<span id="strona-form"></span></div><a id="btn-strona-create" onClick="js:(function($) {
                    $.get(&quot;/umowy/index.php?r=strona/create&quot;, function(e) {
                        $(&quot;#strona-dialog&quot;).dialog(&quot;open&quot;);
                        $(&quot;#strona-form&quot;).html(e);
                    });
                })(jQuery);" class="btn btn-mini">Nowa strona umowy</a>        </td>
    </tr>
    <tr>
        <td valign="top">
            <label for="UmowaWewnetrzna_data_zakonczenia">Data zakończenia</label><div class="input-prepend"><span class="add-on"><i class="icon-calendar"></i></span><input class="code" readonly="readonly" name="UmowaWewnetrzna[data_zakonczenia]" id="UmowaWewnetrzna_data_zakonczenia" type="text" value="2013-04-30" /></div><p class="help-block">Brak daty oznacza umowę na czas nieokreślony.</p>
        </td>
        <td>
            <label for="UmowaAneks_data_zakonczenia" class="required">Data zakończenia <span class="required">*</span></label><div class="input-prepend"><span class="add-on"><i class="icon-calendar"></i></span><input class="code" type="text" autocomplete="off" name="UmowaAneks[data_zakonczenia]" id="UmowaAneks_data_zakonczenia" value="2013-04-30" /></div><p class="help-block">Brak daty oznacza umowę na czas nieokreślony.</p>
        </td>
    </tr>
    <tr>
        <td>
            <label for="UmowaWewnetrzna_przedmiot" class="required">Przedmiot umowy <span class="required">*</span></label><textarea style="width:250px" readonly="readonly" rows="8" name="UmowaWewnetrzna[przedmiot]" id="UmowaWewnetrzna_przedmiot">Wykonywanie zadań na rzecz realizacji projektów finansowanych ze środków europejskich</textarea>
        </td>
        <td>
            <label for="UmowaAneks_przedmiot" class="required">Przedmiot umowy <span class="required">*</span></label><textarea style="width:320px" rows="8" name="UmowaAneks[przedmiot]" id="UmowaAneks_przedmiot">Wykonywanie zadań na rzecz realizacji projektów finansowanych ze środków europejskich</textarea>
        </td>
    </tr>
    <tr>
        <td valign="top">
            <label for="UmowaWewnetrzna_x_dni">Rozliczanie co</label><input maxlength="3" class="code field-x_dni" readonly="readonly" name="UmowaWewnetrzna[x_dni]" id="UmowaWewnetrzna_x_dni" type="text" value="30" />
            <div>
                <input id="ytUmowaWewnetrzna_rozliczalnosc" type="hidden" value="1" name="UmowaWewnetrzna[rozliczalnosc]" /><label class="checkbox inline"><input readonly="readonly" id="UmowaWewnetrzna_rozliczalnosc_0" value="2" type="checkbox" name="UmowaWewnetrzna[rozliczalnosc][]" /><label for="UmowaWewnetrzna_rozliczalnosc_0">Nierozliczalna</label></label><label class="checkbox inline"><input readonly="readonly" id="UmowaWewnetrzna_rozliczalnosc_1" value="3" type="checkbox" name="UmowaWewnetrzna[rozliczalnosc][]" /><label for="UmowaWewnetrzna_rozliczalnosc_1">Na koniec umowy</label></label>
            </div>
        </td>
        <td>
            <label for="UmowaAneks_x_dni">Rozliczanie co</label><input maxlength="3" class="code field-x_dni" name="UmowaAneks[x_dni]" id="UmowaAneks_x_dni" type="text" value="30" />
            <div>
            <input id="ytUmowaAneks_rozliczalnosc" type="hidden" value="1" name="UmowaAneks[rozliczalnosc]" /><label class="checkbox inline"><input readonly="readonly" id="UmowaAneks_rozliczalnosc_0" value="2" type="checkbox" name="UmowaAneks[rozliczalnosc][]" /><label for="UmowaAneks_rozliczalnosc_0">Nierozliczalna</label></label><label class="checkbox inline"><input readonly="readonly" id="UmowaAneks_rozliczalnosc_1" value="3" type="checkbox" name="UmowaAneks[rozliczalnosc][]" /><label for="UmowaAneks_rozliczalnosc_1">Na koniec umowy</label></label>
            </div>
        </td>
    </tr>
    <tr>
        <td colspan="2">
            <label for="UmowaAneks_uwagi">Uwagi</label><textarea class="span-16" rows="2" name="UmowaAneks[uwagi]" id="UmowaAneks_uwagi"></textarea>
        </td>
    </tr>
</table>

    <div class="form-actions">
        <button class="btn btn-primary" id="yw2" type="submit" name="yt0"><i class="icon-ok"></i> Dodaj aneks</button>    </div>

</form>        </div><!-- content -->
    </div>
    <div class="span-6 last">
                <div id="sidebar" class="well well-small">
            <ul id="yw3" class="nav nav-list"><li class="nav-header nav-header">Dostępne opcje</li><li><a href="/umowy/index.php?r=umowa/view&amp;id=42">Powrót do umowy</a></li></ul>        </div><!-- sidebar -->
            </div>
</div>
    </div>
</div>
<!-- page -->

<script type="text/javascript" src="/umowy/assets/b918fd3b/js/bootstrap.datepicker.js"></script>
<script type="text/javascript" src="/umowy/assets/b918fd3b/js/locales/bootstrap-datepicker.pl.js"></script>
<script type="text/javascript" src="/umowy/assets/cfa09660/jui/js/jquery-ui.min.js"></script>
<script type="text/javascript">
/*<![CDATA[*/
jQuery(function($) {
jQuery('#Aneks_data_aneks').datepicker({'format':'yyyy-mm-dd','language':'pl','weekStart':0});
jQuery('#strona-dialog').dialog({'title':'Nowa strona umowy','autoOpen':false,'modal':true,'resizable':false,'buttons':{'Utwórz':function() {
                        var popup=jQuery(this);
                        popup.find("form").submit(function(e) {
                            e.preventDefault();
                            $.post($(this).attr("action"), $(this).serialize(), function(data)
                            {
                                var r=$.parseJSON(data);
                                if (r.result == 1) {
                                    $("#UmowaAneks_strona_id").append($("<option>").attr("value",r.id).text(r.nazwa)).val(r.id);
                                    popup.dialog("close");
                                } else {
                                    alert("Błąd dodawania strony.\nNieprawidłowe dane w formularzu.");
                                }
                            });
                        }).submit();
                    },'Anuluj':function(){$(this).dialog("close");}}});
jQuery('#UmowaAneks_data_zakonczenia').datepicker({'format':'yyyy-mm-dd','language':'pl','weekStart':0});

            var field=$("#UmowaAneks_x_dni");
            var chk0=$("#UmowaAneks_rozliczalnosc_0");
            var chk1=$("#UmowaAneks_rozliczalnosc_1");

            chk0.click(function()
            {
                if (chk1.is(":checked"))
                    chk1.attr("checked",false);

                if ($(this).is(":checked")) {
                    field.attr("data-value", field.val());
                    field.val("").attr("disabled","disabled");
                } else {
                    field.removeAttr("disabled").val(field.attr("data-value"));
                }
            });

            chk1.click(function()
            {
                if (chk0.is(":checked"))
                    chk0.attr("checked",false);

                if ($(this).is(":checked")) {
                    field.attr("data-value", field.val());
                    field.val("").attr("disabled","disabled");
                } else {
                    field.removeAttr("disabled").val(field.attr("data-value"));
                }
            });

jQuery('#szukaj-dialog').dialog({'title':'Znajdź umowę','autoOpen':false,'modal':true,'resizable':false,'buttons':{'Zamknij':function(){$(this).dialog("close");}}});
jQuery('#yii_bootstrap_collapse_0').collapse({'parent':false,'toggle':false});
});
/*]]>*/
</script>
</body>
magefad commented 11 years ago

'format':'yyyy-mm-dd','language':'pl'

All fine, what says JS debug console?

mikemix commented 11 years ago

No errors.

digitalcrab commented 10 years ago

Hello guys @mikemix @magefad In current version i can't reproduce this issue, maybe now it is fine My example: http://yii-demo.yukki.name/bootstrap/issue499

Main idea how to use two date pickers - you should use different id for each one! Example:

$form = $this->beginWidget('bootstrap.widgets.TbActiveForm', array(
    'type' => 'horizontal',
));

 echo $form->datePickerRow($model1, 'create_date', array(
     'options' => array(
         'format' => 'yyyy-mm-dd',
     ),
     'htmlOptions' => array(
         'id' => 'date_id1',
     ),
 ), array(
     'append' => TbHtml::icon('time'),
 ));

echo $form->datePickerRow($model2, 'create_date', array(
    'options' => array(
        'format' => 'yyyy-mm-dd',
    ),
    'htmlOptions' => array(
        'id' => 'date_id2',
    ),
), array(
    'append' => TbHtml::icon('time'),
));

$this->endWidget();

Thanks ;)