Issue #1888954 by dawehner: Attachments with only display cause a php error in the edit UI.
							parent
							
								
									ae1116df04
								
							
						
					
					
						commit
						b0aa1ae48c
					
				| 
						 | 
					@ -91,8 +91,8 @@ class Attachment extends DisplayPluginBase {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    elseif (count($displays) == 1) {
 | 
					    elseif (count($displays) == 1) {
 | 
				
			||||||
      $display = array_shift($displays);
 | 
					      $display = array_shift($displays);
 | 
				
			||||||
      if (!empty($this->view->storage->display[$display])) {
 | 
					      if ($display = $this->view->storage->getDisplay($display)) {
 | 
				
			||||||
        $attach_to = check_plain($this->view->storage->display[$display]['display_title']);
 | 
					        $attach_to = check_plain($display['display_title']);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -217,12 +217,13 @@ class Attachment extends DisplayPluginBase {
 | 
				
			||||||
    // It is very important to call the parent function here:
 | 
					    // It is very important to call the parent function here:
 | 
				
			||||||
    parent::submitOptionsForm($form, $form_state);
 | 
					    parent::submitOptionsForm($form, $form_state);
 | 
				
			||||||
    switch ($form_state['section']) {
 | 
					    switch ($form_state['section']) {
 | 
				
			||||||
 | 
					      case 'displays':
 | 
				
			||||||
 | 
					        $form_state['values'][$form_state['section']] = array_filter($form_state['values'][$form_state['section']]);
 | 
				
			||||||
      case 'inherit_arguments':
 | 
					      case 'inherit_arguments':
 | 
				
			||||||
      case 'inherit_pager':
 | 
					      case 'inherit_pager':
 | 
				
			||||||
      case 'render_pager':
 | 
					      case 'render_pager':
 | 
				
			||||||
      case 'inherit_exposed_filters':
 | 
					      case 'inherit_exposed_filters':
 | 
				
			||||||
      case 'attachment_position':
 | 
					      case 'attachment_position':
 | 
				
			||||||
      case 'displays':
 | 
					 | 
				
			||||||
        $this->setOption($form_state['section'], $form_state['values'][$form_state['section']]);
 | 
					        $this->setOption($form_state['section'], $form_state['values'][$form_state['section']]);
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,14 +36,26 @@ class DisplayAttachmentTest extends UITestBase {
 | 
				
			||||||
    $this->drupalGet('admin/structure/views/view/test_attachment_ui/edit/attachment_1');
 | 
					    $this->drupalGet('admin/structure/views/view/test_attachment_ui/edit/attachment_1');
 | 
				
			||||||
    $this->assertText(t('Not defined'), 'The right text appears if there is no attachment selection yet.');
 | 
					    $this->assertText(t('Not defined'), 'The right text appears if there is no attachment selection yet.');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $this->drupalGet('admin/structure/views/nojs/display/test_attachment_ui/attachment_1/displays');
 | 
					    $attachment_display_url = 'admin/structure/views/nojs/display/test_attachment_ui/attachment_1/displays';
 | 
				
			||||||
 | 
					    $this->drupalGet($attachment_display_url);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    foreach (array('default', 'page-1') as $display_id) {
 | 
					    foreach (array('default', 'page-1') as $display_id) {
 | 
				
			||||||
      $this->assertNoFieldChecked("edit-displays-$display_id", format_string('Make sure the @display_id can be marked as attached', array('@display_id' => $display_id)));
 | 
					      $this->assertNoFieldChecked("edit-displays-$display_id", format_string('Make sure the @display_id can be marked as attached', array('@display_id' => $display_id)));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Save the attachments and test the value on the view.
 | 
					    // Save the attachments and test the value on the view.
 | 
				
			||||||
    $this->drupalPost(NULL, array('displays[default]' => 1, 'displays[page_1]' => 1), t('Apply'));
 | 
					    $this->drupalPost($attachment_display_url, array('displays[page_1]' => 1), t('Apply'));
 | 
				
			||||||
 | 
					    $result = $this->xpath('//a[@id = :id]', array(':id' => 'views-attachment-1-displays'));
 | 
				
			||||||
 | 
					    $this->assertEqual($result[0]->attributes()->title, t('Page'));
 | 
				
			||||||
 | 
					    $this->drupalPost(NULL, array(), t('Save'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $view = views_get_view('test_attachment_ui');
 | 
				
			||||||
 | 
					    $view->initDisplay();
 | 
				
			||||||
 | 
					    $this->assertEqual(array_keys(array_filter($view->displayHandlers->get('attachment_1')->getOption('displays'))), array('page_1'), 'The attached displays got saved as expected');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $this->drupalPost($attachment_display_url, array('displays[default]' => 1, 'displays[page_1]' => 1), t('Apply'));
 | 
				
			||||||
 | 
					    $result = $this->xpath('//a[@id = :id]', array(':id' => 'views-attachment-1-displays'));
 | 
				
			||||||
 | 
					    $this->assertEqual($result[0]->attributes()->title, t('Multiple displays'));
 | 
				
			||||||
    $this->drupalPost(NULL, array(), t('Save'));
 | 
					    $this->drupalPost(NULL, array(), t('Save'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $view = views_get_view('test_attachment_ui');
 | 
					    $view = views_get_view('test_attachment_ui');
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue