Telerik Forums
UI for ASP.NET AJAX Forum
2 answers
85 views
Hello,

Using the RadMenu client-side API (http://demos.telerik.com/aspnet-ajax/menu/examples/programming/clientsideapi/defaultcs.aspx) is it possible to open a RadMenuItem when a page loads?

Thanks,

Matt
Matt
Top achievements
Rank 1
 answered on 21 Jan 2011
3 answers
90 views

Hello,

I created a RadToolBar with version Q2 2008 and everything look great. I'm now upgrading our site to use version Q3 2010, and my RadToolBar now looks ugly. There are three main faults. (See attached screen shots)
1. A white bar has appeared when a button or drop down menu is highlighted.
2. Buttons that belong to a drop down do not show there images fully.
3. Buttons that belong to a drop down are highlighted in bars.

I've created a test site with a RadToolBar. I can change my reference of Telerik.Web.UI.dll from Q2 2008 to Q3 2010 to experience the differences quickly, which looks like:

 

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
  
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> 
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  
<head id="Head1" runat="server">
    <title>Toolbar Test</title>
</head>
<body>
    <form id="form1" runat="server">
        <telerik:RadScriptManager ID="ScriptManager1" runat="server" />
          
        <telerik:RadToolBar runat="server" id="MyBar" Orientation="Vertical"  >
            <Items>
                <telerik:RadToolBarDropDown runat="server" ImageUrl="~/Images/NewReceipt.jpg" 
                    Text="DropDown 0">
                    <Buttons>
                        <telerik:RadToolBarButton runat="server" 
                            ImageUrl="~/Images/ReceiptInternal.jpg" Text="Child Button 1" Height="58px">
                        </telerik:RadToolBarButton>
                        <telerik:RadToolBarButton runat="server" 
                            ImageUrl="~/Images/ReceiptExternal.jpg" Text="Child Button 2" Height="58px">
                        </telerik:RadToolBarButton>
                    </Buttons>
                </telerik:RadToolBarDropDown>
            </Items>
        </telerik:RadToolBar>    
    </form>
</body>
</html>

Can anyone help me to fix these faults?

 

Thanks,

Matt

Matt
Top achievements
Rank 1
 answered on 21 Jan 2011
1 answer
121 views
Hi all,

I have been using Telerik's tutorials on how to dynamically add docks to a dock zone. Inside of my dock is a chart which has drill-down capability. I do not seem to be doing something correctly, however. When the user interacts with the chart (it seems) that some of the dock's initially set properties are being forgotten.

Image: http://i.imgur.com/3Qrqn.png

The upper image is a freshly created dock zone. The second image is moments after the user clicked a series on the chart and 'drilled down.' I placed breakpoints throughout my code and it seems that the upper bar is disappearing before Page_Init is called.

In addition, if the user refreshes the page or grabs the dock and drags it, then allows it to drop back onto the dock zone, it resets to its initial state. The title bar becomes present again.

Here is the relevant code I have written:

protected void RadListBox_Dropped(object sender, RadListBoxDroppedEventArgs e)
{
    foreach( RadListBoxItem item in e.SourceDragItems)
    {
        RadDock dock = CreateRadDock();
        dock.Tag = item.Text;
        dock.Title = dock.Tag + CurrentDockStates.Count.ToString();
        RadDockZone1.Controls.Add(dock);
        CreateSaveStateTrigger(dock);
         
        LoadContent(dock);
    }
}

private RadDock CreateRadDock()
{
    RadDock dock = new RadDock();
    dock.DockMode = DockMode.Docked;
    dock.UniqueName = Guid.NewGuid().ToString().Replace("-", "a"); //Why am I replacing with 'a' here?
    dock.ID = string.Format("RadDock{0}", dock.UniqueName);
    dock.Title = "Dock";
    dock.Skin = RadDockLayout1.Skin;
    dock.Width = Unit.Pixel(200);
    dock.EnableRoundedCorners = true;
 
    return dock;
}

private void CreateSaveStateTrigger(RadDock dock)
{
    dock.AutoPostBack = true;
    dock.CommandsAutoPostBack = true;
 
    AsyncPostBackTrigger saveStateTrigger = new AsyncPostBackTrigger();
    saveStateTrigger.ControlID = dock.ID;
    saveStateTrigger.EventName = "DockPositionChanged";
    UpdatePanel1.Triggers.Add(saveStateTrigger);
 
    saveStateTrigger = new AsyncPostBackTrigger();
    saveStateTrigger.ControlID = dock.ID;
    saveStateTrigger.EventName = "Command";
    UpdatePanel1.Triggers.Add(saveStateTrigger);
}

private void LoadContent(RadDock dock)
{
    switch (dock.Tag)
    {
        case "Cat 5e Capacity":
            System.Web.UI.Control ctrl = Page.LoadControl("PowerUsage.ascx");
            dock.ContentContainer.Controls.Add(ctrl);
            break;
    }
}

RadDockLayout1_SaveDockLayout, LoadDockLayout, CurrentDockStates, CreateRadDockFromState are identical to those given in your examples. I believe the above should all be mostly identical, if not identical, as well. 

The only difference I can see between my example and http://demos.telerik.com/aspnet-ajax/dock/examples/myportal/defaultcs.aspx is that my example does not use a 2nd UpdatePanel. Instead, I am using the RadAjaxManager to refresh the view after a user has drag/dropped/created a dock. 

Does this seem correct? Can I provide more information?

Sean

EDIT: I see why the state of the graph reverts to its top level view. During page_init all the docks call LoadContent again to, in theory, reload the content they were displaying before. In practice, a user has navigated one level deep into the chart and then LoadContent is called -- this retrieves the top level of the chart, not one level deep. Any advice on how to handle this scenario would be much appreciated -- I do not see a great way of handling this.
Pero
Telerik team
 answered on 21 Jan 2011
2 answers
190 views
If I have created a multicolumn radcombobox, how do I access the secondary selected column values in the code behind?  I can't locate an example of this.

Thanks,
JC

John Cooney
Top achievements
Rank 1
 answered on 21 Jan 2011
5 answers
976 views
Hi,

I have a radGrid to which I add GridHyperlinkColumn at runtime. I need to pass Navigation urls to these which depends on the values of the other cells.

GridHyperLinkColumn column = (GridHyperLinkColumn)gridBoundColumns[j];
column.DataTextField = gridField.DataField;
column.HeaderText = gridField.HeaderText;
column.NavigateUrl = "accountview.aspx?id=<%# Eval(\"AccountID\") %>";

If I pass the NavigateUrl value as above it is taking as a string but not replacing Eval("AccountID") to the value in that cell.
How to achieve this functionality like this???

Thanks,
Mahesh





Iana Tsolova
Telerik team
 answered on 21 Jan 2011
1 answer
180 views
Hi,

I have a web application with multiple user controls. Each user control has a radgrid and gets loaded on-click of respective image buttons. For a certain user control, on-click of the image button, I call an async ajax jQuery pagemethod to populate a container class which I use later. So, on-click of the image button, the user control gets loaded and the pagemethod gets called. Now, the radgrid for that user control has virtual scrolling and when scrolled, it sends ajax request with AjaxRequestWithTarget. The issue is that, the earlier pagemethod call is blocking the ajax request. The ajax request is getting blocked till the time the async ajax  pagemethod completes its task.
Is there any way to overcome this issue ? I expect the ajax pagemethod to be async and shouldn't interfere with any other calls/requests and should run in the background.
Any help is appreciated.

Thanks!
Iana Tsolova
Telerik team
 answered on 21 Jan 2011
2 answers
59 views
I'm using the Advanced Form.  No problems with it.  Everything works fine.  Except...when the form comes up, only the controls and text load, and the form itself is actually clear (you can't see it).  What could I be doing wrong?  I can even click and drag the form around.  Please see attached screenshot.

It was actually working fine earlier.  The first time I saw this was when I uploaded it to the production server.  And then after I upgraded the project to the latest version, it started doing it locally too.
Adrian Barnes
Top achievements
Rank 1
 answered on 21 Jan 2011
6 answers
218 views
Hi,

I'm messing around with creating a dock page which has several selectable controls which you can add to a single dock. I got this working fine with session objects, but am struggling trying to move it to use cookies. Could you help?

The problem seems to be that it looses the controls from the dock after the postback. In the example I was using with sessions, there was some code in the page_load which recreated the docks, I'm not really sure how to do this from the information that is stored in the cookie. Should I be looking at serializing the dockstate dictionary, or recreating the docks from the cookie information? Heres the code I've got:

Thanks for any suggestions,
Lee.

It also uses a master page and a web user control, but these have nothing in them except some html to test with.

ASPX:

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" Title="Untitled Page" %>

<%@ Register src="WebUserControl.ascx" tagname="SampleWidget" tagprefix="uc1" %>

<%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>

    <div>
        <telerik:RadDockLayout ID="RadDockLayout1" runat="server"
            onsavedocklayout="RadDockLayout1_SaveDockLayout"
            onloaddocklayout="RadDockLayout1_LoadDockLayout" EnableEmbeddedSkins="False"
            EnableViewState="true" StoreLayoutInViewState="false">
               
           
            <telerik:RadDockZone ID="RadDockZone1" Runat="server" MinHeight="300px" Width="99%"
            style="float:left;" Orientation="Horizontal">
           
           
            </telerik:RadDockZone>
           
            <div style="display:none">
                Hidden UpdatePanel, which is used to receive the new dock controls.
                <asp:updatepanel runat="server" id="UpdatePanel1">
                </asp:updatepanel>
            </div>
           
        </telerik:RadDockLayout>
    </div>

    <div style="clear:both;"></div>
   
    <div>
       
        <asp:CheckBoxList runat="server" ID="checkboxlist">
            <asp:ListItem Value="~/WebUserControl.ascx|300" Enabled="true">Sample1</asp:ListItem>
            <asp:ListItem Value="~/WebUserControl.ascx|300" Enabled="true">Sample2</asp:ListItem>
            <asp:ListItem Value="~/WebUserControl.ascx|450" Enabled="true">Sample3</asp:ListItem>
        </asp:CheckBoxList>
       
       
        <asp:Button runat="server" ID="Button1" Text="Add Selected" OnClick="AddSelected_Click" />
    </div>

</asp:Content>

.CS:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Linq;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.Script.Serialization;
using System.Collections.Generic;
using System.Text;

using Telerik.Web.UI;

public partial class Default2 : System.Web.UI.Page
{
    private const string cookiename = "__example_website";

    protected void Page_Load()
    {

    }

    protected void RadDockLayout1_LoadDockLayout(object sender, DockLayoutEventArgs e)
    {
        HttpCookie positionsCookie = Request.Cookies[cookiename];
        if (!Object.Equals(positionsCookie, null))
        {
            string serializedPositionsAndIndices = positionsCookie.Value;
            if (!string.IsNullOrEmpty(serializedPositionsAndIndices))
            {
                JavaScriptSerializer serializer = new JavaScriptSerializer();
                string[] positionsAndIndices = serializer.Deserialize<string[]>(serializedPositionsAndIndices);
                e.Positions = serializer.Deserialize<Dictionary<string, string>>(positionsAndIndices[0]);
                e.Indices = serializer.Deserialize<Dictionary<string, int>>(positionsAndIndices[1]);
            }
        }
    }

    protected void RadDockLayout1_SaveDockLayout(object sender, DockLayoutEventArgs e)
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        string serializedPositions = serializer.Serialize(e.Positions);
        string serializedIndices = serializer.Serialize(e.Indices);

        HttpCookie positionsCookie = new HttpCookie(cookiename,
            serializer.Serialize(new string[] { serializedPositions, serializedIndices }));

        //Ensure that the cookie will not expire soon
        positionsCookie.Expires = DateTime.Now.AddYears(1);
        Response.Cookies.Add(positionsCookie);

    }

    private RadDock CreateRadDock(string controlpath, string title, int width)
    {
        RadDock dock = new RadDock();
        dock.UniqueName = Guid.NewGuid().ToString();
        dock.ID = string.Format("RadDock{0}", dock.UniqueName);
        dock.Title = title;
        Control control = LoadControl(controlpath);

        dock.ContentContainer.Controls.Add(control);
        dock.Width = Unit.Pixel(width);
        dock.DockMode = DockMode.Docked;

        dock.Commands.Add(new DockCloseCommand());
        dock.Commands.Add(new DockExpandCollapseCommand());
        dock.Command += new DockCommandEventHandler(dock_Command);

        return dock;
    }
    void dock_Command(object sender, DockCommandEventArgs e)
    {
        if (e.Command.Name == "Close")
        {
            ScriptManager.RegisterStartupScript(
            UpdatePanel1,
            this.GetType(),
            "RemoveDock",
            string.Format(@"function _removeDock() {{
                    Sys.Application.remove_load(_removeDock);
                    $find('{0}').undock();
                    $get('{1}').appendChild($get('{0}'));
                    $find('{0}').doPostBack('DockPositionChanged');
                    }};
                    Sys.Application.add_load(_removeDock);", ((RadDock)sender).ClientID, UpdatePanel1.ClientID),
                    true);
        }
    }
    private void CreateSaveStateTrigger(RadDock dock)
    {
        //Ensure that the RadDock control will initiate postback
        // when its position changes on the client or any of the commands is clicked.
        //Using the trigger we will "ajaxify" that postback.
        dock.AutoPostBack = true;
        dock.CommandsAutoPostBack = true;

        AsyncPostBackTrigger saveStateTrigger = new AsyncPostBackTrigger();
        saveStateTrigger.ControlID = dock.ID;
        saveStateTrigger.EventName = "DockPositionChanged";
        UpdatePanel1.Triggers.Add(saveStateTrigger);

        saveStateTrigger = new AsyncPostBackTrigger();
        saveStateTrigger.ControlID = dock.ID;
        saveStateTrigger.EventName = "Command";
        UpdatePanel1.Triggers.Add(saveStateTrigger);
    }

    protected void AddSelected_Click(Object sender, EventArgs e)
    {
        List<RadDock> add_docks = new List<RadDock>();
        List<RadDock> remove_docks = new List<RadDock>();

        foreach (ListItem li in checkboxlist.Items)
        {
            bool exists = RadDockZone1.Docks.Where(d => d.Title == li.Text).Count() > 0;
            if (li.Selected)
            {
                if (!exists)
                {
                    string[] values = li.Value.Split('|');
                    RadDock dock = CreateRadDock(values[0], li.Text, Int32.Parse(values[1]));

                    UpdatePanel1.ContentTemplateContainer.Controls.Add(dock);

                    add_docks.Add(dock);

                    CreateSaveStateTrigger(dock);
                }
            }
            else
            {
                if (exists)
                {
                    RadDock dock = RadDockZone1.Docks.FirstOrDefault(cds => cds.Title == li.Text);
                    remove_docks.Add(dock);
                }
            }
        }

        if (add_docks.Count > 0)
        {
            StringBuilder script = new StringBuilder();
            script.Append(@"function _addDock() {{");
            script.AppendLine();
            script.Append(@"Sys.Application.remove_load(_addDock); ");
            script.AppendLine();

            foreach (RadDock d in add_docks)
            {
                script.AppendFormat(@"$find('{0}').dock($find('{1}'));", RadDockZone1.ClientID, d.ClientID);
                script.AppendLine();
            }

            script.AppendFormat(@"$find('{0}').doPostBack('DockPositionChanged');", add_docks[0].ClientID);
            script.AppendLine();
            script.Append(@"}};");
            script.AppendLine();
            script.Append(@"Sys.Application.add_load(_addDock);");
            script.AppendLine();

            ScriptManager.RegisterStartupScript(
                this,
                this.GetType(),
                "AddDocks",
                script.ToString(),
                true);
        }
        if (remove_docks.Count > 0)
        {
            StringBuilder r_script = new StringBuilder();

            r_script.AppendLine(@"function _removeDock() {{");
            r_script.AppendLine("Sys.Application.remove_load(_removeDock);");

            foreach (RadDock d in remove_docks)
            {
                r_script.AppendFormat(@"$find('{0}').undock();", d.ClientID);
                r_script.AppendLine();
                r_script.AppendFormat(@"$get('{1}').appendChild($get('{0}'));", d.ClientID, UpdatePanel1.ClientID);
                r_script.AppendLine();

                // Close the raddock - to hide it in the updatepanel
                d.Closed = true;
            }

            r_script.AppendFormat(@"$find('{0}').doPostBack('DockPositionChanged');", remove_docks[0].ClientID);
            r_script.AppendLine();
            r_script.AppendLine(@"}};");
            r_script.AppendLine(@"Sys.Application.add_load(_removeDock);");

            ScriptManager.RegisterStartupScript(
                this,
                this.GetType(),
                "RemoveDocks",
                r_script.ToString(),
                true);
        }
    }
}

Pero
Telerik team
 answered on 21 Jan 2011
1 answer
180 views
Hi,

I have upgraded the RadEditor to the latest Telerik.Web.UI version and used the ToolsFile.xml to generate the toolbuttons.
The button IncreaseSize,DecreaseSize,ToggleDocking,RepeatLastCommand onclick give the message that it is not implemented.

Please suggest how to solve this.

Thanks In Advance.
Rumen
Telerik team
 answered on 21 Jan 2011
1 answer
479 views
I have one file server 2008 r2 and IIS 6.1 on it. I am trying to create a file server manager system using the file explorer control.

First thing that my web application is on the folder wwwroot/fileservermanager/ and 
I created a virtual directory under wwwroot/fileservermanager/ as wwwroot/fileservermanager/depo01/ 

/depo01/   is the D:/ of my physical drive and 

I am impersonating users as many ways and successfull 

<system.web>   
    <authentication mode="Windows"/>
        <identity impersonate="true"/>
<system.web/>

After publishing the web page I can impersonate the users and access the specific folders by file explorer and can perform upload, delete, create new folder operations but when i try Open the files I get the error 

Server Error in '/depo01' Application.


Configuration Error

Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately. 

Parser Error Message: An error occurred loading a configuration file: Failed to start monitoring changes to 'D:\teknik_as\web.config' because access is denied.

Source Error: 

[No relevant source lines]

Source File: D:\teknik_as\web.config    Line: 



I dont have a web.config file under D:\teknik_as\   because this is the File Server folder that I m trying to open the files 

Is there a way to show a virtual directory as a folder under the project folders without any problems ?

web.config file
<?xml version="1.0"?>
<configuration>
    <configSections>
    </configSections>
    <appSettings>
        <add key="Telerik.Skin" value="Windows7"/>
        <add key="Telerik.ScriptManager.TelerikCdn" value="Enabled"/>
        <add key="Telerik.StyleSheetManager.TelerikCdn" value="Enabled"/>
    </appSettings>
    <system.web>
        <compilation debug="true" targetFramework="4.0">
            <assemblies>
                <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
                <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                <add assembly="System.Speech, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies></compilation>
        <pages>
            <controls>
                <add tagPrefix="telerik" namespace="Telerik.Web.UI" assembly="Telerik.Web.UI" />
            </controls>
        </pages>
        <httpHandlers>
            <add path="ChartImage.axd" type="Telerik.Web.UI.ChartHttpHandler" verb="*" validate="false"/>
            <add path="Telerik.Web.UI.SpellCheckHandler.axd" type="Telerik.Web.UI.SpellCheckHandler" verb="*" validate="false"/>
            <add path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler" verb="*" validate="false"/>
            <add path="Telerik.RadUploadProgressHandler.ashx" type="Telerik.Web.UI.RadUploadProgressHandler" verb="*" validate="false"/>
            <add path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" validate="false"/>
        </httpHandlers>
        <httpModules>
            <add name="RadUploadModule" type="Telerik.Web.UI.RadUploadHttpModule"/>
            <add name="RadCompression" type="Telerik.Web.UI.RadCompression"/>
        </httpModules>
        <httpRuntime maxRequestLength="102400" executionTimeout="3600"/>
        <authentication mode="Windows">
        </authentication>
    <identity impersonate="true"/>
    </system.web>
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
    <location path="FileExpl">
        <system.web>
            <authorization>
                <deny users="?"/>
            </authorization>
        </system.web>
    </location>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
        <modules runAllManagedModulesForAllRequests="true">
            <remove name="RadUploadModule"/>
            <add name="RadUploadModule" type="Telerik.Web.UI.RadUploadHttpModule" preCondition="integratedMode"/>
            <remove name="RadCompression"/>
            <add name="RadCompression" type="Telerik.Web.UI.RadCompression" preCondition="integratedMode"/>
        </modules>
        <handlers>
            <remove name="ChartImage_axd"/>
            <add name="ChartImage_axd" path="ChartImage.axd" type="Telerik.Web.UI.ChartHttpHandler" verb="*" preCondition="integratedMode"/>
            <remove name="Telerik_Web_UI_SpellCheckHandler_axd"/>
            <add name="Telerik_Web_UI_SpellCheckHandler_axd" path="Telerik.Web.UI.SpellCheckHandler.axd" type="Telerik.Web.UI.SpellCheckHandler" verb="*" preCondition="integratedMode"/>
            <remove name="Telerik_Web_UI_DialogHandler_aspx"/>
            <add name="Telerik_Web_UI_DialogHandler_aspx" path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler" verb="*" preCondition="integratedMode"/>
            <remove name="Telerik_RadUploadProgressHandler_ashx"/>
            <add name="Telerik_RadUploadProgressHandler_ashx" path="Telerik.RadUploadProgressHandler.ashx" type="Telerik.Web.UI.RadUploadProgressHandler" verb="*" preCondition="integratedMode"/>
            <remove name="Telerik_Web_UI_WebResource_axd"/>
            <add name="Telerik_Web_UI_WebResource_axd" path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" preCondition="integratedMode"/>
        </handlers>
        <security>
            <requestFiltering>
                <requestLimits maxAllowedContentLength="104857600"/>
            </requestFiltering>
        </security>
    </system.webServer>
    <system.serviceModel>
        <bindings />
        <client />
    </system.serviceModel>
</configuration>


file explorer viewpaths 

RadFileExplorer1.InitialPath = Page.ResolveUrl("~/depo01/TEKNIK_AS/");
 
String paths = Page.ResolveUrl("~/depo01/TEKNIK_AS/");
 
RadFileExplorer1.Configuration.ViewPaths = new String[] { paths };
RadFileExplorer1.Configuration.DeletePaths = new String[] { paths };
RadFileExplorer1.Configuration.UploadPaths = new String[] { paths };
  
/depo01/ is the virtual path, and I need help pls!
Chief
Top achievements
Rank 1
 answered on 21 Jan 2011
Narrow your results
Selected tags
Tags
+? more
Top users last month
Rob
Top achievements
Rank 3
Bronze
Bronze
Iron
Sergii
Top achievements
Rank 1
Iron
Iron
Dedalus
Top achievements
Rank 1
Iron
Iron
Lan
Top achievements
Rank 1
Iron
Doug
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Top users last month
Rob
Top achievements
Rank 3
Bronze
Bronze
Iron
Sergii
Top achievements
Rank 1
Iron
Iron
Dedalus
Top achievements
Rank 1
Iron
Iron
Lan
Top achievements
Rank 1
Iron
Doug
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?