Subscriptions we want to support



    Create,Read,Update,Delete
        
        Class: MyApp::Record::Foo
     


For hiveminder: NEWS

    * on every page, we have a little box with the 3 most recent news entries:

    <h2>News</h2>
    <%perl>
        my $sub = Jifty::ClientSubscription->new( 
            query_class => 'BTDT::Model::News',
            query => ['id_not' => undef],
            # Ordering?
            on_add => [
            { render_with => '/fragments/news/item',
              render => after => 'news.entries.last_child' 
            },
            { # how do we remove something if there are more than 3?
            }

            ]);


For hiveminder:

    My page is:

        list of: tasks matching 'owner me, complete is not true'
        each item is rendered as '/fragments/tasklist/view,  with args %ARGS and record => $found


    Subscribe to:

        * creation of things that match 'owner me, complete is not true'
        * update, delete to anything that matches 'owner me, complete is not true' after the changes
        * update, delete to anything that matches 'owner me, complete is not true' before the changes
       


    "Render this component as":

        wrapper
            list of items matching the subscription 'owner me, complete is not true'
                render each item with '/fragments/tasklist/view', args => %ARGS, item $found


            my $subscription = Jifty::ClientSubscription->new(
                on_add => {
                    args        => \%ARGS,
                    render_with => '/fragments/tasklist/view',
                    render => after => '.parent.last_child'
                                # before, after, replacing
                                
                },
                on_remove => {
                    args        => \%ARGS,
                    render => replacing => 'self'
                    render_with => '/fragments/tasklist/fade_away'
                },
                query_class => 'BTDT::Model::Task',
                query       => [ owner => 'me', complete_not => 'true' ]
            );


# Session::ClientSide-ish encoding of SIDs to subscribe
# Each request carries IDs of its existing subs (stashed into ->subs)
my $sid = Jifty->subs->add(
    query_class => 'Ping',
    query       => [ host => '127.0.0.1' ],
    render_with => '/fragments/pong',
);
Jifty->subs->cancel($sid);

# This actually just calls the fragments with Publisher-msg structures as %ARGS
# Print-on-void-context, return-on-other-contexts
Jifty->subs->render;