[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 /** 18 * Behat tool renderer 19 * 20 * @package tool_behat 21 * @copyright 2012 David Monllaó 22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 23 */ 24 25 defined('MOODLE_INTERNAL') || die(); 26 27 global $CFG; 28 require_once($CFG->libdir . '/behat/classes/behat_selectors.php'); 29 30 /** 31 * Renderer for behat tool web features 32 * 33 * @package tool_behat 34 * @copyright 2012 David Monllaó 35 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 36 */ 37 class tool_behat_renderer extends plugin_renderer_base { 38 39 /** 40 * Renders the list of available steps according to the submitted filters. 41 * 42 * @param mixed $stepsdefinitions Available steps array. 43 * @param moodleform $form 44 * @return string HTML code 45 */ 46 public function render_stepsdefinitions($stepsdefinitions, $form) { 47 48 $html = $this->generic_info(); 49 50 // Form. 51 ob_start(); 52 $form->display(); 53 $html .= ob_get_contents(); 54 ob_end_clean(); 55 56 if (empty($stepsdefinitions)) { 57 $stepsdefinitions = get_string('nostepsdefinitions', 'tool_behat'); 58 } else { 59 60 $stepsdefinitions = implode('', $stepsdefinitions); 61 62 // Replace text selector type arguments with a user-friendly select. 63 $stepsdefinitions = preg_replace_callback('/(TEXT_SELECTOR\d?_STRING)/', 64 function ($matches) { 65 return html_writer::select(behat_selectors::get_allowed_text_selectors(), uniqid()); 66 }, 67 $stepsdefinitions 68 ); 69 70 // Replace selector type arguments with a user-friendly select. 71 $stepsdefinitions = preg_replace_callback('/(SELECTOR\d?_STRING)/', 72 function ($matches) { 73 return html_writer::select(behat_selectors::get_allowed_selectors(), uniqid()); 74 }, 75 $stepsdefinitions 76 ); 77 78 // Replace simple OR options. 79 $regex = '#\(\?P<[^>]+>([^\)|]+\|[^\)]+)\)#'; 80 $stepsdefinitions = preg_replace_callback($regex, 81 function($matches){ 82 return html_writer::select(explode('|', $matches[1]), uniqid()); 83 }, 84 $stepsdefinitions 85 ); 86 87 $stepsdefinitions = preg_replace_callback('/(FIELD_VALUE_STRING)/', 88 function ($matches) { 89 global $CFG; 90 91 // Creating a link to a popup with the help. 92 $url = new moodle_url( 93 '/help.php', 94 array( 95 'component' => 'tool_behat', 96 'identifier' => 'fieldvalueargument', 97 'lang' => current_language() 98 ) 99 ); 100 101 // Note: this title is displayed only if JS is disabled, 102 // otherwise the link will have the new ajax tooltip. 103 $title = get_string('fieldvalueargument', 'tool_behat'); 104 $title = get_string('helpprefix2', '', trim($title, ". \t")); 105 106 $attributes = array('href' => $url, 'title' => $title, 107 'aria-haspopup' => 'true', 'target' => '_blank'); 108 109 $output = html_writer::tag('a', 'FIELD_VALUE_STRING', $attributes); 110 return html_writer::tag('span', $output, array('class' => 'helptooltip')); 111 }, 112 $stepsdefinitions 113 ); 114 } 115 116 // Steps definitions. 117 $html .= html_writer::tag('div', $stepsdefinitions, array('class' => 'steps-definitions')); 118 119 $html .= $this->output->footer(); 120 121 return $html; 122 } 123 124 /** 125 * Renders an error message adding the generic info about the tool purpose and setup. 126 * 127 * @param string $msg The error message 128 * @return string HTML 129 */ 130 public function render_error($msg) { 131 132 $html = $this->generic_info(); 133 134 $a = new stdClass(); 135 $a->errormsg = $msg; 136 $a->behatcommand = behat_command::get_behat_command(); 137 $a->behatinit = 'php admin' . DIRECTORY_SEPARATOR . 'tool' . DIRECTORY_SEPARATOR . 138 'behat' . DIRECTORY_SEPARATOR . 'cli' . DIRECTORY_SEPARATOR . 'init.php'; 139 140 $msg = get_string('wrongbehatsetup', 'tool_behat', $a); 141 142 // Error box including generic error string + specific error msg. 143 $html .= $this->output->box_start('box errorbox'); 144 $html .= html_writer::tag('div', $msg); 145 $html .= $this->output->box_end(); 146 147 $html .= $this->output->footer(); 148 149 return $html; 150 } 151 152 /** 153 * Generic info about the tool. 154 * 155 * @return string 156 */ 157 protected function generic_info() { 158 159 $title = get_string('pluginname', 'tool_behat'); 160 161 // Header. 162 $html = $this->output->header(); 163 $html .= $this->output->heading($title); 164 165 // Info. 166 $installurl = behat_command::DOCS_URL . '#Installation'; 167 $installlink = html_writer::tag('a', $installurl, array('href' => $installurl, 'target' => '_blank')); 168 $writetestsurl = behat_command::DOCS_URL . '#Writing_features'; 169 $writetestslink = html_writer::tag('a', $writetestsurl, array('href' => $writetestsurl, 'target' => '_blank')); 170 $writestepsurl = behat_command::DOCS_URL . '#Adding_steps_definitions'; 171 $writestepslink = html_writer::tag('a', $writestepsurl, array('href' => $writestepsurl, 'target' => '_blank')); 172 $infos = array( 173 get_string('installinfo', 'tool_behat', $installlink), 174 get_string('newtestsinfo', 'tool_behat', $writetestslink), 175 get_string('newstepsinfo', 'tool_behat', $writestepslink) 176 ); 177 178 // List of steps. 179 $html .= $this->output->box_start(); 180 $html .= html_writer::tag('h3', get_string('infoheading', 'tool_behat')); 181 $html .= html_writer::tag('div', get_string('aim', 'tool_behat')); 182 $html .= html_writer::start_tag('div'); 183 $html .= html_writer::start_tag('ul'); 184 $html .= html_writer::start_tag('li'); 185 $html .= implode(html_writer::end_tag('li') . html_writer::start_tag('li'), $infos); 186 $html .= html_writer::end_tag('li'); 187 $html .= html_writer::end_tag('ul'); 188 $html .= html_writer::end_tag('div'); 189 $html .= $this->output->box_end(); 190 191 return $html; 192 } 193 194 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Aug 11 10:00:09 2016 | Cross-referenced by PHPXref 0.7.1 |