Warning: session_start(): open(/var/lib/php/sessions/sess_oifnqjasv80oi7qiocdgp8aggh, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
sclass HCRUD {
HCRUD_Data data;
S baseLink;
*() {}
*(S *baseLink, HCRUD_Data *data) {}
S newLink() { ret appendQueryToURL(baseLink, cmd := "new"); }
S deleteLink(O id) { ret appendQueryToURL(baseLink, "delete_" + id, 1); }
S editLink(O id) { ret appendQueryToURL(baseLink, edit := id); }
// also handles commands if withCmds=true
S render(bool withCmds, SS params) {
if (!withCmds) ret renderTable(false);
try answer handleCommands(params);
ret pUnlessEmpty(params.get("msg"))
+ p(ahref(newLink(), "New entry"))
+ renderTable(withCmds);
}
S refreshWithMsgs(LS msgs) {
ret hrefresh(appendQueryToURL(baseLink, msg := htmlEncode_nlToBr(lines_rtrim(msgs))));
}
S handleCommands(SS params) {
new LS msgs;
if (eqGet(params, "action", "create")) {
O id = data.createObject(subMapStartingWith_dropPrefix(params, "f_"));
msgs.add("Object created (ID: " + id + ")");
}
if (eqGet(params, "action", "update"))
msgs.add(data.updateObject(params.get("id"),
subMapStartingWith_dropPrefix(params, "f_")));
for (S toDelete : keysDeprefixNemptyValue(params, "delete_"))
msgs.add(data.deleteObject(toDelete));
ret nempty(msgs) ? refreshWithMsgs(msgs) : "";
}
S encodeField(S s) {
ret or(data.fieldNameToHTML(s), s);
}
S renderTable(bool withCmds) {
L