Skip to content

Commit 88f809a

Browse files
Update InputfieldRepeater so it knows to publish a field updated by ajax (like a dragged-in image).
1 parent 04a25a3 commit 88f809a

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.js

+1
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ $(document).ready(function() {
7676
$readyItem.hide();
7777
$readyItem.removeClass('InputfieldRepeaterReady');
7878
$readyItem.find('input.InputfieldRepeaterDisabled').remove(); // allow it to be saved
79+
$readyItem.find('input.InputfieldRepeaterPublish').attr('value', 1); // identify it as added
7980
$readyItem.slideDown('fast');
8081
$readyItem.children('.ui-widget-content').effect('highlight', {}, 1000);
8182
return false;

wire/modules/Fieldtype/FieldtypeRepeater/InputfieldRepeater.module

+14
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,14 @@ class InputfieldRepeater extends Inputfield {
150150
$wrap = wire('modules')->get('InputfieldFieldset');
151151
$wrap->label = "$label #" . (++$cnt);
152152

153+
// add a hidden field that will be populated with a positive value for all visible repeater items
154+
// this is so that processInput can see this item should be a published item
155+
$f = wire('modules')->get('InputfieldHidden');
156+
$f->attr('name', "publish_repeater{$page->id}");
157+
$f->attr('class', 'InputfieldRepeaterPublish');
158+
$f->attr('value', $page->is(Page::statusHidden) ? 0 : 1);
159+
$wrap->add($f);
160+
153161
if($page->is(Page::statusHidden)) {
154162
$wrap->class = 'InputfieldRepeaterReady';
155163
$wrap->label .= ' - ' . $this->_('New');
@@ -162,6 +170,7 @@ class InputfieldRepeater extends Inputfield {
162170
$f->attr('value', $page->id);
163171
$wrap->add($f);
164172

173+
165174
} else if($page->is(Page::statusUnpublished)) {
166175
$wrap->label .= ' - ' . $this->_('Unpublished');
167176
}
@@ -222,6 +231,7 @@ class InputfieldRepeater extends Inputfield {
222231
$deleteName = "delete_repeater{$page->id}";
223232
$sortName = "sort_repeater{$page->id}";
224233
$disabledName = "_disable_repeater{$page->id}";
234+
$publishName = "publish_repeater{$page->id}";
225235

226236
if($input->$deleteName == $page->id) {
227237
$value->remove($page);
@@ -234,6 +244,10 @@ class InputfieldRepeater extends Inputfield {
234244
continue;
235245
}
236246

247+
if($input->$publishName > 0 && $page->is(Page::statusHidden)) {
248+
$page->removeStatus(Page::statusHidden | Page::statusUnpublished);
249+
}
250+
237251
$page->sort = (int) $input->$sortName;
238252
if($page->isChanged('sort')) {
239253
$this->message("Sort changed for field {$this->field} page {$page->id}", Notice::debug);

wire/modules/Process/ProcessPageEdit/ProcessPageEdit.module

+1-1
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ class ProcessPageEdit extends Process {
155155

156156
$this->processInput($this->form);
157157

158-
foreach($this->page->getChanges() as $change) {
158+
foreach(array_unique($this->page->getChanges()) as $change) {
159159
$this->message(sprintf($this->_('Change: %s'), $change)); // Message shown for each changed field
160160
}
161161

0 commit comments

Comments
 (0)