We have a StoreFront set up, in which User Subscriptions are disabled and so every application is subscribed to a user. Our applications are defined in folders in the XenDesktop site for ease of finding the applications. The folders were added after we discovered that everything was just chucked together in one big group in the StoreFront – which made finding applications for users difficult. This gave us a StoreFront that looked something like this when a user logged in
Feedback from our users was that, although this layout was better, it would be even better if all applications were grouped but available from the home page. So, with a little JavaScript tweaking, we ended up with this:
Each group is shown as a level, and subfolders were shown as further nested levels.
Below are the details of how we did it. I must stress that this is not a supported Citrix change, but certainly worked for us.
All changes are made on the StoreFront server.
- Take a backup of the file C:\inetpub\wwwroot\Citrix\StoreName\scripts\Default.htm.script.min.js
- Open the file, and use http://jsbeautifier.org/ to convert it into something more readable and paste the results back into the file.
- Search for the following function. In my file it was on line 7366
_generateItemsMarkup: function() {
var b = this;
var d = "";
var c = b._getBranch(b.options.currentPath);
for (var e in c.folders) {
d += b._generateFolderHtml(e, c.folders[e])
}
a.each(c.apps, function(f, g) {
d += b._generateAppHtml(g)
});
return d
},
- Replace it with this:
_generateItemsMarkup: function() {
var b = this;
var d = "";
var c = b._getBranch(b.options.currentPath);
a.each(c.apps, function(f, g) {
d += b._generateAppHtml(g)
});
for (var e in c.folders) {
d += b._listFolders(b.options.currentPath + '/' + e)
}
return d
},
_listFolders: function(y) {
var b = this;
var d = "";
d += '<div id="app-directory-path"><div><ul>'
d += b._generateBreadcrumbMarkup(y.substring(5).split("/"));
d += '</ul></div></div>'
var x = b._getBranch(y);
d += '<div id="myapps-container">'
a.each(x.apps, function(f, g) { d += b._generateAppHtml(g) });
for (var f in x.folders) { d += b._listFolders(y + '/' + f) }
d += '</div>'
return d
},
- Save the updated file and copy to all StoreFront servers in the deployment.
No reboot necessary. Change will take effect the next time that the StoreFront is refreshed from a client.
Were you able to get folder view configured for mandatory subscriptions in the local receiver? If so, how? I followed your steps above and it does not work for the local receiver (non-web).
Hi, unfortunately not. It only seems to work with the web interface.