[Jifty-commit] r3231 - in jifty/trunk: . lib/Jifty/Plugin/SiteNews lib/Jifty/Plugin/SiteNews/Mixin lib/Jifty/Plugin/SiteNews/View lib/Jifty/View/Declare

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Fri May 11 23:07:27 EDT 2007


Author: jesse
Date: Fri May 11 23:07:26 2007
New Revision: 3231

Added:
   jifty/trunk/lib/Jifty/Plugin/SiteNews/
   jifty/trunk/lib/Jifty/Plugin/SiteNews/Dispatcher.pm
   jifty/trunk/lib/Jifty/Plugin/SiteNews/Mixin/
   jifty/trunk/lib/Jifty/Plugin/SiteNews/Mixin/Model/
   jifty/trunk/lib/Jifty/Plugin/SiteNews/Mixin/Model/News.pm   (contents, props changed)
   jifty/trunk/lib/Jifty/Plugin/SiteNews/View/
   jifty/trunk/lib/Jifty/Plugin/SiteNews/View/News.pm
Modified:
   jifty/trunk/   (props changed)
   jifty/trunk/lib/Jifty/View/Declare/CRUD.pm

Log:
 r56801 at pinglin:  jesse | 2007-05-11 23:06:58 -0400
 * nonworking draft of a new 'site news' plugin that uses the new crud view. 
   This plugin doesn't work because T::D alias semantics seem a little screwy.
 


Added: jifty/trunk/lib/Jifty/Plugin/SiteNews/Dispatcher.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/lib/Jifty/Plugin/SiteNews/Dispatcher.pm	Fri May 11 23:07:26 2007
@@ -0,0 +1,10 @@
+use warnings;
+use strict;
+
+package Jifty::Plugin::SiteNews::Dispatcher;
+use base 'Jifty::Dispatcher';
+
+
+
+
+1;

Added: jifty/trunk/lib/Jifty/Plugin/SiteNews/Mixin/Model/News.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/lib/Jifty/Plugin/SiteNews/Mixin/Model/News.pm	Fri May 11 23:07:26 2007
@@ -0,0 +1,81 @@
+use strict;
+use warnings;
+
+package Jifty::Plugin::SiteNews::Mixin::Model::News;
+use Jifty::DBI::Schema;
+use base 'Jifty::DBI::Record::Plugin';
+
+our @EXPORT = qw();
+
+use Jifty::Plugin::SiteNews::Record schema {
+
+    my $user_class = Jifty->app_class('Model', 'User');
+
+column author_id =>
+  refers_to $user_class;
+  label is 'Author';
+column created   =>
+  type is 'timestamp',
+  filters are qw( Jifty::Filter::DateTime Jifty::DBI::Filter::DateTime),
+  label is 'Created on';
+column title     =>
+  type is 'text',
+  label is 'Title';
+column content   =>
+  type is 'text',
+  label is 'Article',
+  render_as is 'Textarea';
+};
+
+
+sub create {
+    my $self = shift;
+    my %args = (
+        author_id => $self->current_user->id,
+        created   => DateTime->now->iso8601,
+        title     => undef,
+        content   => undef,
+        @_
+    );
+
+    $self->SUPER::create(%args);
+}
+
+=head2 current_user_can
+
+Anyone can read news articles, only administrators can create, update,
+or delete them.
+
+=cut
+
+sub current_user_can {
+    my $self = shift;
+    my $right = shift;
+
+    # Anyone can read
+    return 1 if ($right eq "read");
+    
+    # Only admins can do other things
+    return $self->current_user->user_object->access_level eq "staff";
+}
+
+=head2 as_atom_entry
+
+Returns the task as an L<XML::Atom::Entry> object.
+
+=cut
+
+sub as_atom_entry {
+    my $self = shift;
+
+    my $author = XML::Atom::Person->new;
+    $author->name($self->author->name);
+
+    my $entry = XML::Atom::Entry->new;
+    $entry->author( $author );
+    $entry->title( $self->title );
+    $entry->content( $self->content);
+    return $entry;
+}
+
+1;

Added: jifty/trunk/lib/Jifty/Plugin/SiteNews/View/News.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/lib/Jifty/Plugin/SiteNews/View/News.pm	Fri May 11 23:07:26 2007
@@ -0,0 +1,33 @@
+use warnings;
+use strict;
+
+package Jifty::Plugin::SiteNews::View::News;
+use Jifty::View::Declare -base;
+use Jifty::View::Declare::CRUD;
+
+template 'index.html' => page {
+
+
+    h1 { 'This is your site news'};
+    form {
+        show('list');
+    }
+
+};
+
+
+
+
+template '/edit' => page {
+    h1 {'foo'};
+    
+};
+
+
+alias Jifty::View::Declare::CRUD under '.', { object_type => 'News', base_path => '/news', 
+    fragment_for_list => '/news/list',
+    fragment_for_view => '/news/view'
+
+};
+
+1;

Modified: jifty/trunk/lib/Jifty/View/Declare/CRUD.pm
==============================================================================
--- jifty/trunk/lib/Jifty/View/Declare/CRUD.pm	(original)
+++ jifty/trunk/lib/Jifty/View/Declare/CRUD.pm	Fri May 11 23:07:26 2007
@@ -11,7 +11,8 @@
 
 sub fragment_for {
     my $self = shift;
-    return ($self->package_variable('base_path')|| '/crud')."/". shift;
+    my $fragment = shift;
+    return ($self->package_variable('fragment_for_'.$fragment)||$self->package_variable('base_path')|| '/crud')."/". $fragment;
 }
 
 sub get_record {


More information about the Jifty-commit mailing list