Telerik Forums
UI for ASP.NET AJAX Forum
3 answers
483 views

Hi,

I'm starting to profile my site locally (using http://www.prefix.io/) and I see the following exceptions that I can't seem to control:

Telerik.Web.UI.InsecureExternalStyleSheetException: empty string
  at Telerik.Web.UI.ExternalScriptHelper.ResolveSecurePath
  at Telerik.Web.UI.RadScriptManager.OnResolveScriptReference

System.ArgumentException: Illegal characters in path.
  at System.IO.Path.CheckInvalidPathChars
  at System.Security.Permissions.FileIOPermission.QuickDemand
  at System.IO.Path.GetFullPath
  at System.Web.Util.FileUtil.IsSuspiciousPhysicalPath
  at System.IO.Path.CheckInvalidPathChars
  at System.Security.Permissions.FileIOPermission.CheckIllegalCharacters
  at System.Security.Permissions.FileIOPermission.AddPathList
  at System.Security.Permissions.FileIOPermission..ctor
  at System.Web.InternalSecurityPermissions.PathDiscovery
  at System.Web.HttpRequest.MapPath
  at System.Web.HttpServerUtility.MapPath
  at Telerik.Web.UI.ExternalScriptHelper.ResolveSecurePath
  at Telerik.Web.UI.RadScriptManager.OnResolveScriptReference
  at System.IO.Path.CheckInvalidPathChars
  at System.Security.Permissions.FileIOPermission.QuickDemand
  at System.IO.Path.GetFullPath
  at System.Web.Util.FileUtil.IsSuspiciousPhysicalPath
  at System.IO.Path.CheckInvalidPathChars
  at System.Security.Permissions.FileIOPermission.CheckIllegalCharacters
  at System.Security.Permissions.FileIOPermission.AddPathList
  at System.Security.Permissions.FileIOPermission..ctor
  at System.Web.InternalSecurityPermissions.PathDiscovery
  at System.Web.HttpRequest.MapPath
  at System.Web.HttpServerUtility.MapPath
  at Telerik.Web.UI.ExternalScriptHelper.ResolveSecurePath
  at Telerik.Web.UI.RadScriptManager.OnResolveScriptReference
  at System.IO.Path.CheckInvalidPathChars
  at System.Security.Permissions.FileIOPermission.QuickDemand
  at System.IO.Path.GetFullPath
  at System.Web.Util.FileUtil.IsSuspiciousPhysicalPath
  at System.IO.Path.CheckInvalidPathChars
  at System.Security.Permissions.FileIOPermission.CheckIllegalCharacters
  at System.Security.Permissions.FileIOPermission.AddPathList
  at System.Security.Permissions.FileIOPermission..ctor
  at System.Web.InternalSecurityPermissions.PathDiscovery
  at System.Web.HttpRequest.MapPath
  at System.Web.HttpServerUtility.MapPath
  at Telerik.Web.UI.ExternalScriptHelper.ResolveSecurePath
  at Telerik.Web.UI.RadScriptManager.OnResolveScriptReference
  at System.IO.Path.CheckInvalidPathChars
  at System.Security.Permissions.FileIOPermission.QuickDemand
  at System.IO.Path.GetFullPath
  at System.Web.Util.FileUtil.IsSuspiciousPhysicalPath
  at System.IO.Path.CheckInvalidPathChars
  at System.Security.Permissions.FileIOPermission.CheckIllegalCharacters
  at System.Security.Permissions.FileIOPermission.AddPathList
  at System.Security.Permissions.FileIOPermission..ctor
  at System.Web.InternalSecurityPermissions.PathDiscovery
  at System.Web.HttpRequest.MapPath
  at System.Web.HttpServerUtility.MapPath
  at Telerik.Web.UI.ExternalScriptHelper.ResolveSecurePath
  at Telerik.Web.UI.RadScriptManager.OnResolveScriptReference
  at System.IO.Path.CheckInvalidPathChars
  at System.Security.Permissions.FileIOPermission.QuickDemand
  at System.IO.Path.GetFullPath
  at System.Web.Util.FileUtil.IsSuspiciousPhysicalPath
  at System.IO.Path.CheckInvalidPathChars
  at System.Security.Permissions.FileIOPermission.CheckIllegalCharacters
  at System.Security.Permissions.FileIOPermission.AddPathList
  at System.Security.Permissions.FileIOPermission..ctor
  at System.Web.InternalSecurityPermissions.PathDiscovery
  at System.Web.HttpRequest.MapPath
  at System.Web.HttpServerUtility.MapPath
  at Telerik.Web.UI.ExternalScriptHelper.ResolveSecurePath
  at Telerik.Web.UI.RadScriptManager.OnResolveScriptReference
  at System.IO.Path.CheckInvalidPathChars
  at System.Security.Permissions.FileIOPermission.QuickDemand
  at System.IO.Path.GetFullPath
  at System.Web.Util.FileUtil.IsSuspiciousPhysicalPath
  at System.IO.Path.CheckInvalidPathChars
  at System.Security.Permissions.FileIOPermission.CheckIllegalCharacters
  at System.Security.Permissions.FileIOPermission.AddPathList
  at System.Security.Permissions.FileIOPermission..ctor
  at System.Web.InternalSecurityPermissions.PathDiscovery
  at System.Web.HttpRequest.MapPath
  at System.Web.HttpServerUtility.MapPath
  at Telerik.Web.UI.ExternalScriptHelper.ResolveSecurePath
  at Telerik.Web.UI.RadScriptManager.OnResolveScriptReference
  at System.IO.Path.CheckInvalidPathChars
  at System.Security.Permissions.FileIOPermission.QuickDemand
  at System.IO.Path.GetFullPath
  at System.Web.Util.FileUtil.IsSuspiciousPhysicalPath
  at System.IO.Path.CheckInvalidPathChars
  at System.Security.Permissions.FileIOPermission.CheckIllegalCharacters
  at System.Security.Permissions.FileIOPermission.AddPathList
  at System.Security.Permissions.FileIOPermission..ctor
  at System.Web.InternalSecurityPermissions.PathDiscovery
  at System.Web.HttpRequest.MapPath
  at System.Web.HttpServerUtility.MapPath
  at Telerik.Web.UI.ExternalScriptHelper.ResolveSecurePath
  at Telerik.Web.UI.RadScriptManager.OnResolveScriptReference
  at System.IO.Path.CheckInvalidPathChars
  at System.Security.Permissions.FileIOPermission.QuickDemand
  at System.IO.Path.GetFullPath
  at System.Web.Util.FileUtil.IsSuspiciousPhysicalPath
  at System.IO.Path.CheckInvalidPathChars
  at System.Security.Permissions.FileIOPermission.CheckIllegalCharacters
  at System.Security.Permissions.FileIOPermission.AddPathList
  at System.Security.Permissions.FileIOPermission..ctor
  at System.Web.InternalSecurityPermissions.PathDiscovery
  at System.Web.HttpRequest.MapPath
  at System.Web.HttpServerUtility.MapPath
  at Telerik.Web.UI.ExternalScriptHelper.ResolveSecurePath
  at Telerik.Web.UI.RadScriptManager.OnResolveScriptReference
  at System.IO.Path.CheckInvalidPathChars
  at System.Security.Permissions.FileIOPermission.QuickDemand
  at System.IO.Path.GetFullPath
  at System.Web.Util.FileUtil.IsSuspiciousPhysicalPath
  at System.IO.Path.CheckInvalidPathChars
  at System.Security.Permissions.FileIOPermission.CheckIllegalCharacters
  at System.Security.Permissions.FileIOPermission.AddPathList
  at System.Security.Permissions.FileIOPermission..ctor
  at System.Web.InternalSecurityPermissions.PathDiscovery
  at System.Web.HttpRequest.MapPath
  at System.Web.HttpServerUtility.MapPath
  at Telerik.Web.UI.ExternalScriptHelper.ResolveSecurePath
  at Telerik.Web.UI.RadScriptManager.OnResolveScriptReference

I can't seem to actually catch this exception during run time (debugging with all exceptions turned on), nor do I see any way to ignore/stop that exception from being used. Any ideas?

Hristo Valyavicharski
Telerik team
 answered on 13 Apr 2016
3 answers
170 views
I have a rad grid inside there are two numeric textbox and if i change the value of numeric text box it will update the other one as per entered valued. I have applied the tabbing on ItemDatabound command like below:


                Dim currentPageeindex As Integer = rgPremiumAllocationPlan.CurrentPageIndex * (e.Item.ItemIndex + 1)
                TryCast(item.FindControl("rtbAllocPercentPAP"), RadNumericTextBox).TabIndex = CShort(currentPageeindex)
                TryCast(item.FindControl("rtbAllocPremiumPAP"), RadNumericTextBox).TabIndex = CShort(currentPageeindex)
                TryCast(item.FindControl("lnkRemove"), LinkButton).TabIndex = CShort(currentPageeindex)


I have applied a blur event on a numeric textbox like below:
 Dim scriptUpdateAmountDue = "updatePremiumAllocationAmountDue(" + Convert.ToString(currentRowIndex) + "," + txtPercentId + "," + txtPremiumId + "," + lnkButtonId + ")"
                rtbAllocPercentPremium.Attributes.Add("onblur ", scriptUpdateAmountDue)

On blur event below javascript funtion updatePremiumAllocationAmountDue is called:
function updatePremiumAllocationAmountDue(currentRowIndex, txtPercentId, txtPremiumAmountId, lnkButtonId) {
    window.ignoreMessage = false;

    if (calledDueToPremiumAllocation == true) {
        calledDueToPremiumAllocation = false;
        return false;
    }

    var rtbAllocPercentPAP = $("input[id$='" + txtPercentId.id + "']");
    var premiumPercent = rtbAllocPercentPAP.val().replace(/,/g, '');

    if (premiumPercent == '') {
        premiumPercent = 0;
        rtbAllocPercentPAP.val(0);
    }
    calledDueToPremiumAllocation = true;
    if (parseFloat(premiumPercent) > 100) {
        alert('Alloc. % value cannot be greater than 100%.');
        rtbAllocPercentPAP.focus();
        calledDueToPremiumAllocation = true;
        return false;
    }
    else {
        $("input[id$='hdnPAPValidate']").val("0");
        if (parseFloat(rtbAllocPercentPAP[0].defaultValue) != parseFloat(premiumPercent)) {
            calledDueToPremiumAllocation = false;


            if (parseFloat(premiumPercent) == parseFloat($("input[id$='hdnAllocPercentValue']").val())) {
                calledDueToPremiumAllocation = false;
                return false;
            }


            $("input[id$='hdnPapRowIndex']").val(currentRowIndex.toString());
            //$("input[id$='hdnAllocPercentValue']").val(rtbAllocPercentPAP.val());

            if ($("input[id$='hdnAllocPercentValue']").val() != "$" && parseFloat(premiumPercent) <= 100) {
                calledDueToPremiumAllocation = false;
                //        var pos2 = 0;
                //        pos2 = premiumPercent.indexOf('.');
                //        if (pos2 > 0) {
                //            pos2 = pos2 + 5;
                //            premiumPercent = premiumPercent.substring(0, pos2);
                //        }

                $("input[id$='hdnAllocPercentValue']").val(premiumPercent);
                $("input[id$='btnAllocPercentPAP']").click();

//                $("input[id$='" + txtPremiumAmountId.id + "']").focus();
//                $("input[id$='rtbAllocPremiumPAP']").focus();
            }


            calledDueToPremiumAllocation = false;
        }
        else {

            validatePremiumAllocationGridAllPercentItems();
        }
    }
}



From above Javascript funtion a button event click event is called: $("input[id$='btnAllocPercentPAP']").click();

Protected Sub BtnAllocPercentPap_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAllocPercentPAP.Click

        Dim allocPercentValue As Decimal
        Dim allocPremiumValue As Decimal
        ulErrorMessagePAP.InnerHtml = String.Empty

        Try

            If TypeOf sender Is Button Then

                Dim rowIndex As Integer = Convert.ToInt32(hdnPapRowIndex.Value)
                Try

                    '      hdnPremiumFooterTotalAmountDue.Value = InvoiceDetailsData.Premiums.Compute _
                    '("Sum(" + InvoiceDetailsData.Premiums.AmountDueUIColumn. _
                    ' ColumnName + ")", PolicyInfoConstants.premiumAllocationFilterRowNotDeleted)
                    If (InvoiceDetailsData IsNot Nothing AndAlso InvoiceDetailsData.Premiums IsNot Nothing AndAlso InvoiceDetailsData.Premiums.Rows.Count > 0) Then

                        hdnPremiumFooterTotalAmountDue.Value = (From drow As DataRow In InvoiceDetailsData.Premiums Where _
                                                    drow.RowState <> DataRowState.Deleted AndAlso _
                                                    drow(InvoiceDetailsData.Premiums.RowStateColumn.ColumnName) <> "Deleted" AndAlso Not _
                                                    IsDBNull(drow(InvoiceDetailsData.Premiums.AmountDueUIColumn.ColumnName))). _
                                                    Sum(Function(drow) CType(drow(InvoiceDetailsData.Premiums.AmountDueUIColumn.ColumnName).ToString(), Decimal))

                    Else

                        hdnPremiumFooterTotalAmountDue.Value = "0"

                    End If

                Catch ex As Exception
                    hdnPremiumFooterTotalAmountDue.Value = "0"
                End Try


                Dim rgpremiumAllocationPapItem As GridDataItem = rgPremiumAllocationPlan.MasterTableView.Items.Item(rowIndex)
                'NE-3368
                Dim premiumAllocationKeyDataColumn As RadNumericTextBox = DirectCast(rgpremiumAllocationPapItem.FindControl("hdnPremiumAllocationkeyDataColumn"),  _
                    RadNumericTextBox)
                'NE-3412
                Dim invoiceDetailDatasetRow As DataRow = _
                    InvoiceDetailsData.PremiumAllocation.Rows.Find(DirectCast(rgpremiumAllocationPapItem.FindControl("hdnPremiumAllocationkeyDataColumn"), RadNumericTextBox).Text)

                Dim keyValue As Integer = -1
                If (invoiceDetailDatasetRow IsNot Nothing) Then
                    keyValue = (From row In InvoiceDetailsData.PremiumAllocation.AsEnumerable() _
                                Let r = row.Field(Of Integer)(InvoiceDetailsData.PremiumAllocation.PremiumAllocationkeyDataColumn.ColumnName) _
                               Where r = invoiceDetailDatasetRow(InvoiceDetailsData.PremiumAllocation.PremiumAllocationkeyDataColumn.ColumnName) _
                               Select InvoiceDetailsData.PremiumAllocation.Rows.IndexOf(row)).FirstOrDefault()
                    'invoiceDetailDatasetRow(InvoiceDetailsData.PremiumAllocation.PremiumAllocationkeyDataColumn.ColumnName)
                End If
                'NE-3412
                'NE-3368
                Dim rtbAllocPercentPap As RadNumericTextBox = DirectCast(rgpremiumAllocationPapItem.FindControl("rtbAllocPercentPAP"),  _
                  RadNumericTextBox)
                Dim rtbAllocPremiumPap As RadNumericTextBox = DirectCast(rgpremiumAllocationPapItem.FindControl("rtbAllocPremiumPap"),  _
                   RadNumericTextBox)
                'Dim rtbAllocPercentPap As RadNumericTextBox = DirectCast(sender,  _
                '    RadNumericTextBox)
                'Dim rgpremiumAllocationPapItem As GridItem = _
                '    DirectCast(rtbAllocPercentPap.NamingContainer, GridItem)
                'Dim rtbAllocPremiumPap As RadNumericTextBox = DirectCast( _
                '    rgpremiumAllocationPapItem.FindControl("rtbAllocPremiumPAP"),  _
                '    RadNumericTextBox)
                'NE-3412
                'InvoiceDetailsData.PremiumAllocation.DefaultView.RowFilter = PolicyInfoConstants.premiumAllocationFilterRowNotDeleted
                InvoiceDetailsData.PremiumAllocation.DefaultView.RowFilter = String.Empty
                'NE-3412

                If Not String.IsNullOrEmpty(Server.HtmlEncode(hdnAllocPercentValue.Value)) Then

                    allocPercentValue = _
                        Convert.ToDecimal(Server.HtmlEncode(hdnAllocPercentValue.Value))
                    allocPercentValue = ParsingHelper.RoundDecimal(allocPercentValue, 4)

                    If (allocPercentValue > 100) Then
                        rtbAllocPercentPap.Text = 100
                        allocPercentValue = 100

                    End If

                    If Not String.IsNullOrEmpty(hdnPremiumFooterTotalAmountDue.Value) Then

                        allocPremiumValue = (((Convert.ToDecimal(hdnPremiumFooterTotalAmountDue.Value)) * allocPercentValue) / 100)
                        allocPremiumValue = ParsingHelper.RoundDecimal(allocPremiumValue, 2)

                        InvoiceDetailsData.PremiumAllocation. _
                        DefaultView(keyValue).Row("AllocPremiumAmount") = _
                                   Convert.ToString(allocPremiumValue)

                        InvoiceDetailsData.PremiumAllocation.DefaultView _
                            (keyValue). _
                            Row("AllocationPercentage") = allocPercentValue

                        InvoiceDetailsData.PremiumAllocation.DefaultView( _
                            keyValue). _
                        Row("PolicyID") = PolicyID

                        allocPremiumValue = ((Convert.ToDecimal(hdnPremiumFooterTotalAmountDue.Value)) * _
                              allocPercentValue) / 100
                        allocPremiumValue = ParsingHelper.RoundDecimal(allocPremiumValue, 2)
                        rtbAllocPremiumPap.Text = Convert.ToString _
                            (allocPremiumValue)


                        If IsPlanSelected() Then
                            lnkAddNewAllocationPlan.Enabled = False
                            _isPremiumPlanAllocationGridInEditMode = True
                        End If


                    End If
                Else

                    InvoiceDetailsData.PremiumAllocation.DefaultView(keyValue)("AllocPremiumAmount") = 0
                    InvoiceDetailsData.PremiumAllocation.DefaultView _
                            (keyValue). _
                            Row("AllocationPercentage") = 0


                End If

                If (InvoiceDetailsData.PremiumAllocation.DefaultView(keyValue) _
                           (InvoiceDetailsData.PremiumAllocation.RowStateColumn.ColumnName) = _
                           PolicyInfoConstants.addedRow) Then
                    InvoiceDetailsData.PremiumAllocation.DefaultView _
                        (keyValue) _
                        (InvoiceDetailsData. _
                         PremiumAllocation.RowStateColumn. _
                         ColumnName) = PolicyInfoConstants.addedRow

                Else

                    InvoiceDetailsData.PremiumAllocation.DefaultView( _
                        keyValue) _
                        (InvoiceDetailsData. _
                         PremiumAllocation.RowStateColumn. _
                         ColumnName) = PolicyInfoConstants.modifiedRow
                End If
                'NE-3412
                InvoiceDetailsData.PremiumAllocation.DefaultView.RowFilter = PolicyInfoConstants.premiumAllocationFilterRowNotDeleted
                'NE-3412
                PolicyInfoBO.AddUpdateCacheSerializeObject(_policyInfoDataKey, _
                                                       InvoiceDetailsData, True)

                BindPremiumAllocationPlan()
                rgPremiumAllocationPlan.Rebind()
                hdnAllocPercentValue.Value = "$"

            End If

        Catch ex As Exception

        End Try

    End Sub




Now the problem is that when i enter a amount a amout in a textbox and do tab out it focus on next numeric textbox but then auto btn event is called and after completion of this event it get lost. Please refer screent shot 1. In this if i enter value of a row of Alloc. % and do the tab, when the loader apprear on the screen it sets the focus on the corresponding Alloc.Prem but when the postback operation gets completed and loader gets removed the focus gets lost automatically.

Any suggesstion will be helpful.
Phil
Top achievements
Rank 1
 answered on 12 Apr 2016
4 answers
111 views

Sometimes i would like to update control without displaying spinning icon

Is there a way?

 

Thank you

David
Top achievements
Rank 1
Iron
Iron
Veteran
 answered on 12 Apr 2016
1 answer
107 views
We are going to be moving all of the Telerik controls to lightweight mode and I would like to know if this is supported by all controls. If not is there a list of what is supported.
Pavlina
Telerik team
 answered on 12 Apr 2016
1 answer
76 views

Hi,

is it possible to make one click (on left pane, tree view) to open containing structure of files on right grid pane  but not expanding the tree on left

and make double click to expand the tree on left pane without listing anything yet on right grid? (something like in window's explorer)

thanks

Vessy
Telerik team
 answered on 12 Apr 2016
1 answer
38 views

How remove the gridlines in RadFileExplorer?

Using Skin="Office2007"

Vessy
Telerik team
 answered on 12 Apr 2016
2 answers
154 views
Hi..
I have a template that I'm generating in code. How do add Vertical and Horizontal scrolling to the bound column?


  boundColumn = new GridBoundColumn();
            boundColumn.DataField = "Title";
            boundColumn.HeaderText = "Department Title";
            boundColumn.UniqueName = "Title";
            boundColumn.ItemStyle.Width = Unit.Pixel(250);
            boundColumn.HeaderStyle.Width = Unit.Pixel(150);
            
            gridActivity.MasterTableView.Columns.Add(boundColumn);
Jonathan
Top achievements
Rank 1
Iron
Veteran
 answered on 12 Apr 2016
1 answer
52 views
In telerik:RadEditor the below editor tool controls are getting freezed at times and become unusable.

<telerik:EditorToolGroup>
  <telerik:EditorTool Name="FormatBlock" />
  <telerik:EditorTool Name="FontName" />
  <telerik:EditorTool Name="RealFontSize" />
  <telerik:EditorTool Name="Zoom" />
</telerik:EditorToolGroup>

Kindly suggest the solution to get rid of this issue.

Telerik Web UI component version: 2015.1.310.40
Vessy
Telerik team
 answered on 12 Apr 2016
1 answer
92 views

I have one scenario where the Telerik RAD gridview has 2 rows.

Gridview having data as like I have mentioned below.
COLUMN1            COLUMN2            COLUMN3          COLUMN4               COLUMN5               COLUMN6
      a                          b                    TEXTBOX1          TEXTBOX2               TEXTBOX3               TEXTBOX4

      a                          b                    TEXTBOX5          TEXTBOX6               TEXTBOX7               TEXTBOX8

COLUMN 3 to COLUMN 6 having texbox where the values are entered by the user
The user enters a value for TEXBOX1, TEXBOX2, TEXBOX3, TEXBOX4, TEXBOX5, TEXBOX6, TEXBOX7, TEXBOX8

COLUMN 1 and COLUMN 2 of ROW 1 and ROW 2 will have the same value as mentioned.

I need to know how to add a new row in the grid if the button is clicked

And the entered value should not get affected. It should be present.
The new row should be added with COLUMN1 and COLUMN 2 having same name as that of the ROW 1 and ROW 2
After clicking on the button the new row should be like below

COLUMN1            COLUMN2            COLUMN3          COLUMN4               COLUMN5               COLUMN6
      a                          b                    TEXTBOX1          TEXTBOX2               TEXTBOX3               TEXTBOX4

      a                          b                    TEXTBOX5          TEXTBOX6               TEXTBOX7               TEXTBOX8

      a                          b                    TEXTBOX9          TEXTBOX10             TEXTBOX11             TEXTBOX12
When the new row is added the user entered value for TEXBOX1, TEXBOX2, TEXBOX3, TEXBOX4, TEXBOX5, TEXBOX6, TEXBOX7, TEXBOX8 should not get changed or should not get changed.

TEXTBOX9, TEXTBOX10, TEXTBOX11, TEXTBOX12 should be empty for entering value.

Even if the user clicks again the button the old rows should not get affected.
I want to know how to code for this in VB.NET since I am using telerik rad gridview

Viktor Tachev
Telerik team
 answered on 12 Apr 2016
2 answers
161 views

I have one scenario where the gridview has 2 rows like what i have attached.

Gridview having data as like I have mentioned in the file.

COLUMN 3 to COLUMN 6 having texbox where the values are entered by the user

COLUMN 1 and COLUMN 2 of ROW 1 and ROW 2 will have the same value as mentioned.

I need to know how to add a new row in the grid if the button is clicked

And the entered value should not get affected. It should be present.

The new row should be added with COLUMN1 and COLUMN 2 having same name as that of the ROW 1 and ROW 2

Even if the user clicks again the button the old rows should not get affected.

 

 

 

Viktor Tachev
Telerik team
 answered on 12 Apr 2016
Narrow your results
Selected tags
Tags
+? more
Top users last month
Will
Top achievements
Rank 2
Iron
Motti
Top achievements
Rank 1
Iron
Hester
Top achievements
Rank 1
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Thomas
Top achievements
Rank 2
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Will
Top achievements
Rank 2
Iron
Motti
Top achievements
Rank 1
Iron
Hester
Top achievements
Rank 1
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Thomas
Top achievements
Rank 2
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?