Skip to content

Commit b385d45

Browse files
committed
Replaced document-level layout mode tabs with a mode dropdown
1 parent a7399f3 commit b385d45

File tree

9 files changed

+100
-47
lines changed

9 files changed

+100
-47
lines changed

src/main/resources/com/atomgraph/linkeddatahub/ldh.ttl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,10 @@ ac:Timeline a rdfs:Class, owl:Class ;
522522

523523
# individuals
524524

525+
:ContentMode a ac:Mode ;
526+
rdfs:label "Content" ;
527+
rdfs:isDefinedBy : .
528+
525529
ac:ChartMode a ac:Mode, ac:ContainerMode ;
526530
rdfs:label "Chart" ;
527531
rdfs:isDefinedBy ac: .

src/main/webapp/static/com/atomgraph/linkeddatahub/css/bootstrap.css

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ exclude-result-prefixes="#all">
5959

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

6565
<!-- disable the right nav (backlinks etc.) -->
6666
<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'"/>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ WHERE
298298

299299
<!-- open a form for document editing -->
300300

301-
<xsl:template match="div[contains-token(@class, 'navbar')]//div[@id = 'doc-controls']//button[contains-token(@class, 'btn-edit')]" mode="ixsl:onclick">
301+
<xsl:template match="div[contains-token(@class, 'action-bar')]//button[contains-token(@class, 'btn-edit')]" mode="ixsl:onclick">
302302
<xsl:param name="about" select="ac:absolute-path(ldh:base-uri(.))" as="xs:anyURI"/> <!-- editing the current document resources -->
303303
<xsl:param name="method" select="'patch'" as="xs:string"/>
304304
<xsl:param name="form-actions-class" select="'form-actions modal-footer'" as="xs:string?"/>

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,9 @@ exclude-result-prefixes="#all"
7676
</xsl:function>
7777

7878
<xsl:function name="ac:mode" as="xs:anyURI*">
79-
<xsl:variable name="nav-tab-class" select="id('layout-modes', ixsl:page())/li[contains-token(@class, 'active')]/@class" as="xs:string"/>
79+
<xsl:variable name="mode-button" select="id('layout-modes', ixsl:page())" as="element()?"/>
80+
<xsl:variable name="dropdown-menu" select="$mode-button/following-sibling::ul[contains-token(@class, 'dropdown-menu')]" as="element()?"/>
81+
<xsl:variable name="active-item-class" select="$dropdown-menu/li[contains-token(@class, 'active')]/@class" as="xs:string?"/>
8082
<xsl:variable name="mode-classes" as="map(xs:string, xs:string)">
8183
<xsl:map>
8284
<xsl:map-entry key="'content-mode'" select="'&ldh;ContentMode'"/>
@@ -86,8 +88,8 @@ exclude-result-prefixes="#all"
8688
<xsl:map-entry key="'graph-mode'" select="'&ac;GraphMode'"/>
8789
</xsl:map>
8890
</xsl:variable>
89-
<xsl:variable name="mode-class" select="map:keys($mode-classes)[contains-token($nav-tab-class, .)]" as="xs:string"/>
90-
<xsl:sequence select="xs:anyURI(map:get($mode-classes, $mode-class))"/>
91+
<xsl:variable name="mode-class" select="map:keys($mode-classes)[contains-token($active-item-class, .)]" as="xs:string?"/>
92+
<xsl:sequence select="if ($mode-class) then xs:anyURI(map:get($mode-classes, $mode-class)) else ()"/>
9193
</xsl:function>
9294

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

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

Lines changed: 50 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -132,60 +132,93 @@ extension-element-prefixes="ixsl"
132132
</div>
133133
</xsl:template>
134134

135-
<!-- MODE TABS -->
136-
137-
<xsl:template match="rdf:RDF" mode="bs2:ModeTabs" use-when="system-property('xsl:product-name') = 'SAXON'">
135+
<!-- MODE LIST -->
136+
137+
<xsl:template match="rdf:RDF" mode="bs2:ModeList" priority="2" use-when="system-property('xsl:product-name') = 'SAXON'">
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:request-uri())" 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"/>
142142
<xsl:param name="base-uri" select="ldh:base-uri(.)" as="xs:anyURI"/>
143143
<xsl:param name="id" select="'layout-modes'" as="xs:string?"/>
144-
<xsl:param name="class" select="'nav nav-tabs offset2 span7'" as="xs:string?"/>
145144

146-
<div class="row-fluid">
147-
<ul>
145+
<div class="btn-group pull-right">
146+
<button type="button" title="{ac:label(key('resources', '&ac;Mode', document(ac:document-uri('&ac;'))))}">
148147
<xsl:if test="$id">
149148
<xsl:attribute name="id" select="$id"/>
150149
</xsl:if>
151-
<xsl:if test="$class">
152-
<xsl:attribute name="class" select="$class"/>
153-
</xsl:if>
154-
150+
151+
<xsl:choose>
152+
<xsl:when test="$active-mode = '&ldh;ContentMode'">
153+
<xsl:apply-templates select="key('resources', '&ldh;ContentMode', document(ac:document-uri('&ldh;')))" mode="ldh:logo">
154+
<xsl:with-param name="class" select="'btn dropdown-toggle'"/>
155+
</xsl:apply-templates>
156+
</xsl:when>
157+
<xsl:when test="$active-mode = '&ac;ReadMode'">
158+
<xsl:apply-templates select="key('resources', '&ac;ReadMode', document(ac:document-uri('&ac;')))" mode="ldh:logo">
159+
<xsl:with-param name="class" select="'btn dropdown-toggle'"/>
160+
</xsl:apply-templates>
161+
</xsl:when>
162+
<xsl:when test="$active-mode = '&ac;MapMode'">
163+
<xsl:apply-templates select="key('resources', '&ac;MapMode', document(ac:document-uri('&ac;')))" mode="ldh:logo">
164+
<xsl:with-param name="class" select="'btn dropdown-toggle'"/>
165+
</xsl:apply-templates>
166+
</xsl:when>
167+
<xsl:when test="$active-mode = '&ac;ChartMode'">
168+
<xsl:apply-templates select="key('resources', '&ac;ChartMode', document(ac:document-uri('&ac;')))" mode="ldh:logo">
169+
<xsl:with-param name="class" select="'btn dropdown-toggle'"/>
170+
</xsl:apply-templates>
171+
</xsl:when>
172+
<xsl:when test="$active-mode = '&ac;GraphMode'">
173+
<xsl:apply-templates select="key('resources', '&ac;GraphMode', document(ac:document-uri('&ac;')))" mode="ldh:logo">
174+
<xsl:with-param name="class" select="'btn dropdown-toggle'"/>
175+
</xsl:apply-templates>
176+
</xsl:when>
177+
<xsl:otherwise>
178+
<xsl:apply-templates select="key('resources', '&ac;ReadMode', document(ac:document-uri('&ac;')))" mode="ldh:logo">
179+
<xsl:with-param name="class" select="'btn dropdown-toggle'"/>
180+
</xsl:apply-templates>
181+
</xsl:otherwise>
182+
</xsl:choose>
183+
<xsl:text> </xsl:text>
184+
<span class="caret"></span>
185+
</button>
186+
187+
<ul class="dropdown-menu">
155188
<li class="content-mode{if ((empty($active-mode) and $has-content) or $active-mode = '&ldh;ContentMode') then ' active' else() }">
156-
<!-- make sure mode tabs always link to the local document (not the proxy-loaded doc) -->
157189
<a href="{ldh:href(ac:document-uri(ldh:base-uri(.)), ldh:query-params(xs:anyURI('&ldh;ContentMode')))}">
190+
<xsl:apply-templates select="key('resources', '&ldh;ContentMode', document(ac:document-uri('&ldh;')))" mode="ldh:logo"/>
158191
<xsl:value-of>
159192
<xsl:apply-templates select="key('resources', 'content', document('translations.rdf'))" mode="ac:label"/>
160193
</xsl:value-of>
161194
</a>
162195
</li>
163196

164197
<xsl:for-each select="key('resources', '&ac;ReadMode', document(ac:document-uri('&ac;')))">
165-
<xsl:apply-templates select="." mode="bs2:ModeTabsItem">
198+
<xsl:apply-templates select="." mode="bs2:ModeListItem">
166199
<xsl:with-param name="active" select="@rdf:about = $active-mode or (empty($active-mode) and not($has-content))"/>
167200
<xsl:with-param name="absolute-path" select="$absolute-path" tunnel="yes"/>
168201
<xsl:with-param name="base-uri" select="$base-uri"/>
169202
</xsl:apply-templates>
170203
</xsl:for-each>
171204
<xsl:for-each select="key('resources', '&ac;MapMode', document(ac:document-uri('&ac;')))">
172-
<xsl:apply-templates select="." mode="bs2:ModeTabsItem">
205+
<xsl:apply-templates select="." mode="bs2:ModeListItem">
173206
<xsl:with-param name="active" select="@rdf:about = $active-mode"/>
174207
<xsl:with-param name="absolute-path" select="$absolute-path" tunnel="yes"/>
175208
<xsl:with-param name="base-uri" select="$base-uri"/>
176209
</xsl:apply-templates>
177210
</xsl:for-each>
178211
<xsl:if test="$ajax-rendering">
179212
<xsl:for-each select="key('resources', '&ac;ChartMode', document(ac:document-uri('&ac;')))">
180-
<xsl:apply-templates select="." mode="bs2:ModeTabsItem">
213+
<xsl:apply-templates select="." mode="bs2:ModeListItem">
181214
<xsl:with-param name="active" select="@rdf:about = $active-mode"/>
182215
<xsl:with-param name="absolute-path" select="$absolute-path" tunnel="yes"/>
183216
<xsl:with-param name="base-uri" select="$base-uri"/>
184217
</xsl:apply-templates>
185218
</xsl:for-each>
186219
</xsl:if>
187220
<xsl:for-each select="key('resources', '&ac;GraphMode', document(ac:document-uri('&ac;')))">
188-
<xsl:apply-templates select="." mode="bs2:ModeTabsItem">
221+
<xsl:apply-templates select="." mode="bs2:ModeListItem">
189222
<xsl:with-param name="active" select="@rdf:about = $active-mode"/>
190223
<xsl:with-param name="absolute-path" select="$absolute-path" tunnel="yes"/>
191224
<xsl:with-param name="base-uri" select="$base-uri"/>
@@ -194,7 +227,7 @@ extension-element-prefixes="ixsl"
194227
</ul>
195228
</div>
196229
</xsl:template>
197-
230+
198231
<!-- CONTENT LIST -->
199232

200233
<xsl:template match="rdf:RDF" mode="ldh:ContentList">

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

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -647,12 +647,6 @@ LIMIT 100
647647

648648
<div id="doc-controls" class="span4">
649649
<xsl:apply-templates select="key('resources', ac:absolute-path(ldh:base-uri(.)))" mode="bs2:Timestamp"/>
650-
651-
<xsl:if test="$acl:mode = '&acl;Write'">
652-
<button type="button" class="btn btn-edit pull-right">
653-
<xsl:apply-templates select="key('resources', '&ac;EditMode', document(ac:document-uri('&ac;')))" mode="ac:label"/>
654-
</button>
655-
</xsl:if>
656650
</div>
657651
</div>
658652
</div>
@@ -669,12 +663,18 @@ LIMIT 100
669663
<xsl:if test="$class">
670664
<xsl:attribute name="class" select="$class"/>
671665
</xsl:if>
672-
666+
673667
<xsl:apply-templates select="." mode="bs2:MediaTypeList">
674668
<xsl:with-param name="uri" select="ac:absolute-path(ldh:base-uri(.))"/>
675669
</xsl:apply-templates>
676670

677671
<xsl:apply-templates select="." mode="bs2:NavBarActions"/>
672+
673+
<xsl:apply-templates select="." mode="bs2:ModeList">
674+
<xsl:with-param name="has-content" select="$has-content"/>
675+
<xsl:with-param name="active-mode" select="$ac:mode"/>
676+
<xsl:with-param name="ajax-rendering" select="$ldh:ajaxRendering"/>
677+
</xsl:apply-templates>
678678
</div>
679679
</xsl:template>
680680

@@ -867,12 +867,6 @@ LIMIT 100
867867
<xsl:if test="exists($typeof)">
868868
<xsl:attribute name="typeof" select="string-join($typeof, ' ')"/>
869869
</xsl:if>
870-
871-
<xsl:apply-templates select="." mode="bs2:ModeTabs">
872-
<xsl:with-param name="has-content" select="$has-content"/>
873-
<xsl:with-param name="active-mode" select="$ac:mode"/>
874-
<xsl:with-param name="ajax-rendering" select="$ldh:ajaxRendering"/>
875-
</xsl:apply-templates>
876870

877871
<xsl:choose>
878872
<!-- error responses always rendered in bs2:Row mode, no matter what $ac:mode specifies -->
@@ -917,9 +911,6 @@ LIMIT 100
917911
</xsl:choose>
918912
</div>
919913
</xsl:template>
920-
921-
<!-- don't show document-level tabs if the response returned an error or if we're in EditMode -->
922-
<xsl:template match="rdf:RDF[key('resources-by-type', '&http;Response')]" mode="bs2:ModeTabs" priority="1"/>
923914

924915
<xsl:template match="srx:sparql" mode="bs2:ContentBody">
925916
<xsl:param name="id" select="'content-body'" as="xs:string?"/>
@@ -1211,6 +1202,12 @@ LIMIT 100
12111202
<xsl:apply-templates select="key('resources', '&acl;Access', document(ac:document-uri('&acl;')))" mode="ac:label"/>
12121203
</button>
12131204
</div>
1205+
1206+
<xsl:if test="$acl:mode = '&acl;Write'">
1207+
<button type="button" class="btn btn-edit pull-right">
1208+
<xsl:apply-templates select="key('resources', '&ac;EditMode', document(ac:document-uri('&ac;')))" mode="ac:label"/>
1209+
</button>
1210+
</xsl:if>
12141211
</xsl:if>
12151212
</xsl:template>
12161213

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

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -261,21 +261,33 @@ extension-element-prefixes="ixsl"
261261
<xsl:attribute name="class" select="concat($class, ' ', 'btn-agent')"/>
262262
</xsl:template>
263263

264+
<xsl:template match="*[@rdf:about = '&ldh;ContentMode']" mode="ldh:logo">
265+
<xsl:param name="class" as="xs:string?"/>
266+
267+
<xsl:attribute name="class" select="concat($class, ' ', 'btn-content')"/>
268+
</xsl:template>
269+
264270
<xsl:template match="*[@rdf:about = '&ac;ReadMode']" mode="ldh:logo">
265271
<xsl:param name="class" as="xs:string?"/>
266-
272+
267273
<xsl:attribute name="class" select="concat($class, ' ', 'btn-read')"/>
268274
</xsl:template>
269275

270276
<xsl:template match="*[@rdf:about = '&ac;MapMode']" mode="ldh:logo">
271277
<xsl:param name="class" as="xs:string?"/>
272-
278+
273279
<xsl:attribute name="class" select="concat($class, ' ', 'btn-map')"/>
274280
</xsl:template>
275281

282+
<xsl:template match="*[@rdf:about = '&ac;ChartMode']" mode="ldh:logo">
283+
<xsl:param name="class" as="xs:string?"/>
284+
285+
<xsl:attribute name="class" select="concat($class, ' ', 'btn-chart')"/>
286+
</xsl:template>
287+
276288
<xsl:template match="*[@rdf:about = '&ac;GraphMode']" mode="ldh:logo">
277289
<xsl:param name="class" as="xs:string?"/>
278-
290+
279291
<xsl:attribute name="class" select="concat($class, ' ', 'btn-graph')"/>
280292
</xsl:template>
281293

@@ -397,9 +409,9 @@ extension-element-prefixes="ixsl"
397409
</div>
398410
</xsl:template>
399411

400-
<!-- MODE TABS -->
401-
402-
<xsl:template match="*[@rdf:about]" mode="bs2:ModeTabsItem">
412+
<!-- MODE LIST -->
413+
414+
<xsl:template match="*[@rdf:about]" mode="bs2:ModeListItem">
403415
<xsl:param name="absolute-path" select="ac:absolute-path(ldh:base-uri(.))" as="xs:anyURI" tunnel="yes"/>
404416
<xsl:param name="base-uri" as="xs:anyURI?"/>
405417
<xsl:param name="active" as="xs:boolean"/>
@@ -420,13 +432,14 @@ extension-element-prefixes="ixsl"
420432
</xsl:if>
421433

422434
<a href="{ldh:href(ac:document-uri($base-uri), ldh:query-params(xs:anyURI(@rdf:about)))}">
435+
<xsl:apply-templates select="." mode="ldh:logo"/>
423436
<xsl:value-of>
424437
<xsl:apply-templates select="." mode="ac:label"/>
425438
</xsl:value-of>
426439
</a>
427440
</li>
428441
</xsl:template>
429-
442+
430443
<!-- DEFAULT -->
431444

432445
<!-- embed file content -->

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/client.xsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -835,7 +835,7 @@ WHERE
835835

836836
<xsl:if test="$push-state">
837837
<xsl:call-template name="ldh:PushState">
838-
<xsl:with-param name="href" select="ldh:href($href, map{})"/>
838+
<xsl:with-param name="href" select="ldh:href($href, ldh:query-params(ac:mode()))"/>
839839
<xsl:with-param name="title" select="/html/head/title"/>
840840
<xsl:with-param name="container" select="$container"/>
841841
</xsl:call-template>

0 commit comments

Comments
 (0)