public string Render(PlaceHolder placeHolder, PageEntry pageEntry, System.Xml.XmlDocument content, Stack<string> placeHolderStack, out bool containsCacheableContent)
        {
            string output;
            switch (placeHolder.Expression.ToLower())
            {
                case "subscribe":
                    output = ResourceLoader.LoadTextResource("Sprocket.Web.CMS.Pages.Widgets.Newsletter.newsletter-subscribe.htm")
                        .Replace("[blurb]", GeneralRegistry.XmlDoc.SelectSingleNode("/General/Newsletter/SubscribeBlurb").FirstChild.Value)
                        .Replace("[label]", GeneralRegistry.XmlDoc.SelectSingleNode("/General/Newsletter/EmailFieldLabel").FirstChild.Value)
                        .Replace("[button]", GeneralRegistry.XmlDoc.SelectSingleNode("/General/Newsletter/SubscribeButtonText").FirstChild.Value)
                        .Replace("[pleasewait]", GeneralRegistry.XmlDoc.SelectSingleNode("/General/Newsletter/SubscribingBlurb").FirstChild.Value)
                        .Replace("[subscribed]", GeneralRegistry.XmlDoc.SelectSingleNode("/General/Newsletter/SubscribedBlurb").FirstChild.Value)
                        ;
                    break;

                case "unsubscribe":
                    output = ResourceLoader.LoadTextResource("Sprocket.Web.CMS.Pages.Widgets.Newsletter.newsletter-unsubscribe.htm")
                        .Replace("[blurb]", GeneralRegistry.XmlDoc.SelectSingleNode("/General/Newsletter/UnsubscribeBlurb").FirstChild.Value)
                        .Replace("[label]", GeneralRegistry.XmlDoc.SelectSingleNode("/General/Newsletter/EmailFieldLabel").FirstChild.Value)
                        .Replace("[button]", GeneralRegistry.XmlDoc.SelectSingleNode("/General/Newsletter/UnsubscribeButtonText").FirstChild.Value)
                        .Replace("[pleasewait]", GeneralRegistry.XmlDoc.SelectSingleNode("/General/Newsletter/UnsubscribingBlurb").FirstChild.Value)
                        .Replace("[unsubscribed]", GeneralRegistry.XmlDoc.SelectSingleNode("/General/Newsletter/UnsubscribedBlurb").FirstChild.Value)
                        ;
                    break;

                default:
                    containsCacheableContent = false;
                    return "[Newsletter renderer expects expression of \"Subscribe\" or \"Unsubscribe\"]";
            }

            containsCacheableContent = true;
            return output;
        }
 public string Render(PlaceHolder placeHolder, PageEntry pageEntry, System.Xml.XmlDocument content, Stack<string> placeHolderStack, out bool containsCacheableContent)
 {
     containsCacheableContent = true;
     return WebClientScripts.Instance.BuildScriptTags();
 }
예제 #3
0
        public static void Password_OnCommand(CommandEventArgs e)
        {
            Mobile  from = e.Mobile;
            Account acct = from.Account as Account;

            if (acct == null)
            {
                return;
            }

            IPAddress[] accessList = acct.LoginIPs;

            if (accessList.Length == 0)
            {
                return;
            }

            NetState ns = from.NetState;

            if (ns == null)
            {
                return;
            }

            if (e.Length == 0)
            {
                from.SendMessage("You must specify the new password.");
                return;
            }
            else if (e.Length == 1)
            {
                from.SendMessage("To prevent potential typing mistakes, you must type the password twice. Use the format:");
                from.SendMessage("Password \"(newPassword)\" \"(repeated)\"");
                return;
            }

            string pass  = e.GetString(0);
            string pass2 = e.GetString(1);

            if (pass != pass2)
            {
                from.SendMessage("The passwords do not match.");
                return;
            }

            bool isSafe = true;

            for (int i = 0; isSafe && i < pass.Length; ++i)
            {
                isSafe = (pass[i] >= 0x20 && pass[i] < 0x7F);
            }

            if (!isSafe)
            {
                from.SendMessage("That is not a valid password.");
                return;
            }

            try
            {
                IPAddress ipAddress = ns.Address;

                if (Utility.IPMatchClassC(accessList[0], ipAddress))
                {
                    acct.SetPassword(pass);
                    from.SendMessage("The password to your account has changed.");
                }
                else
                {
                    PageEntry entry = PageQueue.GetEntry(from);

                    if (entry != null)
                    {
                        if (entry.Message.StartsWith("[Automated: Change Password]"))
                        {
                            from.SendMessage("You already have a password change request in the help system queue.");
                        }
                        else
                        {
                            from.SendMessage("Your IP address does not match that which created this account.");
                        }
                    }
                    else if (PageQueue.CheckAllowedToPage(from))
                    {
                        from.SendMessage("Your IP address does not match that which created this account.  A page has been entered into the help system on your behalf.");

                        from.SendLocalizedMessage(501234, "", 0x35);                           /* The next available Counselor/Game Master will respond as soon as possible.
                                                                                                * Please check your Journal for messages every few minutes.
                                                                                                */

                        PageQueue.Enqueue(new PageEntry(from, String.Format("[Automated: Change Password]<br>Desired password: {0}<br>Current IP address: {1}<br>Account IP address: {2}", pass, ipAddress, accessList[0]), PageType.Account));
                    }
                }
            }
            catch
            {
            }
        }
예제 #4
0
        public static void Password_OnCommand(CommandEventArgs e)
        {
            Mobile  from = e.Mobile;
            Account acct = from.Account as Account;

            if (acct == null)
            {
                return;
            }

            IPAddress[] accessList = acct.LoginIPs;

            if (accessList.Length == 0)
            {
                return;
            }

            NetState ns = from.NetState;

            if (ns == null)
            {
                return;
            }

            if (e.Length == 0)
            {
                from.SendMessage("Musis specifikovat nove heslo.");
                return;
            }
            else if (e.Length == 1)
            {
                from.SendMessage("Kvuly prevenci prekliknuti pri psani hesla, musis zadat sve heslo dvakrat. Pouzij tento format:");
                from.SendMessage(".Heslo \"(Noveheslo)\" \"(ZnovuNoveHeslo)\"");
                return;
            }

            string pass  = e.GetString(0);
            string pass2 = e.GetString(1);

            if (pass != pass2)
            {
                from.SendMessage("Heslo se neshoduje!");
                return;
            }

            bool isSafe = true;

            for (int i = 0; isSafe && i < pass.Length; ++i)
            {
                isSafe = (pass[i] >= 0x20 && pass[i] < 0x80);
            }

            if (!isSafe)
            {
                from.SendMessage("Toto neni platne heslo.");
                return;
            }

            try
            {
                IPAddress ipAddress = ns.Address;

                if (Utility.IPMatchClassC(accessList[0], ipAddress))
                {
                    acct.SetPassword(pass);
                    from.SendMessage("The password to your account has changed.");
                }
                else
                {
                    PageEntry entry = PageQueue.GetEntry(from);

                    if (entry != null)
                    {
                        if (entry.Message.StartsWith("[Automated: Change Password]"))
                        {
                            from.SendMessage("You already have a password change request in the help system queue.");
                        }
                        else
                        {
                            from.SendMessage("Your IP address does not match that which created this account.");
                        }
                    }
                    else if (PageQueue.CheckAllowedToPage(from))
                    {
                        from.SendMessage("Your IP address does not match that which created this account.  A page has been entered into the help system on your behalf.");

                        from.SendLocalizedMessage(501234, "", 0x35);                           /* The next available Counselor/Game Master will respond as soon as possible.
                                                                                                * Please check your Journal for messages every few minutes.
                                                                                                */

                        PageQueue.Enqueue(new PageEntry(from, String.Format("[Automated: Change Password]<br>Desired password: {0}<br>Current IP address: {1}<br>Account IP address: {2}", pass, ipAddress, accessList[0]), PageType.Account));
                    }
                }
            }
            catch
            {
            }
        }
예제 #5
0
        public static void PageResp(object obj)
        {
            Paging = true;

            var objects = (object[])obj;
            int w       = (int)objects[0];
            int pag     = (int)objects[1];
            int paG;

            if (w == 1)
            {
up:
                try
                {
                    paG = Convert.ToInt32(Console.ReadLine());
                }
                catch
                {
                    Console.WriteLine("Thats not a number,try again.");
                    goto up;
                }

                Console.WriteLine("Type your response");

                ThreadPool.QueueUserWorkItem(PageResp, new object[] { 2, paG });
            }
            else
            {
                string    resp = Console.ReadLine();
                ArrayList list = PageQueue.List;

                _List = (PageEntry[])list.ToArray(typeof(PageEntry));

                if (_List.Length > 0)
                {
                    if (pag > _List.Length)
                    {
                        Console.WriteLine("Error: Not a valid page number");
                    }
                    else
                    {
                        for (int i = 0; i < _List.Length; ++i)
                        {
                            PageEntry e = _List[i];

                            if (i != pag)
                            {
                                continue;
                            }

                            e.Sender.SendGump(new MessageSentGump(e.Sender, "Admin", resp));
                            PageQueue.Remove(e);

                            Console.WriteLine("Message Sent...");
                        }
                    }
                }
                else
                {
                    Console.WriteLine("There are no pages to display.");
                }
            }

            Paging = false;

            ThreadPool.QueueUserWorkItem(ConsoleListen);
        }
예제 #6
0
        private static void HandlePaging(string sub)
        {
            if (sub.StartsWith("help", StringComparison.OrdinalIgnoreCase) ||
                sub.StartsWith("?", StringComparison.OrdinalIgnoreCase))
            {
                DisplayPagingHelp();

                HandlePaging(String.Empty);
                return;
            }

            if (PageQueue.List.Count == 0)
            {
                Console.WriteLine("There are no pages in the queue.");

                if (_Pages != null)
                {
                    _Pages = null;

                    Console.WriteLine("[Pages]: Disabled page mode.");
                }

                return;
            }

            if (String.IsNullOrWhiteSpace(sub))
            {
                if (_Pages == null)
                {
                    Console.WriteLine("[Pages]: Enabled page mode.");

                    DisplayPagingHelp();
                }

                _Pages = PageQueue.List.Cast <PageEntry>().ToArray();

                const string format = "{0:D3}:\t{1}\t{2}";

                for (int i = 0; i < _Pages.Length; i++)
                {
                    Console.WriteLine(format, i + 1, _Pages[i].Type, _Pages[i].Sender);
                }

                return;
            }

            if (sub.StartsWith("exit", StringComparison.OrdinalIgnoreCase))
            {
                if (_Pages != null)
                {
                    _Pages = null;

                    Console.WriteLine("[Pages]: Disabled page mode.");
                }

                return;
            }

            if (sub.StartsWith("clear", StringComparison.OrdinalIgnoreCase))
            {
                if (_Pages != null)
                {
                    foreach (PageEntry page in _Pages)
                    {
                        PageQueue.Remove(page);
                    }

                    Console.WriteLine("[Pages]: Queue cleared.");

                    Array.Clear(_Pages, 0, _Pages.Length);

                    _Pages = null;

                    Console.WriteLine("[Pages]: Disabled page mode.");
                }

                return;
            }

            if (sub.StartsWith("remove", StringComparison.OrdinalIgnoreCase))
            {
                string[] args;

                PageEntry page = FindPage(sub, out args);

                if (page == null)
                {
                    Console.WriteLine("[Pages]: Invalid page entry.");
                }
                else
                {
                    PageQueue.Remove(page);

                    Console.WriteLine("[Pages]: Removed from queue.");
                }

                HandlePaging(String.Empty);
                return;
            }

            if (sub.StartsWith("handle", StringComparison.OrdinalIgnoreCase))
            {
                string[] args;

                PageEntry page = FindPage(sub, out args);

                if (page == null)
                {
                    Console.WriteLine("[Pages]: Invalid page entry.");

                    HandlePaging(String.Empty);
                    return;
                }

                if (args.Length <= 0)
                {
                    Console.WriteLine("[Pages]: Message required.");

                    HandlePaging(String.Empty);
                    return;
                }

                page.Sender.SendGump(new MessageSentGump(page.Sender, ServerList.ServerName, String.Join(" ", args)));

                Console.WriteLine("[Pages]: Message sent.");

                PageQueue.Remove(page);

                Console.WriteLine("[Pages]: Removed from queue.");

                HandlePaging(String.Empty);
                return;
            }

            if (sub.StartsWith("view", StringComparison.OrdinalIgnoreCase))
            {
                string[] args;

                PageEntry page = FindPage(sub, out args);

                if (page == null)
                {
                    Console.WriteLine("[Pages]: Invalid page entry.");

                    HandlePaging(String.Empty);
                    return;
                }

                int idx = Array.IndexOf(_Pages, page) + 1;

                Console.WriteLine("[Pages]: {0:D3}:\t{1}\t{2}", idx, page.Type, page.Sender);

                if (!String.IsNullOrWhiteSpace(page.Message))
                {
                    Console.WriteLine("[Pages]: {0}", page.Message);
                }
                else
                {
                    Console.WriteLine("[Pages]: No message supplied.");
                }

                HandlePaging(String.Empty);
                return;
            }

            if (_Pages != null)
            {
                string[] args;

                PageEntry page = FindPage(sub, out args);

                if (page != null)
                {
                    int idx = Array.IndexOf(_Pages, page) + 1;

                    Console.WriteLine("[Pages]: {0:D3}:\t{1}\t{2}", idx, page.Type, page.Sender);

                    if (!String.IsNullOrWhiteSpace(page.Message))
                    {
                        Console.WriteLine("[Pages]: {0}", page.Message);
                    }
                    else
                    {
                        Console.WriteLine("[Pages]: No message supplied.");
                    }

                    HandlePaging(String.Empty);
                    return;
                }

                Array.Clear(_Pages, 0, _Pages.Length);

                _Pages = null;

                Console.WriteLine("[Pages]: Disabled page mode.");
            }
        }
예제 #7
0
        public override void OnEnable()
        {
            base.OnEnable();

            var pageList  = rootVisualElement.Q("page-list");
            var pageFiles = Directory.EnumerateFiles($"{DocumentationRoot}/topics", "*.uxml", SearchOption.AllDirectories)
                            .OrderBy(dir => Path.GetDirectoryName(dir))
                            .ThenBy(path => Path.GetFileNameWithoutExtension(path))
                            .ToArray();

            pageList.RegisterCallback <KeyDownEvent>(OnNavigate);
            pageList.Clear();

            var       pages       = new Dictionary <string, PageEntry>();
            PageEntry defaultPage = null;

            foreach (var pagePath in pageFiles)
            {
                var fileName            = Path.GetFileNameWithoutExtension(pagePath);
                var containingDirectory = Path.GetDirectoryName(pagePath);
                var pageNamePath        = Path.Combine(containingDirectory, fileName);

                var fullParentPageName = GetPageName(containingDirectory);
                var fullPageName       = GetPageName(pageNamePath);
                var parentPage         = pages.ContainsKey(fullParentPageName) ? pages[fullParentPageName] : null;

                int pageDepth = 0;
                if (parentPage != null)
                {
                    pageDepth = parentPage.depth + 1;
                }

                var pageEntry = new PageEntry(fileName, fullPageName, pagePath, pageDepth);
                pageEntry.FoldOut.RegisterCallback <ChangeEvent <bool> >(OnToggle);
                pageEntry.AddManipulator(new Clickable(OnSelect));
                if (fullPageName.Equals("topics-1st_read_me!"))
                {
                    defaultPage = pageEntry;
                }
                if (parentPage != null)
                {
                    var parentIndex = pageList.IndexOf(parentPage);
                    pageEntry.AddToClassList(HiddenClass);
                    pageEntry.AddToClassList(MinimizeClass);
                    pageList.Insert(parentIndex + parentPage.ChildPageCount + 1, pageEntry);
                    parentPage.FoldOut.RemoveFromClassList(HiddenClass);
                    parentPage.ChildPageCount++;
                }
                else
                {
                    pageList.Add(pageEntry);
                }
#if UNITY_2019_1_OR_NEWER
                rootVisualElement.RegisterCallback <CustomStyleResolvedEvent>(OnStyleResolved);
#endif
                pages.Add(fullPageName, pageEntry);
            }
            if (defaultPage != null)
            {
                LoadSelection(defaultPage);
            }
        }
예제 #8
0
        public override void OnEnable()
        {
            base.OnEnable();

            var pageList        = rootVisualElement.Q("page-list");
            var topicsFileGuids = AssetDatabase.FindAssets($"t:{nameof(VisualTreeAsset)}", new string[] { $"{DocumentationRoot}/topics" });
            var topicsFilePaths = topicsFileGuids.Select(AssetDatabase.GUIDToAssetPath).ToArray();
            var uxmlTopics      = topicsFilePaths.Distinct().ToArray();
            var pageFiles       = uxmlTopics
                                  .OrderBy(dir => Path.GetDirectoryName(dir))
                                  .ThenBy(path => Path.GetFileNameWithoutExtension(path))
                                  .ToArray();

            pageList.RegisterCallback <KeyDownEvent>(OnNavigate);
            pageList.Clear();

            var       pages       = new Dictionary <string, PageEntry>();
            PageEntry defaultPage = null;

            foreach (var pagePath in pageFiles)
            {
                var fileName            = Path.GetFileNameWithoutExtension(pagePath);
                var containingDirectory = Path.GetDirectoryName(pagePath);
                var pageNamePath        = Path.Combine(containingDirectory, fileName);

                var fullParentPageName = GetPageName(containingDirectory);
                var fullPageName       = GetPageName(pageNamePath);
                var parentPage         = pages.TryGetValue(fullParentPageName, out var tempPage) ? tempPage : null;

                int pageDepth = 0;
                if (parentPage != null)
                {
                    pageDepth = parentPage.Depth + 1;
                }

                var pageEntry = new PageEntry(fileName, fullPageName, pagePath, pageDepth);
                pageEntry.FoldOut.RegisterCallback <ChangeEvent <bool> >(OnToggle);
                pageEntry.AddManipulator(new Clickable(OnSelect));
                if (fullPageName.Equals("topics-1st_read_me!"))
                {
                    defaultPage = pageEntry;
                }
                if (parentPage != null)
                {
                    var parentIndex = pageList.IndexOf(parentPage);
                    pageEntry.AddToClassList(HiddenClass);
                    pageEntry.AddToClassList(MinimizeClass);
                    pageList.Insert(parentIndex + parentPage.ChildPageCount + 1, pageEntry);
                    parentPage.FoldOut.RemoveFromClassList(HiddenClass);
                    parentPage.ChildPageCount++;
                }
                else
                {
                    pageList.Add(pageEntry);
                }
#if UNITY_2019_1_OR_NEWER
                rootVisualElement.RegisterCallback <CustomStyleResolvedEvent>(OnStyleResolved);
#endif
                pages.Add(fullPageName, pageEntry);
            }
            if (defaultPage != null)
            {
                LoadSelection(defaultPage);
            }
        }
        private static void Pages(NetState state, PacketReader pvSrc)           // 0x08
        {
            ArrayList list       = PageQueue.List;
            int       identifier = pvSrc.ReadInt32();
            byte      subID      = pvSrc.ReadByte();

            Mobile sender = World.FindMobile(identifier);

            if (sender == null)
            {
                return;
            }

            PageEntry e = PageQueue.GetEntry(sender);

            if (e == null)               // no such page
            {
                return;
            }

            switch (subID)
            {
            case 0x01:                     // Handle
            {
                bool   handle = pvSrc.ReadBoolean();
                Mobile from   = RemoteAdminHandlers.ConfirmMobile((Account)state.Account, pvSrc.ReadInt32());
                if (from != null && (e.Handler == null || e.Handler == from))
                {
                    e.Handler = handle ? from : null;
                }
                //Console.WriteLine( "Handle: {0} handler: {1}", handle, from != null ? from.Name : "none" );
                break;
            }

            case 0x02:                     // Remove
            {
                PageQueue.Remove(e);
                break;
            }

            case 0x03:                     // Predefined
            {
                byte      messageIndex = pvSrc.ReadByte();
                Mobile    from         = RemoteAdminHandlers.ConfirmMobile((Account)state.Account, pvSrc.ReadInt32());
                ArrayList preresp      = PredefinedResponse.List;

                if (from != null && messageIndex >= 0 && messageIndex < preresp.Count)
                {
                    e.Sender.SendGump(new MessageSentGump(e.Sender, from.Name, ((PredefinedResponse)preresp[messageIndex]).Message));
                }
                break;
            }

            case 0x04:                     // Answer
            {
                Mobile from    = RemoteAdminHandlers.ConfirmMobile((Account)state.Account, pvSrc.ReadInt32());
                string message = pvSrc.ReadString();
                if (from != null)
                {
                    e.Sender.SendGump(new MessageSentGump(e.Sender, from.Name, message));
                }
                break;
            }
            }
        }
예제 #10
0
 public string Render(PlaceHolder placeHolder, PageEntry pageEntry, System.Xml.XmlDocument content, Stack <string> placeHolderStack, out bool containsCacheableContent)
 {
     containsCacheableContent = true;
     return(WebClientScripts.Instance.BuildScriptTags());
 }