Add support for readOnly Repeater Widgets (#2960)

* Add support for previewMode in Repeater FormWidget
Refs: #2724, 5f91c45f79
* Add support for previewMode in Repeater FormWidget

Refs: #2724, 5f91c45f79

* Add support for previewMode in Repeater FormWidget

Refs: #2724, 5f91c45f79

* Add support for previewMode in Repeater FormWidget

Refs: #2724, 5f91c45f79
This commit is contained in:
Luke Towers 2017-07-08 13:34:04 -06:00 committed by GitHub
parent aeba740243
commit 2a16847724
4 changed files with 53 additions and 34 deletions

View File

@ -91,6 +91,10 @@ class Repeater extends FormWidgetBase
'maxItems',
]);
if ($this->formField->disabled) {
$this->previewMode = true;
}
$fieldName = $this->formField->getName(false);
$this->indexInputName = self::INDEX_PREFIX.$fieldName;
$this->groupInputName = self::GROUP_PREFIX.$fieldName;
@ -116,6 +120,12 @@ class Repeater extends FormWidgetBase
*/
public function prepareVars()
{
if ($this->previewMode) {
foreach ($this->formWidgets as $widget) {
$widget->previewMode = true;
}
}
$this->vars['indexInputName'] = $this->indexInputName;
$this->vars['groupInputName'] = $this->groupInputName;

View File

@ -1,6 +1,6 @@
/*
* Field Repeater plugin
*
*
* Data attributes:
* - data-control="fieldrepeater" - enables the plugin on an element
* - data-option="value" - an option with a value
@ -193,6 +193,11 @@
var $textInput = $('input[type=text]:first', $target)
if ($textInput.length) {
return $textInput.val()
} else {
var $disabledTextInput = $('.text-field > .form-control', $target)
if ($disabledTextInput.length) {
return $disabledTextInput.text()
}
}
return defaultText

View File

@ -13,24 +13,26 @@
<?php endforeach ?>
</ul>
<div class="field-repeater-add-item loading-indicator-container indicator-center">
<?php if ($useGroups): ?>
<a
href="javascript:;"
data-repeater-add-group
data-load-indicator>
<?= e(trans($prompt)) ?>
</a>
<?php else: ?>
<a
href="javascript:;"
data-repeater-add
data-request="<?= $this->getEventHandler('onAddItem') ?>"
data-load-indicator>
<?= e(trans($prompt)) ?>
</a>
<?php endif ?>
</div>
<?php if (!$this->previewMode): ?>
<div class="field-repeater-add-item loading-indicator-container indicator-center">
<?php if ($useGroups): ?>
<a
href="javascript:;"
data-repeater-add-group
data-load-indicator>
<?= e(trans($prompt)) ?>
</a>
<?php else: ?>
<a
href="javascript:;"
data-repeater-add
data-request="<?= $this->getEventHandler('onAddItem') ?>"
data-load-indicator>
<?= e(trans($prompt)) ?>
</a>
<?php endif ?>
</div>
<?php endif ?>
<script type="text/template" data-group-palette-template>
<div class="popover-head">

View File

@ -6,22 +6,24 @@
<?= $itemTitle ? 'data-collapse-title="'.$itemTitle.'"' : '' ?>
class="field-repeater-item">
<div class="repeater-item-handle <?= $this->getId('items') ?>-handle">
<i class="icon-bars"></i>
</div>
<?php if (!$this->previewMode): ?>
<div class="repeater-item-handle <?= $this->getId('items') ?>-handle">
<i class="icon-bars"></i>
</div>
<div class="repeater-item-remove">
<button
type="button"
class="close"
aria-label="Remove"
data-repeater-remove
data-request="<?= $this->getEventHandler('onRemoveItem') ?>"
data-request-data="'_repeater_index': '<?= $indexValue ?>', '_repeater_group': '<?= $groupCode ?>'"
data-request-confirm="<?= e(trans('backend::lang.form.action_confirm')) ?>">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="repeater-item-remove">
<button
type="button"
class="close"
aria-label="Remove"
data-repeater-remove
data-request="<?= $this->getEventHandler('onRemoveItem') ?>"
data-request-data="'_repeater_index': '<?= $indexValue ?>', '_repeater_group': '<?= $groupCode ?>'"
data-request-confirm="<?= e(trans('backend::lang.form.action_confirm')) ?>">
<span aria-hidden="true">&times;</span>
</button>
</div>
<?php endif ?>
<div class="repeater-item-collapse">
<a href="javascript:;" class="repeater-item-collapse-one">