<meta name="description" content="">
<link rel="stylesheet" href="<?=$static?>/css/jquery-ui-timepicker-addon.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
- <link rel="apple-touch-icon" href="<?=$static?>/apple-touch-icon.png">
<link rel="stylesheet" href="<?=$static?>/css/bootstrap.min.css">
<link rel="stylesheet" href="<?=$static?>/css/cacert.css">
-
+
<script src="<?=$static?>/js/jquery.min.js"></script>
<script src="<?=$static?>/js/bootstrap.min.js"></script>
- <script src="<?=$static?>/expert.js"></script>
+ <script src="<?=$static?>/js/expert.js"></script>
+ <script src="<?=$static?>/js/localDate.js"></script>
</head>
<body>
<nav class="navbar navbar-default">
package org.cacert.gigi.dbObjects;
-import java.util.Arrays;
import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
import org.cacert.gigi.Gigi;
import org.cacert.gigi.GigiApiException;
import org.cacert.gigi.database.GigiPreparedStatement;
import org.cacert.gigi.database.GigiResultSet;
-import org.cacert.gigi.output.template.Scope;
import org.cacert.gigi.output.template.SprintfCommand;
public class DomainPingConfiguration implements IdCachable {
Gigi.notifyPinger(this);
return;
}
- Map<String, Object> data = new HashMap<String, Object>();
- data.put("delay", REPING_MINIMUM_DELAY / 60 / 1000);
- data.put("data", new Date(lastExecution.getTime() + REPING_MINIMUM_DELAY));
- throw new GigiApiException(new Scope(new SprintfCommand("Reping is only allowed after {0} minutes, yours end at {1}.", Arrays.asList("${delay}", "${data}")), data));
+ throw new GigiApiException(SprintfCommand.createSimple("Reping is only allowed after {0} minutes, yours end at {1}.", REPING_MINIMUM_DELAY / 60 / 1000, new Date(lastExecution.getTime() + REPING_MINIMUM_DELAY)));
}
}
package org.cacert.gigi.dbObjects;
import java.io.IOException;
-import java.util.Arrays;
import java.util.Date;
-import java.util.HashMap;
import java.util.Locale;
-import java.util.Map;
import org.cacert.gigi.GigiApiException;
import org.cacert.gigi.database.GigiPreparedStatement;
import org.cacert.gigi.email.EmailProvider;
import org.cacert.gigi.email.MailProbe;
import org.cacert.gigi.localisation.Language;
-import org.cacert.gigi.output.template.Scope;
import org.cacert.gigi.output.template.SprintfCommand;
import org.cacert.gigi.util.RandomToken;
Date lastExecution = getLastPing(false);
if (lastExecution != null && lastExecution.getTime() + REPING_MINIMUM_DELAY >= System.currentTimeMillis()) {
- Map<String, Object> data = new HashMap<String, Object>();
- data.put("data", new Date(lastExecution.getTime() + REPING_MINIMUM_DELAY));
- throw new GigiApiException(new Scope(new SprintfCommand("Reping is only allowed after 5 minutes, yours end at {0}.", Arrays.asList("${data}")), data));
+ throw new GigiApiException(SprintfCommand.createSimple("Reping is only allowed after {0} minutes, yours end at {1}.", REPING_MINIMUM_DELAY / 60 / 1000, new Date(lastExecution.getTime() + REPING_MINIMUM_DELAY)));
}
ping(l);
return;
* the variables to put into the placeholders.
* @return the constructed {@link Outputable}.
*/
- public static Outputable createSimple(String msg, String... vars) {
+ public static Outputable createSimple(String msg, Object... vars) {
HashMap<String, Object> scope = new HashMap<>();
String[] store = new String[vars.length];
for (int i = 0; i < vars.length; i++) {
} else if (s instanceof DayDate) {
out.print(DateSelector.getDateFormat().format(((DayDate) s).toDate()));
} else if (s instanceof Date) {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- out.print(sdf.format(s));
- out.print(" UTC");
+ SimpleDateFormat sdfUI = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
+ out.print("<time datetime=\"" + sdf.format(s) + "\">");
+ out.print(sdfUI.format(s));
+ out.print(" UTC</time>");
} else {
out.print(s == null ? "null" : (unescaped ? s.toString() : HTMLEncoder.encodeHTML(s.toString())));
}
--- /dev/null
+(function() {
+ function init(){
+ var elems = document.getElementsByTagName("time");
+ for(var i = 0; i < elems.length; i++){
+ elems[i].setAttribute("title", elems[i].textContent);
+ elems[i].removeChild(elems[i].firstChild);
+ var t = elems[i].getAttribute("datetime");
+ elems[i].appendChild(document.createTextNode(new Date(t).toLocaleString(undefined, {timeZoneName: "short",
+ year: "numeric",
+ month: "2-digit",
+ day: "2-digit",
+ hour: "2-digit",
+ minute: "2-digit",
+ second: "2-digit"})
+ ));
+ }
+ }
+ (function(oldLoad) {
+ if (oldLoad == undefined) {
+ window.onload = init;
+ } else {
+ window.onload = function() {
+ init();
+ oldLoad();
+ }
+ }
+ })(window.onload);
+
+})();
+++ /dev/null
-(function() {
- function explodeMenu(e) {
- if (e.className == 'menu hidden') {
- e.className = 'menu';
- } else {
- e.className = 'menu hidden';
- }
- }
-
- function initMenu() {
- var Nodes = document.getElementsByTagName('ul');
- var max = Nodes.length;
- for (var i = 0; i < max; i++) {
- var nodeObj = Nodes.item(i);
- if (nodeObj.className.indexOf("menu") > -1 && nodeObj.id != "recom") {
- nodeObj.previousSibling.previousSibling.onclick = (function(node) {
- return function() {
- explodeMenu(node);
- };
- })(nodeObj);
- }
- }
- }
-
- (function(oldLoad) {
- if (oldLoad == undefined) {
- window.onload = init;
- } else {
- window.onload = function() {
- initMenu();
- oldLoad();
- }
- }
- })(window.onload);
-
-})();