RecentUsersTS
RecentUsersTSEdit

    Tabla de contenidos
    No hay encabezados
    var limit = $limit ?? $0 ?? 100;
    var sortby = $sortby ?? $1 ?? "-date.lastlogin";
    var slExclude = $exclude ?? $2 ?? null; //@himikel #add 2010/05/06 : Add Exclude User List
    var nRecentDays = $recdays ?? $3 ?? 0; //@himikel #add 2010/05/07 : Add Recent Days Filter
    //@himikel #add 2010/07/06 : Add Group selection
    var sGroup = $group ?? $4 ?? "";
    //@himikel #add 2010/07/06 : Add Users Home Url
    var sHomeUrl = $homeUrl ?? "";
    //@himikel #add 2010/08/23 : Minimun recent users
    var nMin = $min ?? 0;
    
    if ((sHomeUrl!="")&&(!String.EndsWith(sHomeUrl,"/")))
      let sHomeUrl..="/";
    var users_xml = wiki.api(site.api & 'users' & { sortby: sortby, limit: limit });
    var user_data = [ 
        { nick: xml.text(usr, 'nick'), lastlogin: xml.text(usr, 'date.lastlogin'),
          useruri: (wiki.getuser(xml.text(usr, 'nick')).uri), timezone: wiki.getuser(xml.text(usr, 'nick')).timezone,
          useravatar: (wiki.getpage('/User:'..xml.text(usr, 'nick')).files)['Avatar.jpg'].api,
          usergravatar: wiki.getuser(xml.text(usr, 'nick')).gravatar,
          //@himikel #add 2010/07/06 : Add Users Home Url
          userhome: (sHomeUrl!="" ? sHomeUrl..xml.text(usr, 'nick') : null)
        }
        foreach var usr in xml.select(users_xml, '/users/user')
    ];
    
    //@himikel #add 2010/07/06 : Add Group selection
    var slGroupUsers=null;
    if (sGroup!="")
    {
      var xGroupUsers=Wiki.Api(Uri.Build(site.api, ["groups", "="..sGroup, "users"] ));
      //Web.Pre(Json.Format(xGroupUsers));
      let slGroupUsers=[ Xml.Text(xUser, 'username') foreach var xUser in Xml.Select(xGroupUsers, '/users/user') ];
    }//if
    
    //@himikel #mod 2010/05/07 : Add Recent Days Filter
    //@himikel #add 2010/05/06 : Add Exclude User List
    var lmUsrData=null;
    if ((slExclude!=null)||(nRecentDays>0)||(sGroup!="")) {
      var dlLastLogin=List.Collect(user_data,"lastlogin");
      foreach (var sNick in List.Collect(user_data,"nick")) {
        if (sNick not in slExclude)
        {
          var bInclude=true;
          if (nRecentDays>0)
          {
            var dLastLogin=dlLastLogin[__index];
            var nDiffDays=Date.DiffDays(date.now,dLastLogin);
            if (nDiffDays>nRecentDays)
              let bInclude=false;
          }
          //@himikel #add 2010/07/06 : Add Group selection
          if ((sGroup!="")&&(sNick not in slGroupUsers))
              let bInclude=false;        
          //@himikel #mod 2010/08/23 : Minimun recent users
          if ((bInclude)||(#lmUsrData<nMin))
            let lmUsrData..=[user_data[__index]];
        }
      }
    }
    else
      let lmUsrData=user_data;
    
    TSTable {
        options: { zebra:true, width:"50%" },
        columns: [
            { key:"(web.image($.useravatar ?? $.usergravatar, 50, 50))", title:"Avatar", width:"%10", style:"text-align:center" },
            { key:"(web.link($.userhome ?? $.useruri,$.nick))", title:"Alias", width:"20%", initial: ((sortby=="nick") ? 0 : nil) },
            { key:"(date.format(date.ChangeTimezone($.lastlogin,$.timezone),'u'))", title:"Último login", width:"30%", initial: ((sortby=="-date.lastlogin") ? 1 : nil) }
        ],
        data: lmUsrData //@himikel #mod 2010/05/06 : Add Exclude User List
    }
    /*
            { key:"(wiki.getuser($.nick).id)", title:"Alias", width:"20%" }, 
    MindTouch.Deki.Script.DekiScriptInvokeException: function 'list.apply' failed ---> MindTouch.Deki.Script.DekiScriptUndefinedNameException: reference to undefined name 'wiki': line 1, column 2   
            { key:"(var n=$.nick; #n>0 ? wiki.getuser(n).id : 'kk2')", title:"Alias", width:"20%" },    
    */
    
    Etiquetas (Edit tags)
    • No tags
    Debe inicie sesión para enviar un comentario.