Skip to content

Commit 0a90264

Browse files
committed
ac:mode function fix
New `ldh:request-uri()` function
1 parent b0dfd66 commit 0a90264

7 files changed

Lines changed: 65 additions & 41 deletions

File tree

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/admin/signup.xsl

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ xmlns:spin="&spin;"
4747
xmlns:bs2="http://graphity.org/xsl/bootstrap/2.3.2"
4848
exclude-result-prefixes="#all">
4949

50-
<xsl:template match="rdf:RDF[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:ContentBody" priority="2" use-when="system-property('xsl:product-name') = 'SAXON'">
50+
<xsl:template match="rdf:RDF[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:ContentBody" priority="2" use-when="system-property('xsl:product-name') = 'SAXON'">
5151
<div about="{ac:absolute-path(base-uri($main-doc))}" id="content-body" class="container-fluid">
5252
<xsl:apply-templates select="key('resources', ac:absolute-path(base-uri($main-doc)))" mode="ldh:ContentList"/>
5353

@@ -56,17 +56,17 @@ exclude-result-prefixes="#all">
5656
</xsl:template>
5757

5858
<!-- hide "Create" button which otherwise would be shown because acl:Append is allowed for signup -->
59-
<xsl:template match="rdf:RDF[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:Create" priority="2" use-when="system-property('xsl:product-name') = 'SAXON'"/>
59+
<xsl:template match="rdf:RDF[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:Create" priority="2" use-when="system-property('xsl:product-name') = 'SAXON'"/>
6060

6161
<!-- hide "Add data" button which otherwise would be shown because acl:Append is allowed for signup -->
62-
<xsl:template match="rdf:RDF[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:AddData" priority="2" use-when="system-property('xsl:product-name') = 'SAXON'"/>
62+
<xsl:template match="rdf:RDF[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:AddData" priority="2" use-when="system-property('xsl:product-name') = 'SAXON'"/>
6363

64-
<xsl:template match="rdf:RDF[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:ModeTabs" priority="2" use-when="system-property('xsl:product-name') = 'SAXON'"/>
64+
<xsl:template match="rdf:RDF[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:ModeTabs" priority="2" use-when="system-property('xsl:product-name') = 'SAXON'"/>
6565

6666
<!-- disable the right nav (backlinks etc.) -->
67-
<xsl:template match="*[*][@rdf:about or @rdf:nodeID][ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:Right" use-when="system-property('xsl:product-name') = 'SAXON'"/>
67+
<xsl:template match="*[*][@rdf:about or @rdf:nodeID][ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:Right" use-when="system-property('xsl:product-name') = 'SAXON'"/>
6868

69-
<xsl:template match="rdf:RDF[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:Row" priority="2">
69+
<xsl:template match="rdf:RDF[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:Row" priority="2">
7070
<xsl:variable name="constructors" select="ldh:query-result(resolve-uri('ns', $ldt:base), $constructor-query || ' VALUES $Type { ' || string-join(for $type in '&foaf;Person' return '&lt;' || $type || '&gt;', ' ') || ' }')" as="document-node()?"/>
7171
<xsl:apply-templates select="ldh:construct(map{ xs:anyURI('&foaf;Person'): $constructors//srx:result[srx:binding[@name = 'Type'] = '&foaf;Person']/srx:binding[@name = 'construct']/srx:literal/string() })" mode="bs2:RowForm">
7272
<xsl:with-param name="id" select="'form-signup'"/>
@@ -78,7 +78,7 @@ exclude-result-prefixes="#all">
7878
</xsl:apply-templates>
7979
</xsl:template>
8080

81-
<!-- <xsl:template match="rdf:RDF[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)][not(key('resources-by-type', '&http;Response'))][1]" mode="bs2:Row" priority="3">
81+
<!-- <xsl:template match="rdf:RDF[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)][not(key('resources-by-type', '&http;Response'))][1]" mode="bs2:Row" priority="3">
8282
<div class="row-fluid">
8383
<div class="main offset2 span7">
8484
<div class="alert alert-success row-fluid">
@@ -100,27 +100,27 @@ exclude-result-prefixes="#all">
100100
</xsl:template>-->
101101

102102
<!-- suppress resources other than foaf:Person and cert:PublicKey -->
103-
<!-- <xsl:template match="*[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)][not(key('resources-by-type', '&http;Response'))][not(rdf:type/@rdf:resource = ('&foaf;Person', '&cert;X509Certificate'))]" mode="bs2:Row" priority="2"/> -->
103+
<!-- <xsl:template match="*[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)][not(key('resources-by-type', '&http;Response'))][not(rdf:type/@rdf:resource = ('&foaf;Person', '&cert;X509Certificate'))]" mode="bs2:Row" priority="2"/> -->
104104

105105
<!-- hide resources from constructed models -->
106-
<xsl:template match="rdf:Description[not(rdf:type/@rdf:resource = ('&foaf;Person', '&adm;SignUp'))][ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:RowForm" priority="3"/>
106+
<xsl:template match="rdf:Description[not(rdf:type/@rdf:resource = ('&foaf;Person', '&adm;SignUp'))][ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:RowForm" priority="3"/>
107107

108108
<!-- hide type control -->
109-
<xsl:template match="*[*][@rdf:about or @rdf:nodeID][ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:TypeControl" priority="2">
109+
<xsl:template match="*[*][@rdf:about or @rdf:nodeID][ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:TypeControl" priority="2">
110110
<xsl:next-match>
111111
<xsl:with-param name="hidden" select="true()"/>
112112
</xsl:next-match>
113113
</xsl:template>
114114

115-
<xsl:template match="*[*][@rdf:about or @rdf:nodeID][ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:FormControl" priority="1">
115+
<xsl:template match="*[*][@rdf:about or @rdf:nodeID][ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:FormControl" priority="1">
116116
<xsl:next-match>
117117
<xsl:with-param name="show-subject" select="false()" tunnel="yes"/>
118118
<xsl:with-param name="legend" select="false()"/>
119119
<xsl:with-param name="required" select="true()"/>
120120
</xsl:next-match>
121121
</xsl:template>
122122

123-
<!-- <xsl:template match="*[@rdf:about or @rdf:nodeID][ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]/sioc:has_parent | *[@rdf:about or @rdf:nodeID][ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]/sioc:has_container" mode="bs2:FormControl">
123+
<!-- <xsl:template match="*[@rdf:about or @rdf:nodeID][ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]/sioc:has_parent | *[@rdf:about or @rdf:nodeID][ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]/sioc:has_container" mode="bs2:FormControl">
124124
<xsl:apply-templates select="." mode="xhtml:Input">
125125
<xsl:with-param name="type" select="'hidden'"/>
126126
</xsl:apply-templates>
@@ -132,7 +132,7 @@ exclude-result-prefixes="#all">
132132
</xsl:call-template>
133133
</xsl:template>-->
134134

135-
<xsl:template match="foaf:based_near/@rdf:*[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:FormControl" priority="1">
135+
<xsl:template match="foaf:based_near/@rdf:*[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:FormControl" priority="1">
136136
<xsl:param name="id" select="generate-id()" as="xs:string"/>
137137
<xsl:param name="class" as="xs:string?"/>
138138
<xsl:param name="disabled" select="false()" as="xs:boolean"/>
@@ -195,7 +195,7 @@ exclude-result-prefixes="#all">
195195
</xsl:template>
196196

197197
<!-- make properties required -->
198-
<xsl:template match="foaf:givenName[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)] | foaf:familyName[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)] | foaf:mbox[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)] | cert:key[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:FormControl" priority="1">
198+
<xsl:template match="foaf:givenName[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)] | foaf:familyName[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)] | foaf:mbox[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)] | cert:key[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:FormControl" priority="1">
199199
<xsl:param name="violations" as="element()*"/>
200200

201201
<xsl:next-match>
@@ -204,7 +204,7 @@ exclude-result-prefixes="#all">
204204
</xsl:next-match>
205205
</xsl:template>
206206

207-
<xsl:template match="cert:key/@rdf:*[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:FormControl" priority="1">
207+
<xsl:template match="cert:key/@rdf:*[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:FormControl" priority="1">
208208
<xsl:param name="type" select="'password'" as="xs:string"/>
209209
<xsl:param name="id" as="xs:string?"/>
210210
<xsl:param name="class" as="xs:string?"/>
@@ -246,10 +246,10 @@ exclude-result-prefixes="#all">
246246
</xsl:template>
247247

248248
<!-- do not show secretary URI input -->
249-
<xsl:template match="acl:delegates[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:FormControl" priority="1"/>
249+
<xsl:template match="acl:delegates[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:FormControl" priority="1"/>
250250

251251
<!-- do not show the email hash value -->
252-
<xsl:template match="foaf:mbox_sha1sum[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:FormControl" priority="1"/>
252+
<xsl:template match="foaf:mbox_sha1sum[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:FormControl" priority="1"/>
253253

254254
<xsl:template name="lacl:password">
255255
<xsl:param name="this" select="xs:anyURI('&lacl;password')" as="xs:anyURI"/>
@@ -291,7 +291,7 @@ exclude-result-prefixes="#all">
291291
</xsl:template>
292292

293293
<!-- hide properties -->
294-
<xsl:template match="dh:slug[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)] | foaf:primaryTopic[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)] | foaf:isPrimaryTopicOf[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)] | cert:modulus[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)] | cert:exponent[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:FormControl" priority="3">
294+
<xsl:template match="dh:slug[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)] | foaf:primaryTopic[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)] | foaf:isPrimaryTopicOf[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)] | cert:modulus[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)] | cert:exponent[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:FormControl" priority="3">
295295
<xsl:apply-templates select="." mode="xhtml:Input">
296296
<xsl:with-param name="type" select="'hidden'"/>
297297
</xsl:apply-templates>
@@ -303,13 +303,13 @@ exclude-result-prefixes="#all">
303303
</xsl:apply-templates>
304304
</xsl:template>
305305

306-
<xsl:template match="*[@rdf:about = '&foaf;mbox'][ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="ac:label" priority="1">
306+
<xsl:template match="*[@rdf:about = '&foaf;mbox'][ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="ac:label" priority="1">
307307
<xsl:value-of>
308308
<xsl:apply-templates select="key('resources', 'email', document('../translations.rdf'))" mode="ac:label"/>
309309
</xsl:value-of>
310310
</xsl:template>
311311

312312
<!-- turn off additional properties -->
313-
<xsl:template match="*[ac:absolute-path($ldh:requestUri) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:PropertyControl" priority="1"/>
313+
<xsl:template match="*[ac:absolute-path(ldh:request-uri()) = resolve-uri(encode-for-uri('sign up'), $ldt:base)]" mode="bs2:PropertyControl" priority="1"/>
314314

315315
</xsl:stylesheet>

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/client/functions.xsl

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ extension-element-prefixes="ixsl"
3535
exclude-result-prefixes="#all"
3636
>
3737

38+
<xsl:function name="ldh:request-uri" as="xs:anyURI">
39+
<xsl:sequence select="xs:anyURI(ixsl:location())"/>
40+
</xsl:function>
41+
3842
<xsl:function name="ldh:base-uri" as="xs:anyURI">
3943
<xsl:param name="arg" as="node()"/> <!-- ignored -->
4044

@@ -63,11 +67,18 @@ exclude-result-prefixes="#all"
6367
</xsl:function>
6468

6569
<xsl:function name="ac:mode" as="xs:anyURI*">
66-
<xsl:variable name="doc" select="ixsl:get(ixsl:get(ixsl:get(ixsl:window(), 'LinkedDataHub.contents'), '`' || ac:absolute-path(xs:anyURI(ixsl:location())) || '`'), 'results')" as="document-node()"/>
67-
<xsl:variable name="block-uris" select="key('resources', ac:absolute-path(xs:anyURI(ixsl:location())), $doc)/rdf:*[starts-with(local-name(), '_')]/@rdf:resource" as="xs:anyURI*"/>
68-
<!-- this is an approximation - server-side layout.xsl also checks exists($template-block-uris) which are blocks defined on ontology classes using ldh:template -->
69-
<xsl:variable name="has-content" select="exists($block-uris)" as="xs:boolean"/>
70-
<xsl:sequence select="if (ixsl:query-params()?mode) then for $mode in ixsl:query-params()?mode return xs:anyURI($mode) else (if ($has-content) then xs:anyURI('&ldh;ContentMode') else xs:anyURI('&ac;ReadMode'))"/>
70+
<xsl:variable name="nav-tab-class" select="id('layout-modes')/li[contains-token(@class, 'active')]/@class" as="xs:string"/>
71+
<xsl:variable name="mode-classes" as="map(xs:string, xs:string)">
72+
<xsl:map>
73+
<xsl:map-entry key="'content-mode'" select="'&ldh;ContentMode'"/>
74+
<xsl:map-entry key="'read-mode'" select="'&ac;ReadMode'"/>
75+
<xsl:map-entry key="'map-mode'" select="'&ac;MapMode'"/>
76+
<xsl:map-entry key="'chart-mode'" select="'&ac;ChartMode'"/>
77+
<xsl:map-entry key="'graph-mode'" select="'&ac;GraphMode'"/>
78+
</xsl:map>
79+
</xsl:variable>
80+
<xsl:variable name="mode-class" select="map:keys($mode-classes)[contains-token($nav-tab-class, .)]" as="xs:string"/>
81+
<xsl:sequence select="xs:anyURI(map:get($mode-classes, $mode-class))"/>
7182
</xsl:function>
7283

7384
<xsl:function name="sd:endpoint" as="xs:anyURI">

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/client/modal.xsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -879,7 +879,7 @@ LIMIT 10
879879

880880
<xsl:template name="ldh:ShowAddDataForm">
881881
<xsl:param name="form" as="element()"/>
882-
<xsl:param name="graph" select="ac:absolute-path($ldh:requestUri)" as="xs:anyURI?"/>
882+
<xsl:param name="graph" select="ac:absolute-path(ldh:request-uri())" as="xs:anyURI?"/>
883883

884884
<!-- don't append the div if it's already there -->
885885
<xsl:if test="not(id($form/@id, ixsl:page()))">

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/document.xsl

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,20 @@ extension-element-prefixes="ixsl"
138138
<xsl:param name="has-content" as="xs:boolean"/>
139139
<xsl:param name="active-mode" as="xs:anyURI?"/>
140140
<xsl:param name="ajax-rendering" select="true()" as="xs:boolean"/>
141-
<xsl:param name="absolute-path" select="ac:absolute-path($ldh:requestUri)" as="xs:anyURI"/> <!-- make sure mode tabs always link to the local document (not the proxy-loaded doc) -->
141+
<xsl:param name="absolute-path" select="ac:absolute-path(ldh:request-uri())" as="xs:anyURI"/> <!-- make sure mode tabs always link to the local document (not the proxy-loaded doc) -->
142142
<xsl:param name="base-uri" select="ldh:base-uri(.)" as="xs:anyURI"/>
143+
<xsl:param name="id" select="'layout-modes'" as="xs:string?"/>
144+
<xsl:param name="class" select="'nav nav-tabs offset2 span7'" as="xs:string?"/>
143145

144146
<div class="row-fluid">
145-
<ul class="nav nav-tabs offset2 span7">
147+
<ul>
148+
<xsl:if test="$id">
149+
<xsl:attribute name="id" select="$id"/>
150+
</xsl:if>
151+
<xsl:if test="$class">
152+
<xsl:attribute name="class" select="$class"/>
153+
</xsl:if>
154+
146155
<li class="content-mode{if ((empty($active-mode) and $has-content) or $active-mode = '&ldh;ContentMode') then ' active' else() }">
147156
<!-- make sure mode tabs always link to the local document (not the proxy-loaded doc) -->
148157
<a href="{ldh:href(ac:document-uri(ldh:base-uri(.)), ldh:query-params(xs:anyURI('&ldh;ContentMode')))}">

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/imports/default.xsl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ exclude-result-prefixes="#all"
6868
<xsl:sequence select="upper-case(substring($labels[1], 1, 1)) || substring($labels[1], 2)"/>
6969
</xsl:function>
7070

71+
<xsl:function name="ldh:request-uri" as="xs:anyURI" use-when="system-property('xsl:product-name') = 'SAXON'">
72+
<xsl:sequence select="$ldh:requestUri"/>
73+
</xsl:function>
74+
7175
<xsl:function name="ldh:base-uri" as="xs:anyURI" use-when="system-property('xsl:product-name') = 'SAXON'">
7276
<xsl:param name="arg" as="node()"/>
7377

@@ -95,7 +99,7 @@ exclude-result-prefixes="#all"
9599
<xsl:choose>
96100
<!-- proxy URI - internal ones (relative to application's base URI) will be rewritten as absolute path in ApplicationFilter -->
97101
<xsl:when test="$uri and not(starts-with($uri, $ldt:base))">
98-
<xsl:sequence select="xs:anyURI(ac:build-uri(ac:absolute-path($ldh:requestUri), map:merge((map{ 'uri': string($uri) }, $query-params))) || (if ($fragment) then ('#' || $fragment) else ()))"/>
102+
<xsl:sequence select="xs:anyURI(ac:build-uri(ac:absolute-path(ldh:request-uri()), map:merge((map{ 'uri': string($uri) }, $query-params))) || (if ($fragment) then ('#' || $fragment) else ()))"/>
99103
</xsl:when>
100104
<!-- local URI -->
101105
<xsl:otherwise>

0 commit comments

Comments
 (0)