mirror of
https://github.com/xroche/httrack.git
synced 2026-07-17 06:10:42 +03:00
The web GUI carried per-control help via onMouseOver="info(...)", which
only wrote window.status. Browsers stopped honoring scripted window.status
writes years ago, so those hints render nowhere.
Emit each hint as a native title='...' attribute alongside the existing
handler, reusing the same ${html:LANG_*} string. Single-quoted so the
filter's ' -> ' (and <>&) escaping keeps the attribute well-formed; a
literal " is harmless inside single quotes. The window.status calls stay
(inert) to keep the diff to added attributes.
The webhttrack smoke test now also fetches an option page and requires a
rendered title=' tooltip.
Signed-off-by: Xavier Roche <roche@httrack.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
208 lines
6.4 KiB
HTML
208 lines
6.4 KiB
HTML
<html xmlns="http://www.w3.org/1999/xhtml" lang="${LANGUAGE_ISO}">
|
|
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=${LANGUAGE_CHARSET}" />
|
|
<meta name="description" content="${LANG_METADESC}" />
|
|
<meta name="keywords" content="${LANG_METAKEYW}" />
|
|
<title>'${projname}' - HTTrack Website Copier</title>
|
|
|
|
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
|
<script type="text/javascript" src="ping.js" defer></script>
|
|
|
|
<script language="javascript">
|
|
<!--
|
|
function do_load() {
|
|
window.status=' ';
|
|
}
|
|
function do_unload() {
|
|
}
|
|
function do_load() {
|
|
window.status=' ';
|
|
form.urls.select();
|
|
}
|
|
function key_event(event) {
|
|
if (event && event.keyCode && event.keyCode == 10) {
|
|
form.nextBtn.click();
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
function info(str) {
|
|
window.status = str;
|
|
}
|
|
function doOpenWindow() {
|
|
childWn=window.open('addurl.html', 'addurl', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480');
|
|
setTimeout("do_check_child()", 100);
|
|
}
|
|
function do_check_child() {
|
|
if (childWn && childWn.document) {
|
|
if ((typeof childWn.wparent) == "undefined") {
|
|
childWn.wparent=document;
|
|
setTimeout("do_check_child()", 1000);
|
|
} else {
|
|
childWn.wparent=document;
|
|
}
|
|
}
|
|
}
|
|
// -->
|
|
</script>
|
|
|
|
</head>
|
|
<body onLoad="do_load();" onUnload="do_unload();" onKeyPress="return key_event(event);">
|
|
|
|
<table width="76%" border="0" align="center" cellspacing="0" cellpadding="0" class="tableWidth">
|
|
<tr>
|
|
<td><img src="images/header_title_4.gif" width="400" height="34" alt="HTTrack Website Copier" title="" border="0" id="title" /></td>
|
|
</tr>
|
|
</table>
|
|
<table width="76%" border="0" align="center" cellspacing="0" cellpadding="3" class="tableWidth">
|
|
<tr>
|
|
<td width="90%" id="subTitle">${LANG_OSFWB}</td>
|
|
<td id="subTitle" align="right">
|
|
<a href="/server/file.html" target="_blank"
|
|
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
|
title='${html:LANG_O1}' onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
|
style="color:#FFFFFF"
|
|
>
|
|
${LANG_O1}
|
|
</a>
|
|
</td>
|
|
${/* show help only if available */}
|
|
${do:if-file-exists:html/index.html}
|
|
<td id="subTitle">|</td>
|
|
<td id="subTitle" align="right">
|
|
<a href="/index.html" target="_blank"
|
|
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
|
style="color:#FFFFFF"
|
|
>
|
|
${LANG_O5}
|
|
</a>
|
|
</td>
|
|
${do:end-if}
|
|
</tr>
|
|
</table>
|
|
<table width="76%" border="0" align="center" cellspacing="0" cellpadding="0" class="tableWidth">
|
|
<tr class="blak">
|
|
<td>
|
|
<table width="100%" border="0" align="center" cellspacing="1" cellpadding="0">
|
|
<tr>
|
|
<td colspan="6">
|
|
<table width="100%" border="0" align="center" cellspacing="0" cellpadding="10">
|
|
<tr>
|
|
<td id="pageContent">
|
|
<!-- ==================== End prologue ==================== -->
|
|
|
|
<table border="0" width="100%">
|
|
<tr><td width="90%">
|
|
<h2 align="center"><em>Select URLs</em></h2>
|
|
</td>
|
|
${/* show help only if available */}
|
|
${do:if-file-exists:html/index.html}
|
|
<td>
|
|
<a href="/step2.html" target="_blank"
|
|
onClick="window.open('/step2.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
|
title='${html:LANG_TIPHELP}' onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
|
>${LANG_TIPHELP}</a>
|
|
</td>
|
|
${do:end-if}
|
|
</tr></table>
|
|
|
|
<br>
|
|
|
|
<form method="POST" action="step4.html" name="form">
|
|
<input type="hidden" name="sid" value="${sid}">
|
|
<input type="hidden" name="redirect" value="">
|
|
|
|
<table border="0" width="100%">
|
|
<tr><td>
|
|
${LANG_G31}
|
|
<select name="todo"
|
|
title='${html:LANG_G9}' onMouseOver="info('${html:LANG_G9}'); return true" onMouseOut="info(' '); return true"
|
|
>
|
|
${listid:todo:LISTDEF_10}
|
|
</select>
|
|
|
|
</td></tr>
|
|
<tr><td>
|
|
<table border="0">
|
|
<tr><td>
|
|
${LANG_G44}
|
|
</td><td>
|
|
<input type="button" value="${LANG_G43}"
|
|
onClick="doOpenWindow()"
|
|
title='${html:LANG_G24b}' onMouseOver="info('${html:LANG_G24b}'); return true" onMouseOut="info(' '); return true"
|
|
>
|
|
</td></tr></table>
|
|
<br>
|
|
<textarea name="urls" cols="50" rows="8"
|
|
title='${html:LANG_G11}' onMouseOver="info('${html:LANG_G11}'); return true" onMouseOut="info(' '); return true"
|
|
>
|
|
${do:output-mode:html}
|
|
${urls}
|
|
${do:output-mode:}
|
|
</textarea>
|
|
|
|
</td></tr>
|
|
<tr><td>
|
|
<table border="0">
|
|
<tr><td>
|
|
${LANG_URLLIST}:
|
|
</td><td>
|
|
<input name="filelist" value="${filelist}" size="40"
|
|
title='${html:LANG_G24c}' onMouseOver="info('${html:LANG_G24c}'); return true" onMouseOut="info(' '); return true"
|
|
>
|
|
</td></tr></table>
|
|
|
|
</td></tr>
|
|
<tr><td>
|
|
<table border="0">
|
|
<tr><td>
|
|
${LANG_G41}
|
|
</td><td>
|
|
<input type="button" value="${LANG_G40}" onClick="window.open('option1.html', 'option1', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
|
title='${html:LANG_G24}' onMouseOver="info('${html:LANG_G24}'); return true" onMouseOut="info(' '); return true"
|
|
>
|
|
</td></tr></table>
|
|
|
|
</td></tr>
|
|
|
|
<tr><td align="right">
|
|
<table width="100%" border="0"><tr><td align="left">
|
|
<input type="submit" value=" << ${LANG_PREVIOUS} " onClick="form.redirect.value='step2.html'; form.submit()"
|
|
title='${html:LANG_TIPPREV}' onMouseOver="info('${html:LANG_TIPPREV}'); return true" onMouseOut="info(' '); return true"
|
|
>
|
|
</td><td align="right">
|
|
<input name="nextBtn" type="submit" value=" ${LANG_NEXT} >> "
|
|
title='${html:LANG_TIPNEXT}' onMouseOver="info('${html:LANG_TIPNEXT}'); return true" onMouseOut="info(' '); return true"
|
|
>
|
|
</td></tr></table>
|
|
|
|
</td></tr>
|
|
</table>
|
|
|
|
</form>
|
|
|
|
<!-- ==================== Start epilogue ==================== -->
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0">
|
|
<tr>
|
|
<td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td>
|
|
</tr>
|
|
</table>
|
|
|
|
</body>
|
|
|
|
</html>
|
|
|
|
|