|
@@ 531-564 (lines=34) @@
|
| 528 |
|
* |
| 529 |
|
* @return void |
| 530 |
|
*/ |
| 531 |
|
protected function setupScriptForDefaultView($templateScript) |
| 532 |
|
{ |
| 533 |
|
$removeClass = NestedForm::REMOVE_FLAG_CLASS; |
| 534 |
|
$defaultKey = NestedForm::DEFAULT_KEY_NAME; |
| 535 |
|
|
| 536 |
|
/** |
| 537 |
|
* When add a new sub form, replace all element key in new sub form. |
| 538 |
|
* |
| 539 |
|
* @example comments[new___key__][title] => comments[new_{index}][title] |
| 540 |
|
* |
| 541 |
|
* {count} is increment number of current sub form count. |
| 542 |
|
*/ |
| 543 |
|
$script = <<<EOT |
| 544 |
|
var index = 0; |
| 545 |
|
$('#has-many-{$this->column}').on('click', '.add', function () { |
| 546 |
|
|
| 547 |
|
var tpl = $('template.{$this->column}-tpl'); |
| 548 |
|
|
| 549 |
|
index++; |
| 550 |
|
|
| 551 |
|
var template = tpl.html().replace(/{$defaultKey}/g, index); |
| 552 |
|
$('.has-many-{$this->column}-forms').append(template); |
| 553 |
|
{$templateScript} |
| 554 |
|
}); |
| 555 |
|
|
| 556 |
|
$('#has-many-{$this->column}').on('click', '.remove', function () { |
| 557 |
|
$(this).closest('.has-many-{$this->column}-form').hide(); |
| 558 |
|
$(this).closest('.has-many-{$this->column}-form').find('.$removeClass').val(1); |
| 559 |
|
}); |
| 560 |
|
|
| 561 |
|
EOT; |
| 562 |
|
|
| 563 |
|
Admin::script($script); |
| 564 |
|
} |
| 565 |
|
|
| 566 |
|
/** |
| 567 |
|
* Setup tab template script. |
|
@@ 573-619 (lines=47) @@
|
| 570 |
|
* |
| 571 |
|
* @return void |
| 572 |
|
*/ |
| 573 |
|
protected function setupScriptForTabView($templateScript) |
| 574 |
|
{ |
| 575 |
|
$removeClass = NestedForm::REMOVE_FLAG_CLASS; |
| 576 |
|
$defaultKey = NestedForm::DEFAULT_KEY_NAME; |
| 577 |
|
|
| 578 |
|
$script = <<<EOT |
| 579 |
|
|
| 580 |
|
$('#has-many-{$this->column} > .nav').off('click', 'i.close-tab').on('click', 'i.close-tab', function(){ |
| 581 |
|
var \$navTab = $(this).siblings('a'); |
| 582 |
|
var \$pane = $(\$navTab.attr('href')); |
| 583 |
|
if( \$pane.hasClass('new') ){ |
| 584 |
|
\$pane.remove(); |
| 585 |
|
}else{ |
| 586 |
|
\$pane.removeClass('active').find('.$removeClass').val(1); |
| 587 |
|
} |
| 588 |
|
if(\$navTab.closest('li').hasClass('active')){ |
| 589 |
|
\$navTab.closest('li').remove(); |
| 590 |
|
$('#has-many-{$this->column} > .nav > li:nth-child(1) > a').tab('show'); |
| 591 |
|
}else{ |
| 592 |
|
\$navTab.closest('li').remove(); |
| 593 |
|
} |
| 594 |
|
}); |
| 595 |
|
|
| 596 |
|
var index = 0; |
| 597 |
|
$('#has-many-{$this->column} > .header').off('click', '.add').on('click', '.add', function(){ |
| 598 |
|
index++; |
| 599 |
|
var navTabHtml = $('#has-many-{$this->column} > template.nav-tab-tpl').html().replace(/{$defaultKey}/g, index); |
| 600 |
|
var paneHtml = $('#has-many-{$this->column} > template.pane-tpl').html().replace(/{$defaultKey}/g, index); |
| 601 |
|
$('#has-many-{$this->column} > .nav').append(navTabHtml); |
| 602 |
|
$('#has-many-{$this->column} > .tab-content').append(paneHtml); |
| 603 |
|
$('#has-many-{$this->column} > .nav > li:last-child a').tab('show'); |
| 604 |
|
{$templateScript} |
| 605 |
|
}); |
| 606 |
|
|
| 607 |
|
if ($('.has-error').length) { |
| 608 |
|
$('.has-error').parent('.tab-pane').each(function () { |
| 609 |
|
var tabId = '#'+$(this).attr('id'); |
| 610 |
|
$('li a[href="'+tabId+'"] i').removeClass('hide'); |
| 611 |
|
}); |
| 612 |
|
|
| 613 |
|
var first = $('.has-error:first').parent().attr('id'); |
| 614 |
|
$('li a[href="#'+first+'"]').tab('show'); |
| 615 |
|
} |
| 616 |
|
EOT; |
| 617 |
|
|
| 618 |
|
Admin::script($script); |
| 619 |
|
} |
| 620 |
|
|
| 621 |
|
/** |
| 622 |
|
* Disable create button. |