diff --git a/plugins/tiddlywiki/multiwikiserver/admin-ui/AdminLayout.tid b/plugins/tiddlywiki/multiwikiserver/admin-ui/AdminLayout.tid
index 5b36335c9..7e1015599 100644
--- a/plugins/tiddlywiki/multiwikiserver/admin-ui/AdminLayout.tid
+++ b/plugins/tiddlywiki/multiwikiserver/admin-ui/AdminLayout.tid
@@ -5,14 +5,15 @@ description: Admin Layout
icon: $:/favicon.ico
\import [subfilter{$:/core/config/GlobalImportFilter}]
+
-
-
TiddlyWiki5
-{{MultiWikiServer Administration}}
-
-<$button>
-<$action-setfield $tiddler="$:/layout" text="$:/core/ui/PageTemplate"/>
-Switch to TiddlyWiki default user interface
-$button>
-
+
+
TiddlyWiki5
+ {{MultiWikiServer Administration}}
+
+ <$button>
+ <$action-setfield $tiddler="$:/layout" text="$:/core/ui/PageTemplate"/>
+ Switch to TiddlyWiki default user interface
+ $button>
+
diff --git a/plugins/tiddlywiki/multiwikiserver/admin-ui/MultiWikiServer Administration.tid b/plugins/tiddlywiki/multiwikiserver/admin-ui/MultiWikiServer Administration.tid
index ca3eafe66..9352ffa74 100644
--- a/plugins/tiddlywiki/multiwikiserver/admin-ui/MultiWikiServer Administration.tid
+++ b/plugins/tiddlywiki/multiwikiserver/admin-ui/MultiWikiServer Administration.tid
@@ -46,22 +46,54 @@ title: MultiWikiServer Administration
$button><$text text="Create a new recipe:"/><$edit-text tiddler="$:/state/NewRecipeName" tag="input"/>
\end createRecipeButton
+
+\procedure bagPill(element-tag:"span",is-topmost:"no")
+\whitespace trim
+<$genesis $type=<> class={{{ mws-bag-pill [match[yes]then[mws-bag-pill-topmost]] +[join[ ]] }}}>
+ <$image source=`/wiki/${ [{!!bag-name}encodeuricomponent[]] }$/bags/${ [{!!bag-name}encodeuricomponent[]] }$/tiddlers/%24%3A%2Ffavicon.ico` class="mws-favicon-small"/>
+
+ <$text text={{!!bag-name}}/>
+
+$genesis>
+\end
+
+
+\procedure wikiCard()
+\whitespace trim
+
+
+
+
+
+
+\end
+
Bags
-
+
diff --git a/plugins/tiddlywiki/multiwikiserver/admin-ui/Styles.tid b/plugins/tiddlywiki/multiwikiserver/admin-ui/Styles.tid
index 70ea17ed0..11a5bab09 100644
--- a/plugins/tiddlywiki/multiwikiserver/admin-ui/Styles.tid
+++ b/plugins/tiddlywiki/multiwikiserver/admin-ui/Styles.tid
@@ -11,7 +11,93 @@ Styles specific to the full screen layout
padding: 1rem;
}
+
+.mws-wiki-card {
+ display: flex;
+ margin: 1em 0;
+ width: 100%;
+ text-decoration: none;
+ color: <>;
+ background: <>;
+ border-radius: 0.28571429rem;
+ box-shadow: 0 1px 3px 0 #d4d4d5, 0 0 0 1px #d4d4d5;
+ padding: 0.5em 0.5em 0.5em 1em;
+}
+
+
+.mws-wiki-card:hover {
+ background: <>;
+ color: <>;
+}
+
+.mws-wiki-card-image {
+ display: flex;
+ align-items: center;
+}
+
+.mws-wiki-card-content {
+ padding-left: 1em;
+}
+
+.mws-wiki-card-header {
+ font-size: 1.3em;
+ font-weight: bold;
+ margin: 0 0 0.25em 0;
+}
+
+.mws-wiki-card-meta {
+ color: <>;
+}
+
+.mws-wiki-card-description {
+
+}
+
+.mws-wiki-card-extra {
+
+}
+
+.mws-vertical-list {
+ list-style: none;
+ padding: 0;
+}
+
+.mws-horizontal-list {
+ list-style: none;
+ padding: 0;
+}
+
+.mws-horizontal-list > li {
+ display: inline-block;
+}
+
+.mws-bag-pill {
+ background: <>;
+ color: <>;
+ margin-right: 0.5em;
+ border-radius: 0.25em;
+ padding: 0 0.25em;
+}
+
+.mws-bag-pill-topmost {
+ background: <>;
+}
+
+.mws-bag-pill .mws-bag-pill-label {
+ margin-left: 0.5em;
+}
+
+.mws-favicon.tc-image-error, .mws-favicon-small.tc-image-error {
+ visibility: hidden;
+}
+
.mws-favicon {
- max-width: 2em;
- max-height: 2em;
+ max-width: 4em;
+ max-height: 4em;
+}
+
+.mws-favicon-small {
+ vertical-align: text-bottom;
+ max-width: 1em;
+ max-height: 1em;
}
\ No newline at end of file
diff --git a/plugins/tiddlywiki/multiwikiserver/modules/sql-tiddler-store.js b/plugins/tiddlywiki/multiwikiserver/modules/sql-tiddler-store.js
index 98b83ba69..11aa82848 100644
--- a/plugins/tiddlywiki/multiwikiserver/modules/sql-tiddler-store.js
+++ b/plugins/tiddlywiki/multiwikiserver/modules/sql-tiddler-store.js
@@ -57,7 +57,9 @@ SqlTiddlerStore.prototype.updateAdminWiki = function() {
title: "recipes/" + recipeInfo.recipe_name,
"recipe-name": recipeInfo.recipe_name,
text: "",
- list: $tw.utils.stringifyList(this.getRecipeBags(recipeInfo.recipe_name))
+ list: $tw.utils.stringifyList(this.getRecipeBags(recipeInfo.recipe_name).map(bag_name => {
+ return this.entityStateTiddlerPrefix + "bags/" + bag_name;
+ }))
});
}
};
@@ -113,7 +115,9 @@ SqlTiddlerStore.prototype.createRecipe = function(recipename,bagnames) {
title: "recipes/" + recipename,
"recipe-name": recipename,
text: "",
- list: $tw.utils.stringifyList(bagnames)
+ list: $tw.utils.stringifyList(bagnames.map(bag_name => {
+ return this.entityStateTiddlerPrefix + "bags/" + bag_name;
+ }))
});
};