<?php
/**
* SeekQuarry/Yioop --
* Open Source Pure PHP Search Engine, Crawler, and Indexer
*
* Copyright (C) 2009 - 2026 Chris Pollett chris@pollett.org
*
* LICENSE:
*
* This program 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.
*
* This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
*
* END LICENSE
*
* @author Chris Pollett chris@pollett.org
* @license https://www.gnu.org/licenses/ GPL3
* @link https://www.seekquarry.com/
* @copyright 2009 - 2026
* @filesource
*/
namespace seekquarry\yioop\views\elements;
use seekquarry\yioop as B;
use seekquarry\yioop\configs as C;
use seekquarry\yioop\library as L;
/**
* This element is used to render the Page Options admin activity
* This activity lets a user control the amount of web pages downloaded,
* the recrawl frequency, the file types, etc of the pages crawled
*
* @author Chris Pollett
*/
class PageOptionsElement extends Element
{
/**
* Draws the page options element to the output buffer
*
* @param array $data used to keep track of page range, recrawl frequency,
* and file types of the page
*/
public function render($data)
{ ?>
<div class="current-activity">
<form id="pageoptionsForm" method="post" enctype='multipart/form-data'>
<ul class='tab-menu-list'>
<li><script>
document.write('<a href="javascript:switchTab(' +
"'crawltimetab', 'searchtimetab', 'testoptionstab'" + ');" ' +
"id='crawltimetabitem' " +
'class="<?=$data['crawl_time_active'] ?>"><?=
tl('pageoptions_element_crawl_time')?></a>');
</script>
<noscript>
<a href="#crawltimetab"
id='crawltimetabitem'><?=
tl('pageoptions_element_crawl_time')?></a>
</noscript>
</li>
<li><script>
document.write('<a href="javascript:switchTab(' +
"'searchtimetab', 'crawltimetab','testoptionstab'" + ');" ' +
"id='searchtimetabitem' " +
'class="<?=$data['search_time_active'] ?>"><?=
tl('pageoptions_element_search_time')?></a>');
</script>
<noscript>
<a href="#searchtimetab" id='searchtimetabitem'><?=
tl('pageoptions_element_search_time')?></a>
</noscript>
</li>
<li><script>
document.write('<a href="javascript:switchTab(' +
"'testoptionstab', 'crawltimetab', 'searchtimetab'" + ');" ' +
"id='testoptionstabitem' " +
'class="<?=$data['test_options_active'] ?>"><?=
tl('pageoptions_element_test_options') ?></a>');
</script>
<noscript>
<a href="#testoptionstab" id='testoptionstabitem' ><?=
tl('pageoptions_element_test_options') ?></a>
</noscript>
</li>
</ul>
<div class='tab-menu-content'>
<input type="hidden" name="c" value="admin" >
<input type="hidden" name="posted" value="posted" >
<input id='option-type' type="hidden" name="option_type" value="<?=
$data['option_type'] ?>" >
<input type="hidden" name="<?= C\p('CSRF_TOKEN') ?>" value="<?=
$data[C\p('CSRF_TOKEN')] ?>" >
<input type="hidden" name="a" value="pageOptions" >
<?php
$this->renderCrawlTimeTab($data); ?>
<noscript>
<div class="center slight-pad">
<button class="button-box" type="submit"><?=
tl('pageoptions_element_save_options')?></button>
</div>
</noscript>
<?php
$this->renderSearchTimeTab($data); ?>
<noscript>
<div class="center slight-pad">
<button class="button-box" type="submit"><?=
tl('pageoptions_element_save_options')?></button>
</div>
</noscript>
<?php
$this->renderTestTab($data); ?>
<div class="center slight-pad">
<script>
document.write('<button class="button-box" id="page-button" '+
'type="submit"><?php if ($data['test_options_active'] == "") {
e(tl('pageoptions_element_save_options'));
} else {
e(tl('pageoptions_element_run_tests'));
}
?></button>');
</script>
<noscript>
<button class="button-box" type="submit"><?=
tl('pageoptions_element_run_tests')?></button>
</noscript>
</div>
</div>
</form>
<?php
foreach ($data['INDEXING_PLUGINS'] as
$plugin => $plugin_data) {
$class_name = C\NS_PLUGINS . $plugin."Plugin";
if ($plugin_data['configure']) { ?>
<div class="indexing-plugin-lightbox" id="plugin-<?=$plugin?>" >
<div class="light-content">
<?= $this->view->helper("close")->render(
"javascript:setDisplay('plugin-$plugin', false);");?>
<?php
$plugin_object = new $class_name();
$plugin_object->configureView($data);
?>
</div>
</div><?php
}
}
$this->renderTestResults($data);
?>
</div>
<script>
function switchTab(newtab, oldtab, oldtab2)
{
setDisplay(newtab, true);
setDisplay(oldtab, false);
setDisplay(oldtab2, false);
ntab = elt(newtab + "item");
if (ntab) {
ntab.className = 'active';
}
otab = elt(oldtab + "item");
if (otab) {
otab.className = '';
}
otab2 = elt(oldtab2 + "item");
if (otab2) {
otab2.className = '';
}
ctype = elt('option-type');
if (ctype) {
ctype.value = (newtab == 'crawltimetab')
? 'crawl_time' : ((newtab == 'searchtimetab') ?
'search_time' : 'test_options' );
if (ctype.value == 'test_options') {
elt('page-button').innerHTML =
'<?= tl('pageoptions_element_run_tests') ?>';
elt('page-button').style.display = 'inline';
elt('test-results').style.display = 'block';
switchTestMethod();
} else {
elt('page-button').innerHTML =
'<?= tl('pageoptions_element_save_options') ?>';
elt('page-button').style.display = 'inline';
elt('test-results').style.display = 'none';
}
}
}
function switchTestMethod()
{
method = elt('test-method').value;
elt('test-uri').style.display = 'none';
elt('test-file-upload').style.display = 'none';
elt('test-direct-input').style.display = 'none';
if (method == 'uri' || method == 'file-upload' ||
method == 'direct-input') {
elt("test-" + method).style.display = 'block';
}
if (elt('option-type').value == 'test_options' && (
method == 'file-upload' || method == -1)) {
elt('page-button').style.display = 'none';
} else {
elt('page-button').style.display = 'inline';
}
}
</script>
<?php
}
/**
* Draws the Crawl Time Page options tab
* @param array $data used to keep track of page range, recrawl frequency,
* and file types of the page
*/
private function renderCrawlTimeTab($data)
{ ?>
<div id='crawltimetab'>
<div class="top-margin"><label for="load-options"><b><?=
tl('pageoptions_element_load_options')?></b></label><?php
$this->view->helper("options")->render("load-options","load_option",
$data['available_options'], $data['options_default'], true);
?></div>
<div class="top-margin">[<a href="<?=
htmlentities(B\controllerUrl('admin', true)) .
C\p('CSRF_TOKEN') . "=" . $data[C\p('CSRF_TOKEN')] .
"&a=manageCrawls&arg=options" ?>"><?=
tl('pageoptions_element_crawl_options')
?></a>]</div>
<div class="top-margin"><b><label for="page-range-request"><?=
tl('pageoptions_element_page_range')?></label></b>
<?php $this->view->helper("options")->render("page-range-request",
"page_range_request", $data['SIZE_VALUES'], $data['PAGE_SIZE']);
e(" " . $this->view->helper("helpbutton")->render(
"Page Byte Ranges", $data[C\p('CSRF_TOKEN')])); ?></div>
<div class="top-margin"><label for="summarizer"><b><?=
tl('pageoptions_element_summarizer') ?></b></label><?php
$this->view->helper("options")->render("summarizer",
"summarizer_option", $data['available_summarizers'],
$data['summarizer_option']);
e(" " . $this->view->helper("helpbutton")->render(
"Kinds of Summarizers", $data[C\p('CSRF_TOKEN')]));
?>
</div>
<div class="top-margin"><b><label for="max-description-len"><?=
tl('pageoptions_element_max_description')?></label></b>
<?php $this->view->helper("options")->render("max-description-len",
"max_description_len", $data['LEN_VALUES'], $data['MAX_LEN']);
e(" " . $this->view->helper("helpbutton")->render(
"Summary Length", $data[C\p('CSRF_TOKEN')]));?></div>
<div class="top-margin"><b><label for="max-links-to-extract"><?=
tl('pageoptions_element_max_links_to_extract')?></label></b>
<?php $this->view->helper("options")->render("max-links-to-extract",
"max_links_to_extract", $data['MAX_LINKS_VALUES'],
$data['MAX_LINKS_TO_EXTRACT']);
e(" " . $this->view->helper("helpbutton")->render(
"Max Links", $data[C\p('CSRF_TOKEN')]));?></div>
<div class="top-margin"><b><label for="cache-pages"><?=
tl('pageoptions_element_cache_pages')?>
</label></b><input
id='cache-pages' type="checkbox" name="cache_pages"
value="true"
<?php if (!empty($data['CACHE_PAGES'])) {
e("checked='checked'");
}?>
>
</div>
<div class="top-margin"><b><label for="page-recrawl-frequency"><?=
tl('pageoptions_element_allow_recrawl') ?></label></b>
<?php $this->view->helper("options")->render(
"page-recrawl-frequency",
"page_recrawl_frequency", $data['RECRAWL_FREQS'],
$data['PAGE_RECRAWL_FREQUENCY']);
?></div>
<div class="top-margin"><b><?=
tl('pageoptions_element_file_types')?></b>
</div>
<table class="file-types-all"><tr>
<?php $cnt = 0;
$num_types_per_column = ceil(count($data['INDEXED_FILE_TYPES'])/3);
foreach ($data['INDEXED_FILE_TYPES'] as $filetype => $checked) {
if ($cnt % $num_types_per_column == 0) {
?><td><table class="file-types-table" ><?php
}
?>
<tr><td><label for="filetype-<?= $filetype ?>-id"><?=$filetype ?>
</label></td><td><input type="checkbox" <?= $checked ?>
name="filetype[<?=$filetype ?>]"
id="filetype-<?= $filetype ?>-id"
value="true" ></td>
</tr>
<?php
$cnt++;
if ($cnt % $num_types_per_column == 0) {
?></table></td><?php
}
}?>
<?php
if ($cnt % $num_types_per_column != 0) {
?></table></td><?php
}
?>
</tr></table>
<div class="top-margin"><b><?=
tl('pageoptions_element_classifiers_rankers') ?></b> <?=
$this->view->helper("helpbutton")->render(
"Using a Classifier or Ranker", $data[C\p('CSRF_TOKEN')]) ?>
</div>
<?php if (!empty($data['CLASSIFIERS'])) {
$data['TABLE_TITLE'] = "";
$data['ACTIVITY'] = 'pageOptions';
$data['VIEW'] = $this->view;
$data['NO_SEARCH'] = true;
$data['NO_FORM_TAG'] = true;
$data['FORM_TYPE'] = "";
$data['NO_FLOAT_TABLE'] = true;
$data['NO_ADD_TOGGLE'] = true;
?>
<table class="classifiers-table" >
<tr><td class="no-border" colspan="3"><?php $this->view->helper(
"pagingtable")->render($data);?></td></tr>
<tr><td></td>
<th><?=tl('pageoptions_element_use_classify') ?></th>
<th><?=tl('pageoptions_element_use_rank') ?></th>
</tr>
<?php
foreach ($data['CLASSIFIERS'] as $label => $class_checked) {
if (isset($data['RANKERS'][$label])) {
$rank_checked = $data['RANKERS'][$label];
} else {
$rank_checked = "";
}
?>
<tr><td><?=$label
?></td><td class="check"><input type="checkbox"
<?= $class_checked ?>
aria-label="classifier-<?= $label ?>"
name="classifier[<?=$label ?>]"
id="classifier-<?= $label ?>-id" value="true" ></td>
<td class="check"><input type="checkbox"
<?= $rank_checked ?>
aria-label="ranker-<?= $label ?>"
name="ranker[<?= $label ?>]"
id="ranker-<?= $label ?>-id" value="true" ></td>
</tr>
<?php
}
?>
</table>
<?php
} else {
e("<p class='red'>".
tl('pageoptions_element_no_classifiers').'</p>');
} ?>
<div class="top-margin"><b><?=
tl("pageoptions_element_indexing_plugins")?></b> <?=
$this->view->helper("helpbutton")->render(
"Indexing Plugins", $data[C\p('CSRF_TOKEN')]) ?></div>
<?php if (isset($data['INDEXING_PLUGINS']) &&
count($data['INDEXING_PLUGINS']) > 0) { ?>
<table class="indexing-plugin-table">
<tr><th><?= tl('pageoptions_element_plugin') ?></th>
<th><?= tl('pageoptions_element_plugin_include') ?></th></tr>
<?php
$k = 0;
foreach ($data['INDEXING_PLUGINS'] as
$plugin => $plugin_data) {
if ($plugin == "") { continue; }
?>
<tr><td><label for="<?= $plugin. "Plugin" ?>"><?=
$plugin. "Plugin" ?></label></td>
<td class="check"><input type="checkbox"
name="INDEXING_PLUGINS[<?= $k ?>]"
id="<?= $plugin. "Plugin" ?>"
value = "<?= $plugin ?>"
<?= $plugin_data['checked'] ?>
><?php
if ($plugin_data['configure']) { ?>
[<a href="javascript:setDisplay('plugin-<?=
$plugin ?>', true);" ><?=
tl('pageoptions_element_configure')
?></a>]<?php
}
?></td></tr>
<?php
$k++;
}
?>
</table>
<?php
} else {
e("<p class='red'>".
tl('pageoptions_element_no_compatible_plugins')."</p>");
} ?>
<div class="top-margin"><label for="page-rules"><b><?=
tl('pageoptions_element_page_rules')?></b></label> <?=
$this->view->helper("helpbutton")->render(
"Page Rules", $data[C\p('CSRF_TOKEN')]) ?>
</div>
<textarea class="short-text-area" id="page-rules"
name="page_rules" ><?=$data['page_rules'] ?></textarea>
</div><?php
}
/**
* Draws the Search Time Page options tab
* @param array $data used to keep track of word suggest, subsearch link,
* signin link, cache link, etc form elements on this tab
*/
private function renderSearchTimeTab($data)
{ ?>
<div id='searchtimetab'>
<h2><?= tl('pageoptions_element_search_page')?>
<?= $this->view->helper("helpbutton")->render(
"Search Results Page Elements", $data[C\p('CSRF_TOKEN')]) ?></h2>
<table class="search-page-all"><tr><td>
<table class="search-page-table">
<tr>
<td><label for="wd-suggest"><?=
tl('pageoptions_element_wd_suggest') ?></label></td>
<td><input id='wd-suggest' type="checkbox"
name="WORD_SUGGEST" value="true"
<?php if (isset($data['WORD_SUGGEST']) &&
$data['WORD_SUGGEST']) {
e("checked='checked'");}?>
></td></tr>
<tr><td><label for="subsearch-link"><?=
tl('pageoptions_element_subsearch_link')?></label></td><td>
<input id='subsearch-link'
type="checkbox" name="SUBSEARCH_LINK" value="true"
<?php if (isset($data['SUBSEARCH_LINK']) &&
$data['SUBSEARCH_LINK']){
e("checked='checked'");}?>
></td>
</tr>
<tr><td><label for="signin-link"><?=
tl('pageoptions_element_signin_link') ?></label></td><td>
<input id='signin-link' type="checkbox"
name="SIGNIN_LINK" value="true"
<?php if (isset($data['SIGNIN_LINK']) &&
$data['SIGNIN_LINK']){ e("checked='checked'");}?>
>
</td></tr>
<tr><td><label for="continuous-scroll"><?=
tl('pageoptions_element_continuous_scroll') ?></label></td>
<td><input id='continuous-scroll' type="checkbox"
name="DEFAULT_CONTINUOUS_SCROLL" value="true"
<?php if (isset($data['DEFAULT_CONTINUOUS_SCROLL'])
&& $data['DEFAULT_CONTINUOUS_SCROLL']){
e("checked='checked'");}?>
></td>
</tr>
<tr><td><label for="serp-favicons"><?=
tl('pageoptions_element_serp_favicons') ?></label></td>
<td><input id='serp-favicons' type="checkbox"
name="SERP_FAVICONS" value="true"
<?php if (isset($data['SERP_FAVICONS'])
&& $data['SERP_FAVICONS']){
e("checked='checked'");}?>
></td>
</tr>
<tr>
<td><label for="more-result"><?=
tl('pageoptions_element_more_result') ?></label></td>
<td><input id='more-result' type="checkbox"
name="MORE_RESULT" value="true"
<?php if (isset($data['MORE_RESULT']) &&
$data['MORE_RESULT']) {
e("checked='checked'");}?>
></td></tr>
</table></td>
<td><table class="search-page-table">
<tr>
<td><label for="wd-cloud"><?=
tl('pageoptions_element_wd_cloud') ?></label></td>
<td><input id='wd-cloud' type="checkbox"
name="WORD_CLOUD" value="true"
<?php if (isset($data['WORD_CLOUD']) &&
$data['WORD_CLOUD']) {
e("checked='checked'");}?>
></td></tr>
<tr><td><label for="cache-link"><?=
tl('pageoptions_element_cache_link') ?></label>
</td><td><input id='cache-link' type="checkbox"
name="CACHE_LINK" value="true"
<?php if (isset($data['CACHE_LINK']) && $data['CACHE_LINK']){
e("checked='checked'");}?>
></td></tr>
<tr><td><label for="similar-link"><?=
tl('pageoptions_element_similar_link') ?></label></td>
<td><input id='similar-link'
type="checkbox" name="SIMILAR_LINK" value="true"
<?php if (isset($data['SIMILAR_LINK']) &&
$data['SIMILAR_LINK']){
e("checked='checked'");}?>
></td>
</tr>
<tr><td><label for="in-link"><?=
tl('pageoptions_element_in_link') ?></label></td>
<td><input id='in-link' type="checkbox"
name="IN_LINK" value="true"
<?php if (isset($data['IN_LINK']) && $data['IN_LINK']){
e("checked='checked'");}?>
></td></tr>
<tr><td><label for="ip-link"><?=
tl('pageoptions_element_ip_link') ?></label></td>
<td><input id='ip-link' type="checkbox"
name="IP_LINK" value="true"
<?php if (isset($data['IP_LINK']) && $data['IP_LINK']){
e("checked='checked'");}?>
></td>
</tr>
<tr><td><label for="result-score"><?=
tl('pageoptions_element_result_score') ?></label></td>
<td><input id='result-score' type="checkbox"
name="RESULT_SCORE" value="true"
<?php if (isset($data['RESULT_SCORE']) && $data['RESULT_SCORE']){
e("checked='checked'");}?>
></td>
</tr>
</table></td>
</tr></table>
<h2><?= tl('pageoptions_element_ranking_factors')?>
<?= $this->view->helper("helpbutton")->render(
"Page Ranking Factors", $data[C\p('CSRF_TOKEN')]) ?></h2>
<table class="bonus-table" >
<tr><th><label for="host-keyword-bonus"><?=
tl('pageoptions_element_host_keyword_bonus') ?></label></th><td>
<input type="text" id="host-keyword-bonus" class="very-narrow-field"
maxlength="<?= C\NUM_FIELD_LEN ?>" name="HOST_KEYWORD_BONUS"
value="<?= $data['HOST_KEYWORD_BONUS'] ?>" ></td></tr>
<tr><th><label for="title-bonus"><?=
tl('pageoptions_element_title_bonus') ?></label></th><td>
<input type="text" id="title-bonus" class="very-narrow-field"
maxlength="<?= C\NUM_FIELD_LEN ?>" name="TITLE_BONUS"
value="<?= $data['TITLE_BONUS'] ?>" ></td></tr>
<tr><th><label for="path-keyword-bonus"><?=
tl('pageoptions_element_path_keyword_bonus') ?></label></th><td>
<input type="text" id="path-keyword-bonus" class="very-narrow-field"
maxlength="<?= C\NUM_FIELD_LEN ?>" name="PATH_KEYWORD_BONUS"
value="<?= $data['PATH_KEYWORD_BONUS'] ?>" ></td></tr>
<tr><th><label for="cld-url-bonus"><?=
tl('pageoptions_element_cld_url_bonus')?></label></th><td>
<input type="text" id="cld-url-bonus" class="very-narrow-field"
maxlength="<?= C\NUM_FIELD_LEN ?>" name="CLD_URL_BONUS"
value="<?= $data['CLD_URL_BONUS'] ?>" ></td></tr>
<tr><th><label for="host-url-bonus"><?=
tl('pageoptions_element_host_url_bonus')?></label></th><td>
<input type="text" id="host-url-bonus" class="very-narrow-field"
maxlength="<?= C\NUM_FIELD_LEN ?>" name="HOST_URL_BONUS"
value="<?= $data['HOST_URL_BONUS'] ?>" ></td></tr>
<tr><th><label for="user-rank-bonus"><?=
tl('pageoptions_element_user_rank_bonus')?></label></th><td>
<input type="text" id="user-rank-bonus" class="very-narrow-field"
maxlength="<?= C\NUM_FIELD_LEN ?>" name="USER_RANK_BONUS"
value="<?= $data['USER_RANK_BONUS'] ?>" ></td></tr>
<tr><th><label for="wiki-bonus"><?=
tl('pageoptions_element_wiki_bonus')?></label></th><td>
<input type="text" id="wiki-bonus" class="very-narrow-field"
maxlength="<?= C\NUM_FIELD_LEN ?>" name="WIKI_BONUS"
value="<?= $data['WIKI_BONUS'] ?>" ></td></tr>
<tr><th><label for="num-slashes-bonus"><?=
tl('pageoptions_element_num_slashes_bonus')?></label></th><td>
<input type="text" id="num-slashes-bonus" class="very-narrow-field"
maxlength="<?= C\NUM_FIELD_LEN ?>" name="NUM_SLASHES_BONUS"
value="<?= $data['NUM_SLASHES_BONUS'] ?>" ></td></tr>
</table>
<h2><?= tl('pageoptions_element_results_grouping_options') ?>
<?= $this->view->helper("helpbutton")->render(
"Page Grouping Options", $data[C\p('CSRF_TOKEN')]) ?></h2>
<table class="weights-table" >
<tr><th><label for="min-results-to-group"><?=
tl('pageoptions_element_min_results_to_group')?></label></th><td>
<input type="text" id="min-results-to-group"
class="very-narrow-field"
maxlength="<?= C\NUM_FIELD_LEN ?>" name="MIN_RESULTS_TO_GROUP"
value="<?= $data['MIN_RESULTS_TO_GROUP'] ?>" ></td></tr>
</table>
<h2><?= tl('pageoptions_element_browser_search') ?>
<?= $this->view->helper("helpbutton")->render(
"Browser-based Search", $data[C\p('CSRF_TOKEN')]) ?></h2>
<table class="weights-table" >
<tr><th><label for="toolbar"><?=
tl('pageoptions_element_toolbar') ?></label></th><td><?php
?><div id="current-toolbar" class="upload-file"
> </div><?php
$this->view->helper("fileupload")->render(
'current-toolbar', 'SEARCHBAR_PATH', 'toolbar',
C\THUMB_SIZE, 'text', ["text/xml"]);
?></td></tr>
</table>
</div><?php
}
/**
* Draws the Test Page options tab
* @param array $data has fields corresponding to any previous test
* options that had been used (test_method, etc)
*/
private function renderTestTab($data)
{ ?>
<div id='testoptionstab'>
<h2><?= tl('pageoptions_element_test_page') ?>
<?= $this->view->helper("helpbutton")->render(
"Test Indexing a Page", $data[C\p('CSRF_TOKEN')]) ?></h2>
<div class="top-margin">
<?php
$label = $data["test_methods"][array_key_first(
$data["test_methods"])];
$this->view->helper("options")->render("test-method",
"test_method", $data["test_methods"],
$data["test_method"], "switchTestMethod()", [
"aria-label" => $label]);
?>
</div>
<div id='test-uri'>
<div class="top-margin"><b><label for="test-url"><?=
tl('pageoptions_element_uri')?></label></b>
<input id='test-url' name='test_uri' value='<?=
$data["test_uri"]; ?>' >
</div>
</div>
<div id='test-file-upload'>
<div id="test-file" class="media-upload-box"
> </div><?php
$this->view->helper("fileupload")->render(
'test-file', 'test_file_upload', 'test-file-uploader',
min(L\metricToInt(ini_get('upload_max_filesize')),
L\metricToInt(ini_get('post_max_size'))), 'text',
null, true);
?>
</div>
<div id='test-direct-input'>
<div class="top-margin"><b><label for="page-type"><?=
tl('pageoptions_element_page_type')?></label></b>
<?php
$types = $data['MIME_TYPES'];
$this->view->helper("options")->render("page-type",
"page_type", array_combine($types, $types),
$data["page_type"]);
?></div>
<textarea class="tall-text-area" id="testpage"
name="TESTPAGE" ><?=$data['TESTPAGE'] ?></textarea>
</div>
</div>
<?php
}
/**
* Draws the results of conducting a process test of a web page
*
* @param array $data has fields corresponding to result of testing
* a page (AFTER_PAGE_PROCESS, AFTER_RULE_PROCESS, etc)
*/
private function renderTestResults($data)
{
?>
<div id="test-results">
<?php if (!empty($data['test_options_active']) &&
!empty($data["AFTER_PAGE_PROCESS"])) { ?>
<h2><?=tl('pageoptions_element_test_results')?></h2>
<?php
if (!empty($_REQUEST['TESTPAGE']) &&
strlen($_REQUEST['TESTPAGE']) > $data["PAGE_RANGE_REQUEST"]) {
e("<h3 class='red'>".tl('pageoptions_element_page_truncated',
strlen($_REQUEST['TESTPAGE']), $data["PAGE_RANGE_REQUEST"]).
"</h3>");
}
if (isset($data["AFTER_PAGE_PROCESS"])) {
e("<h3>".tl('pageoptions_element_after_process')."</h3>");
e("<pre>\n{$data['AFTER_PAGE_PROCESS']}\n</pre>");
}
if (isset($data["AFTER_RULE_PROCESS"])) {
e("<h3>".tl('pageoptions_element_after_rules')."</h3>");
e("<pre>\n{$data['AFTER_RULE_PROCESS']}\n</pre>");
}
if (isset($data["EXTRACTED_WORDS"])) {
e("<h3>".tl('pageoptions_element_extracted_words')."</h3>");
e("<pre>\n{$data['EXTRACTED_WORDS']}\n</pre>");
}
if (isset($data["QUESTIONS_TRIPLET"])) {
e("<h3>" . tl('pageoptions_element_extracted_questions') .
"</h3>");
e("<pre>\n{$data['QUESTIONS_TRIPLET']}\n</pre>");
}
if (isset($data["EXTRACTED_META_WORDS"])) {
e("<h3>" . tl('pageoptions_element_extracted_metas') . "</h3>");
e("<pre>\n{$data['EXTRACTED_META_WORDS']}\n</pre>");
}
if (isset($data["PROCESS_TIMES"])) {
e("<h3>".tl('pageoptions_element_page_process_times')."</h3>");
$timing_translations = [
'PAGE_PROCESS' =>
tl('pageoptions_element_page_process_time'),
'RULE_PROCESS' =>
tl('pageoptions_element_rule_process_time'),
'CANONICALIZE' => tl('pageoptions_element_canon_time'),
'TERM_POSITIONS_SENTENCE_TAGGING' =>
tl('pageoptions_element_term_pos_sentence_tag_time'),
'QUESTION_ANSWER_EXTRACT' =>
tl('pageoptions_element_qa_time'),
'TOTAL' => tl('pageoptions_element_total_time'),
];
e("<table>");
foreach ($timing_translations as $timing => $translation) {
if (!empty($data["PROCESS_TIMES"][$timing])) {
e("<tr><th class='align-opposite'>$translation".
"</th><td>" . tl('pageoptions_element_time_seconds',
$data["PROCESS_TIMES"][$timing]) . "</td></tr>");
}
}
e("<table>");
}
} ?>
</div><?php
}
}