diff --git a/wire/modules/Process/ProcessPageEditImageSelect/ProcessPageEditImageSelect.css b/wire/modules/Process/ProcessPageEditImageSelect/ProcessPageEditImageSelect.css index dc3ddb1c..ec702c5b 100644 --- a/wire/modules/Process/ProcessPageEditImageSelect/ProcessPageEditImageSelect.css +++ b/wire/modules/Process/ProcessPageEditImageSelect/ProcessPageEditImageSelect.css @@ -36,6 +36,17 @@ opacity: 0.9; } +.select_images_field_label { + display: none; +} +#select_images.multifield .select_images_field_label { + display: block; + clear: both; + padding-bottom: 5px; +} +#select_images.multifield > li + li.select_images_field_label { + padding-top: 10px; +} #selected_image, #selected_image_container { diff --git a/wire/modules/Process/ProcessPageEditImageSelect/ProcessPageEditImageSelect.module b/wire/modules/Process/ProcessPageEditImageSelect/ProcessPageEditImageSelect.module index 8fd47b65..5d99af80 100644 --- a/wire/modules/Process/ProcessPageEditImageSelect/ProcessPageEditImageSelect.module +++ b/wire/modules/Process/ProcessPageEditImageSelect/ProcessPageEditImageSelect.module @@ -440,12 +440,20 @@ class ProcessPageEditImageSelect extends Process implements ConfigurableModule { // get images that are possibly in a repeater $repeaterValue = $page->get($field->name); if($repeaterValue instanceof Page) $repeaterValue = array($repeaterValue); - if($repeaterValue) foreach($repeaterValue as $p) { - $images = $this->getImages($p, $p->fields, $level+1); - if(!count($images)) continue; - $allImages = array_merge($allImages, $images); - $numImages += count($images); - $numImageFields++; + if($repeaterValue) { + foreach($repeaterValue as $p) { + $images = $this->getImages($p, $p->fields, $level + 1); + if(!count($images)) continue; + foreach($images as $image) { + $parentFields = $image->get('_parentFields'); + if(!is_array($parentFields)) $parentFields = array(); + array_unshift($parentFields, $field); + $image->setQuietly('_parentFields', $parentFields); + } + $allImages = array_merge($allImages, $images); + $numImages += count($images); + $numImageFields++; + } } continue; } @@ -463,8 +471,11 @@ class ProcessPageEditImageSelect extends Process implements ConfigurableModule { } if(!$level) { - if(!$numImageFields) $this->message($this->_("There are no image fields on this page. Choose another page to select images from.")); // Message when page has no image fields - else if(!$numImages) $this->message($this->_("There are no images present on this page. Upload an image, or select images from another page.")); // Message when page has no images + if(!$numImageFields) { + $this->message($this->_("There are no image fields on this page. Choose another page to select images from.")); // Message when page has no image fields + } else if(!$numImages) { + $this->message($this->_("There are no images present on this page. Upload an image, or select images from another page.")); // Message when page has no images + } } return $allImages; @@ -505,6 +516,7 @@ class ProcessPageEditImageSelect extends Process implements ConfigurableModule { public function ___execute() { if($this->config->demo) throw new WireException("Sorry, image editing functions are disabled in demo mode"); + if(!$this->page) { $error = "No page provided"; $this->error($error); @@ -512,20 +524,38 @@ class ProcessPageEditImageSelect extends Process implements ConfigurableModule { } if($this->input->get('file')) return $this->executeEdit(); - + + $sanitizer = $this->wire()->sanitizer; + $modules = $this->wire()->modules; $images = $this->getImages($this->page, $this->page->fields); $out = ''; if(count($images)) { - $winwidth = (int) $this->input->get('winwidth'); - $in = $this->wire('modules')->get('InputfieldImage'); - $in->adminThumbs = true; - + $winwidth = (int) $this->wire()->input->get('winwidth'); + $in = $modules->get('InputfieldImage'); /** @var InputfieldImage $in */ + $in->set('adminThumbs', true); + $lastFieldLabel = ''; + $numImageFields = 0; + foreach($images as $image) { + /** @var PageImage $image */ + $fieldLabels = array(); + $parentFields = $image->get('_parentFields'); + if(!is_array($parentFields)) $parentFields = array(); + foreach($parentFields as $parentField) { + $fieldLabels[] = $parentField->getLabel(); + } + $fieldLabels[] = $image->field->getLabel(); + $fieldLabel = implode(' > ', $fieldLabels); + if($fieldLabel != $lastFieldLabel) { + $numImageFields++; + $out .= "\n\t