mirror of
https://github.com/moodle/moodle.git
synced 2025-04-21 00:12:56 +02:00
MDL-58428 renderer: Correct paths & xpaths
This commit is contained in:
parent
847b0fa941
commit
f38a9caeef
@ -602,8 +602,8 @@ class enrol_self_testcase extends advanced_testcase {
|
||||
$selfplugin->enrol_user($instance1, $user2->id, $editingteacherrole->id);
|
||||
|
||||
$this->setUser($guest);
|
||||
$noaccesshtml = get_string('noguestaccess', 'enrol') . $OUTPUT->continue_button(get_login_url());
|
||||
$this->assertSame($noaccesshtml, $selfplugin->can_self_enrol($instance1, true));
|
||||
$this->assertContains(get_string('noguestaccess', 'enrol'),
|
||||
$selfplugin->can_self_enrol($instance1, true));
|
||||
|
||||
$this->setUser($user1);
|
||||
$this->assertTrue($selfplugin->can_self_enrol($instance1, true));
|
||||
|
@ -194,15 +194,11 @@ class core_grade_import_lib_test extends advanced_testcase {
|
||||
'itemid' => $gradeitem->id
|
||||
));
|
||||
|
||||
$url = $CFG->wwwroot . '/grade/index.php';
|
||||
$expectedresponse = "++ Grade import success ++
|
||||
<div class=\"continuebutton\"><form method=\"get\" action=\"$url\"><div><input type=\"submit\" value=\"Continue\" /><input type=\"hidden\" name=\"id\" value=\"$course->id\" /></div></form></div>";
|
||||
|
||||
ob_start();
|
||||
$status = grade_import_commit($course->id, $importcode);
|
||||
$output = ob_get_contents();
|
||||
ob_end_clean();
|
||||
$this->assertTrue($status);
|
||||
$this->assertEquals($expectedresponse, $output);
|
||||
$this->assertContains("++ Grade import success ++", $output);
|
||||
}
|
||||
}
|
||||
|
@ -1,470 +0,0 @@
|
||||
<?php
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
namespace theme_bootstrapbase\output;
|
||||
|
||||
use coding_exception;
|
||||
use \html_writer;
|
||||
use tabobject;
|
||||
use tabtree;
|
||||
use custom_menu_item;
|
||||
use custom_menu;
|
||||
use block_contents;
|
||||
use navigation_node;
|
||||
use action_link;
|
||||
use stdClass;
|
||||
use moodle_url;
|
||||
use preferences_groups;
|
||||
use action_menu;
|
||||
use help_icon;
|
||||
use single_button;
|
||||
use context_course;
|
||||
use pix_icon;
|
||||
|
||||
defined('MOODLE_INTERNAL') || die;
|
||||
|
||||
/**
|
||||
* Renderers to align Moodle's HTML with that expected by Bootstrap
|
||||
*
|
||||
* @package theme_bootstrapbase
|
||||
* @copyright 2012 Bas Brands, www.basbrands.nl
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
class core_renderer extends \core_renderer {
|
||||
|
||||
/**
|
||||
* Wrapper for header elements.
|
||||
*
|
||||
* @return string HTML to display the main header.
|
||||
*/
|
||||
public function full_header() {
|
||||
$html = \html_writer::start_tag('header', array('id' => 'page-header', 'class' => 'clearfix'));
|
||||
$html .= $this->context_header();
|
||||
$html .= \html_writer::start_div('clearfix', array('id' => 'page-navbar'));
|
||||
$html .= \html_writer::tag('div', $this->navbar(), array('class' => 'breadcrumb-nav'));
|
||||
$html .= \html_writer::div($this->page_heading_button(), 'breadcrumb-button');
|
||||
$html .= html_writer::end_div();
|
||||
$html .= html_writer::tag('div', $this->course_header(), array('id' => 'course-header'));
|
||||
$html .= html_writer::end_tag('header');
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the navbar content so that it can be echoed out by the layout
|
||||
*
|
||||
* @return string XHTML navbar
|
||||
*/
|
||||
public function navbar() {
|
||||
$items = $this->page->navbar->get_items();
|
||||
$itemcount = count($items);
|
||||
if ($itemcount === 0) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$htmlblocks = array();
|
||||
// Iterate the navarray and display each node
|
||||
$separator = get_separator();
|
||||
for ($i=0;$i < $itemcount;$i++) {
|
||||
$item = $items[$i];
|
||||
$item->hideicon = true;
|
||||
if ($i===0) {
|
||||
$content = html_writer::tag('li', $this->render($item));
|
||||
} else {
|
||||
$content = html_writer::tag('li', $separator.$this->render($item));
|
||||
}
|
||||
$htmlblocks[] = $content;
|
||||
}
|
||||
|
||||
//accessibility: heading for navbar list (MDL-20446)
|
||||
$navbarcontent = html_writer::tag('span', get_string('pagepath'),
|
||||
array('class' => 'accesshide', 'id' => 'navbar-label'));
|
||||
$navbarcontent .= html_writer::tag('nav',
|
||||
html_writer::tag('ul', join('', $htmlblocks)),
|
||||
array('aria-labelledby' => 'navbar-label'));
|
||||
// XHTML
|
||||
return $navbarcontent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns HTML to display a "Turn editing on/off" button in a form.
|
||||
*
|
||||
* @param moodle_url $url The URL + params to send through when clicking the button
|
||||
* @return string HTML the button
|
||||
*/
|
||||
public function edit_button(moodle_url $url) {
|
||||
|
||||
$url->param('sesskey', sesskey());
|
||||
if ($this->page->user_is_editing()) {
|
||||
$url->param('edit', 'off');
|
||||
$editstring = get_string('turneditingoff');
|
||||
} else {
|
||||
$url->param('edit', 'on');
|
||||
$editstring = get_string('turneditingon');
|
||||
}
|
||||
|
||||
return $this->single_button($url, $editstring);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the compact logo URL.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_compact_logo_url($maxwidth = 100, $maxheight = 100) {
|
||||
return parent::get_compact_logo_url(null, 70);
|
||||
}
|
||||
|
||||
/*
|
||||
* Overriding the custom_menu function ensures the custom menu is
|
||||
* always shown, even if no menu items are configured in the global
|
||||
* theme settings page.
|
||||
*/
|
||||
public function custom_menu($custommenuitems = '') {
|
||||
global $CFG;
|
||||
if (empty($custommenuitems) && !empty($CFG->custommenuitems)) {
|
||||
$custommenuitems = $CFG->custommenuitems;
|
||||
}
|
||||
if (empty($custommenuitems)) {
|
||||
return '';
|
||||
}
|
||||
$custommenu = new custom_menu($custommenuitems, current_language());
|
||||
return $this->render($custommenu);
|
||||
}
|
||||
|
||||
/*
|
||||
* This renders the bootstrap top menu.
|
||||
*
|
||||
* This renderer is needed to enable the Bootstrap style navigation.
|
||||
*/
|
||||
protected function render_custom_menu(custom_menu $menu) {
|
||||
static $menucount = 0;
|
||||
// If the menu has no children return an empty string
|
||||
if (!$menu->has_children()) {
|
||||
return '';
|
||||
}
|
||||
// Increment the menu count. This is used for ID's that get worked with
|
||||
// in JavaScript as is essential
|
||||
$menucount++;
|
||||
// Initialise this custom menu (the custom menu object is contained in javascript-static
|
||||
$jscode = js_writer::function_call_with_Y('M.core_custom_menu.init', array('custom_menu_'.$menucount));
|
||||
$jscode = "(function(){{$jscode}})";
|
||||
$this->page->requires->yui_module('node-menunav', $jscode);
|
||||
// Build the root nodes as required by YUI
|
||||
$content = html_writer::start_tag('div', array('id'=>'custom_menu_'.$menucount, 'class'=>'yui3-menu yui3-menu-horizontal javascript-disabled custom-menu'));
|
||||
$content .= html_writer::start_tag('div', array('class'=>'yui3-menu-content'));
|
||||
$content .= html_writer::start_tag('ul');
|
||||
// Render each child
|
||||
foreach ($menu->get_children() as $item) {
|
||||
$content .= $this->render_custom_menu_item($item);
|
||||
}
|
||||
// Close the open tags
|
||||
$content .= html_writer::end_tag('ul');
|
||||
$content .= html_writer::end_tag('div');
|
||||
$content .= html_writer::end_tag('div');
|
||||
// Return the custom menu
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders tabtree
|
||||
*
|
||||
* @param tabtree $tabtree
|
||||
* @return string
|
||||
*/
|
||||
protected function render_tabtree(tabtree $tabtree) {
|
||||
if (empty($tabtree->subtree)) {
|
||||
return '';
|
||||
}
|
||||
$str = '';
|
||||
$str .= html_writer::start_tag('div', array('class' => 'tabtree'));
|
||||
$str .= $this->render_tabobject($tabtree);
|
||||
$str .= html_writer::end_tag('div').
|
||||
html_writer::tag('div', ' ', array('class' => 'clearer'));
|
||||
return $str;
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders tabobject (part of tabtree)
|
||||
*
|
||||
* This function is called from {@link core_renderer::render_tabtree()}
|
||||
* and also it calls itself when printing the $tabobject subtree recursively.
|
||||
*
|
||||
* @param tabobject $tabobject
|
||||
* @return string HTML fragment
|
||||
*/
|
||||
protected function render_tabobject(tabobject $tab) {
|
||||
throw new coding_exception('Tab objects should not be directly rendered.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints a nice side block with an optional header.
|
||||
*
|
||||
* The content is described
|
||||
* by a {@link core_renderer::block_contents} object.
|
||||
*
|
||||
* <div id="inst{$instanceid}" class="block_{$blockname} block">
|
||||
* <div class="header"></div>
|
||||
* <div class="content">
|
||||
* ...CONTENT...
|
||||
* <div class="footer">
|
||||
* </div>
|
||||
* </div>
|
||||
* <div class="annotation">
|
||||
* </div>
|
||||
* </div>
|
||||
*
|
||||
* @param block_contents $bc HTML for the content
|
||||
* @param string $region the region the block is appearing in.
|
||||
* @return string the HTML to be output.
|
||||
*/
|
||||
public function block(block_contents $bc, $region) {
|
||||
$bc = clone($bc); // Avoid messing up the object passed in.
|
||||
if (empty($bc->blockinstanceid) || !strip_tags($bc->title)) {
|
||||
$bc->collapsible = block_contents::NOT_HIDEABLE;
|
||||
}
|
||||
if (!empty($bc->blockinstanceid)) {
|
||||
$bc->attributes['data-instanceid'] = $bc->blockinstanceid;
|
||||
}
|
||||
$skiptitle = strip_tags($bc->title);
|
||||
if ($bc->blockinstanceid && !empty($skiptitle)) {
|
||||
$bc->attributes['aria-labelledby'] = 'instance-'.$bc->blockinstanceid.'-header';
|
||||
} else if (!empty($bc->arialabel)) {
|
||||
$bc->attributes['aria-label'] = $bc->arialabel;
|
||||
}
|
||||
if ($bc->dockable) {
|
||||
$bc->attributes['data-dockable'] = 1;
|
||||
}
|
||||
if ($bc->collapsible == block_contents::HIDDEN) {
|
||||
$bc->add_class('hidden');
|
||||
}
|
||||
if (!empty($bc->controls)) {
|
||||
$bc->add_class('block_with_controls');
|
||||
}
|
||||
|
||||
|
||||
if (empty($skiptitle)) {
|
||||
$output = '';
|
||||
$skipdest = '';
|
||||
} else {
|
||||
$output = html_writer::link('#sb-'.$bc->skipid, get_string('skipa', 'access', $skiptitle),
|
||||
array('class' => 'skip skip-block', 'id' => 'fsb-' . $bc->skipid));
|
||||
$skipdest = html_writer::span('', 'skip-block-to',
|
||||
array('id' => 'sb-' . $bc->skipid));
|
||||
}
|
||||
|
||||
$output .= html_writer::start_tag('div', $bc->attributes);
|
||||
|
||||
$output .= $this->block_header($bc);
|
||||
$output .= $this->block_content($bc);
|
||||
|
||||
$output .= html_writer::end_tag('div');
|
||||
|
||||
$output .= $this->block_annotation($bc);
|
||||
|
||||
$output .= $skipdest;
|
||||
|
||||
$this->init_block_hider_js($bc);
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the CSS classes to apply to the body tag.
|
||||
*
|
||||
* @since Moodle 2.5.1 2.6
|
||||
* @param array $additionalclasses Any additional classes to apply.
|
||||
* @return string
|
||||
*/
|
||||
public function body_css_classes(array $additionalclasses = array()) {
|
||||
// Add a class for each block region on the page.
|
||||
// We use the block manager here because the theme object makes get_string calls.
|
||||
$usedregions = array();
|
||||
foreach ($this->page->blocks->get_regions() as $region) {
|
||||
$additionalclasses[] = 'has-region-'.$region;
|
||||
if ($this->page->blocks->region_has_content($region, $this)) {
|
||||
$additionalclasses[] = 'used-region-'.$region;
|
||||
$usedregions[] = $region;
|
||||
} else {
|
||||
$additionalclasses[] = 'empty-region-'.$region;
|
||||
}
|
||||
if ($this->page->blocks->region_completely_docked($region, $this)) {
|
||||
$additionalclasses[] = 'docked-region-'.$region;
|
||||
}
|
||||
}
|
||||
if (!$usedregions) {
|
||||
// No regions means there is only content, add 'content-only' class.
|
||||
$additionalclasses[] = 'content-only';
|
||||
} else if (count($usedregions) === 1) {
|
||||
// Add the -only class for the only used region.
|
||||
$region = array_shift($usedregions);
|
||||
$additionalclasses[] = $region . '-only';
|
||||
}
|
||||
foreach ($this->page->layout_options as $option => $value) {
|
||||
if ($value) {
|
||||
$additionalclasses[] = 'layout-option-'.$option;
|
||||
}
|
||||
}
|
||||
$css = $this->page->bodyclasses .' '. join(' ', $additionalclasses);
|
||||
return $css;
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders preferences groups.
|
||||
*
|
||||
* @param preferences_groups $renderable The renderable
|
||||
* @return string The output.
|
||||
*/
|
||||
public function render_preferences_groups(preferences_groups $renderable) {
|
||||
$html = '';
|
||||
$html .= html_writer::start_div('row-fluid');
|
||||
$html .= html_writer::start_tag('div', array('class' => 'span12 preferences-groups'));
|
||||
$i = 0;
|
||||
$open = false;
|
||||
foreach ($renderable->groups as $group) {
|
||||
if ($i == 0 || $i % 3 == 0) {
|
||||
if ($open) {
|
||||
$html .= html_writer::end_tag('div');
|
||||
}
|
||||
$html .= html_writer::start_tag('div', array('class' => 'row-fluid'));
|
||||
$open = true;
|
||||
}
|
||||
$html .= $this->render($group);
|
||||
$i++;
|
||||
}
|
||||
|
||||
$html .= html_writer::end_tag('div');
|
||||
|
||||
$html .= html_writer::end_tag('ul');
|
||||
$html .= html_writer::end_tag('div');
|
||||
$html .= html_writer::end_div();
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders an action menu component.
|
||||
*
|
||||
* ARIA references:
|
||||
* - http://www.w3.org/WAI/GL/wiki/Using_ARIA_menus
|
||||
* - http://stackoverflow.com/questions/12279113/recommended-wai-aria-implementation-for-navigation-bar-menu
|
||||
*
|
||||
* @param action_menu $menu
|
||||
* @return string HTML
|
||||
*/
|
||||
public function render_action_menu(action_menu $menu) {
|
||||
$context = $menu->export_for_template($this);
|
||||
return $this->render_from_template('core/action_menu', $context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation of user image rendering.
|
||||
*
|
||||
* @param help_icon $helpicon A help icon instance
|
||||
* @return string HTML fragment
|
||||
*/
|
||||
protected function render_help_icon(help_icon $helpicon) {
|
||||
return $this->render_from_template('core/help_icon', $helpicon->export_for_template($this));
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders a single button widget.
|
||||
*
|
||||
* This will return HTML to display a form containing a single button.
|
||||
*
|
||||
* @param single_button $button
|
||||
* @return string HTML fragment
|
||||
*/
|
||||
protected function render_single_button(single_button $button) {
|
||||
$attributes = array('type' => 'submit',
|
||||
'value' => $button->label,
|
||||
'disabled' => $button->disabled ? 'disabled' : null,
|
||||
'title' => $button->tooltip);
|
||||
|
||||
if ($button->actions) {
|
||||
$id = html_writer::random_id('single_button');
|
||||
$attributes['id'] = $id;
|
||||
foreach ($button->actions as $action) {
|
||||
$this->add_action_handler($action, $id);
|
||||
}
|
||||
}
|
||||
|
||||
// first the input element
|
||||
$output = html_writer::empty_tag('input', $attributes);
|
||||
|
||||
// then hidden fields
|
||||
$params = $button->url->params();
|
||||
if ($button->method === 'post') {
|
||||
$params['sesskey'] = sesskey();
|
||||
}
|
||||
foreach ($params as $var => $val) {
|
||||
$output .= html_writer::empty_tag('input', array('type' => 'hidden', 'name' => $var, 'value' => $val));
|
||||
}
|
||||
|
||||
// then div wrapper for xhtml strictness
|
||||
$output = html_writer::tag('div', $output);
|
||||
|
||||
// now the form itself around it
|
||||
if ($button->method === 'get') {
|
||||
$url = $button->url->out_omit_querystring(true); // url without params, the anchor part allowed
|
||||
} else {
|
||||
$url = $button->url->out_omit_querystring(); // url without params, the anchor part not allowed
|
||||
}
|
||||
if ($url === '') {
|
||||
$url = '#'; // there has to be always some action
|
||||
}
|
||||
$attributes = array('method' => $button->method,
|
||||
'action' => $url,
|
||||
'id' => $button->formid);
|
||||
$output = html_writer::tag('form', $output, $attributes);
|
||||
|
||||
// and finally one more wrapper with class
|
||||
return html_writer::tag('div', $output, array('class' => $button->class));
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders the login form.
|
||||
*
|
||||
* @param \core_auth\output\login $form The renderable.
|
||||
* @return string
|
||||
*/
|
||||
public function render_login(\core_auth\output\login $form) {
|
||||
global $CFG;
|
||||
|
||||
$context = $form->export_for_template($this);
|
||||
|
||||
// Override because rendering is not supported in template yet.
|
||||
if ($CFG->rememberusername == 0) {
|
||||
$context->cookieshelpiconformatted = $this->help_icon('cookiesenabledonlysession');
|
||||
} else {
|
||||
$context->cookieshelpiconformatted = $this->help_icon('cookiesenabled');
|
||||
}
|
||||
$context->errorformatted = $this->error_text($context->error);
|
||||
|
||||
return $this->render_from_template('core/loginform', $context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the login signup form into a nice template for the theme.
|
||||
*
|
||||
* @param mform $form
|
||||
* @return string
|
||||
*/
|
||||
public function render_login_signup_form($form) {
|
||||
$context = $form->export_for_template($this);
|
||||
|
||||
return $this->render_from_template('core/signup_form_layout', $context);
|
||||
}
|
||||
|
||||
}
|
@ -28,4 +28,4 @@ require_once($CFG->dirroot . '/theme/bootstrapbase/renderers/gradereport_history
|
||||
require_once($CFG->dirroot . '/theme/bootstrapbase/renderers/core/course_renderer.php');
|
||||
require_once($CFG->dirroot . '/theme/bootstrapbase/renderers/core/files_renderer.php');
|
||||
require_once($CFG->dirroot . '/theme/bootstrapbase/renderers/core_course/management/renderer.php');
|
||||
require_once($CFG->dirroot . '/theme/bootstrapbase/renderers/core_question/bank_renderer.php');
|
||||
require_once($CFG->dirroot . '/theme/bootstrapbase/renderers/core_question/bank_renderer.php');
|
@ -25,7 +25,7 @@
|
||||
namespace theme_bootstrapbase\output\core_question;
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
require_once($CFG->dirroot . '/' . $CFG->admin . '/renderer.php');
|
||||
require_once($CFG->dirroot . '/question/renderer.php');
|
||||
|
||||
/**
|
||||
* Question renderer class.
|
@ -41,8 +41,8 @@ class theme_bootstrapbase_core_renderer extends core_renderer {
|
||||
// Setup help icon overlays.
|
||||
$this->page->requires->yui_module('moodle-core-popuphelp', 'M.core.init_popuphelp');
|
||||
$this->page->requires->strings_for_js(array(
|
||||
'morehelp',
|
||||
'loadinghelp',
|
||||
'morehelp',
|
||||
'loadinghelp',
|
||||
), 'moodle');
|
||||
|
||||
if ($PAGE->pagelayout == 'frontpage') {
|
||||
@ -605,4 +605,4 @@ class theme_bootstrapbase_core_renderer extends core_renderer {
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class theme_bootstrapbase_core_renderer_maintenance extends core_renderer_maintenance {
|
||||
}
|
||||
}
|
@ -258,7 +258,7 @@ class behat_theme_bootstrapbase_behat_course extends behat_course {
|
||||
public function i_navigate_to_course_participants() {
|
||||
$coursestr = behat_context_helper::escape(get_string('courses'));
|
||||
$mycoursestr = behat_context_helper::escape(get_string('mycourses'));
|
||||
$xpath = "//section[contains(@class,'block')]//li[p/*[string(.)=$coursestr or string(.)=$mycoursestr]]";
|
||||
$xpath = "//div[contains(@class,'block')]//li[p/*[string(.)=$coursestr or string(.)=$mycoursestr]]";
|
||||
$this->execute('behat_general::i_click_on_in_the', [get_string('participants'), 'link', $xpath, 'xpath_element']);
|
||||
}
|
||||
}
|
||||
|
@ -96,7 +96,7 @@ class behat_theme_bootstrapbase_behat_navigation extends behat_navigation {
|
||||
public function should_exist_in_current_page_administration($element, $selectortype) {
|
||||
$parentnodes = array_map('trim', explode('>', $element));
|
||||
// Find the name of the first category of the administration block tree.
|
||||
$xpath = '//section[contains(@class,\'block_settings\')]//div[@id=\'settingsnav\']/ul/li[1]/p[1]/span';
|
||||
$xpath = '//div[contains(@class,\'block_settings\')]//div[@id=\'settingsnav\']/ul/li[1]/p[1]/span';
|
||||
$node = $this->find('xpath', $xpath);
|
||||
array_unshift($parentnodes, $node->getText());
|
||||
$lastnode = array_pop($parentnodes);
|
||||
@ -110,7 +110,7 @@ class behat_theme_bootstrapbase_behat_navigation extends behat_navigation {
|
||||
public function should_not_exist_in_current_page_administration($element, $selectortype) {
|
||||
$parentnodes = array_map('trim', explode('>', $element));
|
||||
// Find the name of the first category of the administration block tree.
|
||||
$xpath = '//section[contains(@class,\'block_settings\')]//div[@id=\'settingsnav\']/ul/li[1]/p[1]/span';
|
||||
$xpath = '//div[contains(@class,\'block_settings\')]//div[@id=\'settingsnav\']/ul/li[1]/p[1]/span';
|
||||
$node = $this->find('xpath', $xpath);
|
||||
array_unshift($parentnodes, $node->getText());
|
||||
$lastnode = array_pop($parentnodes);
|
||||
@ -124,7 +124,7 @@ class behat_theme_bootstrapbase_behat_navigation extends behat_navigation {
|
||||
public function i_navigate_to_in_current_page_administration($nodetext) {
|
||||
$parentnodes = array_map('trim', explode('>', $nodetext));
|
||||
// Find the name of the first category of the administration block tree.
|
||||
$xpath = '//section[contains(@class,\'block_settings\')]//div[@id=\'settingsnav\']/ul/li[1]/p[1]/span';
|
||||
$xpath = '//div[contains(@class,\'block_settings\')]//div[@id=\'settingsnav\']/ul/li[1]/p[1]/span';
|
||||
$node = $this->find('xpath', $xpath);
|
||||
array_unshift($parentnodes, $node->getText());
|
||||
$lastnode = array_pop($parentnodes);
|
||||
|
Loading…
x
Reference in New Issue
Block a user