Bugfix for IE9 (doesn't accept html form within form)

changes of API schedule row data changed form input form to unique field names
using row pk.
Fix for issue 96 http://bugs.yacy.net/view.php?id=96

IE9-64bit doesn't interprete iframe with align parameter as desired
misaligns following content (in CrawlProfileEditor_p.html)
pull/1/head
reger 13 years ago
parent 4f92389550
commit e15e633a01

@ -12,7 +12,7 @@
<h3>Crawl Scheduler</h3>
<p>Scheduled Crawls can be modified in this table</p>
<iframe id="APITable" src="Table_API_p.html?inline=true&amp;filter=crawler" width="100%" height="0" align="left" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" ></iframe>
<iframe id="APITable" src="Table_API_p.html?inline=true&amp;filter=crawler" width="100%" height="0" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" ></iframe>
<h3>Crawl Profile Editor</h3>
<p>Crawl profiles hold information about a crawl process that is currently ongoing.</p>

@ -21,6 +21,8 @@
<script type="text/javascript">
function submitchange(from) {
document.getElementById("apilist").action = "Table_API_p.html#" + from;
document.getElementById ("scheduleevent").value = "true";
document.getElementById("current_schedule_pk").value = from;
document.getElementById("apilist").submit();
}
</script>
@ -90,41 +92,26 @@ To see a list of all APIs, please visit the <a href="http://www.yacy-websuche.de
<td>#[dateNextExec]#</td>
<td>
#(scheduler)#
<form action="Table_API_p.html" method="post" enctype="multipart/form-data" accept-charset="UTF-8" id="modify_repeat">
<select name="repeat_select" onchange='submitchange("#[pk]#")'>
<select name="repeat_select_#[pk]#" onchange='submitchange("#[pk]#")'>
<option value="off" selected="selected">no repetition</option>
<option value="on">activate scheduler</option>
</select>
<input type="hidden" name="startRecord" value="#[startRecord]#" />
<input type="hidden" name="maximumRecords" value="#[maximumRecords]#" />
<input type="hidden" name="pk" value="#[pk]#" />
<input type="hidden" name="inline" value="#[inline]#" />
<input type="hidden" name="filter" value="#[filter]#" />
</form>
::
<form action="Table_API_p.html" method="post" enctype="multipart/form-data" accept-charset="UTF-8" id="modify_repeat">
<table>
<tr><td>
<select name="repeat_time" onchange='submitchange("#[pk]#")'>
<select name="repeat_time_#[pk]#" onchange='submitchange("#[pk]#")'>
#{scale}#
<option value="#[time]#" #(selected)#::selected="selected"#(/selected)#>#[time]#</option>
#{/scale}#
</select>
</td><td>
<select name="repeat_unit" onchange='submitchange("#[pk]#")'>
<select name="repeat_unit_#[pk]#" onchange='submitchange("#[pk]#")'>
<option value="selminutes" #(selectedMinutes)#::selected="selected"#(/selectedMinutes)#>minutes</option>
<option value="selhours" #(selectedHours)#::selected="selected"#(/selectedHours)#>hours</option>
<option value="seldays" #(selectedDays)#::selected="selected"#(/selectedDays)#>days</option>
</select>
</td></tr>
</table>
<input type="hidden" name="startRecord" value="#[startRecord]#" />
<input type="hidden" name="maximumRecords" value="#[maximumRecords]#" />
<input type="hidden" name="pk" value="#[pk]#" />
<input type="hidden" name="inline" value="#[inline]#" />
<input type="hidden" name="filter" value="#[filter]#" />
<noscript><input type="submit" value="Submit" /></noscript>
</form>
#(/scheduler)#
</td>
#(inline)#<td>#[url]#</td>::#(/inline)#
@ -134,6 +121,8 @@ To see a list of all APIs, please visit the <a href="http://www.yacy-websuche.de
</div>
</fieldset>
<p>
<input type="hidden" name="scheduleevent" id="scheduleevent" value="false" />
<input type="hidden" name="current_schedule_pk" id="current_schedule_pk" value="" />
<input type="hidden" name="num" value="#[num]#" />
<input type="submit" name="execrows" value="Execute Selected Actions" />
<input type="submit" name="deleterows" value="Delete Selected Actions" />

@ -53,14 +53,18 @@ public class Table_API_p {
int startRecord = 0;
int maximumRecords = 25;
Pattern query = QueryParams.catchall_pattern;
if (post != null && post.containsKey("startRecord")) startRecord = post.getInt("startRecord", 0);
if (post != null && post.containsKey("maximumRecords")) maximumRecords = post.getInt("maximumRecords", 0);
if (post != null && post.containsKey("startRecord")) {
startRecord = post.getInt("startRecord", 0);
}
if (post != null && post.containsKey("maximumRecords")) {
maximumRecords = post.getInt("maximumRecords", 0);
}
if (post != null && post.containsKey("query") && !post.get("query", "").isEmpty()) {
query = Pattern.compile(".*" + post.get("query", "") + ".*");
startRecord = 0;
maximumRecords = 1000;
}
final boolean inline = (post != null && post.getBoolean("inline",false));
final boolean inline = (post != null && post.getBoolean("inline", false));
prop.put("inline", (inline) ? 1 : 0);
@ -70,10 +74,19 @@ public class Table_API_p {
}
String pk;
if (post != null && post.containsKey("repeat_select") && ((pk = post.get("pk")) != null)) try {
final String action = post.get("repeat_select", "off");
boolean scheduleevent = false; // flag if schedule info of row changes
String current_schedule_pk = ""; // pk of changed schedule data row
if (post != null && post.containsKey("scheduleevent")) {
scheduleevent = post.get("scheduleevent", "false").equalsIgnoreCase("true");
prop.put("scheduleevent", "false");
current_schedule_pk = post.get("current_schedule_pk", "");
}
if (scheduleevent && !current_schedule_pk.isEmpty()) {
if (post != null && post.containsKey("repeat_select_" + current_schedule_pk) ) {
try {
final String action = post.get("repeat_select_" + current_schedule_pk, "off");
if (action.equals("on")) {
Tables.Row row = sb.tables.select(WorkTables.TABLE_API_NAME, pk.getBytes());
Tables.Row row = sb.tables.select(WorkTables.TABLE_API_NAME, current_schedule_pk.getBytes());
if (row != null) {
row.put(WorkTables.TABLE_API_COL_APICALL_SCHEDULE_TIME, 7);
row.put(WorkTables.TABLE_API_COL_APICALL_SCHEDULE_UNIT, "days");
@ -86,10 +99,12 @@ public class Table_API_p {
} catch (RowSpaceExceededException e) {
Log.logException(e);
}
}
if (post != null && post.containsKey("repeat_time") && ((pk = post.get("pk")) != null)) try {
final String action = post.get("repeat_time", "off");
final Tables.Row row = sb.tables.select(WorkTables.TABLE_API_NAME, pk.getBytes());
if (post != null && post.containsKey("repeat_time_" + current_schedule_pk) ) {
try {
final String action = post.get("repeat_time_" + current_schedule_pk, "off");
final Tables.Row row = sb.tables.select(WorkTables.TABLE_API_NAME, current_schedule_pk.getBytes());
if (row != null) {
if ("off".equals(action)) {
row.put(WorkTables.TABLE_API_COL_APICALL_SCHEDULE_TIME, 0);
@ -104,17 +119,27 @@ public class Table_API_p {
} catch (RowSpaceExceededException e) {
Log.logException(e);
}
}
if (post != null && post.containsKey("repeat_unit") && ((pk = post.get("pk")) != null)) try {
final String action = post.get("repeat_unit", "seldays");
final Tables.Row row = sb.tables.select(WorkTables.TABLE_API_NAME, pk.getBytes());
if (post != null && post.containsKey("repeat_unit_" + current_schedule_pk) ) {
try {
final String action = post.get("repeat_unit_" + current_schedule_pk, "seldays");
final Tables.Row row = sb.tables.select(WorkTables.TABLE_API_NAME, current_schedule_pk.getBytes());
if (row != null) {
int time = row.get(WorkTables.TABLE_API_COL_APICALL_SCHEDULE_TIME, 1);
row.put(WorkTables.TABLE_API_COL_APICALL_SCHEDULE_UNIT, action.substring(3));
if (action.equals("selminutes") && time > 0 && time < 10) row.put(WorkTables.TABLE_API_COL_APICALL_SCHEDULE_TIME, 10);
if (action.equals("selminutes") && time > 50) row.put(WorkTables.TABLE_API_COL_APICALL_SCHEDULE_TIME, 50);
if (action.equals("selhours") && time > 23) row.put(WorkTables.TABLE_API_COL_APICALL_SCHEDULE_TIME, 23);
if (action.equals("seldays") && time > 30) row.put(WorkTables.TABLE_API_COL_APICALL_SCHEDULE_TIME, 30);
if (action.equals("selminutes") && time > 0 && time < 10) {
row.put(WorkTables.TABLE_API_COL_APICALL_SCHEDULE_TIME, 10);
}
if (action.equals("selminutes") && time > 50) {
row.put(WorkTables.TABLE_API_COL_APICALL_SCHEDULE_TIME, 50);
}
if (action.equals("selhours") && time > 23) {
row.put(WorkTables.TABLE_API_COL_APICALL_SCHEDULE_TIME, 23);
}
if (action.equals("seldays") && time > 30) {
row.put(WorkTables.TABLE_API_COL_APICALL_SCHEDULE_TIME, 30);
}
WorkTables.calculateAPIScheduler(row, false);
sb.tables.update(WorkTables.TABLE_API_NAME, row);
}
@ -123,9 +148,10 @@ public class Table_API_p {
} catch (RowSpaceExceededException e) {
Log.logException(e);
}
}
}
if (post != null && !post.get("deleterows", "").isEmpty()) {
for (final Map.Entry<String, String> entry: post.entrySet()) {
for (final Map.Entry<String, String> entry : post.entrySet()) {
if (entry.getValue().startsWith("mark_")) {
try {
sb.tables.delete(WorkTables.TABLE_API_NAME, entry.getValue().substring(5).getBytes());
@ -139,7 +165,7 @@ public class Table_API_p {
if (post != null && !post.get("execrows", "").isEmpty()) {
// create a time-ordered list of events to execute
final Set<String> pks = new TreeSet<String>();
for (final Map.Entry<String, String> entry: post.entrySet()) {
for (final Map.Entry<String, String> entry : post.entrySet()) {
if (entry.getValue().startsWith("mark_")) {
pks.add(entry.getValue().substring(5));
}
@ -157,8 +183,11 @@ public class Table_API_p {
boolean dark = true;
while (resultIterator.hasNext()) {
record = resultIterator.next();
if (record == null) continue;
prop.put("showexec_list_" + count + "_dark", ((dark) ? 1 : 0) ); dark=!dark;
if (record == null) {
continue;
}
prop.put("showexec_list_" + count + "_dark", ((dark) ? 1 : 0));
dark = !dark;
prop.put("showexec_list_" + count + "_status", record.getValue());
prop.put("showexec_list_" + count + "_url", record.getKey());
count++;
@ -186,17 +215,27 @@ public class Table_API_p {
// first prepare a list
while (mapIterator.hasNext()) {
r = mapIterator.next();
if (r == null) continue;
if (r == null) {
continue;
}
type = UTF8.String(r.get(WorkTables.TABLE_API_COL_TYPE));
if (!typefilter.matcher(type).matches()) continue;
if (!typefilter.matcher(type).matches()) {
continue;
}
comment = UTF8.String(r.get(WorkTables.TABLE_API_COL_COMMENT));
if (!query.matcher(comment).matches()) continue;
if (c >= startRecord) table.add(r);
if (!query.matcher(comment).matches()) {
continue;
}
if (c >= startRecord) {
table.add(r);
}
c++;
if (table.size() >= maximumRecords) break;
if (table.size() >= maximumRecords) {
break;
}
}
// then work on the list
for (final Tables.Row row: table) {
for (final Tables.Row row : table) {
final Date now = new Date();
final Date date = row.containsKey(WorkTables.TABLE_API_COL_DATE) ? row.get(WorkTables.TABLE_API_COL_DATE, now) : null;
final Date date_recording = row.get(WorkTables.TABLE_API_COL_DATE_RECORDING, date);
@ -206,7 +245,8 @@ public class Table_API_p {
final String unit = row.get(WorkTables.TABLE_API_COL_APICALL_SCHEDULE_UNIT, "days");
final int time = row.get(WorkTables.TABLE_API_COL_APICALL_SCHEDULE_TIME, 0);
prop.put("showtable_list_" + count + "_inline", inline ? 1 : 0);
prop.put("showtable_list_" + count + "_dark", dark ? 1 : 0); dark=!dark;
prop.put("showtable_list_" + count + "_dark", dark ? 1 : 0);
dark = !dark;
prop.put("showtable_list_" + count + "_pk", UTF8.String(row.getPK()));
prop.put("showtable_list_" + count + "_count", count);
prop.put("showtable_list_" + count + "_callcount", callcount);
@ -233,7 +273,7 @@ public class Table_API_p {
prop.put("showtable_list_" + count + "_scheduler_selectedHours", 0);
prop.put("showtable_list_" + count + "_scheduler_selectedDays", 0);
if (unit.equals("minutes")) {
for (int i = 1; i <= 5 ; i++) {
for (int i = 1; i <= 5; i++) {
prop.put("showtable_list_" + count + "_scheduler_scale_" + i + "_time", i * 10);
prop.put("showtable_list_" + count + "_scheduler_scale_" + i + "_selected", 0);
}
@ -241,7 +281,7 @@ public class Table_API_p {
prop.put("showtable_list_" + count + "_scheduler_scale", 6);
prop.put("showtable_list_" + count + "_scheduler_selectedMinutes", 1);
} else if (unit.equals("hours")) {
for (int i = 1; i <= 23 ; i++) {
for (int i = 1; i <= 23; i++) {
prop.put("showtable_list_" + count + "_scheduler_scale_" + i + "_time", i);
prop.put("showtable_list_" + count + "_scheduler_scale_" + i + "_selected", 0);
}
@ -249,7 +289,7 @@ public class Table_API_p {
prop.put("showtable_list_" + count + "_scheduler_scale", 24);
prop.put("showtable_list_" + count + "_scheduler_selectedHours", 1);
} else {
for (int i = 1; i <= 30 ; i++) {
for (int i = 1; i <= 30; i++) {
prop.put("showtable_list_" + count + "_scheduler_scale_" + i + "_time", i);
prop.put("showtable_list_" + count + "_scheduler_scale_" + i + "_selected", 0);
}
@ -307,5 +347,4 @@ public class Table_API_p {
// return rewrite properties
return prop;
}
}

Loading…
Cancel
Save