Mine is similar but is more relaxed, letting me define any kind of
selector not just ids. So I write this in my .brailjs:
page.ReplaceHtml("#myTarget",[EMAIL PROTECTED]:"mypartial"}) or
page.ReplaceHtml(".myTarget",[EMAIL PROTECTED]:"mypartial"})
On Sep 26, 2:21 am, "Ayende Rahien" <[EMAIL PROTECTED]> wrote:
> This is something that I did for my private use. It works on my machine,
> etc...
>
> On Fri, Sep 26, 2008 at 12:16 PM, Ernst Naezer <[EMAIL PROTECTED]>wrote:
>
> > Hi guys,
>
> > did anybody ever get to writing this and some test cases under the same
> > license as the rest of the code so we can add it to the Monorail base and
> > fill that empty directory :)
>
> > cheers,
> > Ernst
>
>
>
> [JQueryGenerator.cs3K ]using System;
> using System.Collections.Generic;
> using Castle.MonoRail.Framework.JSGeneration;
>
> namespace HibernatingRhinos
> {
> public class JQueryGenerator : AbstractJSGenerator
> {
> static IDictionary<string, string> positions = new
> Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase)
> {
> {"before", "before"},
> {"after", "after"},
> {"top", "prepend"},
> {"bottom", "append"},
> {"prepend", "prepend"},
> {"append", "append"}
> };
>
> public JQueryGenerator(IJSCodeGenerator codeGenerator)
> : base(codeGenerator)
> {
> }
>
> public override IJSElementGenerator
> CreateElementGenerator(string root)
> {
> return new JQueryElementGenerator(this, root);
> }
>
> public override void Hide(string[] ids)
> {
> SelectRelevantElements(ids);
> CodeGenerator.Write(".hide();");
> }
>
> private void SelectRelevantElements(params string[] ids)
> {
> if (ids.Length == 0)
> throw new InvalidOperationException("Must
> pass at least one id");
>
> CodeGenerator.Write("jQuery(");
> foreach (string id in ids)
> {
> CodeGenerator.Write("#" + id + ",");
> }
> CodeGenerator.RemoveTail();
> CodeGenerator.Write(")");
> }
>
> public override void InsertHtml(string position, string id,
> object renderOptions)
> {
> string realPosition;
> if (positions.TryGetValue(position, out realPosition)
> == false)
> throw new InvalidOperationException("Position
> " + position + " is invalid");
> SelectRelevantElements(id);
> CodeGenerator.Write(".");
> CodeGenerator.Write(realPosition);
> CodeGenerator.Write(");");
> }
>
> public override void Remove(string[] ids)
> {
> SelectRelevantElements(ids);
> CodeGenerator.Write(".remove();");
> }
>
> public override void Replace(string id, object renderOptions)
> {
> SelectRelevantElements(id);
> CodeGenerator.Write(".replaceWith(");
> CodeGenerator.Write(Render(renderOptions).ToString());
> CodeGenerator.Write(");");
>
> }
>
> public override void ReplaceHtml(string id, object
> renderOptions)
> {
> SelectRelevantElements(id);
> CodeGenerator.Write(".empty();");
> SelectRelevantElements(id);
> CodeGenerator.Write(".append(");
> CodeGenerator.Write(Render(renderOptions).ToString());
> CodeGenerator.Write(");");
> }
>
> public override void Show(string[] ids)
> {
> SelectRelevantElements(ids);
> CodeGenerator.Write(".show();");
> }
>
> public override void Toggle(string[] ids)
> {
> SelectRelevantElements(ids);
> CodeGenerator.Write(".toggle();");
> }
> }
>
> }
>
>
>
> [JQueryElementGenerator.cs< 1K ]using Castle.MonoRail.Framework.JSGeneration;
>
> namespace HibernatingRhinos
> {
> public class JQueryElementGenerator : IJSElementGenerator
> {
> private readonly JQueryGenerator parent;
> private readonly string root;
>
> public JQueryElementGenerator(JQueryGenerator parent, string
> root)
> {
> this.parent = parent;
> this.root = root;
> }
>
> public void ReplaceHtml(object renderOptions)
> {
> parent.ReplaceHtml(root, renderOptions);
> }
>
> public void Replace(object renderOptions)
> {
> parent.Replace(root, renderOptions);
> }
>
> public IJSGenerator ParentGenerator
> {
> get { return parent; }
> }
> }
>
> }
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Castle Project Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---