Telerik Forums
UI for ASP.NET AJAX Forum
1 answer
194 views
Hello,

I read already that there are IE9 issues. I will wait for some hotfix, but here is my code that causes problems in IE9 and the editor. Might help you with the debugging.

Below you will ind my Aspx page, Code-behind and the content file I load into the editor.

Scenario: Click a treeview node to load content into editor. In the content (see below) in the 2nd paragraph (indicated by 2nd bold line) when you try to select text a few lines below that bold part, it won't select anything. And when you click a few times, the editor puts cursor at the bottom and scrolls down. I disabled my timer (auto save) but that didnt help.

Ways to prevent:
  1. Use meta tag to force IE8 mode
  2. Use different browser
  3. Put editor in fullscreen mode (F11)

I hope this info helps you track down the problems :-)

Meta would be :

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />

Aspx file

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %>
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head runat="server">
    <title>HezelTax - Artikel Editor</title>
    <style type="text/css">
        html, body, form
        {
            height: 100%;
            margin: 0px;
            padding: 0px;
            font-family: verdana;
            font-size: 0.9em;
        }
          
        div.RadTabStrip .rtsUL
        {
            float: none;
            background: #ccc;
        }
          
        div.RadTabStrip .rightTab
        {
            float: right;
        }
        #RadSplitter1
        {
            margin-top: 15px;
        }
        .reTool.Metro .InsertSpecialLink
        {
        }
    </style>
    <telerik:RadStyleSheetManager ID="RadStyleSheetManager1" runat="server" />
    <telerik:RadScriptBlock ID="rsb" runat="server">
        <script type="text/javascript">
            function setSplitInfo(sender, args) {
                window.$find("<%=ram.ClientID%>").ajaxRequest('split_main');
            }
            function setSplitInfoTop(sender, args) {
                window.$find("<%=ram.ClientID%>").ajaxRequest('split_top');
            }
            function rtvExplore_OnNodeExpandedCollapsed(sender, eventArgs) {
                var allNodes = eventArgs._node.get_treeView().get_allNodes();
  
                var i;
                var selectedNodes = "";
  
                for (i = 0; i < allNodes.length; i++) {
                    if (allNodes[i].get_expanded())
                        selectedNodes += allNodes[i].get_value() + "*";
                }
  
                Set_Cookie("expandedNodes", selectedNodes, 30);
            }
  
            function Set_Cookie(name, value, expires, path, domain, secure) {
                var today = new Date();
                today.setTime(today.getTime());
                if (expires) {
                    expires = expires * 1000 * 60 * 60 * 24;
                }
                var expires_date = new Date(today.getTime() + (expires));
  
                document.cookie = name + "=" + escape(value) +
                    ((expires) ? ";expires=" + expires_date.toGMTString() : "") +
                        ((path) ? ";path=" + path : "") +
                            ((domain) ? ";domain=" + domain : "") +
                                ((secure) ? ";secure" : "");
            }
            function editorModeChanged(editor, args) {
                var mode = editor.get_mode();
                switch (mode) {
                    case 1:
                        //We are in Design mode
                        if (editor.isFullScreen())
                            editor.fire("ToggleScreenMode");
                        break;
                    case 2:
                        //We are in Html mode
                        if (editor.isFullScreen())
                            editor.fire("ToggleScreenMode");
                        break;
                    case 4:
                        if (!editor.isFullScreen())
                            editor.fire("ToggleScreenMode");
                        break;
                }
            }
            function OnClientLoad(sender, args) {
//                var timer = $find("<%=Timer1.ClientID %>");
//                sender.add_spellCheckLoaded(function () {
//                    var spell = sender.get_ajaxSpellCheck();
//                    spell.add_spellCheckStart(function (sender, args) {
//                        timer._stopTimer();
//                    });
//                    spell.add_spellCheckEnd(function (sender, args) {
//                        timer._startTimer();
  
//                    });
//                }
//            );
            }
  
        </script>
    </telerik:RadScriptBlock>
</head>
<body>
    <form id="form1" runat="server">
    <telerik:RadFormDecorator runat="server" ID="rfd" DecoratedControls="All" Skin="Metro" />
    <telerik:RadScriptManager ID="RadScriptManager1" runat="server" ScriptMode="Release"
        EnableScriptCombine="True" EnableCdn="True">
        <Scripts>
            <%--Needed for JavaScript IntelliSense in VS2010--%>
            <%--For VS2008 replace RadScriptManager with ScriptManager--%>
            <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
            <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
            <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" />
        </Scripts>
    </telerik:RadScriptManager>
    <script type="text/javascript">
         
    </script>
    <div id="ParentDivElement" style="height: 100%;">
        <telerik:RadSplitter ID="MainSplitter" runat="server" Height="100%" Width="100%"
            Orientation="Horizontal" Skin="Metro">
            <telerik:RadPane ID="TopPane" runat="server" Height="28" MinHeight="28" MaxHeight="28"
                Scrolling="none" OnClientResized="setSplitInfoTop" OnClientCollapsed="setSplitInfoTop"
                OnClientExpanded="setSplitInfoTop">
                <telerik:RadTabStrip ID="RadTabStrip1" runat="server" MultiPageID="MultiPage1">
                    <Tabs>
                        <telerik:RadTab Text="Artikelen" Selected="true" PageViewID="RadPageView1">
                        </telerik:RadTab>
                        <telerik:RadTab Text="Tooltips" NavigateUrl="~/ToolTips.aspx">
                        </telerik:RadTab>
                        <telerik:RadTab Text="Afmelden" NavigateUrl="~/Logoff.aspx">
                        </telerik:RadTab>
                        <telerik:RadTab Text="Welkom " OuterCssClass="rightTab" Value="userid" />
                    </Tabs>
                </telerik:RadTabStrip>
            </telerik:RadPane>
            <telerik:RadSplitBar ID="RadsplitbarTop" runat="server" CollapseMode="Forward" />
            <telerik:RadPane ID="MainPane" runat="server" Scrolling="none" MinWidth="500">
                <telerik:RadSplitter ID="NestedSplitter" runat="server" Skin="Metro" HeightOffset="140"
                    LiveResize="false">
                    <telerik:RadPane ID="LeftPane" runat="server" Width="200" MinWidth="150" MaxWidth="400"
                        OnClientResized="setSplitInfo" OnClientCollapsed="setSplitInfo" OnClientExpanded="setSplitInfo">
                        <telerik:RadTreeView ID="rtv" runat="server" Skin="Metro" OnNodeExpand="rtv_NodeExpand"
                            OnNodeClick="rtv_NodeClick" OnClientNodeExpanded="rtvExplore_OnNodeExpandedCollapsed"
                            OnClientNodeCollapsed="rtvExplore_OnNodeExpandedCollapsed">
                        </telerik:RadTreeView>
                    </telerik:RadPane>
                    <telerik:RadSplitBar ID="VerticalSplitBar" runat="server" CollapseMode="Forward" />
                    <telerik:RadPane ID="ContentPane" runat="server" Height="100%" Scrolling="None">
                        <telerik:RadMultiPage ID="MultiPage1" runat="server" Height="100%">
                            <telerik:RadPageView ID="RadPageView1" runat="server" Selected="true" Height="98%">
                                <telerik:RadTabStrip ID="rtsArtikel" runat="server" MultiPageID="MultiPage2">
                                    <Tabs>
                                        <telerik:RadTab Text="Kernwoorden" Selected="true" PageViewID="rpvKernwoorden">
                                        </telerik:RadTab>
                                        <telerik:RadTab Text="Artikel" PageViewID="rpvAtikel">
                                        </telerik:RadTab>
                                    </Tabs>
                                </telerik:RadTabStrip>
                                <telerik:RadMultiPage ID="MultiPage2" runat="server" Height="100%">
                                    <telerik:RadPageView ID="rpvKernwoorden" runat="server" Selected="true" Height="98%">
                                        <div style="width: 240px; display: inline; float: left; margin-left: 4px; margin-top: 4px;">
                                            <asp:Button runat="server" ID="btnSave" Text="Opslaan" OnClick="btnSave_Click" Width="100" />
                                            <asp:Button runat="server" ID="btnPreview" Text="Preview" OnClientClick="return false;"
                                                Width="100" />
                                        </div>
                                        <div style="width: 40px; display: inline; float: left; margin-top: 12px;">
                                            <telerik:RadAjaxLoadingPanel ID="lp" runat="server" IsSticky="True" EnableAjaxSkinRendering="False"
                                                EnableEmbeddedSkins="False">
                                                <asp:Image ID="Image2" runat="server" AlternateText="Loading..." ImageUrl="~/Styles/Images/whiteloader.gif" />
                                            </telerik:RadAjaxLoadingPanel>
                                        </div>
                                        <div style="width: 320px; display: inline; float: left; margin-left: 4px; margin-top: 12px;">
                                            <asp:Label runat="server" ID="lblInfo2"></asp:Label>
                                        </div>
                                          
                                          
                                        <telerik:RadEditor ID="RadEditor2" runat="server" ToolbarMode="Default" ToolsFile="Tools.xml"
                                            StripFormattingOptions="All" NewLineMode="P" Width="98%" Language="nl-NL"
                                            AutoResizeHeight="False" OnClientModeChange="editorModeChanged" ContentAreaCssFile="~/Styles/EditorCss.css"
                                            LocalizationPath="~/Resources/" ExternalDialogsPath="~/Resources/EditorDialogs/"
                                            EnableViewState="true" OnClientLoad="OnClientLoad">
                                            <FontNames>
                                                <telerik:EditorFont runat="server" Value="Verdana" />
                                            </FontNames>
                                            <SpellCheckSettings AllowAddCustom="True" DictionaryLanguage="nl-NL"></SpellCheckSettings>
                                            <MediaManager UploadPaths="~/Media/" ViewPaths="~/Media/" DeletePaths="~/Media/"
                                                MaxUploadFileSize="10240000"></MediaManager>
                                            <ImageManager UploadPaths="~/Media/" ViewPaths="~/Media/" DeletePaths="~/Media/"
                                                EnableImageEditor="False" MaxUploadFileSize="10240000" EnableThumbnailLinking="True">
                                            </ImageManager>
                                            <DocumentManager ViewPaths="~/Documents/" UploadPaths="~/Documents/" DeletePaths="~/Documents/" />
                                        </telerik:RadEditor>
                                    </telerik:RadPageView>
                                    <telerik:RadPageView ID="rpvAtikel" runat="server" Selected="false" Height="98%">
                                        <div style="width: 240px; display: inline; float: left; margin-left: 4px; margin-top: 4px;">
                                            <asp:Button runat="server" ID="btnSave2" Text="Opslaan" OnClick="btnSave_Click" Width="100" />
                                            <asp:Button runat="server" ID="btnPreview2" Text="Preview" OnClientClick="return false;"
                                                Width="100" />
                                        </div>
                                        <div style="width: 40px; display: inline; float: left; margin-top: 12px;">
                                            <telerik:RadAjaxLoadingPanel ID="lp2" runat="server" IsSticky="True" EnableAjaxSkinRendering="False"
                                                EnableEmbeddedSkins="False">
                                                <asp:Image ID="Image1" runat="server" AlternateText="Loading..." ImageUrl="~/Styles/Images/whiteloader.gif" />
                                            </telerik:RadAjaxLoadingPanel>
                                        </div>
                                        <div style="width: 320px; display: inline; float: left; margin-left: 4px; margin-top: 12px;">
                                            <asp:Label runat="server" ID="lblInfo"></asp:Label>
                                        </div>
                                          
                                          
                                        <telerik:RadEditor ID="RadEditor1" runat="server" ToolbarMode="Default" ToolsFile="Tools.xml"
                                            StripFormattingOptions="All" NewLineMode="P" EnableViewState="true" Width="98%"
                                             Language="nl-NL" AutoResizeHeight="False" OnClientModeChange="editorModeChanged"
                                            ContentAreaCssFile="~/Styles/EditorCss.css" LocalizationPath="~/Resources/"
                                            ExternalDialogsPath="~/Resources/EditorDialogs/" OnClientLoad="OnClientLoad">
                                            <FontNames>
                                                <telerik:EditorFont runat="server" Value="Verdana" />
                                            </FontNames>
                                            <SpellCheckSettings AllowAddCustom="True" DictionaryLanguage="nl-NL"></SpellCheckSettings>
                                            <MediaManager UploadPaths="~/Media/" ViewPaths="~/Media/" DeletePaths="~/Media/"
                                                MaxUploadFileSize="10240000"></MediaManager>
                                            <ImageManager UploadPaths="~/Media/" ViewPaths="~/Media/" DeletePaths="~/Media/"
                                                EnableImageEditor="False" MaxUploadFileSize="10240000" EnableThumbnailLinking="True">
                                            </ImageManager>
                                            <DocumentManager ViewPaths="~/Documents/" UploadPaths="~/Documents/" DeletePaths="~/Documents/" />
                                        </telerik:RadEditor>
                                    </telerik:RadPageView>
                                </telerik:RadMultiPage>
                            </telerik:RadPageView>
                        </telerik:RadMultiPage>
                    </telerik:RadPane>
                </telerik:RadSplitter>
            </telerik:RadPane>
        </telerik:RadSplitter>
    </div>
    <asp:Timer ID="Timer1" runat="server" Interval="60000" OnTick="Timer1_Tick">
    </asp:Timer>
    <telerik:RadAjaxManager runat="server" ID="ram" OnAjaxRequest="ram_AjaxRequest" UpdatePanelsRenderMode="Inline">
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="ram">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="ram" />
                </UpdatedControls>
            </telerik:AjaxSetting>
            <telerik:AjaxSetting AjaxControlID="rtv">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="RadEditor1" />
                    <telerik:AjaxUpdatedControl ControlID="RadEditor2" />
                    <telerik:AjaxUpdatedControl ControlID="lblInfo" />
                    <telerik:AjaxUpdatedControl ControlID="btnPreview" />
                    <telerik:AjaxUpdatedControl ControlID="lblInfo2" />
                    <telerik:AjaxUpdatedControl ControlID="btnPreview2" />
                </UpdatedControls>
            </telerik:AjaxSetting>
            <telerik:AjaxSetting AjaxControlID="btnSave">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="RadEditor1" LoadingPanelID="lp" />
                    <telerik:AjaxUpdatedControl ControlID="RadEditor2" />
                    <telerik:AjaxUpdatedControl ControlID="lblInfo" />
                    <telerik:AjaxUpdatedControl ControlID="btnPreview" />
                    <telerik:AjaxUpdatedControl ControlID="lblInfo2" />
                    <telerik:AjaxUpdatedControl ControlID="btnPreview2" />
                </UpdatedControls>
            </telerik:AjaxSetting>
            <telerik:AjaxSetting AjaxControlID="btnSave2">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="RadEditor1" />
                    <telerik:AjaxUpdatedControl ControlID="RadEditor2" LoadingPanelID="lp2" />
                    <telerik:AjaxUpdatedControl ControlID="lblInfo" />
                    <telerik:AjaxUpdatedControl ControlID="btnPreview" />
                    <telerik:AjaxUpdatedControl ControlID="lblInfo2" />
                    <telerik:AjaxUpdatedControl ControlID="btnPreview2" />
                </UpdatedControls>
            </telerik:AjaxSetting>
            <telerik:AjaxSetting AjaxControlID="Timer1">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="lblInfo" />
                    <telerik:AjaxUpdatedControl ControlID="btnPreview" />
                    <telerik:AjaxUpdatedControl ControlID="lblInfo2" />
                    <telerik:AjaxUpdatedControl ControlID="btnPreview2" />
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManager>
    <telerik:RadScriptBlock runat="server" ID="rsbottom">
        <script type="text/javascript">
            Telerik.Web.UI.Editor.CommandList["InsertSpecialLink"] = function (commandName, editor, args) {
                var elem = editor.getSelectedElement(); //returns the selected element.            
                if (elem.tagName == "A") {
                    editor.selectElement(elem);
                    argument = elem;
                }
                else {
                    var content = editor.getSelectionHtml();
                    var link = editor.get_document().createElement("A");
                    link.innerHTML = content;
                    argument = link;
                }
  
                var myCallbackFunction = function (sender, args) {
                    editor.pasteHtml(String.format("[[{3}|{2}]] ", args.href, args.target, args.className, args.name));
                };
  
                editor.showExternalDialog('InsertLink.aspx', argument, 390, 260, myCallbackFunction, null, 'Tooltip invoegen', true, Telerik.Web.UI.WindowBehaviors.Close + Telerik.Web.UI.WindowBehaviors.Move, false, false);
            };
  
              
        </script>
    </telerik:RadScriptBlock>
    </form>
</body>
</html>


Code behind:

using System;
using System.Drawing;
using System.Web;
using Business;
using Hive;
using Hive.Core;
using Hive.SQL;
using Telerik.Web.UI;
using Process;
  
public partial class Default : System.Web.UI.Page
{
  
    private Functies _functiesZonderArtikel;
  
    protected void Page_Load(object sender, EventArgs e)
    {
        Gebruiker.forceLogin();
        Timer1.Enabled = false;
  
        RadTab tab = RadTabStrip1.FindTabByValue("userid");
        tab.Text = "Welkom " + Gebruiker.getCurrent();
  
        StoredProcedure sp = new StoredProcedure("getFunctieZonderArtikel");
        _functiesZonderArtikel = new Functies();
        _functiesZonderArtikel.retrieve(sp);
  
        if (!IsPostBack)
        {
            lblInfo.Text = lblInfo2.Text = "Laatste keer opgeslagen: n.v.t.";
            loadFuntieTree();
            PaneSettings.LoadState_Click(MainSplitter);
            PaneSettings.LoadState_Click(NestedSplitter);
  
            HttpCookie cookie = Request.Cookies["expandedNodes"];
            if (cookie != null)
            {
                string[] expandedNodeValues = cookie.Value.Split('*');
                foreach (string nodeValue in expandedNodeValues)
                {
                    RadTreeNode expandedNode = rtv.FindNodeByValue(HttpUtility.UrlDecode(nodeValue));
                    if (expandedNode != null)
                    {
                        expandedNode.Expanded = true;
                        loadNode(expandedNode);
                    }
                }
            }
        }
    }
  
    private void loadArtikel(Functie functie)
    {
        Artikel artikel = Artikel.getArtikelBijFunctie(functie);
        if (!artikel.isDBNull())
        {
            RadEditor1.Content = artikel.omschrijving;
            RadEditor2.Content = artikel.titel;
            btnPreview.OnClientClick = btnPreview2.OnClientClick = string.Format("window.open('Preview.aspx?artikel={0}'); return false;", artikel.oid);
        }
        else
        {
            RadEditor1.Content = "Nog geen artikel";
            RadEditor2.Content = "Nog geen kernwoorden";
            btnPreview.OnClientClick = btnPreview2.OnClientClick = "return false;";
        }
  
        lblInfo.Text = lblInfo2.Text = "Laatste keer opgeslagen: n.v.t.";
    }
  
    private void loadFuntieTree()
    {
        SelectCriteria sc = new SelectCriteria(typeof(Functie), "parent", null, SqlOperator.equal);
        Functies functies = new Functies();
        functies.retrieve(sc);
        functies.sortByProperty("OID");
  
        foreach (Functie functie in functies)
        {
            RadTreeNode node = new RadTreeNode(functie.thema, functie.oid);
            node.ExpandMode = TreeNodeExpandMode.ServerSideCallBack;
  
            if (_functiesZonderArtikel.contains(functie))
                node.ForeColor = Color.Red;
  
            rtv.Nodes.Add(node);
        }
  
    }
  
    private void loadNode(RadTreeNode node)
    {
        SelectCriteria sc = new SelectCriteria(typeof(Functie), "parent", node.Value, SqlOperator.equal);
        Functies functies = new Functies();
        functies.retrieve(sc);
        functies.sortByProperty("OID");
  
        foreach (Functie f in functies)
        {
            RadTreeNode cnode = new RadTreeNode();
            cnode.Text = f.thema;
            cnode.Value = f.oid;
              
            if (_functiesZonderArtikel.contains(f))
                cnode.ForeColor = Color.Red;
  
            node.Nodes.Add(cnode);
        }
  
  
        node.ExpandMode = TreeNodeExpandMode.ClientSide;
    }
  
    protected void rtv_NodeExpand(object sender, RadTreeNodeEventArgs e)
    {
        SelectCriteria sc = new SelectCriteria(typeof(Functie), "parent", e.Node.Value, SqlOperator.equal);
        Functies functies = new Functies();
        functies.retrieve(sc);
        functies.sortByProperty("OID");
  
        foreach (Functie f in functies)
        {
            RadTreeNode node = new RadTreeNode();
            node.Text = f.thema;
            node.Value = f.oid;
  
            if (_functiesZonderArtikel.contains(f))
                node.ForeColor = Color.Red;
  
            e.Node.Nodes.Add(node);
        }
  
        e.Node.Expanded = true;
        e.Node.ExpandMode = TreeNodeExpandMode.ClientSide;
  
    }
  
  
      
  
    protected void ram_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {
        if (e.Argument != null)
        {
            switch (e.Argument.ToLower())
            {
                case "split_top":
                    PaneSettings.SaveState_Click(MainSplitter);
                    break;
                case "split_main":
                    PaneSettings.SaveState_Click(NestedSplitter);
                    break;
  
            }
        }
  
    }
  
    protected void rtv_NodeClick(object sender, RadTreeNodeEventArgs e)
    {
        if (rtv.SelectedNodes.Count == 1)
        {
            loadArtikel(new Functie(rtv.SelectedNode.Value));
        }
  
    }
  
    protected void btnSave_Click(object sender, EventArgs e)
    {
        Broker b = Broker.instance();
        b.startTransaction();
        string oid = "";
        try
        {
            if (rtv.SelectedNodes.Count == 1)
            {
                Guid guid = Guid.NewGuid();
                Functie curFunctie = new Functie(rtv.SelectedNode.Value);
                Artikel artikel = Artikel.getArtikelBijFunctie(curFunctie);
                if (!artikel.isDBNull())
                {
                    artikel.omschrijving = RadEditor1.Content;
                    artikel.datum = DateTime.Now.Date;
                    artikel.titel = RadEditor2.Content;
                    artikel.save();
                    oid = artikel.oid;
                }
                else
                {
                    artikel = new Artikel();
                    artikel.omschrijving = RadEditor1.Content;
                    artikel.datum = DateTime.Now.Date;
                    artikel.datumIngevoerd = DateTime.Now.Date;
                    artikel.titel = RadEditor2.Content;
                    artikel.uniqueID = guid;
                    artikel.save();
                    oid = artikel.oid;
  
                    if (artikel.profielonderdelen.count() == 0)
                    {
                        ProfielOnderdeel po = new ProfielOnderdeel();
                        po.functie = curFunctie;
                        po.artikel = artikel;
                        po.isGeselecteerd = false;
                        po.save();
  
                    }
                }
            }
            else
            {
                ram.Alert("Er is geen functie geselecteerd! Kopieer alle content naar het klembord (ctrl + A, en dan ctrl + C in de editor). Selecteer vervolgens de gewenste functie en plak uw content.");
            }
        }
        catch (Exception ex)
        {
            b.rollbackTransaction();
            lblInfo.Text = lblInfo2.Text = "Laatste keer opgeslagen: n.v.t.";
            btnPreview.OnClientClick = btnPreview2.OnClientClick = "return false;";
            ram.Alert(ex.Message);
        }
  
        if(b.isTransactionActive())
        {
            b.commitTransaction();
            lblInfo.Text = lblInfo2.Text = "Laatste keer opgeslagen: " + DateTime.Now.ToLongTimeString();
            btnPreview.OnClientClick = btnPreview2.OnClientClick = string.Format("window.open('Preview.aspx?artikel={0}'); return false;", oid);
        }
    }
  
    protected void Timer1_Tick(object sender, EventArgs e)
    {
        if (rtv.SelectedNodes.Count != 1 || (RadEditor1.Content == "Nog geen artikel" && RadEditor2.Content == "Nog geen kernwoorden"))
            return;
  
        btnSave_Click(this, null);
    }
}


Content for editor:

<p><b><a href="http://" target="_blank"><b></b></a><a href="http://" target="_blank"><b></b></a><a href="http://" target="_blank"><b></b></a><a href="http://" target="_blank"><b></b></a>Btw Raad en raadscommissies (vacatiegelden, vergoedingen, verzekeringen, excursies e.d.)</b> </p>
<p>Deze functie ziet op het democratisch functioneren van de gemeente. Bij deze functie handelt de gemeente als overheid, waardoor de daaraan toerekenbare inkoop-btw volledig compensabel is. Verder valt deze functie onder <i>post 45</i> <a id="_anchor_1">[M1]</a> : <i>algemeen bestuur gemeente </i>van de MvF-lijst (=compensabel).</p>
<p> </p>
<p><i><span style="text-decoration: underline;">Pas op</span>:</i></p>
<p> - Naar mening van de belastingdienst kunnen gemeenteraadsleden niet worden aangemerkt als werknemers voor toepassing van het bcf. De  btw ter zake van verstrekkingen aan deze personen (bijvoorbeeld ter zake van declaraties) komt niet voor compensatie in aanmerking, omdat deze personen worden beschouwd als ‘individuele derden’ als bedoeld in <a href="http://wetten.overheid.nl/BWBR0013817/geldigheidsdatum_11-01-2012#Artikel4" target="_blank">artikel 4(1)a Wet BCF</a>. </p>
<p> - Als facturen voor kosten (bijvoorbeeld auto-, lunch-, parkeer-, telefoondeclaraties) niet op naam van de gemeente staan, is compensatie uitgesloten. Aangezien kassabonnen niet kwalificeren als een factuur, kan de daarop in rekening gebrachte btw in beginsel niet worden gecompenseerd of in aftrek worden gebracht. Door de steekproefcontrole van de belastingdienst bij gemeenten kan een gering ten onrechte gecompenseerd btw-bedrag van een kassabon leiden tot een zeer forse correctie!</p>
<p> - De declaraties van vervoersbewijzen (taxi of trein) zijn daarentegen wel compensabel, als deze ten laste komen van de gemeente en als overheid worden aangewend.</p>
<p> - De (afzonderlijk vermelde) inkoop-btw op horecabestedingen (restaurantkosten e.d.) is in beginsel eveneens volledig compensabel, als de facturen op naam staan van de gemeente en als overheid worden aangewend. De inkoop-btw op deze horecabestedingen is echter nimmer aftrekbaar op de btw-aangifte. Indien op deze kosten het [[2|mengpercentage]] van toepassing is, dient met deze aftrekbeperking rekening te worden gehouden.</p>
<p> - Sinds 1 januari 2007 is de inkoop-btw op personeelsverstrekkingen (voor privé-doeleinden van ambtenaren) volledig compensabel (Besluit van 10 juni 2009, nr. CPP2009/838M<a id="_anchor_4">[M4]</a> ). </p>
<p> - Personeelsverstrekkingen boven de €227 en toerekenbaar aan het btw-ondernemerschap van de gemeente komen  echter nimmer voor aftrek op de btw-aangifte in aanmerking. Op grond van het Besluit uitsluiting aftrek omzetbelasting<a id="_anchor_5">[M5]</a>  (‘Bua’) is de aftrek van inkoop-btw op desbetreffende personeelsverstrekkingen namelijk volledig uitgesloten. </p>
<p> - De inkoop-btw op personeelsverstrekkingen, die gelijkgesteld kunnen worden aan btw-vrijgestelde prestaties (zoals het ter beschikking stellen van de ambtswoning aan de burgermeester) is niet compensabel (art. 4 (1)b Wet BCF<a id="_anchor_6">[M6]</a> ). </p>
<p> </p>
<p><i>Ergo:</i> de inkoop-btw op personeelsdeclaraties en verstrekkingen vraagt extra aandacht, voordat tot compensatie of aftrek wordt over gegaan.</p>
<p> </p>
<p><b>College van burgemeester en wethouders (loonkosten, reis- en verblijfkosten, ambtswoning, huistelefoon, e.d.)</b> </p>
<p>Deze functie ziet op het democratisch functioneren van de gemeente. Bij deze functie handelt de gemeente als overheid, waardoor de daaraan toerekenbare inkoop-btw volledig compensabel is. Verder valt deze functie onder  <i>post 45</i> <a id="_anchor_7">[M7]</a> : <i>algemeen bestuur gemeente </i>van de MvF-lijst (=compensabel).</p>
<p> </p>
<p><i>Pas op:</i></p>
<p> - Naar mening van de belastingdienst kunnen gemeenteraadsleden niet worden aangemerkt als werknemers voor toepassing van het bcf. De  btw ter zake van verstrekkingen aan deze personen (bijvoorbeeld ter zake van declaraties) komt niet voor compensatie in aanmerking, omdat deze personen worden beschouwd als 'individuele derden' als bedoeld in artikel 4(1)a Wet BCF. </p>
<p> - Als facturen voor kosten (bijvoorbeeld auto-, lunch-, parkeer-, telefoondeclaraties) niet op naam van de gemeente staan, is compensatie uitgesloten. Aangezien kassabonnen niet kwalificeren als een factuur, kan de daarop in rekening gebrachte btw in beginsel niet worden gecompenseerd of in aftrek worden gebracht. Door de steekproefcontrole van de belastingdienst bij gemeenten kan een gering ten onrechte gecompenseerd btw-bedrag van een kassabon leiden tot een zeer forse correctie!</p>
<p> - De declaraties van vervoersbewijzen (taxi of trein) zijn daarentegen wel compensabel, als deze ten laste komen van de gemeente en als overheid worden aangewend.</p>
<p> - De (afzonderlijk vermelde) inkoop-btw op horecabestedingen (restaurantkosten e.d.) is in beginsel eveneens volledig compensabel, als de facturen op naam staan van de gemeente en als overheid worden aangewend. De inkoop-btw op deze horecabestedingen is echter nimmer aftrekbaar op de btw-aangifte. Indien op deze kosten het [[2|mengpercentage]]  van toepassing is, dient met deze aftrekbeperking rekening te worden gehouden.</p>
<p> - Sinds 1 januari 2007 is de inkoop-btw op personeelsverstrekkingen (voor privé-doeleinden van ambtenaren) volledig compensabel ( Besluit van 10 juni 2009, nr. CPP2009/838M<a id="_anchor_10">[M10]</a> ). </p>
<p> - Personeelsverstrekkingen boven de €227 en toerekenbaar aan het btw-ondernemerschap van de gemeente komen  echter nimmer voor aftrek op de btw-aangifte in aanmerking. Op grond van het Besluit uitsluiting aftrek omzetbelasting<a id="_anchor_11">[M11]</a>  (‘Bua’) is de aftrek van inkoop-btw op desbetreffende personeelsverstrekkingen namelijk volledig uitgesloten. </p>
<p> - De inkoop-btw op personeelsverstrekkingen, die gelijkgesteld kunnen worden aan btw-vrijgestelde prestaties (zoals het ter beschikking stellen van de ambtswoning aan de burgermeester) is niet compensabel (art. 4 (1)b Wet BCF<a id="_anchor_12">[M12]</a> ). </p>
<p> </p>
<p><i>Ergo:</i> de inkoop-btw op personeelsdeclaraties en verstrekkingen vraagt extra aandacht, voordat tot compensatie of aftrek wordt over gegaan.</p>
<p> </p>
<p><b>Functionele en territoriale commissies (commissies ex artikel 96 Gemeentewet</b><b>).</b> </p>
<p>Deze functie ziet op het democratisch functioneren van de gemeente. Bij deze functie handelt de gemeente als overheid, waardoor de daaraan toerekenbare inkoop-btw volledig compensabel is. Verder valt deze functie onder  <i>post 45</i> <a id="_anchor_14">[M14]</a> : <i>algemeen bestuur gemeente </i>van de MvF-lijst (=compensabel).</p>
<p><i>Pas op:</i></p>
<p> - Naar mening van de belastingdienst kunnen gemeenteraadsleden niet worden aangemerkt als werknemers voor toepassing van het bcf. De  btw ter zake van verstrekkingen aan deze personen (bijvoorbeeld ter zake van declaraties) komt niet voor compensatie in aanmerking, omdat deze personen worden beschouwd als ‘individuele derden’ als bedoeld in artikel 4(1)a Wet BCF <a id="_anchor_15">[M15]</a> . </p>
<p> - Als facturen voor kosten (bijvoorbeeld auto-, lunch-, parkeer-, telefoondeclaraties) niet op naam van de gemeente staan, is compensatie uitgesloten. Aangezien kassabonnen niet kwalificeren als een factuur, kan de daarop in rekening gebrachte btw in beginsel niet worden gecompenseerd of in aftrek worden gebracht. Door de steekproefcontrole van de belastingdienst bij gemeenten kan een gering ten onrechte gecompenseerd btw-bedrag van een kassabon leiden tot een zeer forse correctie!</p>
<p> - De declaraties van vervoersbewijzen (taxi of trein) zijn daarentegen wel compensabel, als deze ten laste komen van de gemeente en als overheid worden aangewend.</p>
<p> - De (afzonderlijk vermelde) inkoop-btw op horecabestedingen (restaurantkosten e.d.) is in beginsel eveneens volledig compensabel, als de facturen op naam staan van de gemeente en als overheid worden aangewend. De inkoop-btw op deze horecabestedingen is echter nimmer aftrekbaar op de btw-aangifte. Indien op deze kosten het [[2|mengpercentage]] van toepassing is, dient met deze aftrekbeperking rekening te worden gehouden.</p>
<p> - Sinds 1 januari 2007 is de inkoop-btw op personeelsverstrekkingen (voor privé-doeleinden van ambtenaren) volledig compensabel ( Besluit van 10 juni 2009, nr. CPP2009/838M<a id="_anchor_17">[M17]</a> ). </p>
<p> - Personeelsverstrekkingen boven de €227 en toerekenbaar aan het btw-ondernemerschap van de gemeente komen  echter nimmer voor aftrek op de btw-aangifte in aanmerking. Op grond van het Besluit uitsluiting aftrek omzetbelasting<a id="_anchor_18">[M18]</a>  (‘Bua’) is de aftrek van inkoop-btw op desbetreffende personeelsverstrekkingen namelijk volledig uitgesloten. </p>
<p> - De inkoop-btw op personeelsverstrekkingen, die gelijkgesteld kunnen worden aan btw-vrijgestelde prestaties (zoals het ter beschikking stellen van de ambtswoning aan de burgermeester) is niet compensabel  (art. 4 (1)b Wet BCF).  </p>
<p><i>Ergo:</i> de inkoop-btw op personeelsdeclaraties en verstrekkingen vraagt extra aandacht, voordat tot compensatie of aftrek wordt over gegaan.</p>
<p> </p>
<p><b>Verwante functies;</b><b><span style="text-decoration: underline;"> <br />
</span></b></p>
<p><b>Afscheidsreceptie burgemeester</b><b> </b></p>
<p>Bij het organiseren van een afscheidsreceptie van de burgemeester handelt de gemeente als overheid/niet btw-ondernemer, waardoor de daaraan toerekenbare inkoop-btw volledig compensabel is.</p>
<p><i></i></p>
<p><i>Pas op:</i></p>
<p>De ervaring leert dat de belastingdienst tijdens de btw-/bcf-controles (steekproefmethode) van mening is dat deze kosten moeten worden aangemerkt als een ‘algemene kosten’, waarop het [[2|mengpercentage]] van toepassing is.</p>
<p> </p>
<p><b>Nieuwjaarsreceptie</b><b> </b></p>
<p>Bij het organiseren van de jaarlijkse nieuwjaarsreceptie handelt de gemeente als overheid/niet btw-ondernemer, waardoor de daaraan toerekenbare inkoop-btw volledig compensabel is.</p>
<p> </p>
<p><i>Pas op:</i></p>
<p>De ervaring leert dat de belastingdienst tijdens de btw-/bcf-controles (steekproefmethode) van mening is dat deze kosten moeten worden aangemerkt als een ‘algemene kosten’, waarop het [[2|mengpercentage]] toepassing is.</p>
<p> </p>
<div
<div>
<div id="_com_1">
<p> [M1]Link naar document: Lijst MinFin/goedkeuringen<br />
 [M4]Link naar besluit/besluiten</p>
</div>
</div>
<div>
<div id="_com_5">
<p> [M5]Pop-up: toelichting en link overheid.nl</p>
</div>
</div>
<div>
<div id="_com_6">
<p> [M6]Link naar overheid.nl</p>
</div>
</div>
<div>
<div id="_com_7">
<p> [M7]Link naar document: Lijst MinFin/goedkeuringen</p>
</div>
</div>
<div>
<div id="_com_8">
<p> [M8]Link naar overheid.nl</p>
</div>
</div>
<div>
<div id="_com_9">
<p> [M9]Pop-up: toelichting</p>
</div>
</div>
<div>
<div id="_com_10">
<p> [M10]Link naar besluit/besluiten</p>
</div>
</div>
<div>
<div id="_com_11">
<p> [M11]Pop-up: toelichting en link overheid.nl</p>
</div>
</div>
<div>
<div id="_com_12">
<p> [M12]Link naar overheid.nl</p>
</div>
</div>
<div>
<div id="_com_13">
<p> [M13]Link Overheid.nl</p>
</div>
</div>
<div>
<div id="_com_14">
<p> [M14]Link lijst Minfin/goedkeuring</p>
</div>
</div>
<div>
<div id="_com_15">
<p> [M15]Link naar overheid.nl</p>
</div>
</div>
<div id="_com_17">
<p> [M17]Link naar besluit/besluiten</p>
</div>
</div>
<div>
<div id="_com_18">
<p> [M18]Pop-up: toelichting en link overheid.nl</p>
</div>
</div>
<div>
<div id="_com_19">
<p> [M19]Link naar overheid.nl</p>
</div>
</div>
<div>
<div id="_com_20">
<p> </p>
</div>
</div>
Rumen
Telerik team
 answered on 17 Jan 2012
1 answer
37 views
Hi, I'm trying to create a new style with the stylebuilder and I wish to call it "Black" (also I need to inherit your Black style) but the site warns me about an error.

Steps:
1.- go to http://stylebuilder.telerik.com/New.aspx 
2.- name it "Black" (no quotes)
3.- select the Black style as base skin
4.- select "all controls"
5.- click the Create button
Bozhidar
Telerik team
 answered on 17 Jan 2012
15 answers
153 views
I would like to report a fault on "Calendar". Reviewing the features of "Calendar"in your link:
http://demos.telerik.com/aspnet-ajax/calendar/examples/overview/defaultcs.aspx

and particularly "DataPicker"in: http://demos.telerik.com/aspnet-ajax/calendar/examples/datepicker/custompopup/defaultcs.aspx
I get the following error message:

Message:
'iframeShim.style' is null or not an object

Líne: 346
Character: 2
Code: 0
URI:
http://aspnet-scripts.telerikstatic.com/ajaxz/2010.3.1317/Calendar/RadCalendarCommonScript.js

I have to say the message is only for IE browser, I have tested with IE6, IE7 and IE8 gives me error but not with IE9.
Instead, I tested with Mozilla Firefox and Google Chrome and it works without problem.

Sincerely
,
Jorge Saa-Gerbier
Radoslav
Telerik team
 answered on 17 Jan 2012
3 answers
61 views
Hi

       Please see the screen shot of rad panel bar. If some one have some suggestions. please help me

Thanks
Rajeev

Kate
Telerik team
 answered on 17 Jan 2012
2 answers
84 views
Hello!


I need help. I have problem with running the RadGrid dir="rtl" in Internet Explorer. When screen resolution is 1024 X 768, RadGrid is wider then 1024px. While page is loading, I see horisontal scrolling is begining from right side (pic.1), but in the next second horisontal scrolling turn to begin from left side (pic.2). 

<div dir="rtl">
            <telerik:RadGrid ID="RadGrid2" runat="server" AllowFilteringByColumn="true" AllowPaging="True"  
                AllowSorting="True" Skin="Outlook" OnNeedDataSource="RadGrid2_NeedDataSource" OnSortCommand="RadGrid2_SortCommand" 
                OnItemCommand="RadGrid2_ItemCommand" OnItemDataBound="RadGrid2_ItemDataBound" EnableLinqExpressions="false"
                OnPreRender="RadGrid2_PreRender" AutoGenerateColumns="false" Height="530px"  Culture="he-IL"  > 
                <ClientSettings  EnableRowHoverStyle="true"  AllowKeyboardNavigation="true" KeyboardNavigationSettings-FocusKey="Y"
                    KeyboardNavigationSettings-RebindKey="R" >  
                    <KeyboardNavigationSettings EnableKeyboardShortcuts="true" FocusKey="T" /> 
                    <ClientEvents OnRowDblClick = "RadGrid_RowDblClick"/>  
                </ClientSettings>  
                <PagerStyle NextPageText="דף הבא" PrevPageText="דף קודם" Position="Bottom"  />            
         ....       <MasterTableView dir="RTL">
Michael
Top achievements
Rank 1
 answered on 17 Jan 2012
2 answers
95 views
I am new to telerik and i want to ask how to update in radgrid with EditMode="InPlace" and without user double-click on the row
i saw this demo (http://demos.telerik.com/aspnet-ajax/grid/examples/dataediting/editondblclick/defaultcs.aspx) which require user to double-click the row to edit
In my case i want to update the data in RadNumericTextBox without the user double-click on the row.

This is my RadNumericTextBox
<telerik:GridTemplateColumn DataField="quantity"
                FilterControlAltText="Filter TemplateColumn column" UniqueName="quantity"
                HeaderText="Quantity" SortExpression="quantity">
                <ItemTemplate>
                    <telerik:RadNumericTextBox ID="quantityTextBox" runat="server"
                        ShowSpinButtons="True" width="50px"
                        DbValue='<%# Convert.ToDouble(Eval("quantity")) %>'
                        DataType="System.Int32" Culture="en-SG" NumberFormat-DecimalDigits="0" MinValue="0" MaxValue="999" ClientEvents-OnValueChanging="editQuantity">
                </telerik:RadNumericTextBox>
                </ItemTemplate>
            </telerik:GridTemplateColumn>
The RadNumericTextBox ClientEvents-OnValueChanging="editQuantity" and i am stuck at the javascript.
I am not sure of how to update without getting the selected rows.

Sorry about my bad english and thank everyone for reading my problem or giving me advice/help.
Weilun
Top achievements
Rank 1
 answered on 17 Jan 2012
6 answers
118 views
Hello Everyone!

I have a problem regarding the DropdownColumn of the grid.

I have a grid with an inline edit and add mode. I also have a Dropdowncolumn in my grid.

What i want is that when I a new item using inline adding of the grid, the Dropdownlist of the Dropdowncolumn should display Items that are not added in the grid.

In short, The Items that are in the grid (specifically in my dropdown column) should not be displayed in the DropDownList during Adding.

I have tried this link

http://www.telerik.com/help/aspnet-ajax/grdcustomizeconfiguregriddropdowncolumn.html

but If I change the datasource of the DropDownColumn, the grid data of my DropDownColumn will be replaced with the firts item in my dropdownlist during adding mode.
Shinu
Top achievements
Rank 2
 answered on 17 Jan 2012
1 answer
89 views
Hi,

I have taken on Label Control to display Margin. I can do grand total but I am not able to do total when it group by. 

 <telerik:GridTemplateColumn AllowFiltering="false" HeaderText="HGU Margin %" SortExpression="HGUMargin"
                                UniqueName="HGUMargin"  ColumnEditorID="HGUMarginEditor">
                                <ItemTemplate>
                                    <asp:Label ID="lblHGUMargin" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "HGUMargin", "{0:P2}")%>'></asp:Label>
                                </ItemTemplate>
                                <FooterTemplate>
                                    <asp:Label runat="server" Text="test" ID="lblforHGUMargin"></asp:Label>
                                </FooterTemplate>
                                <FooterStyle Width="50px" />
                            </telerik:GridTemplateColumn>

On Code behind I am trying to display margin like this:

 if (e.Item.ItemType == GridItemType.GroupFooter)
            {              
 GridGroupFooterItem itemGroupFooter = e.Item as GridGroupFooterItem;
(itemGroupFooter["HGUMargin"].FindControl("lblforHGUMargin") as Label).Text = hgusp.ToString("00.00") + "%";
}
It gives me null label.


My question is How to find label control in code behind or client id of label when I do group by.



Thanks,
Mona

Shinu
Top achievements
Rank 2
 answered on 17 Jan 2012
2 answers
119 views
I am trying to get scheduler resources working the same as the First Look Demo, however the Telerik\RadControls for ASP.NET AJAX Q3 2011\Live Demos  code dowloaded with the 2011 Q3 update to my program files directory doesn't work.  When you uncheck the marketing button, nothing happens. Then if you uncheck the Development button then both marketing and development dissappear.  Checking and unchecking boxes gives strange results.

However the live demo on the web site works perfectly. The Javascript functions to rebindScheduler etc are all identical and work on the onchange event of the html check box.  Can you tell me what you have updated to make the live demo work?
Russell Shannon
Top achievements
Rank 1
 answered on 17 Jan 2012
3 answers
403 views
I have Treeview (attached) and I want to decrease the vertical spacing.

Here is the CSS file.
.RadTreeView_tree_2,
.RadTreeView_tree_2 a.rtIn,
.RadTreeView_tree_2 .rtEdit .rtIn input
{
    color: #000000;
    font: 12px/18px "Segoe UI", Arial, sans-serif;
    /*line-height: inherit;*/
}
 
.RadTreeView_tree_2 .rtPlus,
.RadTreeView_tree_2 .rtMinus
{
    background-image: url('TreeView/PlusMinus.png');
}
 
.RadTreeView_tree_2 .rtChecked,
.RadTreeView_tree_2 .rtUnchecked,
.RadTreeView_tree_2 .rtIndeterminate
{
    background-image: url('TreeView/TriState.png');
}
 
.RadTreeView_tree_2 .rtHover .rtIn,
.RadTreeView_tree_2 .rtSelected .rtIn
{
    color: #363636;
    border: 1px solid #fcd132;
}
 
.RadTreeView_tree_2 .rtHover .rtIn
{
    background-color: #fcf9de;
    background-image: url('TreeView/ItemHoveredBg.png');
}
 
.RadTreeView_tree_2 .rtSelected .rtIn
{
    background-color: #fcecb1;
    background-image: url('TreeView/ItemSelectedBg.png');
}
 
.RadTreeView_tree_2 .rtSelected .rtLoadingBefore,
.RadTreeView_tree_2 .rtSelected .rtLoadingAfter,
.RadTreeView_tree_2 .rtSelected .rtLoadingBelow
{
    color: #333333;
}
 
.RadTreeView_tree_2 .rtLI .rtEdit .rtIn
{
    border-color: #fcd132;
    background: #ffffff;
}
 
.RadTreeView_tree_2_disabled .rtIn,
.RadTreeView_tree_2 .rtDisabled .rtIn
{
    color: #cccccc;
}
 
div.RadTreeView_tree_2 .rtIn
{
    /*font-size: 11px;
    line-height: normal;*/
    font-weight: normal;
}
 
div.RadTreeView_tree_2 .rtHover .rtIn
{
    line-height: normal;
    font-weight: bold;
}
 
div.RadTreeView_tree_2 .rtSelected .rtIn
{
    font-weight: bold;
}
 
div.RadTreeView_tree_2 .rtIn
{
    /*font-size: 10px;
    line-height: 12px;*/
}
 
div.RadTreeView_tree_2 .rtHover .rtIn
{
    border-right-color: rgb(252,209,50);
    /*line-height: 12px;
    font-size: 10px;*/
}
 
div.RadTreeView_tree_2 .rtSelected .rtIn
{
    /*font-size: 10px;*/
    font-weight: bold;
}
Richard
Top achievements
Rank 1
 answered on 16 Jan 2012
Narrow your results
Selected tags
Tags
+? more
Top users last month
Rob
Top achievements
Rank 3
Bronze
Iron
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
Iron
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?