summaryrefslogtreecommitdiff
path: root/htroot/Automation_p.html
diff options
context:
space:
mode:
authorMichael Peter Christen <mc@yacy.net>2026-02-09 23:54:34 +0100
committerMichael Peter Christen <mc@yacy.net>2026-02-09 23:54:34 +0100
commit8687ae0e8e7f6cf8028d542ea833d7bb691ad604 (patch)
tree9b60545bb0020e25c0d99000411c277dfce2667d /htroot/Automation_p.html
parent2141aef2c882ee9d53a785c9570ac593018bd810 (diff)
Renamed Table_API_p.html -> Automation_p.html
Diffstat (limited to 'htroot/Automation_p.html')
-rw-r--r--htroot/Automation_p.html292
1 files changed, 292 insertions, 0 deletions
diff --git a/htroot/Automation_p.html b/htroot/Automation_p.html
new file mode 100644
index 000000000..75a39da25
--- /dev/null
+++ b/htroot/Automation_p.html
@@ -0,0 +1,292 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <title>YaCy '#[clientname]#': Automation</title>
+
+ #%env/templates/metas.template%#
+ <script type="text/javascript">
+ <!--
+ // The chrome browser is getting the wrong value if we try to get the value inside the script "var checkStatus=inputs.elements[0].checked;" - so now the value is a parameter
+ function checkAll (formToCheckAll, checkStatus) {
+ var inputs=document.getElementById(formToCheckAll);
+ //var checkStatus=inputs.elements[0].checked;
+ for (var i =0; i < inputs.elements.length; i++) {
+ inputs.elements[i].checked = checkStatus;
+ }
+ }
+ -->
+ </script>
+ <script type="text/javascript">
+ function submitchange(from) {
+ document.getElementById("apilist").action = "Automation_p.html#" + from;
+ document.getElementById ("scheduleeventaction").value = "true";
+ document.getElementById("current_pk").value = from;
+ document.getElementById("apilist").submit();
+ }
+
+ /**
+ * Reset the start record to display first results page
+ */
+ function resetStartRecord() {
+ var startRecordField = document.getElementById("startRecordField");
+ if(startRecordField != null) {
+ startRecordField.value = "0";
+ }
+ }
+ </script>
+ <script type="text/javascript" src="js/sorttable.js"></script>
+ </head>
+ <body id="Tables">
+
+ <div id="fullcontent">
+ #(inline)##%env/templates/header.template%#
+ <h2>Process Automation</h2>
+ <p>This table shows actions that had been issued on the YaCy interface.
+ These recorded actions can be used to repeat specific actions and to send them
+ to a scheduler for a periodic execution.
+ </p>::#(/inline)#
+
+<div id="api">
+<a href="Tables_p.xml?table=api&count=100&search=" id="apilink"><img src="env/grafics/api.png" width="60" height="40" alt="API"/></a>
+<span>The information that is presented on this page can also be retrieved as XML.
+Click the API icon to see the XML.
+To see a list of all APIs, please visit the <a href="https://wiki.yacy.net/index.php/Dev:API" target="_blank">API wiki page</a>.</span>
+</div>
+
+ #(showtable)#::
+ <form action="Automation_p.html" method="post" enctype="multipart/form-data" accept-charset="UTF-8" id="apilist">
+ <input type="hidden" name="transactionToken" value="#[transactionToken]#"/>
+ <fieldset>
+ <legend>Recorded Actions</legend>
+ <br />
+ <span id="resCounter" style="display: inline;">
+ #(navigation)#
+ ::
+ #(left)#<img src="env/grafics/navdl.gif" alt="no previous page" />::<a href="Automation_p.html?startRecord=#[startRecord]#&amp;maximumRecords=#[maximumRecords]#&amp;inline=#(inline)#false::true#(/inline)#&amp;filter=#[filter]#&amp;query=#[query]#&amp;sort=#[sort]#" target="_self"><img src="env/grafics/navsl.gif" alt="previous page" /></a>#(/left)#
+ #[startRecord]#-#[to]# of #[of]#
+ #(right)#<img src="env/grafics/navdr.gif" alt="no next page" />::<a href="Automation_p.html?startRecord=#[startRecord]#&amp;maximumRecords=#[maximumRecords]#&amp;inline=#(inline)#false::true#(/inline)#&amp;filter=#[filter]#&amp;query=#[query]#&amp;sort=#[sort]#" target="_self"><img src="env/grafics/navsr.gif" alt="next page" /></a>#(/right)#
+ <img src="env/grafics/nave.gif" alt="" />
+ #(/navigation)#
+
+ <input type="hidden" name="startRecord" value="#[startRecord]#" id="startRecordField"/>
+ <input type="hidden" name="maximumRecords" value="#[maximumRecords]#" />
+ <input type="hidden" name="inline" value="#(inline)#false::true#(/inline)#" />
+ <input type="hidden" name="filter" value="#[filter]#" />
+ <input type="hidden" name="sort" value="#[sort]#" />
+ <input type="text" name="query" value="#[query]#" onchange="resetStartRecord()" style="font-size:16px;float:left;border:0px;height:20px;background-image:url('env/grafics/find.gif');background-repeat:no-repeat;background-position:right top;"/>
+
+ </span>
+ <br/>
+ <div style="clear:both;">
+ <table style="border:0px; padding:2px; border-spacing:1px" role="grid">
+ <tr class="TableHeader" valign="bottom">
+ <th class="sorttable_nosort"><input type="checkbox" id="allswitch" onclick="checkAll(this.form.id, this.checked);" /></th>
+ <th #(sortedByType)#::aria-sort="#(asc)#descending::ascending#(/asc)#"#(/sortedByType)#>
+ <a class="sortTableLink" href="Automation_p.html?startRecord=#[startRecord]#&amp;maximumRecords=#[maximumRecords]#&amp;sort=#(nextSortTypeDesc)#::-#(/nextSortTypeDesc)#type&amp;inline=#(inline)#false::true#(/inline)#&amp;filter=#[filter]#&amp;query=#[query]#" target="_self" title="Sort by #(nextSortTypeDesc)#ascending::descending#(/nextSortTypeDesc)# types">Type</a>
+ #(sortedByType)#::<span class="glyphicon glyphicon-chevron-#(asc)#down::up#(/asc)#"></span>#(/sortedByType)#
+ </th>
+ <th style="width: 100%;" #(sortedByComment)#::aria-sort="#(asc)#descending::ascending#(/asc)#"#(/sortedByComment)#>
+ <a class="sortTableLink" href="Automation_p.html?startRecord=#[startRecord]#&amp;maximumRecords=#[maximumRecords]#&amp;sort=#(nextSortCommentDesc)#::-#(/nextSortCommentDesc)#comment&amp;inline=#(inline)#false::true#(/inline)#&amp;filter=#[filter]#&amp;query=#[query]#" target="_self" title="Sort by #(nextSortCommentDesc)#ascending::descending#(/nextSortCommentDesc)# comments">Comment</a>
+ #(sortedByComment)#::<span class="glyphicon glyphicon-chevron-#(asc)#down::up#(/asc)#"></span>#(/sortedByComment)#
+ </th>
+ <th #(sortedByApiCallCount)#::aria-sort="#(asc)#descending::ascending#(/asc)#"#(/sortedByApiCallCount)#>
+ <a class="sortTableLink" href="Automation_p.html?startRecord=#[startRecord]#&amp;maximumRecords=#[maximumRecords]#&amp;sort=#(nextSortApiCallCountDesc)#::-#(/nextSortApiCallCountDesc)#apicall_count&amp;inline=#(inline)#false::true#(/inline)#&amp;filter=#[filter]#&amp;query=#[query]#" target="_self" title="Sort by #(nextSortApiCallCountDesc)#ascending::descending#(/nextSortApiCallCountDesc)# call counts">Call Count</a>
+ #(sortedByApiCallCount)#::<span class="glyphicon glyphicon-chevron-#(asc)#down::up#(/asc)#"></span>#(/sortedByApiCallCount)#
+ </th>
+ <th #(sortedByDateRecording)#::aria-sort="#(asc)#descending::ascending#(/asc)#"#(/sortedByDateRecording)#>
+ <a class="sortTableLink" href="Automation_p.html?startRecord=#[startRecord]#&amp;maximumRecords=#[maximumRecords]#&amp;sort=#(nextSortDateRecordingDesc)#::-#(/nextSortDateRecordingDesc)#date_recording&amp;inline=#(inline)#false::true#(/inline)#&amp;filter=#[filter]#&amp;query=#[query]#" target="_self" title="Sort by #(nextSortDateRecordingDesc)#ascending::descending#(/nextSortDateRecordingDesc)# recording dates">Recording&nbsp;Date</a>
+ #(sortedByDateRecording)#::<span class="glyphicon glyphicon-chevron-#(asc)#down::up#(/asc)#"></span>#(/sortedByDateRecording)#
+ </th>
+ <th #(sortedByDateLastExec)#::aria-sort="#(asc)#descending::ascending#(/asc)#"#(/sortedByDateLastExec)#>
+ <a class="sortTableLink" href="Automation_p.html?startRecord=#[startRecord]#&amp;maximumRecords=#[maximumRecords]#&amp;sort=#(nextSortDateLastExecDesc)#::-#(/nextSortDateLastExecDesc)#date_last_exec&amp;inline=#(inline)#false::true#(/inline)#&amp;filter=#[filter]#&amp;query=#[query]#" target="_self" title="Sort by #(nextSortDateLastExecDesc)#ascending::descending#(/nextSortDateLastExecDesc)# last execution dates">Last&nbsp;Exec&nbsp;Date</a>
+ #(sortedByDateLastExec)#::<span class="glyphicon glyphicon-chevron-#(asc)#down::up#(/asc)#"></span>#(/sortedByDateLastExec)#
+ </th>
+ <th #(sortedByDateNextExec)#::aria-sort="#(asc)#descending::ascending#(/asc)#"#(/sortedByDateNextExec)#>
+ <a class="sortTableLink" href="Automation_p.html?startRecord=#[startRecord]#&amp;maximumRecords=#[maximumRecords]#&amp;sort=#(nextSortDateNextExecDesc)#::-#(/nextSortDateNextExecDesc)#date_next_exec&amp;inline=#(inline)#false::true#(/inline)#&amp;filter=#[filter]#&amp;query=#[query]#" target="_self" title="Sort by #(nextSortDateNextExecDesc)#ascending::descending#(/nextSortDateNextExecDesc)# last execution dates">Next&nbsp;Exec&nbsp;Date</a>
+ #(sortedByDateNextExec)#::<span class="glyphicon glyphicon-chevron-#(asc)#down::up#(/asc)#"></span>#(/sortedByDateNextExec)#
+ #(hasEditableNextExecDate)#:: <button type="submit" name="submitNextExecDates" class="btn btn-default btn-xs" title="Apply edited next execution dates">
+ <span class="glyphicon glyphicon-ok"></span>
+ <span> Apply</span>
+ </button>
+ #(/hasEditableNextExecDate)#
+ </th>
+ <th class="sorttable_nosort">Event Trigger</th>
+ <th class="sorttable_nosort">Scheduler</th>
+ #(inline)#<th class="sorttable_nosort">URL</th>::#(/inline)#
+ </tr>
+ #{list}#
+ <tr class="TableCell#(dark)#Light::Dark::Summary#(/dark)#" id="#[pk]#">
+ <td valign="top" align="left"><input type="checkbox" name="item_#[count]#" value="mark_#[pk]#" /></td>
+ <td valign="top">#[type]#
+ #(isCrawlerStart)#::<br/><br/>
+ <a href="#[url]#" title="clone" target="_parent"><img src="env/grafics/doc.gif"><img src="env/grafics/right.gif"><img src="env/grafics/doc.gif"></a>::<br/><br/>
+
+ <script>
+ var f = document.createElement("form");
+ f.setAttribute("method", "post");
+ f.setAttribute("enctype", "multipart/form-data");
+ f.setAttribute("accept-charset", "UTF-8");
+ f.setAttribute("action", "#[servlet]#");
+ f.setAttribute("target", "_parent");
+ f.setAttribute("id", "#[pk]#");
+ f.setAttribute("name", "#[pk]#");
+ #{attr}#
+ var e = document.createElement("input");
+ e.setAttribute("type", "hidden");
+ e.setAttribute("name", "#[key]#");
+ e.setAttribute("value", "#[value]#");
+ f.appendChild(e);
+ #{/attr}#
+ document.body.appendChild(f);
+ </script>
+ <a href="#" title="clone" onclick="document.forms['#[pk]#'].submit(); return false;"><img src="env/grafics/doc.gif"><img src="env/grafics/right.gif"><img src="env/grafics/doc.gif"></a>
+
+ #(/isCrawlerStart)#</td>
+ <td valign="top">#[comment]#</td>
+ <td valign="top">#[callcount]#</td>
+ <td valign="top">#[dateRecording]#</td>
+ <td valign="top">#[dateLastExec]#</td>
+ <td valign="top">#(editableDateNext)# #[dateNextExec]#
+ ::
+ #(dateFormatError)#::<div class="alert alert-danger" role="alert">Malformed date "#[invalidDate]#".</div>#(/dateFormatError)#
+ #(dateBeforeNowError)#::<div class="alert alert-danger" role="alert">"#[invalidDate]#" is before the current date.</div>#(/dateBeforeNowError)#
+ <input name="date_next_exec_#[pk]#" type="text" required="required"
+ maxlength="19" minlength="19" pattern="#[dateLastExecPattern]#"
+ value="#[dateNextExec]#" size="19" title="yyyy/MM/dd HH:mm:ss"/>#(/editableDateNext)#
+ </td>
+ <td valign="top">
+ #(event)#
+ <select name="event_select_#[pk]#" onchange='submitchange("#[pk]#")'>
+ <option value="off" selected="selected">no event</option>
+ <option value="on">activate event</option>
+ </select>
+ ::
+ <table>
+ <tr><td>
+ <select name="event_kind_#[pk]#" onchange='submitchange("#[pk]#")'>
+ <option value="off" #(selectedoff)#::selected="selected"#(/selectedoff)#>off</option>
+ <option value="once" #(selectedonce)#::selected="selected"#(/selectedonce)#>run once</option>
+ <option value="regular" #(selectedregular)#::selected="selected"#(/selectedregular)#>run regular</option>
+ </select>
+ </td><td>
+ <select name="event_action_#[pk]#" onchange='submitchange("#[pk]#")'>
+ <option value="startup" #(selectedstartup)#::selected="selected"#(/selectedstartup)#>after start-up</option>
+ <option value="0000" #(selected0000)#::selected="selected"#(/selected0000)#>at 00:00h</option>
+ <option value="0100" #(selected0100)#::selected="selected"#(/selected0100)#>at 01:00h</option>
+ <option value="0200" #(selected0200)#::selected="selected"#(/selected0200)#>at 02:00h</option>
+ <option value="0300" #(selected0300)#::selected="selected"#(/selected0300)#>at 03:00h</option>
+ <option value="0400" #(selected0400)#::selected="selected"#(/selected0400)#>at 04:00h</option>
+ <option value="0500" #(selected0500)#::selected="selected"#(/selected0500)#>at 05:00h</option>
+ <option value="0600" #(selected0600)#::selected="selected"#(/selected0600)#>at 06:00h</option>
+ <option value="0700" #(selected0700)#::selected="selected"#(/selected0700)#>at 07:00h</option>
+ <option value="0800" #(selected0800)#::selected="selected"#(/selected0800)#>at 08:00h</option>
+ <option value="0900" #(selected0900)#::selected="selected"#(/selected0900)#>at 09:00h</option>
+ <option value="1000" #(selected1000)#::selected="selected"#(/selected1000)#>at 10:00h</option>
+ <option value="1100" #(selected1100)#::selected="selected"#(/selected1100)#>at 11:00h</option>
+ <option value="1200" #(selected1200)#::selected="selected"#(/selected1200)#>at 12:00h</option>
+ <option value="1300" #(selected1300)#::selected="selected"#(/selected1300)#>at 13:00h</option>
+ <option value="1400" #(selected1400)#::selected="selected"#(/selected1400)#>at 14:00h</option>
+ <option value="1500" #(selected1500)#::selected="selected"#(/selected1500)#>at 15:00h</option>
+ <option value="1600" #(selected1600)#::selected="selected"#(/selected1600)#>at 16:00h</option>
+ <option value="1700" #(selected1700)#::selected="selected"#(/selected1700)#>at 17:00h</option>
+ <option value="1800" #(selected1800)#::selected="selected"#(/selected1800)#>at 18:00h</option>
+ <option value="1900" #(selected1900)#::selected="selected"#(/selected1900)#>at 19:00h</option>
+ <option value="2000" #(selected2000)#::selected="selected"#(/selected2000)#>at 20:00h</option>
+ <option value="2100" #(selected2100)#::selected="selected"#(/selected2100)#>at 21:00h</option>
+ <option value="2200" #(selected2200)#::selected="selected"#(/selected2200)#>at 22:00h</option>
+ <option value="2300" #(selected2300)#::selected="selected"#(/selected2300)#>at 23:00h</option>
+ </select>
+ </td></tr>
+ </table>
+ #(/event)#
+ </td>
+ <td valign="top">
+ #(scheduler)#
+ <select name="repeat_select_#[pk]#" onchange='submitchange("#[pk]#")'#(disabled)#:: disabled="disabled"#(/disabled)#>
+ <option value="off" selected="selected">no repetition</option>
+ <option value="on">activate scheduler</option>
+ </select>
+ ::
+ <table>
+ <tr><td>
+ <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_#[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>
+ #(/scheduler)#
+ </td>
+ #(inline)#<td valign="top">#[url]#</td>::#(/inline)#
+ </tr>
+ #{/list}#
+ </table>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="scheduleeventaction" id="scheduleeventaction" value="false" />
+ <input type="hidden" name="current_pk" id="current_pk" value="" />
+ <input type="hidden" name="num" value="#[num]#" />
+ <div class="form-group col-sm-12">
+ <input type="submit" name="execrows" value="Execute Selected Actions" class="btn btn-success"/>&nbsp;&nbsp;&nbsp;
+ <input type="submit" name="deleterows" value="Delete Selected Actions" class="btn btn-danger" onclick="return confirm('Confirm Deletion')"/>&nbsp;&nbsp;&nbsp;
+ </div>
+ <div class="form-group col-sm-6">
+ <input type="submit" name="deleteold" value="Delete all Actions which had been created before " class="btn btn-warning" style="float:left;" onclick="return confirm('Confirm Deletion')"/>
+ <select name="deleteoldtime" class="form-control selectWidth input-sm" style="width:auto;">
+ <option value="1">1 day</option><option value="2">2 days</option><option value="3">3 days</option>
+ <option value="4">4 days</option><option value="5">5 days</option><option value="6">6 days</option>
+ <option value="7">1 week</option><option value="14">2 weeks</option><option value="21">3 weeks</option>
+ <option value="30">1 month</option><option value="60" selected="selected">2 months</option><option value="90">3 months</option>
+ <option value="180">6 months</option><option value="270">9 months</option>
+ <option value="365">1 year</option><option value="730">2 years</option>
+ </select>
+ </div>
+ #(hasEditableNextExecDate)#::
+ <div class="form-group col-sm-6">
+ <input type="submit" name="submitNextExecDates" class="btn btn-default" value="Apply edited next execution dates"/>
+ </div>
+ #(/hasEditableNextExecDate)#
+
+ </form>
+ #(/showtable)#
+ #(showexec)#::
+ <form action="#">
+ <fieldset>
+ <legend><label for="table">Result of API execution</label></legend>
+ <table class="sortable" style="border:0px; padding:2px; border-spacing:1px">
+ <tr class="TableHeader" valign="bottom">
+ <td>Status</td>
+ <td>URL</td>
+ </tr>
+ #{list}#
+ <tr class="TableCell#(dark)#Light::Dark::Summary#(/dark)#">
+ <td>#[status]#</td>
+ <td>#[url]#</td>
+ </tr>
+ #{/list}#
+ </table>
+ </fieldset>
+ </form>
+
+ #(/showexec)#
+ #(showschedulerhint)#::
+ Scheduled actions are executed after the next execution date has arrived within a time frame of #[tfminutes]# minutes.
+ #(/showschedulerhint)#
+ #(inline)##%env/templates/footer.template%#::#(/inline)#
+ </div>
+ <script type="text/javascript">
+ <!--
+ parentPage = parent.document.getElementById('APITable');
+ if (parentPage != null) parentPage.height = document.getElementById('fullcontent').offsetHeight + 30;
+ -->
+ </script>
+ </body>
+</html>