function dsPanelViewModesTests::testPanelViewModes in Display Suite 7
Panels view modes tests.
File
- tests/
ds.panels.test, line 85 - Panel view modes tests.
Class
- dsPanelViewModesTests
- @file Panel view modes tests.
Code
function testPanelViewModes() {
variable_set('ds_extras_panel_view_modes', TRUE);
$this
->refreshVariables();
cache_clear_all('ds_fields:', 'cache', TRUE);
cache_clear_all('entity_info:', 'cache', TRUE);
cache_clear_all('theme_registry:', 'cache', TRUE);
cache_clear_all('module_implements', 'cache_bootstrap');
menu_rebuild();
// Create 2 nodes.
$node = $this
->drupalCreateNode(array(
'type' => 'article',
'promote' => FALSE,
));
$this
->drupalGet('node/' . $node->nid);
$node_sticky = $this
->drupalCreateNode(array(
'type' => 'article',
'sticky' => TRUE,
'promote' => FALSE,
));
$this
->drupalGet('node/' . $node->nid);
// Create a new layout and assert it's used.
$edit = array();
$this
->DSpanelEditLayout($edit, '', 'twocol');
$this
->assertRaw('panel-display panel-2col');
// Remove the layout and assert it's not used anymore.
$this
->drupalPost('admin/structure/types/manage/article/display', $edit, t('Remove layout'));
$this
->assertText(t('The layout has been removed.'));
$this
->drupalGet('node/' . $node->nid);
$this
->assertNoRaw('panel-display panel-2col');
// Use the twocol_swentel layout, so we can also test on the $class variable.
$edit = array(
'sticky' => '1',
'class' => 'extra-class',
);
$this
->DSpanelEditLayout($edit, '', 'twocol_swentel');
$this
->drupalGet('node/' . $node->nid);
$this
->assertRaw('swentel-layout');
$this
->assertRaw('extra-class');
$this
->assertNoRaw('sticky');
$this
->assertRaw('block-system-navigation');
$this
->drupalGet('node/' . $node_sticky->nid);
$this
->assertRaw('swentel-layout');
$this
->assertRaw('extra-class');
$this
->assertRaw('sticky');
$this
->assertRaw('block-system-navigation');
// Remove class. Also remove blocks.
$edit = array(
'hide_sidebars' => '1',
'class' => '',
);
$this
->DSpanelEditLayout($edit, '', '');
$this
->drupalGet('node/' . $node->nid);
$this
->assertRaw('swentel-layout');
$this
->assertNoRaw('extra-class');
$this
->assertNoRaw('sticky');
$this
->assertNoRaw('block-system-navigation');
$this
->drupalGet('node/' . $node_sticky->nid);
$this
->assertRaw('swentel-layout');
$this
->assertNoRaw('extra-class');
$this
->assertRaw('sticky');
$this
->assertNoRaw('block-system-navigation');
// Recreate a layout with less fields by default.
$this
->drupalPost('admin/structure/types/manage/article/display', array(), t('Remove layout'));
$edit = array(
'field_tags_enable' => FALSE,
'field_image_enable' => FALSE,
'node_title_enable' => FALSE,
'node_links_enable' => FALSE,
'node_comments_enable' => FALSE,
'node_comment_form_enable' => FALSE,
);
$this
->DSpanelEditLayout($edit, '', 'twocol_swentel', TRUE);
// Change layout to 2 col stacked (panel-2col-stacked)
$this
->DSPanelChangeLayout('', 'twocol_swentel', 'twocol_stacked');
$this
->DSPanelChangeLayout('', 'twocol_stacked', 'twocol_swentel');
// Enable the full content view mode
$edit = array(
'view_modes_custom[full]' => '1',
);
$this
->drupalPost('admin/structure/types/manage/article/display', $edit, t('Save'));
// Clone default layout into full content and remove
$this
->drupalGet('node/' . $node->nid);
$this
->assertNoRaw('swentel-layout');
$edit = array(
'clone' => 'node|article|default',
);
$this
->DSPanelCloneLayout($edit, 'full');
$this
->drupalPost('admin/structure/types/manage/article/display', array(), t('Remove layout'));
$this
->drupalGet('node/' . $node->nid);
$this
->assertRaw('swentel-layout');
// Test hide page title.
$this
->assertRaw('<h1 class="title" id="page-title">
' . $node->title . ' </h1>');
$edit = array(
'page_option_type' => '1',
);
$this
->DSpanelEditLayout($edit, 'full', '');
$this
->drupalGet('node/' . $node->nid);
$this
->assertNoRaw('<h1 class="title" id="page-title">
' . $node->title . ' </h1>');
// Use page title substitutions.
$edit = array(
'page_option_type' => '1',
'page_option_title' => '%node:type',
);
$this
->DSpanelEditLayout($edit, 'full', '');
$this
->drupalGet('node/' . $node->nid);
$this
->assertNoRaw('<h1 class="title" id="page-title">
' . $node->type . ' </h1>');
// Test panels with the switch view mode, so add a layout on default again.
$edit = array(
'clone' => 'node|article|full',
);
$this
->DSPanelCloneLayout($edit, 'teaser');
$edit = array(
'view_modes_custom[full]' => FALSE,
);
$this
->drupalPost('admin/structure/types/manage/article/display', $edit, t('Save'));
$this
->DSpanelEditLayout(array(), '', 'twocol');
$this
->drupalGet('node/' . $node->nid);
$this
->assertRaw('panel-display panel-2col');
$edit = array(
'ds_switch' => 'teaser',
);
$this
->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
$this
->assertRaw('swentel-layout');
// Test hide page title with the switch view mode.
$edit = array(
'page_option_type' => '0',
);
$this
->DSpanelEditLayout($edit, 'teaser', '');
$this
->drupalGet('node/' . $node->nid);
$this
->assertRaw('<h1 class="title" id="page-title">
' . $node->title . ' </h1>');
$edit = array(
'page_option_type' => '1',
);
$this
->DSpanelEditLayout($edit, 'teaser', '');
$this
->drupalGet('node/' . $node->nid);
$this
->assertNoRaw('<h1 class="title" id="page-title">
' . $node->title . ' </h1>');
// Test switching from field UI to panels editor and vica versa.
// By default, everything should be panels editor.
$this
->drupalGet('admin/structure/types/manage/article/display');
$this
->assertNoRaw('edit-additional-settings-layout');
$this
->drupalGet('admin/structure/types/manage/article/display/teaser');
$this
->assertNoRaw('edit-additional-settings-layout');
$this
->drupalGet('admin/structure/types/manage/article/display', array(
'query' => array(
'switch' => 'field_ui',
),
));
$this
->assertNoRaw('edit-additional-settings-layout');
// Enable switching and detection of configured layouts.
variable_set('ds_extras_editor_switch', TRUE);
$this
->refreshVariables();
$this
->drupalGet('admin/structure/types/manage/article/display');
$this
->assertNoRaw('edit-additional-settings-layout');
$this
->drupalGet('admin/structure/types/manage/article/display', array(
'query' => array(
'switch' => 'field_ui',
),
));
$this
->assertRaw('edit-additional-settings-layout');
$this
->dsSelectLayout(array(), array(), 'admin/structure/types/manage/article/display', array(
'query' => array(
'switch' => 'field_ui',
),
));
$this
->assertRaw('edit-additional-settings-layout');
$this
->drupalGet('admin/structure/types/manage/article/display', array(
'query' => array(
'switch' => 'panels',
),
));
$this
->assertNoRaw('edit-additional-settings-layout');
$this
->drupalGet('admin/structure/types/manage/article/display');
$this
->assertRaw('edit-additional-settings-layout');
// Create a page and article node which we'll promote to test the renderer.
$node_3 = $this
->drupalCreateNode(array(
'type' => 'article',
'promote' => TRUE,
'title' => 'My article',
));
$node_4 = $this
->drupalCreateNode(array(
'type' => 'page',
'promote' => TRUE,
'title' => 'My page',
));
// Page layout & article layout, both using same layout.
$edit = array();
$this
->DSpanelEditLayout($edit, 'teaser', '/twocol', FALSE, 'page');
$this
->drupalPost('admin/structure/types/manage/article/display/teaser', array(), t('Remove layout'));
$this
->DSpanelEditLayout($edit, 'teaser', '/twocol', FALSE);
// Go to front page and verify we see the content of both types in teaser format.
$this
->drupalGet('node');
$this
->assertRaw('My article');
$this
->assertRaw('My page');
// Use one column layout.
$this
->drupalPost('admin/structure/types/manage/article/display/teaser', array(), t('Remove layout'));
$this
->DSpanelEditLayout($edit, 'teaser', '/onecol', FALSE);
// Go to front page and verify we see the content of both types in teaser format.
$this
->drupalGet('node');
$this
->assertRaw('My article');
$this
->assertRaw('My page');
// Tests to verify that changing panels layout chooses the right template.
$edit = array(
'additional_settings[layout]' => '',
);
$this
->drupalPost('admin/structure/types/manage/article/display', $edit, t('Save'));
$edit = array();
$this
->DSpanelEditLayout($edit, '', 'twocol_stacked', FALSE);
$this
->drupalGet('node/' . $node_3->nid);
$this
->assertRaw('panel-2col-stacked clearfix panel-display');
// Change panel
$this
->DSPanelChangeLayout('', 'twocol_stacked', 'twocol');
$this
->drupalGet('node/' . $node_3->nid);
$this
->assertNoRaw('panel-2col-stacked clearfix panel-display');
$this
->assertRaw('panel-display panel-2col clearfix');
// Disable panels and verify that simply saving Field UI without layout does not
// trigger any notices in entity_info_alter and on display of entities itself.
variable_set('ds_extras_panel_view_modes', FALSE);
$this
->refreshVariables();
cache_clear_all('ds_fields:', 'cache', TRUE);
cache_clear_all('entity_info:', 'cache', TRUE);
cache_clear_all('theme_registry:', 'cache', TRUE);
cache_clear_all('module_implements', 'cache_bootstrap');
menu_rebuild();
$this
->drupalPost('admin/structure/types/manage/article/display', array(), t('Save'));
$this
->drupalGet('node/' . $node_3->nid);
}