Web Script: org/alfresco/components/dashlets/my-sites.get
Generated from /share/service/script/org/alfresco/components/dashlets/my-sites.get on Jun 13, 2026 9:39:09 PM

Script Properties
Id:org/alfresco/components/dashlets/my-sites.get
Short Name:My Sites
Description:Component used to list sites a user belongs to
Authentication:none
Transaction:none
Method:GET
URL Template:/components/dashlets/my-sites
Format Style:any
Default Format:html
Negotiated Formats:[undefined]
Implementation:class org.alfresco.web.scripts.DeclarativeWebScript
Extensions:[undefined]

Store: classpath:alfresco/site-webscripts

File: org/alfresco/components/dashlets/my-sites.get.desc.xml
<webscript>
   <shortname>My Sites</shortname>
   <description>Component used to list sites a user belongs to</description>
   <family>user-dashlet</family>
   <url>/components/dashlets/my-sites</url>
</webscript>
File: org/alfresco/components/dashlets/my-sites.get.head.ftl
<!-- My Sites Assets -->
<link rel="stylesheet" type="text/css" href="${page.url.context}/components/dashlets/my-sites.css"/>
<script type="text/javascript" src="${page.url.context}/components/dashlets/my-sites.js"></script>
<link rel="stylesheet" type="text/css" href="${page.url.context}/modules/create-site.css"/>
<script type="text/javascript" src="${page.url.context}/modules/create-site.js"></script>
<link rel="stylesheet" type="text/css" href="${page.url.context}/modules/delete-site.css"/>
<script type="text/javascript" src="${page.url.context}/modules/delete-site.js"></script>
File: org/alfresco/components/dashlets/my-sites.get.html.ftl
<script type="text/javascript">//<![CDATA[
new Alfresco.MySites("${args.htmlid}").setOptions(
{
   sites: [
<#if sites??>
   <#list sites as site>
   {
      shortName: '${site.shortName?js_string}',
      title: '${site.title?js_string}',
      isFavourite: ${site.isFavourite?string},
      isSiteManager: ${site.isSiteManager?string}
   }<#if (site_has_next)>,</#if>
   </#list>
</#if>
   ]
}).setMessages(
   ${messages}
);
//]]></script>

<div class="dashlet my-sites">
   <div class="title">${msg("header.mySites")}</div>
   <div class="toolbar">
      <a href="#" id="${args.htmlid}-createSite-button" class="theme-color-1">${msg("link.createSite")}</a>
   </div>
   <div class="body scrollableList">
<#if sites??>
   <#list sites as site>
      <div id="${args.htmlid}-site-div-${site.shortName}" class="detail-list-item <#if site_index = 0>first-item<#elseif !site_has_next>last-item</#if>">
         <div>
            <div class="my-actions">
               <span id="${args.htmlid}-favourite-span-${site_index}" class="favourite <#if (site.isFavourite)>enabled</#if>" title="${msg("link.favouriteSite")}">&nbsp;</span>
            </div>
            <div class="site">
               <a href="${url.context}/page/site/${site.shortName}/dashboard" class="theme-color-1">${site.title?html}</a>
            </div>
            <div class="actions">
               <#if (site.isSiteManager)>
               <span id="${args.htmlid}-delete-span-${site_index}" class="delete" title="${msg("link.deleteSite")}">&nbsp;</span>
               </#if>
            </div>
         </div>
      <#if site.description?exists && site.description != "">
         <div class="description">${site.description?html}</div>
      <#else>
         <div class="clear"></div>
      </#if>
      </div>
   </#list>
<#else>
      <div class="detail-list-item first-item last-item">
         <span>${msg("label.noSites")}</span>
      </div>
</#if>
   </div>
</div>
File: org/alfresco/components/dashlets/my-sites.get.js
const PREF_FAVOURITE_SITES = "org.alfresco.share.sites.favourites";

function sortByTitle(site1, site2)
{
   return (site1.title > site2.title) ? 1 : (site1.title < site2.title) ? -1 : 0;
}

function main()
{
   // Call the repo for sites the user is a member of
   var result = remote.call("/api/people/" + stringUtils.urlEncode(user.name) + "/sites");
   if (result.status == 200)
   {
      var i, ii, j, jj;

      // Create javascript objects from the server response
      var sites = eval('(' + result + ')'), site, favourites = {}, managers;

      if (sites.length > 0)
      {
         // Sort the sites by title
         sites.sort(sortByTitle);

         // Call the repo for the user's favourite sites
         result = remote.call("/api/people/" + stringUtils.urlEncode(user.name) + "/preferences?pf=" + PREF_FAVOURITE_SITES);
         if (result.status == 200)
         {
            var prefs = eval('(' + result + ')');
            try
            {
               // Populate the favourites object literal for easy look-up later
               favourites = eval('(prefs.' + PREF_FAVOURITE_SITES + ')');
               if (typeof favourites != "object")
               {
                  favourites = {};
               }
            }
            catch (e)
            {
               
            }
         }

         for (i = 0, ii = sites.length; i < ii; i++)
         {
            site = sites[i];
            
            // Is current user a Site Manager for this site?
            site.isSiteManager = false;
            if (site.siteManagers)
            {
               managers = site.siteManagers;
               for (j = 0, jj = managers.length; j < jj; j++)
               {
                  if (managers[j] == user.name)
                  {
                     site.isSiteManager = true;
                     break;
                  }
               }
            }
            
            // Is this site a user favourite?
            site.isFavourite = !!(favourites[site.shortName]);
         }
      }

      // Prepare the model for the template
      model.sites = sites;
   }
}

main();
File: org/alfresco/components/dashlets/my-sites.get.properties
header.mySites=My Sites
link.createSite=Create Site
link.deleteSite=Delete
link.favouriteSite=Mark or unmark site as favourite 
label.noSites=No sites to display
message.siteFavourite.failure=The favourite-setting for the site could not be changed

Store: classpath:alfresco/webscripts

[No implementation files]