summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Denis Redozubov <denis.redozubov@gmail.com>2018-08-22 15:11:32 +0300
committerGravatar Denis Redozubov <denis.redozubov@gmail.com>2018-08-22 15:14:21 +0300
commiteb86dffeeec897d17905f3adff84e6acfd018330 (patch)
tree91e346a00ab96ec247af14529fc1d26c9c3a4ae0
parent0e41b2ab9485f46c4303be46d41e39203eeb7138 (diff)
Rough same page anchors
-rw-r--r--include/urweb/urweb_cpp.h1
-rw-r--r--lib/js/urweb.js4
-rw-r--r--lib/ur/basis.urs1
-rw-r--r--src/c/urweb.c4
-rw-r--r--src/settings.sml1
5 files changed, 11 insertions, 0 deletions
diff --git a/include/urweb/urweb_cpp.h b/include/urweb/urweb_cpp.h
index 5f1144b8..1351cfbc 100644
--- a/include/urweb/urweb_cpp.h
+++ b/include/urweb/urweb_cpp.h
@@ -242,6 +242,7 @@ uw_Basis_string uw_Basis_blessEnvVar(struct uw_context *, uw_Basis_string);
uw_Basis_string uw_Basis_blessMeta(struct uw_context *, uw_Basis_string);
uw_Basis_string uw_Basis_checkUrl(struct uw_context *, uw_Basis_string);
+uw_Basis_string uw_Basis_anchorUrl(struct uw_context *, uw_Basis_string);
uw_Basis_string uw_Basis_checkMime(struct uw_context *, uw_Basis_string);
uw_Basis_string uw_Basis_checkRequestHeader(struct uw_context *, uw_Basis_string);
uw_Basis_string uw_Basis_checkResponseHeader(struct uw_context *, uw_Basis_string);
diff --git a/lib/js/urweb.js b/lib/js/urweb.js
index ff4c7b7e..cd1b7005 100644
--- a/lib/js/urweb.js
+++ b/lib/js/urweb.js
@@ -2278,5 +2278,9 @@ function giveFocus(id) {
er("Tried to give focus to ID not used in document: " + id);
}
+function anchorUrl(id) {
+ return "#" + id;
+}
+
// App-specific code
diff --git a/lib/ur/basis.urs b/lib/ur/basis.urs
index 3b67946f..a416ba48 100644
--- a/lib/ur/basis.urs
+++ b/lib/ur/basis.urs
@@ -803,6 +803,7 @@ type id
val fresh : transaction id
val giveFocus : id -> transaction unit
val show_id : show id
+val anchorUrl : id -> url
val dyn : ctx ::: {Unit} -> use ::: {Type} -> bind ::: {Type} -> [ctx ~ [Dyn]] => unit
-> tag [Signal = signal (xml ([Dyn] ++ ctx) use bind)] ([Dyn] ++ ctx) [] use bind
diff --git a/src/c/urweb.c b/src/c/urweb.c
index e7efae38..ce6f4dfb 100644
--- a/src/c/urweb.c
+++ b/src/c/urweb.c
@@ -4407,6 +4407,10 @@ uw_Basis_string uw_Basis_currentUrl(uw_context ctx) {
return ctx->current_url;
}
+uw_Basis_string uw_Basis_anchorUrl(uw_context ctx, uw_Basis_string s) {
+ return uw_Basis_strcat(ctx, uw_Basis_strcat(ctx, ctx->current_url, "#"), s);
+}
+
void uw_set_currentUrl(uw_context ctx, char *s) {
ctx->current_url = s;
}
diff --git a/src/settings.sml b/src/settings.sml
index cfbe98a5..c023a851 100644
--- a/src/settings.sml
+++ b/src/settings.sml
@@ -321,6 +321,7 @@ val jsFuncsBase = basisM [("alert", "alert"),
("ord", "ord"),
("checkUrl", "checkUrl"),
+ ("anchorUrl", "anchorUrl"),
("bless", "bless"),
("blessData", "blessData"),